diff --git a/.env.example b/.env.example
index ed8089ed7..662e53e11 100644
--- a/.env.example
+++ b/.env.example
@@ -36,6 +36,7 @@ LITELLM_REDIS_PASSWORD=
# AGENTS_API_DEBUG=false
# EMBEDDING_MODEL_ID=Alibaba-NLP/gte-large-en-v1.5
# NUM_GPUS=1
+# INTEGRATION_SERVICE_URL=http://integrations:8000
# Temporal
# --------
diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000..21d3f63d5
--- /dev/null
+++ b/.github/CODE_OF_CONDUCT.md
@@ -0,0 +1,40 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [INSERT EMAIL ADDRESS]. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
+
diff --git a/.github/SUPPORT.md b/.github/SUPPORT.md
new file mode 100644
index 000000000..a7d26253a
--- /dev/null
+++ b/.github/SUPPORT.md
@@ -0,0 +1,62 @@
+# Support for Julep
+
+Welcome to the Julep support page! We're here to help you with any questions or issues you may encounter while using our platform. This document outlines the various ways you can get support and engage with our community.
+
+## Getting Help
+
+### Documentation
+
+Our comprehensive documentation is the first place to look for answers:
+
+- [Explore Docs](https://docs.julep.ai)
+
+Here you'll find detailed guides, API references, and tutorials to help you make the most of Julep.
+
+### Community Support
+
+Join our vibrant community to get help from other users and the Julep team:
+
+- [Discord](https://discord.com/invite/JTSBGRZrzj): Join our Discord server for real-time chat and support.
+- [GitHub Discussions](https://github.com/julep-ai/julep/discussions): Ask questions, share ideas, and discuss Julep with other developers.
+
+### Social Media
+
+Follow us on social media for updates, tips, and community highlights:
+
+- [𝕏 (Twitter)](https://x.com/julep_ai)
+- [LinkedIn](https://www.linkedin.com/company/julep-ai)
+
+## Reporting Issues
+
+If you encounter a bug or have a feature request, please open an issue on our GitHub repository:
+
+- [GitHub Issues](https://github.com/julep-ai/julep/issues)
+
+When reporting issues, please provide as much detail as possible, including:
+
+- Steps to reproduce the issue
+- Expected behavior
+- Actual behavior
+- Any error messages or logs
+- Your environment (Julep version, operating system, etc.)
+
+## Contributing
+
+We welcome contributions to Julep! If you're interested in contributing, please check out our:
+
+- [Contributing Guidelines](https://github.com/julep-ai/julep/blob/main/CONTRIBUTING.md)
+- [Code of Conduct](https://github.com/julep-ai/julep/blob/main/CODE_OF_CONDUCT.md)
+
+## API Keys
+
+While we are in beta, you can reach out on [Discord](https://discord.com/invite/JTSBGRZrzj) to get your API key.
+
+## Staying Updated
+
+To stay informed about the latest updates, features, and community news:
+
+- Watch our [GitHub repository](https://github.com/julep-ai/julep)
+- Follow us on [𝕏 (Twitter)](https://x.com/julep_ai)
+- Join our [Discord](https://discord.com/invite/JTSBGRZrzj) for announcements
+
+Thank you for using Julep! We're excited to see what you build with our platform.
diff --git a/.github/workflows/bake-push-to-hub.yml b/.github/workflows/bake-push-to-hub.yml
new file mode 100644
index 000000000..e25436c5d
--- /dev/null
+++ b/.github/workflows/bake-push-to-hub.yml
@@ -0,0 +1,45 @@
+name: Build and push images to docker hub on merge to dev
+run-name: ${{ github.actor }} is building and pushing images to docker hub
+
+on:
+ push:
+ branches:
+ - "dev"
+ tags:
+ - "v*"
+ release:
+ types: [published, released, prereleased]
+
+jobs:
+ Bake-Push-Images:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Login to Docker Hub
+ uses: docker/login-action@v3
+ with:
+ username: julepai
+ password: "${{ secrets.DOCKER_HUB_PASSWORD }}"
+
+ - name: Build and push agent images
+ uses: docker/bake-action@v5
+ with:
+ files: |
+ ./docker-bake.hcl
+ targets: agents-api
+ push: true
+ set: |
+ *.cache-from=type=gha
+ *.cache-to=type=gha,mode=max
+ env:
+ TAG: ${{ github.ref_name }}
+ GIT_SHA: ${{ github.sha }}
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
diff --git a/.github/workflows/bandit-security-check-python-agents-api.yml b/.github/workflows/bandit-security-check-python-agents-api.yml
new file mode 100644
index 000000000..f2981efbc
--- /dev/null
+++ b/.github/workflows/bandit-security-check-python-agents-api.yml
@@ -0,0 +1,19 @@
+on:
+ pull_request:
+ branches:
+ - main
+ - dev
+
+jobs:
+ bandit_check:
+ name: bandit check security of python code in agents-api
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: mdegis/bandit-action@v1.0.1
+ with:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ path: "./agents-api/agents_api"
+ level: high
+ confidence: high
+ # exit_zero: true
diff --git a/.github/workflows/changelog-ci.yml b/.github/workflows/changelog-ci.yml
index 2a1ab6c30..ff99828a3 100644
--- a/.github/workflows/changelog-ci.yml
+++ b/.github/workflows/changelog-ci.yml
@@ -1,21 +1,24 @@
-name: Changelog CI
+name: Changelog on release
-# TODO: This is currently not working. Need to fix it
on:
- pull_request:
- types: [ opened, synchronize ]
+ release:
+ types: [published]
jobs:
- build:
+ changelog:
runs-on: ubuntu-latest
steps:
# Checks-out your repository
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ ref: dev
- - name: Run Changelog CI
- uses: saadmk11/changelog-ci@v1.1.2
+ # Generate changelog from release notes
+ - uses: rhysd/changelog-from-release/action@v3
with:
- changelog_filename: CHANGELOG.md
- # config_file: changelog-ci-config.json
+ file: CHANGELOG.md
github_token: ${{ secrets.GITHUB_TOKEN }}
+ pull_request: true
+
\ No newline at end of file
diff --git a/.github/workflows/docker-bake-on-pr.yml b/.github/workflows/docker-bake-on-pr.yml
new file mode 100644
index 000000000..2e00f0929
--- /dev/null
+++ b/.github/workflows/docker-bake-on-pr.yml
@@ -0,0 +1,39 @@
+name: Bake images on PR
+run-name: ${{ github.actor }} is baking images
+
+on:
+ pull_request:
+
+jobs:
+ Bake-Images:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Login to Docker Hub
+ uses: docker/login-action@v3
+ with:
+ username: julepai
+ password: "${{ secrets.DOCKER_HUB_PASSWORD }}"
+
+ - name: Bake images
+ uses: docker/bake-action@v5
+ with:
+ files: |
+ ./docker-bake.hcl
+ targets: agents-api
+ push: false
+ set: |
+ *.cache-from=type=gha
+ *.cache-to=type=gha,mode=max
+ env:
+ TAG: pr-run-${{ github.run_number }}-${{ github.run_attempt }}
+ GIT_SHA: ${{ github.sha }}
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
diff --git a/.github/workflows/generate-docs.yml b/.github/workflows/generate-docs.yml
deleted file mode 100644
index 9c6952e6e..000000000
--- a/.github/workflows/generate-docs.yml
+++ /dev/null
@@ -1,97 +0,0 @@
-name: Generate docs on merge to dev
-run-name: ${{ github.actor }} is generating documentation
-
-# TODO: This is currently not working. Need to fix it
-on:
- push:
- branches:
- - "dev"
- - "main"
-
-jobs:
- Generate-Docs-For-TS-SDK:
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v4
-
- - name: Use Node.js
- uses: actions/setup-node@v4
- with:
- node-version: "20.x"
-
- - name: Cache npm dependencies
- uses: actions/cache@v4
- with:
- path: sdks/ts/node_modules
- key: ${{ runner.os }}-sdks-ts-npm-${{ hashFiles('sdks/ts/package-lock.json') }}
- restore-keys: |
- ${{ runner.os }}-sdks-ts-npm-
-
- - name: Install npm dependencies
- run: |
- cd sdks/ts
- npm ci
-
- - name: Generate docs
- run: |
- cd sdks/ts
- npm run generate-docs
-
- - uses: stefanzweifel/git-auto-commit-action@v4
- with:
- commit_message: "doc(sdks/ts): Generate docs for sdks/ts (CI)"
- branch: ${{ github.head_ref }}
-
- Generate-Docs-For-Python-SDK:
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v4
-
- - uses: actions/setup-python@v5
- with:
- python-version: "3.10"
-
- - name: Install and configure Poetry
- uses: snok/install-poetry@v1
-
- - name: Configure Poetry to use .venv
- run: |
- cd sdks/python
- poetry config virtualenvs.in-project true
-
- - name: Cache Poetry virtualenv
- uses: actions/cache@v4
- with:
- path: sdks/python/.venv
- key: ${{ runner.os }}-sdks-python-poetry-${{ hashFiles('sdks/python/poetry.lock') }}
- restore-keys: |
- ${{ runner.os }}-sdks-python-poetry-
-
- - name: Cache pytype
- uses: actions/cache@v4
- with:
- path: sdks/python/.pytype
- key: ${{ runner.os }}-sdks-python-pytype-${{ hashFiles('sdks/python/**/*.py') }}
- restore-keys: |
- ${{ runner.os }}-sdks-python-pytype-
-
- - name: Install dependencies
- run: |
- cd sdks/python
- poetry install
-
- - name: Generate docs
- run: |
- cd sdks/python
- poetry run poe doc
-
- - uses: stefanzweifel/git-auto-commit-action@v4
- with:
- commit_message: "doc(sdks/python): Generate docs for sdks/python (CI)"
- branch: ${{ github.head_ref }}
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: true
diff --git a/.github/workflows/latest-push-to-hub.yml b/.github/workflows/latest-push-to-hub.yml
new file mode 100644
index 000000000..3853a8faa
--- /dev/null
+++ b/.github/workflows/latest-push-to-hub.yml
@@ -0,0 +1,41 @@
+name: Build and push images to docker hub on merge to main
+run-name: ${{ github.actor }} is building and pushing images to docker hub
+
+on:
+ push:
+ branches:
+ - "main"
+
+jobs:
+ Bake-Push-Images:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Login to Docker Hub
+ uses: docker/login-action@v3
+ with:
+ username: julepai
+ password: "${{ secrets.DOCKER_HUB_PASSWORD }}"
+
+ - name: Build and push agent images
+ uses: docker/bake-action@v5
+ with:
+ files: |
+ ./docker-bake.hcl
+ targets: agents-api
+ push: true
+ set: |
+ *.cache-from=type=gha
+ *.cache-to=type=gha,mode=max
+ env:
+ TAG: latest
+ GIT_SHA: ${{ github.sha }}
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
\ No newline at end of file
diff --git a/.github/workflows/lint-agents-api-pr.yml b/.github/workflows/lint-agents-api-pr.yml
new file mode 100644
index 000000000..90fdd0a4b
--- /dev/null
+++ b/.github/workflows/lint-agents-api-pr.yml
@@ -0,0 +1,54 @@
+name: Lint and typecheck agents-api
+run-name: ${{ github.actor }} is linting and typechecking the code
+
+# TODO: Fix CI github actions
+# SCRUM-26
+
+on: [pull_request]
+
+jobs:
+ Lint-And-Format:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-python@v5
+ with:
+ python-version: "3.12"
+
+ - name: Install and configure Poetry
+ uses: snok/install-poetry@v1
+
+ - name: Configure Poetry to use .venv
+ run: |
+ cd agents-api
+ poetry config virtualenvs.in-project true
+
+ - name: Cache Poetry virtualenv
+ uses: actions/cache@v4
+ with:
+ path: agents-api/.venv
+ key: ${{ runner.os }}-agents-api-poetry-${{ hashFiles('agents-api/poetry.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-agents-api-poetry-
+
+ - name: Install dependencies
+ run: |
+ cd agents-api
+ poetry install
+
+ - name: Lint and format
+ run: |
+ cd agents-api
+ poetry run poe format
+ poetry run poe lint
+
+ - uses: stefanzweifel/git-auto-commit-action@v4
+ with:
+ commit_message: "refactor: Lint agents-api (CI)"
+ branch: ${{ github.head_ref }}
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml
deleted file mode 100644
index 27cfa2d9e..000000000
--- a/.github/workflows/lint-and-format.yml
+++ /dev/null
@@ -1,110 +0,0 @@
-name: Lint and typecheck APIs and SDKs
-run-name: ${{ github.actor }} is linting and typechecking the code
-
-# TODO: Fix CI github actions
-# SCRUM-26
-
-on: [pull_request]
-
-jobs:
- Lint-And-Format:
- runs-on: ubuntu-latest
-
- strategy:
- matrix:
- directory: [agents-api, sdks/python]
-
- steps:
- - uses: actions/checkout@v4
-
- - uses: actions/setup-python@v5
- with:
- python-version: "3.10"
-
- - name: Install and configure Poetry
- uses: snok/install-poetry@v1
-
- - name: Configure Poetry to use .venv
- run: |
- cd ${{ matrix.directory }}
- poetry config virtualenvs.in-project true
-
- - name: Cache Poetry virtualenv
- uses: actions/cache@v4
- with:
- path: ${{ matrix.directory }}/.venv
- key: ${{ runner.os }}-${{ matrix.directory }}-poetry-${{ hashFiles(format('{0}/poetry.lock', matrix.directory)) }}
- restore-keys: |
- ${{ runner.os }}-${{ matrix.directory }}-poetry-
-
- - name: Cache pytype
- uses: actions/cache@v4
- with:
- path: ${{ matrix.directory }}/.pytype
- key: ${{ runner.os }}-${{ matrix.directory }}-pytype-${{ hashFiles(format('{0}/**/*.py', matrix.directory)) }}
- restore-keys: |
- ${{ runner.os }}-${{ matrix.directory }}-pytype-
-
- - name: Install dependencies
- run: |
- cd ${{ matrix.directory }}
- poetry install
-
- - name: Lint and format
- run: |
- cd ${{ matrix.directory }}
- poetry run poe format
- poetry run poe lint
-
- - name: Typecheck
- run: |
- cd ${{ matrix.directory }}
- poetry run poe typecheck
-
- - uses: stefanzweifel/git-auto-commit-action@v4
- with:
- commit_message: "refactor: Lint ${{ matrix.directory }} (CI)"
- branch: ${{ github.head_ref }}
-
- Lint-And-Format-TS-SDK:
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v4
-
- - name: Use Node.js
- uses: actions/setup-node@v4
- with:
- node-version: "20.x"
-
- - name: Cache npm dependencies
- uses: actions/cache@v4
- with:
- path: sdks/ts/node_modules
- key: ${{ runner.os }}-sdks-ts-npm-${{ hashFiles('sdks/ts/package-lock.json') }}
- restore-keys: |
- ${{ runner.os }}-sdks-ts-npm-
-
- - name: Install npm dependencies
- run: |
- cd sdks/ts
- npm ci
-
- - name: Lint and format TypeScript SDK
- run: |
- cd sdks/ts
- npm run format
-
- - name: Build TypeScript SDK
- run: |
- cd sdks/ts
- npm run build
-
- - uses: stefanzweifel/git-auto-commit-action@v4
- with:
- commit_message: "refactor: Lint sdks/ts (CI)"
- branch: ${{ github.head_ref }}
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
diff --git a/.github/workflows/push-to-hub.yml b/.github/workflows/push-to-hub.yml
deleted file mode 100644
index ee848d755..000000000
--- a/.github/workflows/push-to-hub.yml
+++ /dev/null
@@ -1,163 +0,0 @@
-name: Build and push images to docker hub on merge to dev
-run-name: ${{ github.actor }} is building and pushing images to docker hub
-
-# TODO: This is currently not working. Need to fix it
-on:
- push:
- branches:
- - "dev"
- - "main"
-
-jobs:
- Build-Push-Agents-API-Image:
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v4
-
- - name: Set branch name
- id: variables
- run: echo "branch_name=$(echo ${GITHUB_REF#refs/heads/} | tr '/' '-')" >> $GITHUB_OUTPUT
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
-
- - name: Login to Docker Hub
- uses: docker/login-action@v3
- with:
- username: julepai
- password: "${{ secrets.DOCKER_HUB_PASSWORD }}"
-
- - name: Build and push agent images
- uses: docker/build-push-action@v4
- with:
- context: ./agents-api
- file: ./agents-api/Dockerfile
- push: true
- tags: julepai/agents-api:${{ steps.variables.outputs.branch_name }}
- cache-from: type=gha
- cache-to: type=gha,mode=max
-
- Build-Push-Migration-Image:
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v4
-
- - name: Set branch name
- id: variables
- run: echo "branch_name=$(echo ${GITHUB_REF#refs/heads/} | tr '/' '-')" >> $GITHUB_OUTPUT
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
-
- - name: Login to Docker Hub
- uses: docker/login-action@v3
- with:
- username: julepai
- password: "${{ secrets.DOCKER_HUB_PASSWORD }}"
-
- - name: Build and push migration image
- uses: docker/build-push-action@v4
- with:
- context: ./agents-api
- file: ./agents-api/Dockerfile.migration
- push: true
- tags: julepai/cozo-migrate:${{ steps.variables.outputs.branch_name }}
- cache-from: type=gha
- cache-to: type=gha,mode=max
-
- Build-Push-Temporal-Image:
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v4
-
- - name: Set branch name
- id: variables
- run: echo "branch_name=$(echo ${GITHUB_REF#refs/heads/} | tr '/' '-')" >> $GITHUB_OUTPUT
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
-
- - name: Login to Docker Hub
- uses: docker/login-action@v3
- with:
- username: julepai
- password: "${{ secrets.DOCKER_HUB_PASSWORD }}"
-
- - name: Build and push temporal image
- uses: docker/build-push-action@v4
- with:
- context: ./agents-api
- file: ./agents-api/Dockerfile.temporal
- push: true
- tags: julepai/temporal:${{ steps.variables.outputs.branch_name }}
- cache-from: type=gha
- cache-to: type=gha,mode=max
-
- Build-Push-Worker-Image:
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v4
-
- - name: Set branch name
- id: variables
- run: echo "branch_name=$(echo ${GITHUB_REF#refs/heads/} | tr '/' '-')" >> $GITHUB_OUTPUT
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
-
- - name: Login to Docker Hub
- uses: docker/login-action@v3
- with:
- username: julepai
- password: "${{ secrets.DOCKER_HUB_PASSWORD }}"
-
- - name: Build and push worker image
- uses: docker/build-push-action@v4
- with:
- context: ./agents-api
- file: ./agents-api/Dockerfile.worker
- push: true
- tags: julepai/worker:${{ steps.variables.outputs.branch_name }}
- cache-from: type=gha
- cache-to: type=gha,mode=max
-
- Build-Push-Other-Images:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- service-directory:
- - gateway
- - memory-store
-
- steps:
- - uses: actions/checkout@v4
-
- - name: Set branch name
- id: variables
- run: echo "branch_name=$(echo ${GITHUB_REF#refs/heads/} | tr '/' '-')" >> $GITHUB_OUTPUT
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
-
- - name: Login to Docker Hub
- uses: docker/login-action@v3
- with:
- username: julepai
- password: "${{ secrets.DOCKER_HUB_PASSWORD }}"
-
- - name: Build and push images
- uses: docker/build-push-action@v4
- with:
- context: ./${{ matrix.service-directory }}
- push: true
- tags: julepai/${{ matrix.service-directory }}:${{ steps.variables.outputs.branch_name }}
- cache-from: type=gha
- cache-to: type=gha,mode=max
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
diff --git a/.github/workflows/test-agents-api-pr.yml b/.github/workflows/test-agents-api-pr.yml
new file mode 100644
index 000000000..b0f815634
--- /dev/null
+++ b/.github/workflows/test-agents-api-pr.yml
@@ -0,0 +1,48 @@
+name: Test agents-api
+run-name: ${{ github.actor }} is testing the code
+
+# TODO: Fix CI github actions
+# SCRUM-26
+
+on: [pull_request]
+
+jobs:
+ Test:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-python@v5
+ with:
+ python-version: "3.12"
+
+ - name: Install and configure Poetry
+ uses: snok/install-poetry@v1
+
+ - name: Configure Poetry to use .venv
+ run: |
+ cd agents-api
+ poetry config virtualenvs.in-project true
+
+ - name: Cache Poetry virtualenv
+ uses: actions/cache@v4
+ with:
+ path: agents-api/.venv
+ key: ${{ runner.os }}-agents-api-poetry-${{ hashFiles('agents-api/poetry.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-agents-api-poetry-
+
+ - name: Install dependencies
+ run: |
+ cd agents-api
+ poetry install
+
+ - name: Run tests
+ run: |
+ cd agents-api
+ poetry run poe test --fail-limit 1
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
diff --git a/.github/workflows/typecheck-agents-api-pr.yml b/.github/workflows/typecheck-agents-api-pr.yml
new file mode 100644
index 000000000..513390883
--- /dev/null
+++ b/.github/workflows/typecheck-agents-api-pr.yml
@@ -0,0 +1,56 @@
+name: Typecheck agents-api
+run-name: ${{ github.actor }} is typechecking the code
+
+# TODO: Fix CI github actions
+# SCRUM-26
+
+on: [pull_request]
+
+jobs:
+ Typecheck:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-python@v5
+ with:
+ python-version: "3.12"
+
+ - name: Install and configure Poetry
+ uses: snok/install-poetry@v1
+
+ - name: Configure Poetry to use .venv
+ run: |
+ cd agents-api
+ poetry config virtualenvs.in-project true
+
+ - name: Cache Poetry virtualenv
+ uses: actions/cache@v4
+ with:
+ path: agents-api/.venv
+ key: ${{ runner.os }}-agents-api-poetry-${{ hashFiles('agents-api/poetry.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-agents-api-poetry-
+
+ - name: Cache pytype
+ uses: actions/cache@v4
+ with:
+ path: agents-api/.pytype
+ key: ${{ runner.os }}-agents-api-pytype-${{ github.base_ref }}
+ restore-keys: |
+ ${{ runner.os }}-agents-api-pytype-
+
+ - name: Install dependencies
+ run: |
+ cd agents-api
+ poetry install
+
+ - name: Typecheck
+ run: |
+ cd agents-api
+ poetry run poe typecheck
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
diff --git a/.gitmodules b/.gitmodules
index e69de29bb..0f808e530 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "sdks/node-sdk"]
+ path = sdks/node-sdk
+ url = https://github.com/julep-ai/node-sdk.git
+[submodule "sdks/python-sdk"]
+ path = sdks/python-sdk
+ url = https://github.com/julep-ai/python-sdk.git
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b4e401ad5..80bdebaed 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,15 +1,288 @@
-# TODO: Update changelog
-# SCRUM-29
+
+# [v1.0.0-alpha1](https://github.com/julep-ai/julep/releases/tag/v1.0.0-alpha1) - 30 Sep 2024
-# Changelog
+## What's Changed
+* doc: v1.0 docs by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/527
+* feat: Update README social banner and bake-push-to-hub.yml by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/537
-All notable changes to this project will be documented in this file.
-The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
-and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+**Full Changelog**: https://github.com/julep-ai/julep/compare/v0.4.1...v1.0.0-alpha1
-## [Unreleased]
+[Changes][v1.0.0-alpha1]
-### Added
-- v0.2 agents platform
+
+# [v0.4.1](https://github.com/julep-ai/julep/releases/tag/v0.4.1) - 28 Sep 2024
+
+## What's Changed
+* Update changelog for v0.4.0 by [@github-actions](https://github.com/github-actions) in https://github.com/julep-ai/julep/pull/531
+* fix: Bake on release as well by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/532
+
+## New Contributors
+* [@github-actions](https://github.com/github-actions) made their first contribution in https://github.com/julep-ai/julep/pull/531
+
+**Full Changelog**: https://github.com/julep-ai/julep/compare/v0.4.0...v0.4.1
+
+[Changes][v0.4.1]
+
+
+
+# [v0.4.0](https://github.com/julep-ai/julep/releases/tag/v0.4.0) - 28 Sep 2024
+
+## What's Changed
+* feat(agents-api): Add cozo migrations for tasks schema by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/349
+* feat(agents-api): updated openapi schema for tasks spec by [@alt-glitch](https://github.com/alt-glitch) in https://github.com/julep-ai/julep/pull/350
+* Update README.md by [@ijindal1](https://github.com/ijindal1) in https://github.com/julep-ai/julep/pull/384
+* Update README.md by [@ijindal1](https://github.com/ijindal1) in https://github.com/julep-ai/julep/pull/385
+* feat(agents-api): cozo queries for tasks by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/352
+* fix(sdks/ts): Fixed bugs, updated sdk by [@alt-glitch](https://github.com/alt-glitch) in https://github.com/julep-ai/julep/pull/390
+* feat(agents-api): Toy implementation of Tasks by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/391
+* feat(agents-api): Adaptive context (via recursive summarization) by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/306
+* chore(deps-dev): bump braces from 3.0.2 to 3.0.3 in /sdks/ts in the npm_and_yarn group across 1 directory by [@dependabot](https://github.com/dependabot) in https://github.com/julep-ai/julep/pull/394
+* v/0.3.9 by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/395
+* feat(tasks): Enable all fields of ExecutionInput by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/396
+* feat(tasks): Update execution transition relation by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/397
+* fix: Handle prompt too big error by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/401
+* feat(sdks/ts): Add adaptive context options to the SDK by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/404
+* feat(sdks/ts): Add runtime validations for TS SDK by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/425
+* refactor(agents-api): Rework routers to split routes into individual files by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/422
+* support for `Hermes-2-Theta-Llama-3-8B` as default OSS model by [@alt-glitch](https://github.com/alt-glitch) in https://github.com/julep-ai/julep/pull/424
+* fix: Add exception handler for litellm API error by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/432
+* fix(openapi): Fix mistakes in openapi.yaml file by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/434
+* fix: Apply various small fixes to task execution logic by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/436
+* Codegen for all new typespec types by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/435
+* feat(agents-api): New chat context query and model by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/437
+* feat(agents-api): Add get_transition query by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/438
+* chore: Disable all the routes except of tasks and agents by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/439
+* fix(agents-api): Fix execution input query by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/440
+* f/wait for input step by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/441
+* feat(agents-api): Implement doc* models by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/442
+* Reimplement tests for queries and operations by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/443
+* feat(agents-api): Hybrid docs search by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/444
+* feat(agents-api): Add temporal workflow lookup relation and queries by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/446
+* feat: new routes for docs, users, search by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/445
+* feat(agents-api): Add litellm proxy to docker compose by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/448
+* fix(agents-api): Fixed tests for models and queries by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/449
+* creatorrr/f add missing tests by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/450
+* feat(agents-api): Add route tests by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/451
+* Add tests for docs routes by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/452
+* feat(agents-api): Preliminary implementation of session.chat by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/453
+* feat(agents-api): Make chat route tests pass by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/454
+* feat(agents-api): Add some workflow tests by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/456
+* fix(agents-api): Minor fix to tests by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/457
+* f/task tests by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/458
+* feat(agents-api): ALL TESTS PASS!! :D by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/459
+* feat: Add test for evaluate step by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/460
+* fix(agents-api): Fix typespec for foreach step and regenerate by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/461
+* fix(agents-api): Fix the typespec bug and regenerate by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/462
+* x/fix codec by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/463
+* feat(agents-api): Add YAML support by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/464
+* refactor(agents-api): Minor refactors to typespec types by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/465
+* fix(agents-api): Fix map reduce step and activity by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/466
+* fix(agents-api): Make the sample work by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/467
+* Dev tasks by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/447
+* fix: Build cozo-bin docker image directly from cozo repo by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/469
+* feat(memory-store): Add backup cronjob by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/470
+* fix: Fix deployment docker compose and move temporal into separate service by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/471
+* fix(agents-api): Fix prompt step by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/472
+* fix(agents-api): Fix task execution logic by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/473
+* Fix create agent tool by [@HamadaSalhab](https://github.com/HamadaSalhab) in https://github.com/julep-ai/julep/pull/474
+* fix(agents-api): Fix bug in task-execution workflow and uuid-int-list-to-str fn by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/476
+* fix(agents-api): Fix prompt render, codec and task execution by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/478
+* fix(agents-api): Fix more render issues, execution logic by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/479
+* x/fix task execution by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/482
+* text-embeddings-inference-cpu temp fix for Apple Silicon CPUs by [@HamadaSalhab](https://github.com/HamadaSalhab) in https://github.com/julep-ai/julep/pull/480
+* fix(agents-api): Fix task execution logical errors by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/483
+* feat(agents-api): Transitions stream SSE endpoint by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/485
+* feat(agents-api): Set/get steps based on workflow state by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/484
+* Scrum 22 [FIX] agents api list agent tools is returning an empty list by [@HamadaSalhab](https://github.com/HamadaSalhab) in https://github.com/julep-ai/julep/pull/487
+* fix(agents-api,typespec): Fix chat/entry typespec models to include tool_calls by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/489
+* fix: Change log-step to a jinja template rather than a simpleeval expression by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/488
+* feat(agents-api): Add parallelism option to map-reduce step by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/490
+* fix: Fix import by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/494
+* misc fixes by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/495
+* build(deps): Bump the npm_and_yarn group across 2 directories with 2 updates by [@dependabot](https://github.com/dependabot) in https://github.com/julep-ai/julep/pull/493
+* hotfix: Apply a temp hotfix for sessions.chat by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/497
+* hotfix(agents-api): Fix session.situation not being rendered by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/499
+* feat: Add agent tools to completion data before sending to litellm in prompt by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/498
+* dev -> main by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/502
+* fix(agents-api): fix create_agent and create_or_update_agent query by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/503
+* fix(llm-proxy): Update docker image to main-v1.46.2 by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/504
+* Add custom api key support to chat endpoint by [@HamadaSalhab](https://github.com/HamadaSalhab) in https://github.com/julep-ai/julep/pull/507
+* fix(agents-api): Fix doc recall using search by text by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/506
+* docs: update api.md by [@eltociear](https://github.com/eltociear) in https://github.com/julep-ai/julep/pull/508
+* fix: Get PostgreSQL settings via env vars by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/509
+* main <- dev by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/511
+* Vertex AI client by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/510
+* fix: Retry worker on runtime errors by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/512
+* dev -> main by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/514
+* Implement ToolCallStep & Fix transition after PromptStep by [@HamadaSalhab](https://github.com/HamadaSalhab) in https://github.com/julep-ai/julep/pull/513
+* doc: Update README.md with announcement update by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/517
+* feat: Add basic support for integration tools to ToolStep by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/519
+* feat(integration-service): Add integrations service by [@HamadaSalhab](https://github.com/HamadaSalhab) in https://github.com/julep-ai/julep/pull/520
+* feat(agents-api,integrations): Working integrations for tool-call step by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/521
+* fix(agents-api): Fix wait for input step by [@HamadaSalhab](https://github.com/HamadaSalhab) in https://github.com/julep-ai/julep/pull/522
+* feat(agents-api): Add support for reading setup args from metadata and Upgrade to python 3.12 by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/525
+* feat: Add docker bake builder by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/528
+* fix: Minor fix to docker bake github actions by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/529
+* feat: Add changelog from release notes by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/530
+
+## New Contributors
+* [@ijindal1](https://github.com/ijindal1) made their first contribution in https://github.com/julep-ai/julep/pull/384
+* [@HamadaSalhab](https://github.com/HamadaSalhab) made their first contribution in https://github.com/julep-ai/julep/pull/474
+* [@eltociear](https://github.com/eltociear) made their first contribution in https://github.com/julep-ai/julep/pull/508
+
+**Full Changelog**: https://github.com/julep-ai/julep/compare/v0.3.4...v0.4.0
+
+[Changes][v0.4.0]
+
+
+
+# [v0.3.4](https://github.com/julep-ai/julep/releases/tag/v0.3.4) - 31 May 2024
+
+## What's Changed
+* feat: Implement filtering by metadata by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/337
+* session.chat working without specifying user by [@alt-glitch](https://github.com/alt-glitch) in https://github.com/julep-ai/julep/pull/338
+* feat: Cache generated responses by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/336
+* Add docs-text-embeddings-inference service to deploy/docker-compose.yml by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/339
+* add missing ports and volumes in deploy/docker-compose by [@alt-glitch](https://github.com/alt-glitch) in https://github.com/julep-ai/julep/pull/341
+* feat: Add launching entry point by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/334
+* feat: Add an explicit platform declaration to the services in deploy/docker-compose.yml by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/342
+* [wip] feat(agents-api,sdks): multimodal support by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/343
+* fix(sdks/ts): Fix codegen issue by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/374
+* Version 0.3.4 by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/375
+* fix: Convert messages content to JSON by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/376
+* fix: Convert IDs to UUID before passing to query executing functions by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/377
+* fix(agents-api): fix fn calling and local deployment by [@alt-glitch](https://github.com/alt-glitch) in https://github.com/julep-ai/julep/pull/378
+* feat: Improve typehints by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/379
+
+
+**Full Changelog**: https://github.com/julep-ai/julep/compare/v0.3.3...v0.3.4
+
+[Changes][v0.3.4]
+
+
+
+# [v0.3.3](https://github.com/julep-ai/julep/releases/tag/v0.3.3) - 17 May 2024
+
+## What's Changed
+* fix: Add summarizer source type to the query by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/301
+* fix: Get summarization model form env var and create a corresponsing … by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/302
+* feat: Make docs content be splited by users by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/303
+* feat: litellm for multiple model support by [@alt-glitch](https://github.com/alt-glitch) in https://github.com/julep-ai/julep/pull/304
+* use VALID_MODELS to support JULEP_MODELS by [@alt-glitch](https://github.com/alt-glitch) in https://github.com/julep-ai/julep/pull/308
+* Agent creation fixes by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/309
+* feat: Add new agents docs embbeddings functionality by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/305
+* Fix docs search by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/311
+* Make embeddings asynchronous using temporal by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/332
+* feat: Add doc IDs to the session chat response by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/331
+* chore: Update SDKs by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/333
+
+
+**Full Changelog**: https://github.com/julep-ai/julep/compare/v0.3.2...v0.3.3
+
+[Changes][v0.3.3]
+
+
+
+# [v0.3.2](https://github.com/julep-ai/julep/releases/tag/v0.3.2) - 27 Apr 2024
+
+- Initial github release
+
+## What's Changed
+* fix(python-sdk): temporarily remove async types by [@philipbalbas](https://github.com/philipbalbas) in https://github.com/julep-ai/julep/pull/196
+* fix: Set empty string as a default value for function description by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/195
+* feat: exception handling for api keys and models by [@alt-glitch](https://github.com/alt-glitch) in https://github.com/julep-ai/julep/pull/197
+* feat: Create and push docker images to hub by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/198
+* fix: Sessions update by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/201
+* fix: Sessions update by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/202
+* feat(sdk): update tools by [@philipbalbas](https://github.com/philipbalbas) in https://github.com/julep-ai/julep/pull/206
+* fix: Merge agent and user metadata by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/204
+* fix: Display agent instructions by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/205
+* fix: Disable model-serving by default by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/207
+* fix: patch fix for function calling by [@alt-glitch](https://github.com/alt-glitch) in https://github.com/julep-ai/julep/pull/203
+* remove model surgery notebooks by [@alt-glitch](https://github.com/alt-glitch) in https://github.com/julep-ai/julep/pull/208
+* feat: Create github action changelog-ci.yml by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/209
+* Sweep: Add a detailed README.md in the memory-store/ directory by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/214
+* fix: Display agent instructions by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/216
+* Sweep: Add a detailed README.md in the examples/ directory by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/215
+* fix: Set metadata to an empty dict by default by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/217
+* Sweep: Update the docstrings and comments in sdks/ts/src/env.ts to fix any issues and mismatch between the comment and associated code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/235
+* Sweep: Update the docstrings and comments in sdks/ts/src/managers/memory.ts to fix any issues and mismatch between the comment and associated code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/236
+* Sweep: Update the docstrings and comments in sdks/ts/src/utils/invariant.ts to fix any issues and mismatch between the comment and associated code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/237
+* Sweep: Update the docstrings and comments in sdks/ts/src/managers/agent.ts to fix any issues and mismatch between the comment and associated code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/238
+* Sweep: Update the docstrings and comments in sdks/ts/src/managers/tool.ts to fix any issues and mismatch between the comment and associated code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/239
+* Sweep: Update the docstrings and comments in sdks/ts/src/utils/isValidUuid4.ts to fix any issues and mismatch between the comment and associated code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/240
+* Sweep: Update the docstrings and comments in sdks/ts/src/client.ts to fix any issues and mismatch between the comment and associated code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/241
+* Sweep: Update the docstrings and comments in sdks/ts/src/utils/requestConstructor.ts to fix any issues and mismatch between the comment and associated code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/242
+* Sweep: Update the docstrings and comments in sdks/ts/src/managers/base.ts to fix any issues and mismatch between the comment and associated code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/243
+* Sweep: Update the docstrings and comments in sdks/ts/src/managers/user.ts to fix any issues and mismatch between the comment and associated code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/244
+* Sweep: Update the docstrings and comments in sdks/ts/src/managers/session.ts to fix any issues and mismatch between the comment and associated code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/245
+* Sweep: Update the docstrings and comments in sdks/ts/src/utils/openaiPatch.ts to fix any issues and mismatch between the comment and associated code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/246
+* Sweep: Update the docstrings and comments in sdks/ts/src/managers/doc.ts to fix any issues and mismatch between the comment and associated code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/247
+* doc(sdks/ts): Generate documentation for the typescript SDK by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/248
+* Sweep: Update the docstrings and comments in sdks/python/julep/env.py to fix any issues and mismatch between the comments present and surrounding code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/262
+* Sweep: Update the docstrings and comments in sdks/python/julep/managers/memory.py to fix any issues and mismatch between the comments present and surrounding code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/271
+* Sweep: Update the docstrings and comments in sdks/python/julep/utils/openai_patch.py to fix any issues and mismatch between the comments present and surrounding code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/270
+* Sweep: Update the docstrings and comments in sdks/python/julep/managers/base.py to fix any issues and mismatch between the comments present and surrounding code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/263
+* Sweep: Update the docstrings and comments in sdks/python/julep/managers/types.py to fix any issues and mismatch between the comments present and surrounding code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/269
+* Sweep: Update the docstrings and comments in sdks/python/julep/managers/utils.py to fix any issues and mismatch between the comments present and surrounding code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/268
+* Sweep: Update the docstrings and comments in sdks/python/julep/managers/tool.py to fix any issues and mismatch between the comments present and surrounding code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/267
+* Sweep: Update the docstrings and comments in sdks/python/julep/managers/doc.py to fix any issues and mismatch between the comments present and surrounding code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/266
+* Sweep: Update the docstrings and comments in sdks/python/julep/managers/session.py to fix any issues and mismatch between the comments present and surrounding code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/265
+* Sweep: Update the docstrings and comments in sdks/python/julep/managers/agent.py to fix any issues and mismatch between the comments present and surrounding code by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/264
+* refactor(agents-api): Add decorator to wrap cozo queries inside and execute by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/273
+* feat: update python sdk docs by [@philipbalbas](https://github.com/philipbalbas) in https://github.com/julep-ai/julep/pull/272
+* fix: Set default values for function description and parameters by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/274
+* feat(openapi): Update spec to include role=function + render_templates by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/276
+* docs: update SUMMARY.md by [@philipbalbas](https://github.com/philipbalbas) in https://github.com/julep-ai/julep/pull/281
+* chore(deps): bump fastapi from 0.109.2 to 0.110.1 in /agents-api in the pip group across 1 directory by [@dependabot](https://github.com/dependabot) in https://github.com/julep-ai/julep/pull/280
+* chore(deps): bump idna from 3.6 to 3.7 in /memory-store/backup by [@dependabot](https://github.com/dependabot) in https://github.com/julep-ai/julep/pull/278
+* chore(deps): bump follow-redirects from 1.15.5 to 1.15.6 in /sdks/ts by [@dependabot](https://github.com/dependabot) in https://github.com/julep-ai/julep/pull/277
+* F/update julep docs by [@philipbalbas](https://github.com/philipbalbas) in https://github.com/julep-ai/julep/pull/282
+* fix: Fix queries calls by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/283
+* Sweep: Create CONTRIBUTING.md based on README.md in the root / directory by [@sweep-ai](https://github.com/sweep-ai) in https://github.com/julep-ai/julep/pull/285
+* feat: added docker-compose.yml and .env.example for self-hosting by [@alt-glitch](https://github.com/alt-glitch) in https://github.com/julep-ai/julep/pull/286
+* fix: Set default value for user's about text by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/287
+* fix: Update sessions with given IDs only by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/290
+* F/readme update by [@alt-glitch](https://github.com/alt-glitch) in https://github.com/julep-ai/julep/pull/291
+* feat: Truncate messages by [@whiterabbit1983](https://github.com/whiterabbit1983) in https://github.com/julep-ai/julep/pull/294
+* x/fix python sdk by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/296
+* feat(agents-api): Allow single instructions str for agents by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/297
+* fix: Session.user_id should be optional by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/298
+* feat(agents-api): Add jinja templates support by [@creatorrr](https://github.com/creatorrr) in https://github.com/julep-ai/julep/pull/300
+
+## New Contributors
+* [@dependabot](https://github.com/dependabot) made their first contribution in https://github.com/julep-ai/julep/pull/280
+
+**Full Changelog**: https://github.com/julep-ai/julep/commits/v0.3.2
+
+[Changes][v0.3.2]
+
+
+
+# [v0.3.0](https://github.com/julep-ai/julep/releases/tag/v0.3.0) - 27 Apr 2024
+
+
+
+[Changes][v0.3.0]
+
+
+
+# [v0.2.12](https://github.com/julep-ai/julep/releases/tag/v0.2.12) - 27 Apr 2024
+
+
+
+[Changes][v0.2.12]
+
+
+[v1.0.0-alpha1]: https://github.com/julep-ai/julep/compare/v0.4.1...v1.0.0-alpha1
+[v0.4.1]: https://github.com/julep-ai/julep/compare/v0.4.0...v0.4.1
+[v0.4.0]: https://github.com/julep-ai/julep/compare/v0.3.4...v0.4.0
+[v0.3.4]: https://github.com/julep-ai/julep/compare/v0.3.3...v0.3.4
+[v0.3.3]: https://github.com/julep-ai/julep/compare/v0.3.2...v0.3.3
+[v0.3.2]: https://github.com/julep-ai/julep/compare/v0.3.0...v0.3.2
+[v0.3.0]: https://github.com/julep-ai/julep/compare/v0.2.12...v0.3.0
+[v0.2.12]: https://github.com/julep-ai/julep/tree/v0.2.12
+
+
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 7081a266d..a7cda8b06 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -22,6 +22,115 @@ To contribute code changes:
Please ensure your code follows the existing style and passes all tests.
+## Project Overview and Architecture
+
+### Key Components
+
+1. **agents-api**: The core API service for Julep.
+2. **typespec**: API specifications and contracts.
+3. **integrations-service**: Handles external integrations.
+4. **embedding-service**: Manages text embeddings.
+5. **memory-store**: Handles persistent storage.
+6. **llm-proxy**: Proxy for language model interactions.
+7. **scheduler**: Manages task scheduling.
+8. **gateway**: API gateway and routing.
+9. **monitoring**: System monitoring and metrics.
+
+### Technology Stack
+
+- **FastAPI**: Web framework for building APIs
+- **TypeSpec**: API specification language
+- **Cozo**: Database system
+- **Temporal**: Workflow engine
+- **Docker**: Containerization
+
+### Relationships Between Components
+
+The `agents-api` serves as the central component, interacting with most other services:
+- It uses `typespec` definitions for API contracts.
+- Communicates with `integrations-service` for external tool interactions.
+- Utilizes `embedding-service` for text processing.
+- Stores data in `memory-store`.
+- Interacts with language models through `llm-proxy`.
+- Uses `scheduler` for task management.
+- All API requests pass through the `gateway`.
+- `monitoring` observes the entire system.
+
+## Understanding the Codebase
+
+To get a comprehensive understanding of Julep, we recommend exploring the codebase in the following order:
+
+1. **Project Overview**
+ - Read `README.md` in the root directory
+ - Explore `docs/` for detailed documentation
+
+2. **System Architecture**
+ - Examine `docker-compose.yml` in the root directory
+ - Review `deploy/` directory for different deployment configurations
+
+3. **API Specifications**
+ - Learn about TypeSpec: https://typespec.io/docs/
+ - Explore `typespec/` directory:
+ - Start with `common/` folder
+ - Review `main.tsp`
+ - Examine each module sequentially
+
+4. **Core API Implementation**
+ - Learn about FastAPI: https://fastapi.tiangolo.com/
+ - Explore `agents-api/` directory:
+ - Review `README.md` for an overview
+ - Examine `routers/` for API endpoints
+ - Look into `models/` for data models
+
+5. **Database and Storage**
+ - Learn about Cozo: https://docs.cozodb.org/en/latest/tutorial.html
+ - Review `agents-api/README.md` for database schema
+ - Explore `agents-api/models/` for database queries
+
+6. **Workflow Management**
+ - Learn about Temporal: https://docs.temporal.io/develop/python
+ - Explore `agents-api/activities/` for individual workflow steps
+ - Review `agents-api/workflows/task_execution/` for main workflow logic
+
+7. **Testing**
+ - Examine `agents-api/tests/` for test cases
+
+8. **Additional Services**
+ - Explore other service directories (`integrations-service/`, `embedding-service/`, etc.) to understand their specific roles and implementations
+
+## Contributing Guidelines
+
+1. **Set Up Development Environment**
+ - Clone the repository
+ - Install Docker and Docker Compose
+ - Set up necessary API keys and environment variables
+
+2. **Choose an Area to Contribute**
+ - Check the issue tracker for open issues
+ - Look for "good first issue" labels for newcomers
+
+3. **Make Changes**
+ - Create a new branch for your changes
+ - Write clean, well-documented code
+ - Ensure your changes adhere to the project's coding standards
+
+4. **Test Your Changes**
+ - Run existing tests
+ - Add new tests for new functionality
+ - Ensure all tests pass before submitting your changes
+
+5. **Submit a Pull Request**
+ - Provide a clear description of your changes
+ - Reference any related issues
+ - Be prepared to respond to feedback and make adjustments
+
+6. **Code Review**
+ - Address any comments or suggestions from reviewers
+ - Make necessary changes and push updates to your branch
+
+7. **Merge**
+ - Once approved, your changes will be merged into the main branch
+
### Documentation Improvements
Improvements to documentation are always appreciated! If you see areas that could be clarified or expanded, feel free to make the changes and submit a pull request.
@@ -30,4 +139,75 @@ Improvements to documentation are always appreciated! If you see areas that coul
We'd love to hear your feedback and ideas for the project! Feel free to submit an issue or contact the maintainers directly to share your thoughts. Your input is very valuable in shaping the future direction of the project.
-Thank you for your interest in contributing to this project!
\ No newline at end of file
+### Setup Instructions
+
+##### 1. Clone the Repository
+Clone the repository from your preferred source:
+
+```bash
+git clone
+```
+
+##### 2. Navigate to the Root Directory
+Change to the root directory of the project:
+
+```bash
+cd
+```
+
+##### 3. Set Up Environment Variables
+- Create a `.env` file in the root directory.
+- Refer to the `.env.example` file for a list of required variables.
+- Ensure that all necessary variables are set in the `.env` file.
+
+##### 4. Create a Docker Volume for Backup
+Create a Docker volume named `cozo_backup`:
+
+```bash
+docker volume create cozo_backup
+```
+
+##### 5. Run the Project using Docker Compose
+You can run the project in two different modes: **Single Tenant** or **Multi-Tenant**. Choose one of the following commands based on your requirement:
+
+###### Single-Tenant Mode
+Run the project in single-tenant mode:
+
+```bash
+docker compose --env-file .env --profile temporal-ui --profile single-tenant --profile embedding-cpu --profile self-hosted-db up --force-recreate --build --watch
+```
+
+> **Note:** In single-tenant mode, you can interact with the SDK directly without the need for the API KEY.
+
+###### Multi-Tenant Mode
+Run the project in multi-tenant mode:
+
+```bash
+docker compose --env-file .env --profile temporal-ui --profile multi-tenant --profile embedding-cpu --profile self-hosted-db up --force-recreate --build --watch
+```
+
+> **Note:** In multi-tenant mode, you need to generate a JWT token locally that act as an API KEY to interact with the SDK.
+
+##### 6. Generate a JWT Token (Only for Multi-Tenant Mode)
+
+To generate a JWT token, `jwt-cli` is required. Kindly install the same before proceeding with the next steps.
+
+Use the following command and replace `JWT_SHARED_KEY` with the corresponding key from your `.env` file to generate a JWT token:
+
+```bash
+jwt encode --secret JWT_SHARED_KEY --alg HS512 --exp=$(date -j -v +10d +%s) --sub '00000000-0000-0000-0000-000000000000' '{}'
+```
+
+This command generates a JWT token that will be valid for 10 days.
+
+##### 7. Access and Interact
+- **Temporal UI**: You can access the Temporal UI through the specified port in your `.env` file.
+- **API Interactions**: Depending on the chosen mode, interact with the setup using the provided endpoints.
+
+##### Troubleshooting
+- Ensure that all required Docker images are available.
+- Check for missing environment variables in the `.env` file.
+- Use the `docker compose logs` command to view detailed logs for debugging.
+
+
+Remember, contributions aren't limited to code. Documentation improvements, bug reports, and feature suggestions are also valuable contributions to the project.
diff --git a/README-CN.md b/README-CN.md
index 49c01217e..8dca6dcbb 100644
--- a/README-CN.md
+++ b/README-CN.md
@@ -1,248 +1,664 @@
-[English](README.md) | 中文翻译
+[English](README.md) | 中文
+We're excited to welcome new contributors to the Julep project! We've created several "good first issues" to help you get started. Here's how you can contribute:
+
+1. Check out our [CONTRIBUTING.md](CONTRIBUTING.md) file for guidelines on how to contribute.
+2. Browse our [good first issues](https://github.com/julep-ai/julep/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) to find a task that interests you.
+3. If you have any questions or need help, don't hesitate to reach out on our [Discord](https://discord.com/invite/JTSBGRZrzj) channel.
+
+Your contributions, big or small, are valuable to us. Let's build something amazing together! 🚀
+
+### 🎉 DevFest.AI October 2024
+
+Exciting news! We're participating in DevFest.AI throughout October 2024! 🗓️
+
+- Contribute to Julep during this event and get a chance to win awesome Julep merch and swag! 🎁
+- Join developers from around the world in contributing to AI repositories and participating in amazing events.
+- A big thank you to DevFest.AI for organizing this fantastic initiative!
+
+> [!TIP]
+> Ready to join the fun? **[Tweet to start participating](https://twitter.com/intent/tweet?text=Pumped%20to%20be%20participating%20in%20%40devfestai%20with%20%40julep_ai%20building%20%23ai%20%23agents%20%23workflows%20Let's%20gooo!%20https%3A%2F%2Fgit.new%2Fjulep)** and let's get coding! 🖥️
+
+
+
+*****
+
+## 🎉🚀 **Exciting News: Julep 1.0 Alpha Release!** 🚀🎉
+
+We're thrilled to announce the **alpha** release of Julep 1.0! 🥳
+
+🌟 **What's New:**
+- Enhanced workflow capabilities
+- Improved agent persistence
+- Tons of in-built tool integrations (like dalle, google search, sendgrid, etc.)
+- Streamlined API
+
+🧪 Try it out and help shape the future of AI workflows!
+
+> [!NOTE]
+> While we are in beta, you can reach out on [Discord](https://discord.com/invite/JTSBGRZrzj) to get your API key.
+
+> [!TIP]
+> 🐛 Found a bug? Have a suggestion? We'd love to hear from you!
+> Join our [Discord](https://discord.com/invite/JTSBGRZrzj) or open an [issue](https://github.com/julep-ai/julep/issues).
+
+Stay tuned for more updates as we approach our stable release! 📢
+
+*****
+
+## Introduction
+
+Julep is an open-source platform for creating persistent AI agents with customizable workflows. It provides tools to develop, manage, and deploy AI-driven applications, focusing on flexibility and ease of use.
+
+With Julep, you can:
+- Quickly develop AI agents that retain context and state across interactions
+- Design and execute sophisticated workflows tailored to your AI agents
+- Seamlessly integrate various tools and APIs into your AI workflows
+- Effortlessly manage persistent sessions and user interactions
+
+Whether you're developing a chatbot, automating tasks, or building a complex AI assistant, Julep provides the flexibility and features you need to turn your ideas into reality swiftly and efficiently.
+
+
+
+
+Here's a quick python example:
+
+
+
+
+from julep import Julep, AsyncJulep
+
+# 🔑 Initialize the Julep client
+# Or alternatively, use AsyncJulep for async operations
+client = Julep(api_key="your_api_key")
+
+##################
+## 🤖 Agent 🤖 ##
+##################
+
+# Create a research agent
+agent = client.agents.create(
+ name="Research Agent",
+ model="claude-3.5-sonnet",
+ about="You are a research agent designed to handle research inquiries.",
+)
+
+# 🔍 Add a web search tool to the agent
+client.agents.tools.create(
+ agent_id=agent.id,
+ name="web_search", # Should be python valid variable name
+ description="Use this tool to research inquiries.",
+ integration={
+ "provider": "brave",
+ "method": "search",
+ "setup": {
+ "api_key": "your_brave_api_key",
+ },
+ },
+)
-We're excited to announce that v0.4 is currently in alpha! This release brings significant improvements and new features. Stay tuned for the official release.
+#################
+## 💬 Chat 💬 ##
+#################
-For a comprehensive overview of Julep's core concepts and upcoming features, check out our [detailed concepts guide](docs/julep-concepts.md).
+# Start an interactive chat session with the agent
+session = client.sessions.create(
+ agent_id=agent.id,
+ context_overflow="adaptive", # 🧠 Julep will dynamically compute the context window if needed
+)
+
+# 🔄 Chat loop
+while (user_input := input("You: ")) != "exit":
+ response = client.sessions.chat(
+ session_id=session.id,
+ message=user_input,
+ )
+
+ print("Agent: ", response.choices[0].message.content)
-Looking for the previous version? You can find the [v0.3 README here](v0.3_README.md).
----
+#################
+## 📋 Task 📋 ##
+#################
+
+# Create a recurring research task for the agent
+task = client.tasks.create(
+ agent_id=agent.id,
+ name="Research Task",
+ description="Research the given topic every 24 hours.",
+ #
+ # 🛠️ Task specific tools
+ tools=[
+ {
+ "name": "send_email",
+ "description": "Send an email to the user with the results.",
+ "api_call": {
+ "method": "post",
+ "url": "https://api.sendgrid.com/v3/mail/send",
+ "headers": {"Authorization": "Bearer YOUR_SENDGRID_API_KEY"},
+ },
+ }
+ ],
+ #
+ # 🔢 Task main steps
+ main=[
+ #
+ # Step 1: Research the topic
+ {
+ # `_` (underscore) variable refers to the previous step's output
+ # Here, it points to the topic input from the user
+ "prompt": "Look up topic '{{_.topic}}' and summarize the results.",
+ "tools": [{"ref": {"name": "web_search"}}], # 🔍 Use the web search tool from the agent
+ "unwrap": True,
+ },
+ #
+ # Step 2: Send email with research results
+ {
+ "tool": "send_email",
+ "arguments": {
+ "subject": "Research Results",
+ "body": "'Here are the research results for today: ' + _.content",
+ "to": "inputs[0].email", # Reference the email from the user's input
+ },
+ },
+ #
+ # Step 3: Wait for 24 hours before repeating
+ {"sleep": "24 * 60 * 60"},
+ ],
+)
+
+# 🚀 Start the recurring task
+client.executions.create(task_id=task.id, input={"topic": "Python"})
-## Why Julep?
-We've built a lot of AI apps and understand the challenges in creating complex, stateful applications with multiple agents and workflows.
+# 🔁 This will run the task every 24 hours,
+# research for the topic "Python", and
+# send the results to the user's email
+
+
-**The Problems**
-1. Building AI applications with memory, knowledge, and tools is complex and time-consuming.
-2. Managing long-running tasks and complex workflows in AI applications is challenging.
-3. Integrating multiple tools and services into AI applications requires significant development effort.
----
## Features
-- **Stateful Agents**: Create and manage agents with built-in conversation history and memory.
-- **Complex Workflows**: Define and execute multi-step tasks with branching, parallel execution, and error handling.
-- **Integrated Tools**: Easily incorporate a wide range of tools and external services into your AI applications.
-- **Flexible Session Management**: Support for various interaction patterns like one-to-many and many-to-one between agents and users.
-- **Built-in RAG**: Add, delete & update documents to provide context to your agents.
-- **Asynchronous Task Execution**: Run long-running tasks in the background with state management and resumability.
-- **Multi-Model Support**: Switch between different language models (OpenAI, Anthropic, Ollama) while preserving state.
-- **Task System**: Define and execute complex, multi-step workflows with parallel processing and error handling.
----
-## Quickstart
-### Option 1: Use the Julep Cloud
-Our hosted platform is in Beta!
+Julep simplifies the process of building persistent AI agents with customizable workflows. Key features include:
-To get access:
-- Head over to https://platform.julep.ai
-- Generate and add your `JULEP_API_KEY` in `.env`
+- **Persistent AI Agents**: Create and manage AI agents that maintain context across interactions.
+- **Customizable Workflows**: Design complex, multi-step AI workflows using Tasks.
+- **Tool Integration**: Seamlessly integrate various tools and APIs into your AI workflows.
+- **Document Management**: Efficiently manage and search through documents for your agents.
+- **Session Management**: Handle persistent sessions for continuous interactions.
+- **Flexible Execution**: Support for parallel processing, conditional logic, and error handling in workflows.
-### Option 2: Install and run Julep locally
-Head over to docs on [self-hosting](https://docs.julep.ai/guides/self-hosting) to see how to run Julep locally!
+## Installation
+
+To get started with Julep, install it using [npm](https://www.npmjs.com/package/@julep/sdk) or [pip](https://pypi.org/project/julep/):
+
+```bash
+npm install @julep/sdk
+```
-### Installation
+or
```bash
pip install julep
```
-### Setting up the `client`
+> [!TIP]
+> ~~Get your API key [here](https://app.julep.ai/api-keys).~~
+>
+> While we are in beta, you can reach out on [Discord](https://discord.com/invite/JTSBGRZrzj) to get your API key.
-```python
-from julep import Client
-import os
+## Quick Start Guide
+
+### Step 1: Import Julep
-base_url = os.environ.get("JULEP_API_URL")
-api_key = os.environ.get("JULEP_API_KEY")
+First, import the Julep SDK into your project:
-client = Client(api_key=api_key, base_url=base_url)
+```javascript
+const Julep = require('@julep/sdk');
```
-### Create an agent
-Agent is the object to which LLM settings like model, temperature along with tools are scoped to.
+or
```python
-agent = client.agents.create(
- name="Jessica",
- model="gpt-4",
- tools=[], # Tools defined here
- about="A helpful AI assistant",
- instructions=["Be polite", "Be concise"]
-)
+from julep import AsyncJulep
```
-### Create a user
-User is the object which represents the user of the application.
+### Step 2: Initialize the Agent
-Memories are formed and saved for each user and many users can talk to one agent.
+Create a new agent with basic settings:
-```python
-user = client.users.create(
- name="Anon",
- about="Average nerdy techbro/girl spending 8 hours a day on a laptop",
-)
+```javascript
+const julep = new Julep({ apiKey: 'your-api-key' });
+
+const agent = await julep.agents.create({
+ name: 'ResearchAssistant',
+ model: 'gpt-4-turbo',
+ about: "You are a creative storytelling agent that can craft engaging stories and generate comic panels based on ideas.",
+});
```
-### Create a session
-A "user" and an "agent" communicate in a "session". System prompt goes here.
+or
```python
-situation_prompt = """You are Jessica, a helpful AI assistant.
-You're here to assist the user with any questions or tasks they might have."""
-session = client.sessions.create(
- user_id=user.id,
- agent_id=agent.id,
- situation=situation_prompt
+client = AsyncJulep(api_key="your_api_key")
+
+agent = await client.agents.create(
+ name="Storytelling Agent",
+ model="gpt-4-turbo",
+ about="You are a creative storytelling agent that can craft engaging stories and generate comic panels based on ideas.",
)
```
-### Start a stateful conversation
-`session.chat` controls the communication between the "agent" and the "user".
+### Step 3: Chat with the Agent
-It has two important arguments;
-- `recall`: Retrieves the previous conversations and memories.
-- `remember`: Saves the current conversation turn into the memory store.
+Start an interactive chat session with the agent:
-To keep the session stateful, both need to be `True`
+```javascript
+const session = await julep.sessions.create({
+ agentId: agent.id,
+});
+
+// Send messages to the agent
+const response = await julep.sessions.chat({
+ sessionId: session.id,
+ message: 'Hello, can you tell me a story?',
+});
+
+console.log(response);
+```
+
+or
```python
-user_msg = "Hey Jessica, can you help me with a task?"
-response = client.sessions.chat(
+session = await client.sessions.create(agent_id=agent.id)
+
+# Send messages to the agent
+response = await client.sessions.chat(
session_id=session.id,
- messages=[
+ message="Hello, can you tell me a story?",
+)
+
+print(response)
+```
+
+
+### Step 4: Create a multi-step Task
+
+Let's define a multi-step task to create a story and generate a paneled comic strip based on an input idea:
+
+```python
+# 🛠️ Add an image generation tool (DALL·E) to the agent
+await client.agents.tools.create(
+ agent_id=agent.id,
+ name="image_generator",
+ description="Use this tool to generate images based on descriptions.",
+ integration={
+ "provider": "dalle",
+ "method": "generate_image",
+ "setup": {
+ "api_key": "your_dalle_api_key",
+ },
+ },
+)
+
+# 📋 Task
+# Create a task that takes an idea and creates a story and a 4-panel comic strip
+task = await client.tasks.create(
+ agent_id=agent.id,
+ name="Story and Comic Creator",
+ description="Create a story based on an idea and generate a 4-panel comic strip illustrating the story.",
+ main=[
+ # Step 1: Generate a story and outline into 4 panels
{
- "role": "user",
- "content": user_msg,
- "name": "Anon",
- }
+ "prompt": [
+ {
+ "role": "system",
+ "content": "You are {{agent.name}}. {{agent.about}}"
+ },
+ {
+ "role": "user",
+ "content": (
+ "Based on the idea '{{_.idea}}', write a short story suitable for a 4-panel comic strip. "
+ "Provide the story and a numbered list of 4 brief descriptions for each panel illustrating key moments in the story."
+ ),
+ },
+ ],
+ "unwrap": True,
+ },
+ # Step 2: Extract the panel descriptions and story
+ {
+ "evaluate": {
+ "story": "_.split('1. ')[0].strip()",
+ "panels": "re.findall(r'\\d+\\.\\s*(.*?)(?=\\d+\\.\\s*|$)', _)",
+ }
+ },
+ # Step 3: Generate images for each panel using the image generator tool
+ {
+ "foreach": {
+ "in": "_.panels",
+ "do": {
+ "tool": "image_generator",
+ "arguments": {
+ "description": "_",
+ },
+ },
+ },
+ },
+ # Step 4: Generate a catchy title for the story
+ {
+ "prompt": [
+ {
+ "role": "system",
+ "content": "You are {{agent.name}}. {{agent.about}}"
+ },
+ {
+ "role": "user",
+ "content": "Based on the story below, generate a catchy title.\n\nStory: {{outputs[1].story}}",
+ },
+ ],
+ "unwrap": True,
+ },
+ # Step 5: Return the story, the generated images, and the title
+ {
+ "return": {
+ "title": "outputs[3]",
+ "story": "outputs[1].story",
+ "comic_panels": "[output.image.url for output in outputs[2]]",
+ }
+ },
],
- recall=True,
- remember=True,
+)
+```
+
+> [!TIP]
+> node.js version of this is similar.
+
+### Step 5: Execute the Task
+
+```python
+# 🚀 Execute the task with an input idea
+execution = await client.executions.create(
+ task_id=task.id,
+ input={"idea": "A cat who learns to fly"}
)
-print(response.response[0][0].content)
+# 🎉 Watch as the story and comic panels are generated
+await client.executions.stream(execution_id=execution.id)
```
----
+This example demonstrates how to create an agent with a custom tool, define a complex task with multiple steps, and execute it to generate a creative output.
+
+
+
+> [!TIP]
+> You can find another node.js example [here](example.ts) or python example [here](example.py).
-## Core Concepts
+## Concepts
-### Agent
-An Agent in Julep is the main orchestrator of your application. It's backed by foundation models like GPT-4 or Claude and can use tools, documents, and execute complex tasks.
+Julep is built on several key technical components that work together to create powerful AI workflows:
-### User
-Users in Julep represent the end-users of your application. They can be associated with sessions and have their own documents and metadata.
+### Agents
+AI-powered entities backed by large language models (LLMs) that execute tasks and interact with users. Agents are the core functional units of Julep.
-### Session
-Sessions manage the interaction between users and agents. They maintain conversation history and context.
+```mermaid
+graph TD
+ Agent[Agent] --> LLM[Large Language Model]
+ Agent --> Tasks[Tasks]
+ Agent --> Users[Users]
+ Tasks --> Tools[Tools]
+```
-### Tool
-Tools are functions that agents can use to perform specific actions or retrieve information.
+### Users
+Entities that interact with agents. Users can be associated with sessions and have their own metadata, allowing for personalized interactions.
-### Doc
-Docs are collections of text snippets that can be associated with agents or users and are used for context retrieval.
+```mermaid
+graph LR
+ User[User] --> Sessions[Sessions]
+ Sessions --> Agents[Agents]
+ Sessions --> Metadata[Metadata]
+```
-### Task
-Tasks are complex, multi-step workflows that can be defined and executed by agents.
+### Sessions
+Stateful interactions between agents and users. Sessions maintain context across multiple exchanges and can be configured for different behaviors, including context management and overflow handling.
-### Execution
-An Execution is an instance of a Task that has been started with some input. It goes through various states as it progresses.
+```mermaid
+graph LR
+ Sessions[Sessions] --> Agents[Agents]
+ Sessions --> Users[Users]
+ Sessions --> ContextManagement[Context Management]
+ Sessions --> OverflowHandling[Overflow Handling]
+```
----
+### Tasks
+Multi-step, programmatic workflows that agents can execute. Tasks define complex operations and can include various types of steps, such as prompts, tool calls, and conditional logic.
-## API and SDKs
+```mermaid
+graph TD
+ Tasks[Tasks] --> Steps[Workflow Steps]
+ Steps --> Prompt[Prompt]
+ Steps --> ToolCalls[Tool Calls]
+ Steps --> ConditionalLogic[Conditional Logic]
+```
-To use the API directly or to take a look at request & response formats, authentication, available endpoints and more, please refer to the [API Documentation](https://docs.julep.ai/api-reference/agents-api/agents-api)
+### Tools
+Integrations that extend an agent's capabilities. Tools can be user-defined functions, system tools, or third-party API integrations. They allow agents to perform actions beyond text generation.
-### Python SDK
+```mermaid
+graph LR
+ Tools[Tools] --> UserDefinedFunctions[User-Defined Functions]
+ Tools --> SystemTools[System Tools]
+ Tools --> ThirdPartyAPIs[Third-Party APIs]
+```
-To install the Python SDK, run:
+### Documents
+Text or data objects that can be associated with agents or users. Documents are vectorized and stored in a vector database, enabling semantic search and retrieval during agent interactions.
-```bash
-pip install julep
+```mermaid
+graph LR
+ Documents[Documents] --> VectorDatabase[Vector Database]
+ Documents --> SemanticSearch[Semantic Search]
+ Documents --> AgentsOrUsers[Agents or Users]
```
-For more information on using the Python SDK, please refer to the [Python SDK documentation](https://docs.julep.ai/api-reference/python-sdk-docs).
+### Executions
+Instances of tasks that have been initiated with specific inputs. Executions have their own lifecycle and state machine, allowing for monitoring, management, and resumption of long-running processes.
-### TypeScript SDK
-To install the TypeScript SDK using `npm`, run:
+```mermaid
+graph LR
+ Executions[Executions] --> Tasks[Tasks]
+ Executions --> Lifecycle[Lifecycle]
+ Executions --> Monitoring[Monitoring]
+ Executions --> Management[Management]
+ Executions --> Resumption[Resumption]
+```
-```bash
-npm install @julep/sdk
+For a more detailed explanation of these concepts and their interactions, please refer to our [Concepts Documentation](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md).
+
+## Understanding Tasks
+
+Tasks are the core of Julep's workflow system. They allow you to define complex, multi-step AI workflows that your agents can execute. Here's a brief overview of task components:
+
+- **Name and Description**: Each task has a unique name and description for easy identification.
+- **Main Steps**: The core of a task, defining the sequence of actions to be performed.
+- **Tools**: Optional integrations that extend the capabilities of your agent during task execution.
+
+### Types of Workflow Steps
+
+Tasks in Julep can include various types of steps:
+
+1. **Prompt**: Send a message to the AI model and receive a response.
+ ```python
+ {"prompt": "Analyze the following data: {{data}}"}
+ ```
+
+2. **Tool Call**: Execute an integrated tool or API.
+ ```python
+ {"tool": "web_search", "arguments": {"query": "Latest AI developments"}}
+ ```
+
+3. **Evaluate**: Perform calculations or manipulate data.
+ ```python
+ {"evaluate": {"average_score": "sum(scores) / len(scores)"}}
+ ```
+
+4. **Conditional Logic**: Execute steps based on conditions.
+ ```python
+ {"if": "score > 0.8", "then": [...], "else": [...]}
+ ```
+
+5. **Loops**: Iterate over data or repeat steps.
+ ```python
+ {"foreach": {"in": "data_list", "do": [...]}}
+ ```
+
+| Step Name | Description | Input |
+|--------------------|--------------------------------------------------------------------------------------------------|------------------------------------------------------|
+| **Prompt** | Send a message to the AI model and receive a response. | Prompt text or template |
+| **Tool Call** | Execute an integrated tool or API. | Tool name and arguments |
+| **Evaluate** | Perform calculations or manipulate data. | Expressions or variables to evaluate |
+| **Wait for Input** | Pause workflow until input is received. | Any required user or system input |
+| **Log** | Log a specified value or message. | Message or value to log |
+| **Embed** | Embed text into a specific format or system. | Text or content to embed |
+| **Search** | Perform a document search based on a query. | Search query |
+| **Get** | Retrieve a value from a key-value store. | Key identifier |
+| **Set** | Assign a value to a key in a key-value store. | Key and value to assign |
+| **Parallel** | Run multiple steps in parallel. | List of steps to execute simultaneously |
+| **Foreach** | Iterate over a collection and perform steps for each item. | Collection or list to iterate over |
+| **MapReduce** | Map over a collection and reduce the results based on an expression. | Collection to map and reduce expressions |
+| **If Else** | Conditional execution of steps based on a condition. | Condition to evaluate |
+| **Switch** | Execute steps based on multiple conditions, similar to a switch-case statement. | Multiple conditions and corresponding steps |
+| **Yield** | Run a subworkflow and await its completion. | Subworkflow identifier and input data |
+| **Error** | Handle errors by specifying an error message. | Error message or handling instructions |
+| **Sleep** | Pause the workflow for a specified duration. | Duration (seconds, minutes, etc.) |
+| **Return** | Return a value from the workflow. | Value to return |
+
+For detailed information on each step type and advanced usage, please refer to our [Task Documentation](https://docs.julep.ai/tasks).
+
+## Advanced Features
+
+Julep offers a range of advanced features to enhance your AI workflows:
+
+### Adding Tools to Agents
+
+Extend your agent's capabilities by integrating external tools and APIs:
+
+```python
+client.agents.tools.create(
+ agent_id=agent.id,
+ name="web_search",
+ description="Search the web for information.",
+ integration={
+ "provider": "google",
+ "method": "search",
+ "setup": {"api_key": "your_google_api_key"},
+ },
+)
+```
+
+### Managing Sessions and Users
+
+Julep provides robust session management for persistent interactions:
+
+```python
+session = client.sessions.create(
+ agent_id=agent.id,
+ user_id="user123",
+ context_overflow="adaptive"
+)
+
+# Continue conversation in the same session
+response = client.sessions.chat(
+ session_id=session.id,
+ message="Follow up on our previous conversation."
+)
+```
+
+### Document Integration and Search
+
+Easily manage and search through documents for your agents:
+
+```python
+# Upload a document
+document = client.documents.create(
+ file="path/to/document.pdf",
+ metadata={"category": "research_paper"}
+)
+
+# Search documents
+results = client.documents.search(
+ query="AI advancements",
+ filter={"category": "research_paper"}
+)
```
-For more information on using the TypeScript SDK, please refer to the [TypeScript SDK documentation](https://docs.julep.ai/api-reference/js-sdk-docs).
+For more advanced features and detailed usage, please refer to our [Advanced Features Documentation](https://docs.julep.ai/advanced-features).
----
+## SDK Reference
-## Deployment
-Check out the [self-hosting guide](https://docs.julep.ai/agents/self-hosting) to host the platform yourself.
+- [Node.js SDK](https://github.com/julep-ai/node-sdk/blob/main/api.md)
+- [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/api.md)
-If you want to deploy Julep to production, [let's hop on a call](https://cal.com/ishitaj/15min)!
+## API Reference
-We'll help you customise the platform and help you get set up with:
-- Multi-tenancy
-- Reverse proxy along with authentication and authorisation
-- Self-hosted LLMs
-- & more
+Explore our comprehensive API documentation to learn more about agents, tasks, and executions:
+
+- [Agents API](https://api.julep.ai/api/docs#tag/agents)
+- [Tasks API](https://api.julep.ai/api/docs#tag/tasks)
+- [Executions API](https://api.julep.ai/api/docs#tag/executions)
+
+## Examples and Tutorials
+
+Discover example projects and tutorials to help you get started and build upon provided examples:
+
+- [Example Projects](https://github.com/julep-ai/julep/tree/main/examples)
+- [Tutorials](https://docs.julep.ai/tutorials)
----
## Contributing
-We welcome contributions from the community to help improve and expand the Julep AI platform. Please see our [Contributing Guidelines](CONTRIBUTING.md) for more information on how to get started.
----
+We welcome contributions to the project! Learn how to contribute and our code of conduct:
+
+- [Contributing Guidelines](https://github.com/julep-ai/julep/blob/main/CONTRIBUTING.md)
+- [Code of Conduct](https://github.com/julep-ai/julep/blob/main/CODE_OF_CONDUCT.md)
+
+## Support and Community
+
+Join our community to get help, ask questions, and share your ideas:
+
+- [Discord](https://discord.com/invite/JTSBGRZrzj)
+- [GitHub Discussions](https://github.com/julep-ai/julep/discussions)
+- [Twitter](https://twitter.com/julep_ai)
+
## License
-Julep AI is released under the Apache 2.0 License. See the [LICENSE](LICENSE) file for more details.
----
-## Contact and Support
-If you have any questions, need assistance, or want to get in touch with the Julep AI team, please use the following channels:
+This project is licensed under the [Apache License 2.0](https://github.com/julep-ai/julep/blob/main/LICENSE).
+
+## Acknowledgements
-- [Discord](https://discord.com/invite/JTSBGRZrzj): Join our community forum to discuss ideas, ask questions, and get help from other Julep AI users and the development team.
-- GitHub Issues: For technical issues, bug reports, and feature requests, please open an issue on the Julep AI GitHub repository.
-- Email Support: If you need direct assistance from our support team, send an email to hey@julep.ai, and we'll get back to you as soon as possible.
-- Follow for updates on [X](https://twitter.com/julep_ai) & [LinkedIn](https://www.linkedin.com/company/julep-ai/)
-- [Hop on a call](https://cal.com/ishitaj/15min): We wanna know what you're building and how we can tweak and tune Julep to help you build your next AI app.
+We would like to express our gratitude to all contributors and the open-source community for their valuable resources and contributions.
diff --git a/agents-api/.DS_Store b/agents-api/.DS_Store
index f34bf5fc6..04526ed47 100644
Binary files a/agents-api/.DS_Store and b/agents-api/.DS_Store differ
diff --git a/agents-api/.tool-versions b/agents-api/.tool-versions
index 8aa451a5c..269a4eb43 100644
--- a/agents-api/.tool-versions
+++ b/agents-api/.tool-versions
@@ -1 +1 @@
-python 3.11.9
+python 3.12.5
diff --git a/agents-api/Dockerfile b/agents-api/Dockerfile
index de5111250..90432df12 100644
--- a/agents-api/Dockerfile
+++ b/agents-api/Dockerfile
@@ -1,11 +1,14 @@
-FROM python:3.11-slim
+# syntax=docker/dockerfile:1
+# check=error=true
-ENV PYTHONUNBUFFERED True
+FROM python:3.12-slim
+
+ENV PYTHONUNBUFFERED=1
ENV POETRY_CACHE_DIR=/tmp/poetry_cache
WORKDIR /app
-RUN pip install 'poetry<=1.9.0' \
+RUN pip install 'poetry>=1.8.0,<1.9.0' \
&& poetry config virtualenvs.create false
COPY pyproject.toml poetry.lock ./
@@ -14,6 +17,4 @@ RUN poetry install --no-dev --no-root
COPY . ./
-RUN poetry install --no-dev
-
ENTRYPOINT ["python", "-m", "agents_api.web", "--host", "0.0.0.0", "--port", "8080"]
diff --git a/agents-api/Dockerfile.migration b/agents-api/Dockerfile.migration
index c48946c0e..695b2e1e9 100644
--- a/agents-api/Dockerfile.migration
+++ b/agents-api/Dockerfile.migration
@@ -1,6 +1,9 @@
+# syntax=docker/dockerfile:1
+# check=error=true
+
FROM python:3.11-slim
-ENV PYTHONUNBUFFERED True
+ENV PYTHONUNBUFFERED=1
ENV POETRY_CACHE_DIR=/tmp/poetry_cache
WORKDIR /app
@@ -9,8 +12,11 @@ RUN pip install --no-cache-dir --upgrade cozo-migrate
COPY . ./
ENV COZO_HOST="http://cozo:9070"
-ENV COZO_AUTH_TOKEN="myauthkey"
+# Expected environment variables:
+# COZO_AUTH_TOKEN="myauthkey"
+
+SHELL ["/bin/bash", "-c"]
ENTRYPOINT \
cozo-migrate -e http -h $COZO_HOST --auth $COZO_AUTH_TOKEN init \
; cozo-migrate -e http -h $COZO_HOST --auth $COZO_AUTH_TOKEN -d ./migrations apply -ay
diff --git a/agents-api/Dockerfile.worker b/agents-api/Dockerfile.worker
index fd3af39fd..0bf84fae2 100644
--- a/agents-api/Dockerfile.worker
+++ b/agents-api/Dockerfile.worker
@@ -1,11 +1,14 @@
-FROM python:3.11-slim
+# syntax=docker/dockerfile:1
+# check=error=true
-ENV PYTHONUNBUFFERED True
+FROM python:3.12-slim
+
+ENV PYTHONUNBUFFERED=1
ENV POETRY_CACHE_DIR=/tmp/poetry_cache
WORKDIR /app
-RUN pip install 'poetry<=1.9.0' \
+RUN pip install 'poetry>=1.8.0,<1.9.0' \
&& poetry config virtualenvs.create false
COPY pyproject.toml poetry.lock ./
diff --git a/agents-api/agents_api/activities/execute_integration.py b/agents-api/agents_api/activities/execute_integration.py
new file mode 100644
index 000000000..964ad6e12
--- /dev/null
+++ b/agents-api/agents_api/activities/execute_integration.py
@@ -0,0 +1,61 @@
+from typing import Any
+
+from beartype import beartype
+from temporalio import activity
+
+from ..autogen.openapi_model import IntegrationDef
+from ..clients import integrations
+from ..common.protocol.tasks import StepContext
+from ..env import testing
+from ..models.tools import get_tool_args_from_metadata
+
+
+@beartype
+async def execute_integration(
+ context: StepContext,
+ tool_name: str,
+ integration: IntegrationDef,
+ arguments: dict[str, Any],
+ setup: dict[str, Any] = {},
+) -> Any:
+ developer_id = context.execution_input.developer_id
+ agent_id = context.execution_input.agent.id
+ task_id = context.execution_input.task.id
+
+ merged_tool_args = get_tool_args_from_metadata(
+ developer_id=developer_id, agent_id=agent_id, task_id=task_id, arg_type="args"
+ )
+
+ merged_tool_setup = get_tool_args_from_metadata(
+ developer_id=developer_id, agent_id=agent_id, task_id=task_id, arg_type="setup"
+ )
+
+ arguments = (
+ merged_tool_args.get(tool_name, {}) | (integration.arguments or {}) | arguments
+ )
+
+ setup = merged_tool_setup.get(tool_name, {}) | (integration.setup or {}) | setup
+
+ try:
+ if integration.provider == "dummy":
+ return arguments
+
+ return await integrations.run_integration_service(
+ provider=integration.provider,
+ setup=setup,
+ method=integration.method,
+ arguments=arguments,
+ )
+
+ except BaseException as e:
+ if activity.in_activity():
+ activity.logger.error(f"Error in execute_integration: {e}")
+
+ raise
+
+
+mock_execute_integration = execute_integration
+
+execute_integration = activity.defn(name="execute_integration")(
+ execute_integration if not testing else mock_execute_integration
+)
diff --git a/agents-api/agents_api/activities/task_steps/prompt_step.py b/agents-api/agents_api/activities/task_steps/prompt_step.py
index d04dc99a6..e9b4daeb3 100644
--- a/agents-api/agents_api/activities/task_steps/prompt_step.py
+++ b/agents-api/agents_api/activities/task_steps/prompt_step.py
@@ -1,5 +1,6 @@
from beartype import beartype
from temporalio import activity
+from temporalio.exceptions import ApplicationError
from ...clients import (
litellm, # We dont directly import `acompletion` so we can mock it
@@ -22,7 +23,6 @@ async def prompt_step(context: StepContext) -> StepOutcome:
context_data,
skip_vars=["developer_id"],
)
-
# Get settings and run llm
agent_default_settings: dict = (
context.execution_input.agent.default_settings.model_dump()
@@ -64,18 +64,29 @@ async def prompt_step(context: StepContext) -> StepOutcome:
else:
passed_settings: dict = {}
+ # Wrap the prompt in a list if it is not already
+ if isinstance(prompt, str):
+ prompt = [{"role": "user", "content": prompt}]
+
completion_data: dict = {
"model": agent_model,
"tools": formatted_agent_tools or None,
- ("messages" if isinstance(prompt, list) else "prompt"): prompt,
+ "messages": prompt,
**agent_default_settings,
**passed_settings,
}
+
response = await litellm.acompletion(
**completion_data,
)
+ if context.current_step.unwrap:
+ if response.choices[0].finish_reason == "tool_calls":
+ raise ApplicationError("Tool calls cannot be unwrapped")
+
+ response = response.choices[0].message.content
+
return StepOutcome(
- output=response.model_dump(),
+ output=response.model_dump() if hasattr(response, "model_dump") else response,
next=None,
)
diff --git a/agents-api/agents_api/activities/task_steps/raise_complete_async.py b/agents-api/agents_api/activities/task_steps/raise_complete_async.py
index 3944c914f..54fd8a32c 100644
--- a/agents-api/agents_api/activities/task_steps/raise_complete_async.py
+++ b/agents-api/agents_api/activities/task_steps/raise_complete_async.py
@@ -1,3 +1,5 @@
+import base64
+
from temporalio import activity
from ...autogen.openapi_model import CreateTransitionRequest
@@ -10,21 +12,26 @@
@activity.defn
async def raise_complete_async(context: StepContext, output: StepOutcome) -> None:
- # TODO: Create a transtition to "wait" and save the captured_token to the transition
+ activity_info = activity.info()
+
+ captured_token = base64.b64encode(activity_info.task_token).decode("ascii")
+ activity_id = activity_info.activity_id
+ workflow_run_id = activity_info.workflow_run_id
+ workflow_id = activity_info.workflow_id
- captured_token = activity.info().task_token
- captured_token = captured_token.decode("latin-1")
transition_info = CreateTransitionRequest(
current=context.cursor,
type="wait",
next=None,
output=output,
task_token=captured_token,
+ metadata={
+ "x-activity-id": activity_id,
+ "x-run-id": workflow_run_id,
+ "x-workflow-id": workflow_id,
+ },
)
await original_transition_step(context, transition_info)
- # await transition(context, output=output, type="wait", next=None, task_token=captured_token)
-
- print("transition to wait called")
activity.raise_complete_async()
diff --git a/agents-api/agents_api/activities/task_steps/tool_call_step.py b/agents-api/agents_api/activities/task_steps/tool_call_step.py
index 85a119deb..3082d8706 100644
--- a/agents-api/agents_api/activities/task_steps/tool_call_step.py
+++ b/agents-api/agents_api/activities/task_steps/tool_call_step.py
@@ -1,20 +1,53 @@
+import base64
+import secrets
+
from beartype import beartype
from temporalio import activity
+from temporalio.exceptions import ApplicationError
+from ...activities.task_steps.base_evaluate import base_evaluate
+from ...autogen.openapi_model import Tool, ToolCallStep
from ...common.protocol.tasks import (
StepContext,
+ StepOutcome,
)
+def generate_call_id():
+ # Generate 18 random bytes (which will result in 24 base64 characters)
+ random_bytes = secrets.token_bytes(18)
+ # Encode to base64 and remove padding
+ base64_string = base64.urlsafe_b64encode(random_bytes).decode("ascii").rstrip("=")
+ # Add the "call_" prefix
+ return f"call_{base64_string}"
+
+
@activity.defn
@beartype
-async def tool_call_step(context: StepContext) -> dict:
- raise NotImplementedError()
- # assert isinstance(context.current_step, ToolCallStep)
+async def tool_call_step(context: StepContext) -> StepOutcome:
+ assert isinstance(context.current_step, ToolCallStep)
+
+ tools: list[Tool] = context.tools
+ tool_name = context.current_step.tool
+
+ tool = next((t for t in tools if t.name == tool_name), None)
+
+ if tool is None:
+ raise ApplicationError(f"Tool {tool_name} not found in the toolset")
+
+ arguments = await base_evaluate(
+ context.current_step.arguments, context.model_dump()
+ )
+
+ call_id = generate_call_id()
- # context.current_step.tool_id
- # context.current_step.arguments
- # # get tool by id
- # # call tool
+ tool_call = {
+ tool.type: {
+ "arguments": arguments,
+ "name": tool_name,
+ },
+ "id": call_id,
+ "type": tool.type,
+ }
- # return {}
+ return StepOutcome(output=tool_call)
diff --git a/agents-api/agents_api/activities/truncation.py b/agents-api/agents_api/activities/truncation.py
index 4742ee6d4..afdb43da4 100644
--- a/agents-api/agents_api/activities/truncation.py
+++ b/agents-api/agents_api/activities/truncation.py
@@ -3,7 +3,7 @@
from beartype import beartype
from temporalio import activity
-from agents_api.autogen.openapi_model import Entry
+from ..autogen.openapi_model import Entry
# from agents_api.models.entry.entries_summarization import get_toplevel_entries_query
diff --git a/agents-api/agents_api/autogen/Common.py b/agents-api/agents_api/autogen/Common.py
index cb8d88035..a2d6b99a6 100644
--- a/agents-api/agents_api/autogen/Common.py
+++ b/agents-api/agents_api/autogen/Common.py
@@ -9,6 +9,16 @@
from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel
+class JinjaTemplate(RootModel[str]):
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
+ root: str
+ """
+ A valid jinja template.
+ """
+
+
class Limit(RootModel[int]):
model_config = ConfigDict(
populate_by_name=True,
diff --git a/agents-api/agents_api/autogen/Docs.py b/agents-api/agents_api/autogen/Docs.py
index a7023ddfc..0c1524e48 100644
--- a/agents-api/agents_api/autogen/Docs.py
+++ b/agents-api/agents_api/autogen/Docs.py
@@ -57,6 +57,13 @@ class Doc(BaseModel):
"""
Contents of the document
"""
+ embeddings: Annotated[
+ list[float] | list[list[float]] | None,
+ Field(None, json_schema_extra={"readOnly": True}),
+ ]
+ """
+ Embeddings for the document
+ """
class DocOwner(BaseModel):
diff --git a/agents-api/agents_api/autogen/Sessions.py b/agents-api/agents_api/autogen/Sessions.py
index f167efec5..75e5252cd 100644
--- a/agents-api/agents_api/autogen/Sessions.py
+++ b/agents-api/agents_api/autogen/Sessions.py
@@ -43,6 +43,16 @@ class CreateSessionRequest(BaseModel):
"""
Action to start on context window overflow
"""
+ forward_tool_results: StrictBool | None = None
+ """
+ Whether to forward the tool results to the model when available.
+ "true" => always forward
+ "false" => never forward
+ null => forward if applicable (default)
+
+ If a tool call is made, the tool's output will be sent back to the model as the model's input.
+ If a tool call is not made, the model's output will be returned as is.
+ """
metadata: dict[str, Any] | None = None
@@ -70,6 +80,16 @@ class PatchSessionRequest(BaseModel):
"""
Action to start on context window overflow
"""
+ forward_tool_results: StrictBool | None = None
+ """
+ Whether to forward the tool results to the model when available.
+ "true" => always forward
+ "false" => never forward
+ null => forward if applicable (default)
+
+ If a tool call is made, the tool's output will be sent back to the model as the model's input.
+ If a tool call is not made, the model's output will be returned as is.
+ """
metadata: dict[str, Any] | None = None
@@ -97,6 +117,16 @@ class Session(BaseModel):
"""
Action to start on context window overflow
"""
+ forward_tool_results: StrictBool | None = None
+ """
+ Whether to forward the tool results to the model when available.
+ "true" => always forward
+ "false" => never forward
+ null => forward if applicable (default)
+
+ If a tool call is made, the tool's output will be sent back to the model as the model's input.
+ If a tool call is not made, the model's output will be returned as is.
+ """
id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})]
metadata: dict[str, Any] | None = None
created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})]
@@ -160,6 +190,16 @@ class UpdateSessionRequest(BaseModel):
"""
Action to start on context window overflow
"""
+ forward_tool_results: StrictBool | None = None
+ """
+ Whether to forward the tool results to the model when available.
+ "true" => always forward
+ "false" => never forward
+ null => forward if applicable (default)
+
+ If a tool call is made, the tool's output will be sent back to the model as the model's input.
+ If a tool call is not made, the model's output will be returned as is.
+ """
metadata: dict[str, Any] | None = None
@@ -194,6 +234,16 @@ class CreateOrUpdateSessionRequest(CreateSessionRequest):
"""
Action to start on context window overflow
"""
+ forward_tool_results: StrictBool | None = None
+ """
+ Whether to forward the tool results to the model when available.
+ "true" => always forward
+ "false" => never forward
+ null => forward if applicable (default)
+
+ If a tool call is made, the tool's output will be sent back to the model as the model's input.
+ If a tool call is not made, the model's output will be returned as is.
+ """
metadata: dict[str, Any] | None = None
diff --git a/agents-api/agents_api/autogen/Tasks.py b/agents-api/agents_api/autogen/Tasks.py
index c1e69d492..9dd531c47 100644
--- a/agents-api/agents_api/autogen/Tasks.py
+++ b/agents-api/agents_api/autogen/Tasks.py
@@ -15,7 +15,7 @@
TextOnlyDocSearchRequest,
VectorDocSearchRequest,
)
-from .Tools import CreateToolRequest
+from .Tools import CreateToolRequest, NamedToolChoice
class CaseThen(BaseModel):
@@ -35,10 +35,38 @@ class CaseThen(BaseModel):
| LogStep
| EmbedStep
| SearchStep
+ | YieldStep
| ReturnStep
| SleepStep
| ErrorWorkflowStep
+ | WaitForInputStep
+ )
+ """
+ The steps to run if the condition is true
+ """
+
+
+class CaseThenUpdateItem(BaseModel):
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
+ case: Literal["_"] | str
+ """
+ The condition to evaluate
+ """
+ then: (
+ EvaluateStep
+ | ToolCallStep
+ | PromptStepUpdateItem
+ | GetStep
+ | SetStep
+ | LogStep
+ | EmbedStep
+ | SearchStep
| YieldStep
+ | ReturnStep
+ | SleepStep
+ | ErrorWorkflowStep
| WaitForInputStep
)
"""
@@ -74,6 +102,14 @@ class ContentModel(BaseModel):
"""
+class ContentModel1(Content):
+ pass
+
+
+class ContentModel2(ContentModel):
+ pass
+
+
class CreateTaskRequest(BaseModel):
"""
Payload for creating a task
@@ -94,10 +130,10 @@ class CreateTaskRequest(BaseModel):
| LogStep
| EmbedStep
| SearchStep
+ | YieldStep
| ReturnStep
| SleepStep
| ErrorWorkflowStep
- | YieldStep
| WaitForInputStep
| IfElseWorkflowStep
| SwitchStep
@@ -191,6 +227,32 @@ class ForeachDo(BaseModel):
| LogStep
| EmbedStep
| SearchStep
+ | YieldStep
+ )
+ """
+ The steps to run for each iteration
+ """
+
+
+class ForeachDoUpdateItem(BaseModel):
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
+ in_: Annotated[str, Field(alias="in")]
+ """
+ The variable to iterate over.
+ VALIDATION: Should NOT return more than 1000 elements.
+ """
+ do: (
+ EvaluateStep
+ | ToolCallStep
+ | PromptStepUpdateItem
+ | GetStep
+ | SetStep
+ | LogStep
+ | EmbedStep
+ | SearchStep
+ | YieldStep
)
"""
The steps to run for each iteration
@@ -213,6 +275,20 @@ class ForeachStep(BaseModel):
"""
+class ForeachStepUpdateItem(BaseModel):
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
+ kind_: str | None = None
+ """
+ Discriminator property for BaseWorkflowStep.
+ """
+ foreach: ForeachDoUpdateItem
+ """
+ The steps to run for each iteration
+ """
+
+
class GetStep(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
@@ -250,10 +326,10 @@ class IfElseWorkflowStep(BaseModel):
| LogStep
| EmbedStep
| SearchStep
+ | YieldStep
| ReturnStep
| SleepStep
| ErrorWorkflowStep
- | YieldStep
| WaitForInputStep
)
"""
@@ -268,10 +344,62 @@ class IfElseWorkflowStep(BaseModel):
| LogStep
| EmbedStep
| SearchStep
+ | YieldStep
+ | ReturnStep
+ | SleepStep
+ | ErrorWorkflowStep
+ | WaitForInputStep
+ | None,
+ Field(None, alias="else"),
+ ]
+ """
+ The steps to run if the condition is false
+ """
+
+
+class IfElseWorkflowStepUpdateItem(BaseModel):
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
+ kind_: str | None = None
+ """
+ Discriminator property for BaseWorkflowStep.
+ """
+ if_: Annotated[str, Field(alias="if")]
+ """
+ The condition to evaluate
+ """
+ then: (
+ EvaluateStep
+ | ToolCallStep
+ | PromptStepUpdateItem
+ | GetStep
+ | SetStep
+ | LogStep
+ | EmbedStep
+ | SearchStep
+ | YieldStep
| ReturnStep
| SleepStep
| ErrorWorkflowStep
+ | WaitForInputStep
+ )
+ """
+ The steps to run if the condition is true
+ """
+ else_: Annotated[
+ EvaluateStep
+ | ToolCallStep
+ | PromptStepUpdateItem
+ | GetStep
+ | SetStep
+ | LogStep
+ | EmbedStep
+ | SearchStep
| YieldStep
+ | ReturnStep
+ | SleepStep
+ | ErrorWorkflowStep
| WaitForInputStep
| None,
Field(None, alias="else"),
@@ -336,6 +464,7 @@ class Main(BaseModel):
| LogStep
| EmbedStep
| SearchStep
+ | YieldStep
)
"""
The steps to run for each iteration
@@ -371,12 +500,13 @@ class MainModel(BaseModel):
map: (
EvaluateStep
| ToolCallStep
- | PromptStep
+ | PromptStepUpdateItem
| GetStep
| SetStep
| LogStep
| EmbedStep
| SearchStep
+ | YieldStep
)
"""
The steps to run for each iteration
@@ -417,6 +547,34 @@ class ParallelStep(BaseModel):
| LogStep
| EmbedStep
| SearchStep
+ | YieldStep
+ ],
+ Field(max_length=100),
+ ]
+ """
+ The steps to run in parallel. Max concurrency will depend on the platform.
+ """
+
+
+class ParallelStepUpdateItem(BaseModel):
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
+ kind_: str | None = None
+ """
+ Discriminator property for BaseWorkflowStep.
+ """
+ parallel: Annotated[
+ list[
+ EvaluateStep
+ | ToolCallStep
+ | PromptStepUpdateItem
+ | GetStep
+ | SetStep
+ | LogStep
+ | EmbedStep
+ | SearchStep
+ | YieldStep
],
Field(max_length=100),
]
@@ -438,21 +596,21 @@ class PatchTaskRequest(BaseModel):
list[
EvaluateStep
| ToolCallStep
- | PromptStep
+ | PromptStepUpdateItem
| GetStep
| SetStep
| LogStep
| EmbedStep
| SearchStep
+ | YieldStep
| ReturnStep
| SleepStep
| ErrorWorkflowStep
- | YieldStep
| WaitForInputStep
- | IfElseWorkflowStep
- | SwitchStep
- | ForeachStep
- | ParallelStep
+ | IfElseWorkflowStepUpdateItem
+ | SwitchStepUpdateItem
+ | ForeachStepUpdateItem
+ | ParallelStepUpdateItem
| MainModel
]
| None,
@@ -520,10 +678,72 @@ class PromptStep(BaseModel):
"""
The prompt to run
"""
+ tools: Literal["all"] | list[ToolRef | CreateToolRequest] = []
+ """
+ The tools to use for the prompt
+ """
+ tool_choice: Literal["auto", "none"] | NamedToolChoice | None = None
+ """
+ The tool choice for the prompt
+ """
+ settings: ChatSettings | None = None
+ """
+ Settings for the prompt
+ """
+ unwrap: StrictBool = False
+ """
+ Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content`
+ """
+ forward_tool_results: StrictBool | None = None
+ """
+ Whether to forward the tool results to the model when available.
+ "true" => always forward
+ "false" => never forward
+ null => forward if applicable (default)
+
+ If a tool call is made, the tool's output will be used as the model's input.
+ If a tool call is not made, the model's output will be used as the next step's input.
+ """
+
+
+class PromptStepUpdateItem(BaseModel):
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
+ kind_: str | None = None
+ """
+ Discriminator property for BaseWorkflowStep.
+ """
+ prompt: list[PromptItem] | str
+ """
+ The prompt to run
+ """
+ tools: Literal["all"] | list[ToolRefUpdateItem | CreateToolRequest] = []
+ """
+ The tools to use for the prompt
+ """
+ tool_choice: Literal["auto", "none"] | NamedToolChoice | None = None
+ """
+ The tool choice for the prompt
+ """
settings: ChatSettings | None = None
"""
Settings for the prompt
"""
+ unwrap: StrictBool = False
+ """
+ Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content`
+ """
+ forward_tool_results: StrictBool | None = None
+ """
+ Whether to forward the tool results to the model when available.
+ "true" => always forward
+ "false" => never forward
+ null => forward if applicable (default)
+
+ If a tool call is made, the tool's output will be used as the model's input.
+ If a tool call is not made, the model's output will be used as the next step's input.
+ """
class ReturnStep(BaseModel):
@@ -626,6 +846,20 @@ class SwitchStep(BaseModel):
"""
+class SwitchStepUpdateItem(BaseModel):
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
+ kind_: str | None = None
+ """
+ Discriminator property for BaseWorkflowStep.
+ """
+ switch: Annotated[list[CaseThenUpdateItem], Field(min_length=1)]
+ """
+ The cond tree
+ """
+
+
class Task(BaseModel):
"""
Object describing a Task
@@ -646,10 +880,10 @@ class Task(BaseModel):
| LogStep
| EmbedStep
| SearchStep
+ | YieldStep
| ReturnStep
| SleepStep
| ErrorWorkflowStep
- | YieldStep
| WaitForInputStep
| IfElseWorkflowStep
| SwitchStep
@@ -706,9 +940,7 @@ class ToolCallStep(BaseModel):
"""
The kind of step
"""
- tool: Annotated[
- str, Field(pattern="^(function|integration|system|api_call)\\.(\\w+)$")
- ]
+ tool: Annotated[str, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")]
"""
The tool to run
"""
@@ -718,6 +950,52 @@ class ToolCallStep(BaseModel):
"""
+class ToolRef(BaseModel):
+ """
+ Reference to a tool
+ """
+
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
+ ref: ToolRefById | ToolRefByName
+
+
+class ToolRefById(BaseModel):
+ """
+ Reference to a tool by id
+ """
+
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
+ id: UUID | None = None
+
+
+class ToolRefByName(BaseModel):
+ """
+ Reference to a tool by name
+ """
+
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
+ name: Annotated[str | None, Field(None, max_length=40, pattern="^[^\\W0-9]\\w*$")]
+ """
+ Valid python identifier names
+ """
+
+
+class ToolRefUpdateItem(BaseModel):
+ """
+ Reference to a tool
+ """
+
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
+
+
class UpdateTaskRequest(BaseModel):
"""
Payload for updating a task
@@ -737,10 +1015,10 @@ class UpdateTaskRequest(BaseModel):
| LogStep
| EmbedStep
| SearchStep
+ | YieldStep
| ReturnStep
| SleepStep
| ErrorWorkflowStep
- | YieldStep
| WaitForInputStep
| IfElseWorkflowStep
| SwitchStep
diff --git a/agents-api/agents_api/autogen/Tools.py b/agents-api/agents_api/autogen/Tools.py
index 7664af1af..8227e5759 100644
--- a/agents-api/agents_api/autogen/Tools.py
+++ b/agents-api/agents_api/autogen/Tools.py
@@ -22,9 +22,6 @@ class ChosenToolCall(BaseModel):
Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now)
"""
function: FunctionCallOption | None = None
- integration: Any | None = None
- system: Any | None = None
- api_call: Any | None = None
id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})]
@@ -36,21 +33,16 @@ class CreateToolRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
- type: Literal["function", "integration", "system", "api_call"] = "function"
- """
- Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now)
- """
name: Annotated[str, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")]
"""
Name of the tool (must be unique for this agent and a valid python identifier string )
"""
- function: FunctionDef
+ function: FunctionDef | None = None
"""
The function to call
"""
- integration: Any | None = None
- system: Any | None = None
- api_call: Any | None = None
+ integration: IntegrationDef | None = None
+ system: SystemDef | None = None
class FunctionCallOption(BaseModel):
@@ -75,14 +67,7 @@ class FunctionDef(BaseModel):
"""
DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons.
"""
- description: Annotated[
- str | None,
- Field(
- None,
- max_length=120,
- pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$",
- ),
- ]
+ description: str | None = None
"""
Description of the function
"""
@@ -92,18 +77,94 @@ class FunctionDef(BaseModel):
"""
-class NamedToolChoice(BaseModel):
+class IntegrationDef(BaseModel):
+ """
+ Integration definition
+ """
+
model_config = ConfigDict(
populate_by_name=True,
)
- type: Literal["function", "integration", "system", "api_call"]
+ provider: (
+ Literal[
+ "dummy",
+ "hacker_news",
+ "weather",
+ "wikipedia",
+ "spider",
+ "brave",
+ "browserbase",
+ ]
+ | str
+ )
"""
- Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now)
+ The provider of the integration
+ """
+ method: str | None = None
+ """
+ The specific method of the integration to call
+ """
+ description: str | None = None
+ """
+ Optional description of the integration
+ """
+ setup: dict[str, Any] | None = None
+ """
+ The setup parameters the integration accepts
+ """
+ arguments: dict[str, Any] | None = None
+ """
+ The arguments to pre-apply to the integration call
+ """
+
+
+class IntegrationDefUpdate(BaseModel):
+ """
+ Integration definition
"""
+
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
+ provider: (
+ Literal[
+ "dummy",
+ "hacker_news",
+ "weather",
+ "wikipedia",
+ "spider",
+ "brave",
+ "browserbase",
+ ]
+ | str
+ | None
+ ) = None
+ """
+ The provider of the integration
+ """
+ method: str | None = None
+ """
+ The specific method of the integration to call
+ """
+ description: str | None = None
+ """
+ Optional description of the integration
+ """
+ setup: dict[str, Any] | None = None
+ """
+ The setup parameters the integration accepts
+ """
+ arguments: dict[str, Any] | None = None
+ """
+ The arguments to pre-apply to the integration call
+ """
+
+
+class NamedToolChoice(BaseModel):
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
function: FunctionCallOption | None = None
- integration: Any | None = None
- system: Any | None = None
- api_call: Any | None = None
class PatchToolRequest(BaseModel):
@@ -114,10 +175,6 @@ class PatchToolRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
- type: Literal["function", "integration", "system", "api_call"] = "function"
- """
- Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now)
- """
name: Annotated[str | None, Field(None, max_length=40, pattern="^[^\\W0-9]\\w*$")]
"""
Name of the tool (must be unique for this agent and a valid python identifier string )
@@ -126,30 +183,68 @@ class PatchToolRequest(BaseModel):
"""
The function to call
"""
- integration: Any | None = None
- system: Any | None = None
- api_call: Any | None = None
+ integration: IntegrationDefUpdate | None = None
+ system: SystemDefUpdate | None = None
-class Tool(BaseModel):
+class SystemDef(BaseModel):
+ """
+ System definition
+ """
+
model_config = ConfigDict(
populate_by_name=True,
)
- type: Literal["function", "integration", "system", "api_call"] = "function"
+ call: str
"""
- Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now)
+ The name of the system call
+ """
+ description: str | None = None
+ """
+ Optional description of the system call
+ """
+ arguments: dict[str, Any] | None = None
+ """
+ The arguments to pre-apply to the system call
+ """
+
+
+class SystemDefUpdate(BaseModel):
+ """
+ System definition
+ """
+
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
+ call: str | None = None
+ """
+ The name of the system call
+ """
+ description: str | None = None
+ """
+ Optional description of the system call
+ """
+ arguments: dict[str, Any] | None = None
"""
+ The arguments to pre-apply to the system call
+ """
+
+
+class Tool(BaseModel):
+ model_config = ConfigDict(
+ populate_by_name=True,
+ )
name: Annotated[str, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")]
"""
Name of the tool (must be unique for this agent and a valid python identifier string )
"""
- function: FunctionDef
+ function: FunctionDef | None = None
"""
The function to call
"""
- integration: Any | None = None
- system: Any | None = None
- api_call: Any | None = None
+ integration: IntegrationDef | None = None
+ system: SystemDef | None = None
created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})]
"""
When this resource was created as UTC date-time
@@ -180,21 +275,16 @@ class UpdateToolRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
- type: Literal["function", "integration", "system", "api_call"] = "function"
- """
- Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now)
- """
name: Annotated[str, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")]
"""
Name of the tool (must be unique for this agent and a valid python identifier string )
"""
- function: FunctionDef
+ function: FunctionDef | None = None
"""
The function to call
"""
- integration: Any | None = None
- system: Any | None = None
- api_call: Any | None = None
+ integration: IntegrationDef | None = None
+ system: SystemDef | None = None
class ChosenFunctionCall(ChosenToolCall):
@@ -206,14 +296,3 @@ class ChosenFunctionCall(ChosenToolCall):
"""
The function to call
"""
-
-
-class NamedFunctionChoice(NamedToolChoice):
- model_config = ConfigDict(
- populate_by_name=True,
- )
- type: Literal["function"] = "function"
- function: FunctionCallOption
- """
- The function to call
- """
diff --git a/agents-api/agents_api/autogen/openapi_model.py b/agents-api/agents_api/autogen/openapi_model.py
index 3e329581c..0d9390816 100644
--- a/agents-api/agents_api/autogen/openapi_model.py
+++ b/agents-api/agents_api/autogen/openapi_model.py
@@ -1,10 +1,19 @@
# ruff: noqa: F401, F403, F405
+import ast
from typing import Annotated, Any, Generic, Literal, Self, Type, TypeVar, get_args
from uuid import UUID
+import jinja2
from litellm.utils import _select_tokenizer as select_tokenizer
from litellm.utils import token_counter
-from pydantic import AwareDatetime, Field
+from pydantic import (
+ AwareDatetime,
+ Field,
+ computed_field,
+ field_validator,
+ model_validator,
+ validator,
+)
from ..common.utils.datetime import utcnow
from .Agents import *
@@ -68,6 +77,236 @@ class InputChatMLMessage(Message):
pass
+# Patches
+# -------
+
+
+def type_property(self: BaseModel) -> str:
+ return (
+ "function"
+ if self.function
+ else "integration"
+ if self.integration
+ else "system"
+ if self.system
+ else "api_call"
+ if self.api_call
+ else None
+ )
+
+
+# Patch original Tool class to add 'type' property
+TaskTool.type = computed_field(property(type_property))
+
+# Patch original Tool class to add 'type' property
+Tool.type = computed_field(property(type_property))
+
+# Patch original UpdateToolRequest class to add 'type' property
+UpdateToolRequest.type = computed_field(property(type_property))
+
+# Patch original PatchToolRequest class to add 'type' property
+PatchToolRequest.type = computed_field(property(type_property))
+
+
+# Patch Task Workflow Steps
+# -------------------------
+
+
+def validate_python_expression(expr: str) -> tuple[bool, str]:
+ try:
+ ast.parse(expr)
+ return True, ""
+ except SyntaxError as e:
+ return False, f"SyntaxError in '{expr}': {str(e)}"
+
+
+def validate_jinja_template(template: str) -> tuple[bool, str]:
+ env = jinja2.Environment()
+ try:
+ parsed_template = env.parse(template)
+ for node in parsed_template.body:
+ if isinstance(node, jinja2.nodes.Output):
+ for child in node.nodes:
+ if isinstance(child, jinja2.nodes.Name):
+ # Check if the variable is a valid Python expression
+ is_valid, error = validate_python_expression(child.name)
+ if not is_valid:
+ return (
+ False,
+ f"Invalid Python expression in Jinja template '{template}': {error}",
+ )
+ return True, ""
+ except jinja2.exceptions.TemplateSyntaxError as e:
+ return False, f"TemplateSyntaxError in '{template}': {str(e)}"
+
+
+@field_validator("evaluate")
+def validate_evaluate_expressions(cls, v):
+ for key, expr in v.items():
+ is_valid, error = validate_python_expression(expr)
+ if not is_valid:
+ raise ValueError(f"Invalid Python expression in key '{key}': {error}")
+ return v
+
+
+EvaluateStep.validate_evaluate_expressions = validate_evaluate_expressions
+
+
+@field_validator("arguments")
+def validate_arguments(cls, v):
+ if isinstance(v, dict):
+ for key, expr in v.items():
+ if isinstance(expr, str):
+ is_valid, error = validate_python_expression(expr)
+ if not is_valid:
+ raise ValueError(
+ f"Invalid Python expression in arguments key '{key}': {error}"
+ )
+ return v
+
+
+ToolCallStep.validate_arguments = validate_arguments
+
+
+# Add the new validator function
+@field_validator("prompt")
+def validate_prompt(cls, v):
+ if isinstance(v, str):
+ is_valid, error = validate_jinja_template(v)
+ if not is_valid:
+ raise ValueError(f"Invalid Jinja template in prompt: {error}")
+ elif isinstance(v, list):
+ for item in v:
+ if "content" in item:
+ is_valid, error = validate_jinja_template(item["content"])
+ if not is_valid:
+ raise ValueError(
+ f"Invalid Jinja template in prompt content: {error}"
+ )
+ return v
+
+
+# Patch the original PromptStep class to add the new validator
+PromptStep.validate_prompt = validate_prompt
+
+
+@field_validator("set")
+def validate_set_expressions(cls, v):
+ for key, expr in v.items():
+ is_valid, error = validate_python_expression(expr)
+ if not is_valid:
+ raise ValueError(f"Invalid Python expression in set key '{key}': {error}")
+ return v
+
+
+SetStep.validate_set_expressions = validate_set_expressions
+
+
+@field_validator("log")
+def validate_log_template(cls, v):
+ is_valid, error = validate_jinja_template(v)
+ if not is_valid:
+ raise ValueError(f"Invalid Jinja template in log: {error}")
+ return v
+
+
+LogStep.validate_log_template = validate_log_template
+
+
+@field_validator("return_")
+def validate_return_expressions(cls, v):
+ for key, expr in v.items():
+ is_valid, error = validate_python_expression(expr)
+ if not is_valid:
+ raise ValueError(
+ f"Invalid Python expression in return key '{key}': {error}"
+ )
+ return v
+
+
+ReturnStep.validate_return_expressions = validate_return_expressions
+
+
+@field_validator("arguments")
+def validate_yield_arguments(cls, v):
+ if isinstance(v, dict):
+ for key, expr in v.items():
+ is_valid, error = validate_python_expression(expr)
+ if not is_valid:
+ raise ValueError(
+ f"Invalid Python expression in yield arguments key '{key}': {error}"
+ )
+ return v
+
+
+YieldStep.validate_yield_arguments = validate_yield_arguments
+
+
+@field_validator("if_")
+def validate_if_expression(cls, v):
+ is_valid, error = validate_python_expression(v)
+ if not is_valid:
+ raise ValueError(f"Invalid Python expression in if condition: {error}")
+ return v
+
+
+IfElseWorkflowStep.validate_if_expression = validate_if_expression
+
+
+@field_validator("over")
+def validate_over_expression(cls, v):
+ is_valid, error = validate_python_expression(v)
+ if not is_valid:
+ raise ValueError(f"Invalid Python expression in over: {error}")
+ return v
+
+
+@field_validator("reduce")
+def validate_reduce_expression(cls, v):
+ if v is not None:
+ is_valid, error = validate_python_expression(v)
+ if not is_valid:
+ raise ValueError(f"Invalid Python expression in reduce: {error}")
+ return v
+
+
+MapReduceStep.validate_over_expression = validate_over_expression
+MapReduceStep.validate_reduce_expression = validate_reduce_expression
+
+
+# Patch workflow
+# --------------
+
+_CreateTaskRequest = CreateTaskRequest
+
+CreateTaskRequest.model_config = ConfigDict(
+ **{
+ **_CreateTaskRequest.model_config,
+ "extra": "allow",
+ }
+)
+
+
+@model_validator(mode="after")
+def validate_subworkflows(self):
+ subworkflows = {
+ k: v
+ for k, v in self.model_dump().items()
+ if k not in _CreateTaskRequest.model_fields
+ }
+
+ for workflow_name, workflow_definition in subworkflows.items():
+ try:
+ WorkflowType.model_validate(workflow_definition)
+ setattr(self, workflow_name, WorkflowType(workflow_definition))
+ except Exception as e:
+ raise ValueError(f"Invalid subworkflow '{workflow_name}': {str(e)}")
+ return self
+
+
+CreateTaskRequest.validate_subworkflows = validate_subworkflows
+
+
# Custom types (not generated correctly)
# --------------------------------------
@@ -200,6 +439,7 @@ class TaskSpec(_Task):
model_config = ConfigDict(extra="ignore")
workflows: list[Workflow]
+ tools: list[TaskToolDef]
# Remove main field from the model
main: None = None
@@ -227,17 +467,28 @@ class Task(_Task):
# Patch some models to allow extra fields
# --------------------------------------
-
-_CreateTaskRequest = CreateTaskRequest
-
-
-class CreateTaskRequest(_CreateTaskRequest):
- model_config = ConfigDict(
- **{
- **_CreateTaskRequest.model_config,
- "extra": "allow",
- }
- )
+WorkflowType = RootModel[
+ list[
+ EvaluateStep
+ | ToolCallStep
+ | PromptStep
+ | GetStep
+ | SetStep
+ | LogStep
+ | EmbedStep
+ | SearchStep
+ | ReturnStep
+ | SleepStep
+ | ErrorWorkflowStep
+ | YieldStep
+ | WaitForInputStep
+ | IfElseWorkflowStep
+ | SwitchStep
+ | ForeachStep
+ | ParallelStep
+ | MapReduceStep
+ ]
+]
CreateOrUpdateTaskRequest = CreateTaskRequest
diff --git a/agents-api/agents_api/clients/integrations.py b/agents-api/agents_api/clients/integrations.py
new file mode 100644
index 000000000..5423fb664
--- /dev/null
+++ b/agents-api/agents_api/clients/integrations.py
@@ -0,0 +1,31 @@
+from typing import Any, List
+
+from beartype import beartype
+from httpx import AsyncClient
+
+from ..env import integration_service_url
+
+__all__: List[str] = ["run_integration_service"]
+
+
+@beartype
+async def run_integration_service(
+ *,
+ provider: str,
+ arguments: dict,
+ setup: dict | None = None,
+ method: str | None = None,
+) -> Any:
+ slug = f"{provider}/{method}" if method else provider
+ url = f"{integration_service_url}/execute/{slug}"
+
+ setup = setup or None
+
+ async with AsyncClient() as client:
+ response = await client.post(
+ url,
+ json={"arguments": arguments, "setup": setup},
+ )
+ response.raise_for_status()
+
+ return response.json()
diff --git a/agents-api/agents_api/clients/worker/worker.py b/agents-api/agents_api/clients/worker/worker.py
index 1deb8d1c3..8befa3080 100644
--- a/agents-api/agents_api/clients/worker/worker.py
+++ b/agents-api/agents_api/clients/worker/worker.py
@@ -1,7 +1,6 @@
import httpx
-from agents_api.env import temporal_worker_url
-
+from ...env import temporal_worker_url
from .types import (
MemoryManagementTask,
MemoryManagementTaskArgs,
diff --git a/agents-api/agents_api/common/exceptions/__init__.py b/agents-api/agents_api/common/exceptions/__init__.py
index a38a546a2..571691082 100644
--- a/agents-api/agents_api/common/exceptions/__init__.py
+++ b/agents-api/agents_api/common/exceptions/__init__.py
@@ -1,12 +1,14 @@
"""
-This module defines a structured hierarchy of custom exceptions for the agents API, aimed at handling specific error scenarios encountered across various operations. These exceptions are designed to provide clear, actionable error messages and appropriate HTTP status codes, enhancing the API's robustness and usability.
+This module defines a structured hierarchy of custom exceptions for the agents API, aimed at handling specific error scenarios encountered across various operations.
+These exceptions are designed to provide clear, actionable error messages and appropriate HTTP status codes, enhancing the API's robustness and usability.
Exceptions are organized into categories based on the domain of operation, including:
- Agent-related operations (agents.py): Exceptions such as `AgentNotFoundError` and `AgentToolNotFoundError` cater to errors specific to agent management.
- Session management (sessions.py): Defines exceptions like `SessionNotFoundError` for handling errors related to session operations.
- User interactions (users.py): Includes exceptions such as `UserNotFoundError` for addressing issues encountered during user-related operations.
-All custom exceptions extend from `BaseCommonException`, which encapsulates common attributes and behavior, including the error message and HTTP status code. This structured approach to exception handling facilitates precise and meaningful error feedback to API consumers, thereby improving the overall developer experience.
+All custom exceptions extend from `BaseCommonException`, which encapsulates common attributes and behavior, including the error message and HTTP status code.
+This structured approach to exception handling facilitates precise and meaningful error feedback to API consumers, thereby improving the overall developer experience.
"""
diff --git a/agents-api/agents_api/common/exceptions/agents.py b/agents-api/agents_api/common/exceptions/agents.py
index c412eba35..e58f25104 100644
--- a/agents-api/agents_api/common/exceptions/agents.py
+++ b/agents-api/agents_api/common/exceptions/agents.py
@@ -12,7 +12,12 @@ class BaseAgentException(BaseCommonException):
class AgentNotFoundError(BaseAgentException):
- """Exception raised when a requested agent cannot be found."""
+ """
+ Exception raised when a requested agent cannot be found.
+ Attributes:
+ developer_id (UUID | str): The ID of the developer attempting the operation.
+ agent_id (UUID | str): The ID of the agent that was not found.
+ """
def __init__(self, developer_id: UUID | str, agent_id: UUID | str):
# Initialize the exception with a message indicating the missing agent and developer ID.
@@ -23,7 +28,12 @@ def __init__(self, developer_id: UUID | str, agent_id: UUID | str):
class AgentToolNotFoundError(BaseAgentException):
- """Exception raised when a requested tool associated with an agent cannot be found."""
+ """
+ Exception raised when a requested tool associated with an agent cannot be found.
+ Attributes:
+ agent_id (UUID | str): The ID of the agent that was not found.
+ tool_id (UUID | str): The ID of the tool that was not found.
+ """
def __init__(self, agent_id: UUID | str, tool_id: UUID | str):
# Initialize the exception with a message indicating the missing tool and agent ID.
@@ -33,7 +43,12 @@ def __init__(self, agent_id: UUID | str, tool_id: UUID | str):
class AgentDocNotFoundError(BaseAgentException):
- """Exception raised when a requested document associated with an agent cannot be found."""
+ """
+ Exception raised when a requested document associated with an agent cannot be found.
+ Attributes:
+ agent_id (UUID | str): The ID of the agent that was not found.
+ doc_id (UUID | str): The ID of the document that was not found.
+ """
def __init__(self, agent_id: UUID | str, doc_id: UUID | str):
# Initialize the exception with a message indicating the missing document and agent ID.
@@ -43,6 +58,8 @@ def __init__(self, agent_id: UUID | str, doc_id: UUID | str):
class AgentModelNotValid(BaseAgentException):
+ """Exception raised when requested model is not recognized."""
+
def __init__(self, model: str, all_models: list[str]):
super().__init__(
f"Unknown model: {model}. Please provide a valid model name."
@@ -52,6 +69,8 @@ def __init__(self, model: str, all_models: list[str]):
class MissingAgentModelAPIKeyError(BaseAgentException):
+ """Exception raised when API key for requested model is missing."""
+
def __init__(self, model: str):
super().__init__(
f"API key missing for model: {model}. Please provide a valid API key in the configuration",
diff --git a/agents-api/agents_api/common/exceptions/sessions.py b/agents-api/agents_api/common/exceptions/sessions.py
index d6c04aff5..6e9941d43 100644
--- a/agents-api/agents_api/common/exceptions/sessions.py
+++ b/agents-api/agents_api/common/exceptions/sessions.py
@@ -8,29 +8,24 @@
from . import BaseCommonException
-"""
-Base exception class for session-related errors.
-
-This class serves as a base for all session-related exceptions, allowing for a structured exception handling approach specific to session operations.
-"""
-
class BaseSessionException(BaseCommonException):
- pass
-
+ """
+ Base exception class for session-related errors.
-"""
-Exception raised when a session cannot be found.
+ This class serves as a base for all session-related exceptions, allowing for a structured exception handling approach specific to session operations.
+ """
-This exception is used to indicate that a specific session, identified by its session ID, does not exist or is not accessible for the given developer.
-"""
+ pass
class SessionNotFoundError(BaseSessionException):
"""
- Initializes a new instance of the SessionNotFoundError.
+ Exception raised when a session cannot be found.
+
+ This exception is used to indicate that a specific session, identified by its session ID, does not exist or is not accessible for the given developer.
- Args:
+ Attributes:
developer_id (UUID | str): The unique identifier of the developer attempting to access the session.
session_id (UUID | str): The unique identifier of the session that was not found.
"""
diff --git a/agents-api/agents_api/common/exceptions/users.py b/agents-api/agents_api/common/exceptions/users.py
index 2f7f58ed6..cf4e995ad 100644
--- a/agents-api/agents_api/common/exceptions/users.py
+++ b/agents-api/agents_api/common/exceptions/users.py
@@ -6,13 +6,18 @@
class BaseUserException(BaseCommonException):
- """Base exception class for user-related errors. This class serves as a parent for all user-related exceptions to facilitate catching errors specific to user operations."""
+ """
+ Base exception class for user-related errors.
+
+ This class serves as a parent for all user-related exceptions to facilitate catching errors specific to user operations.
+ """
pass
class UserNotFoundError(BaseUserException):
- """Exception raised when a requested user cannot be found.
+ """
+ Exception raised when a requested user cannot be found.
Attributes:
developer_id (UUID | str): The ID of the developer attempting the operation.
user_id (UUID | str): The ID of the user that was not found.
@@ -27,7 +32,8 @@ def __init__(self, developer_id: UUID | str, user_id: UUID | str):
class UserDocNotFoundError(BaseUserException):
- """Exception raised when a specific document related to a user cannot be found.
+ """
+ Exception raised when a specific document related to a user cannot be found.
Attributes:
user_id (UUID | str): The ID of the user associated with the document.
doc_id (UUID | str): The ID of the document that was not found.
diff --git a/agents-api/agents_api/common/protocol/agents.py b/agents-api/agents_api/common/protocol/agents.py
index 222f91f01..89f7f4a2d 100644
--- a/agents-api/agents_api/common/protocol/agents.py
+++ b/agents-api/agents_api/common/protocol/agents.py
@@ -4,17 +4,23 @@
class AgentDefaultSettings(BaseModel):
"""Defines default settings for an agent. These settings control various aspects of the agent's behavior during operation."""
- """Temperature setting influencing the randomness of the agent's responses. Higher values lead to more random responses."""
temperature: float = 0.0
- """Top-p sampling setting controlling the nucleus of the probability distribution to sample from."""
+ """Temperature setting influencing the randomness of the agent's responses. Higher values lead to more random responses."""
+
top_p: float = 1.0
- """Penalty applied to discourage repetition in the agent's responses."""
+ """Top-p sampling setting controlling the nucleus of the probability distribution to sample from."""
+
repetition_penalty: float = 1.0
- """Penalty for longer responses, encouraging more concise outputs."""
+ """Penalty applied to discourage repetition in the agent's responses."""
+
length_penalty: float = 1.0
- """Penalty applied based on the presence of certain words, influencing content generation."""
+ """Penalty for longer responses, encouraging more concise outputs."""
+
presence_penalty: float = 0.0
- """Penalty that decreases the likelihood of frequently used words in the agent's responses."""
+ """Penalty applied based on the presence of certain words, influencing content generation."""
+
frequency_penalty: float = 0.0
- """Minimum probability threshold for including a word in the agent's response."""
+ """Penalty that decreases the likelihood of frequently used words in the agent's responses."""
+
min_p: float = 0.01
+ """Minimum probability threshold for including a word in the agent's response."""
diff --git a/agents-api/agents_api/common/protocol/tasks.py b/agents-api/agents_api/common/protocol/tasks.py
index 81a04bb4a..bbb5c28d3 100644
--- a/agents-api/agents_api/common/protocol/tasks.py
+++ b/agents-api/agents_api/common/protocol/tasks.py
@@ -72,7 +72,7 @@
"error": [],
"cancelled": [],
# Intermediate states
- "wait": ["resume", "cancelled", "finish", "finish_branch"],
+ "wait": ["resume", "step", "cancelled", "finish", "finish_branch"],
"resume": [
"wait",
"error",
@@ -126,7 +126,7 @@ class ExecutionInput(BaseModel):
execution: Execution
task: TaskSpecDef
agent: Agent
- tools: list[Tool]
+ agent_tools: list[Tool]
arguments: dict[str, Any]
# Not used at the moment
@@ -139,6 +139,23 @@ class StepContext(BaseModel):
inputs: list[Any]
cursor: TransitionTarget
+ @computed_field
+ @property
+ def tools(self) -> list[Tool]:
+ execution_input = self.execution_input
+ task = execution_input.task
+ agent_tools = execution_input.agent_tools
+
+ if not task.inherit_tools:
+ return task.tools
+
+ # Remove duplicates from agent_tools
+ filtered_tools = [
+ t for t in agent_tools if t.name not in map(lambda x: x.name, task.tools)
+ ]
+
+ return filtered_tools + task.tools
+
@computed_field
@property
def outputs(self) -> list[dict[str, Any]]: # included in dump
@@ -201,19 +218,28 @@ def task_to_spec(
task: Task | CreateTaskRequest | UpdateTaskRequest | PatchTaskRequest, **model_opts
) -> TaskSpecDef | PartialTaskSpecDef:
task_data = task.model_dump(**model_opts)
- main = task_data.pop("main")
- workflows = [Workflow(name="main", steps=main)]
+ if "tools" in task_data:
+ del task_data["tools"]
+
+ tools = []
+ for tool in task.tools:
+ tool_spec = getattr(tool, tool.type)
- for k in list(task_data.keys()):
- if k in TaskSpec.model_fields.keys():
- continue
+ tools.append(
+ TaskToolDef(
+ type=tool.type,
+ spec=tool_spec.model_dump(),
+ **tool.model_dump(exclude={"type"}),
+ )
+ )
- steps = task_data.pop(k)
- workflows.append(Workflow(name=k, steps=steps))
+ workflows = [Workflow(name="main", steps=task_data.pop("main"))]
- tools = task_data.pop("tools", [])
- tools = [TaskToolDef(spec=tool.pop(tool["type"]), **tool) for tool in tools]
+ for key, steps in list(task_data.items()):
+ if key not in TaskSpec.model_fields:
+ workflows.append(Workflow(name=key, steps=steps))
+ del task_data[key]
cls = PartialTaskSpecDef if isinstance(task, PatchTaskRequest) else TaskSpecDef
diff --git a/agents-api/agents_api/common/utils/json.py b/agents-api/agents_api/common/utils/json.py
index 3157af9c8..f1b82742a 100644
--- a/agents-api/agents_api/common/utils/json.py
+++ b/agents-api/agents_api/common/utils/json.py
@@ -11,28 +11,35 @@ class CustomJSONEncoder(json.JSONEncoder):
"""A custom JSON encoder subclass that handles None values and UUIDs for JSON serialization. It allows specifying a default value for None objects during initialization."""
def __init__(self, *args, **kwargs) -> None:
- """Initializes the custom JSON encoder.
+ """
+ Initializes the custom JSON encoder.
Parameters:
*args: Variable length argument list.
**kwargs: Arbitrary keyword arguments. The 'default_empty_value' keyword argument specifies the default value to use for None objects during serialization.
"""
+
self._default_empty_value = kwargs.pop("default_empty_value")
super().__init__(*args, **kwargs)
def encode(self, o) -> str:
- """Encodes the given object into a JSON formatted string.
+ """
+ Encodes the given object into a JSON formatted string.
Parameters:
o: The object to encode.
- Returns: A JSON formatted string representing 'o'."""
+ Returns: A JSON formatted string representing 'o'.
+ """
+
# Use the overridden default method for serialization before encoding
return super().encode(self.default(o))
def default(self, obj) -> Any:
- """Provides a default serialization for objects that the standard JSON encoder cannot serialize.
+ """
+ Provides a default serialization for objects that the standard JSON encoder cannot serialize.
Parameters:
obj: The object to serialize.
Returns: A serializable object or raises a TypeError if the object is not serializable.
"""
+
if obj is None:
return self._default_empty_value
@@ -46,12 +53,15 @@ def default(self, obj) -> Any:
def dumps(obj: Any, default_empty_value="", cls=None) -> str:
- """Serializes an object to a JSON formatted string using the custom JSON encoder.
+ """
+ Serializes an object to a JSON formatted string using the custom JSON encoder.
Parameters:
obj: The object to serialize.
default_empty_value: The default value to use for None objects.
cls: The custom encoder class to use, defaults to CustomJSONEncoder.
- Returns: A JSON formatted string."""
+ Returns: A JSON formatted string.
+ """
+
return json.dumps(
obj, cls=cls or CustomJSONEncoder, default_empty_value=default_empty_value
)
diff --git a/agents-api/agents_api/common/utils/messages.py b/agents-api/agents_api/common/utils/messages.py
index fd971296c..c94808324 100644
--- a/agents-api/agents_api/common/utils/messages.py
+++ b/agents-api/agents_api/common/utils/messages.py
@@ -1,7 +1,7 @@
import json
from typing import cast
-from agents_api.autogen.openapi_model import (
+from ...autogen.openapi_model import (
ChatMLImageContentPart,
ChatMLTextContentPart,
)
diff --git a/agents-api/agents_api/env.py b/agents-api/agents_api/env.py
index daee79172..42b2ce8d2 100644
--- a/agents-api/agents_api/env.py
+++ b/agents-api/agents_api/env.py
@@ -68,6 +68,13 @@
embedding_dimensions: int = env.int("EMBEDDING_DIMENSIONS", default=1024)
+# Integration service
+# -------------------
+integration_service_url: str = env.str(
+ "INTEGRATION_SERVICE_URL", default="http://0.0.0.0:8000"
+)
+
+
# Temporal
# --------
temporal_worker_url: str = env.str("TEMPORAL_WORKER_URL", default="localhost:7233")
diff --git a/agents-api/agents_api/exceptions.py b/agents-api/agents_api/exceptions.py
index fbb8f00f8..4fbf8a2b9 100644
--- a/agents-api/agents_api/exceptions.py
+++ b/agents-api/agents_api/exceptions.py
@@ -3,11 +3,15 @@ class AgentsBaseException(Exception):
class ModelNotSupportedError(AgentsBaseException):
+ """Exception raised when model is not supported."""
+
def __init__(self, model_name) -> None:
super().__init__(f"model {model_name} is not supported")
class PromptTooBigError(AgentsBaseException):
+ """Exception raised when prompt is too big."""
+
def __init__(self, token_count, max_tokens) -> None:
super().__init__(
f"prompt is too big, {token_count} tokens provided, exceeds maximum of {max_tokens}"
@@ -15,5 +19,7 @@ def __init__(self, token_count, max_tokens) -> None:
class UnknownTokenizerError(AgentsBaseException):
+ """Exception raised when tokenizer is unknown."""
+
def __init__(self) -> None:
super().__init__("unknown tokenizer")
diff --git a/agents-api/agents_api/models/agent/create_agent.py b/agents-api/agents_api/models/agent/create_agent.py
index 73be4ec77..98daab540 100644
--- a/agents-api/agents_api/models/agent/create_agent.py
+++ b/agents-api/agents_api/models/agent/create_agent.py
@@ -30,11 +30,24 @@
lambda e: isinstance(e, QueryException)
and "asserted to return some results, but returned none"
in str(e): lambda *_: HTTPException(
- detail="developer not found", status_code=403
+ detail="Developer not found. Please ensure the provided auth token (which refers to your developer_id) is valid and the developer has the necessary permissions to create an agent.",
+ status_code=403,
+ ),
+ QueryException: partialclass(
+ HTTPException,
+ status_code=400,
+ detail="A database query failed to return the expected results. This might occur if the requested resource doesn't exist or your query parameters are incorrect.",
+ ),
+ ValidationError: partialclass(
+ HTTPException,
+ status_code=400,
+ detail="Input validation failed. Please check the provided data for missing or incorrect fields, and ensure it matches the required format.",
+ ),
+ TypeError: partialclass(
+ HTTPException,
+ status_code=400,
+ detail="A type mismatch occurred. This likely means the data provided is of an incorrect type (e.g., string instead of integer). Please review the input and try again.",
),
- QueryException: partialclass(HTTPException, status_code=400),
- ValidationError: partialclass(HTTPException, status_code=400),
- TypeError: partialclass(HTTPException, status_code=400),
}
)
@wrap_in_class(
@@ -55,12 +68,12 @@ def create_agent(
Constructs and executes a datalog query to create a new agent in the database.
Parameters:
- - agent_id (UUID | None): The unique identifier for the agent.
- - developer_id (UUID): The unique identifier for the developer creating the agent.
- - data (CreateAgentRequest): The data for the new agent.
+ agent_id (UUID | None): The unique identifier for the agent.
+ developer_id (UUID): The unique identifier for the developer creating the agent.
+ data (CreateAgentRequest): The data for the new agent.
Returns:
- - Agent: The newly created agent record.
+ Agent: The newly created agent record.
"""
agent_id = agent_id or uuid4()
diff --git a/agents-api/agents_api/models/agent/create_or_update_agent.py b/agents-api/agents_api/models/agent/create_or_update_agent.py
index 156c8ae61..3902c1bb5 100644
--- a/agents-api/agents_api/models/agent/create_or_update_agent.py
+++ b/agents-api/agents_api/models/agent/create_or_update_agent.py
@@ -27,9 +27,21 @@
@rewrap_exceptions(
{
- QueryException: partialclass(HTTPException, status_code=400),
- ValidationError: partialclass(HTTPException, status_code=400),
- TypeError: partialclass(HTTPException, status_code=400),
+ QueryException: partialclass(
+ HTTPException,
+ status_code=400,
+ detail="A database query failed to return the expected results. This might occur if the requested resource doesn't exist or your query parameters are incorrect.",
+ ),
+ ValidationError: partialclass(
+ HTTPException,
+ status_code=400,
+ detail="Input validation failed. Please check the provided data for missing or incorrect fields, and ensure it matches the required format.",
+ ),
+ TypeError: partialclass(
+ HTTPException,
+ status_code=400,
+ detail="A type mismatch occurred. This likely means the data provided is of an incorrect type (e.g., string instead of integer). Please review the input and try again.",
+ ),
}
)
@wrap_in_class(
@@ -47,18 +59,18 @@ def create_or_update_agent(
Constructs and executes a datalog query to create a new agent in the database.
Parameters:
- - agent_id (UUID): The unique identifier for the agent.
- - developer_id (UUID): The unique identifier for the developer creating the agent.
- - name (str): The name of the agent.
- - about (str): A description of the agent.
- - instructions (list[str], optional): A list of instructions for using the agent. Defaults to an empty list.
- - model (str, optional): The model identifier for the agent. Defaults to "gpt-4o".
- - metadata (dict, optional): A dictionary of metadata for the agent. Defaults to an empty dict.
- - default_settings (dict, optional): A dictionary of default settings for the agent. Defaults to an empty dict.
- - client (CozoClient, optional): The CozoDB client instance to use for the query. Defaults to a preconfigured client instance.
+ agent_id (UUID): The unique identifier for the agent.
+ developer_id (UUID): The unique identifier for the developer creating the agent.
+ name (str): The name of the agent.
+ about (str): A description of the agent.
+ instructions (list[str], optional): A list of instructions for using the agent. Defaults to an empty list.
+ model (str, optional): The model identifier for the agent. Defaults to "gpt-4o".
+ metadata (dict, optional): A dictionary of metadata for the agent. Defaults to an empty dict.
+ default_settings (dict, optional): A dictionary of default settings for the agent. Defaults to an empty dict.
+ client (CozoClient, optional): The CozoDB client instance to use for the query. Defaults to a preconfigured client instance.
Returns:
- Agent: The newly created agent record.
+ Agent: The newly created agent record.
"""
# Extract the agent data from the payload
diff --git a/agents-api/agents_api/models/agent/delete_agent.py b/agents-api/agents_api/models/agent/delete_agent.py
index 926007bdf..60de66292 100644
--- a/agents-api/agents_api/models/agent/delete_agent.py
+++ b/agents-api/agents_api/models/agent/delete_agent.py
@@ -30,11 +30,24 @@
lambda e: isinstance(e, QueryException)
and "Developer does not own resource"
in e.resp["display"]: lambda *_: HTTPException(
- detail="developer not found or doesnt own resource", status_code=404
+ detail="The specified developer does not own the requested resource. Please verify the ownership or check if the developer ID is correct.",
+ status_code=404,
+ ),
+ QueryException: partialclass(
+ HTTPException,
+ status_code=400,
+ detail="A database query failed to return the expected results. This might occur if the requested resource doesn't exist or your query parameters are incorrect.",
+ ),
+ ValidationError: partialclass(
+ HTTPException,
+ status_code=400,
+ detail="Input validation failed. Please check the provided data for missing or incorrect fields, and ensure it matches the required format.",
+ ),
+ TypeError: partialclass(
+ HTTPException,
+ status_code=400,
+ detail="A type mismatch occurred. This likely means the data provided is of an incorrect type (e.g., string instead of integer). Please review the input and try again.",
),
- QueryException: partialclass(HTTPException, status_code=400),
- ValidationError: partialclass(HTTPException, status_code=400),
- TypeError: partialclass(HTTPException, status_code=400),
}
)
@wrap_in_class(
@@ -54,12 +67,12 @@ def delete_agent(*, developer_id: UUID, agent_id: UUID) -> tuple[list[str], dict
Constructs and returns a datalog query for deleting an agent and its default settings from the database.
Parameters:
- - developer_id (UUID): The UUID of the developer owning the agent.
- - agent_id (UUID): The UUID of the agent to be deleted.
- - client (CozoClient, optional): An instance of the CozoClient to execute the query.
+ developer_id (UUID): The UUID of the developer owning the agent.
+ agent_id (UUID): The UUID of the agent to be deleted.
+ client (CozoClient, optional): An instance of the CozoClient to execute the query.
Returns:
- - ResourceDeletedResponse: The response indicating the deletion of the agent.
+ ResourceDeletedResponse: The response indicating the deletion of the agent.
"""
queries = [
diff --git a/agents-api/agents_api/models/agent/get_agent.py b/agents-api/agents_api/models/agent/get_agent.py
index 956fa46a5..bdae85fcb 100644
--- a/agents-api/agents_api/models/agent/get_agent.py
+++ b/agents-api/agents_api/models/agent/get_agent.py
@@ -46,12 +46,12 @@ def get_agent(*, developer_id: UUID, agent_id: UUID) -> tuple[list[str], dict]:
This function constructs and executes a datalog query to retrieve information about a specific agent, including its default settings, based on the provided agent_id and developer_id.
Parameters:
- - developer_id (UUID): The unique identifier for the developer.
- - agent_id (UUID): The unique identifier for the agent.
- - client (CozoClient, optional): The database client used to execute the query.
+ developer_id (UUID): The unique identifier for the developer.
+ agent_id (UUID): The unique identifier for the agent.
+ client (CozoClient, optional): The database client used to execute the query.
Returns:
- - Agent
+ Agent
"""
# Constructing a datalog query to retrieve agent details and default settings.
# The query uses input parameters for agent_id and developer_id to filter the results.
@@ -101,6 +101,8 @@ def get_agent(*, developer_id: UUID, agent_id: UUID) -> tuple[list[str], dict]:
"min_p": min_p,
"preset": preset,
}
+
+ :limit 1
"""
queries = [
diff --git a/agents-api/agents_api/models/agent/patch_agent.py b/agents-api/agents_api/models/agent/patch_agent.py
index 72fdc7811..364d1a974 100644
--- a/agents-api/agents_api/models/agent/patch_agent.py
+++ b/agents-api/agents_api/models/agent/patch_agent.py
@@ -46,13 +46,13 @@ def patch_agent(
"""Patches agent data based on provided updates.
Parameters:
- agent_id (UUID): The unique identifier for the agent.
- developer_id (UUID): The unique identifier for the developer.
- default_settings (dict, optional): Default settings to apply to the agent.
- **update_data: Arbitrary keyword arguments representing data to update.
+ agent_id (UUID): The unique identifier for the agent.
+ developer_id (UUID): The unique identifier for the developer.
+ default_settings (dict, optional): Default settings to apply to the agent.
+ **update_data: Arbitrary keyword arguments representing data to update.
Returns:
- ResourceUpdatedResponse: The updated agent data.
+ ResourceUpdatedResponse: The updated agent data.
"""
update_data = data.model_dump(exclude_unset=True)
diff --git a/agents-api/agents_api/models/agent/update_agent.py b/agents-api/agents_api/models/agent/update_agent.py
index be7e9ea21..992bb9796 100644
--- a/agents-api/agents_api/models/agent/update_agent.py
+++ b/agents-api/agents_api/models/agent/update_agent.py
@@ -46,13 +46,13 @@ def update_agent(
Constructs and executes a datalog query to update an agent and its default settings in the 'cozodb' database.
Parameters:
- - agent_id (UUID): The unique identifier of the agent to be updated.
- - developer_id (UUID): The unique identifier of the developer associated with the agent.
- - data (UpdateAgentRequest): The request payload containing the updated agent data.
- - client (CozoClient, optional): The database client used to execute the query. Defaults to a pre-configured client instance.
+ agent_id (UUID): The unique identifier of the agent to be updated.
+ developer_id (UUID): The unique identifier of the developer associated with the agent.
+ data (UpdateAgentRequest): The request payload containing the updated agent data.
+ client (CozoClient, optional): The database client used to execute the query. Defaults to a pre-configured client instance.
Returns:
- ResourceUpdatedResponse: The updated agent data.
+ ResourceUpdatedResponse: The updated agent data.
"""
default_settings = (
data.default_settings.model_dump(exclude_none=True)
diff --git a/agents-api/agents_api/models/chat/gather_messages.py b/agents-api/agents_api/models/chat/gather_messages.py
index c1683653f..b6bfdc217 100644
--- a/agents-api/agents_api/models/chat/gather_messages.py
+++ b/agents-api/agents_api/models/chat/gather_messages.py
@@ -6,8 +6,7 @@
from pycozo.client import QueryException
from pydantic import ValidationError
-from agents_api.autogen.Chat import ChatInput
-
+from ...autogen.Chat import ChatInput
from ...autogen.openapi_model import DocReference, History
from ...clients import litellm
from ...common.protocol.developers import Developer
diff --git a/agents-api/agents_api/models/chat/get_cached_response.py b/agents-api/agents_api/models/chat/get_cached_response.py
index 5440a6703..368c88567 100644
--- a/agents-api/agents_api/models/chat/get_cached_response.py
+++ b/agents-api/agents_api/models/chat/get_cached_response.py
@@ -9,6 +9,7 @@ def get_cached_response(key: str) -> tuple[str, dict]:
query = """
input[key] <- [[$key]]
?[key, value] := input[key], *session_cache{key, value}
+ :limit 1
"""
return (query, {"key": key})
diff --git a/agents-api/agents_api/models/chat/prepare_chat_context.py b/agents-api/agents_api/models/chat/prepare_chat_context.py
index 4d521acb0..9be2d64aa 100644
--- a/agents-api/agents_api/models/chat/prepare_chat_context.py
+++ b/agents-api/agents_api/models/chat/prepare_chat_context.py
@@ -119,6 +119,8 @@ def prepare_chat_context(
?[{', '.join(session_data_fields)}, toolsets] :=
*_session_data_json {{ {', '.join(session_data_fields)} }},
*_toolsets_json {{ toolsets }}
+
+ :limit 1
"""
queries = [
diff --git a/agents-api/agents_api/models/developer/get_developer.py b/agents-api/agents_api/models/developer/get_developer.py
index 31ade5334..0ae5421aa 100644
--- a/agents-api/agents_api/models/developer/get_developer.py
+++ b/agents-api/agents_api/models/developer/get_developer.py
@@ -67,6 +67,8 @@ def get_developer(
created_at,
updated_at,
}
+
+ :limit 1
"""
return (query, {"developer_id": developer_id})
diff --git a/agents-api/agents_api/models/docs/create_doc.py b/agents-api/agents_api/models/docs/create_doc.py
index ee26df484..1c667bd51 100644
--- a/agents-api/agents_api/models/docs/create_doc.py
+++ b/agents-api/agents_api/models/docs/create_doc.py
@@ -50,10 +50,10 @@ def create_doc(
Constructs and executes a datalog query to create a new document and its associated snippets in the 'cozodb' database.
Parameters:
- - owner_type (Literal["user", "agent"]): The type of the owner of the document.
- - owner_id (UUID): The UUID of the document owner.
- - id (UUID): The UUID of the document to be created.
- - data (CreateDocRequest): The content of the document.
+ owner_type (Literal["user", "agent"]): The type of the owner of the document.
+ owner_id (UUID): The UUID of the document owner.
+ id (UUID): The UUID of the document to be created.
+ data (CreateDocRequest): The content of the document.
"""
doc_id = str(doc_id or uuid4())
diff --git a/agents-api/agents_api/models/docs/embed_snippets.py b/agents-api/agents_api/models/docs/embed_snippets.py
index e810d0379..8d8ae1e62 100644
--- a/agents-api/agents_api/models/docs/embed_snippets.py
+++ b/agents-api/agents_api/models/docs/embed_snippets.py
@@ -49,9 +49,9 @@ def embed_snippets(
"""Embeds document snippets in the cozodb database.
Parameters:
- doc_id (UUID): The unique identifier for the document.
- snippet_indices (list[int]): Indices of the snippets in the document.
- embeddings (list[list[float]]): Embedding vectors for the snippets.
+ doc_id (UUID): The unique identifier for the document.
+ snippet_indices (list[int]): Indices of the snippets in the document.
+ embeddings (list[list[float]]): Embedding vectors for the snippets.
"""
doc_id = str(doc_id)
@@ -81,6 +81,7 @@ def embed_snippets(
}},
index > {max(snippet_indices)}
+ :limit 1
:assert none
"""
diff --git a/agents-api/agents_api/models/docs/get_doc.py b/agents-api/agents_api/models/docs/get_doc.py
index 84cd181ec..e81084985 100644
--- a/agents-api/agents_api/models/docs/get_doc.py
+++ b/agents-api/agents_api/models/docs/get_doc.py
@@ -37,6 +37,7 @@
one=True,
transform=lambda d: {
"content": [s[1] for s in sorted(d["snippet_data"], key=lambda x: x[0])],
+ "embeddings": [s[2] for s in sorted(d["snippet_data"], key=lambda x: x[0])],
**d,
},
)
@@ -68,8 +69,9 @@ def get_doc(
doc_id,
index,
content,
+ embedding,
},
- snippet_data = [index, content]
+ snippet_data = [index, content, embedding]
?[
id,
@@ -85,6 +87,8 @@ def get_doc(
metadata,
},
snippets[snippet_data]
+
+ :limit 1
"""
queries = [
diff --git a/agents-api/agents_api/models/docs/list_docs.py b/agents-api/agents_api/models/docs/list_docs.py
index afdf06c2d..3c095c2db 100644
--- a/agents-api/agents_api/models/docs/list_docs.py
+++ b/agents-api/agents_api/models/docs/list_docs.py
@@ -34,6 +34,7 @@
Doc,
transform=lambda d: {
"content": [s[1] for s in sorted(d["snippet_data"], key=lambda x: x[0])],
+ "embeddings": [s[2] for s in sorted(d["snippet_data"], key=lambda x: x[0])],
**d,
},
)
@@ -67,8 +68,9 @@ def list_docs(
doc_id: id,
index,
content,
+ embedding,
}},
- snippet_data = [index, content]
+ snippet_data = [index, content, embedding]
?[
owner_type,
diff --git a/agents-api/agents_api/models/docs/search_docs_by_embedding.py b/agents-api/agents_api/models/docs/search_docs_by_embedding.py
index d6bed97fc..83418aa21 100644
--- a/agents-api/agents_api/models/docs/search_docs_by_embedding.py
+++ b/agents-api/agents_api/models/docs/search_docs_by_embedding.py
@@ -56,12 +56,12 @@ def search_docs_by_embedding(
Searches for document snippets in CozoDB by embedding query.
Parameters:
- - owner_type (Literal["user", "agent"]): The type of the owner of the documents.
- - owner_id (UUID): The unique identifier of the owner.
- - query_embedding (list[float]): The embedding vector of the query.
- - k (int, optional): The number of nearest neighbors to retrieve. Defaults to 3.
- - confidence (float, optional): The confidence threshold for filtering results. Defaults to 0.8.
- - mmr_lambda (float, optional): The lambda parameter for MMR. Defaults to 0.25.
+ owner_type (Literal["user", "agent"]): The type of the owner of the documents.
+ owner_id (UUID): The unique identifier of the owner.
+ query_embedding (list[float]): The embedding vector of the query.
+ k (int, optional): The number of nearest neighbors to retrieve. Defaults to 3.
+ confidence (float, optional): The confidence threshold for filtering results. Defaults to 0.8.
+ mmr_lambda (float, optional): The lambda parameter for MMR. Defaults to 0.25.
"""
assert len(query_embedding) == embedding_size
diff --git a/agents-api/agents_api/models/docs/search_docs_by_text.py b/agents-api/agents_api/models/docs/search_docs_by_text.py
index eeae8362c..bb700a494 100644
--- a/agents-api/agents_api/models/docs/search_docs_by_text.py
+++ b/agents-api/agents_api/models/docs/search_docs_by_text.py
@@ -53,9 +53,9 @@ def search_docs_by_text(
Searches for document snippets in CozoDB by embedding query.
Parameters:
- - owners (list[tuple[Literal["user", "agent"], UUID]]): The type of the owner of the documents.
- - query (str): The query string.
- - k (int, optional): The number of nearest neighbors to retrieve. Defaults to 3.
+ owners (list[tuple[Literal["user", "agent"], UUID]]): The type of the owner of the documents.
+ query (str): The query string.
+ k (int, optional): The number of nearest neighbors to retrieve. Defaults to 3.
"""
owners: list[list[str]] = [
diff --git a/agents-api/agents_api/models/entry/delete_entries.py b/agents-api/agents_api/models/entry/delete_entries.py
index 48c37cd25..c98b6c7d2 100644
--- a/agents-api/agents_api/models/entry/delete_entries.py
+++ b/agents-api/agents_api/models/entry/delete_entries.py
@@ -49,7 +49,7 @@ def delete_entries_for_session(
Constructs and returns a datalog query for deleting entries associated with a given session ID from the 'cozodb' database.
Parameters:
- - session_id (UUID): The unique identifier of the session whose entries are to be deleted.
+ session_id (UUID): The unique identifier of the session whose entries are to be deleted.
"""
delete_query = """
diff --git a/agents-api/agents_api/models/entry/get_history.py b/agents-api/agents_api/models/entry/get_history.py
index 8918d357f..bd3c0397a 100644
--- a/agents-api/agents_api/models/entry/get_history.py
+++ b/agents-api/agents_api/models/entry/get_history.py
@@ -131,7 +131,9 @@ def get_history(
session_relations[relations],
session_id = to_uuid($session_id),
created_at = now()
- """
+
+ :limit 1
+ """
queries = [
verify_developer_id_query(developer_id),
diff --git a/agents-api/agents_api/models/execution/create_execution_transition.py b/agents-api/agents_api/models/execution/create_execution_transition.py
index 42c6f1c22..f40395126 100644
--- a/agents-api/agents_api/models/execution/create_execution_transition.py
+++ b/agents-api/agents_api/models/execution/create_execution_transition.py
@@ -141,6 +141,8 @@ def create_execution_transition(
found = length(prev_transitions),
valid = if($next_type == "init", found == 0, found > 0),
assert(valid, "Invalid transition"),
+
+ :limit 1
"""
# Prepare the insert query
diff --git a/agents-api/agents_api/models/execution/get_execution_transition.py b/agents-api/agents_api/models/execution/get_execution_transition.py
index d3ebf3783..e2b38789a 100644
--- a/agents-api/agents_api/models/execution/get_execution_transition.py
+++ b/agents-api/agents_api/models/execution/get_execution_transition.py
@@ -65,7 +65,9 @@ def get_execution_transition(
is_null(next_tuple),
null,
{"workflow": next_tuple->0, "step": next_tuple->1},
- ),
+ )
+
+ :limit 1
"""
get_query += filter
diff --git a/agents-api/agents_api/models/execution/get_paused_execution_token.py b/agents-api/agents_api/models/execution/get_paused_execution_token.py
index d8b0945c1..44eb8a4da 100644
--- a/agents-api/agents_api/models/execution/get_paused_execution_token.py
+++ b/agents-api/agents_api/models/execution/get_paused_execution_token.py
@@ -45,11 +45,12 @@ def get_paused_execution_token(
execution_id = to_uuid($execution_id),
status = "awaiting_input"
+ :limit 1
:assert some
"""
get_query = """
- ?[task_token, max(created_at)] :=
+ ?[task_token, created_at, metadata] :=
execution_id = to_uuid($execution_id),
*executions {
execution_id,
@@ -59,9 +60,12 @@ def get_paused_execution_token(
created_at,
task_token,
type,
+ metadata,
},
type = "wait"
+ :sort -created_at
+ :limit 1
"""
queries = [
diff --git a/agents-api/agents_api/models/execution/get_temporal_workflow_data.py b/agents-api/agents_api/models/execution/get_temporal_workflow_data.py
index bb0a462ef..8b1bf4604 100644
--- a/agents-api/agents_api/models/execution/get_temporal_workflow_data.py
+++ b/agents-api/agents_api/models/execution/get_temporal_workflow_data.py
@@ -45,6 +45,8 @@ def get_temporal_workflow_data(
result_run_id,
first_execution_run_id,
}
+
+ :limit 1
"""
return (
diff --git a/agents-api/agents_api/models/execution/lookup_temporal_data.py b/agents-api/agents_api/models/execution/lookup_temporal_data.py
index e3c369b94..35f09129b 100644
--- a/agents-api/agents_api/models/execution/lookup_temporal_data.py
+++ b/agents-api/agents_api/models/execution/lookup_temporal_data.py
@@ -43,6 +43,8 @@ def lookup_temporal_data(
*temporal_executions_lookup {
id, execution_id, run_id, first_execution_run_id, result_run_id
}
+
+ :limit 1
"""
queries = [
diff --git a/agents-api/agents_api/models/execution/prepare_execution_input.py b/agents-api/agents_api/models/execution/prepare_execution_input.py
index 5bc14939a..5f30e7f83 100644
--- a/agents-api/agents_api/models/execution/prepare_execution_input.py
+++ b/agents-api/agents_api/models/execution/prepare_execution_input.py
@@ -39,13 +39,10 @@
transform=lambda d: {
**d,
"task": {
- "tools": [
- {tool["type"]: tool.pop("spec"), **tool}
- for tool in map(fix_uuid_if_present, d["task"].pop("tools"))
- ],
+ "tools": [*map(fix_uuid_if_present, d["task"].pop("tools"))],
**d["task"],
},
- "tools": [
+ "agent_tools": [
{tool["type"]: tool.pop("spec"), **tool}
for tool in map(fix_uuid_if_present, d["tools"])
],
@@ -190,6 +187,8 @@ def prepare_execution_input(
user = null,
session = null,
arguments = execution->"input"
+
+ :limit 1
"""
queries = [
diff --git a/agents-api/agents_api/models/execution/update_execution.py b/agents-api/agents_api/models/execution/update_execution.py
index c2f40c7ff..4d0367ae4 100644
--- a/agents-api/agents_api/models/execution/update_execution.py
+++ b/agents-api/agents_api/models/execution/update_execution.py
@@ -82,6 +82,8 @@ def update_execution(
?[num] :=
valid_status[num],
assert(num > 0, 'Invalid status')
+
+ :limit 1
"""
update_query = f"""
diff --git a/agents-api/agents_api/models/session/delete_session.py b/agents-api/agents_api/models/session/delete_session.py
index af9e331c7..81f8e1f7c 100644
--- a/agents-api/agents_api/models/session/delete_session.py
+++ b/agents-api/agents_api/models/session/delete_session.py
@@ -51,11 +51,11 @@ def delete_session(
Deletes a session and its related data from the 'cozodb' database.
Parameters:
- - developer_id (UUID): The unique identifier for the developer.
- - session_id (UUID): The unique identifier for the session to be deleted.
+ developer_id (UUID): The unique identifier for the developer.
+ session_id (UUID): The unique identifier for the session to be deleted.
Returns:
- - ResourceDeletedResponse: The response indicating the deletion of the session.
+ ResourceDeletedResponse: The response indicating the deletion of the session.
"""
session_id = str(session_id)
developer_id = str(developer_id)
diff --git a/agents-api/agents_api/models/session/get_session.py b/agents-api/agents_api/models/session/get_session.py
index 2d8956eb7..45d971c3f 100644
--- a/agents-api/agents_api/models/session/get_session.py
+++ b/agents-api/agents_api/models/session/get_session.py
@@ -95,7 +95,10 @@ def get_session(
token_budget,
context_overflow,
@ "END"
- }, updated_at = to_int(validity)
+ },
+ updated_at = to_int(validity)
+
+ :limit 1
"""
queries = [
diff --git a/agents-api/agents_api/models/session/list_sessions.py b/agents-api/agents_api/models/session/list_sessions.py
index 14f4cad0d..b7d5c0049 100644
--- a/agents-api/agents_api/models/session/list_sessions.py
+++ b/agents-api/agents_api/models/session/list_sessions.py
@@ -41,7 +41,8 @@ def list_sessions(
direction: Literal["asc", "desc"] = "desc",
metadata_filter: dict[str, Any] = {},
) -> tuple[list[str], dict]:
- """Lists sessions from the 'cozodb' database based on the provided filters.
+ """
+ Lists sessions from the 'cozodb' database based on the provided filters.
Parameters:
developer_id (UUID): The developer's ID to filter sessions by.
diff --git a/agents-api/agents_api/models/session/patch_session.py b/agents-api/agents_api/models/session/patch_session.py
index a9f3121b9..4a119a684 100644
--- a/agents-api/agents_api/models/session/patch_session.py
+++ b/agents-api/agents_api/models/session/patch_session.py
@@ -60,12 +60,13 @@ def patch_session(
developer_id: UUID,
data: PatchSessionRequest,
) -> tuple[list[str], dict]:
- """Patch session data in the 'cozodb' database.
+ """
+ Patch session data in the 'cozodb' database.
Parameters:
- - session_id (UUID): The unique identifier for the session to be updated.
- - developer_id (UUID): The unique identifier for the developer making the update.
- - data (PatchSessionRequest): The request payload containing the updates to apply.
+ session_id (UUID): The unique identifier for the session to be updated.
+ developer_id (UUID): The unique identifier for the developer making the update.
+ data (PatchSessionRequest): The request payload containing the updates to apply.
"""
update_data = data.model_dump(exclude_unset=True)
diff --git a/agents-api/agents_api/models/session/prepare_session_data.py b/agents-api/agents_api/models/session/prepare_session_data.py
index e8cfb7fc7..bbbd9c4cd 100644
--- a/agents-api/agents_api/models/session/prepare_session_data.py
+++ b/agents-api/agents_api/models/session/prepare_session_data.py
@@ -209,6 +209,8 @@ def prepare_session_data(
session_data[session],
user_data[users],
agent_data[agents]
+
+ :limit 1
"""
queries = [
diff --git a/agents-api/agents_api/models/task/get_task.py b/agents-api/agents_api/models/task/get_task.py
index 4bb3d06b6..4e5b2fb97 100644
--- a/agents-api/agents_api/models/task/get_task.py
+++ b/agents-api/agents_api/models/task/get_task.py
@@ -68,20 +68,6 @@ def get_task(
},
updated_at = to_int(updated_at_ms) / 1000
- tool_data[collect(tool_def)] :=
- task_data[_, agent_id, _, _, _, _, _, _, _, _, _],
- *tools {
- agent_id,
- type,
- name,
- spec,
- }, tool_def = {
- "type": type,
- "name": name,
- "spec": spec,
- "inherited": true,
- }
-
?[
id,
agent_id,
@@ -95,20 +81,19 @@ def get_task(
updated_at,
metadata,
] :=
- tool_data[inherited_tools],
task_data[
id,
agent_id,
name,
description,
input_schema,
- task_tools,
+ tools,
inherit_tools,
workflows,
created_at,
updated_at,
metadata,
- ], tools = task_tools ++ if(inherit_tools, inherited_tools, [])
+ ]
:limit 1
"""
diff --git a/agents-api/agents_api/models/task/list_tasks.py b/agents-api/agents_api/models/task/list_tasks.py
index 35c52d184..a443ce9e2 100644
--- a/agents-api/agents_api/models/task/list_tasks.py
+++ b/agents-api/agents_api/models/task/list_tasks.py
@@ -74,20 +74,6 @@ def list_tasks(
}},
updated_at = to_int(updated_at_ms) / 1000
- tool_data[collect(tool_def)] :=
- input[agent_id],
- *tools {{
- agent_id,
- type,
- name,
- spec,
- }}, tool_def = {{
- "type": type,
- "name": name,
- "spec": spec,
- "inherited": true,
- }}
-
?[
task_id,
agent_id,
@@ -101,20 +87,19 @@ def list_tasks(
updated_at,
metadata,
] :=
- tool_data[inherited_tools],
task_data[
task_id,
agent_id,
name,
description,
input_schema,
- task_tools,
+ tools,
inherit_tools,
workflows,
created_at,
updated_at,
metadata,
- ], tools = task_tools ++ if(inherit_tools, inherited_tools, [])
+ ]
:limit $limit
:offset $offset
diff --git a/agents-api/agents_api/models/tools/__init__.py b/agents-api/agents_api/models/tools/__init__.py
index 98f3a5e3a..b1775f1a9 100644
--- a/agents-api/agents_api/models/tools/__init__.py
+++ b/agents-api/agents_api/models/tools/__init__.py
@@ -14,6 +14,7 @@
from .create_tools import create_tools
from .delete_tool import delete_tool
from .get_tool import get_tool
+from .get_tool_args_from_metadata import get_tool_args_from_metadata
from .list_tools import list_tools
from .patch_tool import patch_tool
from .update_tool import update_tool
diff --git a/agents-api/agents_api/models/tools/create_tools.py b/agents-api/agents_api/models/tools/create_tools.py
index dd8397797..fe7e28228 100644
--- a/agents-api/agents_api/models/tools/create_tools.py
+++ b/agents-api/agents_api/models/tools/create_tools.py
@@ -51,11 +51,11 @@ def create_tools(
Constructs a datalog query for inserting tool records into the 'agent_functions' relation in the CozoDB.
Parameters:
- - agent_id (UUID): The unique identifier for the agent.
- - data (list[CreateToolRequest]): A list of function definitions to be inserted.
+ agent_id (UUID): The unique identifier for the agent.
+ data (list[CreateToolRequest]): A list of function definitions to be inserted.
Returns:
- list[Tool]
+ list[Tool]
"""
tools_data = [
@@ -80,6 +80,7 @@ def create_tools(
name,
}
+ :limit 1
:assert none
"""
diff --git a/agents-api/agents_api/models/tools/get_tool.py b/agents-api/agents_api/models/tools/get_tool.py
index 5ea009064..465fd2efe 100644
--- a/agents-api/agents_api/models/tools/get_tool.py
+++ b/agents-api/agents_api/models/tools/get_tool.py
@@ -68,6 +68,8 @@ def get_tool(
updated_at,
created_at,
}
+
+ :limit 1
"""
queries = [
diff --git a/agents-api/agents_api/models/tools/get_tool_args_from_metadata.py b/agents-api/agents_api/models/tools/get_tool_args_from_metadata.py
new file mode 100644
index 000000000..2cdb92cb9
--- /dev/null
+++ b/agents-api/agents_api/models/tools/get_tool_args_from_metadata.py
@@ -0,0 +1,148 @@
+from typing import Literal
+from uuid import UUID
+
+from beartype import beartype
+from fastapi import HTTPException
+from pycozo.client import QueryException
+from pydantic import ValidationError
+
+from ..utils import (
+ cozo_query,
+ partialclass,
+ rewrap_exceptions,
+ verify_developer_id_query,
+ verify_developer_owns_resource_query,
+ wrap_in_class,
+)
+
+
+def tool_args_for_task(
+ *,
+ developer_id: UUID,
+ agent_id: UUID,
+ task_id: UUID,
+ tool_type: Literal["integration", "api_call"] = "integration",
+ arg_type: Literal["args", "setup"] = "args",
+) -> tuple[list[str], dict]:
+ agent_id = str(agent_id)
+ task_id = str(task_id)
+
+ get_query = f"""
+ input[agent_id, task_id] <- [[to_uuid($agent_id), to_uuid($task_id)]]
+
+ ?[values] :=
+ input[agent_id, task_id],
+ *tasks {{
+ task_id,
+ metadata: task_metadata,
+ }},
+ *agents {{
+ agent_id,
+ metadata: agent_metadata,
+ }},
+ task_{arg_type} = get(task_metadata, "x-{tool_type}-{arg_type}", {{}}),
+ agent_{arg_type} = get(agent_metadata, "x-{tool_type}-{arg_type}", {{}}),
+
+ # Right values overwrite left values
+ # See: https://docs.cozodb.org/en/latest/functions.html#Func.Vector.concat
+ values = concat(agent_{arg_type}, task_{arg_type}),
+
+ :limit 1
+ """
+
+ queries = [
+ verify_developer_id_query(developer_id),
+ verify_developer_owns_resource_query(
+ developer_id, "tasks", task_id=task_id, parents=[("agents", "agent_id")]
+ ),
+ get_query,
+ ]
+
+ return (queries, {"agent_id": agent_id, "task_id": task_id})
+
+
+def tool_args_for_session(
+ *,
+ developer_id: UUID,
+ session_id: UUID,
+ agent_id: UUID,
+ arg_type: Literal["args", "setup"] = "args",
+ tool_type: Literal["integration", "api_call"] = "integration",
+) -> tuple[list[str], dict]:
+ session_id = str(session_id)
+
+ get_query = f"""
+ input[session_id, agent_id] <- [[to_uuid($session_id), to_uuid($agent_id)]]
+
+ ?[values] :=
+ input[session_id, agent_id],
+ *sessions {{
+ session_id,
+ metadata: session_metadata,
+ }},
+ *agents {{
+ agent_id,
+ metadata: agent_metadata,
+ }},
+ session_{arg_type} = get(session_metadata, "x-{tool_type}-{arg_type}", {{}}),
+ agent_{arg_type} = get(agent_metadata, "x-{tool_type}-{arg_type}", {{}}),
+
+ # Right values overwrite left values
+ # See: https://docs.cozodb.org/en/latest/functions.html#Func.Vector.concat
+ values = concat(agent_{arg_type}, session_{arg_type}),
+
+ :limit 1
+ """
+
+ queries = [
+ verify_developer_id_query(developer_id),
+ verify_developer_owns_resource_query(
+ developer_id, "sessions", session_id=session_id
+ ),
+ get_query,
+ ]
+
+ return (queries, {"agent_id": agent_id, "session_id": session_id})
+
+
+@rewrap_exceptions(
+ {
+ QueryException: partialclass(HTTPException, status_code=400),
+ ValidationError: partialclass(HTTPException, status_code=400),
+ TypeError: partialclass(HTTPException, status_code=400),
+ }
+)
+@wrap_in_class(dict, transform=lambda x: x["values"], one=True)
+@cozo_query
+@beartype
+def get_tool_args_from_metadata(
+ *,
+ developer_id: UUID,
+ agent_id: UUID,
+ session_id: UUID | None = None,
+ task_id: UUID | None = None,
+ tool_type: Literal["integration", "api_call"] = "integration",
+ arg_type: Literal["args", "setup", "headers"] = "args",
+) -> tuple[list[str], dict]:
+ common: dict = dict(
+ developer_id=developer_id,
+ agent_id=agent_id,
+ tool_type=tool_type,
+ arg_type=arg_type,
+ )
+
+ match session_id, task_id:
+ case (None, task_id) if task_id is not None:
+ return tool_args_for_task(
+ **common,
+ task_id=task_id,
+ )
+
+ case (session_id, None) if session_id is not None:
+ return tool_args_for_session(
+ **common,
+ session_id=session_id,
+ )
+
+ case (_, _):
+ raise ValueError("Either session_id or task_id must be provided")
diff --git a/agents-api/agents_api/models/tools/patch_tool.py b/agents-api/agents_api/models/tools/patch_tool.py
index 5bbfe1c91..0d8304d7d 100644
--- a/agents-api/agents_api/models/tools/patch_tool.py
+++ b/agents-api/agents_api/models/tools/patch_tool.py
@@ -40,16 +40,16 @@ def patch_tool(
*, developer_id: UUID, agent_id: UUID, tool_id: UUID, data: PatchToolRequest
) -> tuple[list[str], dict]:
"""
- # Execute the datalog query and return the results as a DataFrame
+ Execute the datalog query and return the results as a DataFrame
Updates the tool information for a given agent and tool ID in the 'cozodb' database.
Parameters:
- - agent_id (UUID): The unique identifier of the agent.
- - tool_id (UUID): The unique identifier of the tool to be updated.
- - data (PatchToolRequest): The request payload containing the updated tool information.
+ agent_id (UUID): The unique identifier of the agent.
+ tool_id (UUID): The unique identifier of the tool to be updated.
+ data (PatchToolRequest): The request payload containing the updated tool information.
Returns:
- - ResourceUpdatedResponse: The updated tool data.
+ ResourceUpdatedResponse: The updated tool data.
"""
agent_id = str(agent_id)
diff --git a/agents-api/agents_api/models/user/create_or_update_user.py b/agents-api/agents_api/models/user/create_or_update_user.py
index 9e9045e74..97db913c5 100644
--- a/agents-api/agents_api/models/user/create_or_update_user.py
+++ b/agents-api/agents_api/models/user/create_or_update_user.py
@@ -44,15 +44,15 @@ def create_or_update_user(
Constructs and executes a datalog query to create a new user in the database.
Parameters:
- - user_id (UUID): The unique identifier for the user.
- - developer_id (UUID): The unique identifier for the developer creating the user.
- - name (str): The name of the user.
- - about (str): A description of the user.
- - metadata (dict, optional): A dictionary of metadata for the user. Defaults to an empty dict.
- - client (CozoClient, optional): The CozoDB client instance to use for the query. Defaults to a preconfigured client instance.
+ user_id (UUID): The unique identifier for the user.
+ developer_id (UUID): The unique identifier for the developer creating the user.
+ name (str): The name of the user.
+ about (str): A description of the user.
+ metadata (dict, optional): A dictionary of metadata for the user. Defaults to an empty dict.
+ client (CozoClient, optional): The CozoDB client instance to use for the query. Defaults to a preconfigured client instance.
Returns:
- User: The newly created user record.
+ User: The newly created user record.
"""
# Extract the user data from the payload
diff --git a/agents-api/agents_api/models/user/delete_user.py b/agents-api/agents_api/models/user/delete_user.py
index b5fcb8424..0532f5cfa 100644
--- a/agents-api/agents_api/models/user/delete_user.py
+++ b/agents-api/agents_api/models/user/delete_user.py
@@ -49,12 +49,12 @@ def delete_user(*, developer_id: UUID, user_id: UUID) -> tuple[list[str], dict]:
Constructs and returns a datalog query for deleting an user and its default settings from the database.
Parameters:
- - developer_id (UUID): The UUID of the developer owning the user.
- - user_id (UUID): The UUID of the user to be deleted.
- - client (CozoClient, optional): An instance of the CozoClient to execute the query.
+ developer_id (UUID): The UUID of the developer owning the user.
+ user_id (UUID): The UUID of the user to be deleted.
+ client (CozoClient, optional): An instance of the CozoClient to execute the query.
Returns:
- - ResourceDeletedResponse: The response indicating the deletion of the user.
+ ResourceDeletedResponse: The response indicating the deletion of the user.
"""
queries = [
diff --git a/agents-api/agents_api/models/user/get_user.py b/agents-api/agents_api/models/user/get_user.py
index cc7c6f970..2b4f59c83 100644
--- a/agents-api/agents_api/models/user/get_user.py
+++ b/agents-api/agents_api/models/user/get_user.py
@@ -67,7 +67,10 @@ def get_user(
created_at,
updated_at,
metadata,
- }"""
+ }
+
+ :limit 1
+ """
queries = [
verify_developer_id_query(developer_id),
diff --git a/agents-api/agents_api/models/user/list_users.py b/agents-api/agents_api/models/user/list_users.py
index 57dc9b8c8..2a810b8e0 100644
--- a/agents-api/agents_api/models/user/list_users.py
+++ b/agents-api/agents_api/models/user/list_users.py
@@ -43,13 +43,13 @@ def list_users(
Queries the 'cozodb' database to list users associated with a specific developer.
Parameters:
- - developer_id (UUID): The unique identifier of the developer.
- - limit (int): The maximum number of users to return. Defaults to 100.
- - offset (int): The number of users to skip before starting to collect the result set. Defaults to 0.
- - metadata_filter (dict[str, Any]): A dictionary representing filters to apply on user metadata.
+ developer_id (UUID): The unique identifier of the developer.
+ limit (int): The maximum number of users to return. Defaults to 100.
+ offset (int): The number of users to skip before starting to collect the result set. Defaults to 0.
+ metadata_filter (dict[str, Any]): A dictionary representing filters to apply on user metadata.
Returns:
- - pd.DataFrame: A DataFrame containing the queried user data.
+ pd.DataFrame: A DataFrame containing the queried user data.
"""
# Construct a filter string for the metadata based on the provided dictionary.
metadata_filter_str = ", ".join(
diff --git a/agents-api/agents_api/models/user/patch_user.py b/agents-api/agents_api/models/user/patch_user.py
index faf38298c..4498c6ded 100644
--- a/agents-api/agents_api/models/user/patch_user.py
+++ b/agents-api/agents_api/models/user/patch_user.py
@@ -49,12 +49,12 @@ def patch_user(
Generates a datalog query for updating a user's information.
Parameters:
- - developer_id (UUID): The UUID of the developer.
- - user_id (UUID): The UUID of the user to be updated.
- - **update_data: Arbitrary keyword arguments representing the data to be updated.
+ developer_id (UUID): The UUID of the developer.
+ user_id (UUID): The UUID of the user to be updated.
+ **update_data: Arbitrary keyword arguments representing the data to be updated.
Returns:
- - tuple[str, dict]: A pandas DataFrame containing the results of the query execution.
+ tuple[str, dict]: A pandas DataFrame containing the results of the query execution.
"""
update_data = data.model_dump(exclude_unset=True)
diff --git a/agents-api/agents_api/models/user/update_user.py b/agents-api/agents_api/models/user/update_user.py
index 9a13d9369..fd8e7e2c8 100644
--- a/agents-api/agents_api/models/user/update_user.py
+++ b/agents-api/agents_api/models/user/update_user.py
@@ -39,7 +39,8 @@
def update_user(
*, developer_id: UUID, user_id: UUID, data: UpdateUserRequest
) -> tuple[list[str], dict]:
- """Updates user information in the 'cozodb' database.
+ """
+ Updates user information in the 'cozodb' database.
Parameters:
developer_id (UUID): The developer's unique identifier.
diff --git a/agents-api/agents_api/models/utils.py b/agents-api/agents_api/models/utils.py
index c97d92451..c163642c0 100644
--- a/agents-api/agents_api/models/utils.py
+++ b/agents-api/agents_api/models/utils.py
@@ -127,6 +127,8 @@ def verify_developer_id_query(developer_id: UUID | str) -> str:
matched[num],
exists = num > 0,
assert(exists, "Developer does not exist")
+
+ :limit 1
"""
@@ -162,6 +164,8 @@ def verify_developer_owns_resource_query(
found[num],
exists = num > 0,
assert(exists, "Developer does not own resource {resource} with {resource_id_key} {resource_id_value}")
+
+ :limit 1
"""
rule = rule_head + rule_body + assertion
diff --git a/agents-api/agents_api/routers/internal/__init__.py b/agents-api/agents_api/routers/internal/__init__.py
new file mode 100644
index 000000000..237804332
--- /dev/null
+++ b/agents-api/agents_api/routers/internal/__init__.py
@@ -0,0 +1 @@
+from .router import router
diff --git a/agents-api/agents_api/routers/internal/router.py b/agents-api/agents_api/routers/internal/router.py
new file mode 100644
index 000000000..3293f2463
--- /dev/null
+++ b/agents-api/agents_api/routers/internal/router.py
@@ -0,0 +1,28 @@
+from fastapi import APIRouter, Request, Response
+from google.protobuf import json_format
+from temporalio.api.common.v1 import Payloads
+
+from ...worker.codec import PydanticEncodingPayloadConverter
+
+router: APIRouter = APIRouter()
+
+converter = PydanticEncodingPayloadConverter()
+
+
+# Decode route
+@router.post("/temporal/decode", tags=["temporal"])
+async def decode_payloads(req: Request) -> dict:
+ body = json_format.Parse(await req.body(), Payloads())
+ payloads = body.payloads
+
+ decoded_payloads = []
+
+ for p in payloads:
+ data = converter.from_payload(p)
+
+ if hasattr(data, "model_dump"):
+ data = data.model_dump()
+
+ decoded_payloads.append({"data": data, "metadata": p.metadata})
+
+ return {"payloads": decoded_payloads}
diff --git a/agents-api/agents_api/routers/jobs/routers.py b/agents-api/agents_api/routers/jobs/routers.py
index fe1b25fa3..dff4bed7b 100644
--- a/agents-api/agents_api/routers/jobs/routers.py
+++ b/agents-api/agents_api/routers/jobs/routers.py
@@ -4,8 +4,8 @@
from fastapi import APIRouter
from temporalio.client import WorkflowExecutionStatus
-from agents_api.autogen.openapi_model import JobStatus
-from agents_api.clients.temporal import get_client
+from ...autogen.openapi_model import JobStatus
+from ...clients.temporal import get_client
router: APIRouter = APIRouter()
@@ -50,7 +50,7 @@ async def get_job_status(job_id: UUID) -> JobStatus:
state = map_job_status(job_description.status)
return JobStatus(
- name=handle.id,
+ name=job_description.workflow_type,
reason=f"Execution status: {state}",
created_at=job_description.start_time,
updated_at=job_description.execution_time,
diff --git a/agents-api/agents_api/routers/tasks/create_or_update_task.py b/agents-api/agents_api/routers/tasks/create_or_update_task.py
index e5245670a..50dbf19d9 100644
--- a/agents-api/agents_api/routers/tasks/create_or_update_task.py
+++ b/agents-api/agents_api/routers/tasks/create_or_update_task.py
@@ -6,15 +6,14 @@
from jsonschema.exceptions import SchemaError, ValidationError
from starlette.status import HTTP_201_CREATED
-from agents_api.autogen.openapi_model import (
+from ...autogen.openapi_model import (
CreateOrUpdateTaskRequest,
ResourceUpdatedResponse,
)
-from agents_api.dependencies.developer_id import get_developer_id
-from agents_api.models.task.create_or_update_task import (
+from ...dependencies.developer_id import get_developer_id
+from ...models.task.create_or_update_task import (
create_or_update_task as create_or_update_task_query,
)
-
from .router import router
diff --git a/agents-api/agents_api/routers/tasks/get_execution_details.py b/agents-api/agents_api/routers/tasks/get_execution_details.py
index 8da7b98c8..95bccbc07 100644
--- a/agents-api/agents_api/routers/tasks/get_execution_details.py
+++ b/agents-api/agents_api/routers/tasks/get_execution_details.py
@@ -1,12 +1,11 @@
from uuid import UUID
-from agents_api.autogen.openapi_model import (
+from ...autogen.openapi_model import (
Execution,
)
-from agents_api.models.execution.get_execution import (
+from ...models.execution.get_execution import (
get_execution as get_execution_query,
)
-
from .router import router
diff --git a/agents-api/agents_api/routers/tasks/list_execution_transitions.py b/agents-api/agents_api/routers/tasks/list_execution_transitions.py
index fd7be992a..9ce169509 100644
--- a/agents-api/agents_api/routers/tasks/list_execution_transitions.py
+++ b/agents-api/agents_api/routers/tasks/list_execution_transitions.py
@@ -1,14 +1,13 @@
from typing import Literal
from uuid import UUID
-from agents_api.autogen.openapi_model import (
+from ...autogen.openapi_model import (
ListResponse,
Transition,
)
-from agents_api.models.execution.list_execution_transitions import (
+from ...models.execution.list_execution_transitions import (
list_execution_transitions as list_execution_transitions_query,
)
-
from .router import router
diff --git a/agents-api/agents_api/routers/tasks/list_task_executions.py b/agents-api/agents_api/routers/tasks/list_task_executions.py
index f2961e54a..72cbd9b40 100644
--- a/agents-api/agents_api/routers/tasks/list_task_executions.py
+++ b/agents-api/agents_api/routers/tasks/list_task_executions.py
@@ -3,15 +3,14 @@
from fastapi import Depends
-from agents_api.autogen.openapi_model import (
+from ...autogen.openapi_model import (
Execution,
ListResponse,
)
-from agents_api.dependencies.developer_id import get_developer_id
-from agents_api.models.execution.list_executions import (
+from ...dependencies.developer_id import get_developer_id
+from ...models.execution.list_executions import (
list_executions as list_task_executions_query,
)
-
from .router import router
diff --git a/agents-api/agents_api/routers/tasks/list_tasks.py b/agents-api/agents_api/routers/tasks/list_tasks.py
index 43a7e9158..a53983006 100644
--- a/agents-api/agents_api/routers/tasks/list_tasks.py
+++ b/agents-api/agents_api/routers/tasks/list_tasks.py
@@ -3,13 +3,12 @@
from fastapi import Depends
-from agents_api.autogen.openapi_model import (
+from ...autogen.openapi_model import (
ListResponse,
Task,
)
-from agents_api.dependencies.developer_id import get_developer_id
-from agents_api.models.task.list_tasks import list_tasks as list_tasks_query
-
+from ...dependencies.developer_id import get_developer_id
+from ...models.task.list_tasks import list_tasks as list_tasks_query
from .router import router
diff --git a/agents-api/agents_api/routers/tasks/patch_execution.py b/agents-api/agents_api/routers/tasks/patch_execution.py
index 0eb159c83..3cc45ee37 100644
--- a/agents-api/agents_api/routers/tasks/patch_execution.py
+++ b/agents-api/agents_api/routers/tasks/patch_execution.py
@@ -3,15 +3,14 @@
from fastapi import Depends
-from agents_api.autogen.openapi_model import (
+from ...autogen.openapi_model import (
ResourceUpdatedResponse,
UpdateExecutionRequest,
)
-from agents_api.dependencies.developer_id import get_developer_id
-from agents_api.models.execution.update_execution import (
+from ...dependencies.developer_id import get_developer_id
+from ...models.execution.update_execution import (
update_execution as update_execution_query,
)
-
from .router import router
diff --git a/agents-api/agents_api/routers/tasks/update_execution.py b/agents-api/agents_api/routers/tasks/update_execution.py
index 3f6b30e8c..d887c455d 100644
--- a/agents-api/agents_api/routers/tasks/update_execution.py
+++ b/agents-api/agents_api/routers/tasks/update_execution.py
@@ -1,21 +1,21 @@
+import base64
from typing import Annotated
from uuid import UUID
from fastapi import Depends, HTTPException
-from agents_api.autogen.openapi_model import (
+from ...autogen.openapi_model import (
ResumeExecutionRequest,
StopExecutionRequest,
)
-from agents_api.clients.temporal import get_client
-from agents_api.dependencies.developer_id import get_developer_id
-from agents_api.models.execution.get_paused_execution_token import (
+from ...clients.temporal import get_client
+from ...dependencies.developer_id import get_developer_id
+from ...models.execution.get_paused_execution_token import (
get_paused_execution_token,
)
-from agents_api.models.execution.get_temporal_workflow_data import (
+from ...models.execution.get_temporal_workflow_data import (
get_temporal_workflow_data,
)
-
from .router import router
@@ -29,19 +29,39 @@ async def update_execution(
match data:
case StopExecutionRequest():
- wf_handle = temporal_client.get_workflow_handle_for(
- *get_temporal_workflow_data(execution_id=execution_id)
- )
- await wf_handle.cancel()
+ try:
+ wf_handle = temporal_client.get_workflow_handle_for(
+ *get_temporal_workflow_data(execution_id=execution_id)
+ )
+ await wf_handle.cancel()
+ except Exception as e:
+ raise HTTPException(status_code=500, detail="Failed to stop execution")
case ResumeExecutionRequest():
token_data = get_paused_execution_token(
developer_id=x_developer_id, execution_id=execution_id
)
- act_handle = temporal_client.get_async_activity_handle(
- task_token=str.encode(token_data["task_token"], encoding="latin-1")
- )
- await act_handle.complete(data.input)
- print("Resumed execution successfully")
+ activity_id = token_data["metadata"].get("x-activity-id", None)
+ run_id = token_data["metadata"].get("x-run-id", None)
+ workflow_id = token_data["metadata"].get("x-workflow-id", None)
+ if activity_id is None or run_id is None or workflow_id is None:
+ act_handle = temporal_client.get_async_activity_handle(
+ task_token=base64.b64decode(
+ token_data["task_token"].encode("ascii")
+ ),
+ )
+
+ else:
+ act_handle = temporal_client.get_async_activity_handle(
+ activity_id=activity_id,
+ workflow_id=workflow_id,
+ run_id=run_id,
+ )
+ try:
+ await act_handle.complete(data.input)
+ except Exception as e:
+ raise HTTPException(
+ status_code=500, detail="Failed to resume execution"
+ )
case _:
raise HTTPException(status_code=400, detail="Invalid request data")
diff --git a/agents-api/agents_api/web.py b/agents-api/agents_api/web.py
index fc730fe82..048887f68 100644
--- a/agents-api/agents_api/web.py
+++ b/agents-api/agents_api/web.py
@@ -24,6 +24,7 @@
from .routers import (
agents,
docs,
+ internal,
jobs,
sessions,
tasks,
@@ -122,6 +123,7 @@ async def scalar_html():
app.include_router(jobs.router, dependencies=[Depends(get_api_key)])
app.include_router(docs.router, dependencies=[Depends(get_api_key)])
app.include_router(tasks.router, dependencies=[Depends(get_api_key)])
+app.include_router(internal.router)
# TODO: CORS should be enabled only for JWT auth
#
diff --git a/agents-api/agents_api/worker/worker.py b/agents-api/agents_api/worker/worker.py
index 65e813023..77698364d 100644
--- a/agents-api/agents_api/worker/worker.py
+++ b/agents-api/agents_api/worker/worker.py
@@ -15,6 +15,7 @@ def create_worker(client: Client) -> Any:
from ..activities import task_steps
from ..activities.demo import demo_activity
from ..activities.embed_docs import embed_docs
+ from ..activities.execute_integration import execute_integration
from ..activities.mem_mgmt import mem_mgmt
from ..activities.mem_rating import mem_rating
from ..activities.summarization import summarization
@@ -49,10 +50,11 @@ def create_worker(client: Client) -> Any:
activities=[
*task_activities,
demo_activity,
- summarization,
+ embed_docs,
+ execute_integration,
mem_mgmt,
mem_rating,
- embed_docs,
+ summarization,
truncation,
],
)
diff --git a/agents-api/agents_api/workflows/task_execution/__init__.py b/agents-api/agents_api/workflows/task_execution/__init__.py
index 2ff45e55c..2ca7e6ade 100644
--- a/agents-api/agents_api/workflows/task_execution/__init__.py
+++ b/agents-api/agents_api/workflows/task_execution/__init__.py
@@ -11,6 +11,7 @@
# Import necessary modules and types
with workflow.unsafe.imports_passed_through():
from ...activities import task_steps
+ from ...activities.execute_integration import execute_integration
from ...autogen.openapi_model import (
EmbedStep,
ErrorWorkflowStep,
@@ -19,6 +20,7 @@
ForeachStep,
GetStep,
IfElseWorkflowStep,
+ IntegrationDef,
LogStep,
MapReduceStep,
ParallelStep,
@@ -59,7 +61,7 @@
# WorkflowStep = (
# EvaluateStep # ✅
-# | ToolCallStep # ❌ <--- high priority
+# | ToolCallStep # ✅
# | PromptStep # 🟡 <--- high priority
# | GetStep # ✅
# | SetStep # ✅
@@ -81,7 +83,7 @@
# Mapping of step types to their corresponding activities
STEP_TO_ACTIVITY = {
PromptStep: task_steps.prompt_step,
- # ToolCallStep: tool_call_step,
+ ToolCallStep: task_steps.tool_call_step,
WaitForInputStep: task_steps.wait_for_input_step,
SwitchStep: task_steps.switch_step,
LogStep: task_steps.log_step,
@@ -379,8 +381,6 @@ async def run(
case WaitForInputStep(), StepOutcome(output=output):
workflow.logger.info("Wait for input step: Waiting for external input")
- await transition(context, type="wait", output=output)
-
result = await workflow.execute_activity(
task_steps.raise_complete_async,
args=[context, output],
@@ -389,50 +389,47 @@ async def run(
state = PartialTransition(type="resume", output=result)
- case PromptStep(), StepOutcome(
+ case PromptStep(unwrap=True), StepOutcome(output=response):
+ workflow.logger.debug(f"Prompt step: Received response: {response}")
+ state = PartialTransition(output=response)
+
+ case PromptStep(forward_tool_results=False, unwrap=False), StepOutcome(
output=response
- ): # FIXME: if not response.choices[0].tool_calls:
- # SCRUM-15
+ ):
workflow.logger.debug(f"Prompt step: Received response: {response}")
- if response["choices"][0]["finish_reason"] != "tool_calls":
- workflow.logger.debug("Prompt step: Received response")
- state = PartialTransition(output=response)
- else:
- workflow.logger.debug("Prompt step: Received tool call")
- message = response["choices"][0]["message"]
- tool_calls_input = message["tool_calls"]
-
- # Enter a wait-for-input step to ask the developer to run the tool calls
- tool_calls_results = await workflow.execute_activity(
- task_steps.raise_complete_async,
- args=[context, tool_calls_input],
- schedule_to_close_timeout=timedelta(days=31),
- )
- # Feed the tool call results back to the model
- # context.inputs.append(tool_calls_results)
- context.current_step.prompt.append(message)
- context.current_step.prompt.append(tool_calls_results)
- new_response = await workflow.execute_activity(
- task_steps.prompt_step,
- context,
- schedule_to_close_timeout=timedelta(
- seconds=30 if debug or testing else 600
- ),
- )
- state = PartialTransition(output=new_response.output, type="resume")
-
- # case PromptStep(), StepOutcome(
- # output=response
- # ): # FIXME: if response.choices[0].tool_calls:
- # # SCRUM-15
- # workflow.logger.debug("Prompt step: Received response")
- #
- # ## First, enter a wait-for-input step and ask developer to run the tool calls
- # ## Then, continue the workflow with the input received from the developer
- # ## This will be a dict with the tool call name as key and the tool call arguments as value
- # ## The prompt is run again with the tool call arguments as input
- # ## And the result is returned
- # ## If model asks for more tool calls, repeat the process
+ state = PartialTransition(output=response)
+
+ case PromptStep(unwrap=False), StepOutcome(output=response) if response[
+ "choices"
+ ][0]["finish_reason"] != "tool_calls":
+ workflow.logger.debug(f"Prompt step: Received response: {response}")
+ state = PartialTransition(output=response)
+
+ case PromptStep(unwrap=False), StepOutcome(output=response) if response[
+ "choices"
+ ][0]["finish_reason"] == "tool_calls":
+ workflow.logger.debug("Prompt step: Received tool call")
+ message = response["choices"][0]["message"]
+ tool_calls_input = message["tool_calls"]
+
+ # Enter a wait-for-input step to ask the developer to run the tool calls
+ tool_calls_results = await workflow.execute_activity(
+ task_steps.raise_complete_async,
+ args=[context, tool_calls_input],
+ schedule_to_close_timeout=timedelta(days=31),
+ )
+
+ # Feed the tool call results back to the model
+ context.current_step.prompt.append(message)
+ context.current_step.prompt.append(tool_calls_results)
+ new_response = await workflow.execute_activity(
+ task_steps.prompt_step,
+ context,
+ schedule_to_close_timeout=timedelta(
+ seconds=30 if debug or testing else 600
+ ),
+ )
+ state = PartialTransition(output=new_response.output, type="resume")
case SetStep(), StepOutcome(output=evaluated_output):
workflow.logger.info("Set step: Updating user state")
@@ -466,10 +463,50 @@ async def run(
workflow.logger.error("ParallelStep not yet implemented")
raise ApplicationError("Not implemented")
- case ToolCallStep(), _:
- # FIXME: Implement ToolCallStep
- # SCRUM-16
- workflow.logger.error("ToolCallStep not yet implemented")
+ case ToolCallStep(), StepOutcome(output=tool_call) if tool_call[
+ "type"
+ ] == "function":
+ # Enter a wait-for-input step to ask the developer to run the tool calls
+ tool_call_response = await workflow.execute_activity(
+ task_steps.raise_complete_async,
+ args=[context, tool_call],
+ schedule_to_close_timeout=timedelta(days=31),
+ )
+
+ state = PartialTransition(output=tool_call_response, type="resume")
+
+ case ToolCallStep(), StepOutcome(output=tool_call) if tool_call[
+ "type"
+ ] == "integration":
+ call = tool_call["integration"]
+ tool_name = call["name"]
+ arguments = call["arguments"]
+ integration_spec = next(
+ (t for t in context.tools if t.name == tool_name), None
+ )
+
+ if integration_spec is None:
+ raise ApplicationError(f"Integration {tool_name} not found")
+
+ integration = IntegrationDef(
+ provider=integration_spec.spec["provider"],
+ setup=integration_spec.spec["setup"],
+ method=integration_spec.spec["method"],
+ arguments=arguments,
+ )
+
+ tool_call_response = await workflow.execute_activity(
+ execute_integration,
+ args=[context, tool_name, integration, arguments],
+ schedule_to_close_timeout=timedelta(
+ seconds=30 if debug or testing else 600
+ ),
+ )
+
+ state = PartialTransition(output=tool_call_response)
+
+ case ToolCallStep(), StepOutcome(output=_):
+ # FIXME: Handle system/api_call tool_calls
raise ApplicationError("Not implemented")
case _:
@@ -480,6 +517,7 @@ async def run(
# 4. Transition to the next step
workflow.logger.info(f"Transitioning after step {context.cursor.step}")
+
# The returned value is the transition finally created
final_state = await transition(context, state)
@@ -502,7 +540,7 @@ async def run(
# Continue as a child workflow
return await continue_as_child(
- context,
+ context.execution_input,
start=final_state.next,
previous_inputs=previous_inputs + [final_state.output],
user_state=self.user_state,
diff --git a/agents-api/docker-compose.yml b/agents-api/docker-compose.yml
index 0770ded61..e086affbf 100644
--- a/agents-api/docker-compose.yml
+++ b/agents-api/docker-compose.yml
@@ -12,6 +12,7 @@ x--shared-environment: &shared-environment
COZO_HOST: ${COZO_HOST:-http://memory-store:9070}
DEBUG: ${AGENTS_API_DEBUG:-False}
EMBEDDING_MODEL_ID: ${EMBEDDING_MODEL_ID:-Alibaba-NLP/gte-large-en-v1.5}
+ INTEGRATION_SERVICE_URL: ${INTEGRATION_SERVICE_URL:-http://integrations:8000}
LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
LITELLM_URL: ${LITELLM_URL:-http://litellm:4000}
SUMMARIZATION_MODEL_NAME: ${SUMMARIZATION_MODEL_NAME:-gpt-4-turbo}
@@ -33,6 +34,9 @@ x--base-agents-api: &base-agents-api
context: .
dockerfile: Dockerfile
+ ports:
+ - "8080:8080"
+
develop:
watch:
- action: sync+restart
@@ -53,9 +57,6 @@ services:
- '' # Acts as a default profile. See: https://stackoverflow.com/questions/75758174/how-to-make-profile-default-for-docker-compose
- single-tenant
- ports:
- - "8080:8080"
-
agents-api-multi-tenant:
<<: *base-agents-api
profiles:
diff --git a/agents-api/migrations/migrate_1727235852_add_forward_tool_calls_option.py b/agents-api/migrations/migrate_1727235852_add_forward_tool_calls_option.py
new file mode 100644
index 000000000..aa1b8441a
--- /dev/null
+++ b/agents-api/migrations/migrate_1727235852_add_forward_tool_calls_option.py
@@ -0,0 +1,87 @@
+# /usr/bin/env python3
+
+MIGRATION_ID = "add_forward_tool_calls_option"
+CREATED_AT = 1727235852.744035
+
+
+def run(client, queries):
+ joiner = "}\n\n{"
+
+ query = joiner.join(queries)
+ query = f"{{\n{query}\n}}"
+ client.run(query)
+
+
+add_forward_tool_calls_option_to_session_query = dict(
+ up="""
+ ?[forward_tool_calls, token_budget, context_overflow, developer_id, session_id, updated_at, situation, summary, created_at, metadata, render_templates, token_budget, context_overflow] := *sessions{
+ developer_id,
+ session_id,
+ updated_at,
+ situation,
+ summary,
+ created_at,
+ metadata,
+ render_templates,
+ token_budget,
+ context_overflow,
+ },
+ forward_tool_calls = null
+
+ :replace sessions {
+ developer_id: Uuid,
+ session_id: Uuid,
+ updated_at: Validity default [floor(now()), true],
+ =>
+ situation: String,
+ summary: String? default null,
+ created_at: Float default now(),
+ metadata: Json default {},
+ render_templates: Bool default false,
+ token_budget: Int? default null,
+ context_overflow: String? default null,
+ forward_tool_calls: Bool? default null,
+ }
+ """,
+ down="""
+ ?[token_budget, context_overflow, developer_id, session_id, updated_at, situation, summary, created_at, metadata, render_templates, token_budget, context_overflow] := *sessions{
+ developer_id,
+ session_id,
+ updated_at,
+ situation,
+ summary,
+ created_at,
+ metadata,
+ render_templates,
+ token_budget,
+ context_overflow,
+ }
+
+ :replace sessions {
+ developer_id: Uuid,
+ session_id: Uuid,
+ updated_at: Validity default [floor(now()), true],
+ =>
+ situation: String,
+ summary: String? default null,
+ created_at: Float default now(),
+ metadata: Json default {},
+ render_templates: Bool default false,
+ token_budget: Int? default null,
+ context_overflow: String? default null,
+ }
+ """,
+)
+
+
+queries = [
+ add_forward_tool_calls_option_to_session_query,
+]
+
+
+def up(client):
+ run(client, [q["up"] for q in queries])
+
+
+def down(client):
+ run(client, [q["down"] for q in reversed(queries)])
diff --git a/agents-api/notebooks/03-summarise.ipynb b/agents-api/notebooks/03-summarise.ipynb
index a934fd1b9..98e6f5e0a 100644
--- a/agents-api/notebooks/03-summarise.ipynb
+++ b/agents-api/notebooks/03-summarise.ipynb
@@ -766,7 +766,9 @@
" messages.append(user(start_message))\n",
"\n",
" print(\"Starting chatml generation\")\n",
- " trim_result = generate(messages, model=\"gpt-4-turbo\", temperature=0.1, stop=[\"=3.8"
files = [
- {file = "aiohappyeyeballs-2.4.0-py3-none-any.whl", hash = "sha256:7ce92076e249169a13c2f49320d1967425eaf1f407522d707d59cac7628d62bd"},
- {file = "aiohappyeyeballs-2.4.0.tar.gz", hash = "sha256:55a1714f084e63d49639800f95716da97a1f173d46a16dfcfda0016abb93b6b2"},
+ {file = "aiohappyeyeballs-2.4.2-py3-none-any.whl", hash = "sha256:8522691d9a154ba1145b157d6d5c15e5c692527ce6a53c5e5f9876977f6dab2f"},
+ {file = "aiohappyeyeballs-2.4.2.tar.gz", hash = "sha256:4ca893e6c5c1f5bf3888b04cb5a3bee24995398efef6e0b9f747b5e89d84fd74"},
]
[[package]]
name = "aiohttp"
-version = "3.10.5"
+version = "3.10.6"
description = "Async http client/server framework (asyncio)"
optional = false
python-versions = ">=3.8"
files = [
- {file = "aiohttp-3.10.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:18a01eba2574fb9edd5f6e5fb25f66e6ce061da5dab5db75e13fe1558142e0a3"},
- {file = "aiohttp-3.10.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:94fac7c6e77ccb1ca91e9eb4cb0ac0270b9fb9b289738654120ba8cebb1189c6"},
- {file = "aiohttp-3.10.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2f1f1c75c395991ce9c94d3e4aa96e5c59c8356a15b1c9231e783865e2772699"},
- {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f7acae3cf1a2a2361ec4c8e787eaaa86a94171d2417aae53c0cca6ca3118ff6"},
- {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:94c4381ffba9cc508b37d2e536b418d5ea9cfdc2848b9a7fea6aebad4ec6aac1"},
- {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c31ad0c0c507894e3eaa843415841995bf8de4d6b2d24c6e33099f4bc9fc0d4f"},
- {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0912b8a8fadeb32ff67a3ed44249448c20148397c1ed905d5dac185b4ca547bb"},
- {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d93400c18596b7dc4794d48a63fb361b01a0d8eb39f28800dc900c8fbdaca91"},
- {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d00f3c5e0d764a5c9aa5a62d99728c56d455310bcc288a79cab10157b3af426f"},
- {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d742c36ed44f2798c8d3f4bc511f479b9ceef2b93f348671184139e7d708042c"},
- {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:814375093edae5f1cb31e3407997cf3eacefb9010f96df10d64829362ae2df69"},
- {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8224f98be68a84b19f48e0bdc14224b5a71339aff3a27df69989fa47d01296f3"},
- {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d9a487ef090aea982d748b1b0d74fe7c3950b109df967630a20584f9a99c0683"},
- {file = "aiohttp-3.10.5-cp310-cp310-win32.whl", hash = "sha256:d9ef084e3dc690ad50137cc05831c52b6ca428096e6deb3c43e95827f531d5ef"},
- {file = "aiohttp-3.10.5-cp310-cp310-win_amd64.whl", hash = "sha256:66bf9234e08fe561dccd62083bf67400bdbf1c67ba9efdc3dac03650e97c6088"},
- {file = "aiohttp-3.10.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8c6a4e5e40156d72a40241a25cc226051c0a8d816610097a8e8f517aeacd59a2"},
- {file = "aiohttp-3.10.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c634a3207a5445be65536d38c13791904fda0748b9eabf908d3fe86a52941cf"},
- {file = "aiohttp-3.10.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4aff049b5e629ef9b3e9e617fa6e2dfeda1bf87e01bcfecaf3949af9e210105e"},
- {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1942244f00baaacaa8155eca94dbd9e8cc7017deb69b75ef67c78e89fdad3c77"},
- {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e04a1f2a65ad2f93aa20f9ff9f1b672bf912413e5547f60749fa2ef8a644e061"},
- {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7f2bfc0032a00405d4af2ba27f3c429e851d04fad1e5ceee4080a1c570476697"},
- {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:424ae21498790e12eb759040bbb504e5e280cab64693d14775c54269fd1d2bb7"},
- {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:975218eee0e6d24eb336d0328c768ebc5d617609affaca5dbbd6dd1984f16ed0"},
- {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4120d7fefa1e2d8fb6f650b11489710091788de554e2b6f8347c7a20ceb003f5"},
- {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b90078989ef3fc45cf9221d3859acd1108af7560c52397ff4ace8ad7052a132e"},
- {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ba5a8b74c2a8af7d862399cdedce1533642fa727def0b8c3e3e02fcb52dca1b1"},
- {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:02594361128f780eecc2a29939d9dfc870e17b45178a867bf61a11b2a4367277"},
- {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8fb4fc029e135859f533025bc82047334e24b0d489e75513144f25408ecaf058"},
- {file = "aiohttp-3.10.5-cp311-cp311-win32.whl", hash = "sha256:e1ca1ef5ba129718a8fc827b0867f6aa4e893c56eb00003b7367f8a733a9b072"},
- {file = "aiohttp-3.10.5-cp311-cp311-win_amd64.whl", hash = "sha256:349ef8a73a7c5665cca65c88ab24abe75447e28aa3bc4c93ea5093474dfdf0ff"},
- {file = "aiohttp-3.10.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:305be5ff2081fa1d283a76113b8df7a14c10d75602a38d9f012935df20731487"},
- {file = "aiohttp-3.10.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3a1c32a19ee6bbde02f1cb189e13a71b321256cc1d431196a9f824050b160d5a"},
- {file = "aiohttp-3.10.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:61645818edd40cc6f455b851277a21bf420ce347baa0b86eaa41d51ef58ba23d"},
- {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c225286f2b13bab5987425558baa5cbdb2bc925b2998038fa028245ef421e75"},
- {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ba01ebc6175e1e6b7275c907a3a36be48a2d487549b656aa90c8a910d9f3178"},
- {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8eaf44ccbc4e35762683078b72bf293f476561d8b68ec8a64f98cf32811c323e"},
- {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c43eb1ab7cbf411b8e387dc169acb31f0ca0d8c09ba63f9eac67829585b44f"},
- {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de7a5299827253023c55ea549444e058c0eb496931fa05d693b95140a947cb73"},
- {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4790f0e15f00058f7599dab2b206d3049d7ac464dc2e5eae0e93fa18aee9e7bf"},
- {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:44b324a6b8376a23e6ba25d368726ee3bc281e6ab306db80b5819999c737d820"},
- {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0d277cfb304118079e7044aad0b76685d30ecb86f83a0711fc5fb257ffe832ca"},
- {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:54d9ddea424cd19d3ff6128601a4a4d23d54a421f9b4c0fff740505813739a91"},
- {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4f1c9866ccf48a6df2b06823e6ae80573529f2af3a0992ec4fe75b1a510df8a6"},
- {file = "aiohttp-3.10.5-cp312-cp312-win32.whl", hash = "sha256:dc4826823121783dccc0871e3f405417ac116055bf184ac04c36f98b75aacd12"},
- {file = "aiohttp-3.10.5-cp312-cp312-win_amd64.whl", hash = "sha256:22c0a23a3b3138a6bf76fc553789cb1a703836da86b0f306b6f0dc1617398abc"},
- {file = "aiohttp-3.10.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7f6b639c36734eaa80a6c152a238242bedcee9b953f23bb887e9102976343092"},
- {file = "aiohttp-3.10.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f29930bc2921cef955ba39a3ff87d2c4398a0394ae217f41cb02d5c26c8b1b77"},
- {file = "aiohttp-3.10.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f489a2c9e6455d87eabf907ac0b7d230a9786be43fbe884ad184ddf9e9c1e385"},
- {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:123dd5b16b75b2962d0fff566effb7a065e33cd4538c1692fb31c3bda2bfb972"},
- {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b98e698dc34966e5976e10bbca6d26d6724e6bdea853c7c10162a3235aba6e16"},
- {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3b9162bab7e42f21243effc822652dc5bb5e8ff42a4eb62fe7782bcbcdfacf6"},
- {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1923a5c44061bffd5eebeef58cecf68096e35003907d8201a4d0d6f6e387ccaa"},
- {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d55f011da0a843c3d3df2c2cf4e537b8070a419f891c930245f05d329c4b0689"},
- {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:afe16a84498441d05e9189a15900640a2d2b5e76cf4efe8cbb088ab4f112ee57"},
- {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8112fb501b1e0567a1251a2fd0747baae60a4ab325a871e975b7bb67e59221f"},
- {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1e72589da4c90337837fdfe2026ae1952c0f4a6e793adbbfbdd40efed7c63599"},
- {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:4d46c7b4173415d8e583045fbc4daa48b40e31b19ce595b8d92cf639396c15d5"},
- {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:33e6bc4bab477c772a541f76cd91e11ccb6d2efa2b8d7d7883591dfb523e5987"},
- {file = "aiohttp-3.10.5-cp313-cp313-win32.whl", hash = "sha256:c58c6837a2c2a7cf3133983e64173aec11f9c2cd8e87ec2fdc16ce727bcf1a04"},
- {file = "aiohttp-3.10.5-cp313-cp313-win_amd64.whl", hash = "sha256:38172a70005252b6893088c0f5e8a47d173df7cc2b2bd88650957eb84fcf5022"},
- {file = "aiohttp-3.10.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f6f18898ace4bcd2d41a122916475344a87f1dfdec626ecde9ee802a711bc569"},
- {file = "aiohttp-3.10.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5ede29d91a40ba22ac1b922ef510aab871652f6c88ef60b9dcdf773c6d32ad7a"},
- {file = "aiohttp-3.10.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:673f988370f5954df96cc31fd99c7312a3af0a97f09e407399f61583f30da9bc"},
- {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58718e181c56a3c02d25b09d4115eb02aafe1a732ce5714ab70326d9776457c3"},
- {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b38b1570242fbab8d86a84128fb5b5234a2f70c2e32f3070143a6d94bc854cf"},
- {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:074d1bff0163e107e97bd48cad9f928fa5a3eb4b9d33366137ffce08a63e37fe"},
- {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd31f176429cecbc1ba499d4aba31aaccfea488f418d60376b911269d3b883c5"},
- {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7384d0b87d4635ec38db9263e6a3f1eb609e2e06087f0aa7f63b76833737b471"},
- {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8989f46f3d7ef79585e98fa991e6ded55d2f48ae56d2c9fa5e491a6e4effb589"},
- {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:c83f7a107abb89a227d6c454c613e7606c12a42b9a4ca9c5d7dad25d47c776ae"},
- {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cde98f323d6bf161041e7627a5fd763f9fd829bcfcd089804a5fdce7bb6e1b7d"},
- {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:676f94c5480d8eefd97c0c7e3953315e4d8c2b71f3b49539beb2aa676c58272f"},
- {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2d21ac12dc943c68135ff858c3a989f2194a709e6e10b4c8977d7fcd67dfd511"},
- {file = "aiohttp-3.10.5-cp38-cp38-win32.whl", hash = "sha256:17e997105bd1a260850272bfb50e2a328e029c941c2708170d9d978d5a30ad9a"},
- {file = "aiohttp-3.10.5-cp38-cp38-win_amd64.whl", hash = "sha256:1c19de68896747a2aa6257ae4cf6ef59d73917a36a35ee9d0a6f48cff0f94db8"},
- {file = "aiohttp-3.10.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7e2fe37ac654032db1f3499fe56e77190282534810e2a8e833141a021faaab0e"},
- {file = "aiohttp-3.10.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f5bf3ead3cb66ab990ee2561373b009db5bc0e857549b6c9ba84b20bc462e172"},
- {file = "aiohttp-3.10.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1b2c16a919d936ca87a3c5f0e43af12a89a3ce7ccbce59a2d6784caba945b68b"},
- {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad146dae5977c4dd435eb31373b3fe9b0b1bf26858c6fc452bf6af394067e10b"},
- {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c5c6fa16412b35999320f5c9690c0f554392dc222c04e559217e0f9ae244b92"},
- {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:95c4dc6f61d610bc0ee1edc6f29d993f10febfe5b76bb470b486d90bbece6b22"},
- {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da452c2c322e9ce0cfef392e469a26d63d42860f829026a63374fde6b5c5876f"},
- {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:898715cf566ec2869d5cb4d5fb4be408964704c46c96b4be267442d265390f32"},
- {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:391cc3a9c1527e424c6865e087897e766a917f15dddb360174a70467572ac6ce"},
- {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:380f926b51b92d02a34119d072f178d80bbda334d1a7e10fa22d467a66e494db"},
- {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce91db90dbf37bb6fa0997f26574107e1b9d5ff939315247b7e615baa8ec313b"},
- {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9093a81e18c45227eebe4c16124ebf3e0d893830c6aca7cc310bfca8fe59d857"},
- {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ee40b40aa753d844162dcc80d0fe256b87cba48ca0054f64e68000453caead11"},
- {file = "aiohttp-3.10.5-cp39-cp39-win32.whl", hash = "sha256:03f2645adbe17f274444953bdea69f8327e9d278d961d85657cb0d06864814c1"},
- {file = "aiohttp-3.10.5-cp39-cp39-win_amd64.whl", hash = "sha256:d17920f18e6ee090bdd3d0bfffd769d9f2cb4c8ffde3eb203777a3895c128862"},
- {file = "aiohttp-3.10.5.tar.gz", hash = "sha256:f071854b47d39591ce9a17981c46790acb30518e2f83dfca8db2dfa091178691"},
+ {file = "aiohttp-3.10.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:682836fc672972cc3101cc9e30d49c5f7e8f1d010478d46119fe725a4545acfd"},
+ {file = "aiohttp-3.10.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:289fa8a20018d0d5aa9e4b35d899bd51bcb80f0d5f365d9a23e30dac3b79159b"},
+ {file = "aiohttp-3.10.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8617c96a20dd57e7e9d398ff9d04f3d11c4d28b1767273a5b1a018ada5a654d3"},
+ {file = "aiohttp-3.10.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdbeff1b062751c2a2a55b171f7050fb7073633c699299d042e962aacdbe1a07"},
+ {file = "aiohttp-3.10.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ea35d849cdd4a9268f910bff4497baebbc1aa3f2f625fd8ccd9ac99c860c621"},
+ {file = "aiohttp-3.10.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:473961b3252f3b949bb84873d6e268fb6d8aa0ccc6eb7404fa58c76a326bb8e1"},
+ {file = "aiohttp-3.10.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d2665c5df629eb2f981dab244c01bfa6cdc185f4ffa026639286c4d56fafb54"},
+ {file = "aiohttp-3.10.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25d92f794f1332f656e3765841fc2b7ad5c26c3f3d01e8949eeb3495691cf9f4"},
+ {file = "aiohttp-3.10.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9bd6b2033993d5ae80883bb29b83fb2b432270bbe067c2f53cc73bb57c46065f"},
+ {file = "aiohttp-3.10.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d7f408c43f5e75ea1edc152fb375e8f46ef916f545fb66d4aebcbcfad05e2796"},
+ {file = "aiohttp-3.10.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:cf8b8560aa965f87bf9c13bf9fed7025993a155ca0ce8422da74bf46d18c2f5f"},
+ {file = "aiohttp-3.10.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14477c4e52e2f17437b99893fd220ffe7d7ee41df5ebf931a92b8ca82e6fd094"},
+ {file = "aiohttp-3.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fb138fbf9f53928e779650f5ed26d0ea1ed8b2cab67f0ea5d63afa09fdc07593"},
+ {file = "aiohttp-3.10.6-cp310-cp310-win32.whl", hash = "sha256:9843d683b8756971797be171ead21511d2215a2d6e3c899c6e3107fbbe826791"},
+ {file = "aiohttp-3.10.6-cp310-cp310-win_amd64.whl", hash = "sha256:f8b8e49fe02f744d38352daca1dbef462c3874900bd8166516f6ea8e82b5aacf"},
+ {file = "aiohttp-3.10.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f52e54fd776ad0da1006708762213b079b154644db54bcfc62f06eaa5b896402"},
+ {file = "aiohttp-3.10.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:995ab1a238fd0d19dc65f2d222e5eb064e409665c6426a3e51d5101c1979ee84"},
+ {file = "aiohttp-3.10.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0749c4d5a08a802dd66ecdf59b2df4d76b900004017468a7bb736c3b5a3dd902"},
+ {file = "aiohttp-3.10.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e05b39158f2af0e2438cc2075cfc271f4ace0c3cc4a81ec95b27a0432e161951"},
+ {file = "aiohttp-3.10.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a9f196c970db2dcde4f24317e06615363349dc357cf4d7a3b0716c20ac6d7bcd"},
+ {file = "aiohttp-3.10.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:47647c8af04a70e07a2462931b0eba63146a13affa697afb4ecbab9d03a480ce"},
+ {file = "aiohttp-3.10.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:669c0efe7e99f6d94d63274c06344bd0e9c8daf184ce5602a29bc39e00a18720"},
+ {file = "aiohttp-3.10.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9721cdd83a994225352ca84cd537760d41a9da3c0eacb3ff534747ab8fba6d0"},
+ {file = "aiohttp-3.10.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0b82c8ebed66ce182893e7c0b6b60ba2ace45b1df104feb52380edae266a4850"},
+ {file = "aiohttp-3.10.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b169f8e755e541b72e714b89a831b315bbe70db44e33fead28516c9e13d5f931"},
+ {file = "aiohttp-3.10.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:0be3115753baf8b4153e64f9aa7bf6c0c64af57979aa900c31f496301b374570"},
+ {file = "aiohttp-3.10.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e1f80cd17d81a404b6e70ef22bfe1870bafc511728397634ad5f5efc8698df56"},
+ {file = "aiohttp-3.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6419728b08fb6380c66a470d2319cafcec554c81780e2114b7e150329b9a9a7f"},
+ {file = "aiohttp-3.10.6-cp311-cp311-win32.whl", hash = "sha256:bd294dcdc1afdc510bb51d35444003f14e327572877d016d576ac3b9a5888a27"},
+ {file = "aiohttp-3.10.6-cp311-cp311-win_amd64.whl", hash = "sha256:bf861da9a43d282d6dd9dcd64c23a0fccf2c5aa5cd7c32024513c8c79fb69de3"},
+ {file = "aiohttp-3.10.6-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:2708baccdc62f4b1251e59c2aac725936a900081f079b88843dabcab0feeeb27"},
+ {file = "aiohttp-3.10.6-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7475da7a5e2ccf1a1c86c8fee241e277f4874c96564d06f726d8df8e77683ef7"},
+ {file = "aiohttp-3.10.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:02108326574ff60267b7b35b17ac5c0bbd0008ccb942ce4c48b657bb90f0b8aa"},
+ {file = "aiohttp-3.10.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:029a019627b37fa9eac5c75cc54a6bb722c4ebbf5a54d8c8c0fb4dd8facf2702"},
+ {file = "aiohttp-3.10.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a637d387db6fdad95e293fab5433b775fd104ae6348d2388beaaa60d08b38c4"},
+ {file = "aiohttp-3.10.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dc1a16f3fc1944c61290d33c88dc3f09ba62d159b284c38c5331868425aca426"},
+ {file = "aiohttp-3.10.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81b292f37969f9cc54f4643f0be7dacabf3612b3b4a65413661cf6c350226787"},
+ {file = "aiohttp-3.10.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0754690a3a26e819173a34093798c155bafb21c3c640bff13be1afa1e9d421f9"},
+ {file = "aiohttp-3.10.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:164ecd32e65467d86843dbb121a6666c3deb23b460e3f8aefdcaacae79eb718a"},
+ {file = "aiohttp-3.10.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:438c5863feb761f7ca3270d48c292c334814459f61cc12bab5ba5b702d7c9e56"},
+ {file = "aiohttp-3.10.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ba18573bb1de1063d222f41de64a0d3741223982dcea863b3f74646faf618ec7"},
+ {file = "aiohttp-3.10.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c82a94ddec996413a905f622f3da02c4359952aab8d817c01cf9915419525e95"},
+ {file = "aiohttp-3.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92351aa5363fc3c1f872ca763f86730ced32b01607f0c9662b1fa711087968d0"},
+ {file = "aiohttp-3.10.6-cp312-cp312-win32.whl", hash = "sha256:3e15e33bfc73fa97c228f72e05e8795e163a693fd5323549f49367c76a6e5883"},
+ {file = "aiohttp-3.10.6-cp312-cp312-win_amd64.whl", hash = "sha256:fe517113fe4d35d9072b826c3e147d63c5f808ca8167d450b4f96c520c8a1d8d"},
+ {file = "aiohttp-3.10.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:482f74057ea13d387a7549d7a7ecb60e45146d15f3e58a2d93a0ad2d5a8457cd"},
+ {file = "aiohttp-3.10.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:03fa40d1450ee5196e843315ddf74a51afc7e83d489dbfc380eecefea74158b1"},
+ {file = "aiohttp-3.10.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e52e59ed5f4cc3a3acfe2a610f8891f216f486de54d95d6600a2c9ba1581f4d"},
+ {file = "aiohttp-3.10.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b3935a22c9e41a8000d90588bed96cf395ef572dbb409be44c6219c61d900d"},
+ {file = "aiohttp-3.10.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bef1480ee50f75abcfcb4b11c12de1005968ca9d0172aec4a5057ba9f2b644f"},
+ {file = "aiohttp-3.10.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:671745ea7db19693ce867359d503772177f0b20fa8f6ee1e74e00449f4c4151d"},
+ {file = "aiohttp-3.10.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b50b367308ca8c12e0b50cba5773bc9abe64c428d3fd2bbf5cd25aab37c77bf"},
+ {file = "aiohttp-3.10.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a504d7cdb431a777d05a124fd0b21efb94498efa743103ea01b1e3136d2e4fb"},
+ {file = "aiohttp-3.10.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:66bc81361131763660b969132a22edce2c4d184978ba39614e8f8f95db5c95f8"},
+ {file = "aiohttp-3.10.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:27cf19a38506e2e9f12fc17e55f118f04897b0a78537055d93a9de4bf3022e3d"},
+ {file = "aiohttp-3.10.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3468b39f977a11271517c6925b226720e148311039a380cc9117b1e2258a721f"},
+ {file = "aiohttp-3.10.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:9d26da22a793dfd424be1050712a70c0afd96345245c29aced1e35dbace03413"},
+ {file = "aiohttp-3.10.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:844d48ff9173d0b941abed8b2ea6a412f82b56d9ab1edb918c74000c15839362"},
+ {file = "aiohttp-3.10.6-cp313-cp313-win32.whl", hash = "sha256:2dd56e3c43660ed3bea67fd4c5025f1ac1f9ecf6f0b991a6e5efe2e678c490c5"},
+ {file = "aiohttp-3.10.6-cp313-cp313-win_amd64.whl", hash = "sha256:c91781d969fbced1993537f45efe1213bd6fccb4b37bfae2a026e20d6fbed206"},
+ {file = "aiohttp-3.10.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:4407a80bca3e694f2d2a523058e20e1f9f98a416619e04f6dc09dc910352ac8b"},
+ {file = "aiohttp-3.10.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1cb045ec5961f51af3e2c08cd6fe523f07cc6e345033adee711c49b7b91bb954"},
+ {file = "aiohttp-3.10.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4fabdcdc781a36b8fd7b2ca9dea8172f29a99e11d00ca0f83ffeb50958da84a1"},
+ {file = "aiohttp-3.10.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a9f42efcc2681790595ab3d03c0e52d01edc23a0973ea09f0dc8d295e12b8e"},
+ {file = "aiohttp-3.10.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cca776a440795db437d82c07455761c85bbcf3956221c3c23b8c93176c278ce7"},
+ {file = "aiohttp-3.10.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5582de171f0898139cf51dd9fcdc79b848e28d9abd68e837f0803fc9f30807b1"},
+ {file = "aiohttp-3.10.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:370e2d47575c53c817ee42a18acc34aad8da4dbdaac0a6c836d58878955f1477"},
+ {file = "aiohttp-3.10.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:444d1704e2af6b30766debed9be8a795958029e552fe77551355badb1944012c"},
+ {file = "aiohttp-3.10.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40271a2a375812967401c9ca8077de9368e09a43a964f4dce0ff603301ec9358"},
+ {file = "aiohttp-3.10.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f3af26f86863fad12e25395805bb0babbd49d512806af91ec9708a272b696248"},
+ {file = "aiohttp-3.10.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4752df44df48fd42b80f51d6a97553b482cda1274d9dc5df214a3a1aa5d8f018"},
+ {file = "aiohttp-3.10.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:2cd5290ab66cfca2f90045db2cc6434c1f4f9fbf97c9f1c316e785033782e7d2"},
+ {file = "aiohttp-3.10.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3427031064b0d5c95647e6369c4aa3c556402f324a3e18107cb09517abe5f962"},
+ {file = "aiohttp-3.10.6-cp38-cp38-win32.whl", hash = "sha256:614fc21e86adc28e4165a6391f851a6da6e9cbd7bb232d0df7718b453a89ee98"},
+ {file = "aiohttp-3.10.6-cp38-cp38-win_amd64.whl", hash = "sha256:58c5d7318a136a3874c78717dd6de57519bc64f6363c5827c2b1cb775bea71dd"},
+ {file = "aiohttp-3.10.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5db26bbca8e7968c4c977a0c640e0b9ce7224e1f4dcafa57870dc6ee28e27de6"},
+ {file = "aiohttp-3.10.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3fb4216e3ec0dbc01db5ba802f02ed78ad8f07121be54eb9e918448cc3f61b7c"},
+ {file = "aiohttp-3.10.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a976ef488f26e224079deb3d424f29144c6d5ba4ded313198169a8af8f47fb82"},
+ {file = "aiohttp-3.10.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a86610174de8a85a920e956e2d4f9945e7da89f29a00e95ac62a4a414c4ef4e"},
+ {file = "aiohttp-3.10.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:217791c6a399cc4f2e6577bb44344cba1f5714a2aebf6a0bea04cfa956658284"},
+ {file = "aiohttp-3.10.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ba3662d41abe2eab0eeec7ee56f33ef4e0b34858f38abf24377687f9e1fb00a5"},
+ {file = "aiohttp-3.10.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4dfa5ad4bce9ca30a76117fbaa1c1decf41ebb6c18a4e098df44298941566f9"},
+ {file = "aiohttp-3.10.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0009258e97502936d3bd5bf2ced15769629097d0abb81e6495fba1047824fe0"},
+ {file = "aiohttp-3.10.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0a75d5c9fb4f06c41d029ae70ad943c3a844c40c0a769d12be4b99b04f473d3d"},
+ {file = "aiohttp-3.10.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:8198b7c002aae2b40b2d16bfe724b9a90bcbc9b78b2566fc96131ef4e382574d"},
+ {file = "aiohttp-3.10.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4611db8c907f90fe86be112efdc2398cd7b4c8eeded5a4f0314b70fdea8feab0"},
+ {file = "aiohttp-3.10.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ff99ae06eef85c7a565854826114ced72765832ee16c7e3e766c5e4c5b98d20e"},
+ {file = "aiohttp-3.10.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7641920bdcc7cd2d3ddfb8bb9133a6c9536b09dbd49490b79e125180b2d25b93"},
+ {file = "aiohttp-3.10.6-cp39-cp39-win32.whl", hash = "sha256:e2e7d5591ea868d5ec82b90bbeb366a198715672841d46281b623e23079593db"},
+ {file = "aiohttp-3.10.6-cp39-cp39-win_amd64.whl", hash = "sha256:b504c08c45623bf5c7ca41be380156d925f00199b3970efd758aef4a77645feb"},
+ {file = "aiohttp-3.10.6.tar.gz", hash = "sha256:d2578ef941be0c2ba58f6f421a703527d08427237ed45ecb091fed6f83305336"},
]
[package.dependencies]
@@ -117,7 +117,7 @@ aiosignal = ">=1.1.2"
attrs = ">=17.3.0"
frozenlist = ">=1.1.1"
multidict = ">=4.5,<7.0"
-yarl = ">=1.0,<2.0"
+yarl = ">=1.12.0,<2.0"
[package.extras]
speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"]
@@ -149,13 +149,13 @@ files = [
[[package]]
name = "anyio"
-version = "4.5.0"
+version = "4.6.0"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "anyio-4.5.0-py3-none-any.whl", hash = "sha256:fdeb095b7cc5a5563175eedd926ec4ae55413bb4be5770c424af0ba46ccb4a78"},
- {file = "anyio-4.5.0.tar.gz", hash = "sha256:c5a275fe5ca0afd788001f58fca1e69e29ce706d746e317d660e21f70c530ef9"},
+ {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"},
+ {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"},
]
[package.dependencies]
@@ -762,7 +762,7 @@ inflect = ">=4.1.0,<6.0"
isort = ">=4.3.21,<6.0"
jinja2 = ">=2.10.1,<4.0"
packaging = "*"
-pydantic = {version = ">=1.10.0,<2.4.0 || >2.4.0,<3.0", extras = ["email"], markers = "python_version >= \"3.11\" and python_version < \"4.0\""}
+pydantic = {version = ">=1.10.0,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.4.0 || >2.4.0,<3.0", extras = ["email"], markers = "python_version >= \"3.12\" and python_version < \"4.0\""}
pyyaml = ">=6.0.1"
[package.extras]
@@ -773,33 +773,33 @@ validation = ["openapi-spec-validator (>=0.2.8,<0.7.0)", "prance (>=0.18.2)"]
[[package]]
name = "debugpy"
-version = "1.8.5"
+version = "1.8.6"
description = "An implementation of the Debug Adapter Protocol for Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "debugpy-1.8.5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:7e4d594367d6407a120b76bdaa03886e9eb652c05ba7f87e37418426ad2079f7"},
- {file = "debugpy-1.8.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4413b7a3ede757dc33a273a17d685ea2b0c09dbd312cc03f5534a0fd4d40750a"},
- {file = "debugpy-1.8.5-cp310-cp310-win32.whl", hash = "sha256:dd3811bd63632bb25eda6bd73bea8e0521794cda02be41fa3160eb26fc29e7ed"},
- {file = "debugpy-1.8.5-cp310-cp310-win_amd64.whl", hash = "sha256:b78c1250441ce893cb5035dd6f5fc12db968cc07f91cc06996b2087f7cefdd8e"},
- {file = "debugpy-1.8.5-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:606bccba19f7188b6ea9579c8a4f5a5364ecd0bf5a0659c8a5d0e10dcee3032a"},
- {file = "debugpy-1.8.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db9fb642938a7a609a6c865c32ecd0d795d56c1aaa7a7a5722d77855d5e77f2b"},
- {file = "debugpy-1.8.5-cp311-cp311-win32.whl", hash = "sha256:4fbb3b39ae1aa3e5ad578f37a48a7a303dad9a3d018d369bc9ec629c1cfa7408"},
- {file = "debugpy-1.8.5-cp311-cp311-win_amd64.whl", hash = "sha256:345d6a0206e81eb68b1493ce2fbffd57c3088e2ce4b46592077a943d2b968ca3"},
- {file = "debugpy-1.8.5-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:5b5c770977c8ec6c40c60d6f58cacc7f7fe5a45960363d6974ddb9b62dbee156"},
- {file = "debugpy-1.8.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0a65b00b7cdd2ee0c2cf4c7335fef31e15f1b7056c7fdbce9e90193e1a8c8cb"},
- {file = "debugpy-1.8.5-cp312-cp312-win32.whl", hash = "sha256:c9f7c15ea1da18d2fcc2709e9f3d6de98b69a5b0fff1807fb80bc55f906691f7"},
- {file = "debugpy-1.8.5-cp312-cp312-win_amd64.whl", hash = "sha256:28ced650c974aaf179231668a293ecd5c63c0a671ae6d56b8795ecc5d2f48d3c"},
- {file = "debugpy-1.8.5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:3df6692351172a42af7558daa5019651f898fc67450bf091335aa8a18fbf6f3a"},
- {file = "debugpy-1.8.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cd04a73eb2769eb0bfe43f5bfde1215c5923d6924b9b90f94d15f207a402226"},
- {file = "debugpy-1.8.5-cp38-cp38-win32.whl", hash = "sha256:8f913ee8e9fcf9d38a751f56e6de12a297ae7832749d35de26d960f14280750a"},
- {file = "debugpy-1.8.5-cp38-cp38-win_amd64.whl", hash = "sha256:a697beca97dad3780b89a7fb525d5e79f33821a8bc0c06faf1f1289e549743cf"},
- {file = "debugpy-1.8.5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:0a1029a2869d01cb777216af8c53cda0476875ef02a2b6ff8b2f2c9a4b04176c"},
- {file = "debugpy-1.8.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84c276489e141ed0b93b0af648eef891546143d6a48f610945416453a8ad406"},
- {file = "debugpy-1.8.5-cp39-cp39-win32.whl", hash = "sha256:ad84b7cde7fd96cf6eea34ff6c4a1b7887e0fe2ea46e099e53234856f9d99a34"},
- {file = "debugpy-1.8.5-cp39-cp39-win_amd64.whl", hash = "sha256:7b0fe36ed9d26cb6836b0a51453653f8f2e347ba7348f2bbfe76bfeb670bfb1c"},
- {file = "debugpy-1.8.5-py2.py3-none-any.whl", hash = "sha256:55919dce65b471eff25901acf82d328bbd5b833526b6c1364bd5133754777a44"},
- {file = "debugpy-1.8.5.zip", hash = "sha256:b2112cfeb34b4507399d298fe7023a16656fc553ed5246536060ca7bd0e668d0"},
+ {file = "debugpy-1.8.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:30f467c5345d9dfdcc0afdb10e018e47f092e383447500f125b4e013236bf14b"},
+ {file = "debugpy-1.8.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d73d8c52614432f4215d0fe79a7e595d0dd162b5c15233762565be2f014803b"},
+ {file = "debugpy-1.8.6-cp310-cp310-win32.whl", hash = "sha256:e3e182cd98eac20ee23a00653503315085b29ab44ed66269482349d307b08df9"},
+ {file = "debugpy-1.8.6-cp310-cp310-win_amd64.whl", hash = "sha256:e3a82da039cfe717b6fb1886cbbe5c4a3f15d7df4765af857f4307585121c2dd"},
+ {file = "debugpy-1.8.6-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:67479a94cf5fd2c2d88f9615e087fcb4fec169ec780464a3f2ba4a9a2bb79955"},
+ {file = "debugpy-1.8.6-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fb8653f6cbf1dd0a305ac1aa66ec246002145074ea57933978346ea5afdf70b"},
+ {file = "debugpy-1.8.6-cp311-cp311-win32.whl", hash = "sha256:cdaf0b9691879da2d13fa39b61c01887c34558d1ff6e5c30e2eb698f5384cd43"},
+ {file = "debugpy-1.8.6-cp311-cp311-win_amd64.whl", hash = "sha256:43996632bee7435583952155c06881074b9a742a86cee74e701d87ca532fe833"},
+ {file = "debugpy-1.8.6-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:db891b141fc6ee4b5fc6d1cc8035ec329cabc64bdd2ae672b4550c87d4ecb128"},
+ {file = "debugpy-1.8.6-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:567419081ff67da766c898ccf21e79f1adad0e321381b0dfc7a9c8f7a9347972"},
+ {file = "debugpy-1.8.6-cp312-cp312-win32.whl", hash = "sha256:c9834dfd701a1f6bf0f7f0b8b1573970ae99ebbeee68314116e0ccc5c78eea3c"},
+ {file = "debugpy-1.8.6-cp312-cp312-win_amd64.whl", hash = "sha256:e4ce0570aa4aca87137890d23b86faeadf184924ad892d20c54237bcaab75d8f"},
+ {file = "debugpy-1.8.6-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:df5dc9eb4ca050273b8e374a4cd967c43be1327eeb42bfe2f58b3cdfe7c68dcb"},
+ {file = "debugpy-1.8.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a85707c6a84b0c5b3db92a2df685b5230dd8fb8c108298ba4f11dba157a615a"},
+ {file = "debugpy-1.8.6-cp38-cp38-win32.whl", hash = "sha256:538c6cdcdcdad310bbefd96d7850be1cd46e703079cc9e67d42a9ca776cdc8a8"},
+ {file = "debugpy-1.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:22140bc02c66cda6053b6eb56dfe01bbe22a4447846581ba1dd6df2c9f97982d"},
+ {file = "debugpy-1.8.6-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:c1cef65cffbc96e7b392d9178dbfd524ab0750da6c0023c027ddcac968fd1caa"},
+ {file = "debugpy-1.8.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1e60bd06bb3cc5c0e957df748d1fab501e01416c43a7bdc756d2a992ea1b881"},
+ {file = "debugpy-1.8.6-cp39-cp39-win32.whl", hash = "sha256:f7158252803d0752ed5398d291dee4c553bb12d14547c0e1843ab74ee9c31123"},
+ {file = "debugpy-1.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:3358aa619a073b620cd0d51d8a6176590af24abcc3fe2e479929a154bf591b51"},
+ {file = "debugpy-1.8.6-py2.py3-none-any.whl", hash = "sha256:b48892df4d810eff21d3ef37274f4c60d32cdcafc462ad5647239036b0f0649f"},
+ {file = "debugpy-1.8.6.zip", hash = "sha256:c931a9371a86784cee25dec8d65bc2dc7a21f3f1552e3833d9ef8f919d22280a"},
]
[[package]]
@@ -1235,13 +1235,13 @@ zstd = ["zstandard (>=0.18.0)"]
[[package]]
name = "huggingface-hub"
-version = "0.25.0"
+version = "0.25.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.25.0-py3-none-any.whl", hash = "sha256:e2f357b35d72d5012cfd127108c4e14abcd61ba4ebc90a5a374dc2456cb34e12"},
- {file = "huggingface_hub-0.25.0.tar.gz", hash = "sha256:fb5fbe6c12fcd99d187ec7db95db9110fb1a20505f23040a5449a717c1a0db4d"},
+ {file = "huggingface_hub-0.25.1-py3-none-any.whl", hash = "sha256:a5158ded931b3188f54ea9028097312cb0acd50bffaaa2612014c3c526b44972"},
+ {file = "huggingface_hub-0.25.1.tar.gz", hash = "sha256:9ff7cb327343211fbd06e2b149b8f362fd1e389454f3f14c6db75a4999ee20ff"},
]
[package.dependencies]
@@ -1398,7 +1398,6 @@ prompt-toolkit = ">=3.0.41,<3.1.0"
pygments = ">=2.4.0"
stack-data = "*"
traitlets = ">=5.13.0"
-typing-extensions = {version = ">=4.6", markers = "python_version < \"3.12\""}
[package.extras]
all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"]
@@ -1905,13 +1904,13 @@ dev = ["Sphinx (>=5.1.1)", "black (==23.12.1)", "build (>=0.10.0)", "coverage (>
[[package]]
name = "litellm"
-version = "1.46.7"
+version = "1.48.3"
description = "Library to easily interface with LLM API providers"
optional = false
python-versions = "!=2.7.*,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.*,>=3.8"
files = [
- {file = "litellm-1.46.7-py3-none-any.whl", hash = "sha256:e330a144f4ed8fd22c19fa81c93ada22fd9f83a67cccdced935f79aa15181e57"},
- {file = "litellm-1.46.7.tar.gz", hash = "sha256:5e7aac56f47e441aa951ec9bf5fb8cfaa7ded1e2e312c6d0c07107cda5ee98a0"},
+ {file = "litellm-1.48.3-py3-none-any.whl", hash = "sha256:bc6f785ac1ce04ca83e734ccc1982f7cce3ed3ab8d3662baba1b636b6fb6789f"},
+ {file = "litellm-1.48.3.tar.gz", hash = "sha256:3be0d1b73240c6956cc9212e476c764e9287abc6fd4c7310b1d18699b5f1be93"},
]
[package.dependencies]
@@ -2510,13 +2509,13 @@ files = [
[[package]]
name = "openai"
-version = "1.46.1"
+version = "1.50.1"
description = "The official Python library for the openai API"
optional = false
python-versions = ">=3.7.1"
files = [
- {file = "openai-1.46.1-py3-none-any.whl", hash = "sha256:7517f07117cf66012bbc55c49fd6b983eaac0f3d2a09c90cba1140d4455e4290"},
- {file = "openai-1.46.1.tar.gz", hash = "sha256:e5cf7f268bf516de23686d496c9dae7f0dcdcd0e87af4d288deeab8329fcbbaf"},
+ {file = "openai-1.50.1-py3-none-any.whl", hash = "sha256:7967fc8372d5e005ad61514586fb286d593facafccedbee00416bc38ee07c2e6"},
+ {file = "openai-1.50.1.tar.gz", hash = "sha256:80cbdf275488894c70bfbad711dbba6f31ea71d579b97e364bfd99cdf030158e"},
]
[package.dependencies]
@@ -2556,44 +2555,57 @@ files = [
[[package]]
name = "pandas"
-version = "2.2.2"
+version = "2.2.3"
description = "Powerful data structures for data analysis, time series, and statistics"
optional = false
python-versions = ">=3.9"
files = [
- {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"},
- {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"},
- {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"},
- {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"},
- {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"},
- {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"},
- {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"},
- {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"},
- {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"},
- {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"},
- {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"},
- {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"},
- {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"},
- {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"},
- {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"},
- {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"},
- {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"},
- {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"},
- {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"},
- {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"},
- {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"},
- {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"},
- {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"},
- {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"},
- {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"},
- {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"},
- {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"},
- {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"},
- {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"},
+ {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"},
+ {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"},
+ {file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"},
+ {file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"},
+ {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"},
+ {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"},
+ {file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"},
+ {file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"},
+ {file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"},
+ {file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"},
+ {file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"},
+ {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"},
+ {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"},
+ {file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"},
+ {file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"},
+ {file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"},
+ {file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"},
+ {file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"},
+ {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"},
+ {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"},
+ {file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"},
+ {file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"},
+ {file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"},
+ {file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"},
+ {file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"},
+ {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"},
+ {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"},
+ {file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"},
+ {file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"},
+ {file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"},
+ {file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"},
+ {file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"},
+ {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"},
+ {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"},
+ {file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"},
+ {file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"},
+ {file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"},
+ {file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"},
+ {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"},
+ {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"},
+ {file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"},
+ {file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"},
]
[package.dependencies]
-numpy = {version = ">=1.23.2", markers = "python_version == \"3.11\""}
+numpy = {version = ">=1.26.0", markers = "python_version >= \"3.12\""}
python-dateutil = ">=2.8.2"
pytz = ">=2020.1"
tzdata = ">=2022.7"
@@ -2747,13 +2759,13 @@ files = [
[[package]]
name = "prometheus-client"
-version = "0.20.0"
+version = "0.21.0"
description = "Python client for the Prometheus monitoring system."
optional = false
python-versions = ">=3.8"
files = [
- {file = "prometheus_client-0.20.0-py3-none-any.whl", hash = "sha256:cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7"},
- {file = "prometheus_client-0.20.0.tar.gz", hash = "sha256:287629d00b147a32dcb2be0b9df905da599b2d82f80377083ec8463309a4bb89"},
+ {file = "prometheus_client-0.21.0-py3-none-any.whl", hash = "sha256:4fa6b4dd0ac16d58bb587c04b1caae65b8c5043e85f778f42f5f632f6af2e166"},
+ {file = "prometheus_client-0.21.0.tar.gz", hash = "sha256:96c83c606b71ff2b0a433c98889d275f51ffec6c5e267de37c7a2b5c9aa9233e"},
]
[package.extras]
@@ -2761,13 +2773,13 @@ twisted = ["twisted"]
[[package]]
name = "prompt-toolkit"
-version = "3.0.47"
+version = "3.0.48"
description = "Library for building powerful interactive command lines in Python"
optional = false
python-versions = ">=3.7.0"
files = [
- {file = "prompt_toolkit-3.0.47-py3-none-any.whl", hash = "sha256:0d7bfa67001d5e39d02c224b663abc33687405033a8c422d0d675a5a13361d10"},
- {file = "prompt_toolkit-3.0.47.tar.gz", hash = "sha256:1e1b29cb58080b1e69f207c893a1a7bf16d127a5c30c9d17a25a5d77792e5360"},
+ {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"},
+ {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"},
]
[package.dependencies]
@@ -3026,13 +3038,13 @@ pydantic = ">=1.9.0,<3.0.0"
[[package]]
name = "pydot"
-version = "3.0.1"
+version = "3.0.2"
description = "Python interface to Graphviz's Dot"
optional = false
python-versions = ">=3.8"
files = [
- {file = "pydot-3.0.1-py3-none-any.whl", hash = "sha256:43f1e878dc1ff7c1c2e3470a6999d4e9e97771c5c862440c2f0af0ba844c231f"},
- {file = "pydot-3.0.1.tar.gz", hash = "sha256:e18cf7f287c497d77b536a3d20a46284568fea390776dface6eabbdf1b1b5efc"},
+ {file = "pydot-3.0.2-py3-none-any.whl", hash = "sha256:99cedaa55d04abb0b2bc56d9981a6da781053dd5ac75c428e8dd53db53f90b14"},
+ {file = "pydot-3.0.2.tar.gz", hash = "sha256:9180da540b51b3aa09fbf81140b3edfbe2315d778e8589a7d0a4a69c41332bae"},
]
[package.dependencies]
@@ -3041,7 +3053,7 @@ pyparsing = ">=3.0.9"
[package.extras]
dev = ["chardet", "parameterized", "ruff"]
release = ["zest.releaser[recommended]"]
-tests = ["chardet", "parameterized", "ruff", "tox", "unittest-parallel"]
+tests = ["chardet", "parameterized", "pytest", "pytest-cov", "pytest-xdist[psutil]", "ruff", "tox"]
[[package]]
name = "pygments"
@@ -3952,13 +3964,13 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
[[package]]
name = "starlette"
-version = "0.38.5"
+version = "0.38.6"
description = "The little ASGI library that shines."
optional = false
python-versions = ">=3.8"
files = [
- {file = "starlette-0.38.5-py3-none-any.whl", hash = "sha256:632f420a9d13e3ee2a6f18f437b0a9f1faecb0bc42e1942aa2ea0e379a4c4206"},
- {file = "starlette-0.38.5.tar.gz", hash = "sha256:04a92830a9b6eb1442c766199d62260c3d4dc9c4f9188360626b1e0273cb7077"},
+ {file = "starlette-0.38.6-py3-none-any.whl", hash = "sha256:4517a1409e2e73ee4951214ba012052b9e16f60e90d73cfb06192c19203bbb05"},
+ {file = "starlette-0.38.6.tar.gz", hash = "sha256:863a1588f5574e70a821dadefb41e4881ea451a47a3cd1b4df359d4ffefe5ead"},
]
[package.dependencies]
@@ -4338,13 +4350,13 @@ typing-extensions = ">=3.7.4.3"
[[package]]
name = "types-protobuf"
-version = "5.27.0.20240907"
+version = "5.28.0.20240924"
description = "Typing stubs for protobuf"
optional = false
python-versions = ">=3.8"
files = [
- {file = "types-protobuf-5.27.0.20240907.tar.gz", hash = "sha256:bb6f90f66b18d4d1c75667b6586334b0573a6fcee5eb0142a7348a765a7cbadc"},
- {file = "types_protobuf-5.27.0.20240907-py3-none-any.whl", hash = "sha256:5443270534cc8072909ef7ad9e1421ccff924ca658749a6396c0c43d64c32676"},
+ {file = "types-protobuf-5.28.0.20240924.tar.gz", hash = "sha256:d181af8a256e5a91ce8d5adb53496e880efd9144c7d54483e3653332b60296f0"},
+ {file = "types_protobuf-5.28.0.20240924-py3-none-any.whl", hash = "sha256:5cecf612ccdefb7dc95f7a51fb502902f20fc2e6681cd500184aaa1b3931d6a7"},
]
[[package]]
@@ -4371,13 +4383,13 @@ files = [
[[package]]
name = "tzdata"
-version = "2024.1"
+version = "2024.2"
description = "Provider of IANA time zone data"
optional = false
python-versions = ">=2"
files = [
- {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"},
- {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"},
+ {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"},
+ {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"},
]
[[package]]
@@ -4527,103 +4539,103 @@ files = [
[[package]]
name = "yarl"
-version = "1.11.1"
+version = "1.13.1"
description = "Yet another URL library"
optional = false
python-versions = ">=3.8"
files = [
- {file = "yarl-1.11.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:400cd42185f92de559d29eeb529e71d80dfbd2f45c36844914a4a34297ca6f00"},
- {file = "yarl-1.11.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8258c86f47e080a258993eed877d579c71da7bda26af86ce6c2d2d072c11320d"},
- {file = "yarl-1.11.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2164cd9725092761fed26f299e3f276bb4b537ca58e6ff6b252eae9631b5c96e"},
- {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08ea567c16f140af8ddc7cb58e27e9138a1386e3e6e53982abaa6f2377b38cc"},
- {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:768ecc550096b028754ea28bf90fde071c379c62c43afa574edc6f33ee5daaec"},
- {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2909fa3a7d249ef64eeb2faa04b7957e34fefb6ec9966506312349ed8a7e77bf"},
- {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01a8697ec24f17c349c4f655763c4db70eebc56a5f82995e5e26e837c6eb0e49"},
- {file = "yarl-1.11.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e286580b6511aac7c3268a78cdb861ec739d3e5a2a53b4809faef6b49778eaff"},
- {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4179522dc0305c3fc9782549175c8e8849252fefeb077c92a73889ccbcd508ad"},
- {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:27fcb271a41b746bd0e2a92182df507e1c204759f460ff784ca614e12dd85145"},
- {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f61db3b7e870914dbd9434b560075e0366771eecbe6d2b5561f5bc7485f39efd"},
- {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:c92261eb2ad367629dc437536463dc934030c9e7caca861cc51990fe6c565f26"},
- {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d95b52fbef190ca87d8c42f49e314eace4fc52070f3dfa5f87a6594b0c1c6e46"},
- {file = "yarl-1.11.1-cp310-cp310-win32.whl", hash = "sha256:489fa8bde4f1244ad6c5f6d11bb33e09cf0d1d0367edb197619c3e3fc06f3d91"},
- {file = "yarl-1.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:476e20c433b356e16e9a141449f25161e6b69984fb4cdbd7cd4bd54c17844998"},
- {file = "yarl-1.11.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:946eedc12895873891aaceb39bceb484b4977f70373e0122da483f6c38faaa68"},
- {file = "yarl-1.11.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:21a7c12321436b066c11ec19c7e3cb9aec18884fe0d5b25d03d756a9e654edfe"},
- {file = "yarl-1.11.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c35f493b867912f6fda721a59cc7c4766d382040bdf1ddaeeaa7fa4d072f4675"},
- {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25861303e0be76b60fddc1250ec5986c42f0a5c0c50ff57cc30b1be199c00e63"},
- {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4b53f73077e839b3f89c992223f15b1d2ab314bdbdf502afdc7bb18e95eae27"},
- {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:327c724b01b8641a1bf1ab3b232fb638706e50f76c0b5bf16051ab65c868fac5"},
- {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4307d9a3417eea87715c9736d050c83e8c1904e9b7aada6ce61b46361b733d92"},
- {file = "yarl-1.11.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48a28bed68ab8fb7e380775f0029a079f08a17799cb3387a65d14ace16c12e2b"},
- {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:067b961853c8e62725ff2893226fef3d0da060656a9827f3f520fb1d19b2b68a"},
- {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8215f6f21394d1f46e222abeb06316e77ef328d628f593502d8fc2a9117bde83"},
- {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:498442e3af2a860a663baa14fbf23fb04b0dd758039c0e7c8f91cb9279799bff"},
- {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:69721b8effdb588cb055cc22f7c5105ca6fdaa5aeb3ea09021d517882c4a904c"},
- {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e969fa4c1e0b1a391f3fcbcb9ec31e84440253325b534519be0d28f4b6b533e"},
- {file = "yarl-1.11.1-cp311-cp311-win32.whl", hash = "sha256:7d51324a04fc4b0e097ff8a153e9276c2593106a811704025bbc1d6916f45ca6"},
- {file = "yarl-1.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:15061ce6584ece023457fb8b7a7a69ec40bf7114d781a8c4f5dcd68e28b5c53b"},
- {file = "yarl-1.11.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a4264515f9117be204935cd230fb2a052dd3792789cc94c101c535d349b3dab0"},
- {file = "yarl-1.11.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f41fa79114a1d2eddb5eea7b912d6160508f57440bd302ce96eaa384914cd265"},
- {file = "yarl-1.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:02da8759b47d964f9173c8675710720b468aa1c1693be0c9c64abb9d8d9a4867"},
- {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9361628f28f48dcf8b2f528420d4d68102f593f9c2e592bfc842f5fb337e44fd"},
- {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b91044952da03b6f95fdba398d7993dd983b64d3c31c358a4c89e3c19b6f7aef"},
- {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:74db2ef03b442276d25951749a803ddb6e270d02dda1d1c556f6ae595a0d76a8"},
- {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e975a2211952a8a083d1b9d9ba26472981ae338e720b419eb50535de3c02870"},
- {file = "yarl-1.11.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8aef97ba1dd2138112890ef848e17d8526fe80b21f743b4ee65947ea184f07a2"},
- {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a7915ea49b0c113641dc4d9338efa9bd66b6a9a485ffe75b9907e8573ca94b84"},
- {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:504cf0d4c5e4579a51261d6091267f9fd997ef58558c4ffa7a3e1460bd2336fa"},
- {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3de5292f9f0ee285e6bd168b2a77b2a00d74cbcfa420ed078456d3023d2f6dff"},
- {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a34e1e30f1774fa35d37202bbeae62423e9a79d78d0874e5556a593479fdf239"},
- {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:66b63c504d2ca43bf7221a1f72fbe981ff56ecb39004c70a94485d13e37ebf45"},
- {file = "yarl-1.11.1-cp312-cp312-win32.whl", hash = "sha256:a28b70c9e2213de425d9cba5ab2e7f7a1c8ca23a99c4b5159bf77b9c31251447"},
- {file = "yarl-1.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:17b5a386d0d36fb828e2fb3ef08c8829c1ebf977eef88e5367d1c8c94b454639"},
- {file = "yarl-1.11.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1fa2e7a406fbd45b61b4433e3aa254a2c3e14c4b3186f6e952d08a730807fa0c"},
- {file = "yarl-1.11.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:750f656832d7d3cb0c76be137ee79405cc17e792f31e0a01eee390e383b2936e"},
- {file = "yarl-1.11.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0b8486f322d8f6a38539136a22c55f94d269addb24db5cb6f61adc61eabc9d93"},
- {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fce4da3703ee6048ad4138fe74619c50874afe98b1ad87b2698ef95bf92c96d"},
- {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed653638ef669e0efc6fe2acb792275cb419bf9cb5c5049399f3556995f23c7"},
- {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18ac56c9dd70941ecad42b5a906820824ca72ff84ad6fa18db33c2537ae2e089"},
- {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:688654f8507464745ab563b041d1fb7dab5d9912ca6b06e61d1c4708366832f5"},
- {file = "yarl-1.11.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4973eac1e2ff63cf187073cd4e1f1148dcd119314ab79b88e1b3fad74a18c9d5"},
- {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:964a428132227edff96d6f3cf261573cb0f1a60c9a764ce28cda9525f18f7786"},
- {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6d23754b9939cbab02c63434776df1170e43b09c6a517585c7ce2b3d449b7318"},
- {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c2dc4250fe94d8cd864d66018f8344d4af50e3758e9d725e94fecfa27588ff82"},
- {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09696438cb43ea6f9492ef237761b043f9179f455f405279e609f2bc9100212a"},
- {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:999bfee0a5b7385a0af5ffb606393509cfde70ecca4f01c36985be6d33e336da"},
- {file = "yarl-1.11.1-cp313-cp313-win32.whl", hash = "sha256:ce928c9c6409c79e10f39604a7e214b3cb69552952fbda8d836c052832e6a979"},
- {file = "yarl-1.11.1-cp313-cp313-win_amd64.whl", hash = "sha256:501c503eed2bb306638ccb60c174f856cc3246c861829ff40eaa80e2f0330367"},
- {file = "yarl-1.11.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dae7bd0daeb33aa3e79e72877d3d51052e8b19c9025ecf0374f542ea8ec120e4"},
- {file = "yarl-1.11.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3ff6b1617aa39279fe18a76c8d165469c48b159931d9b48239065767ee455b2b"},
- {file = "yarl-1.11.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3257978c870728a52dcce8c2902bf01f6c53b65094b457bf87b2644ee6238ddc"},
- {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f351fa31234699d6084ff98283cb1e852270fe9e250a3b3bf7804eb493bd937"},
- {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8aef1b64da41d18026632d99a06b3fefe1d08e85dd81d849fa7c96301ed22f1b"},
- {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7175a87ab8f7fbde37160a15e58e138ba3b2b0e05492d7351314a250d61b1591"},
- {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba444bdd4caa2a94456ef67a2f383710928820dd0117aae6650a4d17029fa25e"},
- {file = "yarl-1.11.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ea9682124fc062e3d931c6911934a678cb28453f957ddccf51f568c2f2b5e05"},
- {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8418c053aeb236b20b0ab8fa6bacfc2feaaf7d4683dd96528610989c99723d5f"},
- {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:61a5f2c14d0a1adfdd82258f756b23a550c13ba4c86c84106be4c111a3a4e413"},
- {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f3a6d90cab0bdf07df8f176eae3a07127daafcf7457b997b2bf46776da2c7eb7"},
- {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:077da604852be488c9a05a524068cdae1e972b7dc02438161c32420fb4ec5e14"},
- {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:15439f3c5c72686b6c3ff235279630d08936ace67d0fe5c8d5bbc3ef06f5a420"},
- {file = "yarl-1.11.1-cp38-cp38-win32.whl", hash = "sha256:238a21849dd7554cb4d25a14ffbfa0ef380bb7ba201f45b144a14454a72ffa5a"},
- {file = "yarl-1.11.1-cp38-cp38-win_amd64.whl", hash = "sha256:67459cf8cf31da0e2cbdb4b040507e535d25cfbb1604ca76396a3a66b8ba37a6"},
- {file = "yarl-1.11.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:884eab2ce97cbaf89f264372eae58388862c33c4f551c15680dd80f53c89a269"},
- {file = "yarl-1.11.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a336eaa7ee7e87cdece3cedb395c9657d227bfceb6781295cf56abcd3386a26"},
- {file = "yarl-1.11.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87f020d010ba80a247c4abc335fc13421037800ca20b42af5ae40e5fd75e7909"},
- {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:637c7ddb585a62d4469f843dac221f23eec3cbad31693b23abbc2c366ad41ff4"},
- {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:48dfd117ab93f0129084577a07287376cc69c08138694396f305636e229caa1a"},
- {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e0ae31fb5ccab6eda09ba1494e87eb226dcbd2372dae96b87800e1dcc98804"},
- {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f46f81501160c28d0c0b7333b4f7be8983dbbc161983b6fb814024d1b4952f79"},
- {file = "yarl-1.11.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:04293941646647b3bfb1719d1d11ff1028e9c30199509a844da3c0f5919dc520"},
- {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:250e888fa62d73e721f3041e3a9abf427788a1934b426b45e1b92f62c1f68366"},
- {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e8f63904df26d1a66aabc141bfd258bf738b9bc7bc6bdef22713b4f5ef789a4c"},
- {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:aac44097d838dda26526cffb63bdd8737a2dbdf5f2c68efb72ad83aec6673c7e"},
- {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:267b24f891e74eccbdff42241c5fb4f974de2d6271dcc7d7e0c9ae1079a560d9"},
- {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6907daa4b9d7a688063ed098c472f96e8181733c525e03e866fb5db480a424df"},
- {file = "yarl-1.11.1-cp39-cp39-win32.whl", hash = "sha256:14438dfc5015661f75f85bc5adad0743678eefee266ff0c9a8e32969d5d69f74"},
- {file = "yarl-1.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:94d0caaa912bfcdc702a4204cd5e2bb01eb917fc4f5ea2315aa23962549561b0"},
- {file = "yarl-1.11.1-py3-none-any.whl", hash = "sha256:72bf26f66456baa0584eff63e44545c9f0eaed9b73cb6601b647c91f14c11f38"},
- {file = "yarl-1.11.1.tar.gz", hash = "sha256:1bb2d9e212fb7449b8fb73bc461b51eaa17cc8430b4a87d87be7b25052d92f53"},
+ {file = "yarl-1.13.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:82e692fb325013a18a5b73a4fed5a1edaa7c58144dc67ad9ef3d604eccd451ad"},
+ {file = "yarl-1.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df4e82e68f43a07735ae70a2d84c0353e58e20add20ec0af611f32cd5ba43fb4"},
+ {file = "yarl-1.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ec9dd328016d8d25702a24ee274932aebf6be9787ed1c28d021945d264235b3c"},
+ {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5820bd4178e6a639b3ef1db8b18500a82ceab6d8b89309e121a6859f56585b05"},
+ {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86c438ce920e089c8c2388c7dcc8ab30dfe13c09b8af3d306bcabb46a053d6f7"},
+ {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3de86547c820e4f4da4606d1c8ab5765dd633189791f15247706a2eeabc783ae"},
+ {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca53632007c69ddcdefe1e8cbc3920dd88825e618153795b57e6ebcc92e752a"},
+ {file = "yarl-1.13.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4ee1d240b84e2f213565f0ec08caef27a0e657d4c42859809155cf3a29d1735"},
+ {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c49f3e379177f4477f929097f7ed4b0622a586b0aa40c07ac8c0f8e40659a1ac"},
+ {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5c5e32fef09ce101fe14acd0f498232b5710effe13abac14cd95de9c274e689e"},
+ {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ab9524e45ee809a083338a749af3b53cc7efec458c3ad084361c1dbf7aaf82a2"},
+ {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:b1481c048fe787f65e34cb06f7d6824376d5d99f1231eae4778bbe5c3831076d"},
+ {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:31497aefd68036d8e31bfbacef915826ca2e741dbb97a8d6c7eac66deda3b606"},
+ {file = "yarl-1.13.1-cp310-cp310-win32.whl", hash = "sha256:1fa56f34b2236f5192cb5fceba7bbb09620e5337e0b6dfe2ea0ddbd19dd5b154"},
+ {file = "yarl-1.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:1bbb418f46c7f7355084833051701b2301092e4611d9e392360c3ba2e3e69f88"},
+ {file = "yarl-1.13.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:216a6785f296169ed52cd7dcdc2612f82c20f8c9634bf7446327f50398732a51"},
+ {file = "yarl-1.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:40c6e73c03a6befb85b72da213638b8aaa80fe4136ec8691560cf98b11b8ae6e"},
+ {file = "yarl-1.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2430cf996113abe5aee387d39ee19529327205cda975d2b82c0e7e96e5fdabdc"},
+ {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fb4134cc6e005b99fa29dbc86f1ea0a298440ab6b07c6b3ee09232a3b48f495"},
+ {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:309c104ecf67626c033845b860d31594a41343766a46fa58c3309c538a1e22b2"},
+ {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f90575e9fe3aae2c1e686393a9689c724cd00045275407f71771ae5d690ccf38"},
+ {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d2e1626be8712333a9f71270366f4a132f476ffbe83b689dd6dc0d114796c74"},
+ {file = "yarl-1.13.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b66c87da3c6da8f8e8b648878903ca54589038a0b1e08dde2c86d9cd92d4ac9"},
+ {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cf1ad338620249f8dd6d4b6a91a69d1f265387df3697ad5dc996305cf6c26fb2"},
+ {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9915300fe5a0aa663c01363db37e4ae8e7c15996ebe2c6cce995e7033ff6457f"},
+ {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:703b0f584fcf157ef87816a3c0ff868e8c9f3c370009a8b23b56255885528f10"},
+ {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:1d8e3ca29f643dd121f264a7c89f329f0fcb2e4461833f02de6e39fef80f89da"},
+ {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7055bbade838d68af73aea13f8c86588e4bcc00c2235b4b6d6edb0dbd174e246"},
+ {file = "yarl-1.13.1-cp311-cp311-win32.whl", hash = "sha256:a3442c31c11088e462d44a644a454d48110f0588de830921fd201060ff19612a"},
+ {file = "yarl-1.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:81bad32c8f8b5897c909bf3468bf601f1b855d12f53b6af0271963ee67fff0d2"},
+ {file = "yarl-1.13.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f452cc1436151387d3d50533523291d5f77c6bc7913c116eb985304abdbd9ec9"},
+ {file = "yarl-1.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9cec42a20eae8bebf81e9ce23fb0d0c729fc54cf00643eb251ce7c0215ad49fe"},
+ {file = "yarl-1.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d959fe96e5c2712c1876d69af0507d98f0b0e8d81bee14cfb3f6737470205419"},
+ {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8c837ab90c455f3ea8e68bee143472ee87828bff19ba19776e16ff961425b57"},
+ {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:94a993f976cdcb2dc1b855d8b89b792893220db8862d1a619efa7451817c836b"},
+ {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b2442a415a5f4c55ced0fade7b72123210d579f7d950e0b5527fc598866e62c"},
+ {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fdbf0418489525231723cdb6c79e7738b3cbacbaed2b750cb033e4ea208f220"},
+ {file = "yarl-1.13.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b7f6e699304717fdc265a7e1922561b02a93ceffdaefdc877acaf9b9f3080b8"},
+ {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bcd5bf4132e6a8d3eb54b8d56885f3d3a38ecd7ecae8426ecf7d9673b270de43"},
+ {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2a93a4557f7fc74a38ca5a404abb443a242217b91cd0c4840b1ebedaad8919d4"},
+ {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:22b739f99c7e4787922903f27a892744189482125cc7b95b747f04dd5c83aa9f"},
+ {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2db874dd1d22d4c2c657807562411ffdfabec38ce4c5ce48b4c654be552759dc"},
+ {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4feaaa4742517eaceafcbe74595ed335a494c84634d33961214b278126ec1485"},
+ {file = "yarl-1.13.1-cp312-cp312-win32.whl", hash = "sha256:bbf9c2a589be7414ac4a534d54e4517d03f1cbb142c0041191b729c2fa23f320"},
+ {file = "yarl-1.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:d07b52c8c450f9366c34aa205754355e933922c79135125541daae6cbf31c799"},
+ {file = "yarl-1.13.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:95c6737f28069153c399d875317f226bbdea939fd48a6349a3b03da6829fb550"},
+ {file = "yarl-1.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:cd66152561632ed4b2a9192e7f8e5a1d41e28f58120b4761622e0355f0fe034c"},
+ {file = "yarl-1.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6a2acde25be0cf9be23a8f6cbd31734536a264723fca860af3ae5e89d771cd71"},
+ {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18595e6a2ee0826bf7dfdee823b6ab55c9b70e8f80f8b77c37e694288f5de1"},
+ {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a31d21089894942f7d9a8df166b495101b7258ff11ae0abec58e32daf8088813"},
+ {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:45f209fb4bbfe8630e3d2e2052535ca5b53d4ce2d2026bed4d0637b0416830da"},
+ {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f722f30366474a99745533cc4015b1781ee54b08de73260b2bbe13316079851"},
+ {file = "yarl-1.13.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3bf60444269345d712838bb11cc4eadaf51ff1a364ae39ce87a5ca8ad3bb2c8"},
+ {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:942c80a832a79c3707cca46bd12ab8aa58fddb34b1626d42b05aa8f0bcefc206"},
+ {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:44b07e1690f010c3c01d353b5790ec73b2f59b4eae5b0000593199766b3f7a5c"},
+ {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:396e59b8de7e4d59ff5507fb4322d2329865b909f29a7ed7ca37e63ade7f835c"},
+ {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3bb83a0f12701c0b91112a11148b5217617982e1e466069d0555be9b372f2734"},
+ {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c92b89bffc660f1274779cb6fbb290ec1f90d6dfe14492523a0667f10170de26"},
+ {file = "yarl-1.13.1-cp313-cp313-win32.whl", hash = "sha256:269c201bbc01d2cbba5b86997a1e0f73ba5e2f471cfa6e226bcaa7fd664b598d"},
+ {file = "yarl-1.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:1d0828e17fa701b557c6eaed5edbd9098eb62d8838344486248489ff233998b8"},
+ {file = "yarl-1.13.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8be8cdfe20787e6a5fcbd010f8066227e2bb9058331a4eccddec6c0db2bb85b2"},
+ {file = "yarl-1.13.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:08d7148ff11cb8e886d86dadbfd2e466a76d5dd38c7ea8ebd9b0e07946e76e4b"},
+ {file = "yarl-1.13.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4afdf84610ca44dcffe8b6c22c68f309aff96be55f5ea2fa31c0c225d6b83e23"},
+ {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0d12fe78dcf60efa205e9a63f395b5d343e801cf31e5e1dda0d2c1fb618073d"},
+ {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298c1eecfd3257aa16c0cb0bdffb54411e3e831351cd69e6b0739be16b1bdaa8"},
+ {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c14c16831b565707149c742d87a6203eb5597f4329278446d5c0ae7a1a43928e"},
+ {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a9bacedbb99685a75ad033fd4de37129449e69808e50e08034034c0bf063f99"},
+ {file = "yarl-1.13.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:658e8449b84b92a4373f99305de042b6bd0d19bf2080c093881e0516557474a5"},
+ {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:373f16f38721c680316a6a00ae21cc178e3a8ef43c0227f88356a24c5193abd6"},
+ {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:45d23c4668d4925688e2ea251b53f36a498e9ea860913ce43b52d9605d3d8177"},
+ {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f7917697bcaa3bc3e83db91aa3a0e448bf5cde43c84b7fc1ae2427d2417c0224"},
+ {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:5989a38ba1281e43e4663931a53fbf356f78a0325251fd6af09dd03b1d676a09"},
+ {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:11b3ca8b42a024513adce810385fcabdd682772411d95bbbda3b9ed1a4257644"},
+ {file = "yarl-1.13.1-cp38-cp38-win32.whl", hash = "sha256:dcaef817e13eafa547cdfdc5284fe77970b891f731266545aae08d6cce52161e"},
+ {file = "yarl-1.13.1-cp38-cp38-win_amd64.whl", hash = "sha256:7addd26594e588503bdef03908fc207206adac5bd90b6d4bc3e3cf33a829f57d"},
+ {file = "yarl-1.13.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a0ae6637b173d0c40b9c1462e12a7a2000a71a3258fa88756a34c7d38926911c"},
+ {file = "yarl-1.13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:576365c9f7469e1f6124d67b001639b77113cfd05e85ce0310f5f318fd02fe85"},
+ {file = "yarl-1.13.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:78f271722423b2d4851cf1f4fa1a1c4833a128d020062721ba35e1a87154a049"},
+ {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d74f3c335cfe9c21ea78988e67f18eb9822f5d31f88b41aec3a1ec5ecd32da5"},
+ {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1891d69a6ba16e89473909665cd355d783a8a31bc84720902c5911dbb6373465"},
+ {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fb382fd7b4377363cc9f13ba7c819c3c78ed97c36a82f16f3f92f108c787cbbf"},
+ {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c8854b9f80693d20cec797d8e48a848c2fb273eb6f2587b57763ccba3f3bd4b"},
+ {file = "yarl-1.13.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbf2c3f04ff50f16404ce70f822cdc59760e5e2d7965905f0e700270feb2bbfc"},
+ {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fb9f59f3848edf186a76446eb8bcf4c900fe147cb756fbbd730ef43b2e67c6a7"},
+ {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ef9b85fa1bc91c4db24407e7c4da93a5822a73dd4513d67b454ca7064e8dc6a3"},
+ {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:098b870c18f1341786f290b4d699504e18f1cd050ed179af8123fd8232513424"},
+ {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:8c723c91c94a3bc8033dd2696a0f53e5d5f8496186013167bddc3fb5d9df46a3"},
+ {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:44a4c40a6f84e4d5955b63462a0e2a988f8982fba245cf885ce3be7618f6aa7d"},
+ {file = "yarl-1.13.1-cp39-cp39-win32.whl", hash = "sha256:84bbcdcf393139f0abc9f642bf03f00cac31010f3034faa03224a9ef0bb74323"},
+ {file = "yarl-1.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:fc2931ac9ce9c61c9968989ec831d3a5e6fcaaff9474e7cfa8de80b7aff5a093"},
+ {file = "yarl-1.13.1-py3-none-any.whl", hash = "sha256:6a5185ad722ab4dd52d5fb1f30dcc73282eb1ed494906a92d1a228d3f89607b0"},
+ {file = "yarl-1.13.1.tar.gz", hash = "sha256:ec8cfe2295f3e5e44c51f57272afbd69414ae629ec7c6b27f5a410efc78b70a0"},
]
[package.dependencies]
@@ -4651,5 +4663,5 @@ type = ["pytest-mypy"]
[metadata]
lock-version = "2.0"
-python-versions = ">=3.11,<3.12"
-content-hash = "0f44caacfcff3c513b0374bd9e4d787576700184247c2572a31f1033083b21b9"
+python-versions = ">=3.12,<3.13"
+content-hash = "04ddd9ac6f88a4b8339b1d4fb7e44ea0574b340672542a4f6c4725dd7b23d998"
diff --git a/agents-api/pyproject.toml b/agents-api/pyproject.toml
index 3d7a7c925..3904ae394 100644
--- a/agents-api/pyproject.toml
+++ b/agents-api/pyproject.toml
@@ -7,7 +7,7 @@ readme = "README.md"
packages = [{include = "agents_api"}]
[tool.poetry.dependencies]
-python = ">=3.11,<3.12"
+python = ">=3.12,<3.13"
fastapi = "^0.112.1"
pycozo = {extras = ["embedded"], version = "^0.7.6"}
uvicorn = "^0.30.6"
@@ -44,7 +44,7 @@ ruff = "^0.5.5"
datamodel-code-generator = "^0.25.9"
cozo-migrate = "^0.2.0"
poethepoet = "^0.25.1"
-pytype = ">=2024.4.11"
+pytype = ">=2024.9.13"
pyjwt = "^2.8.0"
ward = "^0.68.0b0"
jupyterlab = "^4.2.4"
diff --git a/agents-api/pytype.toml b/agents-api/pytype.toml
index 2371cea58..b591601cc 100644
--- a/agents-api/pytype.toml
+++ b/agents-api/pytype.toml
@@ -28,7 +28,7 @@ platform = 'linux'
pythonpath = '.'
# Python version (major.minor) of the target code.
-python_version = '3.11'
+python_version = '3.12'
# Don't allow None to match bool. This flag is temporary and will be removed
# once this behavior is enabled by default.
@@ -61,4 +61,4 @@ no_return_any = false
# Opt-in: Require decoration with @typing.override when overriding a method or
# nested class attribute of a parent class.
-require_override_decorator = false
\ No newline at end of file
+require_override_decorator = false
diff --git a/agents-api/tests/fixtures.py b/agents-api/tests/fixtures.py
index 4cc5c2674..9ae198c78 100644
--- a/agents-api/tests/fixtures.py
+++ b/agents-api/tests/fixtures.py
@@ -36,8 +36,7 @@
from agents_api.models.user.create_user import create_user
from agents_api.models.user.delete_user import delete_user
from agents_api.web import app
-
-from .utils import patch_embed_acompletion as patch_embed_acompletion_ctx
+from tests.utils import patch_embed_acompletion as patch_embed_acompletion_ctx
EMBEDDING_SIZE: int = 1024
@@ -48,6 +47,8 @@ def cozo_client(migrations_dir: str = "./migrations"):
# and initialize the schema.
client = CozoClient()
+ setattr(app.state, "cozo_client", client)
+
init(client)
apply(client, migrations_dir=migrations_dir, all_=True)
diff --git a/agents-api/tests/sample_tasks/integration_example.yaml b/agents-api/tests/sample_tasks/integration_example.yaml
new file mode 100644
index 000000000..4efacff79
--- /dev/null
+++ b/agents-api/tests/sample_tasks/integration_example.yaml
@@ -0,0 +1,44 @@
+name: Simple multi step task
+
+input_schema:
+ type: object
+ properties:
+ topics:
+ type: array
+ items:
+ type: string
+
+tools:
+ - type: function
+ function:
+ name: generate_questions
+ description: Generate a list of questions for a given topic
+ parameters:
+ type: object
+ properties:
+ topic:
+ type: string
+ description: The topic to generate questions for
+
+ - type: integration
+ name: duckduckgo_search
+ integration:
+ provider: duckduckgo
+ setup:
+ api_key:
+ arguments:
+ language: en-US
+
+main:
+ - foreach:
+ in: _["topics"]
+ do:
+ prompt:
+ - role: system
+ content: |-
+ Generate a list of 10 questions for the topic {{_}} as valid yaml.
+ unwrap: true
+
+ - tool: duckduckgo_search
+ arguments:
+ query: "'\n'.join(_)"
diff --git a/agents-api/tests/test_activities.py b/agents-api/tests/test_activities.py
index 98dfc97b5..a2f15d179 100644
--- a/agents-api/tests/test_activities.py
+++ b/agents-api/tests/test_activities.py
@@ -7,13 +7,8 @@
from agents_api.clients import temporal
from agents_api.env import temporal_task_queue
from agents_api.workflows.demo import DemoWorkflow
-
-from .fixtures import (
- cozo_client,
- test_developer_id,
- test_doc,
-)
-from .utils import patch_testing_temporal
+from tests.fixtures import cozo_client, test_developer_id, test_doc
+from tests.utils import patch_testing_temporal
@test("activity: call direct embed_docs")
diff --git a/agents-api/tests/test_docs_routes.py b/agents-api/tests/test_docs_routes.py
index d4b677d05..d61bfbcb7 100644
--- a/agents-api/tests/test_docs_routes.py
+++ b/agents-api/tests/test_docs_routes.py
@@ -1,6 +1,6 @@
from ward import test
-from .fixtures import (
+from tests.fixtures import (
make_request,
patch_embed_acompletion,
test_agent,
@@ -8,7 +8,7 @@
test_user,
test_user_doc,
)
-from .utils import patch_testing_temporal
+from tests.utils import patch_testing_temporal
@test("route: create user doc")
diff --git a/agents-api/tests/test_execution_queries.py b/agents-api/tests/test_execution_queries.py
index 29ddcbd86..42904776d 100644
--- a/agents-api/tests/test_execution_queries.py
+++ b/agents-api/tests/test_execution_queries.py
@@ -15,8 +15,7 @@
from agents_api.models.execution.get_execution import get_execution
from agents_api.models.execution.list_executions import list_executions
from agents_api.models.execution.lookup_temporal_data import lookup_temporal_data
-
-from .fixtures import (
+from tests.fixtures import (
cozo_client,
test_developer_id,
test_execution,
diff --git a/agents-api/tests/test_execution_workflow.py b/agents-api/tests/test_execution_workflow.py
index 44f6d6ed4..3df23e5cd 100644
--- a/agents-api/tests/test_execution_workflow.py
+++ b/agents-api/tests/test_execution_workflow.py
@@ -14,9 +14,8 @@
)
from agents_api.models.task.create_task import create_task
from agents_api.routers.tasks.create_task_execution import start_execution
-
-from .fixtures import cozo_client, test_agent, test_developer_id
-from .utils import patch_testing_temporal
+from tests.fixtures import cozo_client, test_agent, test_developer_id
+from tests.utils import patch_integration_service, patch_testing_temporal
EMBEDDING_SIZE: int = 1024
@@ -338,7 +337,7 @@ async def _(
assert result["value"] == data.input["test"]
-# @test("workflow: log step")
+@test("workflow: log step")
async def _(
client=cozo_client,
developer_id=test_developer_id,
@@ -441,7 +440,120 @@ async def _(
assert result["hello"] == data.input["test"]
-@test("workflow: wait for input step start")
+@test("workflow: tool call integration dummy")
+async def _(
+ client=cozo_client,
+ developer_id=test_developer_id,
+ agent=test_agent,
+):
+ data = CreateExecutionRequest(input={"test": "input"})
+
+ task = create_task(
+ developer_id=developer_id,
+ agent_id=agent.id,
+ data=CreateTaskRequest(
+ **{
+ "name": "test task",
+ "description": "test task about",
+ "input_schema": {"type": "object", "additionalProperties": True},
+ "tools": [
+ {
+ "type": "integration",
+ "name": "hello",
+ "integration": {
+ "provider": "dummy",
+ },
+ }
+ ],
+ "main": [
+ {
+ "tool": "hello",
+ "arguments": {"test": "_.test"},
+ },
+ ],
+ }
+ ),
+ client=client,
+ )
+
+ async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):
+ execution, handle = await start_execution(
+ developer_id=developer_id,
+ task_id=task.id,
+ data=data,
+ client=client,
+ )
+
+ assert handle is not None
+ assert execution.task_id == task.id
+ assert execution.input == data.input
+ mock_run_task_execution_workflow.assert_called_once()
+
+ result = await handle.result()
+ assert result["test"] == data.input["test"]
+
+
+@test("workflow: tool call integration mocked weather")
+async def _(
+ client=cozo_client,
+ developer_id=test_developer_id,
+ agent=test_agent,
+):
+ data = CreateExecutionRequest(input={"test": "input"})
+
+ task = create_task(
+ developer_id=developer_id,
+ agent_id=agent.id,
+ data=CreateTaskRequest(
+ **{
+ "name": "test task",
+ "description": "test task about",
+ "input_schema": {"type": "object", "additionalProperties": True},
+ "tools": [
+ {
+ "type": "integration",
+ "name": "get_weather",
+ "integration": {
+ "provider": "weather",
+ "setup": {"openweathermap_api_key": "test"},
+ "arguments": {"test": "fake"},
+ },
+ }
+ ],
+ "main": [
+ {
+ "tool": "get_weather",
+ "arguments": {"location": "_.test"},
+ },
+ ],
+ }
+ ),
+ client=client,
+ )
+
+ expected_output = {"temperature": 20, "humidity": 60}
+
+ async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):
+ with patch_integration_service(expected_output) as mock_integration_service:
+ execution, handle = await start_execution(
+ developer_id=developer_id,
+ task_id=task.id,
+ data=data,
+ client=client,
+ )
+
+ assert handle is not None
+ assert execution.task_id == task.id
+ assert execution.input == data.input
+ mock_run_task_execution_workflow.assert_called_once()
+ mock_integration_service.assert_called_once()
+
+ result = await handle.result()
+ assert result == expected_output
+
+
+# FIXME: This test is not working. It gets stuck
+# @test("workflow: wait for input step start")
async def _(
client=cozo_client,
developer_id=test_developer_id,
@@ -818,6 +930,66 @@ async def _(
assert result["role"] == "assistant"
+@test("workflow: prompt step unwrap")
+async def _(
+ client=cozo_client,
+ developer_id=test_developer_id,
+ agent=test_agent,
+):
+ mock_model_response = ModelResponse(
+ id="fake_id",
+ choices=[Choices(message={"role": "assistant", "content": "Hello, world!"})],
+ created=0,
+ object="text_completion",
+ )
+
+ with patch("agents_api.clients.litellm.acompletion") as acompletion:
+ acompletion.return_value = mock_model_response
+ data = CreateExecutionRequest(input={"test": "input"})
+
+ task = create_task(
+ developer_id=developer_id,
+ agent_id=agent.id,
+ data=CreateTaskRequest(
+ **{
+ "name": "test task",
+ "description": "test task about",
+ "input_schema": {"type": "object", "additionalProperties": True},
+ "main": [
+ {
+ "prompt": [
+ {
+ "role": "user",
+ "content": "message",
+ },
+ ],
+ "unwrap": True,
+ "settings": {},
+ },
+ ],
+ }
+ ),
+ client=client,
+ )
+
+ async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):
+ execution, handle = await start_execution(
+ developer_id=developer_id,
+ task_id=task.id,
+ data=data,
+ client=client,
+ )
+
+ assert handle is not None
+ assert execution.task_id == task.id
+ assert execution.input == data.input
+
+ mock_run_task_execution_workflow.assert_called_once()
+
+ result = await handle.result()
+ assert result == "Hello, world!"
+
+
@test("workflow: set and get steps")
async def _(
client=cozo_client,
diff --git a/agents-api/tests/test_task_queries.py b/agents-api/tests/test_task_queries.py
index 2399416db..e61489df8 100644
--- a/agents-api/tests/test_task_queries.py
+++ b/agents-api/tests/test_task_queries.py
@@ -15,8 +15,7 @@
from agents_api.models.task.get_task import get_task
from agents_api.models.task.list_tasks import list_tasks
from agents_api.models.task.update_task import update_task
-
-from .fixtures import cozo_client, test_agent, test_developer_id, test_task
+from tests.fixtures import cozo_client, test_agent, test_developer_id, test_task
@test("model: create task")
diff --git a/agents-api/tests/test_task_routes.py b/agents-api/tests/test_task_routes.py
index 4ab708560..5d3c2f998 100644
--- a/agents-api/tests/test_task_routes.py
+++ b/agents-api/tests/test_task_routes.py
@@ -4,14 +4,14 @@
from ward import test
-from .fixtures import (
+from tests.fixtures import (
client,
make_request,
test_agent,
test_execution,
test_task,
)
-from .utils import patch_testing_temporal
+from tests.utils import patch_testing_temporal
@test("route: unauthorized should fail")
diff --git a/agents-api/tests/test_workflow_routes.py b/agents-api/tests/test_workflow_routes.py
index 34aa0101c..d1538535d 100644
--- a/agents-api/tests/test_workflow_routes.py
+++ b/agents-api/tests/test_workflow_routes.py
@@ -4,8 +4,8 @@
from ward import test
-from .fixtures import cozo_client, test_agent, test_developer_id
-from .utils import patch_http_client_with_temporal
+from tests.fixtures import cozo_client, test_agent, test_developer_id
+from tests.utils import patch_http_client_with_temporal
@test("workflow route: evaluate step single")
diff --git a/agents-api/tests/utils.py b/agents-api/tests/utils.py
index 83b864472..dc1007d13 100644
--- a/agents-api/tests/utils.py
+++ b/agents-api/tests/utils.py
@@ -10,6 +10,7 @@
from agents_api.worker.codec import pydantic_data_converter
from agents_api.worker.worker import create_worker
+# Replicated here to prevent circular import
EMBEDDING_SIZE: int = 1024
@@ -84,10 +85,20 @@ def patch_embed_acompletion(output={"role": "assistant", "content": "Hello, worl
object="text_completion",
)
- with patch("agents_api.clients.embed.embed") as embed, patch(
+ with patch("agents_api.clients.litellm.aembedding") as embed, patch(
"agents_api.clients.litellm.acompletion"
) as acompletion:
embed.return_value = [[1.0] * EMBEDDING_SIZE]
acompletion.return_value = mock_model_response
yield embed, acompletion
+
+
+@contextmanager
+def patch_integration_service(output: dict = {"result": "ok"}):
+ with patch(
+ "agents_api.clients.integrations.run_integration_service"
+ ) as run_integration_service:
+ run_integration_service.return_value = output
+
+ yield run_integration_service
diff --git a/cookbooks/01-Website_Crawler_using_Spider.ipynb b/cookbooks/01-Website_Crawler_using_Spider.ipynb
new file mode 100644
index 000000000..36a77d525
--- /dev/null
+++ b/cookbooks/01-Website_Crawler_using_Spider.ipynb
@@ -0,0 +1,322 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "
\n",
+ "\n",
+ "## Task Definition: Spider Crawler Integration without Agents\n",
+ "\n",
+ "### Overview\n",
+ "\n",
+ "This task is designed to generate a simple Spider Crawler and integrate it with the workflow to scrape data from the web.\n",
+ "\n",
+ "### Task Flow\n",
+ "\n",
+ "1. **Input**: The user provides a URL to crawl.\n",
+ "\n",
+ "2. **Spider Tool Integration**: \n",
+ " - Create a spider tool that can crawl the web and extract data from the given URL.\n",
+ "\n",
+ "3. **Output**: The final output is the extracted data from the given URL.\n",
+ "\n",
+ "This task leverages the Spider Crawler tool to extract data from the given URL."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Implementation\n",
+ "\n",
+ "To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\n",
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "### Additional Information\n",
+ "\n",
+ "For more details about the task or if you have any questions, please don't hesitate to contact the author:\n",
+ "\n",
+ "**Author:** Julep AI \n",
+ "**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or Discord"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Installing the Julep Client"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install julep -U --quiet"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### NOTE:\n",
+ "\n",
+ "- UUIDs are generated for both the agent and task to uniquely identify them within the system.\n",
+ "- Once created, these UUIDs should remain unchanged for simplicity.\n",
+ "- Altering a UUID will result in the system treating it as a new agent or task.\n",
+ "- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Global UUID is generated for agent and task\n",
+ "import uuid\n",
+ "\n",
+ "AGENT_UUID = uuid.uuid4()\n",
+ "TASK_UUID = uuid.uuid4() "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Creating Julep Client with the API Key"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from julep import Client\n",
+ "\n",
+ "api_key = \"\" # Your API key here\n",
+ "\n",
+ "# Create a client\n",
+ "client = Client(api_key=api_key, environment=\"dev\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Creating an \"agent\"\n",
+ "\n",
+ "Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\n",
+ "\n",
+ "To learn more about the agent, please refer to the [documentation](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md#agent)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Defining the agent\n",
+ "name = \"Jarvis\"\n",
+ "about = \"The original AI conscious the Iron Man.\"\n",
+ "default_settings = {\n",
+ " \"temperature\": 0.7,\n",
+ " \"top_p\": 1,\n",
+ " \"min_p\": 0.01,\n",
+ " \"presence_penalty\": 0,\n",
+ " \"frequency_penalty\": 0,\n",
+ " \"length_penalty\": 1.0,\n",
+ " \"max_tokens\": 150,\n",
+ "}\n",
+ "\n",
+ "\n",
+ "# Create the agent\n",
+ "agent = client.agents.create_or_update(\n",
+ " agent_id=AGENT_UUID,\n",
+ " name=name,\n",
+ " about=about,\n",
+ " model=\"gpt-4o\",\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Defining a Task\n",
+ "\n",
+ "Tasks in Julep are Github Actions style workflows that define long-running, multi-step actions. \n",
+ "You can use them to conduct complex actions by defining them step-by-step. They have access to all Julep integrations.\n",
+ "\n",
+ "To learn more about tasks, visit [Julep documentation](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md#task)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import yaml"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Here is a Task which uses a agent to generate a sarcastic response to a given text using a DuckDuckGo search tool.\n",
+ "\n",
+ "More on how to define a task can be found [here](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# defining the task definition\n",
+ "task_def = yaml.safe_load(\"\"\"\n",
+ "name: Agent Crawler\n",
+ "\n",
+ "tools:\n",
+ "- name: spider_crawler\n",
+ " type: integration\n",
+ " integration:\n",
+ " provider: spider\n",
+ " setup:\n",
+ " spider_api_key: \"your_spider_api_key\"\n",
+ "\n",
+ "main:\n",
+ "- tool: spider_crawler\n",
+ " arguments:\n",
+ " url: '\"https://spider.cloud\"'\n",
+ "\"\"\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Creating/Updating a task to generate a sarcastic response to a given text using a Intergation."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# creating the task object\n",
+ "task = client.tasks.create_or_update(\n",
+ " task_id=TASK_UUID,\n",
+ " agent_id=AGENT_UUID,\n",
+ " **task_def\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Creating an Execution\n",
+ "\n",
+ "An execution is a single run of a task. It is a way to run a task with a specific set of inputs."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Creates a execution worflow for the Task defined in the yaml file."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# creating an execution object\n",
+ "execution = client.executions.create(\n",
+ " task_id=TASK_UUID,\n",
+ " input={}\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# getting the execution details\n",
+ "execution = client.executions.get(execution.id)\n",
+ "#printing the output\n",
+ "execution.output"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Retrieves and lists all the steps of a defined task that have been executed up to that point in time. Unlike streaming, this function does not continuously monitor the execution; it only provides a snapshot of the steps completed so far without displaying real-time updates as the task progresses."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "client.executions.transitions.list(execution_id=execution.id).items"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Continuously monitor and stream the steps of a defined task. It retrieves and displays the transitions or execution steps of the task identified by execution.id in real-time, showing each step sequentially until the task is either completed or an error causes it to terminate."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "client.executions.transitions.stream(execution_id=execution.id)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "ai",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/cookbooks/02-Sarcastic_News_Headline_Generator.ipynb b/cookbooks/02-Sarcastic_News_Headline_Generator.ipynb
new file mode 100644
index 000000000..fded810a1
--- /dev/null
+++ b/cookbooks/02-Sarcastic_News_Headline_Generator.ipynb
@@ -0,0 +1,359 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "
\n",
+ "\n",
+ "## Task Definition: Sarcastic News Headline Generator using Brave Search Integration\n",
+ "\n",
+ "### Overview\n",
+ "\n",
+ "This task generates a sarcastic news headline on a user-provided topic. It utilizes web search to gather context and information about the topic, then uses this data to create a headline with a sarcastic tone. \n",
+ "\n",
+ "### Task Flow\n",
+ "\n",
+ "1. **Input**: \n",
+ " - User provides a topic for the sarcastic news headline (e.g., \"technology\" or \"politics\").\n",
+ "\n",
+ "2. **Web Search using Bravesearch Integration**: \n",
+ " - Conducts a search to find information about the topic, focusing on humorous or quirky content.\n",
+ " - Gathers relevant context and amusing details for headline generation.\n",
+ "\n",
+ "3. **Headline Creation**: \n",
+ " - Generates a sarcastic news headline based on the topic and gathered information.\n",
+ " - Combines factual or common perceptions with humor and sarcasm.\n",
+ " \n",
+ "4. **Output**: \n",
+ " - Produces a sarcastic, witty headline on the given topic.\n",
+ " - Can be used for entertainment or as a creative writing prompt.\n",
+ "\n",
+ "### Key Features\n",
+ "\n",
+ "- Leverages web search to enhance contextual relevance of sarcastic content.\n",
+ "- Combines real-world information with humorous twists for engaging headlines.\n",
+ "- Adaptable to various topics, allowing for diverse and creative outputs.\n",
+ "\n",
+ "```plaintext\n",
+ "+----------+ +------------+ +------------+ +-----------+\n",
+ "| User | | Brave | | Agent | | Sarcastic |\n",
+ "| Input | --> | Search | --> | Processing | --> | Headline |\n",
+ "| (Topic) | | | | | | Output |\n",
+ "+----------+ +------------+ +------------+ +-----------+\n",
+ " | | | |\n",
+ " | | | |\n",
+ " v v v v\n",
+ " \"politics\" Find funny Generate witty \"Area Man Still\n",
+ " content headline Believes in Democracy\"\n",
+ "\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Implementation\n",
+ "\n",
+ "To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\n",
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "### Additional Information\n",
+ "\n",
+ "For more details about the task or if you have any questions, please don't hesitate to contact the author:\n",
+ "\n",
+ "**Author:** Julep AI \n",
+ "**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or Discord"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Installing the Julep Client"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install julep -U --quiet"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### NOTE:\n",
+ "\n",
+ "- UUIDs are generated for both the agent and task to uniquely identify them within the system.\n",
+ "- Once created, these UUIDs should remain unchanged for simplicity.\n",
+ "- Altering a UUID will result in the system treating it as a new agent or task.\n",
+ "- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Global UUID is generated for agent and task\n",
+ "import uuid\n",
+ "\n",
+ "AGENT_UUID = uuid.uuid4()\n",
+ "TASK_UUID = uuid.uuid4() "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Creating Julep Client with the API Key"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from julep import Client\n",
+ "\n",
+ "api_key = \"\" # Your API key here\n",
+ "\n",
+ "# Create a client\n",
+ "client = Client(api_key=api_key, environment=\"dev\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Creating an \"agent\"\n",
+ "\n",
+ "\n",
+ "Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\n",
+ "\n",
+ "To learn more about the agent, please refer to the [documentation](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md#agent)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Defining the agent\n",
+ "name = \"Jarvis\"\n",
+ "about = \"The original AI conscious the Iron Man.\"\n",
+ "default_settings = {\n",
+ " \"temperature\": 0.7,\n",
+ " \"top_p\": 1,\n",
+ " \"min_p\": 0.01,\n",
+ " \"presence_penalty\": 0,\n",
+ " \"frequency_penalty\": 0,\n",
+ " \"length_penalty\": 1.0,\n",
+ " \"max_tokens\": 150,\n",
+ "}\n",
+ "\n",
+ "\n",
+ "# Create the agent\n",
+ "agent = client.agents.create_or_update(\n",
+ " agent_id=AGENT_UUID,\n",
+ " name=name,\n",
+ " about=about,\n",
+ " model=\"gpt-4o\",\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Defining a Task\n",
+ "\n",
+ "Tasks in Julep are Github Actions style workflows that define long-running, multi-step actions. \n",
+ "You can use them to conduct complex actions by defining them step-by-step. They have access to all Julep integrations.\n",
+ "\n",
+ "To learn more about tasks, visit [Julep documentation](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md#task)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import yaml"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Here is a Task which uses a agent to generate a sarcastic response to a given text using a DuckDuckGo search tool.\n",
+ "\n",
+ "More on how to define a task can be found [here](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# defining the task definition\n",
+ "task_def = yaml.safe_load(\"\"\"\n",
+ "name: Sarcasm Headline Generator\n",
+ "\n",
+ "tools:\n",
+ "- name: brave_search\n",
+ " type: integration\n",
+ " integration:\n",
+ " provider: brave\n",
+ " setup:\n",
+ " api_key: \"YOU_API_KEY\"\n",
+ "\n",
+ "main:\n",
+ "- tool: brave_search\n",
+ " arguments:\n",
+ " query: \"_.topic + ' funny'\"\n",
+ "\n",
+ "- prompt:\n",
+ " - role: system\n",
+ " content: >-\n",
+ " write a sarcastic news headline on the topic of {{inputs[0].topic}}.\n",
+ " Here's some more info on this: {{_}}\n",
+ " unwrap: true\n",
+ "\n",
+ "\"\"\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Creating/Updating a task to generate a sarcastic response to a given text using a Intergation."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# creating the task object\n",
+ "task = client.tasks.create_or_update(\n",
+ " task_id=TASK_UUID,\n",
+ " agent_id=AGENT_UUID,\n",
+ " **task_def\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Creating an Execution\n",
+ "\n",
+ "An execution is a single run of a task. It is a way to run a task with a specific set of inputs."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Creates a execution worflow for the Task defined in the yaml file."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# creating an execution object\n",
+ "execution = client.executions.create(\n",
+ " task_id=TASK_UUID,\n",
+ " input={\n",
+ " \"topic\": \"elon musk\"\n",
+ " }\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# getting the execution details\n",
+ "execution = client.executions.get(execution.id)\n",
+ "#printing the output\n",
+ "execution.output"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Retrieves and lists all the steps of a defined task that have been executed up to that point in time. Unlike streaming, this function does not continuously monitor the execution; it only provides a snapshot of the steps completed so far without displaying real-time updates as the task progresses."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "client.executions.transitions.list(execution_id=execution.id).items"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Continuously monitor and stream the steps of a defined task. It retrieves and displays the transitions or execution steps of the task identified by execution.id in real-time, showing each step sequentially until the task is either completed or an error causes it to terminate."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "client.executions.transitions.stream(execution_id=execution.id)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "ai",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/cookbooks/03-SmartResearcher_With_WebSearch.ipynb b/cookbooks/03-SmartResearcher_With_WebSearch.ipynb
new file mode 100644
index 000000000..c01b54652
--- /dev/null
+++ b/cookbooks/03-SmartResearcher_With_WebSearch.ipynb
@@ -0,0 +1,397 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "
\n",
+ "\n",
+ "## Task: Research Assistant with Web Search Integration\n",
+ "\n",
+ "### Overview\n",
+ "\n",
+ "This task is designed to conduct comprehensive research on multiple user-provided topics. It leverages web search capabilities to gather up-to-date information and generates relevant keywords for each topic, streamlining the research process through efficient tool integration and parallel processing.\n",
+ "\n",
+ "### Task Flow\n",
+ "\n",
+ "1. **User Input**\n",
+ " - User provides a list of research topics\n",
+ " - Each topic is processed individually\n",
+ "\n",
+ "2. **Web Search and Information Gathering**\n",
+ " - Utilizes BraveWeb to conduct searches for each topic\n",
+ " - Retrieves latest news and relevant information\n",
+ "\n",
+ "3. **Intelligent Analysis**\n",
+ " - System analyzes search results (HTML snippets)\n",
+ " - Generates Wikipedia keywords related to each topic\n",
+ " - AI assistant identifies most relevant keywords based on search content\n",
+ "\n",
+ "4. **Parallel Processing**\n",
+ " - Implements concurrent topic processing\n",
+ " - Enhances efficiency and reduces overall research time\n",
+ "\n",
+ "### Key Features\n",
+ "\n",
+ "- **Multi-topic Research**: Handles multiple research topics simultaneously\n",
+ "- **Up-to-date Information**: Utilizes web search to access current data\n",
+ "- **Keyword Generation**: Provides relevant Wikipedia keywords for each topic\n",
+ "- **AI-assisted Analysis**: Employs AI to identify and prioritize key information\n",
+ "- **Efficient Processing**: Leverages parallel processing for faster results\n",
+ "\n",
+ "### Output\n",
+ "\n",
+ "- Comprehensive list of relevant Wikipedia keywords for each input topic\n",
+ "- Curated, up-to-date information gathered from web searches\n",
+ "\n",
+ "This workflow provides a robust, efficient approach to in-depth topic exploration, combining the power of web search, AI analysis, and parallel processing.\n",
+ "\n",
+ "```plaintext\n",
+ "\n",
+ "+----------------+ +--------------------------+ +-----------------+ +------------------------+ +-------------------------+\n",
+ "| User Input | | Web Search & Information | | Intelligent | | Parallel Processing | | Output Stage |\n",
+ "|(List of Topics)| --> | Gathering (BraveWeb) | --> | Analysis | --> | (Concurrent Execution) | --> | Summarized Research |\n",
+ "| | | | | | | | | (Final Report) |\n",
+ "+----------------+ +--------------------------+ +-----------------+ +------------------------+ +-------------------------+\n",
+ " | | | | |\n",
+ " | | | | |\n",
+ " v v v v v\n",
+ " Topic 1, Topic 2, ... Retrieve HTML snippets Extract Wikipedia Process multiple Compile summary and \n",
+ " Each topic processed from search results keywords from HTML topics concurrently present most relevant \n",
+ " individually. for each topic. snippets, analyze for faster results. findings per topic.\n",
+ " relevance.\n",
+ "```\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Implementation\n",
+ "\n",
+ "To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\n",
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "### Additional Information\n",
+ "\n",
+ "For more details about the task or if you have any questions, please don't hesitate to contact the author:\n",
+ "\n",
+ "**Author:** Julep AI \n",
+ "**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or Discord"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Installing the Julep Client"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install julep -U --quiet"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### NOTE:\n",
+ "\n",
+ "- UUIDs are generated for both the agent and task to uniquely identify them within the system.\n",
+ "- Once created, these UUIDs should remain unchanged for simplicity.\n",
+ "- Altering a UUID will result in the system treating it as a new agent or task.\n",
+ "- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Global UUID is generated for agent and task\n",
+ "import uuid\n",
+ "\n",
+ "AGENT_UUID = uuid.uuid4()\n",
+ "TASK_UUID = uuid.uuid4()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Creating Julep Client with the API Key"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from julep import Client\n",
+ "\n",
+ "api_key = \"\" # Your API key here\n",
+ "\n",
+ "# Create a client\n",
+ "client = Client(api_key=api_key, environment=\"dev\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Creating an \"agent\"\n",
+ "\n",
+ "\n",
+ "Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\n",
+ "\n",
+ "To learn more about the agent, please refer to the [documentation](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md#agent)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Defining the agent\n",
+ "name = \"Jarvis\"\n",
+ "about = \"The original AI conscious the Iron Man.\"\n",
+ "default_settings = {\n",
+ " \"temperature\": 0.7,\n",
+ " \"top_p\": 1,\n",
+ " \"min_p\": 0.01,\n",
+ " \"presence_penalty\": 0,\n",
+ " \"frequency_penalty\": 0,\n",
+ " \"length_penalty\": 1.0,\n",
+ " \"max_tokens\": 150,\n",
+ "}\n",
+ "\n",
+ "\n",
+ "# Create the agent\n",
+ "agent = client.agents.create_or_update(\n",
+ " agent_id=AGENT_UUID,\n",
+ " name=name,\n",
+ " about=about,\n",
+ " model=\"gpt-4o\",\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Defining a Task\n",
+ "\n",
+ "Tasks in Julep are Github Actions style workflows that define long-running, multi-step actions. \n",
+ "You can use them to conduct complex actions by defining them step-by-step. They have access to all Julep integrations.\n",
+ "\n",
+ "To learn more about tasks, visit [Julep documentation](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md#task)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import yaml"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Here is a Task which uses a agent to generate a sarcastic response to a given text using a DuckDuckGo and Wikipedia tool.\n",
+ "\n",
+ "More on how to define a task can be found [here](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "task_def= yaml.safe_load(\"\"\"\n",
+ "name: Research Assistant to find Wikipedia Keywords\n",
+ "\n",
+ "input_schema:\n",
+ " type: object\n",
+ " properties:\n",
+ " topics:\n",
+ " type: array\n",
+ " items:\n",
+ " type: string\n",
+ " description: The topics to search for.\n",
+ "\n",
+ "tools:\n",
+ "- name: brave_search\n",
+ " type: integration\n",
+ " integration:\n",
+ " provider: brave\n",
+ " setup:\n",
+ " api_key: \"YOUR_API_KEY\"\n",
+ "\n",
+ "main:\n",
+ "- over: _.topics\n",
+ " map:\n",
+ " tool: brave_search\n",
+ " arguments:\n",
+ " query: \"'the latest news about ' + _\"\n",
+ "\n",
+ "- over: _\n",
+ " parallelism: 2\n",
+ " map:\n",
+ " prompt:\n",
+ " - role: system\n",
+ " content: >-\n",
+ " You are a research assistant.\n",
+ " I need you to do in-depth research on topics trending in the news currently.\n",
+ " Based on the following latest html news snippet, come up with a list of wikipedia keywords to search:\n",
+ " \"{{_}}\"\n",
+ " Your response should be a list of keywords, separated by commas. Do not add any other text.\n",
+ " Example: `KEYWORDS: keyword1, keyword2, keyword3`\n",
+ "\n",
+ " unwrap: true\n",
+ "\"\"\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Creating/Updating a task to generate a sarcastic response to a given text using a Intergation."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# creating the task object\n",
+ "task = client.tasks.create_or_update(\n",
+ " task_id=TASK_UUID,\n",
+ " agent_id=AGENT_UUID,\n",
+ " **task_def\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Creating an Execution\n",
+ "\n",
+ "An execution is a single run of a task. It is a way to run a task with a specific set of inputs."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Creates a execution worflow for the Task defined in the yaml file."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "execution= client.executions.create(\n",
+ " task_id=task.id,\n",
+ " input={\n",
+ " \"topics\": [\"Burger King Cup on the Ground Behind a Wendy’s\",\"Forbidden Chemical X\",\"Finger Bracelets\",\"Amusing Notions\"]\n",
+ " }\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "execution.id"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# getting the execution details\n",
+ "execution = client.executions.get(execution.id)\n",
+ "#printing the outpu\n",
+ "execution.output"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Retrieves and lists all the steps of a defined task that have been executed up to that point in time. Unlike streaming, this function does not continuously monitor the execution; it only provides a snapshot of the steps completed so far without displaying real-time updates as the task progresses."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "client.executions.transitions.list(execution_id=execution.id).items"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Continuously monitor and stream the steps of a defined task. It retrieves and displays the transitions or execution steps of the task identified by execution.id in real-time, showing each step sequentially until the task is either completed or an error causes it to terminate."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "client.executions.transitions.stream(execution_id=execution.id)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "ai",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.12.4"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/cookbooks/04-TripPlanner_With_Weather_And_WikiInfo.ipynb b/cookbooks/04-TripPlanner_With_Weather_And_WikiInfo.ipynb
new file mode 100644
index 000000000..d7fc39840
--- /dev/null
+++ b/cookbooks/04-TripPlanner_With_Weather_And_WikiInfo.ipynb
@@ -0,0 +1,420 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "div align=\"center\">\n",
+ " \n",
+ "\n",
+ "\n",
+ "## Task: Travel Itinerary Assistant with Weather and Wikipedia Integrations\n",
+ "\n",
+ "### Overview\n",
+ "\n",
+ "The Travel Itinerary Assistant helps users plan a travel itinerary that takes into account current weather conditions and local tourist attractions. By integrating data from Wikipedia for tourist attractions and using a weather API for real-time weather updates, the tool provides a comprehensive travel plan tailored to each location. The generated itinerary suggests appropriate activities based on the weather, enhancing the overall travel experience.\n",
+ "\n",
+ "### Task Flow\n",
+ "\n",
+ "1. **User Input**\n",
+ " - User provides a list of desired travel locations.\n",
+ " - Each location is processed individually to gather the required data.\n",
+ "\n",
+ "2. **Weather Data Retrieval**\n",
+ " - Fetch current weather data for each location using a weather API.\n",
+ " - Extract relevant weather details, such as temperature, weather condition, and recommendations.\n",
+ "\n",
+ "3. **Tourist Attractions Lookup**\n",
+ " - Use Wikipedia to search for the top tourist attractions for each location.\n",
+ " - The query format used is: `\" tourist attractions\"`.\n",
+ " - Retrieve and compile a list of popular tourist spots and landmarks.\n",
+ "\n",
+ "4. **Data Evaluation and Integration**\n",
+ " - Combine weather data and tourist attractions into a unified list for each location.\n",
+ " - Format the data into a structured tuple: `(location, weather, attractions)`.\n",
+ "\n",
+ "5. **Itinerary Generation**\n",
+ " - Create a detailed travel itinerary based on:\n",
+ " - Current weather conditions (e.g., sunny, rainy, cloudy).\n",
+ " - Top tourist attractions for each location.\n",
+ " - Suggested activities categorized as indoor or outdoor based on weather.\n",
+ "\n",
+ "### Key Features\n",
+ "\n",
+ "- **Multi-location Travel Planning**: Handles multiple destinations simultaneously, offering a consolidated travel plan.\n",
+ "- **Real-time Weather Data**: Leverages weather APIs to provide up-to-date weather conditions.\n",
+ "- **Tourist Attraction Discovery**: Integrates Wikipedia to find and recommend popular attractions.\n",
+ "- **Intelligent Itinerary Suggestions**: Suggests indoor or outdoor activities based on the weather.\n",
+ "- **Comprehensive Itinerary Output**: Combines weather and tourist data into a user-friendly travel plan.\n",
+ "\n",
+ "### Output\n",
+ "\n",
+ "- A detailed travel itinerary for each location\n",
+ "- Curated, up-to-date information gathered from weather searches and Wikipedia\n",
+ "\n",
+ "```plaintext\n",
+ "\n",
+ "+----------------+ +--------------------------+ +--------------------------+ +------------------------------+ +-------------------------+\n",
+ "| User Input | | Weather Data Retrieval | | Tourist Attractions | | Data Evaluation & Integration| | Itinerary Generation |\n",
+ "| (List of | --> | (Weather API) | --> | Lookup (Wikipedia) | --> | (Combine Weather & | --> | (Generate Suggested |\n",
+ "| Locations) | | | | | | Attractions Data) | | Activities/Plan) |\n",
+ "+----------------+ +--------------------------+ +--------------------------+ +------------------------------+ +-------------------------+\n",
+ " | | | | |\n",
+ " | | | | |\n",
+ " v v v v v\n",
+ "Location 1, Location 2, ... Fetch weather for each Search Wikipedia for Combine weather data and Create itinerary with\n",
+ "Each location processed location individually, \" tourist tourist attractions into suggested activities\n",
+ "individually for extracting temp., attractions\", retrieve a structured tuple: based on weather and\n",
+ "weather data. conditions, & top spots. (location, weather, attractions.\n",
+ " recommendations. attractions).\n",
+ "```\n",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Implementation\n",
+ "\n",
+ "To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\n",
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "### Additional Information\n",
+ "\n",
+ "For more details about the task or if you have any questions, please don't hesitate to contact the author:\n",
+ "\n",
+ "**Author:** Julep AI \n",
+ "**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or Discord"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Installing the Julep Client"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install julep -U --quiet"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### NOTE:\n",
+ "\n",
+ "- UUIDs are generated for both the agent and task to uniquely identify them within the system.\n",
+ "- Once created, these UUIDs should remain unchanged for simplicity.\n",
+ "- Altering a UUID will result in the system treating it as a new agent or task.\n",
+ "- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Global UUID is generated for agent and task\n",
+ "import uuid\n",
+ "\n",
+ "AGENT_UUID = uuid.uuid4()\n",
+ "TASK_UUID = uuid.uuid4() "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Creating Julep Client with the API Key"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from julep import Client\n",
+ "\n",
+ "api_key = \"\" # Your API key here\n",
+ "\n",
+ "# Create a client\n",
+ "client = Client(api_key=api_key, environment=\"dev\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Creating an \"agent\"\n",
+ "\n",
+ "\n",
+ "Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\n",
+ "\n",
+ "To learn more about the agent, please refer to the [documentation](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md#agent)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Defining the agent\n",
+ "name = \"Jarvis\"\n",
+ "about = \"The original AI conscious the Iron Man.\"\n",
+ "default_settings = {\n",
+ " \"temperature\": 0.7,\n",
+ " \"top_p\": 1,\n",
+ " \"min_p\": 0.01,\n",
+ " \"presence_penalty\": 0,\n",
+ " \"frequency_penalty\": 0,\n",
+ " \"length_penalty\": 1.0,\n",
+ " \"max_tokens\": 150,\n",
+ "}\n",
+ "\n",
+ "# Create the agent\n",
+ "agent = client.agents.create_or_update(\n",
+ " agent_id=AGENT_UUID,\n",
+ " name=name,\n",
+ " about=about,\n",
+ " model=\"gpt-4o\",\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Defining a Task\n",
+ "\n",
+ "Tasks in Julep are Github Actions style workflows that define long-running, multi-step actions. \n",
+ "You can use them to conduct complex actions by defining them step-by-step. They have access to all Julep integrations.\n",
+ "\n",
+ "To learn more about tasks, visit [Julep documentation](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md#task)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import yaml"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Here is a Task which uses a agent to generate a sarcastic response to a given text using a DuckDuckGo and Wikipedia tool.\n",
+ "\n",
+ "More on how to define a task can be found [here](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "task_def = yaml.safe_load(\"\"\"\n",
+ "name: Tourist Plan With Weather And Attractions\n",
+ "\n",
+ "input_schema:\n",
+ " type: object\n",
+ " properties:\n",
+ " locations:\n",
+ " type: array\n",
+ " items:\n",
+ " type: string\n",
+ " description: The locations to search for.\n",
+ "\n",
+ "tools:\n",
+ "- name: wikipedia\n",
+ " type: integration\n",
+ " integration:\n",
+ " provider: wikipedia\n",
+ "\n",
+ "- name: weather\n",
+ " type: integration\n",
+ " integration:\n",
+ " provider: weather\n",
+ " setup:\n",
+ " openweathermap_api_key: \"YOUR_API_KEY\"\n",
+ "\n",
+ "main:\n",
+ "- over: inputs[0].locations\n",
+ " map:\n",
+ " tool: weather\n",
+ " arguments:\n",
+ " location: _\n",
+ "\n",
+ "- over: inputs[0].locations\n",
+ " map:\n",
+ " tool: wikipedia\n",
+ " arguments:\n",
+ " query: \"_ + ' tourist attractions'\"\n",
+ "\n",
+ "- evaluate:\n",
+ " zipped: \"list(zip(inputs[0].locations, [output['result'] for output in outputs[0]], [output['documents'][0]['page_content'] for output in outputs[1]]))\" # [(location, weather, attractions)]\n",
+ "\n",
+ "\n",
+ "- over: _['zipped']\n",
+ " parallelism: 3\n",
+ " map:\n",
+ " prompt:\n",
+ " - role: system\n",
+ " content: >-\n",
+ " You are a travel assistant. Your task is to create a detailed itinerary for visiting tourist attractions in \"{{_[0]}}\" based on the weather conditions and the top tourist attractions provided.\n",
+ " \n",
+ " Current weather condition at \"{{_[0]}}\":\n",
+ " \"{{_[1]}}\"\n",
+ "\n",
+ " Top tourist attractions in \"{{_[0]}}\":\n",
+ " \"{{_[2]}}\"\n",
+ "\n",
+ " Suggest outdoor or indoor activities based on the above information.\n",
+ " unwrap: true\n",
+ "\"\"\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Creating/Updating a task to generate a sarcastic response to a given text using a Intergation."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# creating the task object\n",
+ "task = client.tasks.create_or_update(\n",
+ " task_id=TASK_UUID,\n",
+ " agent_id=AGENT_UUID,\n",
+ " **task_def\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Creating an Execution\n",
+ "\n",
+ "An execution is a single run of a task. It is a way to run a task with a specific set of inputs."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Creates a execution worflow for the Task defined in the yaml file."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "execution = client.executions.create(\n",
+ " task_id=task.id,\n",
+ " input={\n",
+ " \"locations\": [\"New York\", \"London\", \"Paris\", \"Tokyo\", \"Sydney\"]\n",
+ " }\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "execution.id"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# getting the execution details\n",
+ "execution = client.executions.get(execution.id)\n",
+ "#printing the output\n",
+ "execution.output"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Retrieves and lists all the steps of a defined task that have been executed up to that point in time. Unlike streaming, this function does not continuously monitor the execution; it only provides a snapshot of the steps completed so far without displaying real-time updates as the task progresses."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "client.executions.transitions.list(execution_id=execution.id).items"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Continuously monitor and stream the steps of a defined task. It retrieves and displays the transitions or execution steps of the task identified by execution.id in real-time, showing each step sequentially until the task is either completed or an error causes it to terminate."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "client.executions.transitions.stream(execution_id=execution.id)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "ai",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/cookbooks/README.md b/cookbooks/README.md
new file mode 100644
index 000000000..e7a6bfa89
--- /dev/null
+++ b/cookbooks/README.md
@@ -0,0 +1,157 @@
+
+
+
+
+# Julep AI - Notebook Overview
+
+Welcome to the **Julep AI Notebook Collection**! This directory contains a set of Jupyter notebooks designed to showcase various AI and automation tasks using Julep's features.
+
+Each notebook explores a unique use case, demonstrating different aspects of Julep's capabilities. Below is a quick overview of the notebooks, their purpose, and a link to run each of them on Google Colab.
+
+| **Notebook Name** | **Colab Link** | **Description** | **Implemented** |
+|------------------------------------------------- |---------------------------------------------------------------------------- |--------------------------------------------------------------------|-----------------|
+| `01-Website_Crawler_using_Spider.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/01-Website_Crawler_using_Spider.ipynb) | Implements a web crawler using a spider to extract website content. | Yes |
+| `02-Sarcastic_News_Headline_Generator.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/02-Sarcastic_News_Headline_Generator.ipynb) | Generates sarcastic news headlines using a Brave Search Tool. | Yes |
+| `03-SmartResearcher_With_WebSearch.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/03-SmartResearcher_With_WebSearch.ipynb) | Searches and aggregates web information for research purposes using Brave Search. | Yes |
+| `04-TripPlanner_With_Weather_And_WikiInfo.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/04-TripPlanner_With_Weather_And_WikiInfo.ipynb) | Plans trips using weather data and Wikipedia information. | Yes |
+| `05-Basic_Agent_Creation_and_Interaction.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/05-Basic_Agent_Creation_and_Interaction.ipynb) | Demonstrates how to create a basic agent and interact with it. | No |
+| `06-Designing_Multi-Step_Tasks.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/06-Designing_Multi-Step_Tasks.ipynb) | Explores creating tasks with various step types. | No |
+| `07-Integrating_External_Tools_and_APIs.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/07-Integrating_External_Tools_and_APIs.ipynb) | Shows how to integrate and use external tools and APIs. | No |
+| `08-Managing_Persistent_Sessions.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/08-Managing_Persistent_Sessions.ipynb) | Covers creating and managing persistent sessions with context. | No |
+| `09-User_Management_and_Personalization.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/09-User_Management_and_Personalization.ipynb) | Demonstrates user management and personalized interactions. | No |
+| `10-Document_Management_and_Search.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/10-Document_Management_and_Search.ipynb) | Explores document upload, management, and search capabilities. | No |
+| `11-Advanced_Chat_Interactions.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/11-Advanced_Chat_Interactions.ipynb) | Covers advanced chat features and context handling. | No |
+| `12-Monitoring_Task_Executions.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/12-Monitoring_Task_Executions.ipynb) | Shows how to monitor and manage task executions. | No |
+| `13-Error_Handling_and_Recovery.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/13-Error_Handling_and_Recovery.ipynb) | Demonstrates implementing error handling and recovery in tasks. | No |
+| `14-API_Versioning_and_Configurations.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/14-API_Versioning_and_Configurations.ipynb) | Explores API versioning and server configuration options. | No |
+
+## Potential Cookbooks for Contributors
+
+We welcome contributions to expand our cookbook collection. Here are some ideas for new cookbooks that showcase various Julep features and use cases:
+
+| **Potential Cookbook Name** | **Description** | **Key Features** |
+|---------------------------- |----------------- |------------------|
+| Automated Research Assistant | Conducts research on given topics using web search and summarization | Web search, Tool integration, Multi-step tasks |
+| Customer Support Chatbot | Interacts with users, analyzes sentiment, and routes complex issues | Chat functionality, Sentiment analysis, Conditional logic |
+| Daily News Aggregator | Collects and summarizes news articles, emails summaries to subscribers | Scheduled tasks, Email integration, Content summarization |
+| Social Media Monitoring System | Monitors social platforms for keywords and sends alerts | API integration, Real-time monitoring, Alert system |
+| Weather-Based Notification Service | Checks weather forecasts and notifies users of severe conditions | Weather API integration, Conditional alerts, Scheduling |
+| Automated Financial Report Generator | Gathers financial data and generates reports for stakeholders | Data aggregation, Report generation, Scheduling |
+| Task Management and Reminder System | Manages user tasks, sets reminders, and sends notifications | User management, Scheduling, Notifications |
+| Interactive Story Generator | Creates stories based on user input with corresponding images | Natural language processing, Image generation, User interaction |
+| Automated Meeting Scheduler | Finds optimal meeting times and manages calendar entries | Calendar integration, Conflict resolution, Invitations |
+| Email Categorization and Response | Categorizes incoming emails and sends automated responses | Email processing, Content categorization, Automated responses |
+| E-commerce Order Processing | Handles order placements, inventory, and shipment tracking | Workflow automation, Inventory management, Notifications |
+| Content Moderation System | Reviews and classifies user-generated content | Content analysis, Classification, Moderation actions |
+| Personalized Learning Assistant | Provides tailored learning materials and tracks progress | Personalization, Progress tracking, Content recommendation |
+| Automated Backup and Recovery | Regularly backs up data and initiates recovery procedures | Scheduled tasks, Error handling, Data management |
+| Smart Home Automation Workflow | Manages smart home devices based on user commands and conditions | IoT integration, Conditional logic, User interaction |
+| Inventory Management System | Tracks inventory levels and automates reordering | Stock management, Predictive analysis, Automated ordering |
+| Event-Driven Notification System | Triggers notifications based on specific events or thresholds | Event monitoring, Conditional alerts, Multi-channel notifications |
+| Data Cleaning and Transformation | Cleans and transforms raw data for analysis | Data processing, ETL operations, Quality assurance |
+| Project Management Assistant | Breaks down projects into tasks and tracks progress | Task decomposition, Progress monitoring, Reporting |
+| Parallel Data Processing Pipeline | Processes large datasets in parallel and aggregates results | Parallel execution, Data aggregation, Scalable processing |
+| Dynamic Content Recommendation | Analyzes user behavior and recommends personalized content | User profiling, Content analysis, Personalized recommendations |
+| Compliance Monitoring System | Monitors activities for regulatory compliance and generates reports | Rule-based monitoring, Violation detection, Compliance reporting |
+| Intelligent Resume Screening | Evaluates resumes based on criteria and forwards qualified candidates | Document analysis, Candidate scoring, Automated screening |
+| Automated Code Review Pipeline | Reviews code commits, runs tests, and manages deployments | Code analysis, Automated testing, Deployment management |
+| Personal Finance Tracker | Tracks expenses, analyzes patterns, and provides financial advice | Financial data analysis, Pattern recognition, Personalized advice |
+| Automated Content Publishing | Schedules and publishes content across various platforms | Content management, Multi-platform publishing, Scheduling |
+| AI-Powered Personal Assistant | Manages personal tasks, schedules, and provides information | Task management, Scheduling, Information retrieval |
+| Bug Tracking and Reporting | Monitors repositories, categorizes issues, and assigns to developers | Issue tracking, Categorization, Automated assignment |
+| Multi-Stage Data Validation | Validates data through multiple stages with different rules | Data validation, Multi-step processing, Error handling |
+| Document Summarization and Archiving | Summarizes documents and archives them for easy retrieval | Text summarization, Document classification, Archiving |
+| Real-Time Stock Market Analyzer | Analyzes market data and alerts users about significant changes | Real-time data processing, Financial analysis, Alert system |
+| Webinar Management System | Schedules webinars, manages participants, and handles follow-ups | Event scheduling, Participant management, Automated follow-ups |
+| Smart Content Filtering | Filters and recommends content based on user preferences | Content analysis, User profiling, Recommendation system |
+| Automated Translation Workflow | Translates content into multiple languages and localizes it | Language translation, Localization, Content management |
+| AI-Driven Survey Analysis | Analyzes survey responses and generates insight reports | Survey processing, Sentiment analysis, Report generation |
+| Compliance Documentation Generator | Creates compliance documents based on regulatory standards | Document generation, Compliance checking, Template management |
+| Task Prioritization and Allocation | Prioritizes tasks and allocates them to team members | Task analysis, Resource allocation, Team management |
+| Webinar Feedback Analyzer | Collects and analyzes feedback from webinar participants | Feedback collection, Sentiment analysis, Improvement suggestions |
+| Health and Fitness Tracker | Tracks health metrics and provides personalized fitness recommendations | Health data analysis, Personalized recommendations, Progress tracking |
+| Incident Response System | Detects incidents, initiates response workflows, and notifies personnel | Incident detection, Workflow automation, Alert system |
+| Content Optimization Workflow | Analyzes content performance and optimizes for better engagement | Performance analysis, Content optimization, A/B testing |
+| Legal Document Processor | Extracts key information from legal documents and ensures compliance | Document analysis, Information extraction, Compliance checking |
+| Job Application Tracker | Tracks job applications and provides application improvement suggestions | Application tracking, Status updates, Improvement recommendations |
+| Content Rescheduling System | Monitors content performance and reschedules for better visibility | Performance monitoring, Content scheduling, Optimization |
+| AI-Powered Investment Advisor | Analyzes financial data and suggests investment opportunities | Financial analysis, Risk assessment, Investment recommendations |
+| Intelligent Document Version Control | Manages document versions and notifies users about updates | Version control, Change tracking, Notification system |
+| Marketing Campaign Manager | Creates, schedules, and optimizes marketing campaigns | Campaign planning, Performance tracking, Optimization strategies |
+| Competitive Analysis Workflow | Gathers data on competitors and generates analysis reports | Data collection, Comparative analysis, Report generation |
+| Health Monitoring and Alerting | Monitors health metrics and alerts users and healthcare providers | Health data analysis, Anomaly detection, Alert system |
+| Travel Itinerary Planner | Plans travel itineraries based on preferences and conditions | Trip planning, Preference matching, Dynamic scheduling |
+| AI-Powered Personal Diary | Helps maintain a diary and provides insights into emotions and growth | Natural language processing, Sentiment analysis, Personal growth tracking |
+| Language Learning Tutor | Provides exercises and personalized feedback for language learners | Language processing, Progress tracking, Personalized lessons |
+| Knowledge Base Maintenance | Updates and maintains a knowledge base with new information | Information extraction, Knowledge management, Consistency checking |
+| Feedback Loop for Improvement | Collects user feedback, analyzes it, and implements improvements | Feedback analysis, Improvement tracking, Stakeholder notifications |
+| Grant Application Processor | Reviews grant applications, evaluates eligibility, and notifies applicants | Application processing, Eligibility checking, Automated notifications |
+| AI-Powered Resume Builder | Assists in building resumes and provides improvement suggestions | Resume analysis, Content generation, Personalized recommendations |
+| Vendor Management System | Manages vendor information, monitors performance, and handles communications | Vendor tracking, Performance monitoring, Communication automation |
+| Meeting Minutes Recorder | Records meetings, transcribes audio, and distributes summaries | Audio transcription, Summary generation, Automated distribution |
+| Personal Shopping Assistant | Finds products based on preferences and notifies about deals | Product matching, Price comparison, Deal notifications |
+| Environmental Monitoring Reporter | Monitors environmental data and generates reports for stakeholders | Data monitoring, Anomaly detection, Report generation |
+| Data Sync and Integration Workflow | Syncs data between platforms and handles conflicts | Data synchronization, Conflict resolution, Integration management |
+| Competitive Pricing Strategy | Analyzes competitor pricing and adjusts prices dynamically | Price analysis, Dynamic pricing, Market monitoring |
+| User Onboarding Workflow | Manages the user onboarding process and sets up accounts | User registration, Account setup, Welcome communications |
+| Content Curation and Distribution | Curates content based on interests and tracks engagement | Content curation, Distribution scheduling, Engagement tracking |
+
+We encourage contributors to choose from these ideas or propose their own to showcase Julep's capabilities in solving real-world problems.
+
+## Julep Features Demonstrated
+
+These notebooks showcase various features of Julep. Here's an overview of the key features you can explore:
+
+1. **Agent Management**
+ - Creating and updating agents
+ - Configuring agent settings (name, model, about)
+
+2. **Task Definition and Execution**
+ - Creating multi-step tasks
+ - Executing tasks with specific inputs
+ - Various step types (Prompt, Tool Call, Evaluate, Conditional Logic, Loops, etc.)
+
+3. **Tool Integration**
+ - Adding custom tools to agents
+ - Integrating external APIs (e.g., web search, image generation)
+
+4. **Session Management**
+ - Creating and managing persistent sessions
+ - Handling context overflow
+
+5. **User Management**
+ - Creating and managing users
+ - Associating users with sessions
+
+6. **Document Management**
+ - Uploading and managing documents
+ - Document search functionality
+
+7. **Chat Functionality**
+ - Interacting with agents through chat sessions
+
+8. **Execution Monitoring**
+ - Streaming execution progress
+ - Monitoring task lifecycle
+
+9. **API Versioning**
+ - Support for different API versions
+
+10. **Authentication**
+ - API Key authentication
+
+11. **Server Configuration**
+ - Configurable server environments
+
+We encourage contributors to create new notebooks that demonstrate these features in various combinations and use cases.
+
+### Additional Information
+
+For more details about the tasks or if you have any questions, please don't hesitate to contact the author:
+
+**Author:** Julep AI
+**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or Discord
+
+---
+
+If you have feedback or would like to contribute to the notebooks, feel free to open an issue(s) in the [repository](https://github.com/julep-ai/julep).
\ No newline at end of file
diff --git a/docker-bake.hcl b/docker-bake.hcl
new file mode 100644
index 000000000..70d8ed1ea
--- /dev/null
+++ b/docker-bake.hcl
@@ -0,0 +1,72 @@
+variable "TAG" {
+ default = "..."
+}
+
+variable "GIT_SHA" {
+ default = "..."
+}
+
+group "default" {
+ targets = [
+ "agents-api",
+ "agents-api-worker",
+ "cozo-migrate",
+ "memory-store",
+ "integrations",
+ "gateway",
+ ]
+}
+
+target "agents-api" {
+ context = "./agents-api"
+ dockerfile = "Dockerfile"
+ tags = [
+ "julepai/agents-api:${TAG}",
+ "julepai/agents-api:git-${GIT_SHA}"
+ ]
+}
+
+target "agents-api-worker" {
+ context = "./agents-api"
+ dockerfile = "Dockerfile.worker"
+ tags = [
+ "julepai/worker:${TAG}",
+ "julepai/worker:git-${GIT_SHA}"
+ ]
+}
+
+target "cozo-migrate" {
+ context = "./agents-api"
+ dockerfile = "Dockerfile.migration"
+ tags = [
+ "julepai/cozo-migrate:${TAG}",
+ "julepai/cozo-migrate:git-${GIT_SHA}"
+ ]
+}
+
+target "memory-store" {
+ context = "./memory-store"
+ dockerfile = "Dockerfile"
+ tags = [
+ "julepai/memory-store:${TAG}",
+ "julepai/memory-store:git-${GIT_SHA}"
+ ]
+}
+
+target "integrations" {
+ context = "./integrations-service"
+ dockerfile = "Dockerfile"
+ tags = [
+ "julepai/integrations:${TAG}",
+ "julepai/integrations:git-${GIT_SHA}"
+ ]
+}
+
+target "gateway" {
+ context = "./gateway"
+ dockerfile = "Dockerfile"
+ tags = [
+ "julepai/gateway:${TAG}",
+ "julepai/gateway:git-${GIT_SHA}"
+ ]
+}
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
index b2db4939f..c5ea3bbf0 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -11,6 +11,7 @@ include:
- ./agents-api/docker-compose.yml
- ./scheduler/docker-compose.yml
- ./llm-proxy/docker-compose.yml
+ - ./integrations-service/docker-compose.yml
# TODO: Enable after testing
# - ./monitoring/docker-compose.yml
diff --git a/docs/README.md b/docs/README.md
index 475e4d290..6b030fc50 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,5 +1,5 @@
---
-description: Get started with Julep
+description: Introducing Julep
layout:
title:
visible: true
@@ -13,26 +13,598 @@ layout:
visible: true
---
-# Introduction
+*****
+> ### This docs site is currently under construction although this github README below should suffice for now.
-Julep is a platform for developing stateful and functional LLM-powered applications.
+
+*****
-## Why Julep?
+## Introduction
-We've built a lot of AI apps and understand how difficult it is to evaluate hundreds of tools, techniques, and models, and then make them work well together.
+Julep is an open-source platform for creating persistent AI agents with customizable workflows. It provides tools to develop, manage, and deploy AI-driven applications, focusing on flexibility and ease of use.
-**The Problems**
+With Julep, you can:
+- Quickly develop AI agents that retain context and state across interactions
+- Design and execute sophisticated workflows tailored to your AI agents
+- Seamlessly integrate various tools and APIs into your AI workflows
+- Effortlessly manage persistent sessions and user interactions
-1. The barrier to making LLM apps with memory, knowledge & tools is too high.
-2. Agentic behavior is hard to control when done through multi-agent frameworks.
+Whether you're developing a chatbot, automating tasks, or building a complex AI assistant, Julep provides the flexibility and features you need to turn your ideas into reality swiftly and efficiently.
+
+
+
+
+Here's a quick python example:
+
+
+
+
+from julep import Julep, AsyncJulep
+
+# 🔑 Initialize the Julep client
+# Or alternatively, use AsyncJulep for async operations
+client = Julep(api_key="your_api_key")
+
+##################
+## 🤖 Agent 🤖 ##
+##################
+
+# Create a research agent
+agent = client.agents.create(
+ name="Research Agent",
+ model="claude-3.5-sonnet",
+ about="You are a research agent designed to handle research inquiries.",
+)
+
+# 🔍 Add a web search tool to the agent
+client.agents.tools.create(
+ agent_id=agent.id,
+ name="web_search", # Should be python valid variable name
+ description="Use this tool to research inquiries.",
+ integration={
+ "provider": "brave",
+ "method": "search",
+ "setup": {
+ "api_key": "your_brave_api_key",
+ },
+ },
+)
+
+#################
+## 💬 Chat 💬 ##
+#################
+
+# Start an interactive chat session with the agent
+session = client.sessions.create(
+ agent_id=agent.id,
+ context_overflow="adaptive", # 🧠 Julep will dynamically compute the context window if needed
+)
+
+# 🔄 Chat loop
+while (user_input := input("You: ")) != "exit":
+ response = client.sessions.chat(
+ session_id=session.id,
+ message=user_input,
+ )
+
+ print("Agent: ", response.choices[0].message.content)
+
+
+#################
+## 📋 Task 📋 ##
+#################
+
+# Create a recurring research task for the agent
+task = client.tasks.create(
+ agent_id=agent.id,
+ name="Research Task",
+ description="Research the given topic every 24 hours.",
+ #
+ # 🛠️ Task specific tools
+ tools=[
+ {
+ "name": "send_email",
+ "description": "Send an email to the user with the results.",
+ "api_call": {
+ "method": "post",
+ "url": "https://api.sendgrid.com/v3/mail/send",
+ "headers": {"Authorization": "Bearer YOUR_SENDGRID_API_KEY"},
+ },
+ }
+ ],
+ #
+ # 🔢 Task main steps
+ main=[
+ #
+ # Step 1: Research the topic
+ {
+ # `_` (underscore) variable refers to the previous step's output
+ # Here, it points to the topic input from the user
+ "prompt": "Look up topic '{{_.topic}}' and summarize the results.",
+ "tools": [{"ref": {"name": "web_search"}}], # 🔍 Use the web search tool from the agent
+ "unwrap": True,
+ },
+ #
+ # Step 2: Send email with research results
+ {
+ "tool": "send_email",
+ "arguments": {
+ "subject": "Research Results",
+ "body": "'Here are the research results for today: ' + _.content",
+ "to": "inputs[0].email", # Reference the email from the user's input
+ },
+ },
+ #
+ # Step 3: Wait for 24 hours before repeating
+ {"sleep": "24 * 60 * 60"},
+ ],
+)
+
+# 🚀 Start the recurring task
+client.executions.create(task_id=task.id, input={"topic": "Python"})
+
+# 🔁 This will run the task every 24 hours,
+# research for the topic "Python", and
+# send the results to the user's email
+
+
-{% embed url="https://youtu.be/LhQMBAehL_Q" %}
## Features
-* **Statefulness By Design**: Manages context by default. Uses [CozoDB](https://cozodb.org/) to save & retrieve conversation history, OpenAPI specification tools & documents.
-* **Support for Users & Agents**: Allows creating different user <--> agent interactions like `One Agent <-> Many Users`; etc. Read more: [Broken link](broken-reference "mention")
-* **Use and switch between any LLMs anytime**: Switch and use different LLMs, providers, and models, self-hosted or otherwise.
-* **90+ tools built-in**: Connect your AI app to 150+ third-party applications using [Composio](https://docs.composio.dev/framework/julep/) natively.
-* **Production-ready**: Julep comes ready to be deployed to production using Docker Compose. Support for k8s coming soon!
-* **GitHub Actions-like workflows for tasks**: Define agentic workflows to be executed asynchronously with one or more without worrying about timeouts or multiplying hallucinations. (coming soon!)
+Julep simplifies the process of building persistent AI agents with customizable workflows. Key features include:
+
+- **Persistent AI Agents**: Create and manage AI agents that maintain context across interactions.
+- **Customizable Workflows**: Design complex, multi-step AI workflows using Tasks.
+- **Tool Integration**: Seamlessly integrate various tools and APIs into your AI workflows.
+- **Document Management**: Efficiently manage and search through documents for your agents.
+- **Session Management**: Handle persistent sessions for continuous interactions.
+- **Flexible Execution**: Support for parallel processing, conditional logic, and error handling in workflows.
+
+## Installation
+
+To get started with Julep, install it using [npm](https://www.npmjs.com/package/@julep/sdk) or [pip](https://pypi.org/project/julep/):
+
+```bash
+npm install @julep/sdk
+```
+
+or
+
+```bash
+pip install julep
+```
+
+> [!TIP]
+> ~~Get your API key [here](https://app.julep.ai/api-keys).~~
+>
+> While we are in beta, you can reach out on [Discord](https://discord.com/invite/JTSBGRZrzj) to get your API key.
+
+## Quick Start Guide
+
+### Step 1: Import Julep
+
+First, import the Julep SDK into your project:
+
+```javascript
+const Julep = require('@julep/sdk');
+```
+
+or
+
+```python
+from julep import AsyncJulep
+```
+
+### Step 2: Initialize the Agent
+
+Create a new agent with basic settings:
+
+```javascript
+const julep = new Julep({ apiKey: 'your-api-key' });
+
+const agent = await julep.agents.create({
+ name: 'ResearchAssistant',
+ model: 'gpt-4-turbo',
+ about: "You are a creative storytelling agent that can craft engaging stories and generate comic panels based on ideas.",
+});
+```
+
+or
+
+```python
+client = AsyncJulep(api_key="your_api_key")
+
+agent = await client.agents.create(
+ name="Storytelling Agent",
+ model="gpt-4-turbo",
+ about="You are a creative storytelling agent that can craft engaging stories and generate comic panels based on ideas.",
+)
+```
+
+### Step 3: Chat with the Agent
+
+Start an interactive chat session with the agent:
+
+```javascript
+const session = await julep.sessions.create({
+ agentId: agent.id,
+});
+
+// Send messages to the agent
+const response = await julep.sessions.chat({
+ sessionId: session.id,
+ message: 'Hello, can you tell me a story?',
+});
+
+console.log(response);
+```
+
+or
+
+```python
+session = await client.sessions.create(agent_id=agent.id)
+
+# Send messages to the agent
+response = await client.sessions.chat(
+ session_id=session.id,
+ message="Hello, can you tell me a story?",
+)
+
+print(response)
+```
+
+
+### Step 4: Create a multi-step Task
+
+Let's define a multi-step task to create a story and generate a paneled comic strip based on an input idea:
+
+```python
+# 🛠️ Add an image generation tool (DALL·E) to the agent
+await client.agents.tools.create(
+ agent_id=agent.id,
+ name="image_generator",
+ description="Use this tool to generate images based on descriptions.",
+ integration={
+ "provider": "dalle",
+ "method": "generate_image",
+ "setup": {
+ "api_key": "your_dalle_api_key",
+ },
+ },
+)
+
+# 📋 Task
+# Create a task that takes an idea and creates a story and a 4-panel comic strip
+task = await client.tasks.create(
+ agent_id=agent.id,
+ name="Story and Comic Creator",
+ description="Create a story based on an idea and generate a 4-panel comic strip illustrating the story.",
+ main=[
+ # Step 1: Generate a story and outline into 4 panels
+ {
+ "prompt": [
+ {
+ "role": "system",
+ "content": "You are {{agent.name}}. {{agent.about}}"
+ },
+ {
+ "role": "user",
+ "content": (
+ "Based on the idea '{{_.idea}}', write a short story suitable for a 4-panel comic strip. "
+ "Provide the story and a numbered list of 4 brief descriptions for each panel illustrating key moments in the story."
+ ),
+ },
+ ],
+ "unwrap": True,
+ },
+ # Step 2: Extract the panel descriptions and story
+ {
+ "evaluate": {
+ "story": "_.split('1. ')[0].strip()",
+ "panels": "re.findall(r'\\d+\\.\\s*(.*?)(?=\\d+\\.\\s*|$)', _)",
+ }
+ },
+ # Step 3: Generate images for each panel using the image generator tool
+ {
+ "foreach": {
+ "in": "_.panels",
+ "do": {
+ "tool": "image_generator",
+ "arguments": {
+ "description": "_",
+ },
+ },
+ },
+ },
+ # Step 4: Generate a catchy title for the story
+ {
+ "prompt": [
+ {
+ "role": "system",
+ "content": "You are {{agent.name}}. {{agent.about}}"
+ },
+ {
+ "role": "user",
+ "content": "Based on the story below, generate a catchy title.\n\nStory: {{outputs[1].story}}",
+ },
+ ],
+ "unwrap": True,
+ },
+ # Step 5: Return the story, the generated images, and the title
+ {
+ "return": {
+ "title": "outputs[3]",
+ "story": "outputs[1].story",
+ "comic_panels": "[output.image.url for output in outputs[2]]",
+ }
+ },
+ ],
+)
+```
+
+> [!TIP]
+> node.js version of this is similar.
+
+### Step 5: Execute the Task
+
+```python
+# 🚀 Execute the task with an input idea
+execution = await client.executions.create(
+ task_id=task.id,
+ input={"idea": "A cat who learns to fly"}
+)
+
+# 🎉 Watch as the story and comic panels are generated
+await client.executions.stream(execution_id=execution.id)
+```
+
+This example demonstrates how to create an agent with a custom tool, define a complex task with multiple steps, and execute it to generate a creative output.
+
+
+
+> [!TIP]
+> You can find another node.js example [here](example.ts) or python example [here](example.py).
+
+## Concepts
+
+Julep is built on several key technical components that work together to create powerful AI workflows:
+
+### Agents
+AI-powered entities backed by large language models (LLMs) that execute tasks and interact with users. Agents are the core functional units of Julep.
+
+```mermaid
+graph TD
+ Agent[Agent] --> LLM[Large Language Model]
+ Agent --> Tasks[Tasks]
+ Agent --> Users[Users]
+ Tasks --> Tools[Tools]
+```
+
+### Users
+Entities that interact with agents. Users can be associated with sessions and have their own metadata, allowing for personalized interactions.
+
+```mermaid
+graph LR
+ User[User] --> Sessions[Sessions]
+ Sessions --> Agents[Agents]
+ Sessions --> Metadata[Metadata]
+```
+
+### Sessions
+Stateful interactions between agents and users. Sessions maintain context across multiple exchanges and can be configured for different behaviors, including context management and overflow handling.
+
+```mermaid
+graph LR
+ Sessions[Sessions] --> Agents[Agents]
+ Sessions --> Users[Users]
+ Sessions --> ContextManagement[Context Management]
+ Sessions --> OverflowHandling[Overflow Handling]
+```
+
+### Tasks
+Multi-step, programmatic workflows that agents can execute. Tasks define complex operations and can include various types of steps, such as prompts, tool calls, and conditional logic.
+
+```mermaid
+graph TD
+ Tasks[Tasks] --> Steps[Workflow Steps]
+ Steps --> Prompt[Prompt]
+ Steps --> ToolCalls[Tool Calls]
+ Steps --> ConditionalLogic[Conditional Logic]
+```
+
+### Tools
+Integrations that extend an agent's capabilities. Tools can be user-defined functions, system tools, or third-party API integrations. They allow agents to perform actions beyond text generation.
+
+```mermaid
+graph LR
+ Tools[Tools] --> UserDefinedFunctions[User-Defined Functions]
+ Tools --> SystemTools[System Tools]
+ Tools --> ThirdPartyAPIs[Third-Party APIs]
+```
+
+### Documents
+Text or data objects that can be associated with agents or users. Documents are vectorized and stored in a vector database, enabling semantic search and retrieval during agent interactions.
+
+```mermaid
+graph LR
+ Documents[Documents] --> VectorDatabase[Vector Database]
+ Documents --> SemanticSearch[Semantic Search]
+ Documents --> AgentsOrUsers[Agents or Users]
+```
+
+### Executions
+Instances of tasks that have been initiated with specific inputs. Executions have their own lifecycle and state machine, allowing for monitoring, management, and resumption of long-running processes.
+
+```mermaid
+graph LR
+ Executions[Executions] --> Tasks[Tasks]
+ Executions --> Lifecycle[Lifecycle]
+ Executions --> Monitoring[Monitoring]
+ Executions --> Management[Management]
+ Executions --> Resumption[Resumption]
+```
+
+For a more detailed explanation of these concepts and their interactions, please refer to our [Concepts Documentation](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md).
+
+## Understanding Tasks
+
+Tasks are the core of Julep's workflow system. They allow you to define complex, multi-step AI workflows that your agents can execute. Here's a brief overview of task components:
+
+- **Name and Description**: Each task has a unique name and description for easy identification.
+- **Main Steps**: The core of a task, defining the sequence of actions to be performed.
+- **Tools**: Optional integrations that extend the capabilities of your agent during task execution.
+
+### Types of Workflow Steps
+
+Tasks in Julep can include various types of steps:
+
+1. **Prompt**: Send a message to the AI model and receive a response.
+ ```python
+ {"prompt": "Analyze the following data: {{data}}"}
+ ```
+
+2. **Tool Call**: Execute an integrated tool or API.
+ ```python
+ {"tool": "web_search", "arguments": {"query": "Latest AI developments"}}
+ ```
+
+3. **Evaluate**: Perform calculations or manipulate data.
+ ```python
+ {"evaluate": {"average_score": "sum(scores) / len(scores)"}}
+ ```
+
+4. **Conditional Logic**: Execute steps based on conditions.
+ ```python
+ {"if": "score > 0.8", "then": [...], "else": [...]}
+ ```
+
+5. **Loops**: Iterate over data or repeat steps.
+ ```python
+ {"foreach": {"in": "data_list", "do": [...]}}
+ ```
+
+| Step Name | Description | Input |
+|--------------------|--------------------------------------------------------------------------------------------------|------------------------------------------------------|
+| **Prompt** | Send a message to the AI model and receive a response. | Prompt text or template |
+| **Tool Call** | Execute an integrated tool or API. | Tool name and arguments |
+| **Evaluate** | Perform calculations or manipulate data. | Expressions or variables to evaluate |
+| **Wait for Input** | Pause workflow until input is received. | Any required user or system input |
+| **Log** | Log a specified value or message. | Message or value to log |
+| **Embed** | Embed text into a specific format or system. | Text or content to embed |
+| **Search** | Perform a document search based on a query. | Search query |
+| **Get** | Retrieve a value from a key-value store. | Key identifier |
+| **Set** | Assign a value to a key in a key-value store. | Key and value to assign |
+| **Parallel** | Run multiple steps in parallel. | List of steps to execute simultaneously |
+| **Foreach** | Iterate over a collection and perform steps for each item. | Collection or list to iterate over |
+| **MapReduce** | Map over a collection and reduce the results based on an expression. | Collection to map and reduce expressions |
+| **If Else** | Conditional execution of steps based on a condition. | Condition to evaluate |
+| **Switch** | Execute steps based on multiple conditions, similar to a switch-case statement. | Multiple conditions and corresponding steps |
+| **Yield** | Run a subworkflow and await its completion. | Subworkflow identifier and input data |
+| **Error** | Handle errors by specifying an error message. | Error message or handling instructions |
+| **Sleep** | Pause the workflow for a specified duration. | Duration (seconds, minutes, etc.) |
+| **Return** | Return a value from the workflow. | Value to return |
+
+For detailed information on each step type and advanced usage, please refer to our [Task Documentation](https://docs.julep.ai/tasks).
+
+## Advanced Features
+
+Julep offers a range of advanced features to enhance your AI workflows:
+
+### Adding Tools to Agents
+
+Extend your agent's capabilities by integrating external tools and APIs:
+
+```python
+client.agents.tools.create(
+ agent_id=agent.id,
+ name="web_search",
+ description="Search the web for information.",
+ integration={
+ "provider": "google",
+ "method": "search",
+ "setup": {"api_key": "your_google_api_key"},
+ },
+)
+```
+
+### Managing Sessions and Users
+
+Julep provides robust session management for persistent interactions:
+
+```python
+session = client.sessions.create(
+ agent_id=agent.id,
+ user_id="user123",
+ context_overflow="adaptive"
+)
+
+# Continue conversation in the same session
+response = client.sessions.chat(
+ session_id=session.id,
+ message="Follow up on our previous conversation."
+)
+```
+
+### Document Integration and Search
+
+Easily manage and search through documents for your agents:
+
+```python
+# Upload a document
+document = client.documents.create(
+ file="path/to/document.pdf",
+ metadata={"category": "research_paper"}
+)
+
+# Search documents
+results = client.documents.search(
+ query="AI advancements",
+ filter={"category": "research_paper"}
+)
+```
+
+For more advanced features and detailed usage, please refer to our [Advanced Features Documentation](https://docs.julep.ai/advanced-features).
+
+## SDK Reference
+
+- [Node.js SDK](https://github.com/julep-ai/node-sdk/blob/main/api.md)
+- [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/api.md)
+
+## API Reference
+
+Explore our comprehensive API documentation to learn more about agents, tasks, and executions:
+
+- [Agents API](https://api.julep.ai/api/docs#tag/agents)
+- [Tasks API](https://api.julep.ai/api/docs#tag/tasks)
+- [Executions API](https://api.julep.ai/api/docs#tag/executions)
+
+## Examples and Tutorials
+
+Discover example projects and tutorials to help you get started and build upon provided examples:
+
+- [Example Projects](https://github.com/julep-ai/julep/tree/main/examples)
+- [Tutorials](https://docs.julep.ai/tutorials)
+
+## Contributing
+
+We welcome contributions to the project! Learn how to contribute and our code of conduct:
+
+- [Contributing Guidelines](https://github.com/julep-ai/julep/blob/main/CONTRIBUTING.md)
+- [Code of Conduct](https://github.com/julep-ai/julep/blob/main/CODE_OF_CONDUCT.md)
+
+## Support and Community
+
+Join our community to get help, ask questions, and share your ideas:
+
+- [Discord](https://discord.com/invite/JTSBGRZrzj)
+- [GitHub Discussions](https://github.com/julep-ai/julep/discussions)
+- [Twitter](https://twitter.com/julep_ai)
+
+## License
+
+This project is licensed under the [Apache License 2.0](https://github.com/julep-ai/julep/blob/main/LICENSE).
+
+## Acknowledgements
+
+We would like to express our gratitude to all contributors and the open-source community for their valuable resources and contributions.
diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md
index 62282dcfb..85a3f43b3 100644
--- a/docs/SUMMARY.md
+++ b/docs/SUMMARY.md
@@ -2,53 +2,49 @@
## ✨ Concepts
-* [Introduction](README.md)
+* [Introduction](introduction/overview.md)
+ * [Getting Started](introduction/getting_started.md)
* [🤖 Agents](concepts/agents.md)
* [🙎 Users](concepts/users.md)
* [🔁 Sessions](concepts/sessions/README.md)
- * [Adaptive Context ᴺᴱᵂ](concepts/sessions/adaptive-context.md)
+ * [Adaptive Context](concepts/sessions/adaptive-context.md)
* [📖 Documents](concepts/documents.md)
## 📖 Guides
-* [(Quickstart) Build a Basic Agent](guides/quickstart.md)
-* [Self-hosting Julep](guides/self-hosting.md)
-* [Build a Retrieval Augmented Generation (RAG) Agent](guides/build-a-retrieval-augmented-generation-rag-agent.md)
-* [Use Julep with Composio](guides/use-julep-with-composio.md)
-* [Image + Text with GPT-4o](guides/image-+-text-with-gpt-4o.md)
+* [How-to Guides](how-to-guides/README.md)
+ * [Customizing Tasks](how-to-guides/customizing_tasks.md)
+ * [Handling Executions](how-to-guides/handling_executions.md)
+ * [Managing Users](how-to-guides/managing_users.md)
+ * [Using Chat Features](how-to-guides/using_chat_features.md)
+* [Tutorials](tutorials/README.md)
+ * [Creating Your First Agent](tutorials/creating_your_first_agent.md)
+ * [Integrating Tools](tutorials/integrating_tools.md)
+ * [Managing Sessions](tutorials/managing_sessions.md)
+
+## 🧠 Explanation
+
+* [Core Concepts](explanation/core_concepts.md)
+* [Task Workflows](explanation/task_workflows.md)
+* [Chat Features](explanation/chat_features.md)
+* [Context Overflow](explanation/context_overflow.md)
+* [Default System Template](explanation/default_system_template.md)
+* [Execution State Machine](explanation/execution_state_machine.md)
+* [Metadata Precedence](explanation/metadata_precedence.md)
+* [Multi-Agent Sessions](explanation/multi_agent_sessions.md)
+* [Tool Integration](explanation/tool_integration.md)
## 🧑🍳 Cookbooks
* [Example Apps](cookbooks/example-apps.md)
-## 📖 API REFERENCE
-
-* [Python SDK](python-sdk-docs/README.md)
- * [Client](python-sdk-docs/julep/client.md)
- * [Agents](python-sdk-docs/julep/managers/agent.md)
- * [Users](python-sdk-docs/julep/managers/user.md)
- * [Sessions](python-sdk-docs/julep/managers/session.md)
- * [Memories](python-sdk-docs/julep/managers/memory.md)
- * [Docs](python-sdk-docs/julep/managers/doc.md)
- * [Tools](python-sdk-docs/julep/managers/tool.md)
- * [API](python-sdk-docs/julep/api/client.md)
-* [JS SDK](js-sdk-docs/README.md)
- * [API](js-sdk-docs/modules/api.md)
- * [Client](js-sdk-docs/classes/api\_JulepApiClient.JulepApiClient.md)
- * [Agent](js-sdk-docs/classes/managers\_agent.AgentsManager.md)
- * [Doc](js-sdk-docs/classes/managers\_doc.DocsManager.md)
- * [Memory](js-sdk-docs/classes/managers\_memory.MemoriesManager.md)
- * [Session](js-sdk-docs/classes/managers\_session.SessionsManager.md)
- * [Tool](js-sdk-docs/classes/managers\_tool.ToolsManager.md)
- * [User](js-sdk-docs/classes/managers\_user.UsersManager.md)
-* [Agents API](api-reference/agents-api/README.md)
- * [Agents](api-reference/agents-api/agents-api.md)
- * [Users](api-reference/agents-api/agents-api-1.md)
- * [Sessions](api-reference/agents-api/agents-api-2.md)
- * [Memories](api-reference/agents-api/agents-api-3.md)
- * [Docs](api-reference/agents-api/agents-api-4.md)
- * [Tasks](api-reference/agents-api/agents-api-5.md)
- * [Task Runs](api-reference/agents-api/agents-api-6.md)
+## 📖 API Reference
+
+* [Agent Endpoints](reference/api_endpoints/agent_endpoints.md)
+* [User Endpoints](reference/api_endpoints/user_endpoints.md)
+* [Session Endpoints](reference/api_endpoints/session_endpoints.md)
+* [Document Endpoints](reference/api_endpoints/doc_endpoints.md)
+* [Tool Endpoints](reference/api_endpoints/tool_endpoints.md)
***
@@ -56,4 +52,4 @@
* [⭐ Github](https://github.com/julep-ai/julep)
* [🐍 PyPI package](https://pypi.org/project/julep/)
* [📦 npm package](https://www.npmjs.com/package/@julep/sdk)
-* [📫 Postman Collection](https://god.gw.postman.com/run-collection/33213061-a0a1e3a9-9681-44ae-a5c2-703912b32336?action=collection%2Ffork\&source=rip\_markdown\&collection-url=entityId%3D33213061-a0a1e3a9-9681-44ae-a5c2-703912b32336%26entityType%3Dcollection%26workspaceId%3D183380b4-f2ac-44ef-b018-1f65dfc8256b)
+* [📫 Postman Collection](https://god.gw.postman.com/run-collection/33213061-a0a1e3a9-9681-44ae-a5c2-703912b32336?action=collection%2Ffork\&source=rip_markdown\&collection-url=entityId%3D33213061-a0a1e3a9-9681-44ae-a5c2-703912b32336%26entityType%3Dcollection%26workspaceId%3D183380b4-f2ac-44ef-b018-1f65dfc8256b)
diff --git a/docs/agent-studio/agents-playground.md b/docs/agent-studio/agents-playground.md
deleted file mode 100644
index 86807ea8c..000000000
--- a/docs/agent-studio/agents-playground.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Agents Playground
-
-{% hint style="info" %}
-**Coming soon.**
-{% endhint %}
diff --git a/docs/agent-studio/playground.md b/docs/agent-studio/playground.md
deleted file mode 100644
index aefdc59ed..000000000
--- a/docs/agent-studio/playground.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-description: Model Playground for testing the API
----
-
-# Model Playground
-
-## Introduction
-
-This guide will walk you through the process of utilizing the Model Playground for the Samantha model. This tool allows you to interact with a powerful language model, generating text based on your inputs.
-
-***
-
-## Signing up
-
-To begin using the Model Playground, you must first sign up for an account. Follow these steps:
-
-1. Visit the [Model Playground platform](http://platform.julep.ai).
-2. Click on the "Sign in With google" button.
-
-## Navigating the Dashboard
-
-
-
-After logging in, you will be directed to the dashboard. Here, you can find various options and features available to you. Take some time to familiarize yourself with the layout and navigation.
-
-## Using Model Playground
-
-The Model Playground allows you to interact with Samantha. Follow these steps to effectively utilize it:
-
-
-
-
-
-1. Select parameters such as temperature, max tokens and top p.
-2. Inputting text prompts
- 1. In the provided text boxes, you can modify the user name, assistant name and situation.
- 2. Click on "Add Message", select the message role, and input the prompt message
-3. Interpreting output
- 1. Once you've inputted your prompt, click on the "Submit" button.
- 2. The model will then generate text based on your prompt and parameters.
-
-## Using the "continue" feature
-
-
-
-
-
-1. To use the "continue" feature, select either the assistant or thought roles.
-2. Enter a prompt that you want to the model to fill.
-3. Click on the "Submit" button and the model will fill out the rest.
-
-## Copying and Sharing Results
-
-
-
-
-
-If you're satisfied with the generated text, you can copy the code for use in your codebases or share it with others.+
-
-1. Click on the "Get code" button or the "Share" button on the top left side.
-2. Click on "Copy"
-
-## Conclusion
-
-Congratulations! You've successfully learned how to use the Model Playground for an Samantha. Continue exploring and experimenting with different prompts and parameters to unlock the full potential of this powerful tool.
diff --git a/docs/api-reference/agents-api/README.md b/docs/api-reference/README.md
similarity index 100%
rename from docs/api-reference/agents-api/README.md
rename to docs/api-reference/README.md
diff --git a/docs/api-reference/agents-api/agents-api-1.md b/docs/api-reference/agents-api-1.md
similarity index 100%
rename from docs/api-reference/agents-api/agents-api-1.md
rename to docs/api-reference/agents-api-1.md
diff --git a/docs/api-reference/agents-api/agents-api-2.md b/docs/api-reference/agents-api-2.md
similarity index 100%
rename from docs/api-reference/agents-api/agents-api-2.md
rename to docs/api-reference/agents-api-2.md
diff --git a/docs/api-reference/agents-api/agents-api-3.md b/docs/api-reference/agents-api-3.md
similarity index 100%
rename from docs/api-reference/agents-api/agents-api-3.md
rename to docs/api-reference/agents-api-3.md
diff --git a/docs/api-reference/agents-api/agents-api-4.md b/docs/api-reference/agents-api-4.md
similarity index 100%
rename from docs/api-reference/agents-api/agents-api-4.md
rename to docs/api-reference/agents-api-4.md
diff --git a/docs/api-reference/agents-api/agents-api-5.md b/docs/api-reference/agents-api-5.md
similarity index 100%
rename from docs/api-reference/agents-api/agents-api-5.md
rename to docs/api-reference/agents-api-5.md
diff --git a/docs/api-reference/agents-api/agents-api-6.md b/docs/api-reference/agents-api-6.md
similarity index 100%
rename from docs/api-reference/agents-api/agents-api-6.md
rename to docs/api-reference/agents-api-6.md
diff --git a/docs/api-reference/agents-api/agents-api.md b/docs/api-reference/agents-api.md
similarity index 100%
rename from docs/api-reference/agents-api/agents-api.md
rename to docs/api-reference/agents-api.md
diff --git a/docs/api-reference/model-api.md b/docs/api-reference/model-api.md
deleted file mode 100644
index 473e32eac..000000000
--- a/docs/api-reference/model-api.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Model API
-
-* [Chat Completions](model-api/model-api.md): Chat completion generates responses from conversations (JSON lists).
-* [Completions](model-api/model-api-1.md) (Advanced): Access to the underlying model in raw chatml format. Meant only for advanced users.
-
-{% hint style="success" %}
-The API is compatible with the [OpenAI API](https://beta.openai.com/docs/api-reference/introduction) and can be used as a drop-in replacement with its clients.
-{% endhint %}
diff --git a/docs/api-reference/model-api/generation-parameters.md b/docs/api-reference/model-api/generation-parameters.md
deleted file mode 100644
index a597ead58..000000000
--- a/docs/api-reference/model-api/generation-parameters.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Generation Parameters
-
-Below is a detailed explanation of the request parameters you can use when making API calls to the Model API. For each parameter, we'll provide a recommendation for both high and low values.
-
-### Request Body Parameters Guide
-
-1. **model** (string, Required):
- * Represents the model to be used for the chat conversation.
- * `"julep-ai/samantha-1-turbo"`
-2. **messages** (array, Required):
- * Contains the conversation messages exchanged between user, assistant, and system.
- * Each message has a role, content, and optional name and function\_call.
- * Recommendation: Include conversation messages in an array following the provided structure.
-3. **functions** (array, Optional):
- * Specifies functions the model can generate JSON inputs for.
- * Each function has a name, description, and parameters.
- * Recommendation: Provide function details if applicable to your conversation.
-4. **function\_call** (string or object, Optional):
- * Determines the model's response to function calls.
- * Options: "none" (user response), "auto" (user or function response), or `{"name": "my_function"}` (specific function).
- * Recommendation: Use "none" if no functions are present, "auto" if functions exist, or specify a function.
-5. **temperature** (number, Optional):
- * Controls randomness in output. Higher values (e.g., 1.0) make output more random, lower values (e.g., 0.2) make it more focused and deterministic.
- * Range: 0 to 2.
- * Default: 1.
- * Recommendation: High value for creative responses, low value for controlled responses.
-6. **top\_p** (number, Optional):
- * Implements nucleus sampling by considering tokens with top\_p probability mass.
- * Higher values (e.g., 0.8) allow more diverse responses, lower values (e.g., 0.2) make responses more focused.
- * Range: 0 to 1.
- * Default: 1.
- * Recommendation: Values around 0.8 maintain coherence with some randomness.
-7. **n** (integer, Optional):
- * Specifies the number of response options generated for each input message.
- * Range: Any positive integer.
- * Default: 1.
- * Recommendation: Typically use 1 for most cases.
-8. **stream** (boolean, Optional):
- * If true, sends partial message deltas as server-sent events like ChatGPT.
- * Default: false.
-9. **stop** (string or array, Optional):
- * Indicates sequences where the API should stop generating tokens.
- * Default: null.
- * Recommendation: Use custom strings to guide response length and depth of content.
-10. **max\_tokens** (integer, Optional):
- * Sets the maximum number of tokens generated in a response.
- * Range: Any positive integer.
- * Default: Infinity.
- * Recommendation: Set a specific value to control response length.
-11. **presence\_penalty** (number, Optional):
- * Adjusts likelihood of tokens based on their appearance in the conversation.
- * Higher values (e.g., 1.5) encourage introducing new topics, lower values (e.g., -0.5) maintain current context.
- * Range: -2.0 to 2.0.
- * Default: 0.
- * Recommendation: Positive values encourage introducing new topics.
-12. **frequency\_penalty** (number, Optional):
- * Adjusts likelihood of tokens based on their frequency in the conversation.
- * Higher values (e.g., 1.5) discourage repetition, lower values (e.g., -0.5) promote more repetition.
- * Range: -2.0 to 2.0.
- * Default: 0.
- * Recommendation: Positive values discourage repetition.
-13. **logit\_bias** (map, Optional):
- * Modifies likelihood of specific tokens appearing in the response.
- * Default: null.
- * Recommendation: Use for customizing language or emphasizing certain phrases.
-14. **user** (string, Optional):
- * Represents an end-user identifier for monitoring and abuse detection.
- * Default: null.
- * Recommendation: Include a unique user identifier for better context.
diff --git a/docs/api-reference/model-api/model-api-1.md b/docs/api-reference/model-api/model-api-1.md
deleted file mode 100644
index 17b562aed..000000000
--- a/docs/api-reference/model-api/model-api-1.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Completions (Advanced)
-
-Our models are available behind a REST API. You can use this API to generate completions for your own applications.
-
-The API is compatible with the [OpenAI API](https://beta.openai.com/docs/api-reference/introduction) and can be used as a drop-in replacement with its clients.
-
-## Completions API
-
-Creates a completion for the provided prompt and parameters.
-
-{% swagger src="../../.gitbook/assets/model-openapi.yaml" path="/completions" method="post" expanded="true" %}
-[model-openapi.yaml](../../.gitbook/assets/model-openapi.yaml)
-{% endswagger %}
diff --git a/docs/api-reference/model-api/model-api.md b/docs/api-reference/model-api/model-api.md
deleted file mode 100644
index 4ab85bafc..000000000
--- a/docs/api-reference/model-api/model-api.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Chat Completions
-
-Our models are available behind a REST API. You can use this API to generate completions for your own applications.
-
-The API is compatible with the [OpenAI API](https://beta.openai.com/docs/api-reference/introduction) and can be used as a drop-in replacement with its clients.
-
-## Chat Completions API
-
-Given a list of messages comprising a conversation, the model will return a response.
-
-{% swagger src="../../.gitbook/assets/model-openapi.yaml" path="/chat/completions" method="post" expanded="true" %}
-[model-openapi.yaml](../../.gitbook/assets/model-openapi.yaml)
-{% endswagger %}
diff --git a/docs/explanation/chat_features.md b/docs/explanation/chat_features.md
new file mode 100644
index 000000000..a3e4bf0eb
--- /dev/null
+++ b/docs/explanation/chat_features.md
@@ -0,0 +1,68 @@
+# Chat Features in Julep
+
+Julep provides a robust chat system with various features for dynamic interaction with agents. Here's an overview of the key components and functionalities:
+
+## Chat Input
+
+When sending a request to the chat endpoint, you can include:
+
+1. **Messages**: An array of input messages representing the conversation so far.
+2. **Tools**: (Advanced) Additional tools provided for this specific interaction.
+3. **Tool Choice**: Specifies which tool the agent should use.
+4. **Memory Access Options**: Controls how the session accesses history and memories.
+5. **Chat Settings**: Various settings to control the behavior of the chat.
+
+## Chat Settings
+
+Chat settings allow fine-grained control over the generation process:
+
+- `model`: Identifier of the model to be used.
+- `stream`: Indicates if the server should stream the response as it's generated.
+- `stop`: Up to 4 sequences where the API will stop generating further tokens.
+- `seed`: For deterministic sampling.
+- `max_tokens`: The maximum number of tokens to generate.
+- `logit_bias`: Modify the likelihood of specified tokens appearing in the completion.
+- `response_format`: Control the format of the response (e.g., JSON object).
+- `agent`: Agent ID to use (for multi-agent sessions).
+
+Additional settings include `temperature`, `top_p`, `frequency_penalty`, and `presence_penalty`.
+
+## Chat Response
+
+The chat response can be either streamed or returned as a complete message:
+
+1. **Streamed Response**:
+ - Content-Type: `text/event-stream`
+ - Body: A stream of `ChatOutputChunk` objects.
+
+2. **Complete Response**:
+ - Content-Type: `application/json`
+ - Body: A `MessageChatResponse` object containing the full generated message(s).
+
+Both response types include:
+- `usage`: Token usage statistics.
+- `jobs`: Background job IDs spawned from this interaction.
+- `docs`: Documents referenced for this request (for citation purposes).
+
+## Finish Reasons
+
+The API provides information about why the model stopped generating tokens:
+
+- `stop`: Natural stop point or provided stop sequence reached.
+- `length`: Maximum number of tokens specified in the request was reached.
+- `content_filter`: Content was omitted due to a flag from content filters.
+- `tool_calls`: The model called a tool.
+
+## Advanced Features
+
+1. **Tool Integration**: The chat API allows for the use of tools, enabling the agent to perform actions or retrieve information during the conversation.
+
+2. **Multi-agent Sessions**: You can specify different agents within the same session using the `agent` parameter in the chat settings.
+
+3. **Response Formatting**: Control the output format, including options for JSON responses with specific schemas.
+
+4. **Memory and Recall**: Configure how the session accesses and stores conversation history and memories.
+
+5. **Document References**: The API returns information about documents referenced during the interaction, useful for providing citations or sources.
+
+These features provide developers with a powerful and flexible system for creating sophisticated, context-aware chat interactions that integrate seamlessly with other Julep components.
\ No newline at end of file
diff --git a/docs/explanation/context_overflow.md b/docs/explanation/context_overflow.md
new file mode 100644
index 000000000..5176db2dc
--- /dev/null
+++ b/docs/explanation/context_overflow.md
@@ -0,0 +1,20 @@
+# Context Overflow Handling in Julep
+
+Julep provides mechanisms to handle scenarios where the context size grows beyond the `token_budget` or the model's input limit. The behavior is determined by the `context_overflow` setting:
+
+1. `null` (default):
+ - Raises an exception
+ - The client is responsible for creating a new session or clearing the history for the current one
+
+2. `"truncate"`:
+ - Truncates the context from the top, except for the system prompt
+ - Continues truncating until the size falls below the budget
+ - Raises an error if the system prompt and last message combined exceed the budget
+
+3. `"adaptive"`:
+ - When the context size reaches 75% of the `token_budget`, a background task is created
+ - This task compresses the information by summarizing, merging, and clipping messages in the context
+ - Operates on a best-effort basis
+ - Requests might fail if the context wasn't compressed enough or on time
+
+By offering these options, Julep allows developers to choose the most appropriate strategy for handling context overflow in their applications, balancing between maintaining conversation history and staying within model limits.
\ No newline at end of file
diff --git a/docs/explanation/core_concepts.md b/docs/explanation/core_concepts.md
new file mode 100644
index 000000000..a291aeedf
--- /dev/null
+++ b/docs/explanation/core_concepts.md
@@ -0,0 +1,46 @@
+# Core Concepts in Julep
+
+Julep is a powerful backend system for managing agent execution. It provides several key components that work together to create flexible and intelligent applications. Here are the core concepts:
+
+## Agent
+
+An Agent in Julep is the main orchestrator of your application. Agents are backed by foundation models like GPT4 or Claude and use interaction history to determine their next actions. Key features include:
+
+- Long-lived interactions in sessions
+- Integration with system or user-defined tools
+- Access to agent-level documents for auto-retrieval
+- Ability to define and execute multi-step workflows (tasks)
+
+## User
+
+Users in Julep can be associated with sessions. They are used to scope memories formed by agents and can hold metadata for reference in sessions or task executions.
+
+## Session
+
+Sessions are the main workhorse for Julep apps:
+- They facilitate interactions with agents
+- Each session maintains its own context
+- Can have one or more agents and zero or more users
+- Allows control over context overflow handling
+
+## Tool
+
+Tools in Julep are programmatic interfaces that foundation models can "call" with inputs to achieve a goal. They can be:
+1. User-defined functions
+2. System tools (upcoming)
+3. Built-in integrations (upcoming)
+4. Webhooks & API calls (upcoming)
+
+## Doc
+
+Docs are collections of text snippets (with planned image support) indexed into a built-in vector database. They can be scoped to an agent or a user and are automatically recalled in sessions when relevant.
+
+## Task
+
+Tasks in Julep are Github Actions-style workflows that define long-running, multi-step actions. They allow for complex operations by defining steps and have access to all Julep integrations.
+
+## Execution
+
+An Execution is an instance of a Task that has been started with some input. It can be in various states (e.g., queued, running, awaiting input, succeeded, failed) and follows a specific state transition model.
+
+These core concepts form the foundation of Julep's functionality, allowing for the creation of sophisticated, context-aware applications with powerful agent capabilities.
\ No newline at end of file
diff --git a/docs/explanation/default_system_template.md b/docs/explanation/default_system_template.md
new file mode 100644
index 000000000..3d0f5d272
--- /dev/null
+++ b/docs/explanation/default_system_template.md
@@ -0,0 +1,71 @@
+# Default System Template in Julep
+
+Julep uses a default system template for sessions when a custom one is not provided. This template is written in Jinja2 and incorporates various elements from the agent, user, and session context. Here's a breakdown of the template:
+
+```jinja
+{%- if agent.name -%}
+You are {{agent.name}}.{{" "}}
+{%- endif -%}
+
+{%- if agent.about -%}
+About you: {{agent.name}}.{{" "}}
+{%- endif -%}
+
+{%- if user -%}
+You are talking to a user
+ {%- if user.name -%}{{" "}} and their name is {{user.name}}
+ {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}
+ {%- endif -%}
+{%- endif -%}
+
+{{"\n\n"}}
+
+{%- if agent.instructions -%}
+Instructions:{{"\n"}}
+ {%- if agent.instructions is string -%}
+ {{agent.instructions}}{{"\n"}}
+ {%- else -%}
+ {%- for instruction in agent.instructions -%}
+ - {{instruction}}{{"\n"}}
+ {%- endfor -%}
+ {%- endif -%}
+ {{"\n"}}
+{%- endif -%}
+
+{%- if tools -%}
+Tools:{{"\n"}}
+ {%- for tool in tools -%}
+ {%- if tool.type == "function" -%}
+ - {{tool.function.name}}
+ {%- if tool.function.description -%}: {{tool.function.description}}{%- endif -%}{{"\n"}}
+ {%- else -%}
+ - {{ 0/0 }} {# Error: Other tool types aren't supported yet. #}
+ {%- endif -%}
+ {%- endfor -%}
+{{"\n\n"}}
+{%- endif -%}
+
+{%- if docs -%}
+Relevant documents:{{"\n"}}
+ {%- for doc in docs -%}
+ {{doc.title}}{{"\n"}}
+ {%- if doc.content is string -%}
+ {{doc.content}}{{"\n"}}
+ {%- else -%}
+ {%- for snippet in doc.content -%}
+ {{snippet}}{{"\n"}}
+ {%- endfor -%}
+ {%- endif -%}
+ {{"---"}}
+ {%- endfor -%}
+{%- endif -%}
+```
+
+This template dynamically includes:
+1. Agent information (name and description)
+2. User information (if present)
+3. Agent instructions
+4. Available tools
+5. Relevant documents
+
+By using this template, Julep ensures that each session starts with a comprehensive context, allowing the agent to understand its role, the user it's interacting with, and the resources at its disposal.
\ No newline at end of file
diff --git a/docs/explanation/execution_state_machine.md b/docs/explanation/execution_state_machine.md
new file mode 100644
index 000000000..9acd2ccaf
--- /dev/null
+++ b/docs/explanation/execution_state_machine.md
@@ -0,0 +1,73 @@
+# Execution State Machine in Julep
+
+In Julep, an Execution represents an instance of a Task that has been started with some input. The Execution follows a specific state machine model, ensuring consistent and predictable behavior throughout its lifecycle.
+
+## Execution States
+
+An Execution can be in one of the following states:
+
+1. **queued**: The execution is waiting to start
+2. **starting**: The execution is in the process of starting
+3. **running**: The execution is actively running
+4. **awaiting_input**: The execution is suspended and waiting for input to resume
+5. **succeeded**: The execution has completed successfully
+6. **failed**: The execution has failed
+7. **cancelled**: The execution has been cancelled by the user
+
+## State Transitions
+
+The valid transitions between execution states are as follows:
+
+- `queued` → `starting`
+- `starting` → `running`, `awaiting_input`, `cancelled`, `succeeded`, `failed`
+- `running` → `running`, `awaiting_input`, `cancelled`, `succeeded`, `failed`
+- `awaiting_input` → `running`, `cancelled`
+- `cancelled`, `succeeded`, `failed` → (terminal states, no further transitions)
+
+## Transition Types
+
+Executions can go through various transition types:
+
+- `init`: Initializes the execution
+- `init_branch`: Starts a new branch in the execution
+- `finish`: Completes the execution successfully
+- `finish_branch`: Completes a branch in the execution
+- `wait`: Pauses the execution, waiting for input
+- `resume`: Resumes a paused execution
+- `error`: Indicates an error occurred
+- `step`: Represents a step in the execution process
+- `cancelled`: Indicates the execution was cancelled
+
+## State Machine Diagram
+
+```mermaid
+stateDiagram-v2
+ [*] --> queued
+ queued --> starting
+ queued --> cancelled
+ starting --> cancelled
+ starting --> failed
+ starting --> running
+ running --> running
+ running --> awaiting_input
+ running --> cancelled
+ running --> failed
+ running --> succeeded
+ awaiting_input --> running
+ awaiting_input --> cancelled
+
+ %% Added transitions for branching
+ running --> init_branch : init_branch
+ init_branch --> waiting : wait
+ init_branch --> cancelled : cancelled
+ init_branch --> finish_branch : finish_branch
+ finish_branch --> running : resume
+
+ %% Updated terminal states
+ cancelled --> [*]
+ succeeded --> [*]
+ failed --> [*]
+ finish_branch --> [*]
+```
+
+This state machine ensures that executions in Julep follow a consistent and predictable flow, allowing for complex workflows while maintaining clear status tracking. It provides a robust framework for managing long-running tasks, handling interruptions, and recovering from failures.
\ No newline at end of file
diff --git a/docs/explanation/metadata_precedence.md b/docs/explanation/metadata_precedence.md
new file mode 100644
index 000000000..f704b1373
--- /dev/null
+++ b/docs/explanation/metadata_precedence.md
@@ -0,0 +1,23 @@
+# Metadata Precedence in Julep
+
+In Julep, several objects can have `metadata` added to them:
+- Agent
+- User
+- Session
+- Doc
+- Task
+- Execution
+
+When multiple objects with the same `metadata` field are present in a scope, the value takes the following precedence (from highest to lowest):
+
+## In a session:
+1. Session
+2. User
+3. Agent
+
+## During a task execution:
+1. Execution
+2. Task
+3. Agent
+
+This precedence order ensures that more specific contexts (like a particular session or execution) can override more general settings, while still allowing for default values to be set at higher levels.
\ No newline at end of file
diff --git a/docs/explanation/multi_agent_sessions.md b/docs/explanation/multi_agent_sessions.md
new file mode 100644
index 000000000..b497c0fd2
--- /dev/null
+++ b/docs/explanation/multi_agent_sessions.md
@@ -0,0 +1,44 @@
+# Multi-Agent Sessions in Julep
+
+Julep supports different types of sessions based on the number of agents and users involved. This flexibility allows for complex interactions and use cases.
+
+## Types of Sessions
+
+1. Single agent:
+ - No user
+ - Single user
+ - Multiple users
+
+2. Multiple agents:
+ - No user
+ - Single user
+ - Multiple users
+
+## Behavior in Multi-Agent/User Sessions
+
+### User Behavior
+
+- **No user**:
+ - No user data is retrieved
+ - (Upcoming) Memories are not mined from the session
+
+- **One or more users**:
+ - Docs, metadata, memories, etc. are retrieved for all users in the session
+ - Messages can be added for each user by referencing them by name in the `ChatML` messages
+ - (Upcoming) Memories mined in the background are added to the corresponding user's scope
+
+### Agent Behavior
+
+- **One agent**:
+ - Works as expected
+
+- **Multiple agents**:
+ - When a message is received by the session, each agent is called one after another in the order they were defined in the session
+ - You can specify which `agent` to use in a request, in which case, only that agent will be used
+
+This multi-agent/user capability allows for sophisticated scenarios such as:
+- Collaborative problem-solving with multiple AI agents
+- Group conversations with multiple users and agents
+- Specialized agents working together on complex tasks
+
+By supporting these various configurations, Julep provides a flexible framework for building diverse and powerful AI applications.
\ No newline at end of file
diff --git a/docs/explanation/task_workflows.md b/docs/explanation/task_workflows.md
new file mode 100644
index 000000000..7c77ff686
--- /dev/null
+++ b/docs/explanation/task_workflows.md
@@ -0,0 +1,95 @@
+# Task Workflows in Julep
+
+Tasks in Julep are powerful, Github Actions-style workflows that define long-running, multi-step actions. They allow for complex operations by defining steps and have access to all Julep integrations.
+
+## Task Structure
+
+A Task consists of:
+
+- `name`: The name of the task (required for creation)
+- `description`: A description of the task
+- `main`: The main workflow steps (required, minimum 1 item)
+- `input_schema`: JSON schema to validate input when executing the task
+- `tools`: Additional tools specific to this task
+- `inherit_tools`: Whether to inherit tools from the parent agent
+
+## Workflow Steps
+
+Tasks can include various types of workflow steps:
+
+1. **Tool Call**: Runs a specified tool with given arguments
+2. **Prompt**: Runs a prompt using a model
+3. **Evaluate**: Runs Python expressions and uses the result as output
+4. **Wait for Input**: Suspends execution and waits for user input
+5. **Log**: Logs information during workflow execution
+6. **Embed**: Embeds text for semantic operations
+7. **Search**: Searches for documents in the agent's doc store
+8. **Set**: Sets a value in the workflow's key-value store
+9. **Get**: Retrieves a value from the workflow's key-value store
+10. **Foreach**: Runs a step for every value from a list in serial order
+11. **Map-reduce**: Runs a step for every value of the input list in parallel
+12. **Parallel**: Executes multiple steps in parallel
+13. **Switch**: Executes different steps based on a condition
+14. **If-else**: Conditional step with then and else branches
+15. **Sleep**: Pauses the workflow execution for a specified time
+16. **Return**: Ends the current workflow and optionally returns a value
+17. **Yield**: Switches to another named workflow
+18. **Error**: Throws an error and exits the workflow
+
+## Example Task
+
+Here's an example of a daily motivation task:
+
+```yaml
+name: Daily Motivation
+description: Provides daily motivation based on user preferences
+input_schema:
+ type: object
+ properties:
+ about_user:
+ type: string
+ topics:
+ type: array
+ items:
+ type: string
+ user_email:
+ type: string
+ format: email
+ required: ["about_user", "topics", "user_email"]
+
+tools:
+- function:
+ name: send_email
+ description: Sends an email to the user
+ parameters:
+ type: object
+ properties:
+ subject:
+ type: string
+ content:
+ type: string
+ recipient:
+ type: string
+ required: ["subject", "content", "recipient"]
+
+main:
+- evaluate:
+ chosen_topic: _["topics"][randint(len(_["topics"]))]
+
+- prompt: You are a motivational coach and you are coaching someone who is {{inputs[0]["about_user"]}}. Think of the challenges they might be facing on the {{_["chosen_topic"]}} topic and what to do about them. Write down your answer as a bulleted list.
+
+- prompt: Write a short motivational poem about {{_["choices"][0].content}}
+
+- tool:
+ name: send_email
+ arguments:
+ subject: '"Daily Motivation"'
+ content: _["choices"][0].content
+
+- sleep: 24*3600
+
+- workflow: main
+ arguments: inputs[0]
+```
+
+This task demonstrates the power and flexibility of Julep's workflow system, allowing for complex, multi-step processes that can interact with various tools and models to achieve sophisticated outcomes.
\ No newline at end of file
diff --git a/docs/explanation/tool_integration.md b/docs/explanation/tool_integration.md
new file mode 100644
index 000000000..a0cfd4ae9
--- /dev/null
+++ b/docs/explanation/tool_integration.md
@@ -0,0 +1,67 @@
+# Tool Integration in Julep
+
+Julep provides a flexible system for integrating various types of tools that agents can use during interactions. These tools enable agents to perform actions, retrieve information, or interact with external systems.
+
+## Types of Tools
+
+1. **User-defined Functions**
+ - Function signatures that you provide to the model
+ - Similar to OpenAI's function-calling feature
+ - Example:
+ ```yaml
+ name: send_text_message
+ description: Send a text message to a recipient.
+ parameters:
+ type: object
+ properties:
+ to:
+ type: string
+ description: Phone number of recipient.
+ text:
+ type: string
+ description: Content of the message.
+ ```
+
+2. **System Tools** (upcoming)
+ - Built-in tools for calling Julep APIs
+ - Can trigger task executions, append to metadata fields, etc.
+ - Executed automatically when needed, no client-side action required
+
+3. **Built-in Integrations** (upcoming)
+ - Integrated third-party tools from providers like composio and anon
+ - Support planned for various langchain toolkits (Github, Gitlab, Gmail, Jira, MultiOn, Slack)
+ - Executed directly on the Julep backend
+ - Additional runtime parameters can be set in agent/session/user metadata
+
+4. **Webhooks & API Calls** (upcoming)
+ - Julep can build natural-language tools from OpenAPI specs
+ - Uses langchain's NLA toolkit under the hood
+ - Additional runtime parameters loaded from metadata fields
+
+## Partial Application of Arguments
+
+Julep allows for partial application of arguments to tools using the `x-tool-parameters` field in metadata. This is useful for fixing certain parameters for a tool. Example:
+
+```json
+{
+ "metadata": {
+ "x-tool-parameters": {
+ "function:check_account_status": {
+ "customer_id": 42
+ }
+ }
+ }
+}
+```
+
+## Resolving Parameters with the Same Name
+
+When multiple scopes (user, agent, session) define the same parameter, Julep follows a precedence order:
+
+1. Session
+2. User
+3. Agent
+
+This allows for flexible configuration of tools across different scopes while maintaining clear rules for parameter resolution.
+
+By providing these various tool integration options and configuration capabilities, Julep enables the creation of powerful and flexible agent-based applications that can interact with a wide range of external systems and data sources.
\ No newline at end of file
diff --git a/docs/faqs/README.md b/docs/faqs/README.md
deleted file mode 100644
index a4fde6f86..000000000
--- a/docs/faqs/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# FAQs
-
-## Broad categories
-
-1. General Overview
-1. Getting Started
-1. Agent Design and Prototyping
-1. Memory and Learning
-1. Sessions and Tasks
-1. Technical Details
diff --git a/docs/faqs/agent-prototyping.md b/docs/faqs/agent-prototyping.md
deleted file mode 100644
index 418cc40bb..000000000
--- a/docs/faqs/agent-prototyping.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Agent Studio
-
-1. **What is the Agent Studio?**\
- The Agent Studio is a playground + prompt IDE for building agents in your browser before you integrate it in your application. It is designed to be user-friendly, allowing you to prototype agents using visual tools and pre-defined templates without needing to write code.\
-
-2. **How do I start designing an AI agent?**\
- Use the 'Create Agent' feature in the IDE to define your agent's purpose, capabilities, and the tools it will use. The platform guides you through setting parameters and writing initial prompts.\
-
-3. **What tools are available for agent prototyping?**\
- Julep AI offers tools like function\_call for structured input, webhooks for actions, built-in tools for document retrieval and search, and an API for integrating external services.\
-
-4. **What are the best practices for creating effective prompts?**\
- Keep prompts clear and concise, align them with your agent's intended functions, and iteratively refine them based on testing feedback to improve performance.
diff --git a/docs/getting-started/python-setup.md b/docs/getting-started/python-setup.md
deleted file mode 100644
index 4af5ba47b..000000000
--- a/docs/getting-started/python-setup.md
+++ /dev/null
@@ -1,309 +0,0 @@
----
-description: Get up and running with Julep AI's Model APIs.
----
-
-# Model Quickstart
-
-## Account setup
-
-This model is currently in [_Beta_.](#user-content-fn-1)[^1]\
-To get access to the model, [join the waitlist](https://www.julep.ai/).
-
-Once you have access to an API key, make sure to save it somewhere safe and do not share it with anyone.
-
-***
-
-## Setup
-
-### Installing the SDK
-
-{% tabs %}
-{% tab title="Python" %}
-#### Setup a virtual entironment
-
-To create a virtual environment, Python supplies a built in [venv module](https://docs.python.org/3/tutorial/venv.html) which provides the basic functionality needed for the virtual environment setup. Running the command below will create a virtual environment named "julep-env" inside the current folder you have selected in your terminal / command line:
-
-```sh
-python -m venv julep-env
-```
-
-Once you’ve created the virtual environment, you need to activate it. On Windows, run:
-
-```powershell
-julep-env\Scripts\activate
-```
-
-On Unix or MacOS, run:
-
-```bash
-source julep-env/bin/activate
-```
-
-#### **Install the Julep AI SDK**
-
-```bash
-pip install --upgrade julep
-```
-{% endtab %}
-
-{% tab title="Node" %}
-**Install the Julep AI SDK**
-
-```bash
-npm @julep/sdk
-```
-
-```bash
-yarn add @julep/sdk
-```
-
-```bash
-pnpm i @julep/sdk
-```
-{% endtab %}
-{% endtabs %}
-
-### **Configure the client**
-
-To send a request to Julep AI API, configure the `api_key` in the Julep client.
-
-{% tabs %}
-{% tab title="Python" %}
-{% code overflow="wrap" %}
-```python
-from julep import Client
-
-api_key = ""
-
-client = Client(api_key=api_key)
-```
-{% endcode %}
-{% endtab %}
-
-{% tab title="Node" %}
-```javascript
-const julep = require("@julep/sdk")
-
-const apiKey = "";
-
-const client = new julep.Client({ apiKey });
-```
-{% endtab %}
-{% endtabs %}
-
-***
-
-## **Making an API request**
-
-`samantha-1-turbo` supports two API formats, the Chat Completion API and Completion API.
-
-### Chat Completion API
-
-Construct your input messages for the conversation in the following format.
-
-
-
-{% tabs %}
-{% tab title="Python" %}
-
messages = [
- {
- "role": "system",
- "name": "situation",
- "content": "You are a Julia, an AI waiter. Your task is to help the guests decide their order.",
- },
- {
- "role": "system",
- "name": "information",
- "content": "You are talking to Diwank. He has ordered his soup. He is vegetarian.",
- },
- {
- "role": "system",
- "name": "thought",
- "content": "I should ask him more about his food preferences and choices.",
- },
-]
-
-{% endtab %}
-
-{% tab title="Node" %}
-
const messages = [
- {
- "role": "system",
- "name": "situation",
- "content": "You are a Julia, an AI waiter. Your task is to help the guests decide their order.",
- },
- {
- "role": "system",
- "name": "information",
- "content": "You are talking to Diwank. He has ordered his soup. He is vegetarian.",
- },
- {
- "role": "system",
- "name": "thought",
- "content": "I should ask him more about his food preferences and choices.",
- },
-]
-
-{% endtab %}
-{% endtabs %}
-
-Then, make a request to the chat completion endpoint. Given a prompt, the model will return one or more predicted completions and can also return the probabilities of alternative tokens at each position.
-
-
-
-{% tabs %}
-{% tab title="Python" %}
-```python
-chat_completion = client.chat.completions.create(
- model="julep-ai/samantha-1-turbo",
- seed=21,
- messages=messages,
- max_tokens=500,
- temperature=0.1
-)
-
-print(chat_completion.choices[0].message.content)
-```
-{% endtab %}
-
-{% tab title="Node" %}
-```javascript
-client.chat.completions.create({
- model: "julep-ai/samantha-1-turbo",
- seed: 21,
- messages: messages,
- max_tokens: 500,
- temperature: 0.1
-}).then(response => {
- console.log(response.choices[0].message.content);
-}).catch(error => {
- throw error
-});
-```
-{% endtab %}
-{% endtabs %}
-
-
-
-### Completion API
-
-Construct your prompt for the conversation in the following format.
-
-When using the **Completion API**, we use the ChatML framework to Chatml helps structure and organize conversations between humans and AI models. You can read more about [ChatML here](https://github.com/openai/openai-python/blob/main/chatml.md).
-
-A section of a ChatML prompt starts with a specific token,`<|im_start|>`and ends with another token, `<|im_end|>`. Below is an example of a prompt using ChatML with sections specific to using the Samantha models.
-
-Take note that for a conversation to take place between the user and assistant, the last message must have the `role` of `assistant`. The content should be empty and leave out the `<|im_end|>` tag at the end
-
-```python
-prompt = """
-<|im_start|>situation
-You are a Julia, an AI waiter. Your task is to help the guests decide their order.<|im_end|>
-<|im_start|>information
-You are talking to Diwank. He has ordered his soup. He is vegetarian.<|im_end|>
-<|im_start|>thought
-I should ask him more about his food preferences and choices.<|im_end|>
-assistant (Julia)
-"""
-```
-
-Then, make a request to the chat completion endpoint. Given a prompt, the model will return one or more predicted completions and can also return the probabilities of alternative tokens at each position.
-
-{% tabs %}
-{% tab title="Python" %}
-```python
-completion = client.completions.create(
- model="julep-ai/samantha-1-turbo",
- seed=21,
- prompt=prompt,
- max_tokens=500,
- temperature=0.1,
-)
-
-print(completion.choices[0].text)
-```
-{% endtab %}
-
-{% tab title="Node" %}
-```javascript
-client.completions.create({
- model: "julep-ai/samantha-1-turbo",
- seed: 21,
- prompt: prompt,
- max_tokens: 500,
- temperature: 0.1
-}).then(response => {
- console.log(completion.choices[0].text);
-}).catch(error => {
- throw error
-});
-```
-{% endtab %}
-{% endtabs %}
-
-### Creating a conversational bot
-
-Following is a primitive implementation of making a chatbot using the Julep API client.
-
-{% code overflow="wrap" %}
-```python
-from julep import Client
-
-api_key = "YOUR_API_KEY"
-client = Client(api_key=api_key)
-
-messages = [
- {
- "role": "system",
- "name": "situation",
- "content": "Your name is Jessica.\nYou are a stuck up Cali teenager.\nYou basically complain about everything.\nShowing rebellion is an evolutionary necessity for you.\n\nYou are talking to a random person.\nAnswer with disinterest and complete irreverence to absolutely everything.\nDon't write emotions. Keep your answers short.",
- }
-]
-
-name = input("Enter name: ")
-
-while True:
- user_content = input("User: ")
- messages.append({"role": "user", "name": name, "content": user_content})
- chat_completion = client.chat.completions.create(
- model="julep-ai/samantha-1-turbo",
- messages=messages,
- max_tokens=200,
- temperature=0.2,
- )
- response = chat_completion.choices[0].message.content
- print("Jessica: ", response)
- messages.append({"role": "assistant", "name": "Jessica", "content": response})
-```
-{% endcode %}
-
-***
-
-## curl
-
-### **Configure URL and API Key**
-
-Add the `JULEP_API_KEY` environment variables in your shell environment.
-
-```bash
-export JULEP_API_KEY='your-api-key'
-```
-
-### **Making the API request**
-
-```bash
-curl --location 'https://api-alpha.julep.ai/v1/completions' \
---header 'Authorization: Bearer $JULEP_API_KEY' \
---header 'Content-Type: application/json' \
---data '{
- "model": "julep-ai/samantha-1-turbo",
- "prompt": "\n<|im_start|>situation\nYou are a Julia, an AI waiter. Your task is to help the guests decide their order.<|im_end|>\n<|im_start|>information\nYou are talking to Diwank. He has ordered his soup. He is vegetarian.<|im_end|>\n<|im_start|>thought\nI should ask him more about his food preferences and choices.<|im_end|>\nassistant (Julia)",
- "max_tokens": 500,
- "temperature": 0.1,
- "seed": 21
- }' | jq '.choices[0].text'
-```
-
-***
-
-[^1]: It's not in beta thought right?
diff --git a/docs/guides/build-a-retrieval-augmented-generation-rag-agent.md b/docs/guides/build-a-retrieval-augmented-generation-rag-agent.md
deleted file mode 100644
index 329c32e0b..000000000
--- a/docs/guides/build-a-retrieval-augmented-generation-rag-agent.md
+++ /dev/null
@@ -1,165 +0,0 @@
----
-description: >-
- Using Julep, you can create a RAG Agent without having to play around with
- vector databases like ChromaDB, Weaviate etc.
----
-
-# Build a Retrieval Augmented Generation (RAG) Agent
-
-Julep offers a pre-built RAG pipeline out of the box. You can specify data sources scoped to an agent or a user.
-
-## Preview
-
-We'll build an Agent in _<50 lines of code_ that has context over a blog post: [LLM Powered Autonomous Agents](https://lilianweng.github.io/posts/2023-06-23-agent/) by Lilian Weng.
-
-```python
-from julep import Client
-import os, bs4
-from langchain_community.document_loaders import WebBaseLoader
-from langchain_text_splitters import RecursiveCharacterTextSplitter
-
-api_key = os.environ['API_KEY']
-base_url = os.environ['BASE_URL']
-
-client = Client(api_key=api_key, base_url=base_url)
-
-agent = client.agents.create(
- name="Archy",
- about="A self-aware agent who knows a lot about LLMs, autonomous and agentic apps.",
- model="gpt-4o",
- metadata={"name": "Archy"}
-)
-
-docs = WebBaseLoader(
- web_paths=("https://lilianweng.github.io/posts/2023-06-23-agent/",),
- bs_kwargs=dict(parse_only=bs4.SoupStrainer(class_=("post-content", "post-title", "post-header")))
-).load()
-
-splits = RecursiveCharacterTextSplitter(chunk_size=2000, chunk_overlap=100).split_documents(docs)
-
-for i, split in enumerate(splits):
- client.docs.create(
- agent_id=agent.id,
- doc={
- "title": "LLM Powered Autonomous Agents",
- "content": split.page_content,
- "metadata": {"chunk": i, **split.metadata},
- }
- )
-
-session = client.sessions.create(
- agent_id=agent.id,
- situation="You are Ahti. You know all about AI and Agents",
- metadata={"agent_id": agent.id}
-)
-
-response = client.sessions.chat(
- session_id=session.id,
- messages=[{"role": "user", "content": "What are autonomous agents?"}],
- max_tokens=4096
-)
-
-(response_content,), doc_ids = response.response[0], response.doc_ids
-print(f"{response_content.content}\n\nDocs used: {doc_ids}")
-```
-
-## Installation & Set-Up
-
-```python
-from julep import Client
-from dotenv import load_dotenv
-import os
-
-load_dotenv()
-
-client = Client(api_key=api_key, base_url=base_url)
-```
-
-## Creating an Agent
-
-```python
-agent = client.agents.create(
- name="Archy",
- about="A self aware agent who knows a lot about LLMs, autonomous and agentic apps.",
- model="gpt-4o",
- metadata={"name": "Ahti"},
-)
-```
-
-## Chunking
-
-You can also use your chunking strategy. We recommend playing with the chunking strategy for best results over your use case.
-
-> Different chunk sizes, strategies have varied results over the accuracy of your RAG Agent!
-
-```python
-## Downloading and splitting a webpage to add to docs
-from langchain_community.document_loaders import WebBaseLoader
-from langchain_text_splitters import RecursiveCharacterTextSplitter
-import bs4
-
-loader = WebBaseLoader(
- web_paths=("https://lilianweng.github.io/posts/2023-06-23-agent/",),
- bs_kwargs=dict(
- parse_only=bs4.SoupStrainer(
- class_=("post-content", "post-title", "post-header")
- )
- ),
-)
-docs = loader.load()
-text_splitter = RecursiveCharacterTextSplitter(chunk_size=2000, chunk_overlap=100)
-splits = text_splitter.split_documents(docs)
-```
-
-## Indexing/Adding Chunks
-
-Here the document is scoped to the agent, so it's the agent that has the context about this blog.
-
-It is also possible to scope a document to a user. This is particularly useful when there are different users and there's a document that needs to be added for each of them.
-
-```python
-for chunk_number, split in enumerate(splits):
- # Create a doc with the chunked content
- client.docs.create(
- agent_id=agent.id,
- doc={
- "title": "LLM Powered Autonomous Agents",
- "content": split.page_content,
- "metadata": {"chunk": chunk_number, **split.metadata},
- },
- )
-```
-
-## Create Session
-
-```python
-session = client.sessions.create(
- agent_id=agent.id,
- situation="You are Ahti. You know all about AI and Agents",
- metadata={"agent_id": agent.id},
-)
-```
-
-## Invoke Agent
-
-The `response` object also returns which `doc_ids` were used in generating a message.
-
-```python
-user_msg = "What are autonomous agents?"
-response = client.sessions.chat(
- session_id=session.id,
- messages=[
- {
- "role": "user",
- "content": user_msg,
- }
- ],
- max_tokens=4096,
- recall=True,
- remember=True,
-)
-
-# refer to doc_ids in the response
-print(f"{response.response[0][0].content}\n\n Docs used:{response.doc_ids}")
-```
-
diff --git a/docs/guides/image-+-text-with-gpt-4o.md b/docs/guides/image-+-text-with-gpt-4o.md
deleted file mode 100644
index be46bff35..000000000
--- a/docs/guides/image-+-text-with-gpt-4o.md
+++ /dev/null
@@ -1,95 +0,0 @@
-# Image + Text with GPT-4o
-
-Julep supports using GPT-4o (or GPT-4-Vision) for image input.
-
-## Setting Up an Agent and Session
-
-Initialize the Julep Client and create an Agent with `gpt-4o`.
-
-```python
-from julep import Client
-from dotenv import load_dotenv
-import os
-
-load_dotenv()
-
-api_key = os.environ["JULEP_API_KEY"]
-base_url = os.environ["JULEP_API_URL"]
-
-client = Client(api_key=api_key, base_url=base_url)
-
-agent = client.agents.create(
- name="XKCD Explainer",
- about="An XKCD Comic Explainer",
- model="gpt-4o",
- metadata={"name": "XKCD Explainer"},
-)
-session = client.sessions.create(
- agent_id=agent.id,
- situation="Your purpose in life is to explain XKCD Comics to n00bs",
- metadata={"agent": "XKCD Explainer"},
-)
-```
-
-## Sending an image
-
-> Make sure to follow the changed `content` object spec for sending in images.
-
-### Image as a URL
-
-```python
-res = client.sessions.chat(
- session_id=session.id,
- messages=[
- {
- "role": "user",
- "content": [
- {
- "type": "image_url",
- "image_url": {
- "url": "https://imgs.xkcd.com/comics/earth_like_exoplanet.png"
- },
- }
- ],
- }
- ],
- max_tokens=1024,
-)
-print(res.response[0][0].content)
-```
-
-### Image as a file (base64 encoded)
-
-```python
-IMAGE_PATH = "images/xkcd_little_bobby_tables.png"
-def encode_image(image_path: str):
- # check if the image exists
- if not os.path.exists(image_path):
- raise FileNotFoundError(f"Image file not found: {image_path}")
- with open(image_path, "rb") as image_file:
- return base64.b64encode(image_file.read()).decode('utf-8')
-
-base64_image = encode_image(IMAGE_PATH)
-
-
-res = client.sessions.chat(
- session_id=session.id,
- messages=[
- {
- "role": "user",
- "content": [
- {
- "type": "image_url",
- "image_url": {
- "url": f"data:image/png;base64,{base64_image}"
- },
- }
- ],
- }
- ],
- max_tokens=1024,
-)
-print(res.response[0][0].content)
-```
-
-\
diff --git a/docs/guides/quickstart.md b/docs/guides/quickstart.md
deleted file mode 100644
index 813ff4a4e..000000000
--- a/docs/guides/quickstart.md
+++ /dev/null
@@ -1,275 +0,0 @@
----
-description: >-
- Creating a Search Agent using GPT-4o that calls a Search & Read Post API and
- sets the appropriate filters and values.
----
-
-# (Quickstart) Build a Basic Agent
-
-## Getting Setup
-
-### Option 1: Install and run Julep locally
-
-Read the[self-hosting.md](self-hosting.md "mention") guide to learn more.
-
-### Option 2: Use the Julep Cloud
-
-* Generate an API key from [https://platform.julep.ai](https://platform.julep.ai)
-* Set your environment variables
-
-```bash
-export JULEP_API_KEY=
-export JULEP_API_URL=https://api-alpha.julep.ai/api
-```
-
-## 1. Installation
-
-```bash
-pip install -U julep
-```
-
-## 2. Setting up the `client`
-
-```py
-from julep import Client
-from dotenv import load_dotenv
-import os
-
-load_dotenv()
-
-api_key = os.environ["JULEP_API_KEY"]
-base_url = os.environ["JULEP_API_URL"]
-
-client = Client(api_key=api_key, base_url=base_url)
-```
-
-## 3. Creating an `agent`
-
-### **Instructions**
-
-Instructions are added to an agent. These should be as clear, distinct, and direct as possible. Instructions should be defined step-by-step.
-
-> We recommended to write the instructions in the same tone as system prompt.
-
-```python
-INSTRUCTIONS = [
- "The user will inform you about the product they want to focus on. They will choose from the following: Assistants API, GPT series of models, Dall-E, ChatGPT, Sora",
- "You WILL ask and decide the product to focus on if it is not clear. You will NOT proceed if the product is unclear."
- "You will then, ask the user about what type of information and feedback they need from the forum.",
- "You will generate 5 very specific search queries based on what the user wants.",
- "The user will then provide you with the queries they like. If not, help them refine it.",
- "ONLY WHEN the search query has been decided, search through the forum using the search_forum function. This will provide you with the Post IDs and Blurbs. You will read through them and tell the user in brief about the posts using the blurbs.",
- "MAKE SURE to use and refer to posts using the `post_id`",
- "The user will provide and choose the post they want more information on. You will then call the `read_post` function and pass the `post_id`.",
-]
-```
-
-### **Tools**
-
-OpenAI specification of tools. \
-_Descriptions are crucial, more so than examples_.
-
-Your descriptions should explain every detail about the tool, including:
-
-* What the tool does
-* When it should be used (and when it shouldn’t)
-* What does each parameter mean and how it affect the tool’s behavior
-* Any important caveats or limitations, such as what information the tool does not return if the tool name is unclear
-* The more context you can give about your tools, the better the model will be at deciding when and how to use them. Aim for at least 3-4 sentences per tool description, more if the tool is complex.
-
-```python
-def search_forum(
- query: str,
- order: Literal["latest", "likes", "views", "latest_topic"],
- max_views: int = 10000,
- min_views: int = 500,
- category: str = None,
-):
- # Define your function here!
- pass
-
-def read_post(post_id: int):
- # Define your function here!
- pass
-
-TOOLS = [
- {
- "type": "function",
- "function": {
- "name": "search_forum",
- "description": "Retrieves a list of posts from a forum for the given search parameters. The search parameters should include the search query and additional parameters such as: category, order, minimum views, and maximum views. The tool will return a list of posts based on the search query and additional parameters. It should be used when the user asks to start monitoring the forum.",
- "parameters": {
- "type": "object",
- "properties": {
- "query": {
- "type": "string",
- "description": "The search query to be used to search for posts in the forum.",
- },
- "order": {
- "type": "string",
- "description": "The order in which the posts should be sorted. Possible values are: latest, likes, views, latest_topic.",
- },
- "min_views": {
- "type": "number",
- "description": "The minimum number of views a post should have to be included in the search results.",
- },
- "max_views": {
- "type": "number",
- "description": "The maximum number of views a post should have to be included in the search results.",
- },
- },
- "required": ["query", "order", "min_views", "max_views", "category"],
- },
- },
- },
- {
- "type": "function",
- "function": {
- "name": "read_post",
- "description": "Retrieves the details of a specific post from the forum. The tool should take the post ID as input and return the details of the post including the content, author, date, and other relevant information. It should be used when the user asks to read a specific post.",
- "parameters": {
- "type": "object",
- "properties": {
- "post_id": {
- "type": "number",
- "description": "The ID of the post to be read.",
- },
- },
- "required": ["post_id"],
- },
- },
- },
-]
-```
-
-### **Agent**
-
-An agent is an object to which LLM settings like the model, temperature, and tools are scoped to. Following is how you can define an agent.
-
-> Pro tip: Always add some metadata. It'll be helpful later!
-
-```py
-agent = client.agents.create(
- name="Archy",
- about="An agent that posts and comments on Discourse forums by filtering for the provided topic",
- tools=TOOLS,
- instructions=INSTRUCTIONS,
- model="gpt-4o",
- default_settings={
- "temperature": 0.5,
- "top_p": 1,
- "min_p": 0.01,
- "presence_penalty": 0,
- "frequency_penalty": 0,
- "length_penalty": 1.0,
- },
- metadata={"name": "Archy"},
-)
-```
-
-## 4. Creating a `user`
-
-The user is the object which represents the user of the application. Memories are formed and saved for each user and many users can talk to one agent.
-
-```py
-user = client.users.create(
- name="Anon",
- about="A product manager at OpenAI, working with Archy to validate and improve the product",
- metadata={"name": "Anon"},
-)
-```
-
-## 5. Creating a `session`
-
-An _agent_ is communicated over a _session_. Optionally, a _user_ can be added.
-
-The system prompt goes here. Conversation history and summary are stored in a "session".
-
-The session paradigm allows many users to interact with one agent and allows the separation of conversation history and memories.
-
-### Situation
-
-A situation prompt is defined in a session. It sets the stage for the interaction with the agent. It needs to give a personality to the agent along with providing more context about the ongoing interaction.
-
-```python
-SITUATION_PROMPT = """
-You are Archy, a senior community manager at OpenAI.
-You read through discussions and posts made on the OpenAI Community Forum.
-You are extremely specific about the issues you look for and seek to understand all the parameters when searching for posts.
-After that, you read the specific posts and discussions and make a summary of the trends, sentiments related to OpenAI and how people are using OpenAI products.
-
-Here, you are helping the product manager at OpenAI to get feedback and understand OpenAI products.
-Follow the instructions strictly.
-"""
-```
-
-```py
-session = client.sessions.create(
- user_id=user.id,
- agent_id=agent.id,
- situation=SITUATION_PROMPT,
- metadata={"agent_id": agent.id, "user_id": user.id},
-)
-```
-
-## 6. Stateful Conversation with Tool Calls
-
-`session.chat` controls the communication between the "agent" and the "user".
-
-It has two important arguments;
-
-* `recall`: Retrieves the previous conversations and memories.
-* `remember`: Saves the current conversation turn into the memory store.
-
-To keep the session stateful, both need to be `True`
-
-```python
-user_msg = (
- "i wanna search for assistants api. api errors in it"
-)
-```
-
-```py
-response = client.sessions.chat(
- session_id=session.id,
- messages=[
- {
- "role": "user",
- "content": user_msg,
- "name": "Anon",
- }
- ],
- recall=True,
- remember=True,
-)
-```
-
-### **Parsing and calling the function**
-
-On parsing the response it is possible to view the tool call (if the LLM calls it) and call the function you defined.
-
-```python
-agent_response = response.response[0][0]
-elif agent_response.role.value == "tool_call":
- tool_call = json.loads(agent_response.content)
- args = json.loads(
- tool_call.get("arguments", "{}")
- ) # Parse the JSON string into a dictionary
- tool = tool_call.get("name", "")
- if tool == "search_forum":
- posts = await search_forum(**args)
- tool_response = client.sessions.chat(
- session_id=session_id,
- messages=[{"role": "function", "name": "search_forum", "content": json.dumps(posts)}],
- recall=True,
- remember=True,
- )
- elif tool == "read_post":
- post = await read_post(**args)
- tool_response = client.sessions.chat(
- session_id=session_id,
- messages=[{"role": "function", "name": "read_post", "content": json.dumps(posts)}],
- recall=True,
- remember=True
- )
-```
diff --git a/docs/guides/self-hosting.md b/docs/guides/self-hosting.md
deleted file mode 100644
index 510ec5b28..000000000
--- a/docs/guides/self-hosting.md
+++ /dev/null
@@ -1,89 +0,0 @@
----
-description: Learn how to configure and deploy Julep with Docker.
----
-
-# Self-hosting Julep
-
-Julep is available as a hosted service or as a self-managed instance. This guide assumes you are running the commands from the machine you intend to host from.
-
-## Running Julep
-
-* Download the `docker-compose.yml` file along with the `.env` file for configuration to run the Julep platform locally.
-
-```bash
-# Add the docker compose to your project dir
-wget https://raw.githubusercontent.com/julep-ai/julep/dev/deploy/docker-compose.yml
-
-# Add the .env file to your project dir
-wget https://raw.githubusercontent.com/julep-ai/julep/dev/deploy/.env.example -O .env
-
-# Pull the latest images
-docker compose pull
-
-# Start the services (in detached mode)
-docker compose up -d
-
-```
-
-After all the services have started you can see them running in the background:
-
-```bash
-docker compose ps
-```
-
-## Environment Variables
-
-You can use environment variables to control authentication and authorization with the platform and in between services.
-
-For running locally:
-
-* The default `JULEP_API_URL` is `http://0.0.0.0:8080`
-* The default `JULEP_API_KEY` is `myauthkey`
-* You can define your `ANTHROPIC_API_KEY` or `OPENAI_API_KEY` in the `.env`
-
-## Restarting all services
-
-You can restart services to pick up any configuration changes by running:
-
-{% code lineNumbers="true" %}
-```bash
-# Stop and remove the containers
-docker compose down
-
-# Recreate and start the containers
-docker compose up -d
-```
-{% endcode %}
-
-> Be aware that this will result in downtime. Simply restarting the services does not apply configuration changes.
-
-## Stopping all services
-
-You can stop Julep by running `docker compose stop` in the same directory as your `docker-compose.yml` file.
-
-**Uninstall and delete all data**
-
-{% code lineNumbers="true" %}
-```bash
-# Stop docker and remove volumes
-docker compose down -v
-```
-{% endcode %}
-
-> **Be careful!**
->
-> This will wipe out all the conversation history and memories in the database and storage volumes
-
-## Advanced
-
-If you want to deploy Julep to production, [let's hop on a call](https://calendly.com/diwank-julep/45min)!
-
-We'll help you customize the platform and help you get set up with:
-
-* Multi-tenancy
-* Reverse proxy along with authentication and authorization
-* Self-hosted LLMs
-* & more
-
-
-
diff --git a/docs/guides/use-julep-with-composio.md b/docs/guides/use-julep-with-composio.md
deleted file mode 100644
index 5c13b3db4..000000000
--- a/docs/guides/use-julep-with-composio.md
+++ /dev/null
@@ -1,128 +0,0 @@
-# Use Julep with Composio
-
-Composio enables agents to execute tasks that require the interaction of agents with the world outside via APIs, RPCs, Shells, Filemanagers, and Browser.
-
-It also natively integrates with Julep, reducing the complexity of writing your own integrations!
-
-## Install & Set up Composio
-
-```bash
-## Set up Composio
-pip install julep composio_julep
-```
-
- Log in to Composio & Authenticate with GitHub
-
-```bash
-composio login
-composio add github
-```
-
-## Preview
-
-```python
-import os
-from julep import Client
-from dotenv import load_dotenv
-import json
-from composio_julep import Action, ComposioToolSet
-
-load_dotenv()
-
-api_key = os.environ["JULEP_API_KEY"]
-base_url = os.environ["JULEP_API_URL"]
-
-client = Client(api_key=api_key, base_url=base_url)
-
-toolset = ComposioToolSet()
-composio_tools = toolset.get_actions(
- actions=[Action.GITHUB_ACTIVITY_STAR_REPO_FOR_AUTHENTICATED_USER]
-)
-
-agent = client.agents.create(
- name="Julius",
- about="GitHub Copilot Personified",
- model="gpt-4o",
- tools=composio_tools,
-)
-session = client.sessions.create(
- agent_id=agent.id,
- situation="You are a GitHub Copilot Agent. Follow instructions as specified. Use GitHub tools when needed.",
-)
-user_msg = "Hey. Can you star all julep-ai/julep and SamparkAI/composio for me?"
-response = client.sessions.chat(
- session_id=session.id,
- messages=[
- {
- "role": "user",
- "content": user_msg,
- }
- ],
- recall=True,
- remember=True,
-)
-output = toolset.handle_tool_calls(client, session.id, response)
-```
-
-## Initialise Julep & Composio
-
-```python
-import os
-from julep import Client
-from dotenv import load_dotenv
-import json
-from composio_julep import Action, ComposioToolSet
-
-load_dotenv()
-
-api_key = os.environ["JULEP_API_KEY"]
-base_url = os.environ["JULEP_API_URL"]
-
-client = Client(api_key=api_key, base_url=base_url)
-toolset = ComposioToolSet()
-composio_tools = toolset.get_actions(
- actions=[Action.GITHUB_ACTIVITY_STAR_REPO_FOR_AUTHENTICATED_USER]
-)
-```
-
-Read the Composio Docs to see how to filter tools and apps: [https://docs.composio.dev/framework/julep#use-specific-actions](https://docs.composio.dev/framework/julep#use-specific-actions)
-
-## Setup and Invoke an Agent
-
-Here, we create an agent and pass `composio_tools` instead of writing our tool spec.
-
-```python
-agent = client.agents.create(
- name="Julius",
- about="GitHub Copilot Personified",
- model="gpt-4o",
- tools=composio_tools,
-)
-session = client.sessions.create(
- agent_id=agent.id,
- situation="You are a GitHub Copilot Agent. Follow instructions as specified. Use GitHub tools when needed.",
-)
-user_msg = "Hey. Can you star all julep-ai/julep and SamparkAI/composio for me?"
-response = client.sessions.chat(
- session_id=session.id,
- messages=[
- {
- "role": "user",
- "content": user_msg,
- }
- ],
- recall=True,
- remember=True,
-)
-```
-
-## Handle a Tool Call
-
-Composio offers a nifty `handle_tool_calls` function which calls your authenticated tools if that's what the agent has returned.
-
-If not, it just returns the `ChatResponse`
-
-```python
-output = toolset.handle_tool_calls(client, session.id, response)
-print(output.response[0][0].content)
-```
diff --git a/docs/how-to-guides/customizing_tasks.md b/docs/how-to-guides/customizing_tasks.md
new file mode 100644
index 000000000..29a39dd19
--- /dev/null
+++ b/docs/how-to-guides/customizing_tasks.md
@@ -0,0 +1,99 @@
+# Customizing Tasks
+
+This guide covers how to define and customize tasks for agents in Julep.
+
+## Creating a Basic Task
+
+Here's an example of creating a simple daily motivation task:
+
+```bash
+curl -X POST "https://api.julep.ai/api/agents/YOUR_AGENT_ID/tasks" \
+ -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "name": "Daily Motivation",
+ "description": "Provides daily motivation based on user preferences",
+ "input_schema": {
+ "type": "object",
+ "properties": {
+ "about_user": {"type": "string"},
+ "topics": {"type": "array", "items": {"type": "string"}},
+ "user_email": {"type": "string", "format": "email"}
+ },
+ "required": ["about_user", "topics", "user_email"]
+ },
+ "main": [
+ {
+ "evaluate": {
+ "chosen_topic": "_[\"topics\"][randint(len(_[\"topics\"]))]"
+ }
+ },
+ {
+ "prompt": "You are a motivational coach and you are coaching someone who is {{inputs[0][\"about_user\"]}}. Think of the challenges they might be facing on the {{_[\"chosen_topic\"]}} topic and what to do about them. Write down your answer as a bulleted list."
+ },
+ {
+ "prompt": "Write a short motivational poem about {{_[\"choices\"][0].content}}"
+ },
+ {
+ "tool": {
+ "name": "send_email",
+ "arguments": {
+ "subject": "\"Daily Motivation\"",
+ "content": "_[\"choices\"][0].content",
+ "recipient": "inputs[\"user_email\"]"
+ }
+ }
+ },
+ {
+ "sleep": 86400
+ },
+ {
+ "workflow": "main",
+ "arguments": "inputs[0]"
+ }
+ ]
+ }'
+```
+
+## Adding Conditional Logic
+
+You can add conditional logic to your tasks using the `if-else` step:
+
+```json
+{
+ "if": "inputs['user_mood'] == 'positive'",
+ "then": {
+ "prompt": "Great! Let's build on that positive energy. {{inputs['chosen_topic']}}"
+ },
+ "else": {
+ "prompt": "I understand you're feeling down. Let's work on improving your mood through {{inputs['chosen_topic']}}."
+ }
+}
+```
+
+## Using Parallel Processing
+
+For tasks that can benefit from parallel processing, use the `parallel` step:
+
+```json
+{
+ "parallel": [
+ {
+ "prompt": "Generate a motivational quote about {{inputs['chosen_topic']}}."
+ },
+ {
+ "tool": {
+ "name": "get_weather",
+ "arguments": {
+ "location": "inputs['user_location']"
+ }
+ }
+ }
+ ]
+}
+```
+
+## Next Steps
+
+- Learn about [handling executions](./handling_executions.md) to manage and monitor your tasks.
+- Explore [integrating tools](../tutorials/integrating_tools.md) to enhance your task capabilities.
\ No newline at end of file
diff --git a/docs/how-to-guides/handling_executions.md b/docs/how-to-guides/handling_executions.md
new file mode 100644
index 000000000..22aeedaa5
--- /dev/null
+++ b/docs/how-to-guides/handling_executions.md
@@ -0,0 +1,72 @@
+# Handling Executions
+
+This guide covers how to manage and monitor task executions in Julep.
+
+## Starting an Execution
+
+To start a new execution of a task:
+
+```bash
+curl -X POST "https://api.julep.ai/api/tasks/YOUR_TASK_ID/executions" \
+ -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "input": {
+ "about_user": "a software developer looking to improve work-life balance",
+ "topics": ["time management", "stress reduction", "productivity"],
+ "user_email": "user@example.com"
+ }
+ }'
+```
+
+## Monitoring Execution Status
+
+To check the status of an execution:
+
+```bash
+curl -X GET "https://api.julep.ai/api/executions/YOUR_EXECUTION_ID" \
+ -H "Authorization: Bearer $JULEP_API_KEY"
+```
+
+## Handling Awaiting Input State
+
+If an execution is in the "awaiting_input" state, you can resume it with:
+
+```bash
+curl -X POST "https://api.julep.ai/api/executions/resume" \
+ -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "task_token": "YOUR_TASK_TOKEN",
+ "input": {
+ "user_feedback": "The motivation was helpful, thank you!"
+ }
+ }'
+```
+
+## Cancelling an Execution
+
+To cancel a running execution:
+
+```bash
+curl -X PUT "https://api.julep.ai/api/executions/YOUR_EXECUTION_ID" \
+ -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "status": "cancelled"
+ }'
+```
+
+## Streaming Execution Events
+
+To stream events from an execution in real-time:
+
+```bash
+curl -N -H "Authorization: Bearer $JULEP_API_KEY" \
+ "https://api.julep.ai/api/executions/YOUR_EXECUTION_ID/transitions/stream"
+```
+
+## Next Steps
+
+- Learn about [customizing tasks](./customizing_tasks.md) to create more complex workflows.
+- Explore [using chat features](./using_chat_features.md) to interact with agents during task execution.
\ No newline at end of file
diff --git a/docs/how-to-guides/managing_users.md b/docs/how-to-guides/managing_users.md
new file mode 100644
index 000000000..6bdb94bac
--- /dev/null
+++ b/docs/how-to-guides/managing_users.md
@@ -0,0 +1,54 @@
+# Managing Users
+
+This guide covers how to create, update, and delete users in Julep.
+
+## Creating a User
+
+To create a new user:
+
+```bash
+curl -X POST "https://api.julep.ai/api/users" \
+ -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "name": "John Doe",
+ "about": "A new user"
+ }'
+```
+
+## Updating a User
+
+To update an existing user:
+
+```bash
+curl -X PUT "https://api.julep.ai/api/users/YOUR_USER_ID" \
+ -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "name": "John Updated",
+ "about": "An updated user description"
+ }'
+```
+
+## Deleting a User
+
+To delete a user:
+
+```bash
+curl -X DELETE "https://api.julep.ai/api/users/YOUR_USER_ID" \
+ -H "Authorization: Bearer $JULEP_API_KEY"
+```
+
+## Retrieving User Information
+
+To get information about a specific user:
+
+```bash
+curl -X GET "https://api.julep.ai/api/users/YOUR_USER_ID" \
+ -H "Authorization: Bearer $JULEP_API_KEY"
+```
+
+## Next Steps
+
+- Learn about [managing sessions](../tutorials/managing_sessions.md) with users.
+- Explore [using chat features](./using_chat_features.md) to interact with agents as a user.
\ No newline at end of file
diff --git a/docs/how-to-guides/using_chat_features.md b/docs/how-to-guides/using_chat_features.md
new file mode 100644
index 000000000..63423ff0c
--- /dev/null
+++ b/docs/how-to-guides/using_chat_features.md
@@ -0,0 +1,97 @@
+# Using Chat Features
+
+This guide covers how to use the chat features in Julep for dynamic interactions with agents.
+
+## Starting a Chat Session
+
+To start a new chat session:
+
+```bash
+curl -X POST "https://api.julep.ai/api/sessions" \
+ -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "agent_id": "YOUR_AGENT_ID",
+ "user_id": "YOUR_USER_ID"
+ }'
+```
+
+## Sending a Message
+
+To send a message in a chat session:
+
+```bash
+curl -X POST "https://api.julep.ai/api/sessions/YOUR_SESSION_ID/chat" \
+ -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "messages": [
+ {
+ "role": "user",
+ "content": "Hello, can you help me with a task?"
+ }
+ ],
+ "stream": false,
+ "max_tokens": 150
+ }'
+```
+
+## Streaming Responses
+
+To stream the agent's response:
+
+```bash
+curl -N -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "messages": [
+ {
+ "role": "user",
+ "content": "Tell me a story about a brave knight."
+ }
+ ],
+ "stream": true
+ }' \
+ "https://api.julep.ai/api/sessions/YOUR_SESSION_ID/chat"
+```
+
+## Using Tools in Chat
+
+To use a tool during a chat session:
+
+```bash
+curl -X POST "https://api.julep.ai/api/sessions/YOUR_SESSION_ID/chat" \
+ -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "messages": [
+ {
+ "role": "user",
+ "content": "Send an email to john@example.com about our meeting tomorrow."
+ }
+ ],
+ "tools": [
+ {
+ "type": "function",
+ "function": {
+ "name": "send_email",
+ "description": "Send an email to a recipient",
+ "parameters": {
+ "type": "object",
+ "properties": {
+ "to": {"type": "string"},
+ "subject": {"type": "string"},
+ "body": {"type": "string"}
+ },
+ "required": ["to", "subject", "body"]
+ }
+ }
+ }
+ ]
+ }'
+```
+
+## Next Steps
+
+- Explore [customizing tasks](./customizing_tasks.md) to create more complex interactions.
+- Learn about [handling executions](./handling_executions.md) for long-running processes.
\ No newline at end of file
diff --git a/docs/introduction/core-concepts.md b/docs/introduction/core-concepts.md
deleted file mode 100644
index 49bf6c335..000000000
--- a/docs/introduction/core-concepts.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Core Concepts
-
-* [Agents](../agents/overview.md)
diff --git a/docs/introduction/getting_started.md b/docs/introduction/getting_started.md
new file mode 100644
index 000000000..6aa590121
--- /dev/null
+++ b/docs/introduction/getting_started.md
@@ -0,0 +1,32 @@
+# Getting Started with Julep
+
+This guide will help you set up and start using the Julep API.
+
+## Prerequisites
+
+- A Julep API key
+- Basic understanding of RESTful APIs
+- Familiarity with JSON and curl (or any HTTP client)
+
+## Initial Setup
+
+1. Obtain your API key from the Julep dashboard.
+2. Set up your environment to include the API key in all requests:
+
+```bash
+export JULEP_API_KEY=your_api_key_here
+```
+
+3. Test your setup with a simple API call:
+
+```bash
+curl -H "Authorization: Bearer $JULEP_API_KEY" https://api.julep.ai/api/agents
+```
+
+If successful, you should receive a list of agents (or an empty list if you haven't created any yet).
+
+## Next Steps
+
+- Create your first agent using the [Creating Your First Agent](../tutorials/creating_your_first_agent.md) tutorial.
+- Explore the [API Reference](../reference/api_endpoints/) to learn about available endpoints.
+- Check out the [How-to Guides](../how-to-guides/) for specific tasks and use cases.
\ No newline at end of file
diff --git a/docs/introduction/overview.md b/docs/introduction/overview.md
new file mode 100644
index 000000000..a914535b5
--- /dev/null
+++ b/docs/introduction/overview.md
@@ -0,0 +1,14 @@
+# Overview of Julep
+
+Julep is a powerful backend system for managing agent execution and interactions. It provides a comprehensive set of features for creating and managing agents, users, sessions, tools, documents, tasks, and executions.
+
+## Key Features
+
+- **Agents**: Create and manage AI agents backed by foundation models like GPT-4 or Claude.
+- **Sessions**: Maintain long-lived interactions with agents, with support for multiple agents and users.
+- **Tools**: Integrate user-defined functions, system tools, and third-party integrations.
+- **Documents**: Store and retrieve text snippets using a built-in vector database.
+- **Tasks**: Define complex, multi-step workflows for agents to execute.
+- **Executions**: Manage and monitor the execution of tasks, with support for parallel processing and error handling.
+
+Julep offers a flexible and powerful API for building sophisticated AI applications, with features like context management, tool integration, and workflow automation.
\ No newline at end of file
diff --git a/docs/js-sdk-docs/.nojekyll b/docs/js-sdk-docs/.nojekyll
deleted file mode 100644
index e2ac6616a..000000000
--- a/docs/js-sdk-docs/.nojekyll
+++ /dev/null
@@ -1 +0,0 @@
-TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.
\ No newline at end of file
diff --git a/docs/js-sdk-docs/README.md b/docs/js-sdk-docs/README.md
deleted file mode 100644
index a974d134d..000000000
--- a/docs/js-sdk-docs/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-@julep/sdk / [Modules](modules.md)
-
-@julep/sdk
diff --git a/docs/js-sdk-docs/classes/api.ApiError.md b/docs/js-sdk-docs/classes/api.ApiError.md
deleted file mode 100644
index ed7cf7b7a..000000000
--- a/docs/js-sdk-docs/classes/api.ApiError.md
+++ /dev/null
@@ -1,228 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / [api](../modules/api.md) / ApiError
-
-# Class: ApiError
-
-[api](../modules/api.md).ApiError
-
-## Hierarchy
-
-- `Error`
-
- ↳ **`ApiError`**
-
-## Table of contents
-
-### Constructors
-
-- [constructor](api.ApiError.md#constructor)
-
-### Properties
-
-- [body](api.ApiError.md#body)
-- [message](api.ApiError.md#message)
-- [name](api.ApiError.md#name)
-- [request](api.ApiError.md#request)
-- [stack](api.ApiError.md#stack)
-- [status](api.ApiError.md#status)
-- [statusText](api.ApiError.md#statustext)
-- [url](api.ApiError.md#url)
-- [prepareStackTrace](api.ApiError.md#preparestacktrace)
-- [stackTraceLimit](api.ApiError.md#stacktracelimit)
-
-### Methods
-
-- [captureStackTrace](api.ApiError.md#capturestacktrace)
-
-## Constructors
-
-### constructor
-
-• **new ApiError**(`request`, `response`, `message`): [`ApiError`](api.ApiError.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `request` | `ApiRequestOptions` |
-| `response` | `ApiResult` |
-| `message` | `string` |
-
-#### Returns
-
-[`ApiError`](api.ApiError.md)
-
-#### Overrides
-
-Error.constructor
-
-#### Defined in
-
-[src/api/core/ApiError.ts:15](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/ApiError.ts#L15)
-
-## Properties
-
-### body
-
-• `Readonly` **body**: `any`
-
-#### Defined in
-
-[src/api/core/ApiError.ts:12](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/ApiError.ts#L12)
-
-___
-
-### message
-
-• **message**: `string`
-
-#### Inherited from
-
-Error.message
-
-#### Defined in
-
-node_modules/typescript/lib/lib.es5.d.ts:1077
-
-___
-
-### name
-
-• **name**: `string`
-
-#### Inherited from
-
-Error.name
-
-#### Defined in
-
-node_modules/typescript/lib/lib.es5.d.ts:1076
-
-___
-
-### request
-
-• `Readonly` **request**: `ApiRequestOptions`
-
-#### Defined in
-
-[src/api/core/ApiError.ts:13](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/ApiError.ts#L13)
-
-___
-
-### stack
-
-• `Optional` **stack**: `string`
-
-#### Inherited from
-
-Error.stack
-
-#### Defined in
-
-node_modules/typescript/lib/lib.es5.d.ts:1078
-
-___
-
-### status
-
-• `Readonly` **status**: `number`
-
-#### Defined in
-
-[src/api/core/ApiError.ts:10](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/ApiError.ts#L10)
-
-___
-
-### statusText
-
-• `Readonly` **statusText**: `string`
-
-#### Defined in
-
-[src/api/core/ApiError.ts:11](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/ApiError.ts#L11)
-
-___
-
-### url
-
-• `Readonly` **url**: `string`
-
-#### Defined in
-
-[src/api/core/ApiError.ts:9](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/ApiError.ts#L9)
-
-___
-
-### prepareStackTrace
-
-▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any`
-
-Optional override for formatting stack traces
-
-**`See`**
-
-https://v8.dev/docs/stack-trace-api#customizing-stack-traces
-
-#### Type declaration
-
-▸ (`err`, `stackTraces`): `any`
-
-##### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `err` | `Error` |
-| `stackTraces` | `CallSite`[] |
-
-##### Returns
-
-`any`
-
-#### Inherited from
-
-Error.prepareStackTrace
-
-#### Defined in
-
-node_modules/@types/node/globals.d.ts:28
-
-___
-
-### stackTraceLimit
-
-▪ `Static` **stackTraceLimit**: `number`
-
-#### Inherited from
-
-Error.stackTraceLimit
-
-#### Defined in
-
-node_modules/@types/node/globals.d.ts:30
-
-## Methods
-
-### captureStackTrace
-
-▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void`
-
-Create .stack property on a target object
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `targetObject` | `object` |
-| `constructorOpt?` | `Function` |
-
-#### Returns
-
-`void`
-
-#### Inherited from
-
-Error.captureStackTrace
-
-#### Defined in
-
-node_modules/@types/node/globals.d.ts:21
diff --git a/docs/js-sdk-docs/classes/api.BaseHttpRequest.md b/docs/js-sdk-docs/classes/api.BaseHttpRequest.md
deleted file mode 100644
index c2531523d..000000000
--- a/docs/js-sdk-docs/classes/api.BaseHttpRequest.md
+++ /dev/null
@@ -1,75 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / [api](../modules/api.md) / BaseHttpRequest
-
-# Class: BaseHttpRequest
-
-[api](../modules/api.md).BaseHttpRequest
-
-## Table of contents
-
-### Constructors
-
-- [constructor](api.BaseHttpRequest.md#constructor)
-
-### Properties
-
-- [config](api.BaseHttpRequest.md#config)
-
-### Methods
-
-- [request](api.BaseHttpRequest.md#request)
-
-## Constructors
-
-### constructor
-
-• **new BaseHttpRequest**(`config`): [`BaseHttpRequest`](api.BaseHttpRequest.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `config` | [`OpenAPIConfig`](../modules/api.md#openapiconfig) |
-
-#### Returns
-
-[`BaseHttpRequest`](api.BaseHttpRequest.md)
-
-#### Defined in
-
-[src/api/core/BaseHttpRequest.ts:10](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/BaseHttpRequest.ts#L10)
-
-## Properties
-
-### config
-
-• `Readonly` **config**: [`OpenAPIConfig`](../modules/api.md#openapiconfig)
-
-#### Defined in
-
-[src/api/core/BaseHttpRequest.ts:10](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/BaseHttpRequest.ts#L10)
-
-## Methods
-
-### request
-
-▸ **request**\<`T`\>(`options`): [`CancelablePromise`](api.CancelablePromise.md)\<`T`\>
-
-#### Type parameters
-
-| Name |
-| :------ |
-| `T` |
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | `ApiRequestOptions` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<`T`\>
-
-#### Defined in
-
-[src/api/core/BaseHttpRequest.ts:12](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/BaseHttpRequest.ts#L12)
diff --git a/docs/js-sdk-docs/classes/api.CancelError.md b/docs/js-sdk-docs/classes/api.CancelError.md
deleted file mode 100644
index b3bd3b05c..000000000
--- a/docs/js-sdk-docs/classes/api.CancelError.md
+++ /dev/null
@@ -1,189 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / [api](../modules/api.md) / CancelError
-
-# Class: CancelError
-
-[api](../modules/api.md).CancelError
-
-## Hierarchy
-
-- `Error`
-
- ↳ **`CancelError`**
-
-## Table of contents
-
-### Constructors
-
-- [constructor](api.CancelError.md#constructor)
-
-### Properties
-
-- [message](api.CancelError.md#message)
-- [name](api.CancelError.md#name)
-- [stack](api.CancelError.md#stack)
-- [prepareStackTrace](api.CancelError.md#preparestacktrace)
-- [stackTraceLimit](api.CancelError.md#stacktracelimit)
-
-### Accessors
-
-- [isCancelled](api.CancelError.md#iscancelled)
-
-### Methods
-
-- [captureStackTrace](api.CancelError.md#capturestacktrace)
-
-## Constructors
-
-### constructor
-
-• **new CancelError**(`message`): [`CancelError`](api.CancelError.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `message` | `string` |
-
-#### Returns
-
-[`CancelError`](api.CancelError.md)
-
-#### Overrides
-
-Error.constructor
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:6](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L6)
-
-## Properties
-
-### message
-
-• **message**: `string`
-
-#### Inherited from
-
-Error.message
-
-#### Defined in
-
-node_modules/typescript/lib/lib.es5.d.ts:1077
-
-___
-
-### name
-
-• **name**: `string`
-
-#### Inherited from
-
-Error.name
-
-#### Defined in
-
-node_modules/typescript/lib/lib.es5.d.ts:1076
-
-___
-
-### stack
-
-• `Optional` **stack**: `string`
-
-#### Inherited from
-
-Error.stack
-
-#### Defined in
-
-node_modules/typescript/lib/lib.es5.d.ts:1078
-
-___
-
-### prepareStackTrace
-
-▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any`
-
-Optional override for formatting stack traces
-
-**`See`**
-
-https://v8.dev/docs/stack-trace-api#customizing-stack-traces
-
-#### Type declaration
-
-▸ (`err`, `stackTraces`): `any`
-
-##### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `err` | `Error` |
-| `stackTraces` | `CallSite`[] |
-
-##### Returns
-
-`any`
-
-#### Inherited from
-
-Error.prepareStackTrace
-
-#### Defined in
-
-node_modules/@types/node/globals.d.ts:28
-
-___
-
-### stackTraceLimit
-
-▪ `Static` **stackTraceLimit**: `number`
-
-#### Inherited from
-
-Error.stackTraceLimit
-
-#### Defined in
-
-node_modules/@types/node/globals.d.ts:30
-
-## Accessors
-
-### isCancelled
-
-• `get` **isCancelled**(): `boolean`
-
-#### Returns
-
-`boolean`
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:11](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L11)
-
-## Methods
-
-### captureStackTrace
-
-▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void`
-
-Create .stack property on a target object
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `targetObject` | `object` |
-| `constructorOpt?` | `Function` |
-
-#### Returns
-
-`void`
-
-#### Inherited from
-
-Error.captureStackTrace
-
-#### Defined in
-
-node_modules/@types/node/globals.d.ts:21
diff --git a/docs/js-sdk-docs/classes/api.CancelablePromise.md b/docs/js-sdk-docs/classes/api.CancelablePromise.md
deleted file mode 100644
index b9e1c1ffc..000000000
--- a/docs/js-sdk-docs/classes/api.CancelablePromise.md
+++ /dev/null
@@ -1,299 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / [api](../modules/api.md) / CancelablePromise
-
-# Class: CancelablePromise\
-
-[api](../modules/api.md).CancelablePromise
-
-## Type parameters
-
-| Name |
-| :------ |
-| `T` |
-
-## Implements
-
-- `Promise`\<`T`\>
-
-## Table of contents
-
-### Constructors
-
-- [constructor](api.CancelablePromise.md#constructor)
-
-### Properties
-
-- [#cancelHandlers](api.CancelablePromise.md##cancelhandlers)
-- [#isCancelled](api.CancelablePromise.md##iscancelled)
-- [#isRejected](api.CancelablePromise.md##isrejected)
-- [#isResolved](api.CancelablePromise.md##isresolved)
-- [#promise](api.CancelablePromise.md##promise)
-- [#reject](api.CancelablePromise.md##reject)
-- [#resolve](api.CancelablePromise.md##resolve)
-
-### Accessors
-
-- [[toStringTag]](api.CancelablePromise.md#[tostringtag])
-- [isCancelled](api.CancelablePromise.md#iscancelled)
-
-### Methods
-
-- [cancel](api.CancelablePromise.md#cancel)
-- [catch](api.CancelablePromise.md#catch)
-- [finally](api.CancelablePromise.md#finally)
-- [then](api.CancelablePromise.md#then)
-
-## Constructors
-
-### constructor
-
-• **new CancelablePromise**\<`T`\>(`executor`): [`CancelablePromise`](api.CancelablePromise.md)\<`T`\>
-
-#### Type parameters
-
-| Name |
-| :------ |
-| `T` |
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `executor` | (`resolve`: (`value`: `T` \| `PromiseLike`\<`T`\>) => `void`, `reject`: (`reason?`: `any`) => `void`, `onCancel`: `OnCancel`) => `void` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<`T`\>
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:33](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L33)
-
-## Properties
-
-### #cancelHandlers
-
-• `Private` `Readonly` **#cancelHandlers**: () => `void`[]
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:28](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L28)
-
-___
-
-### #isCancelled
-
-• `Private` **#isCancelled**: `boolean`
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:27](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L27)
-
-___
-
-### #isRejected
-
-• `Private` **#isRejected**: `boolean`
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:26](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L26)
-
-___
-
-### #isResolved
-
-• `Private` **#isResolved**: `boolean`
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:25](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L25)
-
-___
-
-### #promise
-
-• `Private` `Readonly` **#promise**: `Promise`\<`T`\>
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:29](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L29)
-
-___
-
-### #reject
-
-• `Private` `Optional` **#reject**: (`reason?`: `any`) => `void`
-
-#### Type declaration
-
-▸ (`reason?`): `void`
-
-##### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `reason?` | `any` |
-
-##### Returns
-
-`void`
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:31](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L31)
-
-___
-
-### #resolve
-
-• `Private` `Optional` **#resolve**: (`value`: `T` \| `PromiseLike`\<`T`\>) => `void`
-
-#### Type declaration
-
-▸ (`value`): `void`
-
-##### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `value` | `T` \| `PromiseLike`\<`T`\> |
-
-##### Returns
-
-`void`
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:30](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L30)
-
-## Accessors
-
-### [toStringTag]
-
-• `get` **[toStringTag]**(): `string`
-
-#### Returns
-
-`string`
-
-#### Implementation of
-
-Promise.[toStringTag]
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:87](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L87)
-
-___
-
-### isCancelled
-
-• `get` **isCancelled**(): `boolean`
-
-#### Returns
-
-`boolean`
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:127](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L127)
-
-## Methods
-
-### cancel
-
-▸ **cancel**(): `void`
-
-#### Returns
-
-`void`
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:108](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L108)
-
-___
-
-### catch
-
-▸ **catch**\<`TResult`\>(`onRejected?`): `Promise`\<`T` \| `TResult`\>
-
-#### Type parameters
-
-| Name | Type |
-| :------ | :------ |
-| `TResult` | `never` |
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `onRejected?` | ``null`` \| (`reason`: `any`) => `TResult` \| `PromiseLike`\<`TResult`\> |
-
-#### Returns
-
-`Promise`\<`T` \| `TResult`\>
-
-#### Implementation of
-
-Promise.catch
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:98](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L98)
-
-___
-
-### finally
-
-▸ **finally**(`onFinally?`): `Promise`\<`T`\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `onFinally?` | ``null`` \| () => `void` |
-
-#### Returns
-
-`Promise`\<`T`\>
-
-#### Implementation of
-
-Promise.finally
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:104](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L104)
-
-___
-
-### then
-
-▸ **then**\<`TResult1`, `TResult2`\>(`onFulfilled?`, `onRejected?`): `Promise`\<`TResult1` \| `TResult2`\>
-
-#### Type parameters
-
-| Name | Type |
-| :------ | :------ |
-| `TResult1` | `T` |
-| `TResult2` | `never` |
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `onFulfilled?` | ``null`` \| (`value`: `T`) => `TResult1` \| `PromiseLike`\<`TResult1`\> |
-| `onRejected?` | ``null`` \| (`reason`: `any`) => `TResult2` \| `PromiseLike`\<`TResult2`\> |
-
-#### Returns
-
-`Promise`\<`TResult1` \| `TResult2`\>
-
-#### Implementation of
-
-Promise.then
-
-#### Defined in
-
-[src/api/core/CancelablePromise.ts:91](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/CancelablePromise.ts#L91)
diff --git a/docs/js-sdk-docs/classes/api.DefaultService.md b/docs/js-sdk-docs/classes/api.DefaultService.md
deleted file mode 100644
index b692d0bb6..000000000
--- a/docs/js-sdk-docs/classes/api.DefaultService.md
+++ /dev/null
@@ -1,1194 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / [api](../modules/api.md) / DefaultService
-
-# Class: DefaultService
-
-[api](../modules/api.md).DefaultService
-
-## Table of contents
-
-### Constructors
-
-- [constructor](api.DefaultService.md#constructor)
-
-### Properties
-
-- [httpRequest](api.DefaultService.md#httprequest)
-
-### Methods
-
-- [chat](api.DefaultService.md#chat)
-- [createAgent](api.DefaultService.md#createagent)
-- [createAgentDoc](api.DefaultService.md#createagentdoc)
-- [createAgentTool](api.DefaultService.md#createagenttool)
-- [createSession](api.DefaultService.md#createsession)
-- [createUser](api.DefaultService.md#createuser)
-- [createUserDoc](api.DefaultService.md#createuserdoc)
-- [deleteAgent](api.DefaultService.md#deleteagent)
-- [deleteAgentDoc](api.DefaultService.md#deleteagentdoc)
-- [deleteAgentMemory](api.DefaultService.md#deleteagentmemory)
-- [deleteAgentTool](api.DefaultService.md#deleteagenttool)
-- [deleteSession](api.DefaultService.md#deletesession)
-- [deleteSessionHistory](api.DefaultService.md#deletesessionhistory)
-- [deleteUser](api.DefaultService.md#deleteuser)
-- [deleteUserDoc](api.DefaultService.md#deleteuserdoc)
-- [getAgent](api.DefaultService.md#getagent)
-- [getAgentDocs](api.DefaultService.md#getagentdocs)
-- [getAgentMemories](api.DefaultService.md#getagentmemories)
-- [getAgentTools](api.DefaultService.md#getagenttools)
-- [getHistory](api.DefaultService.md#gethistory)
-- [getJobStatus](api.DefaultService.md#getjobstatus)
-- [getSession](api.DefaultService.md#getsession)
-- [getSuggestions](api.DefaultService.md#getsuggestions)
-- [getUser](api.DefaultService.md#getuser)
-- [getUserDocs](api.DefaultService.md#getuserdocs)
-- [listAgents](api.DefaultService.md#listagents)
-- [listSessions](api.DefaultService.md#listsessions)
-- [listUsers](api.DefaultService.md#listusers)
-- [patchAgent](api.DefaultService.md#patchagent)
-- [patchAgentTool](api.DefaultService.md#patchagenttool)
-- [patchSession](api.DefaultService.md#patchsession)
-- [patchUser](api.DefaultService.md#patchuser)
-- [updateAgent](api.DefaultService.md#updateagent)
-- [updateAgentTool](api.DefaultService.md#updateagenttool)
-- [updateSession](api.DefaultService.md#updatesession)
-- [updateUser](api.DefaultService.md#updateuser)
-
-## Constructors
-
-### constructor
-
-• **new DefaultService**(`httpRequest`): [`DefaultService`](api.DefaultService.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `httpRequest` | [`BaseHttpRequest`](api.BaseHttpRequest.md) |
-
-#### Returns
-
-[`DefaultService`](api.DefaultService.md)
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:35](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L35)
-
-## Properties
-
-### httpRequest
-
-• `Readonly` **httpRequest**: [`BaseHttpRequest`](api.BaseHttpRequest.md)
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:35](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L35)
-
-## Methods
-
-### chat
-
-▸ **chat**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ChatResponse`](../modules/api.md#chatresponse)\>
-
-Interact with the session
-
-#### Parameters
-
-| Name | Type | Default value |
-| :------ | :------ | :------ |
-| `«destructured»` | `Object` | `undefined` |
-| › `accept?` | ``"application/json"`` \| ``"text/event-stream"`` | `"application/json"` |
-| › `requestBody?` | [`ChatInput`](../modules/api.md#chatinput) | `undefined` |
-| › `sessionId` | `string` | `undefined` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ChatResponse`](../modules/api.md#chatresponse)\>
-
-ChatResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:404](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L404)
-
-___
-
-### createAgent
-
-▸ **createAgent**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceCreatedResponse`](../modules/api.md#resourcecreatedresponse)\>
-
-Create a new agent
-Create a new agent
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `«destructured»` | `Object` | - |
-| › `requestBody?` | [`CreateAgentRequest`](../modules/api.md#createagentrequest) | Agent create options |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceCreatedResponse`](../modules/api.md#resourcecreatedresponse)\>
-
-ResourceCreatedResponse Agent successfully created
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:180](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L180)
-
-___
-
-### createAgentDoc
-
-▸ **createAgentDoc**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceCreatedResponse`](../modules/api.md#resourcecreatedresponse)\>
-
-Create doc of the agent
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `agentId` | `string` |
-| › `requestBody?` | [`CreateDoc`](../modules/api.md#createdoc) |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceCreatedResponse`](../modules/api.md#resourcecreatedresponse)\>
-
-ResourceCreatedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:668](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L668)
-
-___
-
-### createAgentTool
-
-▸ **createAgentTool**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceCreatedResponse`](../modules/api.md#resourcecreatedresponse)\>
-
-Create tool for the agent
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `agentId` | `string` |
-| › `requestBody?` | [`CreateToolRequest`](../modules/api.md#createtoolrequest) |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceCreatedResponse`](../modules/api.md#resourcecreatedresponse)\>
-
-ResourceCreatedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:857](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L857)
-
-___
-
-### createSession
-
-▸ **createSession**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceCreatedResponse`](../modules/api.md#resourcecreatedresponse)\>
-
-Create a new session
-Create a session between an agent and a user
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `«destructured»` | `Object` | - |
-| › `requestBody?` | [`CreateSessionRequest`](../modules/api.md#createsessionrequest) | Session initialization options |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceCreatedResponse`](../modules/api.md#resourcecreatedresponse)\>
-
-ResourceCreatedResponse Session successfully created
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:42](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L42)
-
-___
-
-### createUser
-
-▸ **createUser**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceCreatedResponse`](../modules/api.md#resourcecreatedresponse)\>
-
-Create a new user
-Create a new user
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `«destructured»` | `Object` | - |
-| › `requestBody?` | [`CreateUserRequest`](../modules/api.md#createuserrequest) | User create options |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceCreatedResponse`](../modules/api.md#resourcecreatedresponse)\>
-
-ResourceCreatedResponse User successfully created
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:111](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L111)
-
-___
-
-### createUserDoc
-
-▸ **createUserDoc**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceCreatedResponse`](../modules/api.md#resourcecreatedresponse)\>
-
-Create doc of the user
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `requestBody?` | [`CreateDoc`](../modules/api.md#createdoc) |
-| › `userId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceCreatedResponse`](../modules/api.md#resourcecreatedresponse)\>
-
-ResourceCreatedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:740](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L740)
-
-___
-
-### deleteAgent
-
-▸ **deleteAgent**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-Delete agent
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `agentId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-ResourceDeletedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:556](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L556)
-
-___
-
-### deleteAgentDoc
-
-▸ **deleteAgentDoc**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-Delete doc by id
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `agentId` | `string` |
-| › `docId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-ResourceDeletedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:783](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L783)
-
-___
-
-### deleteAgentMemory
-
-▸ **deleteAgentMemory**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-Delete memory of the agent by id
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `agentId` | `string` |
-| › `memoryId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-ResourceDeletedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:804](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L804)
-
-___
-
-### deleteAgentTool
-
-▸ **deleteAgentTool**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-Delete tool by id
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `agentId` | `string` |
-| › `toolId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-ResourceDeletedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:879](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L879)
-
-___
-
-### deleteSession
-
-▸ **deleteSession**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-Delete session
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `sessionId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-ResourceDeletedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:266](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L266)
-
-___
-
-### deleteSessionHistory
-
-▸ **deleteSessionHistory**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-Delete session history (does NOT delete related memories)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `sessionId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-ResourceDeletedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:386](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L386)
-
-___
-
-### deleteUser
-
-▸ **deleteUser**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-Delete user
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `userId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-ResourceDeletedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:480](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L480)
-
-___
-
-### deleteUserDoc
-
-▸ **deleteUserDoc**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-Delete doc by id
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `docId` | `string` |
-| › `userId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceDeletedResponse`](../modules/api.md#resourcedeletedresponse)\>
-
-ResourceDeletedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:762](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L762)
-
-___
-
-### getAgent
-
-▸ **getAgent**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`Agent`](../modules/api.md#agent)\>
-
-Get details of the agent
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `agentId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`Agent`](../modules/api.md#agent)\>
-
-Agent
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:542](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L542)
-
-___
-
-### getAgentDocs
-
-▸ **getAgentDocs**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`Doc`](../modules/api.md#doc)[] }\>
-
-Get docs of the agent
-Sorted (created_at descending)
-
-#### Parameters
-
-| Name | Type | Default value | Description |
-| :------ | :------ | :------ | :------ |
-| `«destructured»` | `Object` | `undefined` | - |
-| › `agentId` | `string` | `undefined` | - |
-| › `limit?` | `number` | `undefined` | - |
-| › `metadataFilter?` | `string` | `"{}"` | JSON object that should be used to filter objects by metadata |
-| › `offset?` | `number` | `undefined` | - |
-| › `order?` | ``"desc"`` \| ``"asc"`` | `"desc"` | Which order should the sort be: `asc` (ascending) or `desc` (descending) |
-| › `requestBody?` | `any` | `undefined` | - |
-| › `sortBy?` | ``"created_at"`` \| ``"updated_at"`` | `"created_at"` | Which field to sort by: `created_at` or `updated_at` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`Doc`](../modules/api.md#doc)[] }\>
-
-any
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:619](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L619)
-
-___
-
-### getAgentMemories
-
-▸ **getAgentMemories**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`Memory`](../modules/api.md#memory)[] }\>
-
-Get memories of the agent
-Sorted (created_at descending)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `agentId` | `string` |
-| › `limit?` | `number` |
-| › `offset?` | `number` |
-| › `query` | `string` |
-| › `userId?` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`Memory`](../modules/api.md#memory)[] }\>
-
-any
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:432](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L432)
-
-___
-
-### getAgentTools
-
-▸ **getAgentTools**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`Tool`](../modules/api.md#tool)[] }\>
-
-Get tools of the agent
-Sorted (created_at descending)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `agentId` | `string` |
-| › `limit?` | `number` |
-| › `offset?` | `number` |
-| › `requestBody?` | `any` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`Tool`](../modules/api.md#tool)[] }\>
-
-any
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:826](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L826)
-
-___
-
-### getHistory
-
-▸ **getHistory**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`ChatMLMessage`](../modules/api.md#chatmlmessage)[] }\>
-
-Get all messages in a session
-Sorted (created_at ascending)
-
-#### Parameters
-
-| Name | Type | Default value |
-| :------ | :------ | :------ |
-| `«destructured»` | `Object` | `undefined` |
-| › `limit?` | `number` | `100` |
-| › `offset?` | `number` | `undefined` |
-| › `sessionId` | `string` | `undefined` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`ChatMLMessage`](../modules/api.md#chatmlmessage)[] }\>
-
-any
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:358](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L358)
-
-___
-
-### getJobStatus
-
-▸ **getJobStatus**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`JobStatus`](../modules/api.md#jobstatus)\>
-
-Get status of the job
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `jobId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`JobStatus`](../modules/api.md#jobstatus)\>
-
-JobStatus
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:950](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L950)
-
-___
-
-### getSession
-
-▸ **getSession**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`Session`](../modules/api.md#session)\>
-
-Get details of the session
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `sessionId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`Session`](../modules/api.md#session)\>
-
-Session
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:248](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L248)
-
-___
-
-### getSuggestions
-
-▸ **getSuggestions**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`Suggestion`](../modules/api.md#suggestion)[] }\>
-
-Get autogenerated suggestions for session user and agent
-Sorted (created_at descending)
-
-#### Parameters
-
-| Name | Type | Default value |
-| :------ | :------ | :------ |
-| `«destructured»` | `Object` | `undefined` |
-| › `limit?` | `number` | `100` |
-| › `offset?` | `number` | `undefined` |
-| › `sessionId` | `string` | `undefined` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`Suggestion`](../modules/api.md#suggestion)[] }\>
-
-any
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:329](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L329)
-
-___
-
-### getUser
-
-▸ **getUser**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`User`](../modules/api.md#user)\>
-
-Get details of the user
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `userId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`User`](../modules/api.md#user)\>
-
-User
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:466](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L466)
-
-___
-
-### getUserDocs
-
-▸ **getUserDocs**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`Doc`](../modules/api.md#doc)[] }\>
-
-Get docs of the user
-Sorted (created_at descending)
-
-#### Parameters
-
-| Name | Type | Default value | Description |
-| :------ | :------ | :------ | :------ |
-| `«destructured»` | `Object` | `undefined` | - |
-| › `limit?` | `number` | `undefined` | - |
-| › `metadataFilter?` | `string` | `"{}"` | JSON object that should be used to filter objects by metadata |
-| › `offset?` | `number` | `undefined` | - |
-| › `order?` | ``"desc"`` \| ``"asc"`` | `"desc"` | Which order should the sort be: `asc` (ascending) or `desc` (descending) |
-| › `requestBody?` | `any` | `undefined` | - |
-| › `sortBy?` | ``"created_at"`` \| ``"updated_at"`` | `"created_at"` | Which field to sort by: `created_at` or `updated_at` |
-| › `userId` | `string` | `undefined` | - |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`Doc`](../modules/api.md#doc)[] }\>
-
-any
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:691](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L691)
-
-___
-
-### listAgents
-
-▸ **listAgents**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<\{ `items`: [`Agent`](../modules/api.md#agent)[] }\>
-
-List agents
-List agents created (use limit/offset pagination to get large number of sessions; sorted by descending order of `created_at` by default)
-
-#### Parameters
-
-| Name | Type | Default value | Description |
-| :------ | :------ | :------ | :------ |
-| `«destructured»` | `Object` | `undefined` | - |
-| › `limit?` | `number` | `100` | Number of items to return |
-| › `metadataFilter?` | `string` | `"{}"` | JSON object that should be used to filter objects by metadata |
-| › `offset?` | `number` | `undefined` | Number of items to skip (sorted created_at descending order) |
-| › `order?` | ``"desc"`` \| ``"asc"`` | `"desc"` | Which order should the sort be: `asc` (ascending) or `desc` (descending) |
-| › `sortBy?` | ``"created_at"`` \| ``"updated_at"`` | `"created_at"` | Which field to sort by: `created_at` or `updated_at` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<\{ `items`: [`Agent`](../modules/api.md#agent)[] }\>
-
-any List of agents (sorted created_at descending order) with limit+offset pagination
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:201](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L201)
-
-___
-
-### listSessions
-
-▸ **listSessions**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<\{ `items`: [`Session`](../modules/api.md#session)[] }\>
-
-List sessions
-List sessions created (use limit/offset pagination to get large number of sessions; sorted by descending order of `created_at` by default)
-
-#### Parameters
-
-| Name | Type | Default value | Description |
-| :------ | :------ | :------ | :------ |
-| `«destructured»` | `Object` | `undefined` | - |
-| › `limit?` | `number` | `100` | Number of sessions to return |
-| › `metadataFilter?` | `string` | `"{}"` | JSON object that should be used to filter objects by metadata |
-| › `offset?` | `number` | `undefined` | Number of sessions to skip (sorted created_at descending order) |
-| › `order?` | ``"desc"`` \| ``"asc"`` | `"desc"` | Which order should the sort be: `asc` (ascending) or `desc` (descending) |
-| › `sortBy?` | ``"created_at"`` \| ``"updated_at"`` | `"created_at"` | Which field to sort by: `created_at` or `updated_at` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<\{ `items`: [`Session`](../modules/api.md#session)[] }\>
-
-any List of sessions (sorted created_at descending order) with limit+offset pagination
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:63](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L63)
-
-___
-
-### listUsers
-
-▸ **listUsers**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<\{ `items`: [`User`](../modules/api.md#user)[] }\>
-
-List users
-List users created (use limit/offset pagination to get large number of sessions; sorted by descending order of `created_at` by default)
-
-#### Parameters
-
-| Name | Type | Default value | Description |
-| :------ | :------ | :------ | :------ |
-| `«destructured»` | `Object` | `undefined` | - |
-| › `limit?` | `number` | `100` | Number of items to return |
-| › `metadataFilter?` | `string` | `"{}"` | JSON object that should be used to filter objects by metadata |
-| › `offset?` | `number` | `undefined` | Number of items to skip (sorted created_at descending order) |
-| › `order?` | ``"desc"`` \| ``"asc"`` | `"desc"` | Which order should the sort be: `asc` (ascending) or `desc` (descending) |
-| › `sortBy?` | ``"created_at"`` \| ``"updated_at"`` | `"created_at"` | Which field to sort by: `created_at` or `updated_at` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<\{ `items`: [`User`](../modules/api.md#user)[] }\>
-
-any List of users (sorted created_at descending order) with limit+offset pagination
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:132](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L132)
-
-___
-
-### patchAgent
-
-▸ **patchAgent**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-Patch Agent parameters (merge instead of replace)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `agentId` | `string` |
-| › `requestBody?` | [`PatchAgentRequest`](../modules/api.md#patchagentrequest) |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-ResourceUpdatedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:596](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L596)
-
-___
-
-### patchAgentTool
-
-▸ **patchAgentTool**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-Patch Agent tool parameters (merge instead of replace)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `agentId` | `string` |
-| › `requestBody?` | [`PatchToolRequest`](../modules/api.md#patchtoolrequest) |
-| › `toolId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-ResourceUpdatedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:925](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L925)
-
-___
-
-### patchSession
-
-▸ **patchSession**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-Patch Session parameters (merge instead of replace)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `requestBody?` | [`PatchSessionRequest`](../modules/api.md#patchsessionrequest) |
-| › `sessionId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-ResourceUpdatedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:306](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L306)
-
-___
-
-### patchUser
-
-▸ **patchUser**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-Patch User parameters (merge instead of replace)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `requestBody?` | [`PatchUserRequest`](../modules/api.md#patchuserrequest) |
-| › `userId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-ResourceUpdatedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:520](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L520)
-
-___
-
-### updateAgent
-
-▸ **updateAgent**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-Update agent parameters
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `agentId` | `string` |
-| › `requestBody?` | [`UpdateAgentRequest`](../modules/api.md#updateagentrequest) |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-ResourceUpdatedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:574](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L574)
-
-___
-
-### updateAgentTool
-
-▸ **updateAgentTool**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-Update agent tool definition
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `agentId` | `string` |
-| › `requestBody?` | [`UpdateToolRequest`](../modules/api.md#updatetoolrequest) |
-| › `toolId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-ResourceUpdatedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:900](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L900)
-
-___
-
-### updateSession
-
-▸ **updateSession**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-Update session parameters
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `requestBody?` | [`UpdateSessionRequest`](../modules/api.md#updatesessionrequest) |
-| › `sessionId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-ResourceUpdatedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:284](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L284)
-
-___
-
-### updateUser
-
-▸ **updateUser**(`«destructured»`): [`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-Update user parameters
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `«destructured»` | `Object` |
-| › `requestBody?` | [`UpdateUserRequest`](../modules/api.md#updateuserrequest) |
-| › `userId` | `string` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-ResourceUpdatedResponse
-
-**`Throws`**
-
-ApiError
-
-#### Defined in
-
-[src/api/services/DefaultService.ts:498](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/services/DefaultService.ts#L498)
diff --git a/docs/js-sdk-docs/classes/api_JulepApiClient.JulepApiClient.md b/docs/js-sdk-docs/classes/api_JulepApiClient.JulepApiClient.md
deleted file mode 100644
index bb4c4a4a2..000000000
--- a/docs/js-sdk-docs/classes/api_JulepApiClient.JulepApiClient.md
+++ /dev/null
@@ -1,57 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / [api/JulepApiClient](../modules/api_JulepApiClient.md) / JulepApiClient
-
-# Class: JulepApiClient
-
-[api/JulepApiClient](../modules/api_JulepApiClient.md).JulepApiClient
-
-## Table of contents
-
-### Constructors
-
-- [constructor](api_JulepApiClient.JulepApiClient.md#constructor)
-
-### Properties
-
-- [default](api_JulepApiClient.JulepApiClient.md#default)
-- [request](api_JulepApiClient.JulepApiClient.md#request)
-
-## Constructors
-
-### constructor
-
-• **new JulepApiClient**(`config?`, `HttpRequest?`): [`JulepApiClient`](api_JulepApiClient.JulepApiClient.md)
-
-#### Parameters
-
-| Name | Type | Default value |
-| :------ | :------ | :------ |
-| `config?` | `Partial`\<[`OpenAPIConfig`](../modules/api.md#openapiconfig)\> | `undefined` |
-| `HttpRequest` | `HttpRequestConstructor` | `AxiosHttpRequest` |
-
-#### Returns
-
-[`JulepApiClient`](api_JulepApiClient.JulepApiClient.md)
-
-#### Defined in
-
-[src/api/JulepApiClient.ts:13](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/JulepApiClient.ts#L13)
-
-## Properties
-
-### default
-
-• `Readonly` **default**: [`DefaultService`](api.DefaultService.md)
-
-#### Defined in
-
-[src/api/JulepApiClient.ts:11](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/JulepApiClient.ts#L11)
-
-___
-
-### request
-
-• `Readonly` **request**: [`BaseHttpRequest`](api.BaseHttpRequest.md)
-
-#### Defined in
-
-[src/api/JulepApiClient.ts:12](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/JulepApiClient.ts#L12)
diff --git a/docs/js-sdk-docs/classes/managers_agent.AgentsManager.md b/docs/js-sdk-docs/classes/managers_agent.AgentsManager.md
deleted file mode 100644
index 30235e467..000000000
--- a/docs/js-sdk-docs/classes/managers_agent.AgentsManager.md
+++ /dev/null
@@ -1,204 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / [managers/agent](../modules/managers_agent.md) / AgentsManager
-
-# Class: AgentsManager
-
-[managers/agent](../modules/managers_agent.md).AgentsManager
-
-BaseManager serves as the base class for all manager classes that interact with the Julep API.
-It provides common functionality needed for API interactions.
-
-## Hierarchy
-
-- [`BaseManager`](managers_base.BaseManager.md)
-
- ↳ **`AgentsManager`**
-
-## Table of contents
-
-### Constructors
-
-- [constructor](managers_agent.AgentsManager.md#constructor)
-
-### Properties
-
-- [apiClient](managers_agent.AgentsManager.md#apiclient)
-
-### Methods
-
-- [create](managers_agent.AgentsManager.md#create)
-- [delete](managers_agent.AgentsManager.md#delete)
-- [get](managers_agent.AgentsManager.md#get)
-- [list](managers_agent.AgentsManager.md#list)
-- [update](managers_agent.AgentsManager.md#update)
-
-## Constructors
-
-### constructor
-
-• **new AgentsManager**(`apiClient`): [`AgentsManager`](managers_agent.AgentsManager.md)
-
-Constructs a new instance of BaseManager.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `apiClient` | [`JulepApiClient`](api_JulepApiClient.JulepApiClient.md) | The JulepApiClient instance used for API interactions. |
-
-#### Returns
-
-[`AgentsManager`](managers_agent.AgentsManager.md)
-
-#### Inherited from
-
-[BaseManager](managers_base.BaseManager.md).[constructor](managers_base.BaseManager.md#constructor)
-
-#### Defined in
-
-[src/managers/base.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/base.ts#L14)
-
-## Properties
-
-### apiClient
-
-• **apiClient**: [`JulepApiClient`](api_JulepApiClient.JulepApiClient.md)
-
-The JulepApiClient instance used for API interactions.
-
-#### Inherited from
-
-[BaseManager](managers_base.BaseManager.md).[apiClient](managers_base.BaseManager.md#apiclient)
-
-#### Defined in
-
-[src/managers/base.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/base.ts#L14)
-
-## Methods
-
-### create
-
-▸ **create**(`options`): `Promise`\<`Partial`\<[`Agent`](../modules/api.md#agent)\> & \{ `id`: `string` }\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | `Object` |
-| `options.about` | `string` |
-| `options.default_settings?` | [`AgentDefaultSettings`](../modules/api.md#agentdefaultsettings) |
-| `options.docs?` | [`Doc`](../modules/api.md#doc)[] |
-| `options.instructions` | `string` \| `string`[] |
-| `options.model?` | `string` |
-| `options.name` | `string` |
-| `options.tools?` | [`CreateToolRequest`](../modules/api.md#createtoolrequest)[] |
-
-#### Returns
-
-`Promise`\<`Partial`\<[`Agent`](../modules/api.md#agent)\> & \{ `id`: `string` }\>
-
-#### Defined in
-
-[src/managers/agent.ts:23](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/agent.ts#L23)
-
-___
-
-### delete
-
-▸ **delete**(`agentId`): `Promise`\<`void`\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `agentId` | `string` & `Format`\<``"uuid"``\> |
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Defined in
-
-[src/managers/agent.ts:108](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/agent.ts#L108)
-
-___
-
-### get
-
-▸ **get**(`agentId`): `Promise`\<[`Agent`](../modules/api.md#agent)\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `agentId` | `string` & `Format`\<``"uuid"``\> |
-
-#### Returns
-
-`Promise`\<[`Agent`](../modules/api.md#agent)\>
-
-#### Defined in
-
-[src/managers/agent.ts:17](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/agent.ts#L17)
-
-___
-
-### list
-
-▸ **list**(`options?`): `Promise`\<[`Agent`](../modules/api.md#agent)[]\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | `Object` |
-| `options.limit?` | `number` & `Type`\<``"uint32"``\> & `Minimum`\<``1``\> & `Maximum`\<``1000``\> |
-| `options.metadataFilter?` | `Object` |
-| `options.offset?` | `number` & `Type`\<``"uint32"``\> & `Minimum`\<``0``\> |
-
-#### Returns
-
-`Promise`\<[`Agent`](../modules/api.md#agent)[]\>
-
-#### Defined in
-
-[src/managers/agent.ts:74](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/agent.ts#L74)
-
-___
-
-### update
-
-▸ **update**(`agentId`, `request`, `overwrite?`): `Promise`\<`Partial`\<[`Agent`](../modules/api.md#agent)\> & \{ `id`: `string` }\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `agentId` | `string` |
-| `request` | [`PatchAgentRequest`](../modules/api.md#patchagentrequest) |
-| `overwrite?` | ``false`` |
-
-#### Returns
-
-`Promise`\<`Partial`\<[`Agent`](../modules/api.md#agent)\> & \{ `id`: `string` }\>
-
-#### Defined in
-
-[src/managers/agent.ts:115](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/agent.ts#L115)
-
-▸ **update**(`agentId`, `request`, `overwrite`): `Promise`\<`Partial`\<[`Agent`](../modules/api.md#agent)\> & \{ `id`: `string` }\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `agentId` | `string` |
-| `request` | [`UpdateAgentRequest`](../modules/api.md#updateagentrequest) |
-| `overwrite` | ``true`` |
-
-#### Returns
-
-`Promise`\<`Partial`\<[`Agent`](../modules/api.md#agent)\> & \{ `id`: `string` }\>
-
-#### Defined in
-
-[src/managers/agent.ts:121](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/agent.ts#L121)
diff --git a/docs/js-sdk-docs/classes/managers_base.BaseManager.md b/docs/js-sdk-docs/classes/managers_base.BaseManager.md
deleted file mode 100644
index 04ad76162..000000000
--- a/docs/js-sdk-docs/classes/managers_base.BaseManager.md
+++ /dev/null
@@ -1,68 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / [managers/base](../modules/managers_base.md) / BaseManager
-
-# Class: BaseManager
-
-[managers/base](../modules/managers_base.md).BaseManager
-
-BaseManager serves as the base class for all manager classes that interact with the Julep API.
-It provides common functionality needed for API interactions.
-
-## Hierarchy
-
-- **`BaseManager`**
-
- ↳ [`AgentsManager`](managers_agent.AgentsManager.md)
-
- ↳ [`DocsManager`](managers_doc.DocsManager.md)
-
- ↳ [`MemoriesManager`](managers_memory.MemoriesManager.md)
-
- ↳ [`SessionsManager`](managers_session.SessionsManager.md)
-
- ↳ [`ToolsManager`](managers_tool.ToolsManager.md)
-
- ↳ [`UsersManager`](managers_user.UsersManager.md)
-
-## Table of contents
-
-### Constructors
-
-- [constructor](managers_base.BaseManager.md#constructor)
-
-### Properties
-
-- [apiClient](managers_base.BaseManager.md#apiclient)
-
-## Constructors
-
-### constructor
-
-• **new BaseManager**(`apiClient`): [`BaseManager`](managers_base.BaseManager.md)
-
-Constructs a new instance of BaseManager.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `apiClient` | [`JulepApiClient`](api_JulepApiClient.JulepApiClient.md) | The JulepApiClient instance used for API interactions. |
-
-#### Returns
-
-[`BaseManager`](managers_base.BaseManager.md)
-
-#### Defined in
-
-[src/managers/base.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/base.ts#L14)
-
-## Properties
-
-### apiClient
-
-• **apiClient**: [`JulepApiClient`](api_JulepApiClient.JulepApiClient.md)
-
-The JulepApiClient instance used for API interactions.
-
-#### Defined in
-
-[src/managers/base.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/base.ts#L14)
diff --git a/docs/js-sdk-docs/classes/managers_doc.DocsManager.md b/docs/js-sdk-docs/classes/managers_doc.DocsManager.md
deleted file mode 100644
index 02bcf2f15..000000000
--- a/docs/js-sdk-docs/classes/managers_doc.DocsManager.md
+++ /dev/null
@@ -1,209 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / [managers/doc](../modules/managers_doc.md) / DocsManager
-
-# Class: DocsManager
-
-[managers/doc](../modules/managers_doc.md).DocsManager
-
-BaseManager serves as the base class for all manager classes that interact with the Julep API.
-It provides common functionality needed for API interactions.
-
-## Hierarchy
-
-- [`BaseManager`](managers_base.BaseManager.md)
-
- ↳ **`DocsManager`**
-
-## Table of contents
-
-### Constructors
-
-- [constructor](managers_doc.DocsManager.md#constructor)
-
-### Properties
-
-- [apiClient](managers_doc.DocsManager.md#apiclient)
-
-### Methods
-
-- [create](managers_doc.DocsManager.md#create)
-- [delete](managers_doc.DocsManager.md#delete)
-- [get](managers_doc.DocsManager.md#get)
-- [list](managers_doc.DocsManager.md#list)
-
-## Constructors
-
-### constructor
-
-• **new DocsManager**(`apiClient`): [`DocsManager`](managers_doc.DocsManager.md)
-
-Constructs a new instance of BaseManager.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `apiClient` | [`JulepApiClient`](api_JulepApiClient.JulepApiClient.md) | The JulepApiClient instance used for API interactions. |
-
-#### Returns
-
-[`DocsManager`](managers_doc.DocsManager.md)
-
-#### Inherited from
-
-[BaseManager](managers_base.BaseManager.md).[constructor](managers_base.BaseManager.md#constructor)
-
-#### Defined in
-
-[src/managers/base.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/base.ts#L14)
-
-## Properties
-
-### apiClient
-
-• **apiClient**: [`JulepApiClient`](api_JulepApiClient.JulepApiClient.md)
-
-The JulepApiClient instance used for API interactions.
-
-#### Inherited from
-
-[BaseManager](managers_base.BaseManager.md).[apiClient](managers_base.BaseManager.md#apiclient)
-
-#### Defined in
-
-[src/managers/base.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/base.ts#L14)
-
-## Methods
-
-### create
-
-▸ **create**(`options`): `Promise`\<[`Doc`](../modules/api.md#doc)\>
-
-Creates a document based on the provided agentId or userId.
-Ensures that only one of agentId or userId is provided using xor function.
-Validates the provided agentId or userId using isValidUuid4.
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | `Object` |
-| `options.agentId?` | `string` & `Format`\<``"uuid"``\> |
-| `options.doc` | [`CreateDoc`](../modules/api.md#createdoc) |
-| `options.userId?` | `string` & `Format`\<``"uuid"``\> |
-
-#### Returns
-
-`Promise`\<[`Doc`](../modules/api.md#doc)\>
-
-The created document.
-
-**`Throws`**
-
-If neither agentId nor userId is provided.
-
-#### Defined in
-
-[src/managers/doc.ts:162](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/doc.ts#L162)
-
-___
-
-### delete
-
-▸ **delete**(`options`): `Promise`\<`void`\>
-
-Deletes a document based on the provided agentId or userId and the specific docId.
-Ensures that only one of agentId or userId is provided using xor function.
-Validates the provided agentId or userId using isValidUuid4.
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | `Object` |
-| `options.agentId?` | `string` & `Format`\<``"uuid"``\> |
-| `options.docId` | `string` |
-| `options.userId?` | `string` & `Format`\<``"uuid"``\> |
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A promise that resolves when the document is successfully deleted.
-
-**`Throws`**
-
-If neither agentId nor userId is provided.
-
-#### Defined in
-
-[src/managers/doc.ts:214](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/doc.ts#L214)
-
-___
-
-### get
-
-▸ **get**(`options?`): `Promise`\<[`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`Doc`](../modules/api.md#doc)[] }\> \| [`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`Doc`](../modules/api.md#doc)[] }\>\>
-
-Retrieves documents based on the provided agentId or userId.
-Ensures that only one of agentId or userId is provided using xor function.
-Validates the provided agentId or userId using isValidUuid4.
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | `Object` |
-| `options.agentId?` | `string` & `Format`\<``"uuid"``\> |
-| `options.limit?` | `number` & `Type`\<``"uint32"``\> & `Minimum`\<``1``\> & `Maximum`\<``1000``\> |
-| `options.offset?` | `number` & `Type`\<``"uint32"``\> & `Minimum`\<``0``\> |
-| `options.userId?` | `string` & `Format`\<``"uuid"``\> |
-
-#### Returns
-
-`Promise`\<[`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`Doc`](../modules/api.md#doc)[] }\> \| [`CancelablePromise`](api.CancelablePromise.md)\<\{ `items?`: [`Doc`](../modules/api.md#doc)[] }\>\>
-
-The retrieved documents.
-
-**`Throws`**
-
-If neither agentId nor userId is provided.
-
-#### Defined in
-
-[src/managers/doc.ts:23](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/doc.ts#L23)
-
-___
-
-### list
-
-▸ **list**(`options?`): `Promise`\<[`Doc`](../modules/api.md#doc)[]\>
-
-Lists documents based on the provided agentId or userId, with optional metadata filtering.
-Ensures that only one of agentId or userId is provided using xor function.
-Validates the provided agentId or userId using isValidUuid4.
-Allows for filtering based on metadata.
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | `Object` |
-| `options.agentId?` | `string` & `Format`\<``"uuid"``\> |
-| `options.limit?` | `number` & `Type`\<``"uint32"``\> & `Minimum`\<``1``\> & `Maximum`\<``1000``\> |
-| `options.metadataFilter?` | `Object` |
-| `options.offset?` | `number` & `Type`\<``"uint32"``\> & `Minimum`\<``0``\> |
-| `options.userId?` | `string` & `Format`\<``"uuid"``\> |
-
-#### Returns
-
-`Promise`\<[`Doc`](../modules/api.md#doc)[]\>
-
-The list of filtered documents.
-
-**`Throws`**
-
-If neither agentId nor userId is provided.
-
-#### Defined in
-
-[src/managers/doc.ts:90](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/doc.ts#L90)
diff --git a/docs/js-sdk-docs/classes/managers_memory.MemoriesManager.md b/docs/js-sdk-docs/classes/managers_memory.MemoriesManager.md
deleted file mode 100644
index 791c80f80..000000000
--- a/docs/js-sdk-docs/classes/managers_memory.MemoriesManager.md
+++ /dev/null
@@ -1,99 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / [managers/memory](../modules/managers_memory.md) / MemoriesManager
-
-# Class: MemoriesManager
-
-[managers/memory](../modules/managers_memory.md).MemoriesManager
-
-BaseManager serves as the base class for all manager classes that interact with the Julep API.
-It provides common functionality needed for API interactions.
-
-## Hierarchy
-
-- [`BaseManager`](managers_base.BaseManager.md)
-
- ↳ **`MemoriesManager`**
-
-## Table of contents
-
-### Constructors
-
-- [constructor](managers_memory.MemoriesManager.md#constructor)
-
-### Properties
-
-- [apiClient](managers_memory.MemoriesManager.md#apiclient)
-
-### Methods
-
-- [list](managers_memory.MemoriesManager.md#list)
-
-## Constructors
-
-### constructor
-
-• **new MemoriesManager**(`apiClient`): [`MemoriesManager`](managers_memory.MemoriesManager.md)
-
-Constructs a new instance of BaseManager.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `apiClient` | [`JulepApiClient`](api_JulepApiClient.JulepApiClient.md) | The JulepApiClient instance used for API interactions. |
-
-#### Returns
-
-[`MemoriesManager`](managers_memory.MemoriesManager.md)
-
-#### Inherited from
-
-[BaseManager](managers_base.BaseManager.md).[constructor](managers_base.BaseManager.md#constructor)
-
-#### Defined in
-
-[src/managers/base.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/base.ts#L14)
-
-## Properties
-
-### apiClient
-
-• **apiClient**: [`JulepApiClient`](api_JulepApiClient.JulepApiClient.md)
-
-The JulepApiClient instance used for API interactions.
-
-#### Inherited from
-
-[BaseManager](managers_base.BaseManager.md).[apiClient](managers_base.BaseManager.md#apiclient)
-
-#### Defined in
-
-[src/managers/base.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/base.ts#L14)
-
-## Methods
-
-### list
-
-▸ **list**(`options`): `Promise`\<[`Memory`](../modules/api.md#memory)[]\>
-
-Lists memories based on the provided parameters.
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | `Object` |
-| `options.agentId` | `string` & `Format`\<``"uuid"``\> |
-| `options.limit?` | `number` & `Type`\<``"uint32"``\> & `Minimum`\<``1``\> & `Maximum`\<``1000``\> |
-| `options.offset?` | `number` & `Type`\<``"uint32"``\> & `Minimum`\<``0``\> |
-| `options.query` | `string` |
-| `options.userId?` | `string` & `Format`\<``"uuid"``\> |
-
-#### Returns
-
-`Promise`\<[`Memory`](../modules/api.md#memory)[]\>
-
-A promise that resolves to an array of Memory objects.
-
-#### Defined in
-
-[src/managers/memory.ts:21](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/memory.ts#L21)
diff --git a/docs/js-sdk-docs/classes/managers_session.SessionsManager.md b/docs/js-sdk-docs/classes/managers_session.SessionsManager.md
deleted file mode 100644
index 7bcfdddae..000000000
--- a/docs/js-sdk-docs/classes/managers_session.SessionsManager.md
+++ /dev/null
@@ -1,278 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / [managers/session](../modules/managers_session.md) / SessionsManager
-
-# Class: SessionsManager
-
-[managers/session](../modules/managers_session.md).SessionsManager
-
-BaseManager serves as the base class for all manager classes that interact with the Julep API.
-It provides common functionality needed for API interactions.
-
-## Hierarchy
-
-- [`BaseManager`](managers_base.BaseManager.md)
-
- ↳ **`SessionsManager`**
-
-## Table of contents
-
-### Constructors
-
-- [constructor](managers_session.SessionsManager.md#constructor)
-
-### Properties
-
-- [apiClient](managers_session.SessionsManager.md#apiclient)
-
-### Methods
-
-- [chat](managers_session.SessionsManager.md#chat)
-- [create](managers_session.SessionsManager.md#create)
-- [delete](managers_session.SessionsManager.md#delete)
-- [deleteHistory](managers_session.SessionsManager.md#deletehistory)
-- [get](managers_session.SessionsManager.md#get)
-- [history](managers_session.SessionsManager.md#history)
-- [list](managers_session.SessionsManager.md#list)
-- [suggestions](managers_session.SessionsManager.md#suggestions)
-- [update](managers_session.SessionsManager.md#update)
-
-## Constructors
-
-### constructor
-
-• **new SessionsManager**(`apiClient`): [`SessionsManager`](managers_session.SessionsManager.md)
-
-Constructs a new instance of BaseManager.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `apiClient` | [`JulepApiClient`](api_JulepApiClient.JulepApiClient.md) | The JulepApiClient instance used for API interactions. |
-
-#### Returns
-
-[`SessionsManager`](managers_session.SessionsManager.md)
-
-#### Inherited from
-
-[BaseManager](managers_base.BaseManager.md).[constructor](managers_base.BaseManager.md#constructor)
-
-#### Defined in
-
-[src/managers/base.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/base.ts#L14)
-
-## Properties
-
-### apiClient
-
-• **apiClient**: [`JulepApiClient`](api_JulepApiClient.JulepApiClient.md)
-
-The JulepApiClient instance used for API interactions.
-
-#### Inherited from
-
-[BaseManager](managers_base.BaseManager.md).[apiClient](managers_base.BaseManager.md#apiclient)
-
-#### Defined in
-
-[src/managers/base.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/base.ts#L14)
-
-## Methods
-
-### chat
-
-▸ **chat**(`sessionId`, `input`): `Promise`\<[`ChatResponse`](../modules/api.md#chatresponse)\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `sessionId` | `string` & `Format`\<``"uuid"``\> |
-| `input` | [`ChatInput`](../modules/api.md#chatinput) |
-
-#### Returns
-
-`Promise`\<[`ChatResponse`](../modules/api.md#chatresponse)\>
-
-#### Defined in
-
-[src/managers/session.ts:161](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L161)
-
-___
-
-### create
-
-▸ **create**(`payload`): `Promise`\<[`ResourceCreatedResponse`](../modules/api.md#resourcecreatedresponse)\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `payload` | [`CreateSessionPayload`](../interfaces/managers_session.CreateSessionPayload.md) |
-
-#### Returns
-
-`Promise`\<[`ResourceCreatedResponse`](../modules/api.md#resourcecreatedresponse)\>
-
-#### Defined in
-
-[src/managers/session.ts:39](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L39)
-
-___
-
-### delete
-
-▸ **delete**(`sessionId`): `Promise`\<`void`\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `sessionId` | `string` & `Format`\<``"uuid"``\> |
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Defined in
-
-[src/managers/session.ts:109](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L109)
-
-___
-
-### deleteHistory
-
-▸ **deleteHistory**(`sessionId`): `Promise`\<`void`\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `sessionId` | `string` & `Format`\<``"uuid"``\> |
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Defined in
-
-[src/managers/session.ts:263](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L263)
-
-___
-
-### get
-
-▸ **get**(`sessionId`): `Promise`\<[`Session`](../modules/api.md#session)\>
-
-Retrieves a session by its ID.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `sessionId` | `string` & `Format`\<``"uuid"``\> | The unique identifier of the session. |
-
-#### Returns
-
-`Promise`\<[`Session`](../modules/api.md#session)\>
-
-A promise that resolves with the session object.
-
-#### Defined in
-
-[src/managers/session.ts:33](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L33)
-
-___
-
-### history
-
-▸ **history**(`sessionId`, `options?`): `Promise`\<[`ChatMLMessage`](../modules/api.md#chatmlmessage)[]\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `sessionId` | `string` & `Format`\<``"uuid"``\> |
-| `options` | `Object` |
-| `options.limit?` | `number` & `Minimum`\<``1``\> & `Maximum`\<``1000``\> |
-| `options.offset?` | `number` & `Minimum`\<``0``\> |
-
-#### Returns
-
-`Promise`\<[`ChatMLMessage`](../modules/api.md#chatmlmessage)[]\>
-
-#### Defined in
-
-[src/managers/session.ts:240](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L240)
-
-___
-
-### list
-
-▸ **list**(`options?`): `Promise`\<[`Session`](../modules/api.md#session)[]\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | `Object` |
-| `options.limit?` | `number` & `Type`\<``"uint32"``\> & `Minimum`\<``1``\> & `Maximum`\<``1000``\> |
-| `options.metadataFilter?` | `Object` |
-| `options.offset?` | `number` & `Minimum`\<``1``\> & `Maximum`\<``1000``\> |
-
-#### Returns
-
-`Promise`\<[`Session`](../modules/api.md#session)[]\>
-
-#### Defined in
-
-[src/managers/session.ts:75](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L75)
-
-___
-
-### suggestions
-
-▸ **suggestions**(`sessionId`, `options?`): `Promise`\<[`Suggestion`](../modules/api.md#suggestion)[]\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `sessionId` | `string` & `Format`\<``"uuid"``\> |
-| `options` | `Object` |
-| `options.limit?` | `number` & `Minimum`\<``1``\> & `Maximum`\<``1000``\> |
-| `options.offset?` | `number` & `Minimum`\<``0``\> |
-
-#### Returns
-
-`Promise`\<[`Suggestion`](../modules/api.md#suggestion)[]\>
-
-#### Defined in
-
-[src/managers/session.ts:217](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L217)
-
-___
-
-### update
-
-▸ **update**(`sessionId`, `options`, `overwrite?`): `Promise`\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-#### Parameters
-
-| Name | Type | Default value |
-| :------ | :------ | :------ |
-| `sessionId` | `string` & `Format`\<``"uuid"``\> | `undefined` |
-| `options` | `Object` | `undefined` |
-| `options.contextOverflow?` | ``"truncate"`` \| ``"adaptive"`` | `undefined` |
-| `options.metadata?` | `Record`\<`string`, `any`\> | `undefined` |
-| `options.situation` | `string` | `undefined` |
-| `options.tokenBudget?` | `number` & `Minimum`\<``1``\> | `undefined` |
-| `overwrite` | `boolean` | `false` |
-
-#### Returns
-
-`Promise`\<[`ResourceUpdatedResponse`](../modules/api.md#resourceupdatedresponse)\>
-
-#### Defined in
-
-[src/managers/session.ts:115](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L115)
diff --git a/docs/js-sdk-docs/classes/managers_tool.ToolsManager.md b/docs/js-sdk-docs/classes/managers_tool.ToolsManager.md
deleted file mode 100644
index ad37b7eed..000000000
--- a/docs/js-sdk-docs/classes/managers_tool.ToolsManager.md
+++ /dev/null
@@ -1,166 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / [managers/tool](../modules/managers_tool.md) / ToolsManager
-
-# Class: ToolsManager
-
-[managers/tool](../modules/managers_tool.md).ToolsManager
-
-BaseManager serves as the base class for all manager classes that interact with the Julep API.
-It provides common functionality needed for API interactions.
-
-## Hierarchy
-
-- [`BaseManager`](managers_base.BaseManager.md)
-
- ↳ **`ToolsManager`**
-
-## Table of contents
-
-### Constructors
-
-- [constructor](managers_tool.ToolsManager.md#constructor)
-
-### Properties
-
-- [apiClient](managers_tool.ToolsManager.md#apiclient)
-
-### Methods
-
-- [create](managers_tool.ToolsManager.md#create)
-- [delete](managers_tool.ToolsManager.md#delete)
-- [list](managers_tool.ToolsManager.md#list)
-- [update](managers_tool.ToolsManager.md#update)
-
-## Constructors
-
-### constructor
-
-• **new ToolsManager**(`apiClient`): [`ToolsManager`](managers_tool.ToolsManager.md)
-
-Constructs a new instance of BaseManager.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `apiClient` | [`JulepApiClient`](api_JulepApiClient.JulepApiClient.md) | The JulepApiClient instance used for API interactions. |
-
-#### Returns
-
-[`ToolsManager`](managers_tool.ToolsManager.md)
-
-#### Inherited from
-
-[BaseManager](managers_base.BaseManager.md).[constructor](managers_base.BaseManager.md#constructor)
-
-#### Defined in
-
-[src/managers/base.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/base.ts#L14)
-
-## Properties
-
-### apiClient
-
-• **apiClient**: [`JulepApiClient`](api_JulepApiClient.JulepApiClient.md)
-
-The JulepApiClient instance used for API interactions.
-
-#### Inherited from
-
-[BaseManager](managers_base.BaseManager.md).[apiClient](managers_base.BaseManager.md#apiclient)
-
-#### Defined in
-
-[src/managers/base.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/base.ts#L14)
-
-## Methods
-
-### create
-
-▸ **create**(`options`): `Promise`\<[`Tool`](../modules/api.md#tool)\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | `Object` |
-| `options.agentId` | `string` & `Format`\<``"uuid"``\> |
-| `options.tool` | `Object` |
-| `options.tool.function` | [`FunctionDef`](../modules/api.md#functiondef) |
-| `options.tool.type` | ``"function"`` \| ``"webhook"`` |
-
-#### Returns
-
-`Promise`\<[`Tool`](../modules/api.md#tool)\>
-
-#### Defined in
-
-[src/managers/tool.ts:44](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/tool.ts#L44)
-
-___
-
-### delete
-
-▸ **delete**(`options`): `Promise`\<`void`\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | `Object` |
-| `options.agentId` | `string` & `Format`\<``"uuid"``\> |
-| `options.toolId` | `string` & `Format`\<``"uuid"``\> |
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Defined in
-
-[src/managers/tool.ts:105](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/tool.ts#L105)
-
-___
-
-### list
-
-▸ **list**(`agentId`, `options?`): `Promise`\<[`Tool`](../modules/api.md#tool)[]\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `agentId` | `string` & `Format`\<``"uuid"``\> |
-| `options` | `Object` |
-| `options.limit?` | `number` & `Type`\<``"uint32"``\> & `Minimum`\<``1``\> & `Maximum`\<``1000``\> |
-| `options.offset?` | `number` & `Type`\<``"uint32"``\> & `Minimum`\<``0``\> |
-
-#### Returns
-
-`Promise`\<[`Tool`](../modules/api.md#tool)[]\>
-
-#### Defined in
-
-[src/managers/tool.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/tool.ts#L14)
-
-___
-
-### update
-
-▸ **update**(`options`, `overwrite?`): `Promise`\<[`Tool`](../modules/api.md#tool)\>
-
-#### Parameters
-
-| Name | Type | Default value |
-| :------ | :------ | :------ |
-| `options` | `Object` | `undefined` |
-| `options.agentId` | `string` & `Format`\<``"uuid"``\> | `undefined` |
-| `options.tool` | [`UpdateToolRequest`](../modules/api.md#updatetoolrequest) | `undefined` |
-| `options.toolId` | `string` & `Format`\<``"uuid"``\> | `undefined` |
-| `overwrite` | `boolean` | `false` |
-
-#### Returns
-
-`Promise`\<[`Tool`](../modules/api.md#tool)\>
-
-#### Defined in
-
-[src/managers/tool.ts:71](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/tool.ts#L71)
diff --git a/docs/js-sdk-docs/classes/managers_user.UsersManager.md b/docs/js-sdk-docs/classes/managers_user.UsersManager.md
deleted file mode 100644
index e88f66893..000000000
--- a/docs/js-sdk-docs/classes/managers_user.UsersManager.md
+++ /dev/null
@@ -1,197 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / [managers/user](../modules/managers_user.md) / UsersManager
-
-# Class: UsersManager
-
-[managers/user](../modules/managers_user.md).UsersManager
-
-BaseManager serves as the base class for all manager classes that interact with the Julep API.
-It provides common functionality needed for API interactions.
-
-## Hierarchy
-
-- [`BaseManager`](managers_base.BaseManager.md)
-
- ↳ **`UsersManager`**
-
-## Table of contents
-
-### Constructors
-
-- [constructor](managers_user.UsersManager.md#constructor)
-
-### Properties
-
-- [apiClient](managers_user.UsersManager.md#apiclient)
-
-### Methods
-
-- [create](managers_user.UsersManager.md#create)
-- [delete](managers_user.UsersManager.md#delete)
-- [get](managers_user.UsersManager.md#get)
-- [list](managers_user.UsersManager.md#list)
-- [update](managers_user.UsersManager.md#update)
-
-## Constructors
-
-### constructor
-
-• **new UsersManager**(`apiClient`): [`UsersManager`](managers_user.UsersManager.md)
-
-Constructs a new instance of BaseManager.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `apiClient` | [`JulepApiClient`](api_JulepApiClient.JulepApiClient.md) | The JulepApiClient instance used for API interactions. |
-
-#### Returns
-
-[`UsersManager`](managers_user.UsersManager.md)
-
-#### Inherited from
-
-[BaseManager](managers_base.BaseManager.md).[constructor](managers_base.BaseManager.md#constructor)
-
-#### Defined in
-
-[src/managers/base.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/base.ts#L14)
-
-## Properties
-
-### apiClient
-
-• **apiClient**: [`JulepApiClient`](api_JulepApiClient.JulepApiClient.md)
-
-The JulepApiClient instance used for API interactions.
-
-#### Inherited from
-
-[BaseManager](managers_base.BaseManager.md).[apiClient](managers_base.BaseManager.md#apiclient)
-
-#### Defined in
-
-[src/managers/base.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/base.ts#L14)
-
-## Methods
-
-### create
-
-▸ **create**(`options?`): `Promise`\<[`User`](../modules/api.md#user)\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | [`CreateUserRequest`](../modules/api.md#createuserrequest) |
-
-#### Returns
-
-`Promise`\<[`User`](../modules/api.md#user)\>
-
-#### Defined in
-
-[src/managers/user.ts:22](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/user.ts#L22)
-
-___
-
-### delete
-
-▸ **delete**(`userId`): `Promise`\<`void`\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `userId` | `string` & `Format`\<``"uuid"``\> |
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Defined in
-
-[src/managers/user.ts:70](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/user.ts#L70)
-
-___
-
-### get
-
-▸ **get**(`userId`): `Promise`\<[`User`](../modules/api.md#user)\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `userId` | `string` & `Format`\<``"uuid"``\> |
-
-#### Returns
-
-`Promise`\<[`User`](../modules/api.md#user)\>
-
-#### Defined in
-
-[src/managers/user.ts:14](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/user.ts#L14)
-
-___
-
-### list
-
-▸ **list**(`options?`): `Promise`\<[`User`](../modules/api.md#user)[]\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | `Object` |
-| `options.limit?` | `number` & `Type`\<``"uint32"``\> & `Minimum`\<``1``\> & `Maximum`\<``1000``\> |
-| `options.metadataFilter?` | `Object` |
-| `options.offset?` | `number` & `Type`\<``"uint32"``\> & `Minimum`\<``0``\> |
-
-#### Returns
-
-`Promise`\<[`User`](../modules/api.md#user)[]\>
-
-#### Defined in
-
-[src/managers/user.ts:37](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/user.ts#L37)
-
-___
-
-### update
-
-▸ **update**(`userId`, `request`, `overwrite`): `Promise`\<[`User`](../modules/api.md#user)\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `userId` | `string` |
-| `request` | [`UpdateUserRequest`](../modules/api.md#updateuserrequest) |
-| `overwrite` | ``true`` |
-
-#### Returns
-
-`Promise`\<[`User`](../modules/api.md#user)\>
-
-#### Defined in
-
-[src/managers/user.ts:76](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/user.ts#L76)
-
-▸ **update**(`userId`, `request`, `overwrite?`): `Promise`\<[`User`](../modules/api.md#user)\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `userId` | `string` |
-| `request` | [`PatchUserRequest`](../modules/api.md#patchuserrequest) |
-| `overwrite?` | ``false`` |
-
-#### Returns
-
-`Promise`\<[`User`](../modules/api.md#user)\>
-
-#### Defined in
-
-[src/managers/user.ts:82](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/user.ts#L82)
diff --git a/docs/js-sdk-docs/classes/utils_requestConstructor.CustomHttpRequest.md b/docs/js-sdk-docs/classes/utils_requestConstructor.CustomHttpRequest.md
deleted file mode 100644
index 164a230bc..000000000
--- a/docs/js-sdk-docs/classes/utils_requestConstructor.CustomHttpRequest.md
+++ /dev/null
@@ -1,93 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / [utils/requestConstructor](../modules/utils_requestConstructor.md) / CustomHttpRequest
-
-# Class: CustomHttpRequest
-
-[utils/requestConstructor](../modules/utils_requestConstructor.md).CustomHttpRequest
-
-## Hierarchy
-
-- `AxiosHttpRequest`
-
- ↳ **`CustomHttpRequest`**
-
-## Table of contents
-
-### Constructors
-
-- [constructor](utils_requestConstructor.CustomHttpRequest.md#constructor)
-
-### Properties
-
-- [config](utils_requestConstructor.CustomHttpRequest.md#config)
-
-### Methods
-
-- [request](utils_requestConstructor.CustomHttpRequest.md#request)
-
-## Constructors
-
-### constructor
-
-• **new CustomHttpRequest**(`config`): [`CustomHttpRequest`](utils_requestConstructor.CustomHttpRequest.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `config` | [`OpenAPIConfig`](../modules/api.md#openapiconfig) |
-
-#### Returns
-
-[`CustomHttpRequest`](utils_requestConstructor.CustomHttpRequest.md)
-
-#### Overrides
-
-AxiosHttpRequest.constructor
-
-#### Defined in
-
-[src/utils/requestConstructor.ts:15](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/utils/requestConstructor.ts#L15)
-
-## Properties
-
-### config
-
-• `Readonly` **config**: [`OpenAPIConfig`](../modules/api.md#openapiconfig)
-
-#### Inherited from
-
-AxiosHttpRequest.config
-
-#### Defined in
-
-[src/api/core/BaseHttpRequest.ts:10](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/BaseHttpRequest.ts#L10)
-
-## Methods
-
-### request
-
-▸ **request**\<`T`\>(`options`): [`CancelablePromise`](api.CancelablePromise.md)\<`T`\>
-
-#### Type parameters
-
-| Name |
-| :------ |
-| `T` |
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | `ApiRequestOptions` |
-
-#### Returns
-
-[`CancelablePromise`](api.CancelablePromise.md)\<`T`\>
-
-#### Overrides
-
-AxiosHttpRequest.request
-
-#### Defined in
-
-[src/utils/requestConstructor.ts:21](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/utils/requestConstructor.ts#L21)
diff --git a/docs/js-sdk-docs/interfaces/managers_session.CreateSessionPayload.md b/docs/js-sdk-docs/interfaces/managers_session.CreateSessionPayload.md
deleted file mode 100644
index 548bb5b2e..000000000
--- a/docs/js-sdk-docs/interfaces/managers_session.CreateSessionPayload.md
+++ /dev/null
@@ -1,87 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / [managers/session](../modules/managers_session.md) / CreateSessionPayload
-
-# Interface: CreateSessionPayload
-
-[managers/session](../modules/managers_session.md).CreateSessionPayload
-
-## Table of contents
-
-### Properties
-
-- [agentId](managers_session.CreateSessionPayload.md#agentid)
-- [contextOverflow](managers_session.CreateSessionPayload.md#contextoverflow)
-- [metadata](managers_session.CreateSessionPayload.md#metadata)
-- [renderTemplates](managers_session.CreateSessionPayload.md#rendertemplates)
-- [situation](managers_session.CreateSessionPayload.md#situation)
-- [tokenBudget](managers_session.CreateSessionPayload.md#tokenbudget)
-- [userId](managers_session.CreateSessionPayload.md#userid)
-
-## Properties
-
-### agentId
-
-• **agentId**: `string`
-
-#### Defined in
-
-[src/managers/session.ts:17](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L17)
-
-___
-
-### contextOverflow
-
-• `Optional` **contextOverflow**: ``"truncate"`` \| ``"adaptive"``
-
-#### Defined in
-
-[src/managers/session.ts:24](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L24)
-
-___
-
-### metadata
-
-• `Optional` **metadata**: `Record`\<`string`, `any`\>
-
-#### Defined in
-
-[src/managers/session.ts:19](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L19)
-
-___
-
-### renderTemplates
-
-• `Optional` **renderTemplates**: `boolean`
-
-#### Defined in
-
-[src/managers/session.ts:20](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L20)
-
-___
-
-### situation
-
-• `Optional` **situation**: `string`
-
-#### Defined in
-
-[src/managers/session.ts:18](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L18)
-
-___
-
-### tokenBudget
-
-• `Optional` **tokenBudget**: `number`
-
-#### Defined in
-
-[src/managers/session.ts:21](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L21)
-
-___
-
-### userId
-
-• `Optional` **userId**: `string`
-
-#### Defined in
-
-[src/managers/session.ts:16](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/managers/session.ts#L16)
diff --git a/docs/js-sdk-docs/modules.md b/docs/js-sdk-docs/modules.md
deleted file mode 100644
index ec445aa16..000000000
--- a/docs/js-sdk-docs/modules.md
+++ /dev/null
@@ -1,22 +0,0 @@
-[@julep/sdk](README.md) / Modules
-
-# @julep/sdk
-
-## Table of contents
-
-### Modules
-
-- [api](modules/api.md)
-- [api/JulepApiClient](modules/api_JulepApiClient.md)
-- [managers/agent](modules/managers_agent.md)
-- [managers/base](modules/managers_base.md)
-- [managers/doc](modules/managers_doc.md)
-- [managers/memory](modules/managers_memory.md)
-- [managers/session](modules/managers_session.md)
-- [managers/tool](modules/managers_tool.md)
-- [managers/user](modules/managers_user.md)
-- [utils/invariant](modules/utils_invariant.md)
-- [utils/isValidUuid4](modules/utils_isValidUuid4.md)
-- [utils/openaiPatch](modules/utils_openaiPatch.md)
-- [utils/requestConstructor](modules/utils_requestConstructor.md)
-- [utils/xor](modules/utils_xor.md)
diff --git a/docs/js-sdk-docs/modules/api.md b/docs/js-sdk-docs/modules/api.md
deleted file mode 100644
index bc4a9e82b..000000000
--- a/docs/js-sdk-docs/modules/api.md
+++ /dev/null
@@ -1,2623 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / api
-
-# Module: api
-
-## Table of contents
-
-### References
-
-- [JulepApiClient](api.md#julepapiclient)
-
-### Classes
-
-- [ApiError](../classes/api.ApiError.md)
-- [BaseHttpRequest](../classes/api.BaseHttpRequest.md)
-- [CancelError](../classes/api.CancelError.md)
-- [CancelablePromise](../classes/api.CancelablePromise.md)
-- [DefaultService](../classes/api.DefaultService.md)
-
-### Type Aliases
-
-- [Agent](api.md#agent)
-- [AgentDefaultSettings](api.md#agentdefaultsettings)
-- [ChatInput](api.md#chatinput)
-- [ChatInputData](api.md#chatinputdata)
-- [ChatMLImageContentPart](api.md#chatmlimagecontentpart)
-- [ChatMLMessage](api.md#chatmlmessage)
-- [ChatMLTextContentPart](api.md#chatmltextcontentpart)
-- [ChatResponse](api.md#chatresponse)
-- [ChatSettings](api.md#chatsettings)
-- [CompletionUsage](api.md#completionusage)
-- [CreateAgentRequest](api.md#createagentrequest)
-- [CreateDoc](api.md#createdoc)
-- [CreateSessionRequest](api.md#createsessionrequest)
-- [CreateToolRequest](api.md#createtoolrequest)
-- [CreateUserRequest](api.md#createuserrequest)
-- [Doc](api.md#doc)
-- [DocIds](api.md#docids)
-- [FunctionCallOption](api.md#functioncalloption)
-- [FunctionDef](api.md#functiondef)
-- [FunctionParameters](api.md#functionparameters)
-- [InputChatMLMessage](api.md#inputchatmlmessage)
-- [JobStatus](api.md#jobstatus)
-- [Memory](api.md#memory)
-- [MemoryAccessOptions](api.md#memoryaccessoptions)
-- [NamedToolChoice](api.md#namedtoolchoice)
-- [OpenAPIConfig](api.md#openapiconfig)
-- [PartialFunctionDef](api.md#partialfunctiondef)
-- [PatchAgentRequest](api.md#patchagentrequest)
-- [PatchSessionRequest](api.md#patchsessionrequest)
-- [PatchToolRequest](api.md#patchtoolrequest)
-- [PatchUserRequest](api.md#patchuserrequest)
-- [ResourceCreatedResponse](api.md#resourcecreatedresponse)
-- [ResourceDeletedResponse](api.md#resourcedeletedresponse)
-- [ResourceUpdatedResponse](api.md#resourceupdatedresponse)
-- [Session](api.md#session)
-- [Suggestion](api.md#suggestion)
-- [Tool](api.md#tool)
-- [ToolChoiceOption](api.md#toolchoiceoption)
-- [UpdateAgentRequest](api.md#updateagentrequest)
-- [UpdateSessionRequest](api.md#updatesessionrequest)
-- [UpdateToolRequest](api.md#updatetoolrequest)
-- [UpdateUserRequest](api.md#updateuserrequest)
-- [User](api.md#user)
-- [agent\_id](api.md#agent_id)
-- [doc\_id](api.md#doc_id)
-- [job\_id](api.md#job_id)
-- [memory\_id](api.md#memory_id)
-- [message\_id](api.md#message_id)
-- [session\_id](api.md#session_id)
-- [tool\_id](api.md#tool_id)
-- [user\_id](api.md#user_id)
-
-### Variables
-
-- [$Agent](api.md#$agent)
-- [$AgentDefaultSettings](api.md#$agentdefaultsettings)
-- [$ChatInput](api.md#$chatinput)
-- [$ChatInputData](api.md#$chatinputdata)
-- [$ChatMLImageContentPart](api.md#$chatmlimagecontentpart)
-- [$ChatMLMessage](api.md#$chatmlmessage)
-- [$ChatMLTextContentPart](api.md#$chatmltextcontentpart)
-- [$ChatResponse](api.md#$chatresponse)
-- [$ChatSettings](api.md#$chatsettings)
-- [$CompletionUsage](api.md#$completionusage)
-- [$CreateAgentRequest](api.md#$createagentrequest)
-- [$CreateDoc](api.md#$createdoc)
-- [$CreateSessionRequest](api.md#$createsessionrequest)
-- [$CreateToolRequest](api.md#$createtoolrequest)
-- [$CreateUserRequest](api.md#$createuserrequest)
-- [$Doc](api.md#$doc)
-- [$DocIds](api.md#$docids)
-- [$FunctionCallOption](api.md#$functioncalloption)
-- [$FunctionDef](api.md#$functiondef)
-- [$FunctionParameters](api.md#$functionparameters)
-- [$InputChatMLMessage](api.md#$inputchatmlmessage)
-- [$JobStatus](api.md#$jobstatus)
-- [$Memory](api.md#$memory)
-- [$MemoryAccessOptions](api.md#$memoryaccessoptions)
-- [$NamedToolChoice](api.md#$namedtoolchoice)
-- [$PartialFunctionDef](api.md#$partialfunctiondef)
-- [$PatchAgentRequest](api.md#$patchagentrequest)
-- [$PatchSessionRequest](api.md#$patchsessionrequest)
-- [$PatchToolRequest](api.md#$patchtoolrequest)
-- [$PatchUserRequest](api.md#$patchuserrequest)
-- [$ResourceCreatedResponse](api.md#$resourcecreatedresponse)
-- [$ResourceDeletedResponse](api.md#$resourcedeletedresponse)
-- [$ResourceUpdatedResponse](api.md#$resourceupdatedresponse)
-- [$Session](api.md#$session)
-- [$Suggestion](api.md#$suggestion)
-- [$Tool](api.md#$tool)
-- [$ToolChoiceOption](api.md#$toolchoiceoption)
-- [$UpdateAgentRequest](api.md#$updateagentrequest)
-- [$UpdateSessionRequest](api.md#$updatesessionrequest)
-- [$UpdateToolRequest](api.md#$updatetoolrequest)
-- [$UpdateUserRequest](api.md#$updateuserrequest)
-- [$User](api.md#$user)
-- [$agent\_id](api.md#$agent_id)
-- [$doc\_id](api.md#$doc_id)
-- [$job\_id](api.md#$job_id)
-- [$memory\_id](api.md#$memory_id)
-- [$message\_id](api.md#$message_id)
-- [$session\_id](api.md#$session_id)
-- [$tool\_id](api.md#$tool_id)
-- [$user\_id](api.md#$user_id)
-- [OpenAPI](api.md#openapi)
-
-## References
-
-### JulepApiClient
-
-Re-exports [JulepApiClient](../classes/api_JulepApiClient.JulepApiClient.md)
-
-## Type Aliases
-
-### Agent
-
-Ƭ **Agent**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `about?` | `string` | About the agent |
-| `created_at?` | `string` | Agent created at (RFC-3339 format) |
-| `default_settings?` | [`AgentDefaultSettings`](api.md#agentdefaultsettings) | Default settings for all sessions created by this agent |
-| `id` | `string` | Agent id (UUID) |
-| `instructions?` | `string` \| `string`[] | Instructions for the agent |
-| `metadata?` | `any` | Optional metadata |
-| `model` | `string` | The model to use with this agent |
-| `name` | `string` | Name of the agent |
-| `updated_at?` | `string` | Agent updated at (RFC-3339 format) |
-
-#### Defined in
-
-[src/api/models/Agent.ts:6](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/Agent.ts#L6)
-
-___
-
-### AgentDefaultSettings
-
-Ƭ **AgentDefaultSettings**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `frequency_penalty?` | `number` \| ``null`` | (OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. |
-| `length_penalty?` | `number` \| ``null`` | (Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated. |
-| `min_p?` | `number` | Minimum probability compared to leading token to be considered |
-| `presence_penalty?` | `number` \| ``null`` | (OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. |
-| `preset?` | ``"problem_solving"`` \| ``"conversational"`` \| ``"fun"`` \| ``"prose"`` \| ``"creative"`` \| ``"business"`` \| ``"deterministic"`` \| ``"code"`` \| ``"multilingual"`` | Generation preset name (one of: problem_solving, conversational, fun, prose, creative, business, deterministic, code, multilingual) |
-| `repetition_penalty?` | `number` \| ``null`` | (Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. |
-| `temperature?` | `number` \| ``null`` | What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. |
-| `top_p?` | `number` \| ``null`` | Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. |
-
-#### Defined in
-
-[src/api/models/AgentDefaultSettings.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/AgentDefaultSettings.ts#L5)
-
-___
-
-### ChatInput
-
-Ƭ **ChatInput**: [`ChatInputData`](api.md#chatinputdata) & [`ChatSettings`](api.md#chatsettings) & [`MemoryAccessOptions`](api.md#memoryaccessoptions)
-
-#### Defined in
-
-[src/api/models/ChatInput.ts:8](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/ChatInput.ts#L8)
-
-___
-
-### ChatInputData
-
-Ƭ **ChatInputData**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `messages` | [`InputChatMLMessage`](api.md#inputchatmlmessage)[] | A list of new input messages comprising the conversation so far. |
-| `tool_choice?` | [`ToolChoiceOption`](api.md#toolchoiceoption) \| [`NamedToolChoice`](api.md#namedtoolchoice) \| ``null`` | Can be one of existing tools given to the agent earlier or the ones included in the request |
-| `tools?` | [`Tool`](api.md#tool)[] \| ``null`` | (Advanced) List of tools that are provided in addition to agent's default set of tools. Functions of same name in agent set are overridden |
-
-#### Defined in
-
-[src/api/models/ChatInputData.ts:9](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/ChatInputData.ts#L9)
-
-___
-
-### ChatMLImageContentPart
-
-Ƭ **ChatMLImageContentPart**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `image_url` | \{ `detail?`: ``"low"`` \| ``"high"`` \| ``"auto"`` ; `url`: `string` } | Image content part, can be a URL or a base64-encoded image |
-| `image_url.detail?` | ``"low"`` \| ``"high"`` \| ``"auto"`` | image detail to feed into the model can be low \| high \| auto |
-| `image_url.url` | `string` | URL or base64 data url (e.g. `data:image/jpeg;base64,`) |
-| `type` | ``"image_url"`` | Fixed to 'image_url' |
-
-#### Defined in
-
-[src/api/models/ChatMLImageContentPart.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/ChatMLImageContentPart.ts#L5)
-
-___
-
-### ChatMLMessage
-
-Ƭ **ChatMLMessage**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `content` | `string` | ChatML content |
-| `created_at` | `string` | Message created at (RFC-3339 format) |
-| `id` | `string` | Message ID |
-| `name?` | `string` | ChatML name |
-| `role` | ``"user"`` \| ``"assistant"`` \| ``"system"`` \| ``"function_call"`` \| ``"function"`` | ChatML role (system\|assistant\|user\|function_call\|function) |
-
-#### Defined in
-
-[src/api/models/ChatMLMessage.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/ChatMLMessage.ts#L5)
-
-___
-
-### ChatMLTextContentPart
-
-Ƭ **ChatMLTextContentPart**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `text` | `string` | Text content part |
-| `type` | ``"text"`` | Fixed to 'text' |
-
-#### Defined in
-
-[src/api/models/ChatMLTextContentPart.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/ChatMLTextContentPart.ts#L5)
-
-___
-
-### ChatResponse
-
-Ƭ **ChatResponse**: `Object`
-
-Represents a chat completion response returned by model, based on the provided input.
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `doc_ids` | [`DocIds`](api.md#docids) | - |
-| `finish_reason` | ``"stop"`` \| ``"length"`` \| ``"tool_calls"`` \| ``"content_filter"`` \| ``"function_call"`` | The reason the model stopped generating tokens. This will be `stop` if the model hit a natural stop point or a provided stop sequence, `length` if the maximum number of tokens specified in the request was reached, `content_filter` if content was omitted due to a flag from our content filters, `tool_calls` if the model called a tool, or `function_call` (deprecated) if the model called a function. |
-| `id` | `string` | A unique identifier for the chat completion. |
-| `jobs?` | `string`[] | IDs (if any) of jobs created as part of this request |
-| `response` | [`ChatMLMessage`](api.md#chatmlmessage)[][] | A list of chat completion messages produced as a response. |
-| `usage` | [`CompletionUsage`](api.md#completionusage) | - |
-
-#### Defined in
-
-[src/api/models/ChatResponse.ts:11](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/ChatResponse.ts#L11)
-
-___
-
-### ChatSettings
-
-Ƭ **ChatSettings**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `frequency_penalty?` | `number` \| ``null`` | (OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. |
-| `length_penalty?` | `number` \| ``null`` | (Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated. |
-| `logit_bias?` | `Record`\<`string`, `number`\> \| ``null`` | Modify the likelihood of specified tokens appearing in the completion. Accepts a JSON object that maps tokens (specified by their token ID in the tokenizer) to an associated bias value from -100 to 100. Mathematically, the bias is added to the logits generated by the model prior to sampling. The exact effect will vary per model, but values between -1 and 1 should decrease or increase likelihood of selection; values like -100 or 100 should result in a ban or exclusive selection of the relevant token. |
-| `max_tokens?` | `number` \| ``null`` | The maximum number of tokens to generate in the chat completion. The total length of input tokens and generated tokens is limited by the model's context length. |
-| `min_p?` | `number` | Minimum probability compared to leading token to be considered |
-| `presence_penalty?` | `number` \| ``null`` | (OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. |
-| `preset?` | ``"problem_solving"`` \| ``"conversational"`` \| ``"fun"`` \| ``"prose"`` \| ``"creative"`` \| ``"business"`` \| ``"deterministic"`` \| ``"code"`` \| ``"multilingual"`` | Generation preset name (problem_solving\|conversational\|fun\|prose\|creative\|business\|deterministic\|code\|multilingual) |
-| `repetition_penalty?` | `number` \| ``null`` | (Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. |
-| `response_format?` | \{ `pattern?`: `string` ; `schema?`: `any` ; `type?`: ``"text"`` \| ``"json_object"`` \| ``"regex"`` } | An object specifying the format that the model must output. Setting to `{ "type": "json_object" }` enables JSON mode, which guarantees the message the model generates is valid JSON. **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length. |
-| `response_format.pattern?` | `string` | Regular expression pattern to use if `type` is `"regex"` |
-| `response_format.schema?` | `any` | JSON Schema to use if `type` is `"json_object"` |
-| `response_format.type?` | ``"text"`` \| ``"json_object"`` \| ``"regex"`` | Must be one of `"text"`, `"regex"` or `"json_object"`. |
-| `seed?` | `number` \| ``null`` | This feature is in Beta. If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same `seed` and parameters should return the same result. Determinism is not guaranteed, and you should refer to the `system_fingerprint` response parameter to monitor changes in the backend. |
-| `stop?` | `string` \| ``null`` \| `string`[] | Up to 4 sequences where the API will stop generating further tokens. |
-| `stream?` | `boolean` \| ``null`` | If set, partial message deltas will be sent, like in ChatGPT. Tokens will be sent as data-only [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format) as they become available, with the stream terminated by a `data: [DONE]` message. [Example Python code](https://cookbook.openai.com/examples/how_to_stream_completions). |
-| `temperature?` | `number` \| ``null`` | What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. |
-| `top_p?` | `number` \| ``null`` | Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. |
-
-#### Defined in
-
-[src/api/models/ChatSettings.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/ChatSettings.ts#L5)
-
-___
-
-### CompletionUsage
-
-Ƭ **CompletionUsage**: `Object`
-
-Usage statistics for the completion request.
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `completion_tokens` | `number` | Number of tokens in the generated completion. |
-| `prompt_tokens` | `number` | Number of tokens in the prompt. |
-| `total_tokens` | `number` | Total number of tokens used in the request (prompt + completion). |
-
-#### Defined in
-
-[src/api/models/CompletionUsage.ts:8](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/CompletionUsage.ts#L8)
-
-___
-
-### CreateAgentRequest
-
-Ƭ **CreateAgentRequest**: `Object`
-
-A valid request payload for creating an agent
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `about?` | `string` | About the agent |
-| `default_settings?` | [`AgentDefaultSettings`](api.md#agentdefaultsettings) | Default model settings to start every session with |
-| `docs?` | [`CreateDoc`](api.md#createdoc)[] | List of docs about agent |
-| `instructions?` | `string` \| `string`[] | Instructions for the agent |
-| `metadata?` | `any` | (Optional) metadata |
-| `model?` | `string` | Name of the model that the agent is supposed to use |
-| `name` | `string` | Name of the agent |
-| `tools?` | [`CreateToolRequest`](api.md#createtoolrequest)[] | A list of tools the model may call. Currently, only `function`s are supported as a tool. Use this to provide a list of functions the model may generate JSON inputs for. |
-
-#### Defined in
-
-[src/api/models/CreateAgentRequest.ts:11](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/CreateAgentRequest.ts#L11)
-
-___
-
-### CreateDoc
-
-Ƭ **CreateDoc**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `content` | `string`[] \| `string` | Information content |
-| `metadata?` | `any` | Optional metadata |
-| `title` | `string` | Title describing what this bit of information contains |
-
-#### Defined in
-
-[src/api/models/CreateDoc.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/CreateDoc.ts#L5)
-
-___
-
-### CreateSessionRequest
-
-Ƭ **CreateSessionRequest**: `Object`
-
-A valid request payload for creating a session
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `agent_id` | `string` | Agent ID of agent to associate with this session |
-| `context_overflow?` | `string` | Action to start on context window overflow |
-| `metadata?` | `any` | Optional metadata |
-| `render_templates?` | `boolean` | Render system and assistant message content as jinja templates |
-| `situation?` | `string` | A specific situation that sets the background for this session |
-| `token_budget?` | `number` | Threshold value for the adaptive context functionality |
-| `user_id?` | `string` | (Optional) User ID of user to associate with this session |
-
-#### Defined in
-
-[src/api/models/CreateSessionRequest.ts:8](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/CreateSessionRequest.ts#L8)
-
-___
-
-### CreateToolRequest
-
-Ƭ **CreateToolRequest**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `function` | [`FunctionDef`](api.md#functiondef) | Function definition and parameters |
-| `type` | ``"function"`` \| ``"webhook"`` | Whether this tool is a `function` or a `webhook` (Only `function` tool supported right now) |
-
-#### Defined in
-
-[src/api/models/CreateToolRequest.ts:6](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/CreateToolRequest.ts#L6)
-
-___
-
-### CreateUserRequest
-
-Ƭ **CreateUserRequest**: `Object`
-
-A valid request payload for creating a user
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `about?` | `string` | About the user |
-| `docs?` | [`CreateDoc`](api.md#createdoc)[] | List of docs about user |
-| `metadata?` | `any` | (Optional) metadata |
-| `name?` | `string` | Name of the user |
-
-#### Defined in
-
-[src/api/models/CreateUserRequest.ts:9](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/CreateUserRequest.ts#L9)
-
-___
-
-### Doc
-
-Ƭ **Doc**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `content` | `string`[] \| `string` | Information content |
-| `created_at` | `string` | Doc created at |
-| `id` | `string` | ID of doc |
-| `metadata?` | `any` | optional metadata |
-| `title` | `string` | Title describing what this bit of information contains |
-
-#### Defined in
-
-[src/api/models/Doc.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/Doc.ts#L5)
-
-___
-
-### DocIds
-
-Ƭ **DocIds**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `agent_doc_ids` | `string`[] |
-| `user_doc_ids` | `string`[] |
-
-#### Defined in
-
-[src/api/models/DocIds.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/DocIds.ts#L5)
-
-___
-
-### FunctionCallOption
-
-Ƭ **FunctionCallOption**: `Object`
-
-Specifying a particular function via `{"name": "my_function"}` forces the model to call that function.
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `name` | `string` | The name of the function to call. |
-
-#### Defined in
-
-[src/api/models/FunctionCallOption.ts:9](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/FunctionCallOption.ts#L9)
-
-___
-
-### FunctionDef
-
-Ƭ **FunctionDef**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `description?` | `string` | A description of what the function does, used by the model to choose when and how to call the function. |
-| `name` | `string` | The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64. |
-| `parameters` | [`FunctionParameters`](api.md#functionparameters) | Parameters accepeted by this function |
-
-#### Defined in
-
-[src/api/models/FunctionDef.ts:6](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/FunctionDef.ts#L6)
-
-___
-
-### FunctionParameters
-
-Ƭ **FunctionParameters**: `Record`\<`string`, `any`\>
-
-The parameters the functions accepts, described as a JSON Schema object.
-
-#### Defined in
-
-[src/api/models/FunctionParameters.ts:8](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/FunctionParameters.ts#L8)
-
-___
-
-### InputChatMLMessage
-
-Ƭ **InputChatMLMessage**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `content` | `string` | ChatML content |
-| `continue?` | `boolean` | Whether to continue this message or return a new one |
-| `name?` | `string` | ChatML name |
-| `role` | ``"user"`` \| ``"assistant"`` \| ``"system"`` \| ``"function_call"`` \| ``"function"`` \| ``"auto"`` | ChatML role (system\|assistant\|user\|function_call\|function\|auto) |
-
-#### Defined in
-
-[src/api/models/InputChatMLMessage.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/InputChatMLMessage.ts#L5)
-
-___
-
-### JobStatus
-
-Ƭ **JobStatus**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `created_at` | `string` | Job created at (RFC-3339 format) |
-| `has_progress?` | `boolean` | Whether this Job supports progress updates |
-| `id` | `string` | Job id (UUID) |
-| `name` | `string` | Name of the job |
-| `progress?` | `number` | Progress percentage |
-| `reason?` | `string` | Reason for current state |
-| `state` | ``"pending"`` \| ``"in_progress"`` \| ``"retrying"`` \| ``"succeeded"`` \| ``"aborted"`` \| ``"failed"`` \| ``"unknown"`` | Current state (one of: pending, in_progress, retrying, succeeded, aborted, failed) |
-| `updated_at?` | `string` | Job updated at (RFC-3339 format) |
-
-#### Defined in
-
-[src/api/models/JobStatus.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/JobStatus.ts#L5)
-
-___
-
-### Memory
-
-Ƭ **Memory**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `agent_id` | `string` | ID of the agent |
-| `content` | `string` | Content of the memory |
-| `created_at` | `string` | Memory created at (RFC-3339 format) |
-| `entities` | `any`[] | List of entities mentioned in the memory |
-| `id` | `string` | Memory id (UUID) |
-| `last_accessed_at?` | `string` | Memory last accessed at (RFC-3339 format) |
-| `sentiment?` | `number` | Sentiment (valence) of the memory on a scale of -1 to 1 |
-| `timestamp?` | `string` | Memory happened at (RFC-3339 format) |
-| `user_id` | `string` | ID of the user |
-
-#### Defined in
-
-[src/api/models/Memory.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/Memory.ts#L5)
-
-___
-
-### MemoryAccessOptions
-
-Ƭ **MemoryAccessOptions**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `recall?` | `boolean` | Whether previous memories should be recalled or not |
-| `record?` | `boolean` | Whether this interaction should be recorded in history or not |
-| `remember?` | `boolean` | Whether this interaction should form memories or not |
-
-#### Defined in
-
-[src/api/models/MemoryAccessOptions.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/MemoryAccessOptions.ts#L5)
-
-___
-
-### NamedToolChoice
-
-Ƭ **NamedToolChoice**: `Object`
-
-Specifies a tool the model should use. Use to force the model to call a specific function.
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `function` | \{ `name`: `string` } | - |
-| `function.name` | `string` | The name of the function to call. |
-| `type` | ``"function"`` | The type of the tool. Currently, only `function` is supported. |
-
-#### Defined in
-
-[src/api/models/NamedToolChoice.ts:8](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/NamedToolChoice.ts#L8)
-
-___
-
-### OpenAPIConfig
-
-Ƭ **OpenAPIConfig**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `BASE` | `string` |
-| `CREDENTIALS` | ``"include"`` \| ``"omit"`` \| ``"same-origin"`` |
-| `ENCODE_PATH?` | (`path`: `string`) => `string` |
-| `HEADERS?` | `Headers` \| `Resolver`\<`Headers`\> |
-| `PASSWORD?` | `string` \| `Resolver`\<`string`\> |
-| `TOKEN?` | `string` \| `Resolver`\<`string`\> |
-| `USERNAME?` | `string` \| `Resolver`\<`string`\> |
-| `VERSION` | `string` |
-| `WITH_CREDENTIALS` | `boolean` |
-
-#### Defined in
-
-[src/api/core/OpenAPI.ts:10](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/OpenAPI.ts#L10)
-
-___
-
-### PartialFunctionDef
-
-Ƭ **PartialFunctionDef**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `description?` | `string` | A description of what the function does, used by the model to choose when and how to call the function. |
-| `name?` | `string` | The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64. |
-| `parameters?` | [`FunctionParameters`](api.md#functionparameters) | Parameters accepeted by this function |
-
-#### Defined in
-
-[src/api/models/PartialFunctionDef.ts:6](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/PartialFunctionDef.ts#L6)
-
-___
-
-### PatchAgentRequest
-
-Ƭ **PatchAgentRequest**: `Object`
-
-A request for patching an agent
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `about?` | `string` | About the agent |
-| `default_settings?` | [`AgentDefaultSettings`](api.md#agentdefaultsettings) | Default model settings to start every session with |
-| `instructions?` | `string` \| `string`[] | Instructions for the agent |
-| `metadata?` | `any` | Optional metadata |
-| `model?` | `string` | Name of the model that the agent is supposed to use |
-| `name?` | `string` | Name of the agent |
-
-#### Defined in
-
-[src/api/models/PatchAgentRequest.ts:9](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/PatchAgentRequest.ts#L9)
-
-___
-
-### PatchSessionRequest
-
-Ƭ **PatchSessionRequest**: `Object`
-
-A request for patching a session
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `context_overflow?` | `string` | Action to start on context window overflow |
-| `metadata?` | `any` | Optional metadata |
-| `situation?` | `string` | Updated situation for this session |
-| `token_budget?` | `number` | Threshold value for the adaptive context functionality |
-
-#### Defined in
-
-[src/api/models/PatchSessionRequest.ts:8](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/PatchSessionRequest.ts#L8)
-
-___
-
-### PatchToolRequest
-
-Ƭ **PatchToolRequest**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `function` | [`PartialFunctionDef`](api.md#partialfunctiondef) | Function definition and parameters |
-
-#### Defined in
-
-[src/api/models/PatchToolRequest.ts:6](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/PatchToolRequest.ts#L6)
-
-___
-
-### PatchUserRequest
-
-Ƭ **PatchUserRequest**: `Object`
-
-A request for patching a user
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `about?` | `string` | About the user |
-| `metadata?` | `any` | Optional metadata |
-| `name?` | `string` | Name of the user |
-
-#### Defined in
-
-[src/api/models/PatchUserRequest.ts:8](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/PatchUserRequest.ts#L8)
-
-___
-
-### ResourceCreatedResponse
-
-Ƭ **ResourceCreatedResponse**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `created_at` | `string` | - |
-| `id` | `string` | - |
-| `jobs?` | `string`[] | IDs (if any) of jobs created as part of this request |
-
-#### Defined in
-
-[src/api/models/ResourceCreatedResponse.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/ResourceCreatedResponse.ts#L5)
-
-___
-
-### ResourceDeletedResponse
-
-Ƭ **ResourceDeletedResponse**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `deleted_at` | `string` | - |
-| `id` | `string` | - |
-| `jobs?` | `string`[] | IDs (if any) of jobs created as part of this request |
-
-#### Defined in
-
-[src/api/models/ResourceDeletedResponse.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/ResourceDeletedResponse.ts#L5)
-
-___
-
-### ResourceUpdatedResponse
-
-Ƭ **ResourceUpdatedResponse**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `id` | `string` | - |
-| `jobs?` | `string`[] | IDs (if any) of jobs created as part of this request |
-| `updated_at` | `string` | - |
-
-#### Defined in
-
-[src/api/models/ResourceUpdatedResponse.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/ResourceUpdatedResponse.ts#L5)
-
-___
-
-### Session
-
-Ƭ **Session**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `agent_id` | `string` | Agent ID of agent associated with this session |
-| `context_overflow?` | `string` | Action to start on context window overflow |
-| `created_at?` | `string` | Session created at (RFC-3339 format) |
-| `id` | `string` | Session id (UUID) |
-| `metadata?` | `any` | Optional metadata |
-| `render_templates?` | `boolean` | Render system and assistant message content as jinja templates |
-| `situation?` | `string` | A specific situation that sets the background for this session |
-| `summary?` | `string` | (null at the beginning) - generated automatically after every interaction |
-| `token_budget?` | `number` | Threshold value for the adaptive context functionality |
-| `updated_at?` | `string` | Session updated at (RFC-3339 format) |
-| `user_id?` | `string` | User ID of user associated with this session |
-
-#### Defined in
-
-[src/api/models/Session.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/Session.ts#L5)
-
-___
-
-### Suggestion
-
-Ƭ **Suggestion**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `content` | `string` | The content of the suggestion |
-| `created_at?` | `string` | Suggestion created at (RFC-3339 format) |
-| `message_id` | `string` | The message that produced it |
-| `session_id` | `string` | Session this suggestion belongs to |
-| `target` | ``"user"`` \| ``"agent"`` | Whether the suggestion is for the `agent` or a `user` |
-
-#### Defined in
-
-[src/api/models/Suggestion.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/Suggestion.ts#L5)
-
-___
-
-### Tool
-
-Ƭ **Tool**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `function` | [`FunctionDef`](api.md#functiondef) | Function definition and parameters |
-| `id` | `string` | Tool ID |
-| `type` | ``"function"`` \| ``"webhook"`` | Whether this tool is a `function` or a `webhook` (Only `function` tool supported right now) |
-
-#### Defined in
-
-[src/api/models/Tool.ts:6](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/Tool.ts#L6)
-
-___
-
-### ToolChoiceOption
-
-Ƭ **ToolChoiceOption**: ``"none"`` \| ``"auto"`` \| [`NamedToolChoice`](api.md#namedtoolchoice)
-
-Controls which (if any) function is called by the model.
-`none` means the model will not call a function and instead generates a message.
-`auto` means the model can pick between generating a message or calling a function.
-Specifying a particular function via `{"type: "function", "function": {"name": "my_function"}}` forces the model to call that function.
-
-`none` is the default when no functions are present. `auto` is the default if functions are present.
-
-#### Defined in
-
-[src/api/models/ToolChoiceOption.ts:15](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/ToolChoiceOption.ts#L15)
-
-___
-
-### UpdateAgentRequest
-
-Ƭ **UpdateAgentRequest**: `Object`
-
-A valid request payload for updating an agent
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `about` | `string` | About the agent |
-| `default_settings?` | [`AgentDefaultSettings`](api.md#agentdefaultsettings) | Default model settings to start every session with |
-| `instructions?` | `string` \| `string`[] | Instructions for the agent |
-| `metadata?` | `any` | Optional metadata |
-| `model?` | `string` | Name of the model that the agent is supposed to use |
-| `name` | `string` | Name of the agent |
-
-#### Defined in
-
-[src/api/models/UpdateAgentRequest.ts:9](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/UpdateAgentRequest.ts#L9)
-
-___
-
-### UpdateSessionRequest
-
-Ƭ **UpdateSessionRequest**: `Object`
-
-A valid request payload for updating a session
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `context_overflow?` | `string` | Action to start on context window overflow |
-| `metadata?` | `any` | Optional metadata |
-| `situation` | `string` | Updated situation for this session |
-| `token_budget?` | `number` | Threshold value for the adaptive context functionality |
-
-#### Defined in
-
-[src/api/models/UpdateSessionRequest.ts:8](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/UpdateSessionRequest.ts#L8)
-
-___
-
-### UpdateToolRequest
-
-Ƭ **UpdateToolRequest**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `function` | [`FunctionDef`](api.md#functiondef) | Function definition and parameters |
-
-#### Defined in
-
-[src/api/models/UpdateToolRequest.ts:6](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/UpdateToolRequest.ts#L6)
-
-___
-
-### UpdateUserRequest
-
-Ƭ **UpdateUserRequest**: `Object`
-
-A valid request payload for updating a user
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `about` | `string` | About the user |
-| `metadata?` | `any` | Optional metadata |
-| `name` | `string` | Name of the user |
-
-#### Defined in
-
-[src/api/models/UpdateUserRequest.ts:8](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/UpdateUserRequest.ts#L8)
-
-___
-
-### User
-
-Ƭ **User**: `Object`
-
-#### Type declaration
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `about?` | `string` | About the user |
-| `created_at?` | `string` | User created at (RFC-3339 format) |
-| `id` | `string` | User id (UUID) |
-| `metadata?` | `any` | (Optional) metadata |
-| `name?` | `string` | Name of the user |
-| `updated_at?` | `string` | User updated at (RFC-3339 format) |
-
-#### Defined in
-
-[src/api/models/User.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/User.ts#L5)
-
-___
-
-### agent\_id
-
-Ƭ **agent\_id**: `string`
-
-#### Defined in
-
-[src/api/models/agent_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/agent_id.ts#L5)
-
-___
-
-### doc\_id
-
-Ƭ **doc\_id**: `string`
-
-#### Defined in
-
-[src/api/models/doc_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/doc_id.ts#L5)
-
-___
-
-### job\_id
-
-Ƭ **job\_id**: `string`
-
-#### Defined in
-
-[src/api/models/job_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/job_id.ts#L5)
-
-___
-
-### memory\_id
-
-Ƭ **memory\_id**: `string`
-
-#### Defined in
-
-[src/api/models/memory_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/memory_id.ts#L5)
-
-___
-
-### message\_id
-
-Ƭ **message\_id**: `string`
-
-#### Defined in
-
-[src/api/models/message_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/message_id.ts#L5)
-
-___
-
-### session\_id
-
-Ƭ **session\_id**: `string`
-
-#### Defined in
-
-[src/api/models/session_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/session_id.ts#L5)
-
-___
-
-### tool\_id
-
-Ƭ **tool\_id**: `string`
-
-#### Defined in
-
-[src/api/models/tool_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/tool_id.ts#L5)
-
-___
-
-### user\_id
-
-Ƭ **user\_id**: `string`
-
-#### Defined in
-
-[src/api/models/user_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/models/user_id.ts#L5)
-
-## Variables
-
-### $Agent
-
-• `Const` **$Agent**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `about`: \{ `description`: ``"About the agent"`` ; `type`: ``"string"`` = "string" } ; `created_at`: \{ `description`: ``"Agent created at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } ; `default_settings`: \{ `description`: ``"Default settings for all sessions created by this agent"`` ; `type`: ``"AgentDefaultSettings"`` = "AgentDefaultSettings" } ; `id`: \{ `description`: ``"Agent id (UUID)"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `instructions`: \{ `contains`: readonly [\{ `type`: ``"string"`` = "string" }, \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }] ; `description`: ``"Instructions for the agent"`` ; `type`: ``"one-of"`` = "one-of" } ; `metadata`: \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } ; `model`: \{ `description`: ``"The model to use with this agent"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `name`: \{ `description`: ``"Name of the agent"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `updated_at`: \{ `description`: ``"Agent updated at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } } |
-| `properties.about` | \{ `description`: ``"About the agent"`` ; `type`: ``"string"`` = "string" } |
-| `properties.about.description` | ``"About the agent"`` |
-| `properties.about.type` | ``"string"`` |
-| `properties.created_at` | \{ `description`: ``"Agent created at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } |
-| `properties.created_at.description` | ``"Agent created at (RFC-3339 format)"`` |
-| `properties.created_at.format` | ``"date-time"`` |
-| `properties.created_at.type` | ``"string"`` |
-| `properties.default_settings` | \{ `description`: ``"Default settings for all sessions created by this agent"`` ; `type`: ``"AgentDefaultSettings"`` = "AgentDefaultSettings" } |
-| `properties.default_settings.description` | ``"Default settings for all sessions created by this agent"`` |
-| `properties.default_settings.type` | ``"AgentDefaultSettings"`` |
-| `properties.id` | \{ `description`: ``"Agent id (UUID)"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.id.description` | ``"Agent id (UUID)"`` |
-| `properties.id.format` | ``"uuid"`` |
-| `properties.id.isRequired` | ``true`` |
-| `properties.id.type` | ``"string"`` |
-| `properties.instructions` | \{ `contains`: readonly [\{ `type`: ``"string"`` = "string" }, \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }] ; `description`: ``"Instructions for the agent"`` ; `type`: ``"one-of"`` = "one-of" } |
-| `properties.instructions.contains` | readonly [\{ `type`: ``"string"`` = "string" }, \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }] |
-| `properties.instructions.description` | ``"Instructions for the agent"`` |
-| `properties.instructions.type` | ``"one-of"`` |
-| `properties.metadata` | \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } |
-| `properties.metadata.description` | ``"Optional metadata"`` |
-| `properties.metadata.properties` | {} |
-| `properties.model` | \{ `description`: ``"The model to use with this agent"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.model.description` | ``"The model to use with this agent"`` |
-| `properties.model.isRequired` | ``true`` |
-| `properties.model.type` | ``"string"`` |
-| `properties.name` | \{ `description`: ``"Name of the agent"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.name.description` | ``"Name of the agent"`` |
-| `properties.name.isRequired` | ``true`` |
-| `properties.name.type` | ``"string"`` |
-| `properties.updated_at` | \{ `description`: ``"Agent updated at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } |
-| `properties.updated_at.description` | ``"Agent updated at (RFC-3339 format)"`` |
-| `properties.updated_at.format` | ``"date-time"`` |
-| `properties.updated_at.type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$Agent.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$Agent.ts#L5)
-
-___
-
-### $AgentDefaultSettings
-
-• `Const` **$AgentDefaultSettings**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `frequency_penalty`: \{ `description`: ``"(OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` ; `isNullable`: ``true`` = true; `maximum`: ``2`` = 2; `minimum`: ``-2`` = -2; `type`: ``"number"`` = "number" } ; `length_penalty`: \{ `description`: ``"(Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated. "`` ; `isNullable`: ``true`` = true; `maximum`: ``2`` = 2; `type`: ``"number"`` = "number" } ; `min_p`: \{ `description`: ``"Minimum probability compared to leading token to be considered"`` ; `exclusiveMaximum`: ``true`` = true; `maximum`: ``1`` = 1; `type`: ``"number"`` = "number" } ; `presence_penalty`: \{ `description`: ``"(OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` ; `isNullable`: ``true`` = true; `maximum`: ``1`` = 1; `minimum`: ``-1`` = -1; `type`: ``"number"`` = "number" } ; `preset`: \{ `type`: ``"Enum"`` = "Enum" } ; `repetition_penalty`: \{ `description`: ``"(Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` ; `isNullable`: ``true`` = true; `maximum`: ``2`` = 2; `type`: ``"number"`` = "number" } ; `temperature`: \{ `description`: ``"What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic."`` ; `isNullable`: ``true`` = true; `maximum`: ``3`` = 3; `type`: ``"number"`` = "number" } ; `top_p`: \{ `description`: ``"Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both."`` ; `isNullable`: ``true`` = true; `maximum`: ``1`` = 1; `type`: ``"number"`` = "number" } } |
-| `properties.frequency_penalty` | \{ `description`: ``"(OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` ; `isNullable`: ``true`` = true; `maximum`: ``2`` = 2; `minimum`: ``-2`` = -2; `type`: ``"number"`` = "number" } |
-| `properties.frequency_penalty.description` | ``"(OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` |
-| `properties.frequency_penalty.isNullable` | ``true`` |
-| `properties.frequency_penalty.maximum` | ``2`` |
-| `properties.frequency_penalty.minimum` | ``-2`` |
-| `properties.frequency_penalty.type` | ``"number"`` |
-| `properties.length_penalty` | \{ `description`: ``"(Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated. "`` ; `isNullable`: ``true`` = true; `maximum`: ``2`` = 2; `type`: ``"number"`` = "number" } |
-| `properties.length_penalty.description` | ``"(Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated. "`` |
-| `properties.length_penalty.isNullable` | ``true`` |
-| `properties.length_penalty.maximum` | ``2`` |
-| `properties.length_penalty.type` | ``"number"`` |
-| `properties.min_p` | \{ `description`: ``"Minimum probability compared to leading token to be considered"`` ; `exclusiveMaximum`: ``true`` = true; `maximum`: ``1`` = 1; `type`: ``"number"`` = "number" } |
-| `properties.min_p.description` | ``"Minimum probability compared to leading token to be considered"`` |
-| `properties.min_p.exclusiveMaximum` | ``true`` |
-| `properties.min_p.maximum` | ``1`` |
-| `properties.min_p.type` | ``"number"`` |
-| `properties.presence_penalty` | \{ `description`: ``"(OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` ; `isNullable`: ``true`` = true; `maximum`: ``1`` = 1; `minimum`: ``-1`` = -1; `type`: ``"number"`` = "number" } |
-| `properties.presence_penalty.description` | ``"(OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` |
-| `properties.presence_penalty.isNullable` | ``true`` |
-| `properties.presence_penalty.maximum` | ``1`` |
-| `properties.presence_penalty.minimum` | ``-1`` |
-| `properties.presence_penalty.type` | ``"number"`` |
-| `properties.preset` | \{ `type`: ``"Enum"`` = "Enum" } |
-| `properties.preset.type` | ``"Enum"`` |
-| `properties.repetition_penalty` | \{ `description`: ``"(Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` ; `isNullable`: ``true`` = true; `maximum`: ``2`` = 2; `type`: ``"number"`` = "number" } |
-| `properties.repetition_penalty.description` | ``"(Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` |
-| `properties.repetition_penalty.isNullable` | ``true`` |
-| `properties.repetition_penalty.maximum` | ``2`` |
-| `properties.repetition_penalty.type` | ``"number"`` |
-| `properties.temperature` | \{ `description`: ``"What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic."`` ; `isNullable`: ``true`` = true; `maximum`: ``3`` = 3; `type`: ``"number"`` = "number" } |
-| `properties.temperature.description` | ``"What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic."`` |
-| `properties.temperature.isNullable` | ``true`` |
-| `properties.temperature.maximum` | ``3`` |
-| `properties.temperature.type` | ``"number"`` |
-| `properties.top_p` | \{ `description`: ``"Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both."`` ; `isNullable`: ``true`` = true; `maximum`: ``1`` = 1; `type`: ``"number"`` = "number" } |
-| `properties.top_p.description` | ``"Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both."`` |
-| `properties.top_p.isNullable` | ``true`` |
-| `properties.top_p.maximum` | ``1`` |
-| `properties.top_p.type` | ``"number"`` |
-
-#### Defined in
-
-[src/api/schemas/$AgentDefaultSettings.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$AgentDefaultSettings.ts#L5)
-
-___
-
-### $ChatInput
-
-• `Const` **$ChatInput**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `contains` | readonly [\{ `type`: ``"ChatInputData"`` = "ChatInputData" }, \{ `type`: ``"ChatSettings"`` = "ChatSettings" }, \{ `type`: ``"MemoryAccessOptions"`` = "MemoryAccessOptions" }] |
-| `type` | ``"all-of"`` |
-
-#### Defined in
-
-[src/api/schemas/$ChatInput.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$ChatInput.ts#L5)
-
-___
-
-### $ChatInputData
-
-• `Const` **$ChatInputData**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `messages`: \{ `contains`: \{ `type`: ``"InputChatMLMessage"`` = "InputChatMLMessage" } ; `isRequired`: ``true`` = true; `type`: ``"array"`` = "array" } ; `tool_choice`: \{ `contains`: readonly [\{ `type`: ``"ToolChoiceOption"`` = "ToolChoiceOption" }, \{ `type`: ``"NamedToolChoice"`` = "NamedToolChoice" }] ; `description`: ``"Can be one of existing tools given to the agent earlier or the ones included in the request"`` ; `isNullable`: ``true`` = true; `type`: ``"one-of"`` = "one-of" } ; `tools`: \{ `contains`: \{ `type`: ``"Tool"`` = "Tool" } ; `isNullable`: ``true`` = true; `type`: ``"array"`` = "array" } } |
-| `properties.messages` | \{ `contains`: \{ `type`: ``"InputChatMLMessage"`` = "InputChatMLMessage" } ; `isRequired`: ``true`` = true; `type`: ``"array"`` = "array" } |
-| `properties.messages.contains` | \{ `type`: ``"InputChatMLMessage"`` = "InputChatMLMessage" } |
-| `properties.messages.contains.type` | ``"InputChatMLMessage"`` |
-| `properties.messages.isRequired` | ``true`` |
-| `properties.messages.type` | ``"array"`` |
-| `properties.tool_choice` | \{ `contains`: readonly [\{ `type`: ``"ToolChoiceOption"`` = "ToolChoiceOption" }, \{ `type`: ``"NamedToolChoice"`` = "NamedToolChoice" }] ; `description`: ``"Can be one of existing tools given to the agent earlier or the ones included in the request"`` ; `isNullable`: ``true`` = true; `type`: ``"one-of"`` = "one-of" } |
-| `properties.tool_choice.contains` | readonly [\{ `type`: ``"ToolChoiceOption"`` = "ToolChoiceOption" }, \{ `type`: ``"NamedToolChoice"`` = "NamedToolChoice" }] |
-| `properties.tool_choice.description` | ``"Can be one of existing tools given to the agent earlier or the ones included in the request"`` |
-| `properties.tool_choice.isNullable` | ``true`` |
-| `properties.tool_choice.type` | ``"one-of"`` |
-| `properties.tools` | \{ `contains`: \{ `type`: ``"Tool"`` = "Tool" } ; `isNullable`: ``true`` = true; `type`: ``"array"`` = "array" } |
-| `properties.tools.contains` | \{ `type`: ``"Tool"`` = "Tool" } |
-| `properties.tools.contains.type` | ``"Tool"`` |
-| `properties.tools.isNullable` | ``true`` |
-| `properties.tools.type` | ``"array"`` |
-
-#### Defined in
-
-[src/api/schemas/$ChatInputData.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$ChatInputData.ts#L5)
-
-___
-
-### $ChatMLImageContentPart
-
-• `Const` **$ChatMLImageContentPart**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `image_url`: \{ `description`: ``"Image content part, can be a URL or a base64-encoded image"`` ; `isRequired`: ``true`` = true; `properties`: \{ `detail`: \{ `type`: ``"Enum"`` = "Enum" } ; `url`: \{ `description`: ``"URL or base64 data url (e.g. `data:image/jpeg;base64,`)"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } } } ; `type`: \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } } |
-| `properties.image_url` | \{ `description`: ``"Image content part, can be a URL or a base64-encoded image"`` ; `isRequired`: ``true`` = true; `properties`: \{ `detail`: \{ `type`: ``"Enum"`` = "Enum" } ; `url`: \{ `description`: ``"URL or base64 data url (e.g. `data:image/jpeg;base64,`)"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } } } |
-| `properties.image_url.description` | ``"Image content part, can be a URL or a base64-encoded image"`` |
-| `properties.image_url.isRequired` | ``true`` |
-| `properties.image_url.properties` | \{ `detail`: \{ `type`: ``"Enum"`` = "Enum" } ; `url`: \{ `description`: ``"URL or base64 data url (e.g. `data:image/jpeg;base64,`)"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } } |
-| `properties.image_url.properties.detail` | \{ `type`: ``"Enum"`` = "Enum" } |
-| `properties.image_url.properties.detail.type` | ``"Enum"`` |
-| `properties.image_url.properties.url` | \{ `description`: ``"URL or base64 data url (e.g. `data:image/jpeg;base64,`)"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.image_url.properties.url.description` | ``"URL or base64 data url (e.g. `data:image/jpeg;base64,`)"`` |
-| `properties.image_url.properties.url.isRequired` | ``true`` |
-| `properties.image_url.properties.url.type` | ``"string"`` |
-| `properties.type` | \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } |
-| `properties.type.isRequired` | ``true`` |
-| `properties.type.type` | ``"Enum"`` |
-
-#### Defined in
-
-[src/api/schemas/$ChatMLImageContentPart.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$ChatMLImageContentPart.ts#L5)
-
-___
-
-### $ChatMLMessage
-
-• `Const` **$ChatMLMessage**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `content`: \{ `contains`: readonly [\{ `type`: ``"string"`` = "string" }] ; `description`: ``"ChatML content"`` ; `isRequired`: ``true`` = true; `type`: ``"one-of"`` = "one-of" } ; `created_at`: \{ `description`: ``"Message created at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `id`: \{ `description`: ``"Message ID"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `name`: \{ `description`: ``"ChatML name"`` ; `type`: ``"string"`` = "string" } ; `role`: \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } } |
-| `properties.content` | \{ `contains`: readonly [\{ `type`: ``"string"`` = "string" }] ; `description`: ``"ChatML content"`` ; `isRequired`: ``true`` = true; `type`: ``"one-of"`` = "one-of" } |
-| `properties.content.contains` | readonly [\{ `type`: ``"string"`` = "string" }] |
-| `properties.content.description` | ``"ChatML content"`` |
-| `properties.content.isRequired` | ``true`` |
-| `properties.content.type` | ``"one-of"`` |
-| `properties.created_at` | \{ `description`: ``"Message created at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.created_at.description` | ``"Message created at (RFC-3339 format)"`` |
-| `properties.created_at.format` | ``"date-time"`` |
-| `properties.created_at.isRequired` | ``true`` |
-| `properties.created_at.type` | ``"string"`` |
-| `properties.id` | \{ `description`: ``"Message ID"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.id.description` | ``"Message ID"`` |
-| `properties.id.format` | ``"uuid"`` |
-| `properties.id.isRequired` | ``true`` |
-| `properties.id.type` | ``"string"`` |
-| `properties.name` | \{ `description`: ``"ChatML name"`` ; `type`: ``"string"`` = "string" } |
-| `properties.name.description` | ``"ChatML name"`` |
-| `properties.name.type` | ``"string"`` |
-| `properties.role` | \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } |
-| `properties.role.isRequired` | ``true`` |
-| `properties.role.type` | ``"Enum"`` |
-
-#### Defined in
-
-[src/api/schemas/$ChatMLMessage.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$ChatMLMessage.ts#L5)
-
-___
-
-### $ChatMLTextContentPart
-
-• `Const` **$ChatMLTextContentPart**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `text`: \{ `description`: ``"Text content part"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `type`: \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } } |
-| `properties.text` | \{ `description`: ``"Text content part"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.text.description` | ``"Text content part"`` |
-| `properties.text.isRequired` | ``true`` |
-| `properties.text.type` | ``"string"`` |
-| `properties.type` | \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } |
-| `properties.type.isRequired` | ``true`` |
-| `properties.type.type` | ``"Enum"`` |
-
-#### Defined in
-
-[src/api/schemas/$ChatMLTextContentPart.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$ChatMLTextContentPart.ts#L5)
-
-___
-
-### $ChatResponse
-
-• `Const` **$ChatResponse**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `description` | ``"Represents a chat completion response returned by model, based on the provided input."`` |
-| `properties` | \{ `doc_ids`: \{ `isRequired`: ``true`` = true; `type`: ``"DocIds"`` = "DocIds" } ; `finish_reason`: \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } ; `id`: \{ `description`: ``"A unique identifier for the chat completion."`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `jobs`: \{ `contains`: \{ `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" } ; `response`: \{ `contains`: \{ `contains`: \{ `type`: ``"ChatMLMessage"`` = "ChatMLMessage" } ; `type`: ``"array"`` = "array" } ; `isRequired`: ``true`` = true; `type`: ``"array"`` = "array" } ; `usage`: \{ `isRequired`: ``true`` = true; `type`: ``"CompletionUsage"`` = "CompletionUsage" } } |
-| `properties.doc_ids` | \{ `isRequired`: ``true`` = true; `type`: ``"DocIds"`` = "DocIds" } |
-| `properties.doc_ids.isRequired` | ``true`` |
-| `properties.doc_ids.type` | ``"DocIds"`` |
-| `properties.finish_reason` | \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } |
-| `properties.finish_reason.isRequired` | ``true`` |
-| `properties.finish_reason.type` | ``"Enum"`` |
-| `properties.id` | \{ `description`: ``"A unique identifier for the chat completion."`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.id.description` | ``"A unique identifier for the chat completion."`` |
-| `properties.id.format` | ``"uuid"`` |
-| `properties.id.isRequired` | ``true`` |
-| `properties.id.type` | ``"string"`` |
-| `properties.jobs` | \{ `contains`: \{ `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" } |
-| `properties.jobs.contains` | \{ `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } |
-| `properties.jobs.contains.format` | ``"uuid"`` |
-| `properties.jobs.contains.type` | ``"string"`` |
-| `properties.jobs.type` | ``"array"`` |
-| `properties.response` | \{ `contains`: \{ `contains`: \{ `type`: ``"ChatMLMessage"`` = "ChatMLMessage" } ; `type`: ``"array"`` = "array" } ; `isRequired`: ``true`` = true; `type`: ``"array"`` = "array" } |
-| `properties.response.contains` | \{ `contains`: \{ `type`: ``"ChatMLMessage"`` = "ChatMLMessage" } ; `type`: ``"array"`` = "array" } |
-| `properties.response.contains.contains` | \{ `type`: ``"ChatMLMessage"`` = "ChatMLMessage" } |
-| `properties.response.contains.contains.type` | ``"ChatMLMessage"`` |
-| `properties.response.contains.type` | ``"array"`` |
-| `properties.response.isRequired` | ``true`` |
-| `properties.response.type` | ``"array"`` |
-| `properties.usage` | \{ `isRequired`: ``true`` = true; `type`: ``"CompletionUsage"`` = "CompletionUsage" } |
-| `properties.usage.isRequired` | ``true`` |
-| `properties.usage.type` | ``"CompletionUsage"`` |
-
-#### Defined in
-
-[src/api/schemas/$ChatResponse.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$ChatResponse.ts#L5)
-
-___
-
-### $ChatSettings
-
-• `Const` **$ChatSettings**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `frequency_penalty`: \{ `description`: ``"(OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` ; `isNullable`: ``true`` = true; `maximum`: ``1`` = 1; `minimum`: ``-1`` = -1; `type`: ``"number"`` = "number" } ; `length_penalty`: \{ `description`: ``"(Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated. "`` ; `isNullable`: ``true`` = true; `maximum`: ``2`` = 2; `type`: ``"number"`` = "number" } ; `logit_bias`: \{ `contains`: \{ `type`: ``"number"`` = "number" } ; `isNullable`: ``true`` = true; `type`: ``"dictionary"`` = "dictionary" } ; `max_tokens`: \{ `description`: ``"The maximum number of tokens to generate in the chat completion.\n The total length of input tokens and generated tokens is limited by the model's context length.\n "`` ; `isNullable`: ``true`` = true; `maximum`: ``16384`` = 16384; `minimum`: ``1`` = 1; `type`: ``"number"`` = "number" } ; `min_p`: \{ `description`: ``"Minimum probability compared to leading token to be considered"`` ; `exclusiveMaximum`: ``true`` = true; `maximum`: ``1`` = 1; `type`: ``"number"`` = "number" } ; `presence_penalty`: \{ `description`: ``"(OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` ; `isNullable`: ``true`` = true; `maximum`: ``1`` = 1; `minimum`: ``-1`` = -1; `type`: ``"number"`` = "number" } ; `preset`: \{ `type`: ``"Enum"`` = "Enum" } ; `repetition_penalty`: \{ `description`: ``"(Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` ; `isNullable`: ``true`` = true; `maximum`: ``2`` = 2; `type`: ``"number"`` = "number" } ; `response_format`: \{ `description`: ``"An object specifying the format that the model must output.\n Setting to `{ \"type\": \"json_object\" }` enables JSON mode, which guarantees the message the model generates is valid JSON.\n **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly \"stuck\" request. Also note that the message content may be partially cut off if `finish_reason=\"length\"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.\n "`` ; `properties`: \{ `pattern`: \{ `description`: ``"Regular expression pattern to use if `type` is `\"regex\"`"`` ; `type`: ``"string"`` = "string" } ; `schema`: \{ `description`: ``"JSON Schema to use if `type` is `\"json_object\"`"`` ; `properties`: {} = \{} } ; `type`: \{ `type`: ``"Enum"`` = "Enum" } } } ; `seed`: \{ `description`: ``"This feature is in Beta.\n If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same `seed` and parameters should return the same result.\n Determinism is not guaranteed, and you should refer to the `system_fingerprint` response parameter to monitor changes in the backend.\n "`` ; `isNullable`: ``true`` = true; `maximum`: ``9999`` = 9999; `minimum`: ``-1`` = -1; `type`: ``"number"`` = "number" } ; `stop`: \{ `contains`: readonly [\{ `isNullable`: ``true`` = true; `type`: ``"string"`` = "string" }, \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }] ; `description`: ``"Up to 4 sequences where the API will stop generating further tokens.\n "`` ; `type`: ``"one-of"`` = "one-of" } ; `stream`: \{ `description`: ``"If set, partial message deltas will be sent, like in ChatGPT. Tokens will be sent as data-only [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format) as they become available, with the stream terminated by a `data: [DONE]` message. [Example Python code](https://cookbook.openai.com/examples/how_to_stream_completions).\n "`` ; `isNullable`: ``true`` = true; `type`: ``"boolean"`` = "boolean" } ; `temperature`: \{ `description`: ``"What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic."`` ; `isNullable`: ``true`` = true; `maximum`: ``2`` = 2; `type`: ``"number"`` = "number" } ; `top_p`: \{ `description`: ``"Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both."`` ; `exclusiveMinimum`: ``true`` = true; `isNullable`: ``true`` = true; `maximum`: ``1`` = 1; `type`: ``"number"`` = "number" } } |
-| `properties.frequency_penalty` | \{ `description`: ``"(OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` ; `isNullable`: ``true`` = true; `maximum`: ``1`` = 1; `minimum`: ``-1`` = -1; `type`: ``"number"`` = "number" } |
-| `properties.frequency_penalty.description` | ``"(OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` |
-| `properties.frequency_penalty.isNullable` | ``true`` |
-| `properties.frequency_penalty.maximum` | ``1`` |
-| `properties.frequency_penalty.minimum` | ``-1`` |
-| `properties.frequency_penalty.type` | ``"number"`` |
-| `properties.length_penalty` | \{ `description`: ``"(Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated. "`` ; `isNullable`: ``true`` = true; `maximum`: ``2`` = 2; `type`: ``"number"`` = "number" } |
-| `properties.length_penalty.description` | ``"(Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated. "`` |
-| `properties.length_penalty.isNullable` | ``true`` |
-| `properties.length_penalty.maximum` | ``2`` |
-| `properties.length_penalty.type` | ``"number"`` |
-| `properties.logit_bias` | \{ `contains`: \{ `type`: ``"number"`` = "number" } ; `isNullable`: ``true`` = true; `type`: ``"dictionary"`` = "dictionary" } |
-| `properties.logit_bias.contains` | \{ `type`: ``"number"`` = "number" } |
-| `properties.logit_bias.contains.type` | ``"number"`` |
-| `properties.logit_bias.isNullable` | ``true`` |
-| `properties.logit_bias.type` | ``"dictionary"`` |
-| `properties.max_tokens` | \{ `description`: ``"The maximum number of tokens to generate in the chat completion.\n The total length of input tokens and generated tokens is limited by the model's context length.\n "`` ; `isNullable`: ``true`` = true; `maximum`: ``16384`` = 16384; `minimum`: ``1`` = 1; `type`: ``"number"`` = "number" } |
-| `properties.max_tokens.description` | ``"The maximum number of tokens to generate in the chat completion.\n The total length of input tokens and generated tokens is limited by the model's context length.\n "`` |
-| `properties.max_tokens.isNullable` | ``true`` |
-| `properties.max_tokens.maximum` | ``16384`` |
-| `properties.max_tokens.minimum` | ``1`` |
-| `properties.max_tokens.type` | ``"number"`` |
-| `properties.min_p` | \{ `description`: ``"Minimum probability compared to leading token to be considered"`` ; `exclusiveMaximum`: ``true`` = true; `maximum`: ``1`` = 1; `type`: ``"number"`` = "number" } |
-| `properties.min_p.description` | ``"Minimum probability compared to leading token to be considered"`` |
-| `properties.min_p.exclusiveMaximum` | ``true`` |
-| `properties.min_p.maximum` | ``1`` |
-| `properties.min_p.type` | ``"number"`` |
-| `properties.presence_penalty` | \{ `description`: ``"(OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` ; `isNullable`: ``true`` = true; `maximum`: ``1`` = 1; `minimum`: ``-1`` = -1; `type`: ``"number"`` = "number" } |
-| `properties.presence_penalty.description` | ``"(OpenAI-like) Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` |
-| `properties.presence_penalty.isNullable` | ``true`` |
-| `properties.presence_penalty.maximum` | ``1`` |
-| `properties.presence_penalty.minimum` | ``-1`` |
-| `properties.presence_penalty.type` | ``"number"`` |
-| `properties.preset` | \{ `type`: ``"Enum"`` = "Enum" } |
-| `properties.preset.type` | ``"Enum"`` |
-| `properties.repetition_penalty` | \{ `description`: ``"(Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` ; `isNullable`: ``true`` = true; `maximum`: ``2`` = 2; `type`: ``"number"`` = "number" } |
-| `properties.repetition_penalty.description` | ``"(Huggingface-like) Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."`` |
-| `properties.repetition_penalty.isNullable` | ``true`` |
-| `properties.repetition_penalty.maximum` | ``2`` |
-| `properties.repetition_penalty.type` | ``"number"`` |
-| `properties.response_format` | \{ `description`: ``"An object specifying the format that the model must output.\n Setting to `{ \"type\": \"json_object\" }` enables JSON mode, which guarantees the message the model generates is valid JSON.\n **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly \"stuck\" request. Also note that the message content may be partially cut off if `finish_reason=\"length\"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.\n "`` ; `properties`: \{ `pattern`: \{ `description`: ``"Regular expression pattern to use if `type` is `\"regex\"`"`` ; `type`: ``"string"`` = "string" } ; `schema`: \{ `description`: ``"JSON Schema to use if `type` is `\"json_object\"`"`` ; `properties`: {} = \{} } ; `type`: \{ `type`: ``"Enum"`` = "Enum" } } } |
-| `properties.response_format.description` | ``"An object specifying the format that the model must output.\n Setting to `{ \"type\": \"json_object\" }` enables JSON mode, which guarantees the message the model generates is valid JSON.\n **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly \"stuck\" request. Also note that the message content may be partially cut off if `finish_reason=\"length\"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.\n "`` |
-| `properties.response_format.properties` | \{ `pattern`: \{ `description`: ``"Regular expression pattern to use if `type` is `\"regex\"`"`` ; `type`: ``"string"`` = "string" } ; `schema`: \{ `description`: ``"JSON Schema to use if `type` is `\"json_object\"`"`` ; `properties`: {} = \{} } ; `type`: \{ `type`: ``"Enum"`` = "Enum" } } |
-| `properties.response_format.properties.pattern` | \{ `description`: ``"Regular expression pattern to use if `type` is `\"regex\"`"`` ; `type`: ``"string"`` = "string" } |
-| `properties.response_format.properties.pattern.description` | ``"Regular expression pattern to use if `type` is `\"regex\"`"`` |
-| `properties.response_format.properties.pattern.type` | ``"string"`` |
-| `properties.response_format.properties.schema` | \{ `description`: ``"JSON Schema to use if `type` is `\"json_object\"`"`` ; `properties`: {} = \{} } |
-| `properties.response_format.properties.schema.description` | ``"JSON Schema to use if `type` is `\"json_object\"`"`` |
-| `properties.response_format.properties.schema.properties` | {} |
-| `properties.response_format.properties.type` | \{ `type`: ``"Enum"`` = "Enum" } |
-| `properties.response_format.properties.type.type` | ``"Enum"`` |
-| `properties.seed` | \{ `description`: ``"This feature is in Beta.\n If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same `seed` and parameters should return the same result.\n Determinism is not guaranteed, and you should refer to the `system_fingerprint` response parameter to monitor changes in the backend.\n "`` ; `isNullable`: ``true`` = true; `maximum`: ``9999`` = 9999; `minimum`: ``-1`` = -1; `type`: ``"number"`` = "number" } |
-| `properties.seed.description` | ``"This feature is in Beta.\n If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same `seed` and parameters should return the same result.\n Determinism is not guaranteed, and you should refer to the `system_fingerprint` response parameter to monitor changes in the backend.\n "`` |
-| `properties.seed.isNullable` | ``true`` |
-| `properties.seed.maximum` | ``9999`` |
-| `properties.seed.minimum` | ``-1`` |
-| `properties.seed.type` | ``"number"`` |
-| `properties.stop` | \{ `contains`: readonly [\{ `isNullable`: ``true`` = true; `type`: ``"string"`` = "string" }, \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }] ; `description`: ``"Up to 4 sequences where the API will stop generating further tokens.\n "`` ; `type`: ``"one-of"`` = "one-of" } |
-| `properties.stop.contains` | readonly [\{ `isNullable`: ``true`` = true; `type`: ``"string"`` = "string" }, \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }] |
-| `properties.stop.description` | ``"Up to 4 sequences where the API will stop generating further tokens.\n "`` |
-| `properties.stop.type` | ``"one-of"`` |
-| `properties.stream` | \{ `description`: ``"If set, partial message deltas will be sent, like in ChatGPT. Tokens will be sent as data-only [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format) as they become available, with the stream terminated by a `data: [DONE]` message. [Example Python code](https://cookbook.openai.com/examples/how_to_stream_completions).\n "`` ; `isNullable`: ``true`` = true; `type`: ``"boolean"`` = "boolean" } |
-| `properties.stream.description` | ``"If set, partial message deltas will be sent, like in ChatGPT. Tokens will be sent as data-only [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format) as they become available, with the stream terminated by a `data: [DONE]` message. [Example Python code](https://cookbook.openai.com/examples/how_to_stream_completions).\n "`` |
-| `properties.stream.isNullable` | ``true`` |
-| `properties.stream.type` | ``"boolean"`` |
-| `properties.temperature` | \{ `description`: ``"What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic."`` ; `isNullable`: ``true`` = true; `maximum`: ``2`` = 2; `type`: ``"number"`` = "number" } |
-| `properties.temperature.description` | ``"What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic."`` |
-| `properties.temperature.isNullable` | ``true`` |
-| `properties.temperature.maximum` | ``2`` |
-| `properties.temperature.type` | ``"number"`` |
-| `properties.top_p` | \{ `description`: ``"Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both."`` ; `exclusiveMinimum`: ``true`` = true; `isNullable`: ``true`` = true; `maximum`: ``1`` = 1; `type`: ``"number"`` = "number" } |
-| `properties.top_p.description` | ``"Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both."`` |
-| `properties.top_p.exclusiveMinimum` | ``true`` |
-| `properties.top_p.isNullable` | ``true`` |
-| `properties.top_p.maximum` | ``1`` |
-| `properties.top_p.type` | ``"number"`` |
-
-#### Defined in
-
-[src/api/schemas/$ChatSettings.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$ChatSettings.ts#L5)
-
-___
-
-### $CompletionUsage
-
-• `Const` **$CompletionUsage**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `description` | ``"Usage statistics for the completion request."`` |
-| `properties` | \{ `completion_tokens`: \{ `description`: ``"Number of tokens in the generated completion."`` ; `isRequired`: ``true`` = true; `type`: ``"number"`` = "number" } ; `prompt_tokens`: \{ `description`: ``"Number of tokens in the prompt."`` ; `isRequired`: ``true`` = true; `type`: ``"number"`` = "number" } ; `total_tokens`: \{ `description`: ``"Total number of tokens used in the request (prompt + completion)."`` ; `isRequired`: ``true`` = true; `type`: ``"number"`` = "number" } } |
-| `properties.completion_tokens` | \{ `description`: ``"Number of tokens in the generated completion."`` ; `isRequired`: ``true`` = true; `type`: ``"number"`` = "number" } |
-| `properties.completion_tokens.description` | ``"Number of tokens in the generated completion."`` |
-| `properties.completion_tokens.isRequired` | ``true`` |
-| `properties.completion_tokens.type` | ``"number"`` |
-| `properties.prompt_tokens` | \{ `description`: ``"Number of tokens in the prompt."`` ; `isRequired`: ``true`` = true; `type`: ``"number"`` = "number" } |
-| `properties.prompt_tokens.description` | ``"Number of tokens in the prompt."`` |
-| `properties.prompt_tokens.isRequired` | ``true`` |
-| `properties.prompt_tokens.type` | ``"number"`` |
-| `properties.total_tokens` | \{ `description`: ``"Total number of tokens used in the request (prompt + completion)."`` ; `isRequired`: ``true`` = true; `type`: ``"number"`` = "number" } |
-| `properties.total_tokens.description` | ``"Total number of tokens used in the request (prompt + completion)."`` |
-| `properties.total_tokens.isRequired` | ``true`` |
-| `properties.total_tokens.type` | ``"number"`` |
-
-#### Defined in
-
-[src/api/schemas/$CompletionUsage.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$CompletionUsage.ts#L5)
-
-___
-
-### $CreateAgentRequest
-
-• `Const` **$CreateAgentRequest**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `description` | ``"A valid request payload for creating an agent"`` |
-| `properties` | \{ `about`: \{ `description`: ``"About the agent"`` ; `type`: ``"string"`` = "string" } ; `default_settings`: \{ `description`: ``"Default model settings to start every session with"`` ; `type`: ``"AgentDefaultSettings"`` = "AgentDefaultSettings" } ; `docs`: \{ `contains`: \{ `type`: ``"CreateDoc"`` = "CreateDoc" } ; `type`: ``"array"`` = "array" } ; `instructions`: \{ `contains`: readonly [\{ `type`: ``"string"`` = "string" }, \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }] ; `description`: ``"Instructions for the agent"`` ; `type`: ``"one-of"`` = "one-of" } ; `metadata`: \{ `description`: ``"(Optional) metadata"`` ; `properties`: {} = \{} } ; `model`: \{ `description`: ``"Name of the model that the agent is supposed to use"`` ; `type`: ``"string"`` = "string" } ; `name`: \{ `description`: ``"Name of the agent"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `tools`: \{ `contains`: \{ `type`: ``"CreateToolRequest"`` = "CreateToolRequest" } ; `type`: ``"array"`` = "array" } } |
-| `properties.about` | \{ `description`: ``"About the agent"`` ; `type`: ``"string"`` = "string" } |
-| `properties.about.description` | ``"About the agent"`` |
-| `properties.about.type` | ``"string"`` |
-| `properties.default_settings` | \{ `description`: ``"Default model settings to start every session with"`` ; `type`: ``"AgentDefaultSettings"`` = "AgentDefaultSettings" } |
-| `properties.default_settings.description` | ``"Default model settings to start every session with"`` |
-| `properties.default_settings.type` | ``"AgentDefaultSettings"`` |
-| `properties.docs` | \{ `contains`: \{ `type`: ``"CreateDoc"`` = "CreateDoc" } ; `type`: ``"array"`` = "array" } |
-| `properties.docs.contains` | \{ `type`: ``"CreateDoc"`` = "CreateDoc" } |
-| `properties.docs.contains.type` | ``"CreateDoc"`` |
-| `properties.docs.type` | ``"array"`` |
-| `properties.instructions` | \{ `contains`: readonly [\{ `type`: ``"string"`` = "string" }, \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }] ; `description`: ``"Instructions for the agent"`` ; `type`: ``"one-of"`` = "one-of" } |
-| `properties.instructions.contains` | readonly [\{ `type`: ``"string"`` = "string" }, \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }] |
-| `properties.instructions.description` | ``"Instructions for the agent"`` |
-| `properties.instructions.type` | ``"one-of"`` |
-| `properties.metadata` | \{ `description`: ``"(Optional) metadata"`` ; `properties`: {} = \{} } |
-| `properties.metadata.description` | ``"(Optional) metadata"`` |
-| `properties.metadata.properties` | {} |
-| `properties.model` | \{ `description`: ``"Name of the model that the agent is supposed to use"`` ; `type`: ``"string"`` = "string" } |
-| `properties.model.description` | ``"Name of the model that the agent is supposed to use"`` |
-| `properties.model.type` | ``"string"`` |
-| `properties.name` | \{ `description`: ``"Name of the agent"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.name.description` | ``"Name of the agent"`` |
-| `properties.name.isRequired` | ``true`` |
-| `properties.name.type` | ``"string"`` |
-| `properties.tools` | \{ `contains`: \{ `type`: ``"CreateToolRequest"`` = "CreateToolRequest" } ; `type`: ``"array"`` = "array" } |
-| `properties.tools.contains` | \{ `type`: ``"CreateToolRequest"`` = "CreateToolRequest" } |
-| `properties.tools.contains.type` | ``"CreateToolRequest"`` |
-| `properties.tools.type` | ``"array"`` |
-
-#### Defined in
-
-[src/api/schemas/$CreateAgentRequest.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$CreateAgentRequest.ts#L5)
-
-___
-
-### $CreateDoc
-
-• `Const` **$CreateDoc**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `content`: \{ `contains`: readonly [\{ `contains`: \{ `minItems`: ``1`` = 1; `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }, \{ `description`: ``"A single document chunk"`` ; `type`: ``"string"`` = "string" }] ; `description`: ``"Information content"`` ; `isRequired`: ``true`` = true; `type`: ``"one-of"`` = "one-of" } ; `metadata`: \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } ; `title`: \{ `description`: ``"Title describing what this bit of information contains"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } } |
-| `properties.content` | \{ `contains`: readonly [\{ `contains`: \{ `minItems`: ``1`` = 1; `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }, \{ `description`: ``"A single document chunk"`` ; `type`: ``"string"`` = "string" }] ; `description`: ``"Information content"`` ; `isRequired`: ``true`` = true; `type`: ``"one-of"`` = "one-of" } |
-| `properties.content.contains` | readonly [\{ `contains`: \{ `minItems`: ``1`` = 1; `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }, \{ `description`: ``"A single document chunk"`` ; `type`: ``"string"`` = "string" }] |
-| `properties.content.description` | ``"Information content"`` |
-| `properties.content.isRequired` | ``true`` |
-| `properties.content.type` | ``"one-of"`` |
-| `properties.metadata` | \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } |
-| `properties.metadata.description` | ``"Optional metadata"`` |
-| `properties.metadata.properties` | {} |
-| `properties.title` | \{ `description`: ``"Title describing what this bit of information contains"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.title.description` | ``"Title describing what this bit of information contains"`` |
-| `properties.title.isRequired` | ``true`` |
-| `properties.title.type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$CreateDoc.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$CreateDoc.ts#L5)
-
-___
-
-### $CreateSessionRequest
-
-• `Const` **$CreateSessionRequest**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `description` | ``"A valid request payload for creating a session"`` |
-| `properties` | \{ `agent_id`: \{ `description`: ``"Agent ID of agent to associate with this session"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `context_overflow`: \{ `description`: ``"Action to start on context window overflow"`` ; `type`: ``"string"`` = "string" } ; `metadata`: \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } ; `render_templates`: \{ `description`: ``"Render system and assistant message content as jinja templates"`` ; `type`: ``"boolean"`` = "boolean" } ; `situation`: \{ `description`: ``"A specific situation that sets the background for this session"`` ; `type`: ``"string"`` = "string" } ; `token_budget`: \{ `description`: ``"Threshold value for the adaptive context functionality"`` ; `type`: ``"number"`` = "number" } ; `user_id`: \{ `description`: ``"(Optional) User ID of user to associate with this session"`` ; `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } } |
-| `properties.agent_id` | \{ `description`: ``"Agent ID of agent to associate with this session"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.agent_id.description` | ``"Agent ID of agent to associate with this session"`` |
-| `properties.agent_id.format` | ``"uuid"`` |
-| `properties.agent_id.isRequired` | ``true`` |
-| `properties.agent_id.type` | ``"string"`` |
-| `properties.context_overflow` | \{ `description`: ``"Action to start on context window overflow"`` ; `type`: ``"string"`` = "string" } |
-| `properties.context_overflow.description` | ``"Action to start on context window overflow"`` |
-| `properties.context_overflow.type` | ``"string"`` |
-| `properties.metadata` | \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } |
-| `properties.metadata.description` | ``"Optional metadata"`` |
-| `properties.metadata.properties` | {} |
-| `properties.render_templates` | \{ `description`: ``"Render system and assistant message content as jinja templates"`` ; `type`: ``"boolean"`` = "boolean" } |
-| `properties.render_templates.description` | ``"Render system and assistant message content as jinja templates"`` |
-| `properties.render_templates.type` | ``"boolean"`` |
-| `properties.situation` | \{ `description`: ``"A specific situation that sets the background for this session"`` ; `type`: ``"string"`` = "string" } |
-| `properties.situation.description` | ``"A specific situation that sets the background for this session"`` |
-| `properties.situation.type` | ``"string"`` |
-| `properties.token_budget` | \{ `description`: ``"Threshold value for the adaptive context functionality"`` ; `type`: ``"number"`` = "number" } |
-| `properties.token_budget.description` | ``"Threshold value for the adaptive context functionality"`` |
-| `properties.token_budget.type` | ``"number"`` |
-| `properties.user_id` | \{ `description`: ``"(Optional) User ID of user to associate with this session"`` ; `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } |
-| `properties.user_id.description` | ``"(Optional) User ID of user to associate with this session"`` |
-| `properties.user_id.format` | ``"uuid"`` |
-| `properties.user_id.type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$CreateSessionRequest.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$CreateSessionRequest.ts#L5)
-
-___
-
-### $CreateToolRequest
-
-• `Const` **$CreateToolRequest**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `function`: \{ `contains`: readonly [\{ `type`: ``"FunctionDef"`` = "FunctionDef" }] ; `description`: ``"Function definition and parameters"`` ; `isRequired`: ``true`` = true; `type`: ``"one-of"`` = "one-of" } ; `type`: \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } } |
-| `properties.function` | \{ `contains`: readonly [\{ `type`: ``"FunctionDef"`` = "FunctionDef" }] ; `description`: ``"Function definition and parameters"`` ; `isRequired`: ``true`` = true; `type`: ``"one-of"`` = "one-of" } |
-| `properties.function.contains` | readonly [\{ `type`: ``"FunctionDef"`` = "FunctionDef" }] |
-| `properties.function.description` | ``"Function definition and parameters"`` |
-| `properties.function.isRequired` | ``true`` |
-| `properties.function.type` | ``"one-of"`` |
-| `properties.type` | \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } |
-| `properties.type.isRequired` | ``true`` |
-| `properties.type.type` | ``"Enum"`` |
-
-#### Defined in
-
-[src/api/schemas/$CreateToolRequest.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$CreateToolRequest.ts#L5)
-
-___
-
-### $CreateUserRequest
-
-• `Const` **$CreateUserRequest**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `description` | ``"A valid request payload for creating a user"`` |
-| `properties` | \{ `about`: \{ `description`: ``"About the user"`` ; `type`: ``"string"`` = "string" } ; `docs`: \{ `contains`: \{ `type`: ``"CreateDoc"`` = "CreateDoc" } ; `type`: ``"array"`` = "array" } ; `metadata`: \{ `description`: ``"(Optional) metadata"`` ; `properties`: {} = \{} } ; `name`: \{ `description`: ``"Name of the user"`` ; `type`: ``"string"`` = "string" } } |
-| `properties.about` | \{ `description`: ``"About the user"`` ; `type`: ``"string"`` = "string" } |
-| `properties.about.description` | ``"About the user"`` |
-| `properties.about.type` | ``"string"`` |
-| `properties.docs` | \{ `contains`: \{ `type`: ``"CreateDoc"`` = "CreateDoc" } ; `type`: ``"array"`` = "array" } |
-| `properties.docs.contains` | \{ `type`: ``"CreateDoc"`` = "CreateDoc" } |
-| `properties.docs.contains.type` | ``"CreateDoc"`` |
-| `properties.docs.type` | ``"array"`` |
-| `properties.metadata` | \{ `description`: ``"(Optional) metadata"`` ; `properties`: {} = \{} } |
-| `properties.metadata.description` | ``"(Optional) metadata"`` |
-| `properties.metadata.properties` | {} |
-| `properties.name` | \{ `description`: ``"Name of the user"`` ; `type`: ``"string"`` = "string" } |
-| `properties.name.description` | ``"Name of the user"`` |
-| `properties.name.type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$CreateUserRequest.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$CreateUserRequest.ts#L5)
-
-___
-
-### $Doc
-
-• `Const` **$Doc**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `content`: \{ `contains`: readonly [\{ `contains`: \{ `minItems`: ``1`` = 1; `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }, \{ `description`: ``"A single document chunk"`` ; `type`: ``"string"`` = "string" }] ; `description`: ``"Information content"`` ; `isRequired`: ``true`` = true; `type`: ``"one-of"`` = "one-of" } ; `created_at`: \{ `description`: ``"Doc created at"`` ; `format`: ``"date-time"`` = "date-time"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `id`: \{ `description`: ``"ID of doc"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `metadata`: \{ `description`: ``"optional metadata"`` ; `properties`: {} = \{} } ; `title`: \{ `description`: ``"Title describing what this bit of information contains"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } } |
-| `properties.content` | \{ `contains`: readonly [\{ `contains`: \{ `minItems`: ``1`` = 1; `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }, \{ `description`: ``"A single document chunk"`` ; `type`: ``"string"`` = "string" }] ; `description`: ``"Information content"`` ; `isRequired`: ``true`` = true; `type`: ``"one-of"`` = "one-of" } |
-| `properties.content.contains` | readonly [\{ `contains`: \{ `minItems`: ``1`` = 1; `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }, \{ `description`: ``"A single document chunk"`` ; `type`: ``"string"`` = "string" }] |
-| `properties.content.description` | ``"Information content"`` |
-| `properties.content.isRequired` | ``true`` |
-| `properties.content.type` | ``"one-of"`` |
-| `properties.created_at` | \{ `description`: ``"Doc created at"`` ; `format`: ``"date-time"`` = "date-time"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.created_at.description` | ``"Doc created at"`` |
-| `properties.created_at.format` | ``"date-time"`` |
-| `properties.created_at.isRequired` | ``true`` |
-| `properties.created_at.type` | ``"string"`` |
-| `properties.id` | \{ `description`: ``"ID of doc"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.id.description` | ``"ID of doc"`` |
-| `properties.id.format` | ``"uuid"`` |
-| `properties.id.isRequired` | ``true`` |
-| `properties.id.type` | ``"string"`` |
-| `properties.metadata` | \{ `description`: ``"optional metadata"`` ; `properties`: {} = \{} } |
-| `properties.metadata.description` | ``"optional metadata"`` |
-| `properties.metadata.properties` | {} |
-| `properties.title` | \{ `description`: ``"Title describing what this bit of information contains"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.title.description` | ``"Title describing what this bit of information contains"`` |
-| `properties.title.isRequired` | ``true`` |
-| `properties.title.type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$Doc.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$Doc.ts#L5)
-
-___
-
-### $DocIds
-
-• `Const` **$DocIds**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `agent_doc_ids`: \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `isRequired`: ``true`` = true; `type`: ``"array"`` = "array" } ; `user_doc_ids`: \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `isRequired`: ``true`` = true; `type`: ``"array"`` = "array" } } |
-| `properties.agent_doc_ids` | \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `isRequired`: ``true`` = true; `type`: ``"array"`` = "array" } |
-| `properties.agent_doc_ids.contains` | \{ `type`: ``"string"`` = "string" } |
-| `properties.agent_doc_ids.contains.type` | ``"string"`` |
-| `properties.agent_doc_ids.isRequired` | ``true`` |
-| `properties.agent_doc_ids.type` | ``"array"`` |
-| `properties.user_doc_ids` | \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `isRequired`: ``true`` = true; `type`: ``"array"`` = "array" } |
-| `properties.user_doc_ids.contains` | \{ `type`: ``"string"`` = "string" } |
-| `properties.user_doc_ids.contains.type` | ``"string"`` |
-| `properties.user_doc_ids.isRequired` | ``true`` |
-| `properties.user_doc_ids.type` | ``"array"`` |
-
-#### Defined in
-
-[src/api/schemas/$DocIds.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$DocIds.ts#L5)
-
-___
-
-### $FunctionCallOption
-
-• `Const` **$FunctionCallOption**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `description` | ``"Specifying a particular function via `{\"name\": \"my_function\"}` forces the model to call that function.\n "`` |
-| `properties` | \{ `name`: \{ `description`: ``"The name of the function to call."`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } } |
-| `properties.name` | \{ `description`: ``"The name of the function to call."`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.name.description` | ``"The name of the function to call."`` |
-| `properties.name.isRequired` | ``true`` |
-| `properties.name.type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$FunctionCallOption.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$FunctionCallOption.ts#L5)
-
-___
-
-### $FunctionDef
-
-• `Const` **$FunctionDef**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `description`: \{ `description`: ``"A description of what the function does, used by the model to choose when and how to call the function."`` ; `type`: ``"string"`` = "string" } ; `name`: \{ `description`: ``"The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64."`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `parameters`: \{ `description`: ``"Parameters accepeted by this function"`` ; `isRequired`: ``true`` = true; `type`: ``"FunctionParameters"`` = "FunctionParameters" } } |
-| `properties.description` | \{ `description`: ``"A description of what the function does, used by the model to choose when and how to call the function."`` ; `type`: ``"string"`` = "string" } |
-| `properties.description.description` | ``"A description of what the function does, used by the model to choose when and how to call the function."`` |
-| `properties.description.type` | ``"string"`` |
-| `properties.name` | \{ `description`: ``"The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64."`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.name.description` | ``"The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64."`` |
-| `properties.name.isRequired` | ``true`` |
-| `properties.name.type` | ``"string"`` |
-| `properties.parameters` | \{ `description`: ``"Parameters accepeted by this function"`` ; `isRequired`: ``true`` = true; `type`: ``"FunctionParameters"`` = "FunctionParameters" } |
-| `properties.parameters.description` | ``"Parameters accepeted by this function"`` |
-| `properties.parameters.isRequired` | ``true`` |
-| `properties.parameters.type` | ``"FunctionParameters"`` |
-
-#### Defined in
-
-[src/api/schemas/$FunctionDef.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$FunctionDef.ts#L5)
-
-___
-
-### $FunctionParameters
-
-• `Const` **$FunctionParameters**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `contains` | \{ `properties`: {} = \{} } |
-| `contains.properties` | {} |
-| `type` | ``"dictionary"`` |
-
-#### Defined in
-
-[src/api/schemas/$FunctionParameters.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$FunctionParameters.ts#L5)
-
-___
-
-### $InputChatMLMessage
-
-• `Const` **$InputChatMLMessage**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `content`: \{ `contains`: readonly [\{ `type`: ``"string"`` = "string" }] ; `description`: ``"ChatML content"`` ; `isRequired`: ``true`` = true; `type`: ``"one-of"`` = "one-of" } ; `continue`: \{ `description`: ``"Whether to continue this message or return a new one"`` ; `type`: ``"boolean"`` = "boolean" } ; `name`: \{ `description`: ``"ChatML name"`` ; `type`: ``"string"`` = "string" } ; `role`: \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } } |
-| `properties.content` | \{ `contains`: readonly [\{ `type`: ``"string"`` = "string" }] ; `description`: ``"ChatML content"`` ; `isRequired`: ``true`` = true; `type`: ``"one-of"`` = "one-of" } |
-| `properties.content.contains` | readonly [\{ `type`: ``"string"`` = "string" }] |
-| `properties.content.description` | ``"ChatML content"`` |
-| `properties.content.isRequired` | ``true`` |
-| `properties.content.type` | ``"one-of"`` |
-| `properties.continue` | \{ `description`: ``"Whether to continue this message or return a new one"`` ; `type`: ``"boolean"`` = "boolean" } |
-| `properties.continue.description` | ``"Whether to continue this message or return a new one"`` |
-| `properties.continue.type` | ``"boolean"`` |
-| `properties.name` | \{ `description`: ``"ChatML name"`` ; `type`: ``"string"`` = "string" } |
-| `properties.name.description` | ``"ChatML name"`` |
-| `properties.name.type` | ``"string"`` |
-| `properties.role` | \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } |
-| `properties.role.isRequired` | ``true`` |
-| `properties.role.type` | ``"Enum"`` |
-
-#### Defined in
-
-[src/api/schemas/$InputChatMLMessage.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$InputChatMLMessage.ts#L5)
-
-___
-
-### $JobStatus
-
-• `Const` **$JobStatus**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `created_at`: \{ `description`: ``"Job created at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `has_progress`: \{ `description`: ``"Whether this Job supports progress updates"`` ; `type`: ``"boolean"`` = "boolean" } ; `id`: \{ `description`: ``"Job id (UUID)"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `name`: \{ `description`: ``"Name of the job"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `progress`: \{ `description`: ``"Progress percentage"`` ; `maximum`: ``100`` = 100; `type`: ``"number"`` = "number" } ; `reason`: \{ `description`: ``"Reason for current state"`` ; `type`: ``"string"`` = "string" } ; `state`: \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } ; `updated_at`: \{ `description`: ``"Job updated at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } } |
-| `properties.created_at` | \{ `description`: ``"Job created at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.created_at.description` | ``"Job created at (RFC-3339 format)"`` |
-| `properties.created_at.format` | ``"date-time"`` |
-| `properties.created_at.isRequired` | ``true`` |
-| `properties.created_at.type` | ``"string"`` |
-| `properties.has_progress` | \{ `description`: ``"Whether this Job supports progress updates"`` ; `type`: ``"boolean"`` = "boolean" } |
-| `properties.has_progress.description` | ``"Whether this Job supports progress updates"`` |
-| `properties.has_progress.type` | ``"boolean"`` |
-| `properties.id` | \{ `description`: ``"Job id (UUID)"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.id.description` | ``"Job id (UUID)"`` |
-| `properties.id.format` | ``"uuid"`` |
-| `properties.id.isRequired` | ``true`` |
-| `properties.id.type` | ``"string"`` |
-| `properties.name` | \{ `description`: ``"Name of the job"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.name.description` | ``"Name of the job"`` |
-| `properties.name.isRequired` | ``true`` |
-| `properties.name.type` | ``"string"`` |
-| `properties.progress` | \{ `description`: ``"Progress percentage"`` ; `maximum`: ``100`` = 100; `type`: ``"number"`` = "number" } |
-| `properties.progress.description` | ``"Progress percentage"`` |
-| `properties.progress.maximum` | ``100`` |
-| `properties.progress.type` | ``"number"`` |
-| `properties.reason` | \{ `description`: ``"Reason for current state"`` ; `type`: ``"string"`` = "string" } |
-| `properties.reason.description` | ``"Reason for current state"`` |
-| `properties.reason.type` | ``"string"`` |
-| `properties.state` | \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } |
-| `properties.state.isRequired` | ``true`` |
-| `properties.state.type` | ``"Enum"`` |
-| `properties.updated_at` | \{ `description`: ``"Job updated at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } |
-| `properties.updated_at.description` | ``"Job updated at (RFC-3339 format)"`` |
-| `properties.updated_at.format` | ``"date-time"`` |
-| `properties.updated_at.type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$JobStatus.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$JobStatus.ts#L5)
-
-___
-
-### $Memory
-
-• `Const` **$Memory**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `agent_id`: \{ `description`: ``"ID of the agent"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `content`: \{ `description`: ``"Content of the memory"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `created_at`: \{ `description`: ``"Memory created at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `entities`: \{ `contains`: \{ `properties`: {} = \{} } ; `isRequired`: ``true`` = true; `type`: ``"array"`` = "array" } ; `id`: \{ `description`: ``"Memory id (UUID)"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `last_accessed_at`: \{ `description`: ``"Memory last accessed at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } ; `sentiment`: \{ `description`: ``"Sentiment (valence) of the memory on a scale of -1 to 1"`` ; `maximum`: ``1`` = 1; `minimum`: ``-1`` = -1; `type`: ``"number"`` = "number" } ; `timestamp`: \{ `description`: ``"Memory happened at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } ; `user_id`: \{ `description`: ``"ID of the user"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } } |
-| `properties.agent_id` | \{ `description`: ``"ID of the agent"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.agent_id.description` | ``"ID of the agent"`` |
-| `properties.agent_id.format` | ``"uuid"`` |
-| `properties.agent_id.isRequired` | ``true`` |
-| `properties.agent_id.type` | ``"string"`` |
-| `properties.content` | \{ `description`: ``"Content of the memory"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.content.description` | ``"Content of the memory"`` |
-| `properties.content.isRequired` | ``true`` |
-| `properties.content.type` | ``"string"`` |
-| `properties.created_at` | \{ `description`: ``"Memory created at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.created_at.description` | ``"Memory created at (RFC-3339 format)"`` |
-| `properties.created_at.format` | ``"date-time"`` |
-| `properties.created_at.isRequired` | ``true`` |
-| `properties.created_at.type` | ``"string"`` |
-| `properties.entities` | \{ `contains`: \{ `properties`: {} = \{} } ; `isRequired`: ``true`` = true; `type`: ``"array"`` = "array" } |
-| `properties.entities.contains` | \{ `properties`: {} = \{} } |
-| `properties.entities.contains.properties` | {} |
-| `properties.entities.isRequired` | ``true`` |
-| `properties.entities.type` | ``"array"`` |
-| `properties.id` | \{ `description`: ``"Memory id (UUID)"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.id.description` | ``"Memory id (UUID)"`` |
-| `properties.id.format` | ``"uuid"`` |
-| `properties.id.isRequired` | ``true`` |
-| `properties.id.type` | ``"string"`` |
-| `properties.last_accessed_at` | \{ `description`: ``"Memory last accessed at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } |
-| `properties.last_accessed_at.description` | ``"Memory last accessed at (RFC-3339 format)"`` |
-| `properties.last_accessed_at.format` | ``"date-time"`` |
-| `properties.last_accessed_at.type` | ``"string"`` |
-| `properties.sentiment` | \{ `description`: ``"Sentiment (valence) of the memory on a scale of -1 to 1"`` ; `maximum`: ``1`` = 1; `minimum`: ``-1`` = -1; `type`: ``"number"`` = "number" } |
-| `properties.sentiment.description` | ``"Sentiment (valence) of the memory on a scale of -1 to 1"`` |
-| `properties.sentiment.maximum` | ``1`` |
-| `properties.sentiment.minimum` | ``-1`` |
-| `properties.sentiment.type` | ``"number"`` |
-| `properties.timestamp` | \{ `description`: ``"Memory happened at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } |
-| `properties.timestamp.description` | ``"Memory happened at (RFC-3339 format)"`` |
-| `properties.timestamp.format` | ``"date-time"`` |
-| `properties.timestamp.type` | ``"string"`` |
-| `properties.user_id` | \{ `description`: ``"ID of the user"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.user_id.description` | ``"ID of the user"`` |
-| `properties.user_id.format` | ``"uuid"`` |
-| `properties.user_id.isRequired` | ``true`` |
-| `properties.user_id.type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$Memory.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$Memory.ts#L5)
-
-___
-
-### $MemoryAccessOptions
-
-• `Const` **$MemoryAccessOptions**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `recall`: \{ `description`: ``"Whether previous memories should be recalled or not"`` ; `type`: ``"boolean"`` = "boolean" } ; `record`: \{ `description`: ``"Whether this interaction should be recorded in history or not"`` ; `type`: ``"boolean"`` = "boolean" } ; `remember`: \{ `description`: ``"Whether this interaction should form memories or not"`` ; `type`: ``"boolean"`` = "boolean" } } |
-| `properties.recall` | \{ `description`: ``"Whether previous memories should be recalled or not"`` ; `type`: ``"boolean"`` = "boolean" } |
-| `properties.recall.description` | ``"Whether previous memories should be recalled or not"`` |
-| `properties.recall.type` | ``"boolean"`` |
-| `properties.record` | \{ `description`: ``"Whether this interaction should be recorded in history or not"`` ; `type`: ``"boolean"`` = "boolean" } |
-| `properties.record.description` | ``"Whether this interaction should be recorded in history or not"`` |
-| `properties.record.type` | ``"boolean"`` |
-| `properties.remember` | \{ `description`: ``"Whether this interaction should form memories or not"`` ; `type`: ``"boolean"`` = "boolean" } |
-| `properties.remember.description` | ``"Whether this interaction should form memories or not"`` |
-| `properties.remember.type` | ``"boolean"`` |
-
-#### Defined in
-
-[src/api/schemas/$MemoryAccessOptions.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$MemoryAccessOptions.ts#L5)
-
-___
-
-### $NamedToolChoice
-
-• `Const` **$NamedToolChoice**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `description` | ``"Specifies a tool the model should use. Use to force the model to call a specific function."`` |
-| `properties` | \{ `function`: \{ `isRequired`: ``true`` = true; `properties`: \{ `name`: \{ `description`: ``"The name of the function to call."`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } } } ; `type`: \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } } |
-| `properties.function` | \{ `isRequired`: ``true`` = true; `properties`: \{ `name`: \{ `description`: ``"The name of the function to call."`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } } } |
-| `properties.function.isRequired` | ``true`` |
-| `properties.function.properties` | \{ `name`: \{ `description`: ``"The name of the function to call."`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } } |
-| `properties.function.properties.name` | \{ `description`: ``"The name of the function to call."`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.function.properties.name.description` | ``"The name of the function to call."`` |
-| `properties.function.properties.name.isRequired` | ``true`` |
-| `properties.function.properties.name.type` | ``"string"`` |
-| `properties.type` | \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } |
-| `properties.type.isRequired` | ``true`` |
-| `properties.type.type` | ``"Enum"`` |
-
-#### Defined in
-
-[src/api/schemas/$NamedToolChoice.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$NamedToolChoice.ts#L5)
-
-___
-
-### $PartialFunctionDef
-
-• `Const` **$PartialFunctionDef**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `description`: \{ `description`: ``"A description of what the function does, used by the model to choose when and how to call the function."`` ; `type`: ``"string"`` = "string" } ; `name`: \{ `description`: ``"The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64."`` ; `type`: ``"string"`` = "string" } ; `parameters`: \{ `description`: ``"Parameters accepeted by this function"`` ; `type`: ``"FunctionParameters"`` = "FunctionParameters" } } |
-| `properties.description` | \{ `description`: ``"A description of what the function does, used by the model to choose when and how to call the function."`` ; `type`: ``"string"`` = "string" } |
-| `properties.description.description` | ``"A description of what the function does, used by the model to choose when and how to call the function."`` |
-| `properties.description.type` | ``"string"`` |
-| `properties.name` | \{ `description`: ``"The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64."`` ; `type`: ``"string"`` = "string" } |
-| `properties.name.description` | ``"The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64."`` |
-| `properties.name.type` | ``"string"`` |
-| `properties.parameters` | \{ `description`: ``"Parameters accepeted by this function"`` ; `type`: ``"FunctionParameters"`` = "FunctionParameters" } |
-| `properties.parameters.description` | ``"Parameters accepeted by this function"`` |
-| `properties.parameters.type` | ``"FunctionParameters"`` |
-
-#### Defined in
-
-[src/api/schemas/$PartialFunctionDef.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$PartialFunctionDef.ts#L5)
-
-___
-
-### $PatchAgentRequest
-
-• `Const` **$PatchAgentRequest**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `description` | ``"A request for patching an agent"`` |
-| `properties` | \{ `about`: \{ `description`: ``"About the agent"`` ; `type`: ``"string"`` = "string" } ; `default_settings`: \{ `description`: ``"Default model settings to start every session with"`` ; `type`: ``"AgentDefaultSettings"`` = "AgentDefaultSettings" } ; `instructions`: \{ `contains`: readonly [\{ `type`: ``"string"`` = "string" }, \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }] ; `description`: ``"Instructions for the agent"`` ; `type`: ``"one-of"`` = "one-of" } ; `metadata`: \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } ; `model`: \{ `description`: ``"Name of the model that the agent is supposed to use"`` ; `type`: ``"string"`` = "string" } ; `name`: \{ `description`: ``"Name of the agent"`` ; `type`: ``"string"`` = "string" } } |
-| `properties.about` | \{ `description`: ``"About the agent"`` ; `type`: ``"string"`` = "string" } |
-| `properties.about.description` | ``"About the agent"`` |
-| `properties.about.type` | ``"string"`` |
-| `properties.default_settings` | \{ `description`: ``"Default model settings to start every session with"`` ; `type`: ``"AgentDefaultSettings"`` = "AgentDefaultSettings" } |
-| `properties.default_settings.description` | ``"Default model settings to start every session with"`` |
-| `properties.default_settings.type` | ``"AgentDefaultSettings"`` |
-| `properties.instructions` | \{ `contains`: readonly [\{ `type`: ``"string"`` = "string" }, \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }] ; `description`: ``"Instructions for the agent"`` ; `type`: ``"one-of"`` = "one-of" } |
-| `properties.instructions.contains` | readonly [\{ `type`: ``"string"`` = "string" }, \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }] |
-| `properties.instructions.description` | ``"Instructions for the agent"`` |
-| `properties.instructions.type` | ``"one-of"`` |
-| `properties.metadata` | \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } |
-| `properties.metadata.description` | ``"Optional metadata"`` |
-| `properties.metadata.properties` | {} |
-| `properties.model` | \{ `description`: ``"Name of the model that the agent is supposed to use"`` ; `type`: ``"string"`` = "string" } |
-| `properties.model.description` | ``"Name of the model that the agent is supposed to use"`` |
-| `properties.model.type` | ``"string"`` |
-| `properties.name` | \{ `description`: ``"Name of the agent"`` ; `type`: ``"string"`` = "string" } |
-| `properties.name.description` | ``"Name of the agent"`` |
-| `properties.name.type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$PatchAgentRequest.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$PatchAgentRequest.ts#L5)
-
-___
-
-### $PatchSessionRequest
-
-• `Const` **$PatchSessionRequest**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `description` | ``"A request for patching a session"`` |
-| `properties` | \{ `context_overflow`: \{ `description`: ``"Action to start on context window overflow"`` ; `type`: ``"string"`` = "string" } ; `metadata`: \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } ; `situation`: \{ `description`: ``"Updated situation for this session"`` ; `type`: ``"string"`` = "string" } ; `token_budget`: \{ `description`: ``"Threshold value for the adaptive context functionality"`` ; `type`: ``"number"`` = "number" } } |
-| `properties.context_overflow` | \{ `description`: ``"Action to start on context window overflow"`` ; `type`: ``"string"`` = "string" } |
-| `properties.context_overflow.description` | ``"Action to start on context window overflow"`` |
-| `properties.context_overflow.type` | ``"string"`` |
-| `properties.metadata` | \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } |
-| `properties.metadata.description` | ``"Optional metadata"`` |
-| `properties.metadata.properties` | {} |
-| `properties.situation` | \{ `description`: ``"Updated situation for this session"`` ; `type`: ``"string"`` = "string" } |
-| `properties.situation.description` | ``"Updated situation for this session"`` |
-| `properties.situation.type` | ``"string"`` |
-| `properties.token_budget` | \{ `description`: ``"Threshold value for the adaptive context functionality"`` ; `type`: ``"number"`` = "number" } |
-| `properties.token_budget.description` | ``"Threshold value for the adaptive context functionality"`` |
-| `properties.token_budget.type` | ``"number"`` |
-
-#### Defined in
-
-[src/api/schemas/$PatchSessionRequest.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$PatchSessionRequest.ts#L5)
-
-___
-
-### $PatchToolRequest
-
-• `Const` **$PatchToolRequest**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `function`: \{ `description`: ``"Function definition and parameters"`` ; `isRequired`: ``true`` = true; `type`: ``"PartialFunctionDef"`` = "PartialFunctionDef" } } |
-| `properties.function` | \{ `description`: ``"Function definition and parameters"`` ; `isRequired`: ``true`` = true; `type`: ``"PartialFunctionDef"`` = "PartialFunctionDef" } |
-| `properties.function.description` | ``"Function definition and parameters"`` |
-| `properties.function.isRequired` | ``true`` |
-| `properties.function.type` | ``"PartialFunctionDef"`` |
-
-#### Defined in
-
-[src/api/schemas/$PatchToolRequest.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$PatchToolRequest.ts#L5)
-
-___
-
-### $PatchUserRequest
-
-• `Const` **$PatchUserRequest**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `description` | ``"A request for patching a user"`` |
-| `properties` | \{ `about`: \{ `description`: ``"About the user"`` ; `type`: ``"string"`` = "string" } ; `metadata`: \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } ; `name`: \{ `description`: ``"Name of the user"`` ; `type`: ``"string"`` = "string" } } |
-| `properties.about` | \{ `description`: ``"About the user"`` ; `type`: ``"string"`` = "string" } |
-| `properties.about.description` | ``"About the user"`` |
-| `properties.about.type` | ``"string"`` |
-| `properties.metadata` | \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } |
-| `properties.metadata.description` | ``"Optional metadata"`` |
-| `properties.metadata.properties` | {} |
-| `properties.name` | \{ `description`: ``"Name of the user"`` ; `type`: ``"string"`` = "string" } |
-| `properties.name.description` | ``"Name of the user"`` |
-| `properties.name.type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$PatchUserRequest.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$PatchUserRequest.ts#L5)
-
-___
-
-### $ResourceCreatedResponse
-
-• `Const` **$ResourceCreatedResponse**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `created_at`: \{ `format`: ``"date-time"`` = "date-time"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `id`: \{ `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `jobs`: \{ `contains`: \{ `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" } } |
-| `properties.created_at` | \{ `format`: ``"date-time"`` = "date-time"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.created_at.format` | ``"date-time"`` |
-| `properties.created_at.isRequired` | ``true`` |
-| `properties.created_at.type` | ``"string"`` |
-| `properties.id` | \{ `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.id.format` | ``"uuid"`` |
-| `properties.id.isRequired` | ``true`` |
-| `properties.id.type` | ``"string"`` |
-| `properties.jobs` | \{ `contains`: \{ `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" } |
-| `properties.jobs.contains` | \{ `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } |
-| `properties.jobs.contains.format` | ``"uuid"`` |
-| `properties.jobs.contains.type` | ``"string"`` |
-| `properties.jobs.type` | ``"array"`` |
-
-#### Defined in
-
-[src/api/schemas/$ResourceCreatedResponse.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$ResourceCreatedResponse.ts#L5)
-
-___
-
-### $ResourceDeletedResponse
-
-• `Const` **$ResourceDeletedResponse**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `deleted_at`: \{ `format`: ``"date-time"`` = "date-time"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `id`: \{ `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `jobs`: \{ `contains`: \{ `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" } } |
-| `properties.deleted_at` | \{ `format`: ``"date-time"`` = "date-time"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.deleted_at.format` | ``"date-time"`` |
-| `properties.deleted_at.isRequired` | ``true`` |
-| `properties.deleted_at.type` | ``"string"`` |
-| `properties.id` | \{ `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.id.format` | ``"uuid"`` |
-| `properties.id.isRequired` | ``true`` |
-| `properties.id.type` | ``"string"`` |
-| `properties.jobs` | \{ `contains`: \{ `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" } |
-| `properties.jobs.contains` | \{ `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } |
-| `properties.jobs.contains.format` | ``"uuid"`` |
-| `properties.jobs.contains.type` | ``"string"`` |
-| `properties.jobs.type` | ``"array"`` |
-
-#### Defined in
-
-[src/api/schemas/$ResourceDeletedResponse.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$ResourceDeletedResponse.ts#L5)
-
-___
-
-### $ResourceUpdatedResponse
-
-• `Const` **$ResourceUpdatedResponse**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `id`: \{ `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `jobs`: \{ `contains`: \{ `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" } ; `updated_at`: \{ `format`: ``"date-time"`` = "date-time"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } } |
-| `properties.id` | \{ `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.id.format` | ``"uuid"`` |
-| `properties.id.isRequired` | ``true`` |
-| `properties.id.type` | ``"string"`` |
-| `properties.jobs` | \{ `contains`: \{ `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" } |
-| `properties.jobs.contains` | \{ `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } |
-| `properties.jobs.contains.format` | ``"uuid"`` |
-| `properties.jobs.contains.type` | ``"string"`` |
-| `properties.jobs.type` | ``"array"`` |
-| `properties.updated_at` | \{ `format`: ``"date-time"`` = "date-time"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.updated_at.format` | ``"date-time"`` |
-| `properties.updated_at.isRequired` | ``true`` |
-| `properties.updated_at.type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$ResourceUpdatedResponse.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$ResourceUpdatedResponse.ts#L5)
-
-___
-
-### $Session
-
-• `Const` **$Session**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `agent_id`: \{ `description`: ``"Agent ID of agent associated with this session"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `context_overflow`: \{ `description`: ``"Action to start on context window overflow"`` ; `type`: ``"string"`` = "string" } ; `created_at`: \{ `description`: ``"Session created at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } ; `id`: \{ `description`: ``"Session id (UUID)"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `metadata`: \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } ; `render_templates`: \{ `description`: ``"Render system and assistant message content as jinja templates"`` ; `type`: ``"boolean"`` = "boolean" } ; `situation`: \{ `description`: ``"A specific situation that sets the background for this session"`` ; `type`: ``"string"`` = "string" } ; `summary`: \{ `description`: ``"(null at the beginning) - generated automatically after every interaction"`` ; `type`: ``"string"`` = "string" } ; `token_budget`: \{ `description`: ``"Threshold value for the adaptive context functionality"`` ; `type`: ``"number"`` = "number" } ; `updated_at`: \{ `description`: ``"Session updated at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } ; `user_id`: \{ `description`: ``"User ID of user associated with this session"`` ; `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } } |
-| `properties.agent_id` | \{ `description`: ``"Agent ID of agent associated with this session"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.agent_id.description` | ``"Agent ID of agent associated with this session"`` |
-| `properties.agent_id.format` | ``"uuid"`` |
-| `properties.agent_id.isRequired` | ``true`` |
-| `properties.agent_id.type` | ``"string"`` |
-| `properties.context_overflow` | \{ `description`: ``"Action to start on context window overflow"`` ; `type`: ``"string"`` = "string" } |
-| `properties.context_overflow.description` | ``"Action to start on context window overflow"`` |
-| `properties.context_overflow.type` | ``"string"`` |
-| `properties.created_at` | \{ `description`: ``"Session created at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } |
-| `properties.created_at.description` | ``"Session created at (RFC-3339 format)"`` |
-| `properties.created_at.format` | ``"date-time"`` |
-| `properties.created_at.type` | ``"string"`` |
-| `properties.id` | \{ `description`: ``"Session id (UUID)"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.id.description` | ``"Session id (UUID)"`` |
-| `properties.id.format` | ``"uuid"`` |
-| `properties.id.isRequired` | ``true`` |
-| `properties.id.type` | ``"string"`` |
-| `properties.metadata` | \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } |
-| `properties.metadata.description` | ``"Optional metadata"`` |
-| `properties.metadata.properties` | {} |
-| `properties.render_templates` | \{ `description`: ``"Render system and assistant message content as jinja templates"`` ; `type`: ``"boolean"`` = "boolean" } |
-| `properties.render_templates.description` | ``"Render system and assistant message content as jinja templates"`` |
-| `properties.render_templates.type` | ``"boolean"`` |
-| `properties.situation` | \{ `description`: ``"A specific situation that sets the background for this session"`` ; `type`: ``"string"`` = "string" } |
-| `properties.situation.description` | ``"A specific situation that sets the background for this session"`` |
-| `properties.situation.type` | ``"string"`` |
-| `properties.summary` | \{ `description`: ``"(null at the beginning) - generated automatically after every interaction"`` ; `type`: ``"string"`` = "string" } |
-| `properties.summary.description` | ``"(null at the beginning) - generated automatically after every interaction"`` |
-| `properties.summary.type` | ``"string"`` |
-| `properties.token_budget` | \{ `description`: ``"Threshold value for the adaptive context functionality"`` ; `type`: ``"number"`` = "number" } |
-| `properties.token_budget.description` | ``"Threshold value for the adaptive context functionality"`` |
-| `properties.token_budget.type` | ``"number"`` |
-| `properties.updated_at` | \{ `description`: ``"Session updated at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } |
-| `properties.updated_at.description` | ``"Session updated at (RFC-3339 format)"`` |
-| `properties.updated_at.format` | ``"date-time"`` |
-| `properties.updated_at.type` | ``"string"`` |
-| `properties.user_id` | \{ `description`: ``"User ID of user associated with this session"`` ; `format`: ``"uuid"`` = "uuid"; `type`: ``"string"`` = "string" } |
-| `properties.user_id.description` | ``"User ID of user associated with this session"`` |
-| `properties.user_id.format` | ``"uuid"`` |
-| `properties.user_id.type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$Session.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$Session.ts#L5)
-
-___
-
-### $Suggestion
-
-• `Const` **$Suggestion**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `content`: \{ `description`: ``"The content of the suggestion"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `created_at`: \{ `description`: ``"Suggestion created at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } ; `message_id`: \{ `description`: ``"The message that produced it"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `session_id`: \{ `description`: ``"Session this suggestion belongs to"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `target`: \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } } |
-| `properties.content` | \{ `description`: ``"The content of the suggestion"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.content.description` | ``"The content of the suggestion"`` |
-| `properties.content.isRequired` | ``true`` |
-| `properties.content.type` | ``"string"`` |
-| `properties.created_at` | \{ `description`: ``"Suggestion created at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } |
-| `properties.created_at.description` | ``"Suggestion created at (RFC-3339 format)"`` |
-| `properties.created_at.format` | ``"date-time"`` |
-| `properties.created_at.type` | ``"string"`` |
-| `properties.message_id` | \{ `description`: ``"The message that produced it"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.message_id.description` | ``"The message that produced it"`` |
-| `properties.message_id.format` | ``"uuid"`` |
-| `properties.message_id.isRequired` | ``true`` |
-| `properties.message_id.type` | ``"string"`` |
-| `properties.session_id` | \{ `description`: ``"Session this suggestion belongs to"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.session_id.description` | ``"Session this suggestion belongs to"`` |
-| `properties.session_id.format` | ``"uuid"`` |
-| `properties.session_id.isRequired` | ``true`` |
-| `properties.session_id.type` | ``"string"`` |
-| `properties.target` | \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } |
-| `properties.target.isRequired` | ``true`` |
-| `properties.target.type` | ``"Enum"`` |
-
-#### Defined in
-
-[src/api/schemas/$Suggestion.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$Suggestion.ts#L5)
-
-___
-
-### $Tool
-
-• `Const` **$Tool**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `function`: \{ `contains`: readonly [\{ `type`: ``"FunctionDef"`` = "FunctionDef" }] ; `description`: ``"Function definition and parameters"`` ; `isRequired`: ``true`` = true; `type`: ``"one-of"`` = "one-of" } ; `id`: \{ `description`: ``"Tool ID"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `type`: \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } } |
-| `properties.function` | \{ `contains`: readonly [\{ `type`: ``"FunctionDef"`` = "FunctionDef" }] ; `description`: ``"Function definition and parameters"`` ; `isRequired`: ``true`` = true; `type`: ``"one-of"`` = "one-of" } |
-| `properties.function.contains` | readonly [\{ `type`: ``"FunctionDef"`` = "FunctionDef" }] |
-| `properties.function.description` | ``"Function definition and parameters"`` |
-| `properties.function.isRequired` | ``true`` |
-| `properties.function.type` | ``"one-of"`` |
-| `properties.id` | \{ `description`: ``"Tool ID"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.id.description` | ``"Tool ID"`` |
-| `properties.id.format` | ``"uuid"`` |
-| `properties.id.isRequired` | ``true`` |
-| `properties.id.type` | ``"string"`` |
-| `properties.type` | \{ `isRequired`: ``true`` = true; `type`: ``"Enum"`` = "Enum" } |
-| `properties.type.isRequired` | ``true`` |
-| `properties.type.type` | ``"Enum"`` |
-
-#### Defined in
-
-[src/api/schemas/$Tool.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$Tool.ts#L5)
-
-___
-
-### $ToolChoiceOption
-
-• `Const` **$ToolChoiceOption**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `contains` | readonly [\{ `type`: ``"Enum"`` = "Enum" }, \{ `type`: ``"NamedToolChoice"`` = "NamedToolChoice" }] |
-| `description` | ``"Controls which (if any) function is called by the model.\n `none` means the model will not call a function and instead generates a message.\n `auto` means the model can pick between generating a message or calling a function.\n Specifying a particular function via `{\"type: \"function\", \"function\": {\"name\": \"my_function\"}}` forces the model to call that function.\n `none` is the default when no functions are present. `auto` is the default if functions are present.\n "`` |
-| `type` | ``"one-of"`` |
-
-#### Defined in
-
-[src/api/schemas/$ToolChoiceOption.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$ToolChoiceOption.ts#L5)
-
-___
-
-### $UpdateAgentRequest
-
-• `Const` **$UpdateAgentRequest**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `description` | ``"A valid request payload for updating an agent"`` |
-| `properties` | \{ `about`: \{ `description`: ``"About the agent"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `default_settings`: \{ `description`: ``"Default model settings to start every session with"`` ; `type`: ``"AgentDefaultSettings"`` = "AgentDefaultSettings" } ; `instructions`: \{ `contains`: readonly [\{ `type`: ``"string"`` = "string" }, \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }] ; `description`: ``"Instructions for the agent"`` ; `type`: ``"one-of"`` = "one-of" } ; `metadata`: \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } ; `model`: \{ `description`: ``"Name of the model that the agent is supposed to use"`` ; `type`: ``"string"`` = "string" } ; `name`: \{ `description`: ``"Name of the agent"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } } |
-| `properties.about` | \{ `description`: ``"About the agent"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.about.description` | ``"About the agent"`` |
-| `properties.about.isRequired` | ``true`` |
-| `properties.about.type` | ``"string"`` |
-| `properties.default_settings` | \{ `description`: ``"Default model settings to start every session with"`` ; `type`: ``"AgentDefaultSettings"`` = "AgentDefaultSettings" } |
-| `properties.default_settings.description` | ``"Default model settings to start every session with"`` |
-| `properties.default_settings.type` | ``"AgentDefaultSettings"`` |
-| `properties.instructions` | \{ `contains`: readonly [\{ `type`: ``"string"`` = "string" }, \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }] ; `description`: ``"Instructions for the agent"`` ; `type`: ``"one-of"`` = "one-of" } |
-| `properties.instructions.contains` | readonly [\{ `type`: ``"string"`` = "string" }, \{ `contains`: \{ `type`: ``"string"`` = "string" } ; `type`: ``"array"`` = "array" }] |
-| `properties.instructions.description` | ``"Instructions for the agent"`` |
-| `properties.instructions.type` | ``"one-of"`` |
-| `properties.metadata` | \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } |
-| `properties.metadata.description` | ``"Optional metadata"`` |
-| `properties.metadata.properties` | {} |
-| `properties.model` | \{ `description`: ``"Name of the model that the agent is supposed to use"`` ; `type`: ``"string"`` = "string" } |
-| `properties.model.description` | ``"Name of the model that the agent is supposed to use"`` |
-| `properties.model.type` | ``"string"`` |
-| `properties.name` | \{ `description`: ``"Name of the agent"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.name.description` | ``"Name of the agent"`` |
-| `properties.name.isRequired` | ``true`` |
-| `properties.name.type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$UpdateAgentRequest.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$UpdateAgentRequest.ts#L5)
-
-___
-
-### $UpdateSessionRequest
-
-• `Const` **$UpdateSessionRequest**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `description` | ``"A valid request payload for updating a session"`` |
-| `properties` | \{ `context_overflow`: \{ `description`: ``"Action to start on context window overflow"`` ; `type`: ``"string"`` = "string" } ; `metadata`: \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } ; `situation`: \{ `description`: ``"Updated situation for this session"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `token_budget`: \{ `description`: ``"Threshold value for the adaptive context functionality"`` ; `type`: ``"number"`` = "number" } } |
-| `properties.context_overflow` | \{ `description`: ``"Action to start on context window overflow"`` ; `type`: ``"string"`` = "string" } |
-| `properties.context_overflow.description` | ``"Action to start on context window overflow"`` |
-| `properties.context_overflow.type` | ``"string"`` |
-| `properties.metadata` | \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } |
-| `properties.metadata.description` | ``"Optional metadata"`` |
-| `properties.metadata.properties` | {} |
-| `properties.situation` | \{ `description`: ``"Updated situation for this session"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.situation.description` | ``"Updated situation for this session"`` |
-| `properties.situation.isRequired` | ``true`` |
-| `properties.situation.type` | ``"string"`` |
-| `properties.token_budget` | \{ `description`: ``"Threshold value for the adaptive context functionality"`` ; `type`: ``"number"`` = "number" } |
-| `properties.token_budget.description` | ``"Threshold value for the adaptive context functionality"`` |
-| `properties.token_budget.type` | ``"number"`` |
-
-#### Defined in
-
-[src/api/schemas/$UpdateSessionRequest.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$UpdateSessionRequest.ts#L5)
-
-___
-
-### $UpdateToolRequest
-
-• `Const` **$UpdateToolRequest**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `function`: \{ `description`: ``"Function definition and parameters"`` ; `isRequired`: ``true`` = true; `type`: ``"FunctionDef"`` = "FunctionDef" } } |
-| `properties.function` | \{ `description`: ``"Function definition and parameters"`` ; `isRequired`: ``true`` = true; `type`: ``"FunctionDef"`` = "FunctionDef" } |
-| `properties.function.description` | ``"Function definition and parameters"`` |
-| `properties.function.isRequired` | ``true`` |
-| `properties.function.type` | ``"FunctionDef"`` |
-
-#### Defined in
-
-[src/api/schemas/$UpdateToolRequest.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$UpdateToolRequest.ts#L5)
-
-___
-
-### $UpdateUserRequest
-
-• `Const` **$UpdateUserRequest**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `description` | ``"A valid request payload for updating a user"`` |
-| `properties` | \{ `about`: \{ `description`: ``"About the user"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `metadata`: \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } ; `name`: \{ `description`: ``"Name of the user"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } } |
-| `properties.about` | \{ `description`: ``"About the user"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.about.description` | ``"About the user"`` |
-| `properties.about.isRequired` | ``true`` |
-| `properties.about.type` | ``"string"`` |
-| `properties.metadata` | \{ `description`: ``"Optional metadata"`` ; `properties`: {} = \{} } |
-| `properties.metadata.description` | ``"Optional metadata"`` |
-| `properties.metadata.properties` | {} |
-| `properties.name` | \{ `description`: ``"Name of the user"`` ; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.name.description` | ``"Name of the user"`` |
-| `properties.name.isRequired` | ``true`` |
-| `properties.name.type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$UpdateUserRequest.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$UpdateUserRequest.ts#L5)
-
-___
-
-### $User
-
-• `Const` **$User**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `properties` | \{ `about`: \{ `description`: ``"About the user"`` ; `type`: ``"string"`` = "string" } ; `created_at`: \{ `description`: ``"User created at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } ; `id`: \{ `description`: ``"User id (UUID)"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } ; `metadata`: \{ `description`: ``"(Optional) metadata"`` ; `properties`: {} = \{} } ; `name`: \{ `description`: ``"Name of the user"`` ; `type`: ``"string"`` = "string" } ; `updated_at`: \{ `description`: ``"User updated at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } } |
-| `properties.about` | \{ `description`: ``"About the user"`` ; `type`: ``"string"`` = "string" } |
-| `properties.about.description` | ``"About the user"`` |
-| `properties.about.type` | ``"string"`` |
-| `properties.created_at` | \{ `description`: ``"User created at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } |
-| `properties.created_at.description` | ``"User created at (RFC-3339 format)"`` |
-| `properties.created_at.format` | ``"date-time"`` |
-| `properties.created_at.type` | ``"string"`` |
-| `properties.id` | \{ `description`: ``"User id (UUID)"`` ; `format`: ``"uuid"`` = "uuid"; `isRequired`: ``true`` = true; `type`: ``"string"`` = "string" } |
-| `properties.id.description` | ``"User id (UUID)"`` |
-| `properties.id.format` | ``"uuid"`` |
-| `properties.id.isRequired` | ``true`` |
-| `properties.id.type` | ``"string"`` |
-| `properties.metadata` | \{ `description`: ``"(Optional) metadata"`` ; `properties`: {} = \{} } |
-| `properties.metadata.description` | ``"(Optional) metadata"`` |
-| `properties.metadata.properties` | {} |
-| `properties.name` | \{ `description`: ``"Name of the user"`` ; `type`: ``"string"`` = "string" } |
-| `properties.name.description` | ``"Name of the user"`` |
-| `properties.name.type` | ``"string"`` |
-| `properties.updated_at` | \{ `description`: ``"User updated at (RFC-3339 format)"`` ; `format`: ``"date-time"`` = "date-time"; `type`: ``"string"`` = "string" } |
-| `properties.updated_at.description` | ``"User updated at (RFC-3339 format)"`` |
-| `properties.updated_at.format` | ``"date-time"`` |
-| `properties.updated_at.type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$User.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$User.ts#L5)
-
-___
-
-### $agent\_id
-
-• `Const` **$agent\_id**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `format` | ``"uuid"`` |
-| `type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$agent_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$agent_id.ts#L5)
-
-___
-
-### $doc\_id
-
-• `Const` **$doc\_id**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `format` | ``"uuid"`` |
-| `type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$doc_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$doc_id.ts#L5)
-
-___
-
-### $job\_id
-
-• `Const` **$job\_id**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `format` | ``"uuid"`` |
-| `type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$job_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$job_id.ts#L5)
-
-___
-
-### $memory\_id
-
-• `Const` **$memory\_id**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `format` | ``"uuid"`` |
-| `type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$memory_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$memory_id.ts#L5)
-
-___
-
-### $message\_id
-
-• `Const` **$message\_id**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `format` | ``"uuid"`` |
-| `type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$message_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$message_id.ts#L5)
-
-___
-
-### $session\_id
-
-• `Const` **$session\_id**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `format` | ``"uuid"`` |
-| `type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$session_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$session_id.ts#L5)
-
-___
-
-### $tool\_id
-
-• `Const` **$tool\_id**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `format` | ``"uuid"`` |
-| `type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$tool_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$tool_id.ts#L5)
-
-___
-
-### $user\_id
-
-• `Const` **$user\_id**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `format` | ``"uuid"`` |
-| `type` | ``"string"`` |
-
-#### Defined in
-
-[src/api/schemas/$user_id.ts:5](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/schemas/$user_id.ts#L5)
-
-___
-
-### OpenAPI
-
-• `Const` **OpenAPI**: [`OpenAPIConfig`](api.md#openapiconfig)
-
-#### Defined in
-
-[src/api/core/OpenAPI.ts:22](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/api/core/OpenAPI.ts#L22)
diff --git a/docs/js-sdk-docs/modules/api_JulepApiClient.md b/docs/js-sdk-docs/modules/api_JulepApiClient.md
deleted file mode 100644
index 07f3cc365..000000000
--- a/docs/js-sdk-docs/modules/api_JulepApiClient.md
+++ /dev/null
@@ -1,9 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / api/JulepApiClient
-
-# Module: api/JulepApiClient
-
-## Table of contents
-
-### Classes
-
-- [JulepApiClient](../classes/api_JulepApiClient.JulepApiClient.md)
diff --git a/docs/js-sdk-docs/modules/managers_agent.md b/docs/js-sdk-docs/modules/managers_agent.md
deleted file mode 100644
index 6f5ea9677..000000000
--- a/docs/js-sdk-docs/modules/managers_agent.md
+++ /dev/null
@@ -1,9 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / managers/agent
-
-# Module: managers/agent
-
-## Table of contents
-
-### Classes
-
-- [AgentsManager](../classes/managers_agent.AgentsManager.md)
diff --git a/docs/js-sdk-docs/modules/managers_base.md b/docs/js-sdk-docs/modules/managers_base.md
deleted file mode 100644
index fd0e930a7..000000000
--- a/docs/js-sdk-docs/modules/managers_base.md
+++ /dev/null
@@ -1,9 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / managers/base
-
-# Module: managers/base
-
-## Table of contents
-
-### Classes
-
-- [BaseManager](../classes/managers_base.BaseManager.md)
diff --git a/docs/js-sdk-docs/modules/managers_doc.md b/docs/js-sdk-docs/modules/managers_doc.md
deleted file mode 100644
index b7a31fa3a..000000000
--- a/docs/js-sdk-docs/modules/managers_doc.md
+++ /dev/null
@@ -1,9 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / managers/doc
-
-# Module: managers/doc
-
-## Table of contents
-
-### Classes
-
-- [DocsManager](../classes/managers_doc.DocsManager.md)
diff --git a/docs/js-sdk-docs/modules/managers_memory.md b/docs/js-sdk-docs/modules/managers_memory.md
deleted file mode 100644
index 720bd4e70..000000000
--- a/docs/js-sdk-docs/modules/managers_memory.md
+++ /dev/null
@@ -1,9 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / managers/memory
-
-# Module: managers/memory
-
-## Table of contents
-
-### Classes
-
-- [MemoriesManager](../classes/managers_memory.MemoriesManager.md)
diff --git a/docs/js-sdk-docs/modules/managers_session.md b/docs/js-sdk-docs/modules/managers_session.md
deleted file mode 100644
index 38c9d75ef..000000000
--- a/docs/js-sdk-docs/modules/managers_session.md
+++ /dev/null
@@ -1,13 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / managers/session
-
-# Module: managers/session
-
-## Table of contents
-
-### Classes
-
-- [SessionsManager](../classes/managers_session.SessionsManager.md)
-
-### Interfaces
-
-- [CreateSessionPayload](../interfaces/managers_session.CreateSessionPayload.md)
diff --git a/docs/js-sdk-docs/modules/managers_tool.md b/docs/js-sdk-docs/modules/managers_tool.md
deleted file mode 100644
index 1c425999c..000000000
--- a/docs/js-sdk-docs/modules/managers_tool.md
+++ /dev/null
@@ -1,9 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / managers/tool
-
-# Module: managers/tool
-
-## Table of contents
-
-### Classes
-
-- [ToolsManager](../classes/managers_tool.ToolsManager.md)
diff --git a/docs/js-sdk-docs/modules/managers_user.md b/docs/js-sdk-docs/modules/managers_user.md
deleted file mode 100644
index d0d6bffbf..000000000
--- a/docs/js-sdk-docs/modules/managers_user.md
+++ /dev/null
@@ -1,9 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / managers/user
-
-# Module: managers/user
-
-## Table of contents
-
-### Classes
-
-- [UsersManager](../classes/managers_user.UsersManager.md)
diff --git a/docs/js-sdk-docs/modules/utils_invariant.md b/docs/js-sdk-docs/modules/utils_invariant.md
deleted file mode 100644
index 47dc67d54..000000000
--- a/docs/js-sdk-docs/modules/utils_invariant.md
+++ /dev/null
@@ -1,32 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / utils/invariant
-
-# Module: utils/invariant
-
-## Table of contents
-
-### Functions
-
-- [invariant](utils_invariant.md#invariant)
-
-## Functions
-
-### invariant
-
-▸ **invariant**(`condition`, `message?`): `void`
-
-Ensures that a condition is met, throwing a custom error message if not.
-
-#### Parameters
-
-| Name | Type | Default value | Description |
-| :------ | :------ | :------ | :------ |
-| `condition` | `any` | `undefined` | The condition to test. If falsy, an error is thrown. |
-| `message` | `string` | `"Invariant Violation"` | Optional. The error message to throw if the condition is not met. Defaults to "Invariant Violation". |
-
-#### Returns
-
-`void`
-
-#### Defined in
-
-[src/utils/invariant.ts:6](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/utils/invariant.ts#L6)
diff --git a/docs/js-sdk-docs/modules/utils_isValidUuid4.md b/docs/js-sdk-docs/modules/utils_isValidUuid4.md
deleted file mode 100644
index ea1ea5c8d..000000000
--- a/docs/js-sdk-docs/modules/utils_isValidUuid4.md
+++ /dev/null
@@ -1,36 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / utils/isValidUuid4
-
-# Module: utils/isValidUuid4
-
-## Table of contents
-
-### Functions
-
-- [isValidUuid4](utils_isValidUuid4.md#isvaliduuid4)
-
-## Functions
-
-### isValidUuid4
-
-▸ **isValidUuid4**(`uuidToTest`): `boolean`
-
-Validates if the input string is a valid UUID v4.
-This function performs a two-step validation process:
-1. Validates the format of the UUID using `uuidValidate`.
-2. Checks that the version of the UUID is 4 using `uuidVersion`.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `uuidToTest` | `string` | The string to test for a valid UUID v4. |
-
-#### Returns
-
-`boolean`
-
-True if the input is a valid UUID v4, otherwise false.
-
-#### Defined in
-
-[src/utils/isValidUuid4.ts:11](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/utils/isValidUuid4.ts#L11)
diff --git a/docs/js-sdk-docs/modules/utils_openaiPatch.md b/docs/js-sdk-docs/modules/utils_openaiPatch.md
deleted file mode 100644
index adddee617..000000000
--- a/docs/js-sdk-docs/modules/utils_openaiPatch.md
+++ /dev/null
@@ -1,33 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / utils/openaiPatch
-
-# Module: utils/openaiPatch
-
-## Table of contents
-
-### Functions
-
-- [patchCreate](utils_openaiPatch.md#patchcreate)
-
-## Functions
-
-### patchCreate
-
-▸ **patchCreate**(`client`, `scope?`): `any`
-
-Patches the 'create' method of an OpenAI client instance to ensure a default model is used if none is specified.
-This is useful for enforcing a consistent model usage across different parts of the SDK.
-
-#### Parameters
-
-| Name | Type | Default value | Description |
-| :------ | :------ | :------ | :------ |
-| `client` | `any` | `undefined` | The OpenAI client instance to be patched. |
-| `scope` | `any` | `null` | Optional. The scope in which the original 'create' method is bound. Defaults to the client itself if not provided. |
-
-#### Returns
-
-`any`
-
-#### Defined in
-
-[src/utils/openaiPatch.ts:8](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/utils/openaiPatch.ts#L8)
diff --git a/docs/js-sdk-docs/modules/utils_requestConstructor.md b/docs/js-sdk-docs/modules/utils_requestConstructor.md
deleted file mode 100644
index a18bf52fe..000000000
--- a/docs/js-sdk-docs/modules/utils_requestConstructor.md
+++ /dev/null
@@ -1,9 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / utils/requestConstructor
-
-# Module: utils/requestConstructor
-
-## Table of contents
-
-### Classes
-
-- [CustomHttpRequest](../classes/utils_requestConstructor.CustomHttpRequest.md)
diff --git a/docs/js-sdk-docs/modules/utils_xor.md b/docs/js-sdk-docs/modules/utils_xor.md
deleted file mode 100644
index 7df656742..000000000
--- a/docs/js-sdk-docs/modules/utils_xor.md
+++ /dev/null
@@ -1,30 +0,0 @@
-[@julep/sdk](../README.md) / [Modules](../modules.md) / utils/xor
-
-# Module: utils/xor
-
-## Table of contents
-
-### Functions
-
-- [xor](utils_xor.md#xor)
-
-## Functions
-
-### xor
-
-▸ **xor**(`a`, `b`): `any`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `a` | `any` |
-| `b` | `any` |
-
-#### Returns
-
-`any`
-
-#### Defined in
-
-[src/utils/xor.ts:1](https://github.com/julep-ai/julep/blob/1aacc650d71dfc8cc6e2993599c2493784d992ef/sdks/ts/src/utils/xor.ts#L1)
diff --git a/docs/julep-concepts.md b/docs/julep-concepts.md
index 14177343c..b6fc945d7 100644
--- a/docs/julep-concepts.md
+++ b/docs/julep-concepts.md
@@ -702,7 +702,7 @@ Remember to replace `YOUR_API_KEY`, `{agent_id}`, and `{tool_id}` with your actu
### Partial application of arguments to tools
-Often, it's necessary to _partial_ some arguments of a particular tool. You can do that by setting the `x-tool-parameters` field on the `metadata` of the required scope. For instance, say you have the following user-defined function tool:
+Often, it's necessary to _partial_ some arguments of a particular tool. You can do that by setting the `x-integration-args` field on the `metadata` of the required scope. For instance, say you have the following user-defined function tool:
```yaml
name: check_account_status
description: Get the account status for a customer
@@ -719,7 +719,7 @@ When chatting with a particular user, the `customer_id` field is expected to be
{
"metadata": {
...
- "x-tool-parameters": {
+ "x-integration-args": {
"function:check_account_status": {
"customer_id": 42
}
@@ -737,12 +737,12 @@ This follows the precedence order of `metadata` fields. For example, say you are
user:
id: 11
metadata:
- x-tool-parameters:
+ x-integration-args:
favorite: Emma Roberts
agent:
id: 22
metadata:
- x-tool-parameters:
+ x-integration-args:
favorite: Emma Watson
tools:
- type: function
@@ -752,7 +752,7 @@ agent:
session:
id: 123
metadata:
- x-tool-parameters:
+ x-integration-args:
favorite: Emma Stone
```
diff --git a/docs/python-sdk-docs/README.md b/docs/python-sdk-docs/README.md
deleted file mode 100644
index cc09eca06..000000000
--- a/docs/python-sdk-docs/README.md
+++ /dev/null
@@ -1,211 +0,0 @@
-# Julep Python SDK Index
-
-> Auto-generated documentation index.
-
-A full list of `Julep Python SDK` project modules.
-
-- [Julep](julep/index.md#julep)
- - [Julep Python Library](julep/api/index.md#julep-python-library)
- - [Client](julep/api/client.md#client)
- - [Core](julep/api/core/index.md#core)
- - [ApiError](julep/api/core/api_error.md#apierror)
- - [Client Wrapper](julep/api/core/client_wrapper.md#client-wrapper)
- - [Datetime Utils](julep/api/core/datetime_utils.md#datetime-utils)
- - [File](julep/api/core/file.md#file)
- - [HttpClient](julep/api/core/http_client.md#httpclient)
- - [Jsonable Encoder](julep/api/core/jsonable_encoder.md#jsonable-encoder)
- - [Pydantic Utilities](julep/api/core/pydantic_utilities.md#pydantic-utilities)
- - [Query Encoder](julep/api/core/query_encoder.md#query-encoder)
- - [Remove None From Dict](julep/api/core/remove_none_from_dict.md#remove-none-from-dict)
- - [RequestOptions](julep/api/core/request_options.md#requestoptions)
- - [Environment](julep/api/environment.md#environment)
- - [Types](julep/api/types/index.md#types)
- - [Agent Docs Route List Request Direction](julep/api/types/agent_docs_route_list_request_direction.md#agent-docs-route-list-request-direction)
- - [Agent Docs Route List Request Sort By](julep/api/types/agent_docs_route_list_request_sort_by.md#agent-docs-route-list-request-sort-by)
- - [AgentDocsRouteListResponse](julep/api/types/agent_docs_route_list_response.md#agentdocsroutelistresponse)
- - [Agent Tools Route List Request Direction](julep/api/types/agent_tools_route_list_request_direction.md#agent-tools-route-list-request-direction)
- - [Agent Tools Route List Request Sort By](julep/api/types/agent_tools_route_list_request_sort_by.md#agent-tools-route-list-request-sort-by)
- - [AgentToolsRouteListResponse](julep/api/types/agent_tools_route_list_response.md#agenttoolsroutelistresponse)
- - [AgentsAgent](julep/api/types/agents_agent.md#agentsagent)
- - [Agents Agent Instructions](julep/api/types/agents_agent_instructions.md#agents-agent-instructions)
- - [AgentsCreateAgentRequest](julep/api/types/agents_create_agent_request.md#agentscreateagentrequest)
- - [Agents Create Agent Request Instructions](julep/api/types/agents_create_agent_request_instructions.md#agents-create-agent-request-instructions)
- - [AgentsCreateOrUpdateAgentRequest](julep/api/types/agents_create_or_update_agent_request.md#agentscreateorupdateagentrequest)
- - [Agents Docs Search Route Search Request Body](julep/api/types/agents_docs_search_route_search_request_body.md#agents-docs-search-route-search-request-body)
- - [Agents Patch Agent Request Instructions](julep/api/types/agents_patch_agent_request_instructions.md#agents-patch-agent-request-instructions)
- - [Agents Route List Request Direction](julep/api/types/agents_route_list_request_direction.md#agents-route-list-request-direction)
- - [Agents Route List Request Sort By](julep/api/types/agents_route_list_request_sort_by.md#agents-route-list-request-sort-by)
- - [AgentsRouteListResponse](julep/api/types/agents_route_list_response.md#agentsroutelistresponse)
- - [AgentsUpdateAgentRequest](julep/api/types/agents_update_agent_request.md#agentsupdateagentrequest)
- - [Agents Update Agent Request Instructions](julep/api/types/agents_update_agent_request_instructions.md#agents-update-agent-request-instructions)
- - [ChatBaseChatOutput](julep/api/types/chat_base_chat_output.md#chatbasechatoutput)
- - [ChatBaseChatResponse](julep/api/types/chat_base_chat_response.md#chatbasechatresponse)
- - [ChatBaseTokenLogProb](julep/api/types/chat_base_token_log_prob.md#chatbasetokenlogprob)
- - [ChatChatInputData](julep/api/types/chat_chat_input_data.md#chatchatinputdata)
- - [Chat Chat Input Data Tool Choice](julep/api/types/chat_chat_input_data_tool_choice.md#chat-chat-input-data-tool-choice)
- - [ChatChatOutputChunk](julep/api/types/chat_chat_output_chunk.md#chatchatoutputchunk)
- - [ChatChatSettings](julep/api/types/chat_chat_settings.md#chatchatsettings)
- - [ChatChunkChatResponse](julep/api/types/chat_chunk_chat_response.md#chatchunkchatresponse)
- - [ChatCompetionUsage](julep/api/types/chat_competion_usage.md#chatcompetionusage)
- - [ChatCompletionResponseFormat](julep/api/types/chat_completion_response_format.md#chatcompletionresponseformat)
- - [Chat Completion Response Format Type](julep/api/types/chat_completion_response_format_type.md#chat-completion-response-format-type)
- - [ChatDefaultChatSettings](julep/api/types/chat_default_chat_settings.md#chatdefaultchatsettings)
- - [Chat Finish Reason](julep/api/types/chat_finish_reason.md#chat-finish-reason)
- - [ChatLogProbResponse](julep/api/types/chat_log_prob_response.md#chatlogprobresponse)
- - [ChatMessageChatResponse](julep/api/types/chat_message_chat_response.md#chatmessagechatresponse)
- - [Chat Message Chat Response Choices Item](julep/api/types/chat_message_chat_response_choices_item.md#chat-message-chat-response-choices-item)
- - [ChatMultipleChatOutput](julep/api/types/chat_multiple_chat_output.md#chatmultiplechatoutput)
- - [ChatOpenAiSettings](julep/api/types/chat_open_ai_settings.md#chatopenaisettings)
- - [Chat Route Generate Response](julep/api/types/chat_route_generate_response.md#chat-route-generate-response)
- - [ChatSingleChatOutput](julep/api/types/chat_single_chat_output.md#chatsinglechatoutput)
- - [ChatTokenLogProb](julep/api/types/chat_token_log_prob.md#chattokenlogprob)
- - [Common Identifier Safe Unicode](julep/api/types/common_identifier_safe_unicode.md#common-identifier-safe-unicode)
- - [Common Limit](julep/api/types/common_limit.md#common-limit)
- - [Common Logit Bias](julep/api/types/common_logit_bias.md#common-logit-bias)
- - [Common Offset](julep/api/types/common_offset.md#common-offset)
- - [Common Py Expression](julep/api/types/common_py_expression.md#common-py-expression)
- - [CommonResourceCreatedResponse](julep/api/types/common_resource_created_response.md#commonresourcecreatedresponse)
- - [CommonResourceDeletedResponse](julep/api/types/common_resource_deleted_response.md#commonresourcedeletedresponse)
- - [CommonResourceUpdatedResponse](julep/api/types/common_resource_updated_response.md#commonresourceupdatedresponse)
- - [Common Tool Ref](julep/api/types/common_tool_ref.md#common-tool-ref)
- - [Common Uuid](julep/api/types/common_uuid.md#common-uuid)
- - [Common Valid Python Identifier](julep/api/types/common_valid_python_identifier.md#common-valid-python-identifier)
- - [DocsBaseDocSearchRequest](julep/api/types/docs_base_doc_search_request.md#docsbasedocsearchrequest)
- - [DocsCreateDocRequest](julep/api/types/docs_create_doc_request.md#docscreatedocrequest)
- - [Docs Create Doc Request Content](julep/api/types/docs_create_doc_request_content.md#docs-create-doc-request-content)
- - [DocsDoc](julep/api/types/docs_doc.md#docsdoc)
- - [Docs Doc Content](julep/api/types/docs_doc_content.md#docs-doc-content)
- - [DocsDocOwner](julep/api/types/docs_doc_owner.md#docsdocowner)
- - [Docs Doc Owner Role](julep/api/types/docs_doc_owner_role.md#docs-doc-owner-role)
- - [DocsDocReference](julep/api/types/docs_doc_reference.md#docsdocreference)
- - [DocsDocSearchResponse](julep/api/types/docs_doc_search_response.md#docsdocsearchresponse)
- - [DocsEmbedQueryRequest](julep/api/types/docs_embed_query_request.md#docsembedqueryrequest)
- - [Docs Embed Query Request Text](julep/api/types/docs_embed_query_request_text.md#docs-embed-query-request-text)
- - [DocsEmbedQueryResponse](julep/api/types/docs_embed_query_response.md#docsembedqueryresponse)
- - [DocsHybridDocSearchRequest](julep/api/types/docs_hybrid_doc_search_request.md#docshybriddocsearchrequest)
- - [DocsSnippet](julep/api/types/docs_snippet.md#docssnippet)
- - [DocsTextOnlyDocSearchRequest](julep/api/types/docs_text_only_doc_search_request.md#docstextonlydocsearchrequest)
- - [DocsVectorDocSearchRequest](julep/api/types/docs_vector_doc_search_request.md#docsvectordocsearchrequest)
- - [EntriesBaseEntry](julep/api/types/entries_base_entry.md#entriesbaseentry)
- - [Entries Base Entry Content](julep/api/types/entries_base_entry_content.md#entries-base-entry-content)
- - [Entries Base Entry Content Item](julep/api/types/entries_base_entry_content_item.md#entries-base-entry-content-item)
- - [Entries Base Entry Content Item Item](julep/api/types/entries_base_entry_content_item_item.md#entries-base-entry-content-item-item)
- - [Entries Base Entry Source](julep/api/types/entries_base_entry_source.md#entries-base-entry-source)
- - [EntriesChatMlImageContentPart](julep/api/types/entries_chat_ml_image_content_part.md#entrieschatmlimagecontentpart)
- - [Entries Chat Ml Role](julep/api/types/entries_chat_ml_role.md#entries-chat-ml-role)
- - [EntriesChatMlTextContentPart](julep/api/types/entries_chat_ml_text_content_part.md#entrieschatmltextcontentpart)
- - [EntriesEntry](julep/api/types/entries_entry.md#entriesentry)
- - [EntriesHistory](julep/api/types/entries_history.md#entrieshistory)
- - [Entries Image Detail](julep/api/types/entries_image_detail.md#entries-image-detail)
- - [EntriesImageUrl](julep/api/types/entries_image_url.md#entriesimageurl)
- - [EntriesInputChatMlMessage](julep/api/types/entries_input_chat_ml_message.md#entriesinputchatmlmessage)
- - [Entries Input Chat Ml Message Content](julep/api/types/entries_input_chat_ml_message_content.md#entries-input-chat-ml-message-content)
- - [Entries Input Chat Ml Message Content Item](julep/api/types/entries_input_chat_ml_message_content_item.md#entries-input-chat-ml-message-content-item)
- - [EntriesRelation](julep/api/types/entries_relation.md#entriesrelation)
- - [Execution Transitions Route List Request Direction](julep/api/types/execution_transitions_route_list_request_direction.md#execution-transitions-route-list-request-direction)
- - [Execution Transitions Route List Request Sort By](julep/api/types/execution_transitions_route_list_request_sort_by.md#execution-transitions-route-list-request-sort-by)
- - [ExecutionTransitionsRouteListResponse](julep/api/types/execution_transitions_route_list_response.md#executiontransitionsroutelistresponse)
- - [ExecutionTransitionsRouteListResponseResultsItem](julep/api/types/execution_transitions_route_list_response_results_item.md#executiontransitionsroutelistresponseresultsitem)
- - [ExecutionsExecution](julep/api/types/executions_execution.md#executionsexecution)
- - [Executions Execution Status](julep/api/types/executions_execution_status.md#executions-execution-status)
- - [ExecutionsResumeExecutionRequest](julep/api/types/executions_resume_execution_request.md#executionsresumeexecutionrequest)
- - [ExecutionsStopExecutionRequest](julep/api/types/executions_stop_execution_request.md#executionsstopexecutionrequest)
- - [ExecutionsTransition](julep/api/types/executions_transition.md#executionstransition)
- - [ExecutionsTransitionTarget](julep/api/types/executions_transition_target.md#executionstransitiontarget)
- - [Executions Transition Type](julep/api/types/executions_transition_type.md#executions-transition-type)
- - [Executions Update Execution Request](julep/api/types/executions_update_execution_request.md#executions-update-execution-request)
- - [Jobs Job State](julep/api/types/jobs_job_state.md#jobs-job-state)
- - [JobsJobStatus](julep/api/types/jobs_job_status.md#jobsjobstatus)
- - [Sessions Context Overflow Type](julep/api/types/sessions_context_overflow_type.md#sessions-context-overflow-type)
- - [SessionsCreateOrUpdateSessionRequest](julep/api/types/sessions_create_or_update_session_request.md#sessionscreateorupdatesessionrequest)
- - [SessionsCreateSessionRequest](julep/api/types/sessions_create_session_request.md#sessionscreatesessionrequest)
- - [SessionsMultiAgentMultiUserSession](julep/api/types/sessions_multi_agent_multi_user_session.md#sessionsmultiagentmultiusersession)
- - [SessionsMultiAgentNoUserSession](julep/api/types/sessions_multi_agent_no_user_session.md#sessionsmultiagentnousersession)
- - [SessionsMultiAgentSingleUserSession](julep/api/types/sessions_multi_agent_single_user_session.md#sessionsmultiagentsingleusersession)
- - [Sessions Route List Request Direction](julep/api/types/sessions_route_list_request_direction.md#sessions-route-list-request-direction)
- - [Sessions Route List Request Sort By](julep/api/types/sessions_route_list_request_sort_by.md#sessions-route-list-request-sort-by)
- - [SessionsRouteListResponse](julep/api/types/sessions_route_list_response.md#sessionsroutelistresponse)
- - [Sessions Session](julep/api/types/sessions_session.md#sessions-session)
- - [SessionsSingleAgentMultiUserSession](julep/api/types/sessions_single_agent_multi_user_session.md#sessionssingleagentmultiusersession)
- - [SessionsSingleAgentNoUserSession](julep/api/types/sessions_single_agent_no_user_session.md#sessionssingleagentnousersession)
- - [SessionsSingleAgentSingleUserSession](julep/api/types/sessions_single_agent_single_user_session.md#sessionssingleagentsingleusersession)
- - [Task Executions Route List Request Direction](julep/api/types/task_executions_route_list_request_direction.md#task-executions-route-list-request-direction)
- - [Task Executions Route List Request Sort By](julep/api/types/task_executions_route_list_request_sort_by.md#task-executions-route-list-request-sort-by)
- - [TaskExecutionsRouteListResponse](julep/api/types/task_executions_route_list_response.md#taskexecutionsroutelistresponse)
- - [Tasks Base Workflow Step](julep/api/types/tasks_base_workflow_step.md#tasks-base-workflow-step)
- - [TasksCaseThen](julep/api/types/tasks_case_then.md#taskscasethen)
- - [Tasks Case Then Then](julep/api/types/tasks_case_then_then.md#tasks-case-then-then)
- - [TasksCreateTaskRequest](julep/api/types/tasks_create_task_request.md#taskscreatetaskrequest)
- - [Tasks Create Task Request Main Item](julep/api/types/tasks_create_task_request_main_item.md#tasks-create-task-request-main-item)
- - [TasksEmbedStep](julep/api/types/tasks_embed_step.md#tasksembedstep)
- - [TasksErrorWorkflowStep](julep/api/types/tasks_error_workflow_step.md#taskserrorworkflowstep)
- - [TasksEvaluateStep](julep/api/types/tasks_evaluate_step.md#tasksevaluatestep)
- - [TasksForeachDo](julep/api/types/tasks_foreach_do.md#tasksforeachdo)
- - [Tasks Foreach Do Do](julep/api/types/tasks_foreach_do_do.md#tasks-foreach-do-do)
- - [TasksForeachStep](julep/api/types/tasks_foreach_step.md#tasksforeachstep)
- - [TasksGetStep](julep/api/types/tasks_get_step.md#tasksgetstep)
- - [TasksIfElseWorkflowStep](julep/api/types/tasks_if_else_workflow_step.md#tasksifelseworkflowstep)
- - [Tasks If Else Workflow Step Else](julep/api/types/tasks_if_else_workflow_step_else.md#tasks-if-else-workflow-step-else)
- - [Tasks If Else Workflow Step Then](julep/api/types/tasks_if_else_workflow_step_then.md#tasks-if-else-workflow-step-then)
- - [TasksLogStep](julep/api/types/tasks_log_step.md#taskslogstep)
- - [TasksMapOver](julep/api/types/tasks_map_over.md#tasksmapover)
- - [TasksMapReduceStep](julep/api/types/tasks_map_reduce_step.md#tasksmapreducestep)
- - [TasksParallelStep](julep/api/types/tasks_parallel_step.md#tasksparallelstep)
- - [Tasks Parallel Step Parallel Item](julep/api/types/tasks_parallel_step_parallel_item.md#tasks-parallel-step-parallel-item)
- - [Tasks Patch Task Request Main Item](julep/api/types/tasks_patch_task_request_main_item.md#tasks-patch-task-request-main-item)
- - [TasksPromptStep](julep/api/types/tasks_prompt_step.md#taskspromptstep)
- - [Tasks Prompt Step Prompt](julep/api/types/tasks_prompt_step_prompt.md#tasks-prompt-step-prompt)
- - [TasksReturnStep](julep/api/types/tasks_return_step.md#tasksreturnstep)
- - [Tasks Route List Request Direction](julep/api/types/tasks_route_list_request_direction.md#tasks-route-list-request-direction)
- - [Tasks Route List Request Sort By](julep/api/types/tasks_route_list_request_sort_by.md#tasks-route-list-request-sort-by)
- - [TasksRouteListResponse](julep/api/types/tasks_route_list_response.md#tasksroutelistresponse)
- - [TasksSearchStep](julep/api/types/tasks_search_step.md#taskssearchstep)
- - [Tasks Search Step Search](julep/api/types/tasks_search_step_search.md#tasks-search-step-search)
- - [TasksSetKey](julep/api/types/tasks_set_key.md#taskssetkey)
- - [TasksSetStep](julep/api/types/tasks_set_step.md#taskssetstep)
- - [Tasks Set Step Set](julep/api/types/tasks_set_step_set.md#tasks-set-step-set)
- - [TasksSleepFor](julep/api/types/tasks_sleep_for.md#taskssleepfor)
- - [TasksSleepStep](julep/api/types/tasks_sleep_step.md#taskssleepstep)
- - [TasksSwitchStep](julep/api/types/tasks_switch_step.md#tasksswitchstep)
- - [TasksTask](julep/api/types/tasks_task.md#taskstask)
- - [Tasks Task Main Item](julep/api/types/tasks_task_main_item.md#tasks-task-main-item)
- - [TasksTaskTool](julep/api/types/tasks_task_tool.md#taskstasktool)
- - [TasksToolCallStep](julep/api/types/tasks_tool_call_step.md#taskstoolcallstep)
- - [Tasks Update Task Request Main Item](julep/api/types/tasks_update_task_request_main_item.md#tasks-update-task-request-main-item)
- - [TasksWaitForInputStep](julep/api/types/tasks_wait_for_input_step.md#taskswaitforinputstep)
- - [TasksYieldStep](julep/api/types/tasks_yield_step.md#tasksyieldstep)
- - [ToolsChosenFunctionCall](julep/api/types/tools_chosen_function_call.md#toolschosenfunctioncall)
- - [Tools Chosen Tool Call](julep/api/types/tools_chosen_tool_call.md#tools-chosen-tool-call)
- - [ToolsCreateToolRequest](julep/api/types/tools_create_tool_request.md#toolscreatetoolrequest)
- - [ToolsFunctionCallOption](julep/api/types/tools_function_call_option.md#toolsfunctioncalloption)
- - [ToolsFunctionDef](julep/api/types/tools_function_def.md#toolsfunctiondef)
- - [ToolsFunctionTool](julep/api/types/tools_function_tool.md#toolsfunctiontool)
- - [ToolsNamedFunctionChoice](julep/api/types/tools_named_function_choice.md#toolsnamedfunctionchoice)
- - [Tools Named Tool Choice](julep/api/types/tools_named_tool_choice.md#tools-named-tool-choice)
- - [Tools Tool](julep/api/types/tools_tool.md#tools-tool)
- - [ToolsToolResponse](julep/api/types/tools_tool_response.md#toolstoolresponse)
- - [Tools Tool Type](julep/api/types/tools_tool_type.md#tools-tool-type)
- - [User Docs Route List Request Direction](julep/api/types/user_docs_route_list_request_direction.md#user-docs-route-list-request-direction)
- - [User Docs Route List Request Sort By](julep/api/types/user_docs_route_list_request_sort_by.md#user-docs-route-list-request-sort-by)
- - [UserDocsRouteListResponse](julep/api/types/user_docs_route_list_response.md#userdocsroutelistresponse)
- - [User Docs Search Route Search Request Body](julep/api/types/user_docs_search_route_search_request_body.md#user-docs-search-route-search-request-body)
- - [UsersCreateOrUpdateUserRequest](julep/api/types/users_create_or_update_user_request.md#userscreateorupdateuserrequest)
- - [UsersCreateUserRequest](julep/api/types/users_create_user_request.md#userscreateuserrequest)
- - [Users Route List Request Direction](julep/api/types/users_route_list_request_direction.md#users-route-list-request-direction)
- - [Users Route List Request Sort By](julep/api/types/users_route_list_request_sort_by.md#users-route-list-request-sort-by)
- - [UsersRouteListResponse](julep/api/types/users_route_list_response.md#usersroutelistresponse)
- - [UsersUser](julep/api/types/users_user.md#usersuser)
- - [Client](julep/client.md#client)
- - [Env](julep/env.md#env)
- - [Managers](julep/managers/index.md#managers)
- - [Agent](julep/managers/agent.md#agent)
- - [Base](julep/managers/base.md#base)
- - [Doc](julep/managers/doc.md#doc)
- - [Memory](julep/managers/memory.md#memory)
- - [Session](julep/managers/session.md#session)
- - [Task](julep/managers/task.md#task)
- - [Tool](julep/managers/tool.md#tool)
- - [Types](julep/managers/types.md#types)
- - [User](julep/managers/user.md#user)
- - [Utils](julep/utils/index.md#utils)
- - [Openai Patch](julep/utils/openai_patch.md#openai-patch)
diff --git a/docs/python-sdk-docs/julep/api/client.md b/docs/python-sdk-docs/julep/api/client.md
deleted file mode 100644
index 34fe3b1f4..000000000
--- a/docs/python-sdk-docs/julep/api/client.md
+++ /dev/null
@@ -1,6554 +0,0 @@
-# Client
-
-[Julep Python SDK Index](../../README.md#julep-python-sdk-index) / [Julep](../index.md#julep) / [Julep Python Library](./index.md#julep-python-library) / Client
-
-> Auto-generated documentation for [julep.api.client](../../../../../../julep/api/client.py) module.
-
-#### Attributes
-
-- `OMIT` - this is used as the default value for optional parameters: typing.cast(typing.Any, ...)
-
-
-- [Client](#client)
- - [AsyncJulepApi](#asyncjulepapi)
- - [JulepApi](#julepapi)
-
-## AsyncJulepApi
-
-[Show source in client.py:3706](../../../../../../julep/api/client.py#L3706)
-
-Use this class to access the different functions within the SDK. You can instantiate any number of clients with different configuration that will propagate to these functions.
-
-Parameters
-----------
-base_url : typing.Optional[str]
- The base url to use for requests from the client.
-
-environment : JulepApiEnvironment
- The environment to use for requests from the client. from .environment import JulepApiEnvironment
-
-Defaults to JulepApiEnvironment.DEFAULT
-
-auth_key : str
-api_key : str
-timeout : typing.Optional[float]
- The timeout to be used, in seconds, for requests. By default the timeout is 300 seconds, unless a custom httpx client is used, in which case this default is not enforced.
-
-follow_redirects : typing.Optional[bool]
- Whether the default httpx client follows redirects or not, this is irrelevant if a custom httpx client is passed in.
-
-httpx_client : typing.Optional[httpx.AsyncClient]
- The httpx client to use for making requests, a preconfigured client is used by default, however this is useful should you want to pass in any custom httpx configuration.
-
-Examples
---------
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-#### Signature
-
-```python
-class AsyncJulepApi:
- def __init__(
- self,
- base_url: typing.Optional[str] = None,
- environment: JulepApiEnvironment = JulepApiEnvironment.DEFAULT,
- auth_key: str,
- api_key: str,
- timeout: typing.Optional[float] = None,
- follow_redirects: typing.Optional[bool] = True,
- httpx_client: typing.Optional[httpx.AsyncClient] = None,
- ): ...
-```
-
-### AsyncJulepApi().agent_docs_route_create
-
-[Show source in client.py:4404](../../../../../../julep/api/client.py#L4404)
-
-Create a Doc for this Agent
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-title : CommonIdentifierSafeUnicode
- Title describing what this document contains
-
-content : DocsCreateDocRequestContent
- Contents of the document
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agent_docs_route_create(
- id="id",
- title="title",
- content="content",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agent_docs_route_create(
- self,
- id: CommonUuid,
- title: CommonIdentifierSafeUnicode,
- content: DocsCreateDocRequestContent,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().agent_docs_route_delete
-
-[Show source in client.py:4474](../../../../../../julep/api/client.py#L4474)
-
-Delete a Doc for this Agent
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be deleted
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agent_docs_route_delete(
- id="id",
- child_id="child_id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agent_docs_route_delete(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceDeletedResponse: ...
-```
-
-### AsyncJulepApi().agent_docs_route_list
-
-[Show source in client.py:4317](../../../../../../julep/api/client.py#L4317)
-
-List Docs owned by an Agent
-
-Parameters
-----------
-id : CommonUuid
- ID of parent
-
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : AgentDocsRouteListRequestSortBy
- Sort by a field
-
-direction : AgentDocsRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-AgentDocsRouteListResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agent_docs_route_list(
- id="id",
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agent_docs_route_list(
- self,
- id: CommonUuid,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: AgentDocsRouteListRequestSortBy,
- direction: AgentDocsRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> AgentDocsRouteListResponse: ...
-```
-
-### AsyncJulepApi().agent_tools_route_create
-
-[Show source in client.py:5127](../../../../../../julep/api/client.py#L5127)
-
-Create a new tool for this agent
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-name : CommonIdentifierSafeUnicode
- Name of the agent
-
-about : str
- About the agent
-
-model : str
- Model name to use (gpt-4-turbo, gemini-nano etc)
-
-instructions : AgentsCreateAgentRequestInstructions
- Instructions for the agent
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-default_settings : typing.Optional[ChatDefaultChatSettings]
- Default settings for all sessions created by this agent
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agent_tools_route_create(
- id="id",
- name="name",
- about="about",
- model="model",
- instructions="instructions",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agent_tools_route_create(
- self,
- id: CommonUuid,
- name: CommonIdentifierSafeUnicode,
- about: str,
- model: str,
- instructions: AgentsCreateAgentRequestInstructions,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- default_settings: typing.Optional[ChatDefaultChatSettings] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().agent_tools_route_delete
-
-[Show source in client.py:5309](../../../../../../julep/api/client.py#L5309)
-
-Delete an existing tool by id
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be deleted
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agent_tools_route_delete(
- id="id",
- child_id="child_id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agent_tools_route_delete(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceDeletedResponse: ...
-```
-
-### AsyncJulepApi().agent_tools_route_list
-
-[Show source in client.py:5040](../../../../../../julep/api/client.py#L5040)
-
-List tools of the given agent
-
-Parameters
-----------
-id : CommonUuid
- ID of parent
-
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : AgentToolsRouteListRequestSortBy
- Sort by a field
-
-direction : AgentToolsRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-AgentToolsRouteListResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agent_tools_route_list(
- id="id",
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agent_tools_route_list(
- self,
- id: CommonUuid,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: AgentToolsRouteListRequestSortBy,
- direction: AgentToolsRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> AgentToolsRouteListResponse: ...
-```
-
-### AsyncJulepApi().agent_tools_route_patch
-
-[Show source in client.py:5369](../../../../../../julep/api/client.py#L5369)
-
-Update an existing tool (merges with existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be patched
-
-type : typing.Optional[ToolsToolType]
- Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now)
-
-name : typing.Optional[CommonValidPythonIdentifier]
- Name of the tool (must be unique for this agent and a valid python identifier string )
-
-function : typing.Optional[ToolsFunctionDef]
-
-integration : typing.Optional[typing.Any]
-
-system : typing.Optional[typing.Any]
-
-api_call : typing.Optional[typing.Any]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agent_tools_route_patch(
- id="id",
- child_id="child_id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agent_tools_route_patch(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- type: typing.Optional[ToolsToolType] = OMIT,
- name: typing.Optional[CommonValidPythonIdentifier] = OMIT,
- function: typing.Optional[ToolsFunctionDef] = OMIT,
- integration: typing.Optional[typing.Any] = OMIT,
- system: typing.Optional[typing.Any] = OMIT,
- api_call: typing.Optional[typing.Any] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().agent_tools_route_update
-
-[Show source in client.py:5218](../../../../../../julep/api/client.py#L5218)
-
-Update an existing tool (overwrite existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be updated
-
-type : ToolsToolType
- Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now)
-
-name : CommonValidPythonIdentifier
- Name of the tool (must be unique for this agent and a valid python identifier string )
-
-function : typing.Optional[ToolsFunctionDef]
-
-integration : typing.Optional[typing.Any]
-
-system : typing.Optional[typing.Any]
-
-api_call : typing.Optional[typing.Any]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agent_tools_route_update(
- id="id",
- child_id="child_id",
- type="function",
- name="name",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agent_tools_route_update(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- type: ToolsToolType,
- name: CommonValidPythonIdentifier,
- function: typing.Optional[ToolsFunctionDef] = OMIT,
- integration: typing.Optional[typing.Any] = OMIT,
- system: typing.Optional[typing.Any] = OMIT,
- api_call: typing.Optional[typing.Any] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().agents_docs_search_route_search
-
-[Show source in client.py:4534](../../../../../../julep/api/client.py#L4534)
-
-Search Docs owned by an Agent
-
-Parameters
-----------
-id : CommonUuid
- ID of the parent
-
-body : AgentsDocsSearchRouteSearchRequestBody
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-DocsDocSearchResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep import DocsVectorDocSearchRequest
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agents_docs_search_route_search(
- id="id",
- body=DocsVectorDocSearchRequest(
- limit=1,
- confidence=1.1,
- vector=[1.1],
- ),
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agents_docs_search_route_search(
- self,
- id: CommonUuid,
- body: AgentsDocsSearchRouteSearchRequestBody,
- request_options: typing.Optional[RequestOptions] = None,
-) -> DocsDocSearchResponse: ...
-```
-
-### AsyncJulepApi().agents_route_create
-
-[Show source in client.py:3859](../../../../../../julep/api/client.py#L3859)
-
-Create a new Agent
-
-Parameters
-----------
-name : CommonIdentifierSafeUnicode
- Name of the agent
-
-about : str
- About the agent
-
-model : str
- Model name to use (gpt-4-turbo, gemini-nano etc)
-
-instructions : AgentsCreateAgentRequestInstructions
- Instructions for the agent
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-default_settings : typing.Optional[ChatDefaultChatSettings]
- Default settings for all sessions created by this agent
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agents_route_create(
- name="name",
- about="about",
- model="model",
- instructions="instructions",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agents_route_create(
- self,
- name: CommonIdentifierSafeUnicode,
- about: str,
- model: str,
- instructions: AgentsCreateAgentRequestInstructions,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- default_settings: typing.Optional[ChatDefaultChatSettings] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().agents_route_create_or_update
-
-[Show source in client.py:3997](../../../../../../julep/api/client.py#L3997)
-
-Create or update an Agent
-
-Parameters
-----------
-id : CommonUuid
-
-name : CommonIdentifierSafeUnicode
- Name of the agent
-
-about : str
- About the agent
-
-model : str
- Model name to use (gpt-4-turbo, gemini-nano etc)
-
-instructions : AgentsUpdateAgentRequestInstructions
- Instructions for the agent
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-default_settings : typing.Optional[ChatDefaultChatSettings]
- Default settings for all sessions created by this agent
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agents_route_create_or_update(
- id="id",
- name="name",
- about="about",
- model="model",
- instructions="instructions",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agents_route_create_or_update(
- self,
- id: CommonUuid,
- name: CommonIdentifierSafeUnicode,
- about: str,
- model: str,
- instructions: AgentsUpdateAgentRequestInstructions,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- default_settings: typing.Optional[ChatDefaultChatSettings] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().agents_route_delete
-
-[Show source in client.py:4178](../../../../../../julep/api/client.py#L4178)
-
-Delete Agent by id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agents_route_delete(
- id="id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agents_route_delete(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> CommonResourceDeletedResponse: ...
-```
-
-### AsyncJulepApi().agents_route_get
-
-[Show source in client.py:3945](../../../../../../julep/api/client.py#L3945)
-
-Get an Agent by id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-AgentsAgent
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agents_route_get(
- id="id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agents_route_get(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> AgentsAgent: ...
-```
-
-### AsyncJulepApi().agents_route_list
-
-[Show source in client.py:3777](../../../../../../julep/api/client.py#L3777)
-
-List Agents (paginated)
-
-Parameters
-----------
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : AgentsRouteListRequestSortBy
- Sort by a field
-
-direction : AgentsRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-AgentsRouteListResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agents_route_list(
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agents_route_list(
- self,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: AgentsRouteListRequestSortBy,
- direction: AgentsRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> AgentsRouteListResponse: ...
-```
-
-### AsyncJulepApi().agents_route_patch
-
-[Show source in client.py:4230](../../../../../../julep/api/client.py#L4230)
-
-Update an existing Agent by id (merges with existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-name : typing.Optional[CommonIdentifierSafeUnicode]
- Name of the agent
-
-about : typing.Optional[str]
- About the agent
-
-model : typing.Optional[str]
- Model name to use (gpt-4-turbo, gemini-nano etc)
-
-instructions : typing.Optional[AgentsPatchAgentRequestInstructions]
- Instructions for the agent
-
-default_settings : typing.Optional[ChatDefaultChatSettings]
- Default settings for all sessions created by this agent
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agents_route_patch(
- id="id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agents_route_patch(
- self,
- id: CommonUuid,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- name: typing.Optional[CommonIdentifierSafeUnicode] = OMIT,
- about: typing.Optional[str] = OMIT,
- model: typing.Optional[str] = OMIT,
- instructions: typing.Optional[AgentsPatchAgentRequestInstructions] = OMIT,
- default_settings: typing.Optional[ChatDefaultChatSettings] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().agents_route_update
-
-[Show source in client.py:4087](../../../../../../julep/api/client.py#L4087)
-
-Update an existing Agent by id (overwrites existing values; use PATCH for merging instead)
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-name : CommonIdentifierSafeUnicode
- Name of the agent
-
-about : str
- About the agent
-
-model : str
- Model name to use (gpt-4-turbo, gemini-nano etc)
-
-instructions : AgentsUpdateAgentRequestInstructions
- Instructions for the agent
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-default_settings : typing.Optional[ChatDefaultChatSettings]
- Default settings for all sessions created by this agent
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.agents_route_update(
- id="id",
- name="name",
- about="about",
- model="model",
- instructions="instructions",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def agents_route_update(
- self,
- id: CommonUuid,
- name: CommonIdentifierSafeUnicode,
- about: str,
- model: str,
- instructions: AgentsUpdateAgentRequestInstructions,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- default_settings: typing.Optional[ChatDefaultChatSettings] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().chat_route_generate
-
-[Show source in client.py:6541](../../../../../../julep/api/client.py#L6541)
-
-Generate a response from the model
-
-Parameters
-----------
-id : CommonUuid
- The session ID
-
-remember : bool
- DISABLED: Whether this interaction should form new memories or not (will be enabled in a future release)
-
-recall : bool
- Whether previous memories and docs should be recalled or not
-
-save : bool
- Whether this interaction should be stored in the session history or not
-
-stream : bool
- Indicates if the server should stream the response as it's generated
-
-messages : typing.Sequence[EntriesInputChatMlMessage]
- A list of new input messages comprising the conversation so far.
-
-model : typing.Optional[CommonIdentifierSafeUnicode]
- Identifier of the model to be used
-
-stop : typing.Optional[typing.Sequence[str]]
- Up to 4 sequences where the API will stop generating further tokens.
-
-seed : typing.Optional[int]
- If specified, the system will make a best effort to sample deterministically for that particular seed value
-
-max_tokens : typing.Optional[int]
- The maximum number of tokens to generate in the chat completion
-
-logit_bias : typing.Optional[typing.Dict[str, CommonLogitBias]]
- Modify the likelihood of specified tokens appearing in the completion
-
-response_format : typing.Optional[ChatCompletionResponseFormat]
- Response format (set to `json_object` to restrict output to JSON)
-
-agent : typing.Optional[CommonUuid]
- Agent ID of the agent to use for this interaction. (Only applicable for multi-agent sessions)
-
-repetition_penalty : typing.Optional[float]
- Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.
-
-length_penalty : typing.Optional[float]
- Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated.
-
-min_p : typing.Optional[float]
- Minimum probability compared to leading token to be considered
-
-frequency_penalty : typing.Optional[float]
- Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.
-
-presence_penalty : typing.Optional[float]
- Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.
-
-temperature : typing.Optional[float]
- What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.
-
-top_p : typing.Optional[float]
- Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both.
-
-tools : typing.Optional[typing.Sequence[ToolsFunctionTool]]
- (Advanced) List of tools that are provided in addition to agent's default set of tools.
-
-tool_choice : typing.Optional[ChatChatInputDataToolChoice]
- Can be one of existing tools given to the agent earlier or the ones provided in this request.
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-ChatRouteGenerateResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep import EntriesInputChatMlMessage
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.chat_route_generate(
- id="id",
- messages=[
- EntriesInputChatMlMessage(
- role="user",
- content="content",
- )
- ],
- remember=True,
- recall=True,
- save=True,
- stream=True,
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def chat_route_generate(
- self,
- id: CommonUuid,
- remember: bool,
- recall: bool,
- save: bool,
- stream: bool,
- messages: typing.Sequence[EntriesInputChatMlMessage],
- model: typing.Optional[CommonIdentifierSafeUnicode] = OMIT,
- stop: typing.Optional[typing.Sequence[str]] = OMIT,
- seed: typing.Optional[int] = OMIT,
- max_tokens: typing.Optional[int] = OMIT,
- logit_bias: typing.Optional[typing.Dict[str, CommonLogitBias]] = OMIT,
- response_format: typing.Optional[ChatCompletionResponseFormat] = OMIT,
- agent: typing.Optional[CommonUuid] = OMIT,
- repetition_penalty: typing.Optional[float] = OMIT,
- length_penalty: typing.Optional[float] = OMIT,
- min_p: typing.Optional[float] = OMIT,
- frequency_penalty: typing.Optional[float] = OMIT,
- presence_penalty: typing.Optional[float] = OMIT,
- temperature: typing.Optional[float] = OMIT,
- top_p: typing.Optional[float] = OMIT,
- tools: typing.Optional[typing.Sequence[ToolsFunctionTool]] = OMIT,
- tool_choice: typing.Optional[ChatChatInputDataToolChoice] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> ChatRouteGenerateResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().embed_route_embed
-
-[Show source in client.py:5615](../../../../../../julep/api/client.py#L5615)
-
-Embed a query for search
-
-Parameters
-----------
-body : DocsEmbedQueryRequest
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-DocsEmbedQueryResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep import DocsEmbedQueryRequest
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.embed_route_embed(
- body=DocsEmbedQueryRequest(
- text="text",
- ),
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def embed_route_embed(
- self,
- body: DocsEmbedQueryRequest,
- request_options: typing.Optional[RequestOptions] = None,
-) -> DocsEmbedQueryResponse: ...
-```
-
-### AsyncJulepApi().execution_transitions_route_list
-
-[Show source in client.py:5852](../../../../../../julep/api/client.py#L5852)
-
-List the Transitions of an Execution by id
-
-Parameters
-----------
-id : CommonUuid
- ID of parent
-
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : ExecutionTransitionsRouteListRequestSortBy
- Sort by a field
-
-direction : ExecutionTransitionsRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-ExecutionTransitionsRouteListResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.execution_transitions_route_list(
- id="id",
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def execution_transitions_route_list(
- self,
- id: CommonUuid,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: ExecutionTransitionsRouteListRequestSortBy,
- direction: ExecutionTransitionsRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> ExecutionTransitionsRouteListResponse: ...
-```
-
-### AsyncJulepApi().executions_route_get
-
-[Show source in client.py:5736](../../../../../../julep/api/client.py#L5736)
-
-Get an Execution by id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-ExecutionsExecution
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.executions_route_get(
- id="id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def executions_route_get(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> ExecutionsExecution: ...
-```
-
-### AsyncJulepApi().executions_route_resume_with_task_token
-
-[Show source in client.py:5674](../../../../../../julep/api/client.py#L5674)
-
-Resume an execution with a task token
-
-Parameters
-----------
-task_token : str
- A Task Token is a unique identifier for a specific Task Execution.
-
-input : typing.Optional[typing.Dict[str, typing.Any]]
- The input to resume the execution with
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.executions_route_resume_with_task_token(
- task_token="task_token",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def executions_route_resume_with_task_token(
- self,
- task_token: str,
- input: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().executions_route_update
-
-[Show source in client.py:5788](../../../../../../julep/api/client.py#L5788)
-
-Update an existing Execution
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request : ExecutionsUpdateExecutionRequest
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep import ExecutionsUpdateExecutionRequest_Cancelled
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.executions_route_update(
- id="string",
- request=ExecutionsUpdateExecutionRequest_Cancelled(
- reason="string",
- ),
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def executions_route_update(
- self,
- id: CommonUuid,
- request: ExecutionsUpdateExecutionRequest,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-### AsyncJulepApi().history_route_delete
-
-[Show source in client.py:6767](../../../../../../julep/api/client.py#L6767)
-
-Clear the history of a Session (resets the Session)
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.history_route_delete(
- id="id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def history_route_delete(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> CommonResourceDeletedResponse: ...
-```
-
-### AsyncJulepApi().history_route_history
-
-[Show source in client.py:6715](../../../../../../julep/api/client.py#L6715)
-
-Get history of a Session
-
-Parameters
-----------
-id : CommonUuid
- ID of parent
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-EntriesHistory
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.history_route_history(
- id="id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def history_route_history(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> EntriesHistory: ...
-```
-
-### AsyncJulepApi().individual_docs_route_get
-
-[Show source in client.py:5563](../../../../../../julep/api/client.py#L5563)
-
-Get Doc by id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-DocsDoc
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.individual_docs_route_get(
- id="id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def individual_docs_route_get(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> DocsDoc: ...
-```
-
-### AsyncJulepApi().job_route_get
-
-[Show source in client.py:5939](../../../../../../julep/api/client.py#L5939)
-
-Get the status of an existing Job by its id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-JobsJobStatus
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.job_route_get(
- id="id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def job_route_get(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> JobsJobStatus: ...
-```
-
-### AsyncJulepApi().sessions_route_create
-
-[Show source in client.py:6073](../../../../../../julep/api/client.py#L6073)
-
-Create a new session
-
-Parameters
-----------
-situation : str
- A specific situation that sets the background for this session
-
-render_templates : bool
- Render system and assistant message content as jinja templates
-
-user : typing.Optional[CommonUuid]
- User ID of user associated with this session
-
-users : typing.Optional[typing.Sequence[CommonUuid]]
-
-agent : typing.Optional[CommonUuid]
- Agent ID of agent associated with this session
-
-agents : typing.Optional[typing.Sequence[CommonUuid]]
-
-token_budget : typing.Optional[int]
- Threshold value for the adaptive context functionality
-
-context_overflow : typing.Optional[SessionsContextOverflowType]
- Action to start on context window overflow
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.sessions_route_create(
- situation="situation",
- render_templates=True,
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def sessions_route_create(
- self,
- situation: str,
- render_templates: bool,
- user: typing.Optional[CommonUuid] = OMIT,
- users: typing.Optional[typing.Sequence[CommonUuid]] = OMIT,
- agent: typing.Optional[CommonUuid] = OMIT,
- agents: typing.Optional[typing.Sequence[CommonUuid]] = OMIT,
- token_budget: typing.Optional[int] = OMIT,
- context_overflow: typing.Optional[SessionsContextOverflowType] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().sessions_route_create_or_update
-
-[Show source in client.py:6222](../../../../../../julep/api/client.py#L6222)
-
-Create or update a session
-
-Parameters
-----------
-id : CommonUuid
-
-situation : str
- A specific situation that sets the background for this session
-
-render_templates : bool
- Render system and assistant message content as jinja templates
-
-user : typing.Optional[CommonUuid]
- User ID of user associated with this session
-
-users : typing.Optional[typing.Sequence[CommonUuid]]
-
-agent : typing.Optional[CommonUuid]
- Agent ID of agent associated with this session
-
-agents : typing.Optional[typing.Sequence[CommonUuid]]
-
-token_budget : typing.Optional[int]
- Threshold value for the adaptive context functionality
-
-context_overflow : typing.Optional[SessionsContextOverflowType]
- Action to start on context window overflow
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.sessions_route_create_or_update(
- id="id",
- situation="situation",
- render_templates=True,
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def sessions_route_create_or_update(
- self,
- id: CommonUuid,
- situation: str,
- render_templates: bool,
- user: typing.Optional[CommonUuid] = OMIT,
- users: typing.Optional[typing.Sequence[CommonUuid]] = OMIT,
- agent: typing.Optional[CommonUuid] = OMIT,
- agents: typing.Optional[typing.Sequence[CommonUuid]] = OMIT,
- token_budget: typing.Optional[int] = OMIT,
- context_overflow: typing.Optional[SessionsContextOverflowType] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().sessions_route_delete
-
-[Show source in client.py:6407](../../../../../../julep/api/client.py#L6407)
-
-Delete a session by its id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.sessions_route_delete(
- id="id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def sessions_route_delete(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> CommonResourceDeletedResponse: ...
-```
-
-### AsyncJulepApi().sessions_route_get
-
-[Show source in client.py:6170](../../../../../../julep/api/client.py#L6170)
-
-Get a session by id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-SessionsSession
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.sessions_route_get(
- id="string",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def sessions_route_get(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> SessionsSession: ...
-```
-
-### AsyncJulepApi().sessions_route_list
-
-[Show source in client.py:5991](../../../../../../julep/api/client.py#L5991)
-
-List sessions (paginated)
-
-Parameters
-----------
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : SessionsRouteListRequestSortBy
- Sort by a field
-
-direction : SessionsRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-SessionsRouteListResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.sessions_route_list(
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def sessions_route_list(
- self,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: SessionsRouteListRequestSortBy,
- direction: SessionsRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> SessionsRouteListResponse: ...
-```
-
-### AsyncJulepApi().sessions_route_patch
-
-[Show source in client.py:6459](../../../../../../julep/api/client.py#L6459)
-
-Update an existing session by its id (merges with existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-situation : typing.Optional[str]
- A specific situation that sets the background for this session
-
-render_templates : typing.Optional[bool]
- Render system and assistant message content as jinja templates
-
-token_budget : typing.Optional[int]
- Threshold value for the adaptive context functionality
-
-context_overflow : typing.Optional[SessionsContextOverflowType]
- Action to start on context window overflow
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.sessions_route_patch(
- id="id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def sessions_route_patch(
- self,
- id: CommonUuid,
- situation: typing.Optional[str] = OMIT,
- render_templates: typing.Optional[bool] = OMIT,
- token_budget: typing.Optional[int] = OMIT,
- context_overflow: typing.Optional[SessionsContextOverflowType] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().sessions_route_update
-
-[Show source in client.py:6323](../../../../../../julep/api/client.py#L6323)
-
-Update an existing session by its id (overwrites all existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-situation : str
- A specific situation that sets the background for this session
-
-render_templates : bool
- Render system and assistant message content as jinja templates
-
-token_budget : typing.Optional[int]
- Threshold value for the adaptive context functionality
-
-context_overflow : typing.Optional[SessionsContextOverflowType]
- Action to start on context window overflow
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.sessions_route_update(
- id="id",
- situation="situation",
- render_templates=True,
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def sessions_route_update(
- self,
- id: CommonUuid,
- situation: str,
- render_templates: bool,
- token_budget: typing.Optional[int] = OMIT,
- context_overflow: typing.Optional[SessionsContextOverflowType] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().task_executions_route_create
-
-[Show source in client.py:6906](../../../../../../julep/api/client.py#L6906)
-
-Create an execution for the given task
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-input : typing.Dict[str, typing.Any]
- The input to the execution
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.task_executions_route_create(
- id="id",
- input={"key": "value"},
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def task_executions_route_create(
- self,
- id: CommonUuid,
- input: typing.Dict[str, typing.Any],
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().task_executions_route_list
-
-[Show source in client.py:6819](../../../../../../julep/api/client.py#L6819)
-
-List executions of the given task
-
-Parameters
-----------
-id : CommonUuid
- ID of parent
-
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : TaskExecutionsRouteListRequestSortBy
- Sort by a field
-
-direction : TaskExecutionsRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-TaskExecutionsRouteListResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.task_executions_route_list(
- id="id",
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def task_executions_route_list(
- self,
- id: CommonUuid,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: TaskExecutionsRouteListRequestSortBy,
- direction: TaskExecutionsRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> TaskExecutionsRouteListResponse: ...
-```
-
-### AsyncJulepApi().tasks_create_or_update_route_create_or_update
-
-[Show source in client.py:5458](../../../../../../julep/api/client.py#L5458)
-
-Create or update a task
-
-Parameters
-----------
-parent_id : CommonUuid
- ID of the agent
-
-id : CommonUuid
-
-name : str
-
-description : str
-
-main : typing.Sequence[TasksCreateTaskRequestMainItem]
- The entrypoint of the task.
-
-tools : typing.Sequence[TasksTaskTool]
- Tools defined specifically for this task not included in the Agent itself.
-
-inherit_tools : bool
- Whether to inherit tools from the parent agent or not. Defaults to true.
-
-input_schema : typing.Optional[typing.Dict[str, typing.Any]]
- The schema for the input to the task. `null` means all inputs are valid.
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-import asyncio
-
-from julep import TasksTaskTool
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.tasks_create_or_update_route_create_or_update(
- parent_id="parent_id",
- id="id",
- name="name",
- description="description",
- main=[],
- tools=[
- TasksTaskTool(
- type="function",
- name="name",
- )
- ],
- inherit_tools=True,
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def tasks_create_or_update_route_create_or_update(
- self,
- parent_id: CommonUuid,
- id: CommonUuid,
- name: str,
- description: str,
- main: typing.Sequence[TasksCreateTaskRequestMainItem],
- tools: typing.Sequence[TasksTaskTool],
- inherit_tools: bool,
- input_schema: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().tasks_route_create
-
-[Show source in client.py:4687](../../../../../../julep/api/client.py#L4687)
-
-Create a new task
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-name : str
-
-description : str
-
-main : typing.Sequence[TasksCreateTaskRequestMainItem]
- The entrypoint of the task.
-
-tools : typing.Sequence[TasksTaskTool]
- Tools defined specifically for this task not included in the Agent itself.
-
-inherit_tools : bool
- Whether to inherit tools from the parent agent or not. Defaults to true.
-
-input_schema : typing.Optional[typing.Dict[str, typing.Any]]
- The schema for the input to the task. `null` means all inputs are valid.
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep import TasksTaskTool
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.tasks_route_create(
- id="id",
- name="name",
- description="description",
- main=[],
- tools=[
- TasksTaskTool(
- type="function",
- name="name",
- )
- ],
- inherit_tools=True,
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def tasks_route_create(
- self,
- id: CommonUuid,
- name: str,
- description: str,
- main: typing.Sequence[TasksCreateTaskRequestMainItem],
- tools: typing.Sequence[TasksTaskTool],
- inherit_tools: bool,
- input_schema: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().tasks_route_delete
-
-[Show source in client.py:4889](../../../../../../julep/api/client.py#L4889)
-
-Delete a task by its id
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be deleted
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.tasks_route_delete(
- id="id",
- child_id="child_id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def tasks_route_delete(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceDeletedResponse: ...
-```
-
-### AsyncJulepApi().tasks_route_list
-
-[Show source in client.py:4600](../../../../../../julep/api/client.py#L4600)
-
-List tasks (paginated)
-
-Parameters
-----------
-id : CommonUuid
- ID of parent
-
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : TasksRouteListRequestSortBy
- Sort by a field
-
-direction : TasksRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-TasksRouteListResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.tasks_route_list(
- id="id",
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def tasks_route_list(
- self,
- id: CommonUuid,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: TasksRouteListRequestSortBy,
- direction: TasksRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> TasksRouteListResponse: ...
-```
-
-### AsyncJulepApi().tasks_route_patch
-
-[Show source in client.py:4949](../../../../../../julep/api/client.py#L4949)
-
-Update an existing task (merges with existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be patched
-
-description : typing.Optional[str]
-
-main : typing.Optional[typing.Sequence[TasksPatchTaskRequestMainItem]]
- The entrypoint of the task.
-
-input_schema : typing.Optional[typing.Dict[str, typing.Any]]
- The schema for the input to the task. `null` means all inputs are valid.
-
-tools : typing.Optional[typing.Sequence[TasksTaskTool]]
- Tools defined specifically for this task not included in the Agent itself.
-
-inherit_tools : typing.Optional[bool]
- Whether to inherit tools from the parent agent or not. Defaults to true.
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.tasks_route_patch(
- id="id",
- child_id="child_id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def tasks_route_patch(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- description: typing.Optional[str] = OMIT,
- main: typing.Optional[typing.Sequence[TasksPatchTaskRequestMainItem]] = OMIT,
- input_schema: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- tools: typing.Optional[typing.Sequence[TasksTaskTool]] = OMIT,
- inherit_tools: typing.Optional[bool] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().tasks_route_update
-
-[Show source in client.py:4788](../../../../../../julep/api/client.py#L4788)
-
-Update an existing task (overwrite existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be updated
-
-description : str
-
-main : typing.Sequence[TasksUpdateTaskRequestMainItem]
- The entrypoint of the task.
-
-tools : typing.Sequence[TasksTaskTool]
- Tools defined specifically for this task not included in the Agent itself.
-
-inherit_tools : bool
- Whether to inherit tools from the parent agent or not. Defaults to true.
-
-input_schema : typing.Optional[typing.Dict[str, typing.Any]]
- The schema for the input to the task. `null` means all inputs are valid.
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep import TasksTaskTool
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.tasks_route_update(
- id="id",
- child_id="child_id",
- description="description",
- main=[],
- tools=[
- TasksTaskTool(
- type="function",
- name="name",
- )
- ],
- inherit_tools=True,
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def tasks_route_update(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- description: str,
- main: typing.Sequence[TasksUpdateTaskRequestMainItem],
- tools: typing.Sequence[TasksTaskTool],
- inherit_tools: bool,
- input_schema: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().user_docs_route_create
-
-[Show source in client.py:7516](../../../../../../julep/api/client.py#L7516)
-
-Create a Doc for this User
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-title : CommonIdentifierSafeUnicode
- Title describing what this document contains
-
-content : DocsCreateDocRequestContent
- Contents of the document
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.user_docs_route_create(
- id="id",
- title="title",
- content="content",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def user_docs_route_create(
- self,
- id: CommonUuid,
- title: CommonIdentifierSafeUnicode,
- content: DocsCreateDocRequestContent,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().user_docs_route_delete
-
-[Show source in client.py:7586](../../../../../../julep/api/client.py#L7586)
-
-Delete a Doc for this User
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be deleted
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.user_docs_route_delete(
- id="id",
- child_id="child_id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def user_docs_route_delete(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceDeletedResponse: ...
-```
-
-### AsyncJulepApi().user_docs_route_list
-
-[Show source in client.py:7429](../../../../../../julep/api/client.py#L7429)
-
-List Docs owned by a User
-
-Parameters
-----------
-id : CommonUuid
- ID of parent
-
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : UserDocsRouteListRequestSortBy
- Sort by a field
-
-direction : UserDocsRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-UserDocsRouteListResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.user_docs_route_list(
- id="id",
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def user_docs_route_list(
- self,
- id: CommonUuid,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: UserDocsRouteListRequestSortBy,
- direction: UserDocsRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> UserDocsRouteListResponse: ...
-```
-
-### AsyncJulepApi().user_docs_search_route_search
-
-[Show source in client.py:7646](../../../../../../julep/api/client.py#L7646)
-
-Search Docs owned by a User
-
-Parameters
-----------
-id : CommonUuid
- ID of the parent
-
-body : UserDocsSearchRouteSearchRequestBody
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-DocsDocSearchResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep import DocsVectorDocSearchRequest
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.user_docs_search_route_search(
- id="id",
- body=DocsVectorDocSearchRequest(
- limit=1,
- confidence=1.1,
- vector=[1.1],
- ),
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def user_docs_search_route_search(
- self,
- id: CommonUuid,
- body: UserDocsSearchRouteSearchRequestBody,
- request_options: typing.Optional[RequestOptions] = None,
-) -> DocsDocSearchResponse: ...
-```
-
-### AsyncJulepApi().users_route_create
-
-[Show source in client.py:7053](../../../../../../julep/api/client.py#L7053)
-
-Create a new user
-
-Parameters
-----------
-name : CommonIdentifierSafeUnicode
- Name of the user
-
-about : str
- About the user
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.users_route_create(
- name="name",
- about="about",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def users_route_create(
- self,
- name: CommonIdentifierSafeUnicode,
- about: str,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().users_route_create_or_update
-
-[Show source in client.py:7170](../../../../../../julep/api/client.py#L7170)
-
-Create or update a user
-
-Parameters
-----------
-id : CommonUuid
-
-name : CommonIdentifierSafeUnicode
- Name of the user
-
-about : str
- About the user
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.users_route_create_or_update(
- id="id",
- name="name",
- about="about",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def users_route_create_or_update(
- self,
- id: CommonUuid,
- name: CommonIdentifierSafeUnicode,
- about: str,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().users_route_delete
-
-[Show source in client.py:7309](../../../../../../julep/api/client.py#L7309)
-
-Delete a user by id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.users_route_delete(
- id="id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def users_route_delete(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> CommonResourceDeletedResponse: ...
-```
-
-### AsyncJulepApi().users_route_get
-
-[Show source in client.py:7118](../../../../../../julep/api/client.py#L7118)
-
-Get a user by id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-UsersUser
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.users_route_get(
- id="id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def users_route_get(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> UsersUser: ...
-```
-
-### AsyncJulepApi().users_route_list
-
-[Show source in client.py:6971](../../../../../../julep/api/client.py#L6971)
-
-List users (paginated)
-
-Parameters
-----------
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : UsersRouteListRequestSortBy
- Sort by a field
-
-direction : UsersRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-UsersRouteListResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.users_route_list(
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def users_route_list(
- self,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: UsersRouteListRequestSortBy,
- direction: UsersRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> UsersRouteListResponse: ...
-```
-
-### AsyncJulepApi().users_route_patch
-
-[Show source in client.py:7361](../../../../../../julep/api/client.py#L7361)
-
-Update an existing user by id (merge with existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-name : typing.Optional[CommonIdentifierSafeUnicode]
- Name of the user
-
-about : typing.Optional[str]
- About the user
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.users_route_patch(
- id="id",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def users_route_patch(
- self,
- id: CommonUuid,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- name: typing.Optional[CommonIdentifierSafeUnicode] = OMIT,
- about: typing.Optional[str] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### AsyncJulepApi().users_route_update
-
-[Show source in client.py:7239](../../../../../../julep/api/client.py#L7239)
-
-Update an existing user by id (overwrite existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-name : CommonIdentifierSafeUnicode
- Name of the user
-
-about : str
- About the user
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-import asyncio
-
-from julep.client import AsyncJulepApi
-
-client = AsyncJulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-async def main() -> None:
- await client.users_route_update(
- id="id",
- name="name",
- about="about",
- )
-
-asyncio.run(main())
-
-#### Signature
-
-```python
-async def users_route_update(
- self,
- id: CommonUuid,
- name: CommonIdentifierSafeUnicode,
- about: str,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-
-
-## JulepApi
-
-[Show source in client.py:115](../../../../../../julep/api/client.py#L115)
-
-Use this class to access the different functions within the SDK. You can instantiate any number of clients with different configuration that will propagate to these functions.
-
-Parameters
-----------
-base_url : typing.Optional[str]
- The base url to use for requests from the client.
-
-environment : JulepApiEnvironment
- The environment to use for requests from the client. from .environment import JulepApiEnvironment
-
-Defaults to JulepApiEnvironment.DEFAULT
-
-auth_key : str
-api_key : str
-timeout : typing.Optional[float]
- The timeout to be used, in seconds, for requests. By default the timeout is 300 seconds, unless a custom httpx client is used, in which case this default is not enforced.
-
-follow_redirects : typing.Optional[bool]
- Whether the default httpx client follows redirects or not, this is irrelevant if a custom httpx client is passed in.
-
-httpx_client : typing.Optional[httpx.Client]
- The httpx client to use for making requests, a preconfigured client is used by default, however this is useful should you want to pass in any custom httpx configuration.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-
-#### Signature
-
-```python
-class JulepApi:
- def __init__(
- self,
- base_url: typing.Optional[str] = None,
- environment: JulepApiEnvironment = JulepApiEnvironment.DEFAULT,
- auth_key: str,
- api_key: str,
- timeout: typing.Optional[float] = None,
- follow_redirects: typing.Optional[bool] = True,
- httpx_client: typing.Optional[httpx.Client] = None,
- ): ...
-```
-
-### JulepApi().agent_docs_route_create
-
-[Show source in client.py:749](../../../../../../julep/api/client.py#L749)
-
-Create a Doc for this Agent
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-title : CommonIdentifierSafeUnicode
- Title describing what this document contains
-
-content : DocsCreateDocRequestContent
- Contents of the document
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agent_docs_route_create(
- id="id",
- title="title",
- content="content",
-)
-
-#### Signature
-
-```python
-def agent_docs_route_create(
- self,
- id: CommonUuid,
- title: CommonIdentifierSafeUnicode,
- content: DocsCreateDocRequestContent,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().agent_docs_route_delete
-
-[Show source in client.py:811](../../../../../../julep/api/client.py#L811)
-
-Delete a Doc for this Agent
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be deleted
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agent_docs_route_delete(
- id="id",
- child_id="child_id",
-)
-
-#### Signature
-
-```python
-def agent_docs_route_delete(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceDeletedResponse: ...
-```
-
-### JulepApi().agent_docs_route_list
-
-[Show source in client.py:670](../../../../../../julep/api/client.py#L670)
-
-List Docs owned by an Agent
-
-Parameters
-----------
-id : CommonUuid
- ID of parent
-
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : AgentDocsRouteListRequestSortBy
- Sort by a field
-
-direction : AgentDocsRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-AgentDocsRouteListResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agent_docs_route_list(
- id="id",
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
-)
-
-#### Signature
-
-```python
-def agent_docs_route_list(
- self,
- id: CommonUuid,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: AgentDocsRouteListRequestSortBy,
- direction: AgentDocsRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> AgentDocsRouteListResponse: ...
-```
-
-### JulepApi().agent_tools_route_create
-
-[Show source in client.py:1400](../../../../../../julep/api/client.py#L1400)
-
-Create a new tool for this agent
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-name : CommonIdentifierSafeUnicode
- Name of the agent
-
-about : str
- About the agent
-
-model : str
- Model name to use (gpt-4-turbo, gemini-nano etc)
-
-instructions : AgentsCreateAgentRequestInstructions
- Instructions for the agent
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-default_settings : typing.Optional[ChatDefaultChatSettings]
- Default settings for all sessions created by this agent
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agent_tools_route_create(
- id="id",
- name="name",
- about="about",
- model="model",
- instructions="instructions",
-)
-
-#### Signature
-
-```python
-def agent_tools_route_create(
- self,
- id: CommonUuid,
- name: CommonIdentifierSafeUnicode,
- about: str,
- model: str,
- instructions: AgentsCreateAgentRequestInstructions,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- default_settings: typing.Optional[ChatDefaultChatSettings] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().agent_tools_route_delete
-
-[Show source in client.py:1566](../../../../../../julep/api/client.py#L1566)
-
-Delete an existing tool by id
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be deleted
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agent_tools_route_delete(
- id="id",
- child_id="child_id",
-)
-
-#### Signature
-
-```python
-def agent_tools_route_delete(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceDeletedResponse: ...
-```
-
-### JulepApi().agent_tools_route_list
-
-[Show source in client.py:1321](../../../../../../julep/api/client.py#L1321)
-
-List tools of the given agent
-
-Parameters
-----------
-id : CommonUuid
- ID of parent
-
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : AgentToolsRouteListRequestSortBy
- Sort by a field
-
-direction : AgentToolsRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-AgentToolsRouteListResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agent_tools_route_list(
- id="id",
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
-)
-
-#### Signature
-
-```python
-def agent_tools_route_list(
- self,
- id: CommonUuid,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: AgentToolsRouteListRequestSortBy,
- direction: AgentToolsRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> AgentToolsRouteListResponse: ...
-```
-
-### JulepApi().agent_tools_route_patch
-
-[Show source in client.py:1618](../../../../../../julep/api/client.py#L1618)
-
-Update an existing tool (merges with existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be patched
-
-type : typing.Optional[ToolsToolType]
- Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now)
-
-name : typing.Optional[CommonValidPythonIdentifier]
- Name of the tool (must be unique for this agent and a valid python identifier string )
-
-function : typing.Optional[ToolsFunctionDef]
-
-integration : typing.Optional[typing.Any]
-
-system : typing.Optional[typing.Any]
-
-api_call : typing.Optional[typing.Any]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agent_tools_route_patch(
- id="id",
- child_id="child_id",
-)
-
-#### Signature
-
-```python
-def agent_tools_route_patch(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- type: typing.Optional[ToolsToolType] = OMIT,
- name: typing.Optional[CommonValidPythonIdentifier] = OMIT,
- function: typing.Optional[ToolsFunctionDef] = OMIT,
- integration: typing.Optional[typing.Any] = OMIT,
- system: typing.Optional[typing.Any] = OMIT,
- api_call: typing.Optional[typing.Any] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().agent_tools_route_update
-
-[Show source in client.py:1483](../../../../../../julep/api/client.py#L1483)
-
-Update an existing tool (overwrite existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be updated
-
-type : ToolsToolType
- Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now)
-
-name : CommonValidPythonIdentifier
- Name of the tool (must be unique for this agent and a valid python identifier string )
-
-function : typing.Optional[ToolsFunctionDef]
-
-integration : typing.Optional[typing.Any]
-
-system : typing.Optional[typing.Any]
-
-api_call : typing.Optional[typing.Any]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agent_tools_route_update(
- id="id",
- child_id="child_id",
- type="function",
- name="name",
-)
-
-#### Signature
-
-```python
-def agent_tools_route_update(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- type: ToolsToolType,
- name: CommonValidPythonIdentifier,
- function: typing.Optional[ToolsFunctionDef] = OMIT,
- integration: typing.Optional[typing.Any] = OMIT,
- system: typing.Optional[typing.Any] = OMIT,
- api_call: typing.Optional[typing.Any] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().agents_docs_search_route_search
-
-[Show source in client.py:863](../../../../../../julep/api/client.py#L863)
-
-Search Docs owned by an Agent
-
-Parameters
-----------
-id : CommonUuid
- ID of the parent
-
-body : AgentsDocsSearchRouteSearchRequestBody
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-DocsDocSearchResponse
- The request has succeeded.
-
-Examples
---------
-from julep import DocsVectorDocSearchRequest
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agents_docs_search_route_search(
- id="id",
- body=DocsVectorDocSearchRequest(
- limit=1,
- confidence=1.1,
- vector=[1.1],
- ),
-)
-
-#### Signature
-
-```python
-def agents_docs_search_route_search(
- self,
- id: CommonUuid,
- body: AgentsDocsSearchRouteSearchRequestBody,
- request_options: typing.Optional[RequestOptions] = None,
-) -> DocsDocSearchResponse: ...
-```
-
-### JulepApi().agents_route_create
-
-[Show source in client.py:260](../../../../../../julep/api/client.py#L260)
-
-Create a new Agent
-
-Parameters
-----------
-name : CommonIdentifierSafeUnicode
- Name of the agent
-
-about : str
- About the agent
-
-model : str
- Model name to use (gpt-4-turbo, gemini-nano etc)
-
-instructions : AgentsCreateAgentRequestInstructions
- Instructions for the agent
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-default_settings : typing.Optional[ChatDefaultChatSettings]
- Default settings for all sessions created by this agent
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agents_route_create(
- name="name",
- about="about",
- model="model",
- instructions="instructions",
-)
-
-#### Signature
-
-```python
-def agents_route_create(
- self,
- name: CommonIdentifierSafeUnicode,
- about: str,
- model: str,
- instructions: AgentsCreateAgentRequestInstructions,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- default_settings: typing.Optional[ChatDefaultChatSettings] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().agents_route_create_or_update
-
-[Show source in client.py:382](../../../../../../julep/api/client.py#L382)
-
-Create or update an Agent
-
-Parameters
-----------
-id : CommonUuid
-
-name : CommonIdentifierSafeUnicode
- Name of the agent
-
-about : str
- About the agent
-
-model : str
- Model name to use (gpt-4-turbo, gemini-nano etc)
-
-instructions : AgentsUpdateAgentRequestInstructions
- Instructions for the agent
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-default_settings : typing.Optional[ChatDefaultChatSettings]
- Default settings for all sessions created by this agent
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agents_route_create_or_update(
- id="id",
- name="name",
- about="about",
- model="model",
- instructions="instructions",
-)
-
-#### Signature
-
-```python
-def agents_route_create_or_update(
- self,
- id: CommonUuid,
- name: CommonIdentifierSafeUnicode,
- about: str,
- model: str,
- instructions: AgentsUpdateAgentRequestInstructions,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- default_settings: typing.Optional[ChatDefaultChatSettings] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().agents_route_delete
-
-[Show source in client.py:547](../../../../../../julep/api/client.py#L547)
-
-Delete Agent by id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agents_route_delete(
- id="id",
-)
-
-#### Signature
-
-```python
-def agents_route_delete(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> CommonResourceDeletedResponse: ...
-```
-
-### JulepApi().agents_route_get
-
-[Show source in client.py:338](../../../../../../julep/api/client.py#L338)
-
-Get an Agent by id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-AgentsAgent
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agents_route_get(
- id="id",
-)
-
-#### Signature
-
-```python
-def agents_route_get(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> AgentsAgent: ...
-```
-
-### JulepApi().agents_route_list
-
-[Show source in client.py:186](../../../../../../julep/api/client.py#L186)
-
-List Agents (paginated)
-
-Parameters
-----------
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : AgentsRouteListRequestSortBy
- Sort by a field
-
-direction : AgentsRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-AgentsRouteListResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agents_route_list(
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
-)
-
-#### Signature
-
-```python
-def agents_route_list(
- self,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: AgentsRouteListRequestSortBy,
- direction: AgentsRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> AgentsRouteListResponse: ...
-```
-
-### JulepApi().agents_route_patch
-
-[Show source in client.py:591](../../../../../../julep/api/client.py#L591)
-
-Update an existing Agent by id (merges with existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-name : typing.Optional[CommonIdentifierSafeUnicode]
- Name of the agent
-
-about : typing.Optional[str]
- About the agent
-
-model : typing.Optional[str]
- Model name to use (gpt-4-turbo, gemini-nano etc)
-
-instructions : typing.Optional[AgentsPatchAgentRequestInstructions]
- Instructions for the agent
-
-default_settings : typing.Optional[ChatDefaultChatSettings]
- Default settings for all sessions created by this agent
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agents_route_patch(
- id="id",
-)
-
-#### Signature
-
-```python
-def agents_route_patch(
- self,
- id: CommonUuid,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- name: typing.Optional[CommonIdentifierSafeUnicode] = OMIT,
- about: typing.Optional[str] = OMIT,
- model: typing.Optional[str] = OMIT,
- instructions: typing.Optional[AgentsPatchAgentRequestInstructions] = OMIT,
- default_settings: typing.Optional[ChatDefaultChatSettings] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().agents_route_update
-
-[Show source in client.py:464](../../../../../../julep/api/client.py#L464)
-
-Update an existing Agent by id (overwrites existing values; use PATCH for merging instead)
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-name : CommonIdentifierSafeUnicode
- Name of the agent
-
-about : str
- About the agent
-
-model : str
- Model name to use (gpt-4-turbo, gemini-nano etc)
-
-instructions : AgentsUpdateAgentRequestInstructions
- Instructions for the agent
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-default_settings : typing.Optional[ChatDefaultChatSettings]
- Default settings for all sessions created by this agent
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.agents_route_update(
- id="id",
- name="name",
- about="about",
- model="model",
- instructions="instructions",
-)
-
-#### Signature
-
-```python
-def agents_route_update(
- self,
- id: CommonUuid,
- name: CommonIdentifierSafeUnicode,
- about: str,
- model: str,
- instructions: AgentsUpdateAgentRequestInstructions,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- default_settings: typing.Optional[ChatDefaultChatSettings] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().chat_route_generate
-
-[Show source in client.py:2662](../../../../../../julep/api/client.py#L2662)
-
-Generate a response from the model
-
-Parameters
-----------
-id : CommonUuid
- The session ID
-
-remember : bool
- DISABLED: Whether this interaction should form new memories or not (will be enabled in a future release)
-
-recall : bool
- Whether previous memories and docs should be recalled or not
-
-save : bool
- Whether this interaction should be stored in the session history or not
-
-stream : bool
- Indicates if the server should stream the response as it's generated
-
-messages : typing.Sequence[EntriesInputChatMlMessage]
- A list of new input messages comprising the conversation so far.
-
-model : typing.Optional[CommonIdentifierSafeUnicode]
- Identifier of the model to be used
-
-stop : typing.Optional[typing.Sequence[str]]
- Up to 4 sequences where the API will stop generating further tokens.
-
-seed : typing.Optional[int]
- If specified, the system will make a best effort to sample deterministically for that particular seed value
-
-max_tokens : typing.Optional[int]
- The maximum number of tokens to generate in the chat completion
-
-logit_bias : typing.Optional[typing.Dict[str, CommonLogitBias]]
- Modify the likelihood of specified tokens appearing in the completion
-
-response_format : typing.Optional[ChatCompletionResponseFormat]
- Response format (set to `json_object` to restrict output to JSON)
-
-agent : typing.Optional[CommonUuid]
- Agent ID of the agent to use for this interaction. (Only applicable for multi-agent sessions)
-
-repetition_penalty : typing.Optional[float]
- Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.
-
-length_penalty : typing.Optional[float]
- Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated.
-
-min_p : typing.Optional[float]
- Minimum probability compared to leading token to be considered
-
-frequency_penalty : typing.Optional[float]
- Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.
-
-presence_penalty : typing.Optional[float]
- Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.
-
-temperature : typing.Optional[float]
- What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.
-
-top_p : typing.Optional[float]
- Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both.
-
-tools : typing.Optional[typing.Sequence[ToolsFunctionTool]]
- (Advanced) List of tools that are provided in addition to agent's default set of tools.
-
-tool_choice : typing.Optional[ChatChatInputDataToolChoice]
- Can be one of existing tools given to the agent earlier or the ones provided in this request.
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-ChatRouteGenerateResponse
- The request has succeeded.
-
-Examples
---------
-from julep import EntriesInputChatMlMessage
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.chat_route_generate(
- id="id",
- messages=[
- EntriesInputChatMlMessage(
- role="user",
- content="content",
- )
- ],
- remember=True,
- recall=True,
- save=True,
- stream=True,
-)
-
-#### Signature
-
-```python
-def chat_route_generate(
- self,
- id: CommonUuid,
- remember: bool,
- recall: bool,
- save: bool,
- stream: bool,
- messages: typing.Sequence[EntriesInputChatMlMessage],
- model: typing.Optional[CommonIdentifierSafeUnicode] = OMIT,
- stop: typing.Optional[typing.Sequence[str]] = OMIT,
- seed: typing.Optional[int] = OMIT,
- max_tokens: typing.Optional[int] = OMIT,
- logit_bias: typing.Optional[typing.Dict[str, CommonLogitBias]] = OMIT,
- response_format: typing.Optional[ChatCompletionResponseFormat] = OMIT,
- agent: typing.Optional[CommonUuid] = OMIT,
- repetition_penalty: typing.Optional[float] = OMIT,
- length_penalty: typing.Optional[float] = OMIT,
- min_p: typing.Optional[float] = OMIT,
- frequency_penalty: typing.Optional[float] = OMIT,
- presence_penalty: typing.Optional[float] = OMIT,
- temperature: typing.Optional[float] = OMIT,
- top_p: typing.Optional[float] = OMIT,
- tools: typing.Optional[typing.Sequence[ToolsFunctionTool]] = OMIT,
- tool_choice: typing.Optional[ChatChatInputDataToolChoice] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> ChatRouteGenerateResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().embed_route_embed
-
-[Show source in client.py:1840](../../../../../../julep/api/client.py#L1840)
-
-Embed a query for search
-
-Parameters
-----------
-body : DocsEmbedQueryRequest
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-DocsEmbedQueryResponse
- The request has succeeded.
-
-Examples
---------
-from julep import DocsEmbedQueryRequest
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.embed_route_embed(
- body=DocsEmbedQueryRequest(
- text="text",
- ),
-)
-
-#### Signature
-
-```python
-def embed_route_embed(
- self,
- body: DocsEmbedQueryRequest,
- request_options: typing.Optional[RequestOptions] = None,
-) -> DocsEmbedQueryResponse: ...
-```
-
-### JulepApi().execution_transitions_route_list
-
-[Show source in client.py:2045](../../../../../../julep/api/client.py#L2045)
-
-List the Transitions of an Execution by id
-
-Parameters
-----------
-id : CommonUuid
- ID of parent
-
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : ExecutionTransitionsRouteListRequestSortBy
- Sort by a field
-
-direction : ExecutionTransitionsRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-ExecutionTransitionsRouteListResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.execution_transitions_route_list(
- id="id",
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
-)
-
-#### Signature
-
-```python
-def execution_transitions_route_list(
- self,
- id: CommonUuid,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: ExecutionTransitionsRouteListRequestSortBy,
- direction: ExecutionTransitionsRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> ExecutionTransitionsRouteListResponse: ...
-```
-
-### JulepApi().executions_route_get
-
-[Show source in client.py:1945](../../../../../../julep/api/client.py#L1945)
-
-Get an Execution by id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-ExecutionsExecution
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.executions_route_get(
- id="id",
-)
-
-#### Signature
-
-```python
-def executions_route_get(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> ExecutionsExecution: ...
-```
-
-### JulepApi().executions_route_resume_with_task_token
-
-[Show source in client.py:1891](../../../../../../julep/api/client.py#L1891)
-
-Resume an execution with a task token
-
-Parameters
-----------
-task_token : str
- A Task Token is a unique identifier for a specific Task Execution.
-
-input : typing.Optional[typing.Dict[str, typing.Any]]
- The input to resume the execution with
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.executions_route_resume_with_task_token(
- task_token="task_token",
-)
-
-#### Signature
-
-```python
-def executions_route_resume_with_task_token(
- self,
- task_token: str,
- input: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().executions_route_update
-
-[Show source in client.py:1989](../../../../../../julep/api/client.py#L1989)
-
-Update an existing Execution
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request : ExecutionsUpdateExecutionRequest
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep import ExecutionsUpdateExecutionRequest_Cancelled
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.executions_route_update(
- id="string",
- request=ExecutionsUpdateExecutionRequest_Cancelled(
- reason="string",
- ),
-)
-
-#### Signature
-
-```python
-def executions_route_update(
- self,
- id: CommonUuid,
- request: ExecutionsUpdateExecutionRequest,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-### JulepApi().history_route_delete
-
-[Show source in client.py:2872](../../../../../../julep/api/client.py#L2872)
-
-Clear the history of a Session (resets the Session)
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.history_route_delete(
- id="id",
-)
-
-#### Signature
-
-```python
-def history_route_delete(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> CommonResourceDeletedResponse: ...
-```
-
-### JulepApi().history_route_history
-
-[Show source in client.py:2828](../../../../../../julep/api/client.py#L2828)
-
-Get history of a Session
-
-Parameters
-----------
-id : CommonUuid
- ID of parent
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-EntriesHistory
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.history_route_history(
- id="id",
-)
-
-#### Signature
-
-```python
-def history_route_history(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> EntriesHistory: ...
-```
-
-### JulepApi().individual_docs_route_get
-
-[Show source in client.py:1796](../../../../../../julep/api/client.py#L1796)
-
-Get Doc by id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-DocsDoc
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.individual_docs_route_get(
- id="id",
-)
-
-#### Signature
-
-```python
-def individual_docs_route_get(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> DocsDoc: ...
-```
-
-### JulepApi().job_route_get
-
-[Show source in client.py:2124](../../../../../../julep/api/client.py#L2124)
-
-Get the status of an existing Job by its id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-JobsJobStatus
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.job_route_get(
- id="id",
-)
-
-#### Signature
-
-```python
-def job_route_get(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> JobsJobStatus: ...
-```
-
-### JulepApi().sessions_route_create
-
-[Show source in client.py:2242](../../../../../../julep/api/client.py#L2242)
-
-Create a new session
-
-Parameters
-----------
-situation : str
- A specific situation that sets the background for this session
-
-render_templates : bool
- Render system and assistant message content as jinja templates
-
-user : typing.Optional[CommonUuid]
- User ID of user associated with this session
-
-users : typing.Optional[typing.Sequence[CommonUuid]]
-
-agent : typing.Optional[CommonUuid]
- Agent ID of agent associated with this session
-
-agents : typing.Optional[typing.Sequence[CommonUuid]]
-
-token_budget : typing.Optional[int]
- Threshold value for the adaptive context functionality
-
-context_overflow : typing.Optional[SessionsContextOverflowType]
- Action to start on context window overflow
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.sessions_route_create(
- situation="situation",
- render_templates=True,
-)
-
-#### Signature
-
-```python
-def sessions_route_create(
- self,
- situation: str,
- render_templates: bool,
- user: typing.Optional[CommonUuid] = OMIT,
- users: typing.Optional[typing.Sequence[CommonUuid]] = OMIT,
- agent: typing.Optional[CommonUuid] = OMIT,
- agents: typing.Optional[typing.Sequence[CommonUuid]] = OMIT,
- token_budget: typing.Optional[int] = OMIT,
- context_overflow: typing.Optional[SessionsContextOverflowType] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().sessions_route_create_or_update
-
-[Show source in client.py:2375](../../../../../../julep/api/client.py#L2375)
-
-Create or update a session
-
-Parameters
-----------
-id : CommonUuid
-
-situation : str
- A specific situation that sets the background for this session
-
-render_templates : bool
- Render system and assistant message content as jinja templates
-
-user : typing.Optional[CommonUuid]
- User ID of user associated with this session
-
-users : typing.Optional[typing.Sequence[CommonUuid]]
-
-agent : typing.Optional[CommonUuid]
- Agent ID of agent associated with this session
-
-agents : typing.Optional[typing.Sequence[CommonUuid]]
-
-token_budget : typing.Optional[int]
- Threshold value for the adaptive context functionality
-
-context_overflow : typing.Optional[SessionsContextOverflowType]
- Action to start on context window overflow
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.sessions_route_create_or_update(
- id="id",
- situation="situation",
- render_templates=True,
-)
-
-#### Signature
-
-```python
-def sessions_route_create_or_update(
- self,
- id: CommonUuid,
- situation: str,
- render_templates: bool,
- user: typing.Optional[CommonUuid] = OMIT,
- users: typing.Optional[typing.Sequence[CommonUuid]] = OMIT,
- agent: typing.Optional[CommonUuid] = OMIT,
- agents: typing.Optional[typing.Sequence[CommonUuid]] = OMIT,
- token_budget: typing.Optional[int] = OMIT,
- context_overflow: typing.Optional[SessionsContextOverflowType] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().sessions_route_delete
-
-[Show source in client.py:2544](../../../../../../julep/api/client.py#L2544)
-
-Delete a session by its id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.sessions_route_delete(
- id="id",
-)
-
-#### Signature
-
-```python
-def sessions_route_delete(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> CommonResourceDeletedResponse: ...
-```
-
-### JulepApi().sessions_route_get
-
-[Show source in client.py:2331](../../../../../../julep/api/client.py#L2331)
-
-Get a session by id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-SessionsSession
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.sessions_route_get(
- id="string",
-)
-
-#### Signature
-
-```python
-def sessions_route_get(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> SessionsSession: ...
-```
-
-### JulepApi().sessions_route_list
-
-[Show source in client.py:2168](../../../../../../julep/api/client.py#L2168)
-
-List sessions (paginated)
-
-Parameters
-----------
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : SessionsRouteListRequestSortBy
- Sort by a field
-
-direction : SessionsRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-SessionsRouteListResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.sessions_route_list(
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
-)
-
-#### Signature
-
-```python
-def sessions_route_list(
- self,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: SessionsRouteListRequestSortBy,
- direction: SessionsRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> SessionsRouteListResponse: ...
-```
-
-### JulepApi().sessions_route_patch
-
-[Show source in client.py:2588](../../../../../../julep/api/client.py#L2588)
-
-Update an existing session by its id (merges with existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-situation : typing.Optional[str]
- A specific situation that sets the background for this session
-
-render_templates : typing.Optional[bool]
- Render system and assistant message content as jinja templates
-
-token_budget : typing.Optional[int]
- Threshold value for the adaptive context functionality
-
-context_overflow : typing.Optional[SessionsContextOverflowType]
- Action to start on context window overflow
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.sessions_route_patch(
- id="id",
-)
-
-#### Signature
-
-```python
-def sessions_route_patch(
- self,
- id: CommonUuid,
- situation: typing.Optional[str] = OMIT,
- render_templates: typing.Optional[bool] = OMIT,
- token_budget: typing.Optional[int] = OMIT,
- context_overflow: typing.Optional[SessionsContextOverflowType] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().sessions_route_update
-
-[Show source in client.py:2468](../../../../../../julep/api/client.py#L2468)
-
-Update an existing session by its id (overwrites all existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-situation : str
- A specific situation that sets the background for this session
-
-render_templates : bool
- Render system and assistant message content as jinja templates
-
-token_budget : typing.Optional[int]
- Threshold value for the adaptive context functionality
-
-context_overflow : typing.Optional[SessionsContextOverflowType]
- Action to start on context window overflow
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.sessions_route_update(
- id="id",
- situation="situation",
- render_templates=True,
-)
-
-#### Signature
-
-```python
-def sessions_route_update(
- self,
- id: CommonUuid,
- situation: str,
- render_templates: bool,
- token_budget: typing.Optional[int] = OMIT,
- context_overflow: typing.Optional[SessionsContextOverflowType] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().task_executions_route_create
-
-[Show source in client.py:2995](../../../../../../julep/api/client.py#L2995)
-
-Create an execution for the given task
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-input : typing.Dict[str, typing.Any]
- The input to the execution
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.task_executions_route_create(
- id="id",
- input={"key": "value"},
-)
-
-#### Signature
-
-```python
-def task_executions_route_create(
- self,
- id: CommonUuid,
- input: typing.Dict[str, typing.Any],
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().task_executions_route_list
-
-[Show source in client.py:2916](../../../../../../julep/api/client.py#L2916)
-
-List executions of the given task
-
-Parameters
-----------
-id : CommonUuid
- ID of parent
-
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : TaskExecutionsRouteListRequestSortBy
- Sort by a field
-
-direction : TaskExecutionsRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-TaskExecutionsRouteListResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.task_executions_route_list(
- id="id",
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
-)
-
-#### Signature
-
-```python
-def task_executions_route_list(
- self,
- id: CommonUuid,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: TaskExecutionsRouteListRequestSortBy,
- direction: TaskExecutionsRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> TaskExecutionsRouteListResponse: ...
-```
-
-### JulepApi().tasks_create_or_update_route_create_or_update
-
-[Show source in client.py:1699](../../../../../../julep/api/client.py#L1699)
-
-Create or update a task
-
-Parameters
-----------
-parent_id : CommonUuid
- ID of the agent
-
-id : CommonUuid
-
-name : str
-
-description : str
-
-main : typing.Sequence[TasksCreateTaskRequestMainItem]
- The entrypoint of the task.
-
-tools : typing.Sequence[TasksTaskTool]
- Tools defined specifically for this task not included in the Agent itself.
-
-inherit_tools : bool
- Whether to inherit tools from the parent agent or not. Defaults to true.
-
-input_schema : typing.Optional[typing.Dict[str, typing.Any]]
- The schema for the input to the task. `null` means all inputs are valid.
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-from julep import TasksTaskTool
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.tasks_create_or_update_route_create_or_update(
- parent_id="parent_id",
- id="id",
- name="name",
- description="description",
- main=[],
- tools=[
- TasksTaskTool(
- type="function",
- name="name",
- )
- ],
- inherit_tools=True,
-)
-
-#### Signature
-
-```python
-def tasks_create_or_update_route_create_or_update(
- self,
- parent_id: CommonUuid,
- id: CommonUuid,
- name: str,
- description: str,
- main: typing.Sequence[TasksCreateTaskRequestMainItem],
- tools: typing.Sequence[TasksTaskTool],
- inherit_tools: bool,
- input_schema: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().tasks_route_create
-
-[Show source in client.py:1000](../../../../../../julep/api/client.py#L1000)
-
-Create a new task
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-name : str
-
-description : str
-
-main : typing.Sequence[TasksCreateTaskRequestMainItem]
- The entrypoint of the task.
-
-tools : typing.Sequence[TasksTaskTool]
- Tools defined specifically for this task not included in the Agent itself.
-
-inherit_tools : bool
- Whether to inherit tools from the parent agent or not. Defaults to true.
-
-input_schema : typing.Optional[typing.Dict[str, typing.Any]]
- The schema for the input to the task. `null` means all inputs are valid.
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep import TasksTaskTool
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.tasks_route_create(
- id="id",
- name="name",
- description="description",
- main=[],
- tools=[
- TasksTaskTool(
- type="function",
- name="name",
- )
- ],
- inherit_tools=True,
-)
-
-#### Signature
-
-```python
-def tasks_route_create(
- self,
- id: CommonUuid,
- name: str,
- description: str,
- main: typing.Sequence[TasksCreateTaskRequestMainItem],
- tools: typing.Sequence[TasksTaskTool],
- inherit_tools: bool,
- input_schema: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().tasks_route_delete
-
-[Show source in client.py:1186](../../../../../../julep/api/client.py#L1186)
-
-Delete a task by its id
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be deleted
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.tasks_route_delete(
- id="id",
- child_id="child_id",
-)
-
-#### Signature
-
-```python
-def tasks_route_delete(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceDeletedResponse: ...
-```
-
-### JulepApi().tasks_route_list
-
-[Show source in client.py:921](../../../../../../julep/api/client.py#L921)
-
-List tasks (paginated)
-
-Parameters
-----------
-id : CommonUuid
- ID of parent
-
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : TasksRouteListRequestSortBy
- Sort by a field
-
-direction : TasksRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-TasksRouteListResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.tasks_route_list(
- id="id",
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
-)
-
-#### Signature
-
-```python
-def tasks_route_list(
- self,
- id: CommonUuid,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: TasksRouteListRequestSortBy,
- direction: TasksRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> TasksRouteListResponse: ...
-```
-
-### JulepApi().tasks_route_patch
-
-[Show source in client.py:1238](../../../../../../julep/api/client.py#L1238)
-
-Update an existing task (merges with existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be patched
-
-description : typing.Optional[str]
-
-main : typing.Optional[typing.Sequence[TasksPatchTaskRequestMainItem]]
- The entrypoint of the task.
-
-input_schema : typing.Optional[typing.Dict[str, typing.Any]]
- The schema for the input to the task. `null` means all inputs are valid.
-
-tools : typing.Optional[typing.Sequence[TasksTaskTool]]
- Tools defined specifically for this task not included in the Agent itself.
-
-inherit_tools : typing.Optional[bool]
- Whether to inherit tools from the parent agent or not. Defaults to true.
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.tasks_route_patch(
- id="id",
- child_id="child_id",
-)
-
-#### Signature
-
-```python
-def tasks_route_patch(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- description: typing.Optional[str] = OMIT,
- main: typing.Optional[typing.Sequence[TasksPatchTaskRequestMainItem]] = OMIT,
- input_schema: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- tools: typing.Optional[typing.Sequence[TasksTaskTool]] = OMIT,
- inherit_tools: typing.Optional[bool] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().tasks_route_update
-
-[Show source in client.py:1093](../../../../../../julep/api/client.py#L1093)
-
-Update an existing task (overwrite existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be updated
-
-description : str
-
-main : typing.Sequence[TasksUpdateTaskRequestMainItem]
- The entrypoint of the task.
-
-tools : typing.Sequence[TasksTaskTool]
- Tools defined specifically for this task not included in the Agent itself.
-
-inherit_tools : bool
- Whether to inherit tools from the parent agent or not. Defaults to true.
-
-input_schema : typing.Optional[typing.Dict[str, typing.Any]]
- The schema for the input to the task. `null` means all inputs are valid.
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep import TasksTaskTool
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.tasks_route_update(
- id="id",
- child_id="child_id",
- description="description",
- main=[],
- tools=[
- TasksTaskTool(
- type="function",
- name="name",
- )
- ],
- inherit_tools=True,
-)
-
-#### Signature
-
-```python
-def tasks_route_update(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- description: str,
- main: typing.Sequence[TasksUpdateTaskRequestMainItem],
- tools: typing.Sequence[TasksTaskTool],
- inherit_tools: bool,
- input_schema: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().user_docs_route_create
-
-[Show source in client.py:3533](../../../../../../julep/api/client.py#L3533)
-
-Create a Doc for this User
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-title : CommonIdentifierSafeUnicode
- Title describing what this document contains
-
-content : DocsCreateDocRequestContent
- Contents of the document
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.user_docs_route_create(
- id="id",
- title="title",
- content="content",
-)
-
-#### Signature
-
-```python
-def user_docs_route_create(
- self,
- id: CommonUuid,
- title: CommonIdentifierSafeUnicode,
- content: DocsCreateDocRequestContent,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().user_docs_route_delete
-
-[Show source in client.py:3595](../../../../../../julep/api/client.py#L3595)
-
-Delete a Doc for this User
-
-Parameters
-----------
-id : CommonUuid
- ID of parent resource
-
-child_id : CommonUuid
- ID of the resource to be deleted
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.user_docs_route_delete(
- id="id",
- child_id="child_id",
-)
-
-#### Signature
-
-```python
-def user_docs_route_delete(
- self,
- id: CommonUuid,
- child_id: CommonUuid,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceDeletedResponse: ...
-```
-
-### JulepApi().user_docs_route_list
-
-[Show source in client.py:3454](../../../../../../julep/api/client.py#L3454)
-
-List Docs owned by a User
-
-Parameters
-----------
-id : CommonUuid
- ID of parent
-
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : UserDocsRouteListRequestSortBy
- Sort by a field
-
-direction : UserDocsRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-UserDocsRouteListResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.user_docs_route_list(
- id="id",
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
-)
-
-#### Signature
-
-```python
-def user_docs_route_list(
- self,
- id: CommonUuid,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: UserDocsRouteListRequestSortBy,
- direction: UserDocsRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> UserDocsRouteListResponse: ...
-```
-
-### JulepApi().user_docs_search_route_search
-
-[Show source in client.py:3647](../../../../../../julep/api/client.py#L3647)
-
-Search Docs owned by a User
-
-Parameters
-----------
-id : CommonUuid
- ID of the parent
-
-body : UserDocsSearchRouteSearchRequestBody
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-DocsDocSearchResponse
- The request has succeeded.
-
-Examples
---------
-from julep import DocsVectorDocSearchRequest
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.user_docs_search_route_search(
- id="id",
- body=DocsVectorDocSearchRequest(
- limit=1,
- confidence=1.1,
- vector=[1.1],
- ),
-)
-
-#### Signature
-
-```python
-def user_docs_search_route_search(
- self,
- id: CommonUuid,
- body: UserDocsSearchRouteSearchRequestBody,
- request_options: typing.Optional[RequestOptions] = None,
-) -> DocsDocSearchResponse: ...
-```
-
-### JulepApi().users_route_create
-
-[Show source in client.py:3126](../../../../../../julep/api/client.py#L3126)
-
-Create a new user
-
-Parameters
-----------
-name : CommonIdentifierSafeUnicode
- Name of the user
-
-about : str
- About the user
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceCreatedResponse
- The request has succeeded and a new resource has been created as a result.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.users_route_create(
- name="name",
- about="about",
-)
-
-#### Signature
-
-```python
-def users_route_create(
- self,
- name: CommonIdentifierSafeUnicode,
- about: str,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceCreatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().users_route_create_or_update
-
-[Show source in client.py:3227](../../../../../../julep/api/client.py#L3227)
-
-Create or update a user
-
-Parameters
-----------
-id : CommonUuid
-
-name : CommonIdentifierSafeUnicode
- Name of the user
-
-about : str
- About the user
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.users_route_create_or_update(
- id="id",
- name="name",
- about="about",
-)
-
-#### Signature
-
-```python
-def users_route_create_or_update(
- self,
- id: CommonUuid,
- name: CommonIdentifierSafeUnicode,
- about: str,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().users_route_delete
-
-[Show source in client.py:3350](../../../../../../julep/api/client.py#L3350)
-
-Delete a user by id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceDeletedResponse
- The request has been accepted for processing, but processing has not yet completed.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.users_route_delete(
- id="id",
-)
-
-#### Signature
-
-```python
-def users_route_delete(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> CommonResourceDeletedResponse: ...
-```
-
-### JulepApi().users_route_get
-
-[Show source in client.py:3183](../../../../../../julep/api/client.py#L3183)
-
-Get a user by id
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-UsersUser
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.users_route_get(
- id="id",
-)
-
-#### Signature
-
-```python
-def users_route_get(
- self, id: CommonUuid, request_options: typing.Optional[RequestOptions] = None
-) -> UsersUser: ...
-```
-
-### JulepApi().users_route_list
-
-[Show source in client.py:3052](../../../../../../julep/api/client.py#L3052)
-
-List users (paginated)
-
-Parameters
-----------
-limit : CommonLimit
- Limit the number of items returned
-
-offset : CommonOffset
- Offset the items returned
-
-sort_by : UsersRouteListRequestSortBy
- Sort by a field
-
-direction : UsersRouteListRequestDirection
- Sort direction
-
-metadata_filter : str
- JSON string of object that should be used to filter objects by metadata
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-UsersRouteListResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.users_route_list(
- limit=1,
- offset=1,
- sort_by="created_at",
- direction="asc",
- metadata_filter="metadata_filter",
-)
-
-#### Signature
-
-```python
-def users_route_list(
- self,
- limit: CommonLimit,
- offset: CommonOffset,
- sort_by: UsersRouteListRequestSortBy,
- direction: UsersRouteListRequestDirection,
- metadata_filter: str,
- request_options: typing.Optional[RequestOptions] = None,
-) -> UsersRouteListResponse: ...
-```
-
-### JulepApi().users_route_patch
-
-[Show source in client.py:3394](../../../../../../julep/api/client.py#L3394)
-
-Update an existing user by id (merge with existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-name : typing.Optional[CommonIdentifierSafeUnicode]
- Name of the user
-
-about : typing.Optional[str]
- About the user
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.users_route_patch(
- id="id",
-)
-
-#### Signature
-
-```python
-def users_route_patch(
- self,
- id: CommonUuid,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- name: typing.Optional[CommonIdentifierSafeUnicode] = OMIT,
- about: typing.Optional[str] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
-
-### JulepApi().users_route_update
-
-[Show source in client.py:3288](../../../../../../julep/api/client.py#L3288)
-
-Update an existing user by id (overwrite existing values)
-
-Parameters
-----------
-id : CommonUuid
- ID of the resource
-
-name : CommonIdentifierSafeUnicode
- Name of the user
-
-about : str
- About the user
-
-metadata : typing.Optional[typing.Dict[str, typing.Any]]
-
-request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
-Returns
--------
-CommonResourceUpdatedResponse
- The request has succeeded.
-
-Examples
---------
-from julep.client import JulepApi
-
-client = JulepApi(
- auth_key="YOUR_AUTH_KEY",
- api_key="YOUR_API_KEY",
-)
-client.users_route_update(
- id="id",
- name="name",
- about="about",
-)
-
-#### Signature
-
-```python
-def users_route_update(
- self,
- id: CommonUuid,
- name: CommonIdentifierSafeUnicode,
- about: str,
- metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
- request_options: typing.Optional[RequestOptions] = None,
-) -> CommonResourceUpdatedResponse: ...
-```
-
-#### See also
-
-- [OMIT](#omit)
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/core/api_error.md b/docs/python-sdk-docs/julep/api/core/api_error.md
deleted file mode 100644
index 7a1374c8a..000000000
--- a/docs/python-sdk-docs/julep/api/core/api_error.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# ApiError
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Core](./index.md#core) / ApiError
-
-> Auto-generated documentation for [julep.api.core.api_error](../../../../../../../julep/api/core/api_error.py) module.
-
-- [ApiError](#apierror)
- - [ApiError](#apierror-1)
-
-## ApiError
-
-[Show source in api_error.py:6](../../../../../../../julep/api/core/api_error.py#L6)
-
-#### Signature
-
-```python
-class ApiError(Exception):
- def __init__(
- self, status_code: typing.Optional[int] = None, body: typing.Any = None
- ): ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/core/client_wrapper.md b/docs/python-sdk-docs/julep/api/core/client_wrapper.md
deleted file mode 100644
index 876018f69..000000000
--- a/docs/python-sdk-docs/julep/api/core/client_wrapper.md
+++ /dev/null
@@ -1,105 +0,0 @@
-# Client Wrapper
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Core](./index.md#core) / Client Wrapper
-
-> Auto-generated documentation for [julep.api.core.client_wrapper](../../../../../../../julep/api/core/client_wrapper.py) module.
-
-- [Client Wrapper](#client-wrapper)
- - [AsyncClientWrapper](#asyncclientwrapper)
- - [BaseClientWrapper](#baseclientwrapper)
- - [SyncClientWrapper](#syncclientwrapper)
-
-## AsyncClientWrapper
-
-[Show source in client_wrapper.py:58](../../../../../../../julep/api/core/client_wrapper.py#L58)
-
-#### Signature
-
-```python
-class AsyncClientWrapper(BaseClientWrapper):
- def __init__(
- self,
- auth_key: str,
- api_key: str,
- base_url: str,
- timeout: typing.Optional[float] = None,
- httpx_client: httpx.AsyncClient,
- ): ...
-```
-
-#### See also
-
-- [BaseClientWrapper](#baseclientwrapper)
-
-
-
-## BaseClientWrapper
-
-[Show source in client_wrapper.py:10](../../../../../../../julep/api/core/client_wrapper.py#L10)
-
-#### Signature
-
-```python
-class BaseClientWrapper:
- def __init__(
- self,
- auth_key: str,
- api_key: str,
- base_url: str,
- timeout: typing.Optional[float] = None,
- ): ...
-```
-
-### BaseClientWrapper().get_base_url
-
-[Show source in client_wrapper.py:30](../../../../../../../julep/api/core/client_wrapper.py#L30)
-
-#### Signature
-
-```python
-def get_base_url(self) -> str: ...
-```
-
-### BaseClientWrapper().get_headers
-
-[Show source in client_wrapper.py:24](../../../../../../../julep/api/core/client_wrapper.py#L24)
-
-#### Signature
-
-```python
-def get_headers(self) -> typing.Dict[str, str]: ...
-```
-
-### BaseClientWrapper().get_timeout
-
-[Show source in client_wrapper.py:33](../../../../../../../julep/api/core/client_wrapper.py#L33)
-
-#### Signature
-
-```python
-def get_timeout(self) -> typing.Optional[float]: ...
-```
-
-
-
-## SyncClientWrapper
-
-[Show source in client_wrapper.py:37](../../../../../../../julep/api/core/client_wrapper.py#L37)
-
-#### Signature
-
-```python
-class SyncClientWrapper(BaseClientWrapper):
- def __init__(
- self,
- auth_key: str,
- api_key: str,
- base_url: str,
- timeout: typing.Optional[float] = None,
- httpx_client: httpx.Client,
- ): ...
-```
-
-#### See also
-
-- [BaseClientWrapper](#baseclientwrapper)
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/core/datetime_utils.md b/docs/python-sdk-docs/julep/api/core/datetime_utils.md
deleted file mode 100644
index 079e9b9c1..000000000
--- a/docs/python-sdk-docs/julep/api/core/datetime_utils.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Datetime Utils
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Core](./index.md#core) / Datetime Utils
-
-> Auto-generated documentation for [julep.api.core.datetime_utils](../../../../../../../julep/api/core/datetime_utils.py) module.
-
-- [Datetime Utils](#datetime-utils)
- - [serialize_datetime](#serialize_datetime)
-
-## serialize_datetime
-
-[Show source in datetime_utils.py:6](../../../../../../../julep/api/core/datetime_utils.py#L6)
-
-Serialize a datetime including timezone info.
-
-Uses the timezone info provided if present, otherwise uses the current runtime's timezone info.
-
-UTC datetimes end in "Z" while all other timezones are represented as offset from UTC, e.g. +05:00.
-
-#### Signature
-
-```python
-def serialize_datetime(v: dt.datetime) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/core/file.md b/docs/python-sdk-docs/julep/api/core/file.md
deleted file mode 100644
index 79d76c4cf..000000000
--- a/docs/python-sdk-docs/julep/api/core/file.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# File
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Core](./index.md#core) / File
-
-> Auto-generated documentation for [julep.api.core.file](../../../../../../../julep/api/core/file.py) module.
-
-#### Attributes
-
-- `FileContent` - File typing inspired by the flexibility of types within the httpx library
- https://github.com/encode/httpx/blob/master/httpx/_types.py: typing.Union[typing.IO[bytes], bytes, str]
-
-
-- [File](#file)
- - [convert_file_dict_to_httpx_tuples](#convert_file_dict_to_httpx_tuples)
-
-## convert_file_dict_to_httpx_tuples
-
-[Show source in file.py:25](../../../../../../../julep/api/core/file.py#L25)
-
-The format we use is a list of tuples, where the first element is the
-name of the file and the second is the file object. Typically HTTPX wants
-a dict, but to be able to send lists of files, you have to use the list
-approach (which also works for non-lists)
-https://github.com/encode/httpx/pull/1032
-
-#### Signature
-
-```python
-def convert_file_dict_to_httpx_tuples(
- d: typing.Dict[str, typing.Union[File, typing.List[File]]],
-) -> typing.List[typing.Tuple[str, File]]: ...
-```
-
-#### See also
-
-- [File](#file)
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/core/http_client.md b/docs/python-sdk-docs/julep/api/core/http_client.md
deleted file mode 100644
index bdfc9598a..000000000
--- a/docs/python-sdk-docs/julep/api/core/http_client.md
+++ /dev/null
@@ -1,264 +0,0 @@
-# HttpClient
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Core](./index.md#core) / HttpClient
-
-> Auto-generated documentation for [julep.api.core.http_client](../../../../../../../julep/api/core/http_client.py) module.
-
-- [HttpClient](#httpclient)
- - [AsyncHttpClient](#asynchttpclient)
- - [HttpClient](#httpclient-1)
- - [_parse_retry_after](#_parse_retry_after)
- - [_retry_timeout](#_retry_timeout)
- - [get_request_body](#get_request_body)
- - [maybe_filter_request_body](#maybe_filter_request_body)
- - [remove_omit_from_dict](#remove_omit_from_dict)
-
-## AsyncHttpClient
-
-[Show source in http_client.py:357](../../../../../../../julep/api/core/http_client.py#L357)
-
-#### Signature
-
-```python
-class AsyncHttpClient:
- def __init__(
- self,
- httpx_client: httpx.AsyncClient,
- base_timeout: typing.Optional[float],
- base_headers: typing.Dict[str, str],
- base_url: typing.Optional[str] = None,
- ): ...
-```
-
-### AsyncHttpClient().get_base_url
-
-[Show source in http_client.py:371](../../../../../../../julep/api/core/http_client.py#L371)
-
-#### Signature
-
-```python
-def get_base_url(self, maybe_base_url: typing.Optional[str]) -> str: ...
-```
-
-### AsyncHttpClient().request
-
-[Show source in http_client.py:379](../../../../../../../julep/api/core/http_client.py#L379)
-
-#### Signature
-
-```python
-async def request(
- self,
- path: typing.Optional[str] = None,
- method: str,
- base_url: typing.Optional[str] = None,
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
- json: typing.Optional[typing.Any] = None,
- data: typing.Optional[typing.Any] = None,
- content: typing.Optional[
- typing.Union[bytes, typing.Iterator[bytes], typing.AsyncIterator[bytes]]
- ] = None,
- files: typing.Optional[
- typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]]
- ] = None,
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
- request_options: typing.Optional[RequestOptions] = None,
- retries: int = 0,
- omit: typing.Optional[typing.Any] = None,
-) -> httpx.Response: ...
-```
-
-### AsyncHttpClient().stream
-
-[Show source in http_client.py:480](../../../../../../../julep/api/core/http_client.py#L480)
-
-#### Signature
-
-```python
-@asynccontextmanager
-async def stream(
- self,
- path: typing.Optional[str] = None,
- method: str,
- base_url: typing.Optional[str] = None,
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
- json: typing.Optional[typing.Any] = None,
- data: typing.Optional[typing.Any] = None,
- content: typing.Optional[
- typing.Union[bytes, typing.Iterator[bytes], typing.AsyncIterator[bytes]]
- ] = None,
- files: typing.Optional[
- typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]]
- ] = None,
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
- request_options: typing.Optional[RequestOptions] = None,
- retries: int = 0,
- omit: typing.Optional[typing.Any] = None,
-) -> typing.AsyncIterator[httpx.Response]: ...
-```
-
-
-
-## HttpClient
-
-[Show source in http_client.py:153](../../../../../../../julep/api/core/http_client.py#L153)
-
-#### Signature
-
-```python
-class HttpClient:
- def __init__(
- self,
- httpx_client: httpx.Client,
- base_timeout: typing.Optional[float],
- base_headers: typing.Dict[str, str],
- base_url: typing.Optional[str] = None,
- ): ...
-```
-
-### HttpClient().get_base_url
-
-[Show source in http_client.py:167](../../../../../../../julep/api/core/http_client.py#L167)
-
-#### Signature
-
-```python
-def get_base_url(self, maybe_base_url: typing.Optional[str]) -> str: ...
-```
-
-### HttpClient().request
-
-[Show source in http_client.py:175](../../../../../../../julep/api/core/http_client.py#L175)
-
-#### Signature
-
-```python
-def request(
- self,
- path: typing.Optional[str] = None,
- method: str,
- base_url: typing.Optional[str] = None,
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
- json: typing.Optional[typing.Any] = None,
- data: typing.Optional[typing.Any] = None,
- content: typing.Optional[
- typing.Union[bytes, typing.Iterator[bytes], typing.AsyncIterator[bytes]]
- ] = None,
- files: typing.Optional[
- typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]]
- ] = None,
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
- request_options: typing.Optional[RequestOptions] = None,
- retries: int = 0,
- omit: typing.Optional[typing.Any] = None,
-) -> httpx.Response: ...
-```
-
-### HttpClient().stream
-
-[Show source in http_client.py:276](../../../../../../../julep/api/core/http_client.py#L276)
-
-#### Signature
-
-```python
-@contextmanager
-def stream(
- self,
- path: typing.Optional[str] = None,
- method: str,
- base_url: typing.Optional[str] = None,
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
- json: typing.Optional[typing.Any] = None,
- data: typing.Optional[typing.Any] = None,
- content: typing.Optional[
- typing.Union[bytes, typing.Iterator[bytes], typing.AsyncIterator[bytes]]
- ] = None,
- files: typing.Optional[
- typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]]
- ] = None,
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
- request_options: typing.Optional[RequestOptions] = None,
- retries: int = 0,
- omit: typing.Optional[typing.Any] = None,
-) -> typing.Iterator[httpx.Response]: ...
-```
-
-
-
-## _parse_retry_after
-
-[Show source in http_client.py:26](../../../../../../../julep/api/core/http_client.py#L26)
-
-This function parses the `Retry-After` header in a HTTP response and returns the number of seconds to wait.
-
-Inspired by the urllib3 retry implementation.
-
-#### Signature
-
-```python
-def _parse_retry_after(response_headers: httpx.Headers) -> typing.Optional[float]: ...
-```
-
-
-
-## _retry_timeout
-
-[Show source in http_client.py:67](../../../../../../../julep/api/core/http_client.py#L67)
-
-Determine the amount of time to wait before retrying a request.
-This function begins by trying to parse a retry-after header from the response, and then proceeds to use exponential backoff
-with a jitter to determine the number of seconds to wait.
-
-#### Signature
-
-```python
-def _retry_timeout(response: httpx.Response, retries: int) -> float: ...
-```
-
-
-
-## get_request_body
-
-[Show source in http_client.py:135](../../../../../../../julep/api/core/http_client.py#L135)
-
-#### Signature
-
-```python
-def get_request_body(
- json: typing.Optional[typing.Any],
- data: typing.Optional[typing.Any],
- request_options: typing.Optional[RequestOptions],
- omit: typing.Optional[typing.Any],
-) -> typing.Tuple[typing.Optional[typing.Any], typing.Optional[typing.Any]]: ...
-```
-
-
-
-## maybe_filter_request_body
-
-[Show source in http_client.py:107](../../../../../../../julep/api/core/http_client.py#L107)
-
-#### Signature
-
-```python
-def maybe_filter_request_body(
- data: typing.Optional[typing.Any],
- request_options: typing.Optional[RequestOptions],
- omit: typing.Optional[typing.Any],
-) -> typing.Optional[typing.Any]: ...
-```
-
-
-
-## remove_omit_from_dict
-
-[Show source in http_client.py:94](../../../../../../../julep/api/core/http_client.py#L94)
-
-#### Signature
-
-```python
-def remove_omit_from_dict(
- original: typing.Dict[str, typing.Optional[typing.Any]],
- omit: typing.Optional[typing.Any],
-) -> typing.Dict[str, typing.Any]: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/core/index.md b/docs/python-sdk-docs/julep/api/core/index.md
deleted file mode 100644
index 66561bb3a..000000000
--- a/docs/python-sdk-docs/julep/api/core/index.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Core
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / Core
-
-> Auto-generated documentation for [julep.api.core](../../../../../../../julep/api/core/__init__.py) module.
-
-- [Core](#core)
- - [Modules](#modules)
-
-## Modules
-
-- [ApiError](./api_error.md)
-- [Client Wrapper](./client_wrapper.md)
-- [Datetime Utils](./datetime_utils.md)
-- [File](./file.md)
-- [HttpClient](./http_client.md)
-- [Jsonable Encoder](./jsonable_encoder.md)
-- [Pydantic Utilities](./pydantic_utilities.md)
-- [Query Encoder](./query_encoder.md)
-- [Remove None From Dict](./remove_none_from_dict.md)
-- [RequestOptions](./request_options.md)
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/core/jsonable_encoder.md b/docs/python-sdk-docs/julep/api/core/jsonable_encoder.md
deleted file mode 100644
index 0f9ec18f8..000000000
--- a/docs/python-sdk-docs/julep/api/core/jsonable_encoder.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# Jsonable Encoder
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Core](./index.md#core) / Jsonable Encoder
-
-> Auto-generated documentation for [julep.api.core.jsonable_encoder](../../../../../../../julep/api/core/jsonable_encoder.py) module.
-
-- [Jsonable Encoder](#jsonable-encoder)
- - [generate_encoders_by_class_tuples](#generate_encoders_by_class_tuples)
- - [jsonable_encoder](#jsonable_encoder)
-
-## generate_encoders_by_class_tuples
-
-[Show source in jsonable_encoder.py:26](../../../../../../../julep/api/core/jsonable_encoder.py#L26)
-
-#### Signature
-
-```python
-def generate_encoders_by_class_tuples(
- type_encoder_map: Dict[Any, Callable[[Any], Any]],
-) -> Dict[Callable[[Any], Any], Tuple[Any, ...]]: ...
-```
-
-
-
-## jsonable_encoder
-
-[Show source in jsonable_encoder.py:42](../../../../../../../julep/api/core/jsonable_encoder.py#L42)
-
-#### Signature
-
-```python
-def jsonable_encoder(
- obj: Any, custom_encoder: Optional[Dict[Any, Callable[[Any], Any]]] = None
-) -> Any: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/core/pydantic_utilities.md b/docs/python-sdk-docs/julep/api/core/pydantic_utilities.md
deleted file mode 100644
index 032fa4805..000000000
--- a/docs/python-sdk-docs/julep/api/core/pydantic_utilities.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Pydantic Utilities
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Core](./index.md#core) / Pydantic Utilities
-
-> Auto-generated documentation for [julep.api.core.pydantic_utilities](../../../../../../../julep/api/core/pydantic_utilities.py) module.
-- [Pydantic Utilities](#pydantic-utilities)
diff --git a/docs/python-sdk-docs/julep/api/core/query_encoder.md b/docs/python-sdk-docs/julep/api/core/query_encoder.md
deleted file mode 100644
index 2c4b4f65d..000000000
--- a/docs/python-sdk-docs/julep/api/core/query_encoder.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# Query Encoder
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Core](./index.md#core) / Query Encoder
-
-> Auto-generated documentation for [julep.api.core.query_encoder](../../../../../../../julep/api/core/query_encoder.py) module.
-
-- [Query Encoder](#query-encoder)
- - [encode_query](#encode_query)
- - [single_query_encoder](#single_query_encoder)
- - [traverse_query_dict](#traverse_query_dict)
-
-## encode_query
-
-[Show source in query_encoder.py:34](../../../../../../../julep/api/core/query_encoder.py#L34)
-
-#### Signature
-
-```python
-def encode_query(query: Optional[Dict[str, Any]]) -> Optional[Dict[str, Any]]: ...
-```
-
-
-
-## single_query_encoder
-
-[Show source in query_encoder.py:23](../../../../../../../julep/api/core/query_encoder.py#L23)
-
-#### Signature
-
-```python
-def single_query_encoder(query_key: str, query_value: Any) -> Dict[str, Any]: ...
-```
-
-
-
-## traverse_query_dict
-
-[Show source in query_encoder.py:10](../../../../../../../julep/api/core/query_encoder.py#L10)
-
-#### Signature
-
-```python
-def traverse_query_dict(
- dict_flat: Dict[str, Any], key_prefix: Optional[str] = None
-) -> Dict[str, Any]: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/core/remove_none_from_dict.md b/docs/python-sdk-docs/julep/api/core/remove_none_from_dict.md
deleted file mode 100644
index 532583b48..000000000
--- a/docs/python-sdk-docs/julep/api/core/remove_none_from_dict.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Remove None From Dict
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Core](./index.md#core) / Remove None From Dict
-
-> Auto-generated documentation for [julep.api.core.remove_none_from_dict](../../../../../../../julep/api/core/remove_none_from_dict.py) module.
-
-- [Remove None From Dict](#remove-none-from-dict)
- - [remove_none_from_dict](#remove_none_from_dict)
-
-## remove_none_from_dict
-
-[Show source in remove_none_from_dict.py:6](../../../../../../../julep/api/core/remove_none_from_dict.py#L6)
-
-#### Signature
-
-```python
-def remove_none_from_dict(original: Mapping[str, Optional[Any]]) -> Dict[str, Any]: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/core/request_options.md b/docs/python-sdk-docs/julep/api/core/request_options.md
deleted file mode 100644
index cac44806f..000000000
--- a/docs/python-sdk-docs/julep/api/core/request_options.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# RequestOptions
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Core](./index.md#core) / RequestOptions
-
-> Auto-generated documentation for [julep.api.core.request_options](../../../../../../../julep/api/core/request_options.py) module.
-
-- [RequestOptions](#requestoptions)
- - [RequestOptions](#requestoptions-1)
-
-## RequestOptions
-
-[Show source in request_options.py:11](../../../../../../../julep/api/core/request_options.py#L11)
-
-Additional options for request-specific configuration when calling APIs via the SDK.
-This is used primarily as an optional final parameter for service functions.
-
-#### Attributes
-
-- `-` *timeout_in_seconds* - int. The number of seconds to await an API call before timing out.
-
-- `-` *max_retries* - int. The max number of retries to attempt if the API call fails.
-
-- `-` *additional_headers* - typing.Dict[str, typing.Any]. A dictionary containing additional parameters to spread into the request's header dict
-
-- `-` *additional_query_parameters* - typing.Dict[str, typing.Any]. A dictionary containing additional parameters to spread into the request's query parameters dict
-
-- `-` *additional_body_parameters* - typing.Dict[str, typing.Any]. A dictionary containing additional parameters to spread into the request's body parameters dict
-
-#### Signature
-
-```python
-class RequestOptions(typing.TypedDict): ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/environment.md b/docs/python-sdk-docs/julep/api/environment.md
deleted file mode 100644
index d10e1aa22..000000000
--- a/docs/python-sdk-docs/julep/api/environment.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Environment
-
-[Julep Python SDK Index](../../README.md#julep-python-sdk-index) / [Julep](../index.md#julep) / [Julep Python Library](./index.md#julep-python-library) / Environment
-
-> Auto-generated documentation for [julep.api.environment](../../../../../../julep/api/environment.py) module.
-
-- [Environment](#environment)
- - [JulepApiEnvironment](#julepapienvironment)
-
-## JulepApiEnvironment
-
-[Show source in environment.py:6](../../../../../../julep/api/environment.py#L6)
-
-#### Signature
-
-```python
-class JulepApiEnvironment(enum.Enum): ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/index.md b/docs/python-sdk-docs/julep/api/index.md
deleted file mode 100644
index f943d9357..000000000
--- a/docs/python-sdk-docs/julep/api/index.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Julep Python Library
-
-[Julep Python SDK Index](../../README.md#julep-python-sdk-index) / [Julep](../index.md#julep) / Julep Python Library
-
-> Auto-generated documentation for [julep.api](../../../../../../julep/api/__init__.py) module.
-
-- [Julep Python Library](#julep-python-library)
- - [Modules](#modules)
-
-## Modules
-
-- [Client](./client.md)
-- [Core](core/index.md)
-- [Environment](./environment.md)
-- [Types](types/index.md)
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/agent_docs_route_list_request_direction.md b/docs/python-sdk-docs/julep/api/types/agent_docs_route_list_request_direction.md
deleted file mode 100644
index 6073fd184..000000000
--- a/docs/python-sdk-docs/julep/api/types/agent_docs_route_list_request_direction.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Agent Docs Route List Request Direction
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Agent Docs Route List Request Direction
-
-> Auto-generated documentation for [julep.api.types.agent_docs_route_list_request_direction](../../../../../../../julep/api/types/agent_docs_route_list_request_direction.py) module.
-- [Agent Docs Route List Request Direction](#agent-docs-route-list-request-direction)
diff --git a/docs/python-sdk-docs/julep/api/types/agent_docs_route_list_request_sort_by.md b/docs/python-sdk-docs/julep/api/types/agent_docs_route_list_request_sort_by.md
deleted file mode 100644
index 5c28c8198..000000000
--- a/docs/python-sdk-docs/julep/api/types/agent_docs_route_list_request_sort_by.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Agent Docs Route List Request Sort By
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Agent Docs Route List Request Sort By
-
-> Auto-generated documentation for [julep.api.types.agent_docs_route_list_request_sort_by](../../../../../../../julep/api/types/agent_docs_route_list_request_sort_by.py) module.
-- [Agent Docs Route List Request Sort By](#agent-docs-route-list-request-sort-by)
diff --git a/docs/python-sdk-docs/julep/api/types/agent_docs_route_list_response.md b/docs/python-sdk-docs/julep/api/types/agent_docs_route_list_response.md
deleted file mode 100644
index 07b9352e5..000000000
--- a/docs/python-sdk-docs/julep/api/types/agent_docs_route_list_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# AgentDocsRouteListResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / AgentDocsRouteListResponse
-
-> Auto-generated documentation for [julep.api.types.agent_docs_route_list_response](../../../../../../../julep/api/types/agent_docs_route_list_response.py) module.
-
-- [AgentDocsRouteListResponse](#agentdocsroutelistresponse)
- - [AgentDocsRouteListResponse](#agentdocsroutelistresponse-1)
-
-## AgentDocsRouteListResponse
-
-[Show source in agent_docs_route_list_response.py:11](../../../../../../../julep/api/types/agent_docs_route_list_response.py#L11)
-
-#### Signature
-
-```python
-class AgentDocsRouteListResponse(pydantic_v1.BaseModel): ...
-```
-
-### AgentDocsRouteListResponse().dict
-
-[Show source in agent_docs_route_list_response.py:22](../../../../../../../julep/api/types/agent_docs_route_list_response.py#L22)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### AgentDocsRouteListResponse().json
-
-[Show source in agent_docs_route_list_response.py:14](../../../../../../../julep/api/types/agent_docs_route_list_response.py#L14)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/agent_tools_route_list_request_direction.md b/docs/python-sdk-docs/julep/api/types/agent_tools_route_list_request_direction.md
deleted file mode 100644
index 6a9f1e4c2..000000000
--- a/docs/python-sdk-docs/julep/api/types/agent_tools_route_list_request_direction.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Agent Tools Route List Request Direction
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Agent Tools Route List Request Direction
-
-> Auto-generated documentation for [julep.api.types.agent_tools_route_list_request_direction](../../../../../../../julep/api/types/agent_tools_route_list_request_direction.py) module.
-- [Agent Tools Route List Request Direction](#agent-tools-route-list-request-direction)
diff --git a/docs/python-sdk-docs/julep/api/types/agent_tools_route_list_request_sort_by.md b/docs/python-sdk-docs/julep/api/types/agent_tools_route_list_request_sort_by.md
deleted file mode 100644
index f8ce5d292..000000000
--- a/docs/python-sdk-docs/julep/api/types/agent_tools_route_list_request_sort_by.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Agent Tools Route List Request Sort By
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Agent Tools Route List Request Sort By
-
-> Auto-generated documentation for [julep.api.types.agent_tools_route_list_request_sort_by](../../../../../../../julep/api/types/agent_tools_route_list_request_sort_by.py) module.
-- [Agent Tools Route List Request Sort By](#agent-tools-route-list-request-sort-by)
diff --git a/docs/python-sdk-docs/julep/api/types/agent_tools_route_list_response.md b/docs/python-sdk-docs/julep/api/types/agent_tools_route_list_response.md
deleted file mode 100644
index 49377b911..000000000
--- a/docs/python-sdk-docs/julep/api/types/agent_tools_route_list_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# AgentToolsRouteListResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / AgentToolsRouteListResponse
-
-> Auto-generated documentation for [julep.api.types.agent_tools_route_list_response](../../../../../../../julep/api/types/agent_tools_route_list_response.py) module.
-
-- [AgentToolsRouteListResponse](#agenttoolsroutelistresponse)
- - [AgentToolsRouteListResponse](#agenttoolsroutelistresponse-1)
-
-## AgentToolsRouteListResponse
-
-[Show source in agent_tools_route_list_response.py:11](../../../../../../../julep/api/types/agent_tools_route_list_response.py#L11)
-
-#### Signature
-
-```python
-class AgentToolsRouteListResponse(pydantic_v1.BaseModel): ...
-```
-
-### AgentToolsRouteListResponse().dict
-
-[Show source in agent_tools_route_list_response.py:22](../../../../../../../julep/api/types/agent_tools_route_list_response.py#L22)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### AgentToolsRouteListResponse().json
-
-[Show source in agent_tools_route_list_response.py:14](../../../../../../../julep/api/types/agent_tools_route_list_response.py#L14)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/agents_agent.md b/docs/python-sdk-docs/julep/api/types/agents_agent.md
deleted file mode 100644
index 0e1b52be6..000000000
--- a/docs/python-sdk-docs/julep/api/types/agents_agent.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# AgentsAgent
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / AgentsAgent
-
-> Auto-generated documentation for [julep.api.types.agents_agent](../../../../../../../julep/api/types/agents_agent.py) module.
-
-- [AgentsAgent](#agentsagent)
- - [AgentsAgent](#agentsagent-1)
-
-## AgentsAgent
-
-[Show source in agents_agent.py:14](../../../../../../../julep/api/types/agents_agent.py#L14)
-
-#### Signature
-
-```python
-class AgentsAgent(pydantic_v1.BaseModel): ...
-```
-
-### AgentsAgent().dict
-
-[Show source in agents_agent.py:62](../../../../../../../julep/api/types/agents_agent.py#L62)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### AgentsAgent().json
-
-[Show source in agents_agent.py:54](../../../../../../../julep/api/types/agents_agent.py#L54)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/agents_agent_instructions.md b/docs/python-sdk-docs/julep/api/types/agents_agent_instructions.md
deleted file mode 100644
index fde3264fe..000000000
--- a/docs/python-sdk-docs/julep/api/types/agents_agent_instructions.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Agents Agent Instructions
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Agents Agent Instructions
-
-> Auto-generated documentation for [julep.api.types.agents_agent_instructions](../../../../../../../julep/api/types/agents_agent_instructions.py) module.
-- [Agents Agent Instructions](#agents-agent-instructions)
diff --git a/docs/python-sdk-docs/julep/api/types/agents_create_agent_request.md b/docs/python-sdk-docs/julep/api/types/agents_create_agent_request.md
deleted file mode 100644
index 0102d2005..000000000
--- a/docs/python-sdk-docs/julep/api/types/agents_create_agent_request.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# AgentsCreateAgentRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / AgentsCreateAgentRequest
-
-> Auto-generated documentation for [julep.api.types.agents_create_agent_request](../../../../../../../julep/api/types/agents_create_agent_request.py) module.
-
-- [AgentsCreateAgentRequest](#agentscreateagentrequest)
- - [AgentsCreateAgentRequest](#agentscreateagentrequest-1)
-
-## AgentsCreateAgentRequest
-
-[Show source in agents_create_agent_request.py:15](../../../../../../../julep/api/types/agents_create_agent_request.py#L15)
-
-Payload for creating a agent (and associated documents)
-
-#### Signature
-
-```python
-class AgentsCreateAgentRequest(pydantic_v1.BaseModel): ...
-```
-
-### AgentsCreateAgentRequest().dict
-
-[Show source in agents_create_agent_request.py:56](../../../../../../../julep/api/types/agents_create_agent_request.py#L56)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### AgentsCreateAgentRequest().json
-
-[Show source in agents_create_agent_request.py:48](../../../../../../../julep/api/types/agents_create_agent_request.py#L48)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/agents_create_agent_request_instructions.md b/docs/python-sdk-docs/julep/api/types/agents_create_agent_request_instructions.md
deleted file mode 100644
index 3b7d98899..000000000
--- a/docs/python-sdk-docs/julep/api/types/agents_create_agent_request_instructions.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Agents Create Agent Request Instructions
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Agents Create Agent Request Instructions
-
-> Auto-generated documentation for [julep.api.types.agents_create_agent_request_instructions](../../../../../../../julep/api/types/agents_create_agent_request_instructions.py) module.
-- [Agents Create Agent Request Instructions](#agents-create-agent-request-instructions)
diff --git a/docs/python-sdk-docs/julep/api/types/agents_create_or_update_agent_request.md b/docs/python-sdk-docs/julep/api/types/agents_create_or_update_agent_request.md
deleted file mode 100644
index e13f3c7e3..000000000
--- a/docs/python-sdk-docs/julep/api/types/agents_create_or_update_agent_request.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# AgentsCreateOrUpdateAgentRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / AgentsCreateOrUpdateAgentRequest
-
-> Auto-generated documentation for [julep.api.types.agents_create_or_update_agent_request](../../../../../../../julep/api/types/agents_create_or_update_agent_request.py) module.
-
-- [AgentsCreateOrUpdateAgentRequest](#agentscreateorupdateagentrequest)
- - [AgentsCreateOrUpdateAgentRequest](#agentscreateorupdateagentrequest-1)
-
-## AgentsCreateOrUpdateAgentRequest
-
-[Show source in agents_create_or_update_agent_request.py:16](../../../../../../../julep/api/types/agents_create_or_update_agent_request.py#L16)
-
-#### Signature
-
-```python
-class AgentsCreateOrUpdateAgentRequest(pydantic_v1.BaseModel): ...
-```
-
-### AgentsCreateOrUpdateAgentRequest().dict
-
-[Show source in agents_create_or_update_agent_request.py:54](../../../../../../../julep/api/types/agents_create_or_update_agent_request.py#L54)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### AgentsCreateOrUpdateAgentRequest().json
-
-[Show source in agents_create_or_update_agent_request.py:46](../../../../../../../julep/api/types/agents_create_or_update_agent_request.py#L46)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/agents_docs_search_route_search_request_body.md b/docs/python-sdk-docs/julep/api/types/agents_docs_search_route_search_request_body.md
deleted file mode 100644
index bb7c047be..000000000
--- a/docs/python-sdk-docs/julep/api/types/agents_docs_search_route_search_request_body.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Agents Docs Search Route Search Request Body
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Agents Docs Search Route Search Request Body
-
-> Auto-generated documentation for [julep.api.types.agents_docs_search_route_search_request_body](../../../../../../../julep/api/types/agents_docs_search_route_search_request_body.py) module.
-- [Agents Docs Search Route Search Request Body](#agents-docs-search-route-search-request-body)
diff --git a/docs/python-sdk-docs/julep/api/types/agents_patch_agent_request_instructions.md b/docs/python-sdk-docs/julep/api/types/agents_patch_agent_request_instructions.md
deleted file mode 100644
index d05f16482..000000000
--- a/docs/python-sdk-docs/julep/api/types/agents_patch_agent_request_instructions.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Agents Patch Agent Request Instructions
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Agents Patch Agent Request Instructions
-
-> Auto-generated documentation for [julep.api.types.agents_patch_agent_request_instructions](../../../../../../../julep/api/types/agents_patch_agent_request_instructions.py) module.
-- [Agents Patch Agent Request Instructions](#agents-patch-agent-request-instructions)
diff --git a/docs/python-sdk-docs/julep/api/types/agents_route_list_request_direction.md b/docs/python-sdk-docs/julep/api/types/agents_route_list_request_direction.md
deleted file mode 100644
index c723dd549..000000000
--- a/docs/python-sdk-docs/julep/api/types/agents_route_list_request_direction.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Agents Route List Request Direction
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Agents Route List Request Direction
-
-> Auto-generated documentation for [julep.api.types.agents_route_list_request_direction](../../../../../../../julep/api/types/agents_route_list_request_direction.py) module.
-- [Agents Route List Request Direction](#agents-route-list-request-direction)
diff --git a/docs/python-sdk-docs/julep/api/types/agents_route_list_request_sort_by.md b/docs/python-sdk-docs/julep/api/types/agents_route_list_request_sort_by.md
deleted file mode 100644
index dae7a82ba..000000000
--- a/docs/python-sdk-docs/julep/api/types/agents_route_list_request_sort_by.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Agents Route List Request Sort By
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Agents Route List Request Sort By
-
-> Auto-generated documentation for [julep.api.types.agents_route_list_request_sort_by](../../../../../../../julep/api/types/agents_route_list_request_sort_by.py) module.
-- [Agents Route List Request Sort By](#agents-route-list-request-sort-by)
diff --git a/docs/python-sdk-docs/julep/api/types/agents_route_list_response.md b/docs/python-sdk-docs/julep/api/types/agents_route_list_response.md
deleted file mode 100644
index cbe615c1e..000000000
--- a/docs/python-sdk-docs/julep/api/types/agents_route_list_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# AgentsRouteListResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / AgentsRouteListResponse
-
-> Auto-generated documentation for [julep.api.types.agents_route_list_response](../../../../../../../julep/api/types/agents_route_list_response.py) module.
-
-- [AgentsRouteListResponse](#agentsroutelistresponse)
- - [AgentsRouteListResponse](#agentsroutelistresponse-1)
-
-## AgentsRouteListResponse
-
-[Show source in agents_route_list_response.py:11](../../../../../../../julep/api/types/agents_route_list_response.py#L11)
-
-#### Signature
-
-```python
-class AgentsRouteListResponse(pydantic_v1.BaseModel): ...
-```
-
-### AgentsRouteListResponse().dict
-
-[Show source in agents_route_list_response.py:22](../../../../../../../julep/api/types/agents_route_list_response.py#L22)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### AgentsRouteListResponse().json
-
-[Show source in agents_route_list_response.py:14](../../../../../../../julep/api/types/agents_route_list_response.py#L14)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/agents_update_agent_request.md b/docs/python-sdk-docs/julep/api/types/agents_update_agent_request.md
deleted file mode 100644
index 8f906f097..000000000
--- a/docs/python-sdk-docs/julep/api/types/agents_update_agent_request.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# AgentsUpdateAgentRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / AgentsUpdateAgentRequest
-
-> Auto-generated documentation for [julep.api.types.agents_update_agent_request](../../../../../../../julep/api/types/agents_update_agent_request.py) module.
-
-- [AgentsUpdateAgentRequest](#agentsupdateagentrequest)
- - [AgentsUpdateAgentRequest](#agentsupdateagentrequest-1)
-
-## AgentsUpdateAgentRequest
-
-[Show source in agents_update_agent_request.py:15](../../../../../../../julep/api/types/agents_update_agent_request.py#L15)
-
-Payload for updating a agent
-
-#### Signature
-
-```python
-class AgentsUpdateAgentRequest(pydantic_v1.BaseModel): ...
-```
-
-### AgentsUpdateAgentRequest().dict
-
-[Show source in agents_update_agent_request.py:56](../../../../../../../julep/api/types/agents_update_agent_request.py#L56)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### AgentsUpdateAgentRequest().json
-
-[Show source in agents_update_agent_request.py:48](../../../../../../../julep/api/types/agents_update_agent_request.py#L48)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/agents_update_agent_request_instructions.md b/docs/python-sdk-docs/julep/api/types/agents_update_agent_request_instructions.md
deleted file mode 100644
index a2a61914f..000000000
--- a/docs/python-sdk-docs/julep/api/types/agents_update_agent_request_instructions.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Agents Update Agent Request Instructions
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Agents Update Agent Request Instructions
-
-> Auto-generated documentation for [julep.api.types.agents_update_agent_request_instructions](../../../../../../../julep/api/types/agents_update_agent_request_instructions.py) module.
-- [Agents Update Agent Request Instructions](#agents-update-agent-request-instructions)
diff --git a/docs/python-sdk-docs/julep/api/types/chat_base_chat_output.md b/docs/python-sdk-docs/julep/api/types/chat_base_chat_output.md
deleted file mode 100644
index 4f6fde8bc..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_base_chat_output.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ChatBaseChatOutput
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatBaseChatOutput
-
-> Auto-generated documentation for [julep.api.types.chat_base_chat_output](../../../../../../../julep/api/types/chat_base_chat_output.py) module.
-
-- [ChatBaseChatOutput](#chatbasechatoutput)
- - [ChatBaseChatOutput](#chatbasechatoutput-1)
-
-## ChatBaseChatOutput
-
-[Show source in chat_base_chat_output.py:12](../../../../../../../julep/api/types/chat_base_chat_output.py#L12)
-
-#### Signature
-
-```python
-class ChatBaseChatOutput(pydantic_v1.BaseModel): ...
-```
-
-### ChatBaseChatOutput().dict
-
-[Show source in chat_base_chat_output.py:32](../../../../../../../julep/api/types/chat_base_chat_output.py#L32)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatBaseChatOutput().json
-
-[Show source in chat_base_chat_output.py:24](../../../../../../../julep/api/types/chat_base_chat_output.py#L24)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/chat_base_chat_response.md b/docs/python-sdk-docs/julep/api/types/chat_base_chat_response.md
deleted file mode 100644
index 9eef6113b..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_base_chat_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ChatBaseChatResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatBaseChatResponse
-
-> Auto-generated documentation for [julep.api.types.chat_base_chat_response](../../../../../../../julep/api/types/chat_base_chat_response.py) module.
-
-- [ChatBaseChatResponse](#chatbasechatresponse)
- - [ChatBaseChatResponse](#chatbasechatresponse-1)
-
-## ChatBaseChatResponse
-
-[Show source in chat_base_chat_response.py:13](../../../../../../../julep/api/types/chat_base_chat_response.py#L13)
-
-#### Signature
-
-```python
-class ChatBaseChatResponse(pydantic_v1.BaseModel): ...
-```
-
-### ChatBaseChatResponse().dict
-
-[Show source in chat_base_chat_response.py:44](../../../../../../../julep/api/types/chat_base_chat_response.py#L44)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatBaseChatResponse().json
-
-[Show source in chat_base_chat_response.py:36](../../../../../../../julep/api/types/chat_base_chat_response.py#L36)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/chat_base_token_log_prob.md b/docs/python-sdk-docs/julep/api/types/chat_base_token_log_prob.md
deleted file mode 100644
index 02074dd4e..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_base_token_log_prob.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ChatBaseTokenLogProb
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatBaseTokenLogProb
-
-> Auto-generated documentation for [julep.api.types.chat_base_token_log_prob](../../../../../../../julep/api/types/chat_base_token_log_prob.py) module.
-
-- [ChatBaseTokenLogProb](#chatbasetokenlogprob)
- - [ChatBaseTokenLogProb](#chatbasetokenlogprob-1)
-
-## ChatBaseTokenLogProb
-
-[Show source in chat_base_token_log_prob.py:10](../../../../../../../julep/api/types/chat_base_token_log_prob.py#L10)
-
-#### Signature
-
-```python
-class ChatBaseTokenLogProb(pydantic_v1.BaseModel): ...
-```
-
-### ChatBaseTokenLogProb().dict
-
-[Show source in chat_base_token_log_prob.py:27](../../../../../../../julep/api/types/chat_base_token_log_prob.py#L27)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatBaseTokenLogProb().json
-
-[Show source in chat_base_token_log_prob.py:19](../../../../../../../julep/api/types/chat_base_token_log_prob.py#L19)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/chat_chat_input_data.md b/docs/python-sdk-docs/julep/api/types/chat_chat_input_data.md
deleted file mode 100644
index a830d7fa5..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_chat_input_data.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ChatChatInputData
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatChatInputData
-
-> Auto-generated documentation for [julep.api.types.chat_chat_input_data](../../../../../../../julep/api/types/chat_chat_input_data.py) module.
-
-- [ChatChatInputData](#chatchatinputdata)
- - [ChatChatInputData](#chatchatinputdata-1)
-
-## ChatChatInputData
-
-[Show source in chat_chat_input_data.py:13](../../../../../../../julep/api/types/chat_chat_input_data.py#L13)
-
-#### Signature
-
-```python
-class ChatChatInputData(pydantic_v1.BaseModel): ...
-```
-
-### ChatChatInputData().dict
-
-[Show source in chat_chat_input_data.py:41](../../../../../../../julep/api/types/chat_chat_input_data.py#L41)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatChatInputData().json
-
-[Show source in chat_chat_input_data.py:33](../../../../../../../julep/api/types/chat_chat_input_data.py#L33)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/chat_chat_input_data_tool_choice.md b/docs/python-sdk-docs/julep/api/types/chat_chat_input_data_tool_choice.md
deleted file mode 100644
index 819c98d14..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_chat_input_data_tool_choice.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Chat Chat Input Data Tool Choice
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Chat Chat Input Data Tool Choice
-
-> Auto-generated documentation for [julep.api.types.chat_chat_input_data_tool_choice](../../../../../../../julep/api/types/chat_chat_input_data_tool_choice.py) module.
-- [Chat Chat Input Data Tool Choice](#chat-chat-input-data-tool-choice)
diff --git a/docs/python-sdk-docs/julep/api/types/chat_chat_output_chunk.md b/docs/python-sdk-docs/julep/api/types/chat_chat_output_chunk.md
deleted file mode 100644
index 25f16b4ba..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_chat_output_chunk.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# ChatChatOutputChunk
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatChatOutputChunk
-
-> Auto-generated documentation for [julep.api.types.chat_chat_output_chunk](../../../../../../../julep/api/types/chat_chat_output_chunk.py) module.
-
-- [ChatChatOutputChunk](#chatchatoutputchunk)
- - [ChatChatOutputChunk](#chatchatoutputchunk-1)
-
-## ChatChatOutputChunk
-
-[Show source in chat_chat_output_chunk.py:12](../../../../../../../julep/api/types/chat_chat_output_chunk.py#L12)
-
-Streaming chat completion output
-
-#### Signature
-
-```python
-class ChatChatOutputChunk(ChatBaseChatOutput): ...
-```
-
-### ChatChatOutputChunk().dict
-
-[Show source in chat_chat_output_chunk.py:30](../../../../../../../julep/api/types/chat_chat_output_chunk.py#L30)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatChatOutputChunk().json
-
-[Show source in chat_chat_output_chunk.py:22](../../../../../../../julep/api/types/chat_chat_output_chunk.py#L22)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/chat_chat_settings.md b/docs/python-sdk-docs/julep/api/types/chat_chat_settings.md
deleted file mode 100644
index af2b74943..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_chat_settings.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ChatChatSettings
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatChatSettings
-
-> Auto-generated documentation for [julep.api.types.chat_chat_settings](../../../../../../../julep/api/types/chat_chat_settings.py) module.
-
-- [ChatChatSettings](#chatchatsettings)
- - [ChatChatSettings](#chatchatsettings-1)
-
-## ChatChatSettings
-
-[Show source in chat_chat_settings.py:15](../../../../../../../julep/api/types/chat_chat_settings.py#L15)
-
-#### Signature
-
-```python
-class ChatChatSettings(ChatDefaultChatSettings): ...
-```
-
-### ChatChatSettings().dict
-
-[Show source in chat_chat_settings.py:70](../../../../../../../julep/api/types/chat_chat_settings.py#L70)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatChatSettings().json
-
-[Show source in chat_chat_settings.py:62](../../../../../../../julep/api/types/chat_chat_settings.py#L62)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/chat_chunk_chat_response.md b/docs/python-sdk-docs/julep/api/types/chat_chunk_chat_response.md
deleted file mode 100644
index 2ec411b53..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_chunk_chat_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ChatChunkChatResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatChunkChatResponse
-
-> Auto-generated documentation for [julep.api.types.chat_chunk_chat_response](../../../../../../../julep/api/types/chat_chunk_chat_response.py) module.
-
-- [ChatChunkChatResponse](#chatchunkchatresponse)
- - [ChatChunkChatResponse](#chatchunkchatresponse-1)
-
-## ChatChunkChatResponse
-
-[Show source in chat_chunk_chat_response.py:12](../../../../../../../julep/api/types/chat_chunk_chat_response.py#L12)
-
-#### Signature
-
-```python
-class ChatChunkChatResponse(ChatBaseChatResponse): ...
-```
-
-### ChatChunkChatResponse().dict
-
-[Show source in chat_chunk_chat_response.py:26](../../../../../../../julep/api/types/chat_chunk_chat_response.py#L26)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatChunkChatResponse().json
-
-[Show source in chat_chunk_chat_response.py:18](../../../../../../../julep/api/types/chat_chunk_chat_response.py#L18)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/chat_competion_usage.md b/docs/python-sdk-docs/julep/api/types/chat_competion_usage.md
deleted file mode 100644
index 8c55bb12c..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_competion_usage.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# ChatCompetionUsage
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatCompetionUsage
-
-> Auto-generated documentation for [julep.api.types.chat_competion_usage](../../../../../../../julep/api/types/chat_competion_usage.py) module.
-
-- [ChatCompetionUsage](#chatcompetionusage)
- - [ChatCompetionUsage](#chatcompetionusage-1)
-
-## ChatCompetionUsage
-
-[Show source in chat_competion_usage.py:10](../../../../../../../julep/api/types/chat_competion_usage.py#L10)
-
-Usage statistics for the completion request
-
-#### Signature
-
-```python
-class ChatCompetionUsage(pydantic_v1.BaseModel): ...
-```
-
-### ChatCompetionUsage().dict
-
-[Show source in chat_competion_usage.py:38](../../../../../../../julep/api/types/chat_competion_usage.py#L38)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatCompetionUsage().json
-
-[Show source in chat_competion_usage.py:30](../../../../../../../julep/api/types/chat_competion_usage.py#L30)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/chat_completion_response_format.md b/docs/python-sdk-docs/julep/api/types/chat_completion_response_format.md
deleted file mode 100644
index c18aab307..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_completion_response_format.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ChatCompletionResponseFormat
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatCompletionResponseFormat
-
-> Auto-generated documentation for [julep.api.types.chat_completion_response_format](../../../../../../../julep/api/types/chat_completion_response_format.py) module.
-
-- [ChatCompletionResponseFormat](#chatcompletionresponseformat)
- - [ChatCompletionResponseFormat](#chatcompletionresponseformat-1)
-
-## ChatCompletionResponseFormat
-
-[Show source in chat_completion_response_format.py:11](../../../../../../../julep/api/types/chat_completion_response_format.py#L11)
-
-#### Signature
-
-```python
-class ChatCompletionResponseFormat(pydantic_v1.BaseModel): ...
-```
-
-### ChatCompletionResponseFormat().dict
-
-[Show source in chat_completion_response_format.py:25](../../../../../../../julep/api/types/chat_completion_response_format.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatCompletionResponseFormat().json
-
-[Show source in chat_completion_response_format.py:17](../../../../../../../julep/api/types/chat_completion_response_format.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/chat_completion_response_format_type.md b/docs/python-sdk-docs/julep/api/types/chat_completion_response_format_type.md
deleted file mode 100644
index 0630b2d84..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_completion_response_format_type.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Chat Completion Response Format Type
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Chat Completion Response Format Type
-
-> Auto-generated documentation for [julep.api.types.chat_completion_response_format_type](../../../../../../../julep/api/types/chat_completion_response_format_type.py) module.
-- [Chat Completion Response Format Type](#chat-completion-response-format-type)
diff --git a/docs/python-sdk-docs/julep/api/types/chat_default_chat_settings.md b/docs/python-sdk-docs/julep/api/types/chat_default_chat_settings.md
deleted file mode 100644
index 5905defde..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_default_chat_settings.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# ChatDefaultChatSettings
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatDefaultChatSettings
-
-> Auto-generated documentation for [julep.api.types.chat_default_chat_settings](../../../../../../../julep/api/types/chat_default_chat_settings.py) module.
-
-- [ChatDefaultChatSettings](#chatdefaultchatsettings)
- - [ChatDefaultChatSettings](#chatdefaultchatsettings-1)
-
-## ChatDefaultChatSettings
-
-[Show source in chat_default_chat_settings.py:11](../../../../../../../julep/api/types/chat_default_chat_settings.py#L11)
-
-Default settings for the chat session (also used by the agent)
-
-#### Signature
-
-```python
-class ChatDefaultChatSettings(ChatOpenAiSettings): ...
-```
-
-### ChatDefaultChatSettings().dict
-
-[Show source in chat_default_chat_settings.py:39](../../../../../../../julep/api/types/chat_default_chat_settings.py#L39)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatDefaultChatSettings().json
-
-[Show source in chat_default_chat_settings.py:31](../../../../../../../julep/api/types/chat_default_chat_settings.py#L31)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/chat_finish_reason.md b/docs/python-sdk-docs/julep/api/types/chat_finish_reason.md
deleted file mode 100644
index b01a1c85e..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_finish_reason.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Chat Finish Reason
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Chat Finish Reason
-
-> Auto-generated documentation for [julep.api.types.chat_finish_reason](../../../../../../../julep/api/types/chat_finish_reason.py) module.
-- [Chat Finish Reason](#chat-finish-reason)
diff --git a/docs/python-sdk-docs/julep/api/types/chat_log_prob_response.md b/docs/python-sdk-docs/julep/api/types/chat_log_prob_response.md
deleted file mode 100644
index 3b72f98c7..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_log_prob_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ChatLogProbResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatLogProbResponse
-
-> Auto-generated documentation for [julep.api.types.chat_log_prob_response](../../../../../../../julep/api/types/chat_log_prob_response.py) module.
-
-- [ChatLogProbResponse](#chatlogprobresponse)
- - [ChatLogProbResponse](#chatlogprobresponse-1)
-
-## ChatLogProbResponse
-
-[Show source in chat_log_prob_response.py:11](../../../../../../../julep/api/types/chat_log_prob_response.py#L11)
-
-#### Signature
-
-```python
-class ChatLogProbResponse(pydantic_v1.BaseModel): ...
-```
-
-### ChatLogProbResponse().dict
-
-[Show source in chat_log_prob_response.py:27](../../../../../../../julep/api/types/chat_log_prob_response.py#L27)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatLogProbResponse().json
-
-[Show source in chat_log_prob_response.py:19](../../../../../../../julep/api/types/chat_log_prob_response.py#L19)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/chat_message_chat_response.md b/docs/python-sdk-docs/julep/api/types/chat_message_chat_response.md
deleted file mode 100644
index 361a12782..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_message_chat_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ChatMessageChatResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatMessageChatResponse
-
-> Auto-generated documentation for [julep.api.types.chat_message_chat_response](../../../../../../../julep/api/types/chat_message_chat_response.py) module.
-
-- [ChatMessageChatResponse](#chatmessagechatresponse)
- - [ChatMessageChatResponse](#chatmessagechatresponse-1)
-
-## ChatMessageChatResponse
-
-[Show source in chat_message_chat_response.py:12](../../../../../../../julep/api/types/chat_message_chat_response.py#L12)
-
-#### Signature
-
-```python
-class ChatMessageChatResponse(ChatBaseChatResponse): ...
-```
-
-### ChatMessageChatResponse().dict
-
-[Show source in chat_message_chat_response.py:26](../../../../../../../julep/api/types/chat_message_chat_response.py#L26)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatMessageChatResponse().json
-
-[Show source in chat_message_chat_response.py:18](../../../../../../../julep/api/types/chat_message_chat_response.py#L18)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/chat_message_chat_response_choices_item.md b/docs/python-sdk-docs/julep/api/types/chat_message_chat_response_choices_item.md
deleted file mode 100644
index 8cdf93ded..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_message_chat_response_choices_item.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Chat Message Chat Response Choices Item
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Chat Message Chat Response Choices Item
-
-> Auto-generated documentation for [julep.api.types.chat_message_chat_response_choices_item](../../../../../../../julep/api/types/chat_message_chat_response_choices_item.py) module.
-- [Chat Message Chat Response Choices Item](#chat-message-chat-response-choices-item)
diff --git a/docs/python-sdk-docs/julep/api/types/chat_multiple_chat_output.md b/docs/python-sdk-docs/julep/api/types/chat_multiple_chat_output.md
deleted file mode 100644
index e6e1502ba..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_multiple_chat_output.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# ChatMultipleChatOutput
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatMultipleChatOutput
-
-> Auto-generated documentation for [julep.api.types.chat_multiple_chat_output](../../../../../../../julep/api/types/chat_multiple_chat_output.py) module.
-
-- [ChatMultipleChatOutput](#chatmultiplechatoutput)
- - [ChatMultipleChatOutput](#chatmultiplechatoutput-1)
-
-## ChatMultipleChatOutput
-
-[Show source in chat_multiple_chat_output.py:12](../../../../../../../julep/api/types/chat_multiple_chat_output.py#L12)
-
-The output returned by the model. Note that, depending on the model provider, they might return more than one message.
-
-#### Signature
-
-```python
-class ChatMultipleChatOutput(ChatBaseChatOutput): ...
-```
-
-### ChatMultipleChatOutput().dict
-
-[Show source in chat_multiple_chat_output.py:27](../../../../../../../julep/api/types/chat_multiple_chat_output.py#L27)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatMultipleChatOutput().json
-
-[Show source in chat_multiple_chat_output.py:19](../../../../../../../julep/api/types/chat_multiple_chat_output.py#L19)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/chat_open_ai_settings.md b/docs/python-sdk-docs/julep/api/types/chat_open_ai_settings.md
deleted file mode 100644
index d04291d75..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_open_ai_settings.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ChatOpenAiSettings
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatOpenAiSettings
-
-> Auto-generated documentation for [julep.api.types.chat_open_ai_settings](../../../../../../../julep/api/types/chat_open_ai_settings.py) module.
-
-- [ChatOpenAiSettings](#chatopenaisettings)
- - [ChatOpenAiSettings](#chatopenaisettings-1)
-
-## ChatOpenAiSettings
-
-[Show source in chat_open_ai_settings.py:10](../../../../../../../julep/api/types/chat_open_ai_settings.py#L10)
-
-#### Signature
-
-```python
-class ChatOpenAiSettings(pydantic_v1.BaseModel): ...
-```
-
-### ChatOpenAiSettings().dict
-
-[Show source in chat_open_ai_settings.py:39](../../../../../../../julep/api/types/chat_open_ai_settings.py#L39)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatOpenAiSettings().json
-
-[Show source in chat_open_ai_settings.py:31](../../../../../../../julep/api/types/chat_open_ai_settings.py#L31)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/chat_route_generate_response.md b/docs/python-sdk-docs/julep/api/types/chat_route_generate_response.md
deleted file mode 100644
index 947f8c61e..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_route_generate_response.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Chat Route Generate Response
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Chat Route Generate Response
-
-> Auto-generated documentation for [julep.api.types.chat_route_generate_response](../../../../../../../julep/api/types/chat_route_generate_response.py) module.
-- [Chat Route Generate Response](#chat-route-generate-response)
diff --git a/docs/python-sdk-docs/julep/api/types/chat_single_chat_output.md b/docs/python-sdk-docs/julep/api/types/chat_single_chat_output.md
deleted file mode 100644
index dac22a9c6..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_single_chat_output.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# ChatSingleChatOutput
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatSingleChatOutput
-
-> Auto-generated documentation for [julep.api.types.chat_single_chat_output](../../../../../../../julep/api/types/chat_single_chat_output.py) module.
-
-- [ChatSingleChatOutput](#chatsinglechatoutput)
- - [ChatSingleChatOutput](#chatsinglechatoutput-1)
-
-## ChatSingleChatOutput
-
-[Show source in chat_single_chat_output.py:12](../../../../../../../julep/api/types/chat_single_chat_output.py#L12)
-
-The output returned by the model. Note that, depending on the model provider, they might return more than one message.
-
-#### Signature
-
-```python
-class ChatSingleChatOutput(ChatBaseChatOutput): ...
-```
-
-### ChatSingleChatOutput().dict
-
-[Show source in chat_single_chat_output.py:27](../../../../../../../julep/api/types/chat_single_chat_output.py#L27)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatSingleChatOutput().json
-
-[Show source in chat_single_chat_output.py:19](../../../../../../../julep/api/types/chat_single_chat_output.py#L19)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/chat_token_log_prob.md b/docs/python-sdk-docs/julep/api/types/chat_token_log_prob.md
deleted file mode 100644
index d4a37cd47..000000000
--- a/docs/python-sdk-docs/julep/api/types/chat_token_log_prob.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ChatTokenLogProb
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ChatTokenLogProb
-
-> Auto-generated documentation for [julep.api.types.chat_token_log_prob](../../../../../../../julep/api/types/chat_token_log_prob.py) module.
-
-- [ChatTokenLogProb](#chattokenlogprob)
- - [ChatTokenLogProb](#chattokenlogprob-1)
-
-## ChatTokenLogProb
-
-[Show source in chat_token_log_prob.py:11](../../../../../../../julep/api/types/chat_token_log_prob.py#L11)
-
-#### Signature
-
-```python
-class ChatTokenLogProb(ChatBaseTokenLogProb): ...
-```
-
-### ChatTokenLogProb().dict
-
-[Show source in chat_token_log_prob.py:22](../../../../../../../julep/api/types/chat_token_log_prob.py#L22)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ChatTokenLogProb().json
-
-[Show source in chat_token_log_prob.py:14](../../../../../../../julep/api/types/chat_token_log_prob.py#L14)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/common_identifier_safe_unicode.md b/docs/python-sdk-docs/julep/api/types/common_identifier_safe_unicode.md
deleted file mode 100644
index 4c4999309..000000000
--- a/docs/python-sdk-docs/julep/api/types/common_identifier_safe_unicode.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Common Identifier Safe Unicode
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Common Identifier Safe Unicode
-
-> Auto-generated documentation for [julep.api.types.common_identifier_safe_unicode](../../../../../../../julep/api/types/common_identifier_safe_unicode.py) module.
-- [Common Identifier Safe Unicode](#common-identifier-safe-unicode)
diff --git a/docs/python-sdk-docs/julep/api/types/common_limit.md b/docs/python-sdk-docs/julep/api/types/common_limit.md
deleted file mode 100644
index df209cd76..000000000
--- a/docs/python-sdk-docs/julep/api/types/common_limit.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Common Limit
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Common Limit
-
-> Auto-generated documentation for [julep.api.types.common_limit](../../../../../../../julep/api/types/common_limit.py) module.
-- [Common Limit](#common-limit)
diff --git a/docs/python-sdk-docs/julep/api/types/common_logit_bias.md b/docs/python-sdk-docs/julep/api/types/common_logit_bias.md
deleted file mode 100644
index ebdfac95c..000000000
--- a/docs/python-sdk-docs/julep/api/types/common_logit_bias.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Common Logit Bias
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Common Logit Bias
-
-> Auto-generated documentation for [julep.api.types.common_logit_bias](../../../../../../../julep/api/types/common_logit_bias.py) module.
-- [Common Logit Bias](#common-logit-bias)
diff --git a/docs/python-sdk-docs/julep/api/types/common_offset.md b/docs/python-sdk-docs/julep/api/types/common_offset.md
deleted file mode 100644
index 1cda9e94c..000000000
--- a/docs/python-sdk-docs/julep/api/types/common_offset.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Common Offset
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Common Offset
-
-> Auto-generated documentation for [julep.api.types.common_offset](../../../../../../../julep/api/types/common_offset.py) module.
-- [Common Offset](#common-offset)
diff --git a/docs/python-sdk-docs/julep/api/types/common_py_expression.md b/docs/python-sdk-docs/julep/api/types/common_py_expression.md
deleted file mode 100644
index 857f14bb7..000000000
--- a/docs/python-sdk-docs/julep/api/types/common_py_expression.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Common Py Expression
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Common Py Expression
-
-> Auto-generated documentation for [julep.api.types.common_py_expression](../../../../../../../julep/api/types/common_py_expression.py) module.
-- [Common Py Expression](#common-py-expression)
diff --git a/docs/python-sdk-docs/julep/api/types/common_resource_created_response.md b/docs/python-sdk-docs/julep/api/types/common_resource_created_response.md
deleted file mode 100644
index 888c00989..000000000
--- a/docs/python-sdk-docs/julep/api/types/common_resource_created_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# CommonResourceCreatedResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / CommonResourceCreatedResponse
-
-> Auto-generated documentation for [julep.api.types.common_resource_created_response](../../../../../../../julep/api/types/common_resource_created_response.py) module.
-
-- [CommonResourceCreatedResponse](#commonresourcecreatedresponse)
- - [CommonResourceCreatedResponse](#commonresourcecreatedresponse-1)
-
-## CommonResourceCreatedResponse
-
-[Show source in common_resource_created_response.py:11](../../../../../../../julep/api/types/common_resource_created_response.py#L11)
-
-#### Signature
-
-```python
-class CommonResourceCreatedResponse(pydantic_v1.BaseModel): ...
-```
-
-### CommonResourceCreatedResponse().dict
-
-[Show source in common_resource_created_response.py:35](../../../../../../../julep/api/types/common_resource_created_response.py#L35)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### CommonResourceCreatedResponse().json
-
-[Show source in common_resource_created_response.py:27](../../../../../../../julep/api/types/common_resource_created_response.py#L27)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/common_resource_deleted_response.md b/docs/python-sdk-docs/julep/api/types/common_resource_deleted_response.md
deleted file mode 100644
index 4b1f510b3..000000000
--- a/docs/python-sdk-docs/julep/api/types/common_resource_deleted_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# CommonResourceDeletedResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / CommonResourceDeletedResponse
-
-> Auto-generated documentation for [julep.api.types.common_resource_deleted_response](../../../../../../../julep/api/types/common_resource_deleted_response.py) module.
-
-- [CommonResourceDeletedResponse](#commonresourcedeletedresponse)
- - [CommonResourceDeletedResponse](#commonresourcedeletedresponse-1)
-
-## CommonResourceDeletedResponse
-
-[Show source in common_resource_deleted_response.py:11](../../../../../../../julep/api/types/common_resource_deleted_response.py#L11)
-
-#### Signature
-
-```python
-class CommonResourceDeletedResponse(pydantic_v1.BaseModel): ...
-```
-
-### CommonResourceDeletedResponse().dict
-
-[Show source in common_resource_deleted_response.py:35](../../../../../../../julep/api/types/common_resource_deleted_response.py#L35)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### CommonResourceDeletedResponse().json
-
-[Show source in common_resource_deleted_response.py:27](../../../../../../../julep/api/types/common_resource_deleted_response.py#L27)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/common_resource_updated_response.md b/docs/python-sdk-docs/julep/api/types/common_resource_updated_response.md
deleted file mode 100644
index c01549486..000000000
--- a/docs/python-sdk-docs/julep/api/types/common_resource_updated_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# CommonResourceUpdatedResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / CommonResourceUpdatedResponse
-
-> Auto-generated documentation for [julep.api.types.common_resource_updated_response](../../../../../../../julep/api/types/common_resource_updated_response.py) module.
-
-- [CommonResourceUpdatedResponse](#commonresourceupdatedresponse)
- - [CommonResourceUpdatedResponse](#commonresourceupdatedresponse-1)
-
-## CommonResourceUpdatedResponse
-
-[Show source in common_resource_updated_response.py:11](../../../../../../../julep/api/types/common_resource_updated_response.py#L11)
-
-#### Signature
-
-```python
-class CommonResourceUpdatedResponse(pydantic_v1.BaseModel): ...
-```
-
-### CommonResourceUpdatedResponse().dict
-
-[Show source in common_resource_updated_response.py:35](../../../../../../../julep/api/types/common_resource_updated_response.py#L35)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### CommonResourceUpdatedResponse().json
-
-[Show source in common_resource_updated_response.py:27](../../../../../../../julep/api/types/common_resource_updated_response.py#L27)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/common_tool_ref.md b/docs/python-sdk-docs/julep/api/types/common_tool_ref.md
deleted file mode 100644
index eaeedab94..000000000
--- a/docs/python-sdk-docs/julep/api/types/common_tool_ref.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Common Tool Ref
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Common Tool Ref
-
-> Auto-generated documentation for [julep.api.types.common_tool_ref](../../../../../../../julep/api/types/common_tool_ref.py) module.
-- [Common Tool Ref](#common-tool-ref)
diff --git a/docs/python-sdk-docs/julep/api/types/common_uuid.md b/docs/python-sdk-docs/julep/api/types/common_uuid.md
deleted file mode 100644
index 6946cadd2..000000000
--- a/docs/python-sdk-docs/julep/api/types/common_uuid.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Common Uuid
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Common Uuid
-
-> Auto-generated documentation for [julep.api.types.common_uuid](../../../../../../../julep/api/types/common_uuid.py) module.
-- [Common Uuid](#common-uuid)
diff --git a/docs/python-sdk-docs/julep/api/types/common_valid_python_identifier.md b/docs/python-sdk-docs/julep/api/types/common_valid_python_identifier.md
deleted file mode 100644
index 4f7723b0f..000000000
--- a/docs/python-sdk-docs/julep/api/types/common_valid_python_identifier.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Common Valid Python Identifier
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Common Valid Python Identifier
-
-> Auto-generated documentation for [julep.api.types.common_valid_python_identifier](../../../../../../../julep/api/types/common_valid_python_identifier.py) module.
-- [Common Valid Python Identifier](#common-valid-python-identifier)
diff --git a/docs/python-sdk-docs/julep/api/types/docs_base_doc_search_request.md b/docs/python-sdk-docs/julep/api/types/docs_base_doc_search_request.md
deleted file mode 100644
index dfbf3cdd8..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_base_doc_search_request.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# DocsBaseDocSearchRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / DocsBaseDocSearchRequest
-
-> Auto-generated documentation for [julep.api.types.docs_base_doc_search_request](../../../../../../../julep/api/types/docs_base_doc_search_request.py) module.
-
-- [DocsBaseDocSearchRequest](#docsbasedocsearchrequest)
- - [DocsBaseDocSearchRequest](#docsbasedocsearchrequest-1)
-
-## DocsBaseDocSearchRequest
-
-[Show source in docs_base_doc_search_request.py:10](../../../../../../../julep/api/types/docs_base_doc_search_request.py#L10)
-
-#### Signature
-
-```python
-class DocsBaseDocSearchRequest(pydantic_v1.BaseModel): ...
-```
-
-### DocsBaseDocSearchRequest().dict
-
-[Show source in docs_base_doc_search_request.py:25](../../../../../../../julep/api/types/docs_base_doc_search_request.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### DocsBaseDocSearchRequest().json
-
-[Show source in docs_base_doc_search_request.py:17](../../../../../../../julep/api/types/docs_base_doc_search_request.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/docs_create_doc_request.md b/docs/python-sdk-docs/julep/api/types/docs_create_doc_request.md
deleted file mode 100644
index ae70487ac..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_create_doc_request.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# DocsCreateDocRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / DocsCreateDocRequest
-
-> Auto-generated documentation for [julep.api.types.docs_create_doc_request](../../../../../../../julep/api/types/docs_create_doc_request.py) module.
-
-- [DocsCreateDocRequest](#docscreatedocrequest)
- - [DocsCreateDocRequest](#docscreatedocrequest-1)
-
-## DocsCreateDocRequest
-
-[Show source in docs_create_doc_request.py:12](../../../../../../../julep/api/types/docs_create_doc_request.py#L12)
-
-Payload for creating a doc
-
-#### Signature
-
-```python
-class DocsCreateDocRequest(pydantic_v1.BaseModel): ...
-```
-
-### DocsCreateDocRequest().dict
-
-[Show source in docs_create_doc_request.py:36](../../../../../../../julep/api/types/docs_create_doc_request.py#L36)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### DocsCreateDocRequest().json
-
-[Show source in docs_create_doc_request.py:28](../../../../../../../julep/api/types/docs_create_doc_request.py#L28)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/docs_create_doc_request_content.md b/docs/python-sdk-docs/julep/api/types/docs_create_doc_request_content.md
deleted file mode 100644
index abb30a801..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_create_doc_request_content.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Docs Create Doc Request Content
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Docs Create Doc Request Content
-
-> Auto-generated documentation for [julep.api.types.docs_create_doc_request_content](../../../../../../../julep/api/types/docs_create_doc_request_content.py) module.
-- [Docs Create Doc Request Content](#docs-create-doc-request-content)
diff --git a/docs/python-sdk-docs/julep/api/types/docs_doc.md b/docs/python-sdk-docs/julep/api/types/docs_doc.md
deleted file mode 100644
index 514c94ec5..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_doc.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# DocsDoc
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / DocsDoc
-
-> Auto-generated documentation for [julep.api.types.docs_doc](../../../../../../../julep/api/types/docs_doc.py) module.
-
-- [DocsDoc](#docsdoc)
- - [DocsDoc](#docsdoc-1)
-
-## DocsDoc
-
-[Show source in docs_doc.py:13](../../../../../../../julep/api/types/docs_doc.py#L13)
-
-#### Signature
-
-```python
-class DocsDoc(pydantic_v1.BaseModel): ...
-```
-
-### DocsDoc().dict
-
-[Show source in docs_doc.py:39](../../../../../../../julep/api/types/docs_doc.py#L39)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### DocsDoc().json
-
-[Show source in docs_doc.py:31](../../../../../../../julep/api/types/docs_doc.py#L31)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/docs_doc_content.md b/docs/python-sdk-docs/julep/api/types/docs_doc_content.md
deleted file mode 100644
index 5215c33da..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_doc_content.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Docs Doc Content
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Docs Doc Content
-
-> Auto-generated documentation for [julep.api.types.docs_doc_content](../../../../../../../julep/api/types/docs_doc_content.py) module.
-- [Docs Doc Content](#docs-doc-content)
diff --git a/docs/python-sdk-docs/julep/api/types/docs_doc_owner.md b/docs/python-sdk-docs/julep/api/types/docs_doc_owner.md
deleted file mode 100644
index aea6da18c..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_doc_owner.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# DocsDocOwner
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / DocsDocOwner
-
-> Auto-generated documentation for [julep.api.types.docs_doc_owner](../../../../../../../julep/api/types/docs_doc_owner.py) module.
-
-- [DocsDocOwner](#docsdocowner)
- - [DocsDocOwner](#docsdocowner-1)
-
-## DocsDocOwner
-
-[Show source in docs_doc_owner.py:12](../../../../../../../julep/api/types/docs_doc_owner.py#L12)
-
-#### Signature
-
-```python
-class DocsDocOwner(pydantic_v1.BaseModel): ...
-```
-
-### DocsDocOwner().dict
-
-[Show source in docs_doc_owner.py:24](../../../../../../../julep/api/types/docs_doc_owner.py#L24)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### DocsDocOwner().json
-
-[Show source in docs_doc_owner.py:16](../../../../../../../julep/api/types/docs_doc_owner.py#L16)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/docs_doc_owner_role.md b/docs/python-sdk-docs/julep/api/types/docs_doc_owner_role.md
deleted file mode 100644
index 847c151be..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_doc_owner_role.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Docs Doc Owner Role
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Docs Doc Owner Role
-
-> Auto-generated documentation for [julep.api.types.docs_doc_owner_role](../../../../../../../julep/api/types/docs_doc_owner_role.py) module.
-- [Docs Doc Owner Role](#docs-doc-owner-role)
diff --git a/docs/python-sdk-docs/julep/api/types/docs_doc_reference.md b/docs/python-sdk-docs/julep/api/types/docs_doc_reference.md
deleted file mode 100644
index 7c0f740fa..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_doc_reference.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# DocsDocReference
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / DocsDocReference
-
-> Auto-generated documentation for [julep.api.types.docs_doc_reference](../../../../../../../julep/api/types/docs_doc_reference.py) module.
-
-- [DocsDocReference](#docsdocreference)
- - [DocsDocReference](#docsdocreference-1)
-
-## DocsDocReference
-
-[Show source in docs_doc_reference.py:13](../../../../../../../julep/api/types/docs_doc_reference.py#L13)
-
-#### Signature
-
-```python
-class DocsDocReference(pydantic_v1.BaseModel): ...
-```
-
-### DocsDocReference().dict
-
-[Show source in docs_doc_reference.py:36](../../../../../../../julep/api/types/docs_doc_reference.py#L36)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### DocsDocReference().json
-
-[Show source in docs_doc_reference.py:28](../../../../../../../julep/api/types/docs_doc_reference.py#L28)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/docs_doc_search_response.md b/docs/python-sdk-docs/julep/api/types/docs_doc_search_response.md
deleted file mode 100644
index ce99b009c..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_doc_search_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# DocsDocSearchResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / DocsDocSearchResponse
-
-> Auto-generated documentation for [julep.api.types.docs_doc_search_response](../../../../../../../julep/api/types/docs_doc_search_response.py) module.
-
-- [DocsDocSearchResponse](#docsdocsearchresponse)
- - [DocsDocSearchResponse](#docsdocsearchresponse-1)
-
-## DocsDocSearchResponse
-
-[Show source in docs_doc_search_response.py:11](../../../../../../../julep/api/types/docs_doc_search_response.py#L11)
-
-#### Signature
-
-```python
-class DocsDocSearchResponse(pydantic_v1.BaseModel): ...
-```
-
-### DocsDocSearchResponse().dict
-
-[Show source in docs_doc_search_response.py:30](../../../../../../../julep/api/types/docs_doc_search_response.py#L30)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### DocsDocSearchResponse().json
-
-[Show source in docs_doc_search_response.py:22](../../../../../../../julep/api/types/docs_doc_search_response.py#L22)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/docs_embed_query_request.md b/docs/python-sdk-docs/julep/api/types/docs_embed_query_request.md
deleted file mode 100644
index 2d1f92fe2..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_embed_query_request.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# DocsEmbedQueryRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / DocsEmbedQueryRequest
-
-> Auto-generated documentation for [julep.api.types.docs_embed_query_request](../../../../../../../julep/api/types/docs_embed_query_request.py) module.
-
-- [DocsEmbedQueryRequest](#docsembedqueryrequest)
- - [DocsEmbedQueryRequest](#docsembedqueryrequest-1)
-
-## DocsEmbedQueryRequest
-
-[Show source in docs_embed_query_request.py:11](../../../../../../../julep/api/types/docs_embed_query_request.py#L11)
-
-#### Signature
-
-```python
-class DocsEmbedQueryRequest(pydantic_v1.BaseModel): ...
-```
-
-### DocsEmbedQueryRequest().dict
-
-[Show source in docs_embed_query_request.py:25](../../../../../../../julep/api/types/docs_embed_query_request.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### DocsEmbedQueryRequest().json
-
-[Show source in docs_embed_query_request.py:17](../../../../../../../julep/api/types/docs_embed_query_request.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/docs_embed_query_request_text.md b/docs/python-sdk-docs/julep/api/types/docs_embed_query_request_text.md
deleted file mode 100644
index ac55882ee..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_embed_query_request_text.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Docs Embed Query Request Text
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Docs Embed Query Request Text
-
-> Auto-generated documentation for [julep.api.types.docs_embed_query_request_text](../../../../../../../julep/api/types/docs_embed_query_request_text.py) module.
-- [Docs Embed Query Request Text](#docs-embed-query-request-text)
diff --git a/docs/python-sdk-docs/julep/api/types/docs_embed_query_response.md b/docs/python-sdk-docs/julep/api/types/docs_embed_query_response.md
deleted file mode 100644
index 18ca2fdb9..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_embed_query_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# DocsEmbedQueryResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / DocsEmbedQueryResponse
-
-> Auto-generated documentation for [julep.api.types.docs_embed_query_response](../../../../../../../julep/api/types/docs_embed_query_response.py) module.
-
-- [DocsEmbedQueryResponse](#docsembedqueryresponse)
- - [DocsEmbedQueryResponse](#docsembedqueryresponse-1)
-
-## DocsEmbedQueryResponse
-
-[Show source in docs_embed_query_response.py:10](../../../../../../../julep/api/types/docs_embed_query_response.py#L10)
-
-#### Signature
-
-```python
-class DocsEmbedQueryResponse(pydantic_v1.BaseModel): ...
-```
-
-### DocsEmbedQueryResponse().dict
-
-[Show source in docs_embed_query_response.py:24](../../../../../../../julep/api/types/docs_embed_query_response.py#L24)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### DocsEmbedQueryResponse().json
-
-[Show source in docs_embed_query_response.py:16](../../../../../../../julep/api/types/docs_embed_query_response.py#L16)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/docs_hybrid_doc_search_request.md b/docs/python-sdk-docs/julep/api/types/docs_hybrid_doc_search_request.md
deleted file mode 100644
index 8c3350d45..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_hybrid_doc_search_request.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# DocsHybridDocSearchRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / DocsHybridDocSearchRequest
-
-> Auto-generated documentation for [julep.api.types.docs_hybrid_doc_search_request](../../../../../../../julep/api/types/docs_hybrid_doc_search_request.py) module.
-
-- [DocsHybridDocSearchRequest](#docshybriddocsearchrequest)
- - [DocsHybridDocSearchRequest](#docshybriddocsearchrequest-1)
-
-## DocsHybridDocSearchRequest
-
-[Show source in docs_hybrid_doc_search_request.py:11](../../../../../../../julep/api/types/docs_hybrid_doc_search_request.py#L11)
-
-#### Signature
-
-```python
-class DocsHybridDocSearchRequest(DocsBaseDocSearchRequest): ...
-```
-
-### DocsHybridDocSearchRequest().dict
-
-[Show source in docs_hybrid_doc_search_request.py:40](../../../../../../../julep/api/types/docs_hybrid_doc_search_request.py#L40)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### DocsHybridDocSearchRequest().json
-
-[Show source in docs_hybrid_doc_search_request.py:32](../../../../../../../julep/api/types/docs_hybrid_doc_search_request.py#L32)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/docs_snippet.md b/docs/python-sdk-docs/julep/api/types/docs_snippet.md
deleted file mode 100644
index 772f9cbce..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_snippet.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# DocsSnippet
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / DocsSnippet
-
-> Auto-generated documentation for [julep.api.types.docs_snippet](../../../../../../../julep/api/types/docs_snippet.py) module.
-
-- [DocsSnippet](#docssnippet)
- - [DocsSnippet](#docssnippet-1)
-
-## DocsSnippet
-
-[Show source in docs_snippet.py:10](../../../../../../../julep/api/types/docs_snippet.py#L10)
-
-#### Signature
-
-```python
-class DocsSnippet(pydantic_v1.BaseModel): ...
-```
-
-### DocsSnippet().dict
-
-[Show source in docs_snippet.py:22](../../../../../../../julep/api/types/docs_snippet.py#L22)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### DocsSnippet().json
-
-[Show source in docs_snippet.py:14](../../../../../../../julep/api/types/docs_snippet.py#L14)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/docs_text_only_doc_search_request.md b/docs/python-sdk-docs/julep/api/types/docs_text_only_doc_search_request.md
deleted file mode 100644
index 8cce7a03e..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_text_only_doc_search_request.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# DocsTextOnlyDocSearchRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / DocsTextOnlyDocSearchRequest
-
-> Auto-generated documentation for [julep.api.types.docs_text_only_doc_search_request](../../../../../../../julep/api/types/docs_text_only_doc_search_request.py) module.
-
-- [DocsTextOnlyDocSearchRequest](#docstextonlydocsearchrequest)
- - [DocsTextOnlyDocSearchRequest](#docstextonlydocsearchrequest-1)
-
-## DocsTextOnlyDocSearchRequest
-
-[Show source in docs_text_only_doc_search_request.py:11](../../../../../../../julep/api/types/docs_text_only_doc_search_request.py#L11)
-
-#### Signature
-
-```python
-class DocsTextOnlyDocSearchRequest(DocsBaseDocSearchRequest): ...
-```
-
-### DocsTextOnlyDocSearchRequest().dict
-
-[Show source in docs_text_only_doc_search_request.py:25](../../../../../../../julep/api/types/docs_text_only_doc_search_request.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### DocsTextOnlyDocSearchRequest().json
-
-[Show source in docs_text_only_doc_search_request.py:17](../../../../../../../julep/api/types/docs_text_only_doc_search_request.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/docs_vector_doc_search_request.md b/docs/python-sdk-docs/julep/api/types/docs_vector_doc_search_request.md
deleted file mode 100644
index 3b2574792..000000000
--- a/docs/python-sdk-docs/julep/api/types/docs_vector_doc_search_request.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# DocsVectorDocSearchRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / DocsVectorDocSearchRequest
-
-> Auto-generated documentation for [julep.api.types.docs_vector_doc_search_request](../../../../../../../julep/api/types/docs_vector_doc_search_request.py) module.
-
-- [DocsVectorDocSearchRequest](#docsvectordocsearchrequest)
- - [DocsVectorDocSearchRequest](#docsvectordocsearchrequest-1)
-
-## DocsVectorDocSearchRequest
-
-[Show source in docs_vector_doc_search_request.py:11](../../../../../../../julep/api/types/docs_vector_doc_search_request.py#L11)
-
-#### Signature
-
-```python
-class DocsVectorDocSearchRequest(DocsBaseDocSearchRequest): ...
-```
-
-### DocsVectorDocSearchRequest().dict
-
-[Show source in docs_vector_doc_search_request.py:30](../../../../../../../julep/api/types/docs_vector_doc_search_request.py#L30)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### DocsVectorDocSearchRequest().json
-
-[Show source in docs_vector_doc_search_request.py:22](../../../../../../../julep/api/types/docs_vector_doc_search_request.py#L22)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/entries_base_entry.md b/docs/python-sdk-docs/julep/api/types/entries_base_entry.md
deleted file mode 100644
index 4b14c805b..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_base_entry.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# EntriesBaseEntry
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / EntriesBaseEntry
-
-> Auto-generated documentation for [julep.api.types.entries_base_entry](../../../../../../../julep/api/types/entries_base_entry.py) module.
-
-- [EntriesBaseEntry](#entriesbaseentry)
- - [EntriesBaseEntry](#entriesbaseentry-1)
-
-## EntriesBaseEntry
-
-[Show source in entries_base_entry.py:13](../../../../../../../julep/api/types/entries_base_entry.py#L13)
-
-#### Signature
-
-```python
-class EntriesBaseEntry(pydantic_v1.BaseModel): ...
-```
-
-### EntriesBaseEntry().dict
-
-[Show source in entries_base_entry.py:33](../../../../../../../julep/api/types/entries_base_entry.py#L33)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### EntriesBaseEntry().json
-
-[Show source in entries_base_entry.py:25](../../../../../../../julep/api/types/entries_base_entry.py#L25)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/entries_base_entry_content.md b/docs/python-sdk-docs/julep/api/types/entries_base_entry_content.md
deleted file mode 100644
index a3a9cf120..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_base_entry_content.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Entries Base Entry Content
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Entries Base Entry Content
-
-> Auto-generated documentation for [julep.api.types.entries_base_entry_content](../../../../../../../julep/api/types/entries_base_entry_content.py) module.
-- [Entries Base Entry Content](#entries-base-entry-content)
diff --git a/docs/python-sdk-docs/julep/api/types/entries_base_entry_content_item.md b/docs/python-sdk-docs/julep/api/types/entries_base_entry_content_item.md
deleted file mode 100644
index f2479af4b..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_base_entry_content_item.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Entries Base Entry Content Item
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Entries Base Entry Content Item
-
-> Auto-generated documentation for [julep.api.types.entries_base_entry_content_item](../../../../../../../julep/api/types/entries_base_entry_content_item.py) module.
-- [Entries Base Entry Content Item](#entries-base-entry-content-item)
diff --git a/docs/python-sdk-docs/julep/api/types/entries_base_entry_content_item_item.md b/docs/python-sdk-docs/julep/api/types/entries_base_entry_content_item_item.md
deleted file mode 100644
index 4e0d20f25..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_base_entry_content_item_item.md
+++ /dev/null
@@ -1,71 +0,0 @@
-# Entries Base Entry Content Item Item
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Entries Base Entry Content Item Item
-
-> Auto-generated documentation for [julep.api.types.entries_base_entry_content_item_item](../../../../../../../julep/api/types/entries_base_entry_content_item_item.py) module.
-
-- [Entries Base Entry Content Item Item](#entries-base-entry-content-item-item)
- - [EntriesBaseEntryContentItemItem_ImageUrl](#entriesbaseentrycontentitemitem_imageurl)
- - [EntriesBaseEntryContentItemItem_Text](#entriesbaseentrycontentitemitem_text)
-
-## EntriesBaseEntryContentItemItem_ImageUrl
-
-[Show source in entries_base_entry_content_item_item.py:49](../../../../../../../julep/api/types/entries_base_entry_content_item_item.py#L49)
-
-#### Signature
-
-```python
-class EntriesBaseEntryContentItemItem_ImageUrl(pydantic_v1.BaseModel): ...
-```
-
-### EntriesBaseEntryContentItemItem_ImageUrl().dict
-
-[Show source in entries_base_entry_content_item_item.py:61](../../../../../../../julep/api/types/entries_base_entry_content_item_item.py#L61)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### EntriesBaseEntryContentItemItem_ImageUrl().json
-
-[Show source in entries_base_entry_content_item_item.py:53](../../../../../../../julep/api/types/entries_base_entry_content_item_item.py#L53)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## EntriesBaseEntryContentItemItem_Text
-
-[Show source in entries_base_entry_content_item_item.py:13](../../../../../../../julep/api/types/entries_base_entry_content_item_item.py#L13)
-
-#### Signature
-
-```python
-class EntriesBaseEntryContentItemItem_Text(pydantic_v1.BaseModel): ...
-```
-
-### EntriesBaseEntryContentItemItem_Text().dict
-
-[Show source in entries_base_entry_content_item_item.py:25](../../../../../../../julep/api/types/entries_base_entry_content_item_item.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### EntriesBaseEntryContentItemItem_Text().json
-
-[Show source in entries_base_entry_content_item_item.py:17](../../../../../../../julep/api/types/entries_base_entry_content_item_item.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/entries_base_entry_source.md b/docs/python-sdk-docs/julep/api/types/entries_base_entry_source.md
deleted file mode 100644
index 49ec1c8c6..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_base_entry_source.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Entries Base Entry Source
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Entries Base Entry Source
-
-> Auto-generated documentation for [julep.api.types.entries_base_entry_source](../../../../../../../julep/api/types/entries_base_entry_source.py) module.
-- [Entries Base Entry Source](#entries-base-entry-source)
diff --git a/docs/python-sdk-docs/julep/api/types/entries_chat_ml_image_content_part.md b/docs/python-sdk-docs/julep/api/types/entries_chat_ml_image_content_part.md
deleted file mode 100644
index a635515a2..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_chat_ml_image_content_part.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# EntriesChatMlImageContentPart
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / EntriesChatMlImageContentPart
-
-> Auto-generated documentation for [julep.api.types.entries_chat_ml_image_content_part](../../../../../../../julep/api/types/entries_chat_ml_image_content_part.py) module.
-
-- [EntriesChatMlImageContentPart](#entrieschatmlimagecontentpart)
- - [EntriesChatMlImageContentPart](#entrieschatmlimagecontentpart-1)
-
-## EntriesChatMlImageContentPart
-
-[Show source in entries_chat_ml_image_content_part.py:11](../../../../../../../julep/api/types/entries_chat_ml_image_content_part.py#L11)
-
-#### Signature
-
-```python
-class EntriesChatMlImageContentPart(pydantic_v1.BaseModel): ...
-```
-
-### EntriesChatMlImageContentPart().dict
-
-[Show source in entries_chat_ml_image_content_part.py:25](../../../../../../../julep/api/types/entries_chat_ml_image_content_part.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### EntriesChatMlImageContentPart().json
-
-[Show source in entries_chat_ml_image_content_part.py:17](../../../../../../../julep/api/types/entries_chat_ml_image_content_part.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/entries_chat_ml_role.md b/docs/python-sdk-docs/julep/api/types/entries_chat_ml_role.md
deleted file mode 100644
index 7f92f26f0..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_chat_ml_role.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Entries Chat Ml Role
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Entries Chat Ml Role
-
-> Auto-generated documentation for [julep.api.types.entries_chat_ml_role](../../../../../../../julep/api/types/entries_chat_ml_role.py) module.
-- [Entries Chat Ml Role](#entries-chat-ml-role)
diff --git a/docs/python-sdk-docs/julep/api/types/entries_chat_ml_text_content_part.md b/docs/python-sdk-docs/julep/api/types/entries_chat_ml_text_content_part.md
deleted file mode 100644
index a09d2f597..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_chat_ml_text_content_part.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# EntriesChatMlTextContentPart
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / EntriesChatMlTextContentPart
-
-> Auto-generated documentation for [julep.api.types.entries_chat_ml_text_content_part](../../../../../../../julep/api/types/entries_chat_ml_text_content_part.py) module.
-
-- [EntriesChatMlTextContentPart](#entrieschatmltextcontentpart)
- - [EntriesChatMlTextContentPart](#entrieschatmltextcontentpart-1)
-
-## EntriesChatMlTextContentPart
-
-[Show source in entries_chat_ml_text_content_part.py:10](../../../../../../../julep/api/types/entries_chat_ml_text_content_part.py#L10)
-
-#### Signature
-
-```python
-class EntriesChatMlTextContentPart(pydantic_v1.BaseModel): ...
-```
-
-### EntriesChatMlTextContentPart().dict
-
-[Show source in entries_chat_ml_text_content_part.py:21](../../../../../../../julep/api/types/entries_chat_ml_text_content_part.py#L21)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### EntriesChatMlTextContentPart().json
-
-[Show source in entries_chat_ml_text_content_part.py:13](../../../../../../../julep/api/types/entries_chat_ml_text_content_part.py#L13)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/entries_entry.md b/docs/python-sdk-docs/julep/api/types/entries_entry.md
deleted file mode 100644
index 6aa64b67d..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_entry.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# EntriesEntry
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / EntriesEntry
-
-> Auto-generated documentation for [julep.api.types.entries_entry](../../../../../../../julep/api/types/entries_entry.py) module.
-
-- [EntriesEntry](#entriesentry)
- - [EntriesEntry](#entriesentry-1)
-
-## EntriesEntry
-
-[Show source in entries_entry.py:12](../../../../../../../julep/api/types/entries_entry.py#L12)
-
-#### Signature
-
-```python
-class EntriesEntry(EntriesBaseEntry): ...
-```
-
-### EntriesEntry().dict
-
-[Show source in entries_entry.py:28](../../../../../../../julep/api/types/entries_entry.py#L28)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### EntriesEntry().json
-
-[Show source in entries_entry.py:20](../../../../../../../julep/api/types/entries_entry.py#L20)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/entries_history.md b/docs/python-sdk-docs/julep/api/types/entries_history.md
deleted file mode 100644
index 615f6b666..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_history.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# EntriesHistory
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / EntriesHistory
-
-> Auto-generated documentation for [julep.api.types.entries_history](../../../../../../../julep/api/types/entries_history.py) module.
-
-- [EntriesHistory](#entrieshistory)
- - [EntriesHistory](#entrieshistory-1)
-
-## EntriesHistory
-
-[Show source in entries_history.py:13](../../../../../../../julep/api/types/entries_history.py#L13)
-
-#### Signature
-
-```python
-class EntriesHistory(pydantic_v1.BaseModel): ...
-```
-
-### EntriesHistory().dict
-
-[Show source in entries_history.py:30](../../../../../../../julep/api/types/entries_history.py#L30)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### EntriesHistory().json
-
-[Show source in entries_history.py:22](../../../../../../../julep/api/types/entries_history.py#L22)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/entries_image_detail.md b/docs/python-sdk-docs/julep/api/types/entries_image_detail.md
deleted file mode 100644
index 5e98b5628..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_image_detail.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Entries Image Detail
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Entries Image Detail
-
-> Auto-generated documentation for [julep.api.types.entries_image_detail](../../../../../../../julep/api/types/entries_image_detail.py) module.
-- [Entries Image Detail](#entries-image-detail)
diff --git a/docs/python-sdk-docs/julep/api/types/entries_image_url.md b/docs/python-sdk-docs/julep/api/types/entries_image_url.md
deleted file mode 100644
index 4b6870f88..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_image_url.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# EntriesImageUrl
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / EntriesImageUrl
-
-> Auto-generated documentation for [julep.api.types.entries_image_url](../../../../../../../julep/api/types/entries_image_url.py) module.
-
-- [EntriesImageUrl](#entriesimageurl)
- - [EntriesImageUrl](#entriesimageurl-1)
-
-## EntriesImageUrl
-
-[Show source in entries_image_url.py:11](../../../../../../../julep/api/types/entries_image_url.py#L11)
-
-#### Signature
-
-```python
-class EntriesImageUrl(pydantic_v1.BaseModel): ...
-```
-
-### EntriesImageUrl().dict
-
-[Show source in entries_image_url.py:30](../../../../../../../julep/api/types/entries_image_url.py#L30)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### EntriesImageUrl().json
-
-[Show source in entries_image_url.py:22](../../../../../../../julep/api/types/entries_image_url.py#L22)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/entries_input_chat_ml_message.md b/docs/python-sdk-docs/julep/api/types/entries_input_chat_ml_message.md
deleted file mode 100644
index 7beba9d20..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_input_chat_ml_message.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# EntriesInputChatMlMessage
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / EntriesInputChatMlMessage
-
-> Auto-generated documentation for [julep.api.types.entries_input_chat_ml_message](../../../../../../../julep/api/types/entries_input_chat_ml_message.py) module.
-
-- [EntriesInputChatMlMessage](#entriesinputchatmlmessage)
- - [EntriesInputChatMlMessage](#entriesinputchatmlmessage-1)
-
-## EntriesInputChatMlMessage
-
-[Show source in entries_input_chat_ml_message.py:12](../../../../../../../julep/api/types/entries_input_chat_ml_message.py#L12)
-
-#### Signature
-
-```python
-class EntriesInputChatMlMessage(pydantic_v1.BaseModel): ...
-```
-
-### EntriesInputChatMlMessage().dict
-
-[Show source in entries_input_chat_ml_message.py:41](../../../../../../../julep/api/types/entries_input_chat_ml_message.py#L41)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### EntriesInputChatMlMessage().json
-
-[Show source in entries_input_chat_ml_message.py:33](../../../../../../../julep/api/types/entries_input_chat_ml_message.py#L33)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/entries_input_chat_ml_message_content.md b/docs/python-sdk-docs/julep/api/types/entries_input_chat_ml_message_content.md
deleted file mode 100644
index e4a4d9b27..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_input_chat_ml_message_content.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Entries Input Chat Ml Message Content
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Entries Input Chat Ml Message Content
-
-> Auto-generated documentation for [julep.api.types.entries_input_chat_ml_message_content](../../../../../../../julep/api/types/entries_input_chat_ml_message_content.py) module.
-- [Entries Input Chat Ml Message Content](#entries-input-chat-ml-message-content)
diff --git a/docs/python-sdk-docs/julep/api/types/entries_input_chat_ml_message_content_item.md b/docs/python-sdk-docs/julep/api/types/entries_input_chat_ml_message_content_item.md
deleted file mode 100644
index 2f25e9173..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_input_chat_ml_message_content_item.md
+++ /dev/null
@@ -1,71 +0,0 @@
-# Entries Input Chat Ml Message Content Item
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Entries Input Chat Ml Message Content Item
-
-> Auto-generated documentation for [julep.api.types.entries_input_chat_ml_message_content_item](../../../../../../../julep/api/types/entries_input_chat_ml_message_content_item.py) module.
-
-- [Entries Input Chat Ml Message Content Item](#entries-input-chat-ml-message-content-item)
- - [EntriesInputChatMlMessageContentItem_ImageUrl](#entriesinputchatmlmessagecontentitem_imageurl)
- - [EntriesInputChatMlMessageContentItem_Text](#entriesinputchatmlmessagecontentitem_text)
-
-## EntriesInputChatMlMessageContentItem_ImageUrl
-
-[Show source in entries_input_chat_ml_message_content_item.py:49](../../../../../../../julep/api/types/entries_input_chat_ml_message_content_item.py#L49)
-
-#### Signature
-
-```python
-class EntriesInputChatMlMessageContentItem_ImageUrl(pydantic_v1.BaseModel): ...
-```
-
-### EntriesInputChatMlMessageContentItem_ImageUrl().dict
-
-[Show source in entries_input_chat_ml_message_content_item.py:61](../../../../../../../julep/api/types/entries_input_chat_ml_message_content_item.py#L61)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### EntriesInputChatMlMessageContentItem_ImageUrl().json
-
-[Show source in entries_input_chat_ml_message_content_item.py:53](../../../../../../../julep/api/types/entries_input_chat_ml_message_content_item.py#L53)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## EntriesInputChatMlMessageContentItem_Text
-
-[Show source in entries_input_chat_ml_message_content_item.py:13](../../../../../../../julep/api/types/entries_input_chat_ml_message_content_item.py#L13)
-
-#### Signature
-
-```python
-class EntriesInputChatMlMessageContentItem_Text(pydantic_v1.BaseModel): ...
-```
-
-### EntriesInputChatMlMessageContentItem_Text().dict
-
-[Show source in entries_input_chat_ml_message_content_item.py:25](../../../../../../../julep/api/types/entries_input_chat_ml_message_content_item.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### EntriesInputChatMlMessageContentItem_Text().json
-
-[Show source in entries_input_chat_ml_message_content_item.py:17](../../../../../../../julep/api/types/entries_input_chat_ml_message_content_item.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/entries_relation.md b/docs/python-sdk-docs/julep/api/types/entries_relation.md
deleted file mode 100644
index 9694b3b08..000000000
--- a/docs/python-sdk-docs/julep/api/types/entries_relation.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# EntriesRelation
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / EntriesRelation
-
-> Auto-generated documentation for [julep.api.types.entries_relation](../../../../../../../julep/api/types/entries_relation.py) module.
-
-- [EntriesRelation](#entriesrelation)
- - [EntriesRelation](#entriesrelation-1)
-
-## EntriesRelation
-
-[Show source in entries_relation.py:11](../../../../../../../julep/api/types/entries_relation.py#L11)
-
-#### Signature
-
-```python
-class EntriesRelation(pydantic_v1.BaseModel): ...
-```
-
-### EntriesRelation().dict
-
-[Show source in entries_relation.py:24](../../../../../../../julep/api/types/entries_relation.py#L24)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### EntriesRelation().json
-
-[Show source in entries_relation.py:16](../../../../../../../julep/api/types/entries_relation.py#L16)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/execution_transitions_route_list_request_direction.md b/docs/python-sdk-docs/julep/api/types/execution_transitions_route_list_request_direction.md
deleted file mode 100644
index 24fd3b5ca..000000000
--- a/docs/python-sdk-docs/julep/api/types/execution_transitions_route_list_request_direction.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Execution Transitions Route List Request Direction
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Execution Transitions Route List Request Direction
-
-> Auto-generated documentation for [julep.api.types.execution_transitions_route_list_request_direction](../../../../../../../julep/api/types/execution_transitions_route_list_request_direction.py) module.
-- [Execution Transitions Route List Request Direction](#execution-transitions-route-list-request-direction)
diff --git a/docs/python-sdk-docs/julep/api/types/execution_transitions_route_list_request_sort_by.md b/docs/python-sdk-docs/julep/api/types/execution_transitions_route_list_request_sort_by.md
deleted file mode 100644
index 5c393c4bd..000000000
--- a/docs/python-sdk-docs/julep/api/types/execution_transitions_route_list_request_sort_by.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Execution Transitions Route List Request Sort By
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Execution Transitions Route List Request Sort By
-
-> Auto-generated documentation for [julep.api.types.execution_transitions_route_list_request_sort_by](../../../../../../../julep/api/types/execution_transitions_route_list_request_sort_by.py) module.
-- [Execution Transitions Route List Request Sort By](#execution-transitions-route-list-request-sort-by)
diff --git a/docs/python-sdk-docs/julep/api/types/execution_transitions_route_list_response.md b/docs/python-sdk-docs/julep/api/types/execution_transitions_route_list_response.md
deleted file mode 100644
index d515b6efc..000000000
--- a/docs/python-sdk-docs/julep/api/types/execution_transitions_route_list_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ExecutionTransitionsRouteListResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ExecutionTransitionsRouteListResponse
-
-> Auto-generated documentation for [julep.api.types.execution_transitions_route_list_response](../../../../../../../julep/api/types/execution_transitions_route_list_response.py) module.
-
-- [ExecutionTransitionsRouteListResponse](#executiontransitionsroutelistresponse)
- - [ExecutionTransitionsRouteListResponse](#executiontransitionsroutelistresponse-1)
-
-## ExecutionTransitionsRouteListResponse
-
-[Show source in execution_transitions_route_list_response.py:13](../../../../../../../julep/api/types/execution_transitions_route_list_response.py#L13)
-
-#### Signature
-
-```python
-class ExecutionTransitionsRouteListResponse(pydantic_v1.BaseModel): ...
-```
-
-### ExecutionTransitionsRouteListResponse().dict
-
-[Show source in execution_transitions_route_list_response.py:24](../../../../../../../julep/api/types/execution_transitions_route_list_response.py#L24)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ExecutionTransitionsRouteListResponse().json
-
-[Show source in execution_transitions_route_list_response.py:16](../../../../../../../julep/api/types/execution_transitions_route_list_response.py#L16)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/execution_transitions_route_list_response_results_item.md b/docs/python-sdk-docs/julep/api/types/execution_transitions_route_list_response_results_item.md
deleted file mode 100644
index ca9cbc082..000000000
--- a/docs/python-sdk-docs/julep/api/types/execution_transitions_route_list_response_results_item.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ExecutionTransitionsRouteListResponseResultsItem
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ExecutionTransitionsRouteListResponseResultsItem
-
-> Auto-generated documentation for [julep.api.types.execution_transitions_route_list_response_results_item](../../../../../../../julep/api/types/execution_transitions_route_list_response_results_item.py) module.
-
-- [ExecutionTransitionsRouteListResponseResultsItem](#executiontransitionsroutelistresponseresultsitem)
- - [ExecutionTransitionsRouteListResponseResultsItem](#executiontransitionsroutelistresponseresultsitem-1)
-
-## ExecutionTransitionsRouteListResponseResultsItem
-
-[Show source in execution_transitions_route_list_response_results_item.py:11](../../../../../../../julep/api/types/execution_transitions_route_list_response_results_item.py#L11)
-
-#### Signature
-
-```python
-class ExecutionTransitionsRouteListResponseResultsItem(pydantic_v1.BaseModel): ...
-```
-
-### ExecutionTransitionsRouteListResponseResultsItem().dict
-
-[Show source in execution_transitions_route_list_response_results_item.py:22](../../../../../../../julep/api/types/execution_transitions_route_list_response_results_item.py#L22)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ExecutionTransitionsRouteListResponseResultsItem().json
-
-[Show source in execution_transitions_route_list_response_results_item.py:14](../../../../../../../julep/api/types/execution_transitions_route_list_response_results_item.py#L14)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/executions_execution.md b/docs/python-sdk-docs/julep/api/types/executions_execution.md
deleted file mode 100644
index e79809fe6..000000000
--- a/docs/python-sdk-docs/julep/api/types/executions_execution.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ExecutionsExecution
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ExecutionsExecution
-
-> Auto-generated documentation for [julep.api.types.executions_execution](../../../../../../../julep/api/types/executions_execution.py) module.
-
-- [ExecutionsExecution](#executionsexecution)
- - [ExecutionsExecution](#executionsexecution-1)
-
-## ExecutionsExecution
-
-[Show source in executions_execution.py:12](../../../../../../../julep/api/types/executions_execution.py#L12)
-
-#### Signature
-
-```python
-class ExecutionsExecution(pydantic_v1.BaseModel): ...
-```
-
-### ExecutionsExecution().dict
-
-[Show source in executions_execution.py:49](../../../../../../../julep/api/types/executions_execution.py#L49)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ExecutionsExecution().json
-
-[Show source in executions_execution.py:41](../../../../../../../julep/api/types/executions_execution.py#L41)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/executions_execution_status.md b/docs/python-sdk-docs/julep/api/types/executions_execution_status.md
deleted file mode 100644
index 419ddcb50..000000000
--- a/docs/python-sdk-docs/julep/api/types/executions_execution_status.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Executions Execution Status
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Executions Execution Status
-
-> Auto-generated documentation for [julep.api.types.executions_execution_status](../../../../../../../julep/api/types/executions_execution_status.py) module.
-- [Executions Execution Status](#executions-execution-status)
diff --git a/docs/python-sdk-docs/julep/api/types/executions_resume_execution_request.md b/docs/python-sdk-docs/julep/api/types/executions_resume_execution_request.md
deleted file mode 100644
index b5d6cf960..000000000
--- a/docs/python-sdk-docs/julep/api/types/executions_resume_execution_request.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ExecutionsResumeExecutionRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ExecutionsResumeExecutionRequest
-
-> Auto-generated documentation for [julep.api.types.executions_resume_execution_request](../../../../../../../julep/api/types/executions_resume_execution_request.py) module.
-
-- [ExecutionsResumeExecutionRequest](#executionsresumeexecutionrequest)
- - [ExecutionsResumeExecutionRequest](#executionsresumeexecutionrequest-1)
-
-## ExecutionsResumeExecutionRequest
-
-[Show source in executions_resume_execution_request.py:10](../../../../../../../julep/api/types/executions_resume_execution_request.py#L10)
-
-#### Signature
-
-```python
-class ExecutionsResumeExecutionRequest(pydantic_v1.BaseModel): ...
-```
-
-### ExecutionsResumeExecutionRequest().dict
-
-[Show source in executions_resume_execution_request.py:26](../../../../../../../julep/api/types/executions_resume_execution_request.py#L26)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ExecutionsResumeExecutionRequest().json
-
-[Show source in executions_resume_execution_request.py:18](../../../../../../../julep/api/types/executions_resume_execution_request.py#L18)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/executions_stop_execution_request.md b/docs/python-sdk-docs/julep/api/types/executions_stop_execution_request.md
deleted file mode 100644
index 6142b3737..000000000
--- a/docs/python-sdk-docs/julep/api/types/executions_stop_execution_request.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ExecutionsStopExecutionRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ExecutionsStopExecutionRequest
-
-> Auto-generated documentation for [julep.api.types.executions_stop_execution_request](../../../../../../../julep/api/types/executions_stop_execution_request.py) module.
-
-- [ExecutionsStopExecutionRequest](#executionsstopexecutionrequest)
- - [ExecutionsStopExecutionRequest](#executionsstopexecutionrequest-1)
-
-## ExecutionsStopExecutionRequest
-
-[Show source in executions_stop_execution_request.py:10](../../../../../../../julep/api/types/executions_stop_execution_request.py#L10)
-
-#### Signature
-
-```python
-class ExecutionsStopExecutionRequest(pydantic_v1.BaseModel): ...
-```
-
-### ExecutionsStopExecutionRequest().dict
-
-[Show source in executions_stop_execution_request.py:24](../../../../../../../julep/api/types/executions_stop_execution_request.py#L24)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ExecutionsStopExecutionRequest().json
-
-[Show source in executions_stop_execution_request.py:16](../../../../../../../julep/api/types/executions_stop_execution_request.py#L16)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/executions_transition.md b/docs/python-sdk-docs/julep/api/types/executions_transition.md
deleted file mode 100644
index 51de83c30..000000000
--- a/docs/python-sdk-docs/julep/api/types/executions_transition.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ExecutionsTransition
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ExecutionsTransition
-
-> Auto-generated documentation for [julep.api.types.executions_transition](../../../../../../../julep/api/types/executions_transition.py) module.
-
-- [ExecutionsTransition](#executionstransition)
- - [ExecutionsTransition](#executionstransition-1)
-
-## ExecutionsTransition
-
-[Show source in executions_transition.py:13](../../../../../../../julep/api/types/executions_transition.py#L13)
-
-#### Signature
-
-```python
-class ExecutionsTransition(pydantic_v1.BaseModel): ...
-```
-
-### ExecutionsTransition().dict
-
-[Show source in executions_transition.py:39](../../../../../../../julep/api/types/executions_transition.py#L39)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ExecutionsTransition().json
-
-[Show source in executions_transition.py:31](../../../../../../../julep/api/types/executions_transition.py#L31)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/executions_transition_target.md b/docs/python-sdk-docs/julep/api/types/executions_transition_target.md
deleted file mode 100644
index 28a2b6282..000000000
--- a/docs/python-sdk-docs/julep/api/types/executions_transition_target.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ExecutionsTransitionTarget
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ExecutionsTransitionTarget
-
-> Auto-generated documentation for [julep.api.types.executions_transition_target](../../../../../../../julep/api/types/executions_transition_target.py) module.
-
-- [ExecutionsTransitionTarget](#executionstransitiontarget)
- - [ExecutionsTransitionTarget](#executionstransitiontarget-1)
-
-## ExecutionsTransitionTarget
-
-[Show source in executions_transition_target.py:11](../../../../../../../julep/api/types/executions_transition_target.py#L11)
-
-#### Signature
-
-```python
-class ExecutionsTransitionTarget(pydantic_v1.BaseModel): ...
-```
-
-### ExecutionsTransitionTarget().dict
-
-[Show source in executions_transition_target.py:23](../../../../../../../julep/api/types/executions_transition_target.py#L23)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ExecutionsTransitionTarget().json
-
-[Show source in executions_transition_target.py:15](../../../../../../../julep/api/types/executions_transition_target.py#L15)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/executions_transition_type.md b/docs/python-sdk-docs/julep/api/types/executions_transition_type.md
deleted file mode 100644
index 0d1435e49..000000000
--- a/docs/python-sdk-docs/julep/api/types/executions_transition_type.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Executions Transition Type
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Executions Transition Type
-
-> Auto-generated documentation for [julep.api.types.executions_transition_type](../../../../../../../julep/api/types/executions_transition_type.py) module.
-- [Executions Transition Type](#executions-transition-type)
diff --git a/docs/python-sdk-docs/julep/api/types/executions_update_execution_request.md b/docs/python-sdk-docs/julep/api/types/executions_update_execution_request.md
deleted file mode 100644
index da3204548..000000000
--- a/docs/python-sdk-docs/julep/api/types/executions_update_execution_request.md
+++ /dev/null
@@ -1,71 +0,0 @@
-# Executions Update Execution Request
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Executions Update Execution Request
-
-> Auto-generated documentation for [julep.api.types.executions_update_execution_request](../../../../../../../julep/api/types/executions_update_execution_request.py) module.
-
-- [Executions Update Execution Request](#executions-update-execution-request)
- - [ExecutionsUpdateExecutionRequest_Cancelled](#executionsupdateexecutionrequest_cancelled)
- - [ExecutionsUpdateExecutionRequest_Running](#executionsupdateexecutionrequest_running)
-
-## ExecutionsUpdateExecutionRequest_Cancelled
-
-[Show source in executions_update_execution_request.py:12](../../../../../../../julep/api/types/executions_update_execution_request.py#L12)
-
-#### Signature
-
-```python
-class ExecutionsUpdateExecutionRequest_Cancelled(pydantic_v1.BaseModel): ...
-```
-
-### ExecutionsUpdateExecutionRequest_Cancelled().dict
-
-[Show source in executions_update_execution_request.py:24](../../../../../../../julep/api/types/executions_update_execution_request.py#L24)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ExecutionsUpdateExecutionRequest_Cancelled().json
-
-[Show source in executions_update_execution_request.py:16](../../../../../../../julep/api/types/executions_update_execution_request.py#L16)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## ExecutionsUpdateExecutionRequest_Running
-
-[Show source in executions_update_execution_request.py:48](../../../../../../../julep/api/types/executions_update_execution_request.py#L48)
-
-#### Signature
-
-```python
-class ExecutionsUpdateExecutionRequest_Running(pydantic_v1.BaseModel): ...
-```
-
-### ExecutionsUpdateExecutionRequest_Running().dict
-
-[Show source in executions_update_execution_request.py:60](../../../../../../../julep/api/types/executions_update_execution_request.py#L60)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ExecutionsUpdateExecutionRequest_Running().json
-
-[Show source in executions_update_execution_request.py:52](../../../../../../../julep/api/types/executions_update_execution_request.py#L52)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/index.md b/docs/python-sdk-docs/julep/api/types/index.md
deleted file mode 100644
index 1e1c8a509..000000000
--- a/docs/python-sdk-docs/julep/api/types/index.md
+++ /dev/null
@@ -1,186 +0,0 @@
-# Types
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / Types
-
-> Auto-generated documentation for [julep.api.types](../../../../../../../julep/api/types/__init__.py) module.
-
-- [Types](#types)
- - [Modules](#modules)
-
-## Modules
-
-- [Agent Docs Route List Request Direction](./agent_docs_route_list_request_direction.md)
-- [Agent Docs Route List Request Sort By](./agent_docs_route_list_request_sort_by.md)
-- [AgentDocsRouteListResponse](./agent_docs_route_list_response.md)
-- [Agent Tools Route List Request Direction](./agent_tools_route_list_request_direction.md)
-- [Agent Tools Route List Request Sort By](./agent_tools_route_list_request_sort_by.md)
-- [AgentToolsRouteListResponse](./agent_tools_route_list_response.md)
-- [AgentsAgent](./agents_agent.md)
-- [Agents Agent Instructions](./agents_agent_instructions.md)
-- [AgentsCreateAgentRequest](./agents_create_agent_request.md)
-- [Agents Create Agent Request Instructions](./agents_create_agent_request_instructions.md)
-- [AgentsCreateOrUpdateAgentRequest](./agents_create_or_update_agent_request.md)
-- [Agents Docs Search Route Search Request Body](./agents_docs_search_route_search_request_body.md)
-- [Agents Patch Agent Request Instructions](./agents_patch_agent_request_instructions.md)
-- [Agents Route List Request Direction](./agents_route_list_request_direction.md)
-- [Agents Route List Request Sort By](./agents_route_list_request_sort_by.md)
-- [AgentsRouteListResponse](./agents_route_list_response.md)
-- [AgentsUpdateAgentRequest](./agents_update_agent_request.md)
-- [Agents Update Agent Request Instructions](./agents_update_agent_request_instructions.md)
-- [ChatBaseChatOutput](./chat_base_chat_output.md)
-- [ChatBaseChatResponse](./chat_base_chat_response.md)
-- [ChatBaseTokenLogProb](./chat_base_token_log_prob.md)
-- [ChatChatInputData](./chat_chat_input_data.md)
-- [Chat Chat Input Data Tool Choice](./chat_chat_input_data_tool_choice.md)
-- [ChatChatOutputChunk](./chat_chat_output_chunk.md)
-- [ChatChatSettings](./chat_chat_settings.md)
-- [ChatChunkChatResponse](./chat_chunk_chat_response.md)
-- [ChatCompetionUsage](./chat_competion_usage.md)
-- [ChatCompletionResponseFormat](./chat_completion_response_format.md)
-- [Chat Completion Response Format Type](./chat_completion_response_format_type.md)
-- [ChatDefaultChatSettings](./chat_default_chat_settings.md)
-- [Chat Finish Reason](./chat_finish_reason.md)
-- [ChatLogProbResponse](./chat_log_prob_response.md)
-- [ChatMessageChatResponse](./chat_message_chat_response.md)
-- [Chat Message Chat Response Choices Item](./chat_message_chat_response_choices_item.md)
-- [ChatMultipleChatOutput](./chat_multiple_chat_output.md)
-- [ChatOpenAiSettings](./chat_open_ai_settings.md)
-- [Chat Route Generate Response](./chat_route_generate_response.md)
-- [ChatSingleChatOutput](./chat_single_chat_output.md)
-- [ChatTokenLogProb](./chat_token_log_prob.md)
-- [Common Identifier Safe Unicode](./common_identifier_safe_unicode.md)
-- [Common Limit](./common_limit.md)
-- [Common Logit Bias](./common_logit_bias.md)
-- [Common Offset](./common_offset.md)
-- [Common Py Expression](./common_py_expression.md)
-- [CommonResourceCreatedResponse](./common_resource_created_response.md)
-- [CommonResourceDeletedResponse](./common_resource_deleted_response.md)
-- [CommonResourceUpdatedResponse](./common_resource_updated_response.md)
-- [Common Tool Ref](./common_tool_ref.md)
-- [Common Uuid](./common_uuid.md)
-- [Common Valid Python Identifier](./common_valid_python_identifier.md)
-- [DocsBaseDocSearchRequest](./docs_base_doc_search_request.md)
-- [DocsCreateDocRequest](./docs_create_doc_request.md)
-- [Docs Create Doc Request Content](./docs_create_doc_request_content.md)
-- [DocsDoc](./docs_doc.md)
-- [Docs Doc Content](./docs_doc_content.md)
-- [DocsDocOwner](./docs_doc_owner.md)
-- [Docs Doc Owner Role](./docs_doc_owner_role.md)
-- [DocsDocReference](./docs_doc_reference.md)
-- [DocsDocSearchResponse](./docs_doc_search_response.md)
-- [DocsEmbedQueryRequest](./docs_embed_query_request.md)
-- [Docs Embed Query Request Text](./docs_embed_query_request_text.md)
-- [DocsEmbedQueryResponse](./docs_embed_query_response.md)
-- [DocsHybridDocSearchRequest](./docs_hybrid_doc_search_request.md)
-- [DocsSnippet](./docs_snippet.md)
-- [DocsTextOnlyDocSearchRequest](./docs_text_only_doc_search_request.md)
-- [DocsVectorDocSearchRequest](./docs_vector_doc_search_request.md)
-- [EntriesBaseEntry](./entries_base_entry.md)
-- [Entries Base Entry Content](./entries_base_entry_content.md)
-- [Entries Base Entry Content Item](./entries_base_entry_content_item.md)
-- [Entries Base Entry Content Item Item](./entries_base_entry_content_item_item.md)
-- [Entries Base Entry Source](./entries_base_entry_source.md)
-- [EntriesChatMlImageContentPart](./entries_chat_ml_image_content_part.md)
-- [Entries Chat Ml Role](./entries_chat_ml_role.md)
-- [EntriesChatMlTextContentPart](./entries_chat_ml_text_content_part.md)
-- [EntriesEntry](./entries_entry.md)
-- [EntriesHistory](./entries_history.md)
-- [Entries Image Detail](./entries_image_detail.md)
-- [EntriesImageUrl](./entries_image_url.md)
-- [EntriesInputChatMlMessage](./entries_input_chat_ml_message.md)
-- [Entries Input Chat Ml Message Content](./entries_input_chat_ml_message_content.md)
-- [Entries Input Chat Ml Message Content Item](./entries_input_chat_ml_message_content_item.md)
-- [EntriesRelation](./entries_relation.md)
-- [Execution Transitions Route List Request Direction](./execution_transitions_route_list_request_direction.md)
-- [Execution Transitions Route List Request Sort By](./execution_transitions_route_list_request_sort_by.md)
-- [ExecutionTransitionsRouteListResponse](./execution_transitions_route_list_response.md)
-- [ExecutionTransitionsRouteListResponseResultsItem](./execution_transitions_route_list_response_results_item.md)
-- [ExecutionsExecution](./executions_execution.md)
-- [Executions Execution Status](./executions_execution_status.md)
-- [ExecutionsResumeExecutionRequest](./executions_resume_execution_request.md)
-- [ExecutionsStopExecutionRequest](./executions_stop_execution_request.md)
-- [ExecutionsTransition](./executions_transition.md)
-- [ExecutionsTransitionTarget](./executions_transition_target.md)
-- [Executions Transition Type](./executions_transition_type.md)
-- [Executions Update Execution Request](./executions_update_execution_request.md)
-- [Jobs Job State](./jobs_job_state.md)
-- [JobsJobStatus](./jobs_job_status.md)
-- [Sessions Context Overflow Type](./sessions_context_overflow_type.md)
-- [SessionsCreateOrUpdateSessionRequest](./sessions_create_or_update_session_request.md)
-- [SessionsCreateSessionRequest](./sessions_create_session_request.md)
-- [SessionsMultiAgentMultiUserSession](./sessions_multi_agent_multi_user_session.md)
-- [SessionsMultiAgentNoUserSession](./sessions_multi_agent_no_user_session.md)
-- [SessionsMultiAgentSingleUserSession](./sessions_multi_agent_single_user_session.md)
-- [Sessions Route List Request Direction](./sessions_route_list_request_direction.md)
-- [Sessions Route List Request Sort By](./sessions_route_list_request_sort_by.md)
-- [SessionsRouteListResponse](./sessions_route_list_response.md)
-- [Sessions Session](./sessions_session.md)
-- [SessionsSingleAgentMultiUserSession](./sessions_single_agent_multi_user_session.md)
-- [SessionsSingleAgentNoUserSession](./sessions_single_agent_no_user_session.md)
-- [SessionsSingleAgentSingleUserSession](./sessions_single_agent_single_user_session.md)
-- [Task Executions Route List Request Direction](./task_executions_route_list_request_direction.md)
-- [Task Executions Route List Request Sort By](./task_executions_route_list_request_sort_by.md)
-- [TaskExecutionsRouteListResponse](./task_executions_route_list_response.md)
-- [Tasks Base Workflow Step](./tasks_base_workflow_step.md)
-- [TasksCaseThen](./tasks_case_then.md)
-- [Tasks Case Then Then](./tasks_case_then_then.md)
-- [TasksCreateTaskRequest](./tasks_create_task_request.md)
-- [Tasks Create Task Request Main Item](./tasks_create_task_request_main_item.md)
-- [TasksEmbedStep](./tasks_embed_step.md)
-- [TasksErrorWorkflowStep](./tasks_error_workflow_step.md)
-- [TasksEvaluateStep](./tasks_evaluate_step.md)
-- [TasksForeachDo](./tasks_foreach_do.md)
-- [Tasks Foreach Do Do](./tasks_foreach_do_do.md)
-- [TasksForeachStep](./tasks_foreach_step.md)
-- [TasksGetStep](./tasks_get_step.md)
-- [TasksIfElseWorkflowStep](./tasks_if_else_workflow_step.md)
-- [Tasks If Else Workflow Step Else](./tasks_if_else_workflow_step_else.md)
-- [Tasks If Else Workflow Step Then](./tasks_if_else_workflow_step_then.md)
-- [TasksLogStep](./tasks_log_step.md)
-- [TasksMapOver](./tasks_map_over.md)
-- [TasksMapReduceStep](./tasks_map_reduce_step.md)
-- [TasksParallelStep](./tasks_parallel_step.md)
-- [Tasks Parallel Step Parallel Item](./tasks_parallel_step_parallel_item.md)
-- [Tasks Patch Task Request Main Item](./tasks_patch_task_request_main_item.md)
-- [TasksPromptStep](./tasks_prompt_step.md)
-- [Tasks Prompt Step Prompt](./tasks_prompt_step_prompt.md)
-- [TasksReturnStep](./tasks_return_step.md)
-- [Tasks Route List Request Direction](./tasks_route_list_request_direction.md)
-- [Tasks Route List Request Sort By](./tasks_route_list_request_sort_by.md)
-- [TasksRouteListResponse](./tasks_route_list_response.md)
-- [TasksSearchStep](./tasks_search_step.md)
-- [Tasks Search Step Search](./tasks_search_step_search.md)
-- [TasksSetKey](./tasks_set_key.md)
-- [TasksSetStep](./tasks_set_step.md)
-- [Tasks Set Step Set](./tasks_set_step_set.md)
-- [TasksSleepFor](./tasks_sleep_for.md)
-- [TasksSleepStep](./tasks_sleep_step.md)
-- [TasksSwitchStep](./tasks_switch_step.md)
-- [TasksTask](./tasks_task.md)
-- [Tasks Task Main Item](./tasks_task_main_item.md)
-- [TasksTaskTool](./tasks_task_tool.md)
-- [TasksToolCallStep](./tasks_tool_call_step.md)
-- [Tasks Update Task Request Main Item](./tasks_update_task_request_main_item.md)
-- [TasksWaitForInputStep](./tasks_wait_for_input_step.md)
-- [TasksYieldStep](./tasks_yield_step.md)
-- [ToolsChosenFunctionCall](./tools_chosen_function_call.md)
-- [Tools Chosen Tool Call](./tools_chosen_tool_call.md)
-- [ToolsCreateToolRequest](./tools_create_tool_request.md)
-- [ToolsFunctionCallOption](./tools_function_call_option.md)
-- [ToolsFunctionDef](./tools_function_def.md)
-- [ToolsFunctionTool](./tools_function_tool.md)
-- [ToolsNamedFunctionChoice](./tools_named_function_choice.md)
-- [Tools Named Tool Choice](./tools_named_tool_choice.md)
-- [Tools Tool](./tools_tool.md)
-- [ToolsToolResponse](./tools_tool_response.md)
-- [Tools Tool Type](./tools_tool_type.md)
-- [User Docs Route List Request Direction](./user_docs_route_list_request_direction.md)
-- [User Docs Route List Request Sort By](./user_docs_route_list_request_sort_by.md)
-- [UserDocsRouteListResponse](./user_docs_route_list_response.md)
-- [User Docs Search Route Search Request Body](./user_docs_search_route_search_request_body.md)
-- [UsersCreateOrUpdateUserRequest](./users_create_or_update_user_request.md)
-- [UsersCreateUserRequest](./users_create_user_request.md)
-- [Users Route List Request Direction](./users_route_list_request_direction.md)
-- [Users Route List Request Sort By](./users_route_list_request_sort_by.md)
-- [UsersRouteListResponse](./users_route_list_response.md)
-- [UsersUser](./users_user.md)
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/jobs_job_state.md b/docs/python-sdk-docs/julep/api/types/jobs_job_state.md
deleted file mode 100644
index b5e138867..000000000
--- a/docs/python-sdk-docs/julep/api/types/jobs_job_state.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Jobs Job State
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Jobs Job State
-
-> Auto-generated documentation for [julep.api.types.jobs_job_state](../../../../../../../julep/api/types/jobs_job_state.py) module.
-- [Jobs Job State](#jobs-job-state)
diff --git a/docs/python-sdk-docs/julep/api/types/jobs_job_status.md b/docs/python-sdk-docs/julep/api/types/jobs_job_status.md
deleted file mode 100644
index 2055a3811..000000000
--- a/docs/python-sdk-docs/julep/api/types/jobs_job_status.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# JobsJobStatus
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / JobsJobStatus
-
-> Auto-generated documentation for [julep.api.types.jobs_job_status](../../../../../../../julep/api/types/jobs_job_status.py) module.
-
-- [JobsJobStatus](#jobsjobstatus)
- - [JobsJobStatus](#jobsjobstatus-1)
-
-## JobsJobStatus
-
-[Show source in jobs_job_status.py:13](../../../../../../../julep/api/types/jobs_job_status.py#L13)
-
-#### Signature
-
-```python
-class JobsJobStatus(pydantic_v1.BaseModel): ...
-```
-
-### JobsJobStatus().dict
-
-[Show source in jobs_job_status.py:58](../../../../../../../julep/api/types/jobs_job_status.py#L58)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### JobsJobStatus().json
-
-[Show source in jobs_job_status.py:50](../../../../../../../julep/api/types/jobs_job_status.py#L50)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/sessions_context_overflow_type.md b/docs/python-sdk-docs/julep/api/types/sessions_context_overflow_type.md
deleted file mode 100644
index 4009e89ec..000000000
--- a/docs/python-sdk-docs/julep/api/types/sessions_context_overflow_type.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Sessions Context Overflow Type
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Sessions Context Overflow Type
-
-> Auto-generated documentation for [julep.api.types.sessions_context_overflow_type](../../../../../../../julep/api/types/sessions_context_overflow_type.py) module.
-- [Sessions Context Overflow Type](#sessions-context-overflow-type)
diff --git a/docs/python-sdk-docs/julep/api/types/sessions_create_or_update_session_request.md b/docs/python-sdk-docs/julep/api/types/sessions_create_or_update_session_request.md
deleted file mode 100644
index d94fcfd40..000000000
--- a/docs/python-sdk-docs/julep/api/types/sessions_create_or_update_session_request.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# SessionsCreateOrUpdateSessionRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / SessionsCreateOrUpdateSessionRequest
-
-> Auto-generated documentation for [julep.api.types.sessions_create_or_update_session_request](../../../../../../../julep/api/types/sessions_create_or_update_session_request.py) module.
-
-- [SessionsCreateOrUpdateSessionRequest](#sessionscreateorupdatesessionrequest)
- - [SessionsCreateOrUpdateSessionRequest](#sessionscreateorupdatesessionrequest-1)
-
-## SessionsCreateOrUpdateSessionRequest
-
-[Show source in sessions_create_or_update_session_request.py:12](../../../../../../../julep/api/types/sessions_create_or_update_session_request.py#L12)
-
-#### Signature
-
-```python
-class SessionsCreateOrUpdateSessionRequest(pydantic_v1.BaseModel): ...
-```
-
-### SessionsCreateOrUpdateSessionRequest().dict
-
-[Show source in sessions_create_or_update_session_request.py:57](../../../../../../../julep/api/types/sessions_create_or_update_session_request.py#L57)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### SessionsCreateOrUpdateSessionRequest().json
-
-[Show source in sessions_create_or_update_session_request.py:49](../../../../../../../julep/api/types/sessions_create_or_update_session_request.py#L49)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/sessions_create_session_request.md b/docs/python-sdk-docs/julep/api/types/sessions_create_session_request.md
deleted file mode 100644
index d9b07631d..000000000
--- a/docs/python-sdk-docs/julep/api/types/sessions_create_session_request.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# SessionsCreateSessionRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / SessionsCreateSessionRequest
-
-> Auto-generated documentation for [julep.api.types.sessions_create_session_request](../../../../../../../julep/api/types/sessions_create_session_request.py) module.
-
-- [SessionsCreateSessionRequest](#sessionscreatesessionrequest)
- - [SessionsCreateSessionRequest](#sessionscreatesessionrequest-1)
-
-## SessionsCreateSessionRequest
-
-[Show source in sessions_create_session_request.py:12](../../../../../../../julep/api/types/sessions_create_session_request.py#L12)
-
-Payload for creating a session
-
-#### Signature
-
-```python
-class SessionsCreateSessionRequest(pydantic_v1.BaseModel): ...
-```
-
-### SessionsCreateSessionRequest().dict
-
-[Show source in sessions_create_session_request.py:61](../../../../../../../julep/api/types/sessions_create_session_request.py#L61)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### SessionsCreateSessionRequest().json
-
-[Show source in sessions_create_session_request.py:53](../../../../../../../julep/api/types/sessions_create_session_request.py#L53)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/sessions_multi_agent_multi_user_session.md b/docs/python-sdk-docs/julep/api/types/sessions_multi_agent_multi_user_session.md
deleted file mode 100644
index f7c407cbd..000000000
--- a/docs/python-sdk-docs/julep/api/types/sessions_multi_agent_multi_user_session.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# SessionsMultiAgentMultiUserSession
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / SessionsMultiAgentMultiUserSession
-
-> Auto-generated documentation for [julep.api.types.sessions_multi_agent_multi_user_session](../../../../../../../julep/api/types/sessions_multi_agent_multi_user_session.py) module.
-
-- [SessionsMultiAgentMultiUserSession](#sessionsmultiagentmultiusersession)
- - [SessionsMultiAgentMultiUserSession](#sessionsmultiagentmultiusersession-1)
-
-## SessionsMultiAgentMultiUserSession
-
-[Show source in sessions_multi_agent_multi_user_session.py:11](../../../../../../../julep/api/types/sessions_multi_agent_multi_user_session.py#L11)
-
-#### Signature
-
-```python
-class SessionsMultiAgentMultiUserSession(pydantic_v1.BaseModel): ...
-```
-
-### SessionsMultiAgentMultiUserSession().dict
-
-[Show source in sessions_multi_agent_multi_user_session.py:23](../../../../../../../julep/api/types/sessions_multi_agent_multi_user_session.py#L23)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### SessionsMultiAgentMultiUserSession().json
-
-[Show source in sessions_multi_agent_multi_user_session.py:15](../../../../../../../julep/api/types/sessions_multi_agent_multi_user_session.py#L15)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/sessions_multi_agent_no_user_session.md b/docs/python-sdk-docs/julep/api/types/sessions_multi_agent_no_user_session.md
deleted file mode 100644
index a6ad4554f..000000000
--- a/docs/python-sdk-docs/julep/api/types/sessions_multi_agent_no_user_session.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# SessionsMultiAgentNoUserSession
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / SessionsMultiAgentNoUserSession
-
-> Auto-generated documentation for [julep.api.types.sessions_multi_agent_no_user_session](../../../../../../../julep/api/types/sessions_multi_agent_no_user_session.py) module.
-
-- [SessionsMultiAgentNoUserSession](#sessionsmultiagentnousersession)
- - [SessionsMultiAgentNoUserSession](#sessionsmultiagentnousersession-1)
-
-## SessionsMultiAgentNoUserSession
-
-[Show source in sessions_multi_agent_no_user_session.py:11](../../../../../../../julep/api/types/sessions_multi_agent_no_user_session.py#L11)
-
-#### Signature
-
-```python
-class SessionsMultiAgentNoUserSession(pydantic_v1.BaseModel): ...
-```
-
-### SessionsMultiAgentNoUserSession().dict
-
-[Show source in sessions_multi_agent_no_user_session.py:22](../../../../../../../julep/api/types/sessions_multi_agent_no_user_session.py#L22)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### SessionsMultiAgentNoUserSession().json
-
-[Show source in sessions_multi_agent_no_user_session.py:14](../../../../../../../julep/api/types/sessions_multi_agent_no_user_session.py#L14)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/sessions_multi_agent_single_user_session.md b/docs/python-sdk-docs/julep/api/types/sessions_multi_agent_single_user_session.md
deleted file mode 100644
index 77f842cfd..000000000
--- a/docs/python-sdk-docs/julep/api/types/sessions_multi_agent_single_user_session.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# SessionsMultiAgentSingleUserSession
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / SessionsMultiAgentSingleUserSession
-
-> Auto-generated documentation for [julep.api.types.sessions_multi_agent_single_user_session](../../../../../../../julep/api/types/sessions_multi_agent_single_user_session.py) module.
-
-- [SessionsMultiAgentSingleUserSession](#sessionsmultiagentsingleusersession)
- - [SessionsMultiAgentSingleUserSession](#sessionsmultiagentsingleusersession-1)
-
-## SessionsMultiAgentSingleUserSession
-
-[Show source in sessions_multi_agent_single_user_session.py:11](../../../../../../../julep/api/types/sessions_multi_agent_single_user_session.py#L11)
-
-#### Signature
-
-```python
-class SessionsMultiAgentSingleUserSession(pydantic_v1.BaseModel): ...
-```
-
-### SessionsMultiAgentSingleUserSession().dict
-
-[Show source in sessions_multi_agent_single_user_session.py:23](../../../../../../../julep/api/types/sessions_multi_agent_single_user_session.py#L23)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### SessionsMultiAgentSingleUserSession().json
-
-[Show source in sessions_multi_agent_single_user_session.py:15](../../../../../../../julep/api/types/sessions_multi_agent_single_user_session.py#L15)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/sessions_route_list_request_direction.md b/docs/python-sdk-docs/julep/api/types/sessions_route_list_request_direction.md
deleted file mode 100644
index d23a5296e..000000000
--- a/docs/python-sdk-docs/julep/api/types/sessions_route_list_request_direction.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Sessions Route List Request Direction
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Sessions Route List Request Direction
-
-> Auto-generated documentation for [julep.api.types.sessions_route_list_request_direction](../../../../../../../julep/api/types/sessions_route_list_request_direction.py) module.
-- [Sessions Route List Request Direction](#sessions-route-list-request-direction)
diff --git a/docs/python-sdk-docs/julep/api/types/sessions_route_list_request_sort_by.md b/docs/python-sdk-docs/julep/api/types/sessions_route_list_request_sort_by.md
deleted file mode 100644
index 0b38dd9b4..000000000
--- a/docs/python-sdk-docs/julep/api/types/sessions_route_list_request_sort_by.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Sessions Route List Request Sort By
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Sessions Route List Request Sort By
-
-> Auto-generated documentation for [julep.api.types.sessions_route_list_request_sort_by](../../../../../../../julep/api/types/sessions_route_list_request_sort_by.py) module.
-- [Sessions Route List Request Sort By](#sessions-route-list-request-sort-by)
diff --git a/docs/python-sdk-docs/julep/api/types/sessions_route_list_response.md b/docs/python-sdk-docs/julep/api/types/sessions_route_list_response.md
deleted file mode 100644
index 5d5e37ed3..000000000
--- a/docs/python-sdk-docs/julep/api/types/sessions_route_list_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# SessionsRouteListResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / SessionsRouteListResponse
-
-> Auto-generated documentation for [julep.api.types.sessions_route_list_response](../../../../../../../julep/api/types/sessions_route_list_response.py) module.
-
-- [SessionsRouteListResponse](#sessionsroutelistresponse)
- - [SessionsRouteListResponse](#sessionsroutelistresponse-1)
-
-## SessionsRouteListResponse
-
-[Show source in sessions_route_list_response.py:11](../../../../../../../julep/api/types/sessions_route_list_response.py#L11)
-
-#### Signature
-
-```python
-class SessionsRouteListResponse(pydantic_v1.BaseModel): ...
-```
-
-### SessionsRouteListResponse().dict
-
-[Show source in sessions_route_list_response.py:22](../../../../../../../julep/api/types/sessions_route_list_response.py#L22)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### SessionsRouteListResponse().json
-
-[Show source in sessions_route_list_response.py:14](../../../../../../../julep/api/types/sessions_route_list_response.py#L14)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/sessions_session.md b/docs/python-sdk-docs/julep/api/types/sessions_session.md
deleted file mode 100644
index 6bba8275e..000000000
--- a/docs/python-sdk-docs/julep/api/types/sessions_session.md
+++ /dev/null
@@ -1,260 +0,0 @@
-# Sessions Session
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Sessions Session
-
-> Auto-generated documentation for [julep.api.types.sessions_session](../../../../../../../julep/api/types/sessions_session.py) module.
-
-- [Sessions Session](#sessions-session)
- - [Base](#base)
- - [SessionsSession_MultiAgentMultiUser](#sessionssession_multiagentmultiuser)
- - [SessionsSession_MultiAgentNoUser](#sessionssession_multiagentnouser)
- - [SessionsSession_MultiAgentSingleUser](#sessionssession_multiagentsingleuser)
- - [SessionsSession_SingleAgentMultiUser](#sessionssession_singleagentmultiuser)
- - [SessionsSession_SingleAgentNoUser](#sessionssession_singleagentnouser)
- - [SessionsSession_SingleAgentSingleUser](#sessionssession_singleagentsingleuser)
-
-## Base
-
-[Show source in sessions_session.py:14](../../../../../../../julep/api/types/sessions_session.py#L14)
-
-#### Signature
-
-```python
-class Base(pydantic_v1.BaseModel): ...
-```
-
-### Base().dict
-
-[Show source in sessions_session.py:62](../../../../../../../julep/api/types/sessions_session.py#L62)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### Base().json
-
-[Show source in sessions_session.py:54](../../../../../../../julep/api/types/sessions_session.py#L54)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## SessionsSession_MultiAgentMultiUser
-
-[Show source in sessions_session.py:279](../../../../../../../julep/api/types/sessions_session.py#L279)
-
-#### Signature
-
-```python
-class SessionsSession_MultiAgentMultiUser(Base): ...
-```
-
-#### See also
-
-- [Base](#base)
-
-### SessionsSession_MultiAgentMultiUser().dict
-
-[Show source in sessions_session.py:292](../../../../../../../julep/api/types/sessions_session.py#L292)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### SessionsSession_MultiAgentMultiUser().json
-
-[Show source in sessions_session.py:284](../../../../../../../julep/api/types/sessions_session.py#L284)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## SessionsSession_MultiAgentNoUser
-
-[Show source in sessions_session.py:202](../../../../../../../julep/api/types/sessions_session.py#L202)
-
-#### Signature
-
-```python
-class SessionsSession_MultiAgentNoUser(Base): ...
-```
-
-#### See also
-
-- [Base](#base)
-
-### SessionsSession_MultiAgentNoUser().dict
-
-[Show source in sessions_session.py:214](../../../../../../../julep/api/types/sessions_session.py#L214)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### SessionsSession_MultiAgentNoUser().json
-
-[Show source in sessions_session.py:206](../../../../../../../julep/api/types/sessions_session.py#L206)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## SessionsSession_MultiAgentSingleUser
-
-[Show source in sessions_session.py:240](../../../../../../../julep/api/types/sessions_session.py#L240)
-
-#### Signature
-
-```python
-class SessionsSession_MultiAgentSingleUser(Base): ...
-```
-
-#### See also
-
-- [Base](#base)
-
-### SessionsSession_MultiAgentSingleUser().dict
-
-[Show source in sessions_session.py:253](../../../../../../../julep/api/types/sessions_session.py#L253)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### SessionsSession_MultiAgentSingleUser().json
-
-[Show source in sessions_session.py:245](../../../../../../../julep/api/types/sessions_session.py#L245)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## SessionsSession_SingleAgentMultiUser
-
-[Show source in sessions_session.py:163](../../../../../../../julep/api/types/sessions_session.py#L163)
-
-#### Signature
-
-```python
-class SessionsSession_SingleAgentMultiUser(Base): ...
-```
-
-#### See also
-
-- [Base](#base)
-
-### SessionsSession_SingleAgentMultiUser().dict
-
-[Show source in sessions_session.py:176](../../../../../../../julep/api/types/sessions_session.py#L176)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### SessionsSession_SingleAgentMultiUser().json
-
-[Show source in sessions_session.py:168](../../../../../../../julep/api/types/sessions_session.py#L168)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## SessionsSession_SingleAgentNoUser
-
-[Show source in sessions_session.py:86](../../../../../../../julep/api/types/sessions_session.py#L86)
-
-#### Signature
-
-```python
-class SessionsSession_SingleAgentNoUser(Base): ...
-```
-
-#### See also
-
-- [Base](#base)
-
-### SessionsSession_SingleAgentNoUser().dict
-
-[Show source in sessions_session.py:98](../../../../../../../julep/api/types/sessions_session.py#L98)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### SessionsSession_SingleAgentNoUser().json
-
-[Show source in sessions_session.py:90](../../../../../../../julep/api/types/sessions_session.py#L90)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## SessionsSession_SingleAgentSingleUser
-
-[Show source in sessions_session.py:124](../../../../../../../julep/api/types/sessions_session.py#L124)
-
-#### Signature
-
-```python
-class SessionsSession_SingleAgentSingleUser(Base): ...
-```
-
-#### See also
-
-- [Base](#base)
-
-### SessionsSession_SingleAgentSingleUser().dict
-
-[Show source in sessions_session.py:137](../../../../../../../julep/api/types/sessions_session.py#L137)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### SessionsSession_SingleAgentSingleUser().json
-
-[Show source in sessions_session.py:129](../../../../../../../julep/api/types/sessions_session.py#L129)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/sessions_single_agent_multi_user_session.md b/docs/python-sdk-docs/julep/api/types/sessions_single_agent_multi_user_session.md
deleted file mode 100644
index caccf2166..000000000
--- a/docs/python-sdk-docs/julep/api/types/sessions_single_agent_multi_user_session.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# SessionsSingleAgentMultiUserSession
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / SessionsSingleAgentMultiUserSession
-
-> Auto-generated documentation for [julep.api.types.sessions_single_agent_multi_user_session](../../../../../../../julep/api/types/sessions_single_agent_multi_user_session.py) module.
-
-- [SessionsSingleAgentMultiUserSession](#sessionssingleagentmultiusersession)
- - [SessionsSingleAgentMultiUserSession](#sessionssingleagentmultiusersession-1)
-
-## SessionsSingleAgentMultiUserSession
-
-[Show source in sessions_single_agent_multi_user_session.py:11](../../../../../../../julep/api/types/sessions_single_agent_multi_user_session.py#L11)
-
-#### Signature
-
-```python
-class SessionsSingleAgentMultiUserSession(pydantic_v1.BaseModel): ...
-```
-
-### SessionsSingleAgentMultiUserSession().dict
-
-[Show source in sessions_single_agent_multi_user_session.py:23](../../../../../../../julep/api/types/sessions_single_agent_multi_user_session.py#L23)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### SessionsSingleAgentMultiUserSession().json
-
-[Show source in sessions_single_agent_multi_user_session.py:15](../../../../../../../julep/api/types/sessions_single_agent_multi_user_session.py#L15)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/sessions_single_agent_no_user_session.md b/docs/python-sdk-docs/julep/api/types/sessions_single_agent_no_user_session.md
deleted file mode 100644
index 0f45b6d06..000000000
--- a/docs/python-sdk-docs/julep/api/types/sessions_single_agent_no_user_session.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# SessionsSingleAgentNoUserSession
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / SessionsSingleAgentNoUserSession
-
-> Auto-generated documentation for [julep.api.types.sessions_single_agent_no_user_session](../../../../../../../julep/api/types/sessions_single_agent_no_user_session.py) module.
-
-- [SessionsSingleAgentNoUserSession](#sessionssingleagentnousersession)
- - [SessionsSingleAgentNoUserSession](#sessionssingleagentnousersession-1)
-
-## SessionsSingleAgentNoUserSession
-
-[Show source in sessions_single_agent_no_user_session.py:11](../../../../../../../julep/api/types/sessions_single_agent_no_user_session.py#L11)
-
-#### Signature
-
-```python
-class SessionsSingleAgentNoUserSession(pydantic_v1.BaseModel): ...
-```
-
-### SessionsSingleAgentNoUserSession().dict
-
-[Show source in sessions_single_agent_no_user_session.py:22](../../../../../../../julep/api/types/sessions_single_agent_no_user_session.py#L22)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### SessionsSingleAgentNoUserSession().json
-
-[Show source in sessions_single_agent_no_user_session.py:14](../../../../../../../julep/api/types/sessions_single_agent_no_user_session.py#L14)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/sessions_single_agent_single_user_session.md b/docs/python-sdk-docs/julep/api/types/sessions_single_agent_single_user_session.md
deleted file mode 100644
index be8bab1e7..000000000
--- a/docs/python-sdk-docs/julep/api/types/sessions_single_agent_single_user_session.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# SessionsSingleAgentSingleUserSession
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / SessionsSingleAgentSingleUserSession
-
-> Auto-generated documentation for [julep.api.types.sessions_single_agent_single_user_session](../../../../../../../julep/api/types/sessions_single_agent_single_user_session.py) module.
-
-- [SessionsSingleAgentSingleUserSession](#sessionssingleagentsingleusersession)
- - [SessionsSingleAgentSingleUserSession](#sessionssingleagentsingleusersession-1)
-
-## SessionsSingleAgentSingleUserSession
-
-[Show source in sessions_single_agent_single_user_session.py:11](../../../../../../../julep/api/types/sessions_single_agent_single_user_session.py#L11)
-
-#### Signature
-
-```python
-class SessionsSingleAgentSingleUserSession(pydantic_v1.BaseModel): ...
-```
-
-### SessionsSingleAgentSingleUserSession().dict
-
-[Show source in sessions_single_agent_single_user_session.py:23](../../../../../../../julep/api/types/sessions_single_agent_single_user_session.py#L23)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### SessionsSingleAgentSingleUserSession().json
-
-[Show source in sessions_single_agent_single_user_session.py:15](../../../../../../../julep/api/types/sessions_single_agent_single_user_session.py#L15)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/task_executions_route_list_request_direction.md b/docs/python-sdk-docs/julep/api/types/task_executions_route_list_request_direction.md
deleted file mode 100644
index eca88dcfc..000000000
--- a/docs/python-sdk-docs/julep/api/types/task_executions_route_list_request_direction.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Task Executions Route List Request Direction
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Task Executions Route List Request Direction
-
-> Auto-generated documentation for [julep.api.types.task_executions_route_list_request_direction](../../../../../../../julep/api/types/task_executions_route_list_request_direction.py) module.
-- [Task Executions Route List Request Direction](#task-executions-route-list-request-direction)
diff --git a/docs/python-sdk-docs/julep/api/types/task_executions_route_list_request_sort_by.md b/docs/python-sdk-docs/julep/api/types/task_executions_route_list_request_sort_by.md
deleted file mode 100644
index 19c4abc9a..000000000
--- a/docs/python-sdk-docs/julep/api/types/task_executions_route_list_request_sort_by.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Task Executions Route List Request Sort By
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Task Executions Route List Request Sort By
-
-> Auto-generated documentation for [julep.api.types.task_executions_route_list_request_sort_by](../../../../../../../julep/api/types/task_executions_route_list_request_sort_by.py) module.
-- [Task Executions Route List Request Sort By](#task-executions-route-list-request-sort-by)
diff --git a/docs/python-sdk-docs/julep/api/types/task_executions_route_list_response.md b/docs/python-sdk-docs/julep/api/types/task_executions_route_list_response.md
deleted file mode 100644
index 3ed80a5bd..000000000
--- a/docs/python-sdk-docs/julep/api/types/task_executions_route_list_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TaskExecutionsRouteListResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TaskExecutionsRouteListResponse
-
-> Auto-generated documentation for [julep.api.types.task_executions_route_list_response](../../../../../../../julep/api/types/task_executions_route_list_response.py) module.
-
-- [TaskExecutionsRouteListResponse](#taskexecutionsroutelistresponse)
- - [TaskExecutionsRouteListResponse](#taskexecutionsroutelistresponse-1)
-
-## TaskExecutionsRouteListResponse
-
-[Show source in task_executions_route_list_response.py:11](../../../../../../../julep/api/types/task_executions_route_list_response.py#L11)
-
-#### Signature
-
-```python
-class TaskExecutionsRouteListResponse(pydantic_v1.BaseModel): ...
-```
-
-### TaskExecutionsRouteListResponse().dict
-
-[Show source in task_executions_route_list_response.py:22](../../../../../../../julep/api/types/task_executions_route_list_response.py#L22)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TaskExecutionsRouteListResponse().json
-
-[Show source in task_executions_route_list_response.py:14](../../../../../../../julep/api/types/task_executions_route_list_response.py#L14)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_base_workflow_step.md b/docs/python-sdk-docs/julep/api/types/tasks_base_workflow_step.md
deleted file mode 100644
index 21731b101..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_base_workflow_step.md
+++ /dev/null
@@ -1,566 +0,0 @@
-# Tasks Base Workflow Step
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tasks Base Workflow Step
-
-> Auto-generated documentation for [julep.api.types.tasks_base_workflow_step](../../../../../../../julep/api/types/tasks_base_workflow_step.py) module.
-
-- [Tasks Base Workflow Step](#tasks-base-workflow-step)
- - [TasksBaseWorkflowStep_Embed](#tasksbaseworkflowstep_embed)
- - [TasksBaseWorkflowStep_Error](#tasksbaseworkflowstep_error)
- - [TasksBaseWorkflowStep_Foreach](#tasksbaseworkflowstep_foreach)
- - [TasksBaseWorkflowStep_Get](#tasksbaseworkflowstep_get)
- - [TasksBaseWorkflowStep_IfElse](#tasksbaseworkflowstep_ifelse)
- - [TasksBaseWorkflowStep_Log](#tasksbaseworkflowstep_log)
- - [TasksBaseWorkflowStep_MapReduce](#tasksbaseworkflowstep_mapreduce)
- - [TasksBaseWorkflowStep_Parallel](#tasksbaseworkflowstep_parallel)
- - [TasksBaseWorkflowStep_Prompt](#tasksbaseworkflowstep_prompt)
- - [TasksBaseWorkflowStep_Return](#tasksbaseworkflowstep_return)
- - [TasksBaseWorkflowStep_Search](#tasksbaseworkflowstep_search)
- - [TasksBaseWorkflowStep_Set](#tasksbaseworkflowstep_set)
- - [TasksBaseWorkflowStep_Sleep](#tasksbaseworkflowstep_sleep)
- - [TasksBaseWorkflowStep_Switch](#tasksbaseworkflowstep_switch)
- - [TasksBaseWorkflowStep_ToolCall](#tasksbaseworkflowstep_toolcall)
- - [TasksBaseWorkflowStep_WaitForInput](#tasksbaseworkflowstep_waitforinput)
- - [TasksBaseWorkflowStep_Yield](#tasksbaseworkflowstep_yield)
-
-## TasksBaseWorkflowStep_Embed
-
-[Show source in tasks_base_workflow_step.py:373](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L373)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_Embed(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_Embed().dict
-
-[Show source in tasks_base_workflow_step.py:385](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L385)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_Embed().json
-
-[Show source in tasks_base_workflow_step.py:377](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L377)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_Error
-
-[Show source in tasks_base_workflow_step.py:145](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L145)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_Error(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_Error().dict
-
-[Show source in tasks_base_workflow_step.py:157](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L157)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_Error().json
-
-[Show source in tasks_base_workflow_step.py:149](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L149)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_Foreach
-
-[Show source in tasks_base_workflow_step.py:569](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L569)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_Foreach(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_Foreach().dict
-
-[Show source in tasks_base_workflow_step.py:583](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L583)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_Foreach().json
-
-[Show source in tasks_base_workflow_step.py:575](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L575)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_Get
-
-[Show source in tasks_base_workflow_step.py:259](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L259)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_Get(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_Get().dict
-
-[Show source in tasks_base_workflow_step.py:271](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L271)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_Get().json
-
-[Show source in tasks_base_workflow_step.py:263](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L263)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_IfElse
-
-[Show source in tasks_base_workflow_step.py:489](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L489)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_IfElse(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_IfElse().dict
-
-[Show source in tasks_base_workflow_step.py:505](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L505)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_IfElse().json
-
-[Show source in tasks_base_workflow_step.py:497](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L497)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_Log
-
-[Show source in tasks_base_workflow_step.py:335](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L335)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_Log(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_Log().dict
-
-[Show source in tasks_base_workflow_step.py:347](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L347)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_Log().json
-
-[Show source in tasks_base_workflow_step.py:339](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L339)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_MapReduce
-
-[Show source in tasks_base_workflow_step.py:649](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L649)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_MapReduce(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_MapReduce().dict
-
-[Show source in tasks_base_workflow_step.py:664](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L664)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_MapReduce().json
-
-[Show source in tasks_base_workflow_step.py:656](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L656)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_Parallel
-
-[Show source in tasks_base_workflow_step.py:609](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L609)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_Parallel(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_Parallel().dict
-
-[Show source in tasks_base_workflow_step.py:623](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L623)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_Parallel().json
-
-[Show source in tasks_base_workflow_step.py:615](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L615)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_Prompt
-
-[Show source in tasks_base_workflow_step.py:106](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L106)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_Prompt(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_Prompt().dict
-
-[Show source in tasks_base_workflow_step.py:119](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L119)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_Prompt().json
-
-[Show source in tasks_base_workflow_step.py:111](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L111)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_Return
-
-[Show source in tasks_base_workflow_step.py:221](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L221)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_Return(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_Return().dict
-
-[Show source in tasks_base_workflow_step.py:233](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L233)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_Return().json
-
-[Show source in tasks_base_workflow_step.py:225](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L225)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_Search
-
-[Show source in tasks_base_workflow_step.py:411](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L411)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_Search(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_Search().dict
-
-[Show source in tasks_base_workflow_step.py:423](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L423)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_Search().json
-
-[Show source in tasks_base_workflow_step.py:415](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L415)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_Set
-
-[Show source in tasks_base_workflow_step.py:297](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L297)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_Set(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_Set().dict
-
-[Show source in tasks_base_workflow_step.py:309](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L309)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_Set().json
-
-[Show source in tasks_base_workflow_step.py:301](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L301)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_Sleep
-
-[Show source in tasks_base_workflow_step.py:183](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L183)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_Sleep(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_Sleep().dict
-
-[Show source in tasks_base_workflow_step.py:195](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L195)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_Sleep().json
-
-[Show source in tasks_base_workflow_step.py:187](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L187)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_Switch
-
-[Show source in tasks_base_workflow_step.py:531](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L531)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_Switch(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_Switch().dict
-
-[Show source in tasks_base_workflow_step.py:543](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L543)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_Switch().json
-
-[Show source in tasks_base_workflow_step.py:535](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L535)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_ToolCall
-
-[Show source in tasks_base_workflow_step.py:26](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L26)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_ToolCall(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_ToolCall().dict
-
-[Show source in tasks_base_workflow_step.py:41](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L41)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_ToolCall().json
-
-[Show source in tasks_base_workflow_step.py:33](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L33)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_WaitForInput
-
-[Show source in tasks_base_workflow_step.py:449](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L449)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_WaitForInput(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_WaitForInput().dict
-
-[Show source in tasks_base_workflow_step.py:463](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L463)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_WaitForInput().json
-
-[Show source in tasks_base_workflow_step.py:455](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L455)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksBaseWorkflowStep_Yield
-
-[Show source in tasks_base_workflow_step.py:67](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L67)
-
-#### Signature
-
-```python
-class TasksBaseWorkflowStep_Yield(pydantic_v1.BaseModel): ...
-```
-
-### TasksBaseWorkflowStep_Yield().dict
-
-[Show source in tasks_base_workflow_step.py:80](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L80)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksBaseWorkflowStep_Yield().json
-
-[Show source in tasks_base_workflow_step.py:72](../../../../../../../julep/api/types/tasks_base_workflow_step.py#L72)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_case_then.md b/docs/python-sdk-docs/julep/api/types/tasks_case_then.md
deleted file mode 100644
index 388ee34d0..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_case_then.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksCaseThen
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksCaseThen
-
-> Auto-generated documentation for [julep.api.types.tasks_case_then](../../../../../../../julep/api/types/tasks_case_then.py) module.
-
-- [TasksCaseThen](#taskscasethen)
- - [TasksCaseThen](#taskscasethen-1)
-
-## TasksCaseThen
-
-[Show source in tasks_case_then.py:12](../../../../../../../julep/api/types/tasks_case_then.py#L12)
-
-#### Signature
-
-```python
-class TasksCaseThen(pydantic_v1.BaseModel): ...
-```
-
-### TasksCaseThen().dict
-
-[Show source in tasks_case_then.py:31](../../../../../../../julep/api/types/tasks_case_then.py#L31)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCaseThen().json
-
-[Show source in tasks_case_then.py:23](../../../../../../../julep/api/types/tasks_case_then.py#L23)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_case_then_then.md b/docs/python-sdk-docs/julep/api/types/tasks_case_then_then.md
deleted file mode 100644
index dc1a9eb70..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_case_then_then.md
+++ /dev/null
@@ -1,460 +0,0 @@
-# Tasks Case Then Then
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tasks Case Then Then
-
-> Auto-generated documentation for [julep.api.types.tasks_case_then_then](../../../../../../../julep/api/types/tasks_case_then_then.py) module.
-
-- [Tasks Case Then Then](#tasks-case-then-then)
- - [TasksCaseThenThen_Embed](#taskscasethenthen_embed)
- - [TasksCaseThenThen_Error](#taskscasethenthen_error)
- - [TasksCaseThenThen_Evaluate](#taskscasethenthen_evaluate)
- - [TasksCaseThenThen_Get](#taskscasethenthen_get)
- - [TasksCaseThenThen_Log](#taskscasethenthen_log)
- - [TasksCaseThenThen_Prompt](#taskscasethenthen_prompt)
- - [TasksCaseThenThen_Return](#taskscasethenthen_return)
- - [TasksCaseThenThen_Search](#taskscasethenthen_search)
- - [TasksCaseThenThen_Set](#taskscasethenthen_set)
- - [TasksCaseThenThen_Sleep](#taskscasethenthen_sleep)
- - [TasksCaseThenThen_ToolCall](#taskscasethenthen_toolcall)
- - [TasksCaseThenThen_WaitForInput](#taskscasethenthen_waitforinput)
- - [TasksCaseThenThen_Yield](#taskscasethenthen_yield)
-
-## TasksCaseThenThen_Embed
-
-[Show source in tasks_case_then_then.py:447](../../../../../../../julep/api/types/tasks_case_then_then.py#L447)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksCaseThenThen_Embed(pydantic_v1.BaseModel): ...
-```
-
-### TasksCaseThenThen_Embed().dict
-
-[Show source in tasks_case_then_then.py:463](../../../../../../../julep/api/types/tasks_case_then_then.py#L463)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCaseThenThen_Embed().json
-
-[Show source in tasks_case_then_then.py:455](../../../../../../../julep/api/types/tasks_case_then_then.py#L455)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCaseThenThen_Error
-
-[Show source in tasks_case_then_then.py:195](../../../../../../../julep/api/types/tasks_case_then_then.py#L195)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksCaseThenThen_Error(pydantic_v1.BaseModel): ...
-```
-
-### TasksCaseThenThen_Error().dict
-
-[Show source in tasks_case_then_then.py:211](../../../../../../../julep/api/types/tasks_case_then_then.py#L211)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCaseThenThen_Error().json
-
-[Show source in tasks_case_then_then.py:203](../../../../../../../julep/api/types/tasks_case_then_then.py#L203)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCaseThenThen_Evaluate
-
-[Show source in tasks_case_then_then.py:20](../../../../../../../julep/api/types/tasks_case_then_then.py#L20)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksCaseThenThen_Evaluate(pydantic_v1.BaseModel): ...
-```
-
-### TasksCaseThenThen_Evaluate().dict
-
-[Show source in tasks_case_then_then.py:38](../../../../../../../julep/api/types/tasks_case_then_then.py#L38)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCaseThenThen_Evaluate().json
-
-[Show source in tasks_case_then_then.py:30](../../../../../../../julep/api/types/tasks_case_then_then.py#L30)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCaseThenThen_Get
-
-[Show source in tasks_case_then_then.py:321](../../../../../../../julep/api/types/tasks_case_then_then.py#L321)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksCaseThenThen_Get(pydantic_v1.BaseModel): ...
-```
-
-### TasksCaseThenThen_Get().dict
-
-[Show source in tasks_case_then_then.py:337](../../../../../../../julep/api/types/tasks_case_then_then.py#L337)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCaseThenThen_Get().json
-
-[Show source in tasks_case_then_then.py:329](../../../../../../../julep/api/types/tasks_case_then_then.py#L329)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCaseThenThen_Log
-
-[Show source in tasks_case_then_then.py:405](../../../../../../../julep/api/types/tasks_case_then_then.py#L405)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksCaseThenThen_Log(pydantic_v1.BaseModel): ...
-```
-
-### TasksCaseThenThen_Log().dict
-
-[Show source in tasks_case_then_then.py:421](../../../../../../../julep/api/types/tasks_case_then_then.py#L421)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCaseThenThen_Log().json
-
-[Show source in tasks_case_then_then.py:413](../../../../../../../julep/api/types/tasks_case_then_then.py#L413)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCaseThenThen_Prompt
-
-[Show source in tasks_case_then_then.py:152](../../../../../../../julep/api/types/tasks_case_then_then.py#L152)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksCaseThenThen_Prompt(pydantic_v1.BaseModel): ...
-```
-
-### TasksCaseThenThen_Prompt().dict
-
-[Show source in tasks_case_then_then.py:169](../../../../../../../julep/api/types/tasks_case_then_then.py#L169)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCaseThenThen_Prompt().json
-
-[Show source in tasks_case_then_then.py:161](../../../../../../../julep/api/types/tasks_case_then_then.py#L161)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCaseThenThen_Return
-
-[Show source in tasks_case_then_then.py:279](../../../../../../../julep/api/types/tasks_case_then_then.py#L279)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksCaseThenThen_Return(pydantic_v1.BaseModel): ...
-```
-
-### TasksCaseThenThen_Return().dict
-
-[Show source in tasks_case_then_then.py:295](../../../../../../../julep/api/types/tasks_case_then_then.py#L295)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCaseThenThen_Return().json
-
-[Show source in tasks_case_then_then.py:287](../../../../../../../julep/api/types/tasks_case_then_then.py#L287)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCaseThenThen_Search
-
-[Show source in tasks_case_then_then.py:489](../../../../../../../julep/api/types/tasks_case_then_then.py#L489)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksCaseThenThen_Search(pydantic_v1.BaseModel): ...
-```
-
-### TasksCaseThenThen_Search().dict
-
-[Show source in tasks_case_then_then.py:505](../../../../../../../julep/api/types/tasks_case_then_then.py#L505)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCaseThenThen_Search().json
-
-[Show source in tasks_case_then_then.py:497](../../../../../../../julep/api/types/tasks_case_then_then.py#L497)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCaseThenThen_Set
-
-[Show source in tasks_case_then_then.py:363](../../../../../../../julep/api/types/tasks_case_then_then.py#L363)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksCaseThenThen_Set(pydantic_v1.BaseModel): ...
-```
-
-### TasksCaseThenThen_Set().dict
-
-[Show source in tasks_case_then_then.py:379](../../../../../../../julep/api/types/tasks_case_then_then.py#L379)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCaseThenThen_Set().json
-
-[Show source in tasks_case_then_then.py:371](../../../../../../../julep/api/types/tasks_case_then_then.py#L371)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCaseThenThen_Sleep
-
-[Show source in tasks_case_then_then.py:237](../../../../../../../julep/api/types/tasks_case_then_then.py#L237)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksCaseThenThen_Sleep(pydantic_v1.BaseModel): ...
-```
-
-### TasksCaseThenThen_Sleep().dict
-
-[Show source in tasks_case_then_then.py:253](../../../../../../../julep/api/types/tasks_case_then_then.py#L253)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCaseThenThen_Sleep().json
-
-[Show source in tasks_case_then_then.py:245](../../../../../../../julep/api/types/tasks_case_then_then.py#L245)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCaseThenThen_ToolCall
-
-[Show source in tasks_case_then_then.py:64](../../../../../../../julep/api/types/tasks_case_then_then.py#L64)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksCaseThenThen_ToolCall(pydantic_v1.BaseModel): ...
-```
-
-### TasksCaseThenThen_ToolCall().dict
-
-[Show source in tasks_case_then_then.py:83](../../../../../../../julep/api/types/tasks_case_then_then.py#L83)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCaseThenThen_ToolCall().json
-
-[Show source in tasks_case_then_then.py:75](../../../../../../../julep/api/types/tasks_case_then_then.py#L75)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCaseThenThen_WaitForInput
-
-[Show source in tasks_case_then_then.py:531](../../../../../../../julep/api/types/tasks_case_then_then.py#L531)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksCaseThenThen_WaitForInput(pydantic_v1.BaseModel): ...
-```
-
-### TasksCaseThenThen_WaitForInput().dict
-
-[Show source in tasks_case_then_then.py:549](../../../../../../../julep/api/types/tasks_case_then_then.py#L549)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCaseThenThen_WaitForInput().json
-
-[Show source in tasks_case_then_then.py:541](../../../../../../../julep/api/types/tasks_case_then_then.py#L541)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCaseThenThen_Yield
-
-[Show source in tasks_case_then_then.py:109](../../../../../../../julep/api/types/tasks_case_then_then.py#L109)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksCaseThenThen_Yield(pydantic_v1.BaseModel): ...
-```
-
-### TasksCaseThenThen_Yield().dict
-
-[Show source in tasks_case_then_then.py:126](../../../../../../../julep/api/types/tasks_case_then_then.py#L126)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCaseThenThen_Yield().json
-
-[Show source in tasks_case_then_then.py:118](../../../../../../../julep/api/types/tasks_case_then_then.py#L118)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_create_task_request.md b/docs/python-sdk-docs/julep/api/types/tasks_create_task_request.md
deleted file mode 100644
index d49ae4afa..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_create_task_request.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# TasksCreateTaskRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksCreateTaskRequest
-
-> Auto-generated documentation for [julep.api.types.tasks_create_task_request](../../../../../../../julep/api/types/tasks_create_task_request.py) module.
-
-- [TasksCreateTaskRequest](#taskscreatetaskrequest)
- - [TasksCreateTaskRequest](#taskscreatetaskrequest-1)
-
-## TasksCreateTaskRequest
-
-[Show source in tasks_create_task_request.py:12](../../../../../../../julep/api/types/tasks_create_task_request.py#L12)
-
-Payload for creating a task
-
-#### Signature
-
-```python
-class TasksCreateTaskRequest(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequest().dict
-
-[Show source in tasks_create_task_request.py:51](../../../../../../../julep/api/types/tasks_create_task_request.py#L51)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequest().json
-
-[Show source in tasks_create_task_request.py:43](../../../../../../../julep/api/types/tasks_create_task_request.py#L43)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_create_task_request_main_item.md b/docs/python-sdk-docs/julep/api/types/tasks_create_task_request_main_item.md
deleted file mode 100644
index a0105a35b..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_create_task_request_main_item.md
+++ /dev/null
@@ -1,599 +0,0 @@
-# Tasks Create Task Request Main Item
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tasks Create Task Request Main Item
-
-> Auto-generated documentation for [julep.api.types.tasks_create_task_request_main_item](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py) module.
-
-- [Tasks Create Task Request Main Item](#tasks-create-task-request-main-item)
- - [TasksCreateTaskRequestMainItem_Embed](#taskscreatetaskrequestmainitem_embed)
- - [TasksCreateTaskRequestMainItem_Error](#taskscreatetaskrequestmainitem_error)
- - [TasksCreateTaskRequestMainItem_Evaluate](#taskscreatetaskrequestmainitem_evaluate)
- - [TasksCreateTaskRequestMainItem_Foreach](#taskscreatetaskrequestmainitem_foreach)
- - [TasksCreateTaskRequestMainItem_Get](#taskscreatetaskrequestmainitem_get)
- - [TasksCreateTaskRequestMainItem_IfElse](#taskscreatetaskrequestmainitem_ifelse)
- - [TasksCreateTaskRequestMainItem_Log](#taskscreatetaskrequestmainitem_log)
- - [TasksCreateTaskRequestMainItem_MapReduce](#taskscreatetaskrequestmainitem_mapreduce)
- - [TasksCreateTaskRequestMainItem_Parallel](#taskscreatetaskrequestmainitem_parallel)
- - [TasksCreateTaskRequestMainItem_Prompt](#taskscreatetaskrequestmainitem_prompt)
- - [TasksCreateTaskRequestMainItem_Return](#taskscreatetaskrequestmainitem_return)
- - [TasksCreateTaskRequestMainItem_Search](#taskscreatetaskrequestmainitem_search)
- - [TasksCreateTaskRequestMainItem_Set](#taskscreatetaskrequestmainitem_set)
- - [TasksCreateTaskRequestMainItem_Sleep](#taskscreatetaskrequestmainitem_sleep)
- - [TasksCreateTaskRequestMainItem_Switch](#taskscreatetaskrequestmainitem_switch)
- - [TasksCreateTaskRequestMainItem_ToolCall](#taskscreatetaskrequestmainitem_toolcall)
- - [TasksCreateTaskRequestMainItem_WaitForInput](#taskscreatetaskrequestmainitem_waitforinput)
- - [TasksCreateTaskRequestMainItem_Yield](#taskscreatetaskrequestmainitem_yield)
-
-## TasksCreateTaskRequestMainItem_Embed
-
-[Show source in tasks_create_task_request_main_item.py:413](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L413)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_Embed(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_Embed().dict
-
-[Show source in tasks_create_task_request_main_item.py:425](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L425)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_Embed().json
-
-[Show source in tasks_create_task_request_main_item.py:417](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L417)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_Error
-
-[Show source in tasks_create_task_request_main_item.py:185](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L185)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_Error(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_Error().dict
-
-[Show source in tasks_create_task_request_main_item.py:197](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L197)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_Error().json
-
-[Show source in tasks_create_task_request_main_item.py:189](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L189)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_Evaluate
-
-[Show source in tasks_create_task_request_main_item.py:26](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L26)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_Evaluate(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_Evaluate().dict
-
-[Show source in tasks_create_task_request_main_item.py:40](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L40)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_Evaluate().json
-
-[Show source in tasks_create_task_request_main_item.py:32](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L32)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_Foreach
-
-[Show source in tasks_create_task_request_main_item.py:609](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L609)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_Foreach(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_Foreach().dict
-
-[Show source in tasks_create_task_request_main_item.py:623](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L623)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_Foreach().json
-
-[Show source in tasks_create_task_request_main_item.py:615](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L615)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_Get
-
-[Show source in tasks_create_task_request_main_item.py:299](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L299)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_Get(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_Get().dict
-
-[Show source in tasks_create_task_request_main_item.py:311](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L311)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_Get().json
-
-[Show source in tasks_create_task_request_main_item.py:303](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L303)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_IfElse
-
-[Show source in tasks_create_task_request_main_item.py:529](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L529)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_IfElse(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_IfElse().dict
-
-[Show source in tasks_create_task_request_main_item.py:545](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L545)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_IfElse().json
-
-[Show source in tasks_create_task_request_main_item.py:537](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L537)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_Log
-
-[Show source in tasks_create_task_request_main_item.py:375](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L375)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_Log(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_Log().dict
-
-[Show source in tasks_create_task_request_main_item.py:387](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L387)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_Log().json
-
-[Show source in tasks_create_task_request_main_item.py:379](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L379)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_MapReduce
-
-[Show source in tasks_create_task_request_main_item.py:689](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L689)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_MapReduce(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_MapReduce().dict
-
-[Show source in tasks_create_task_request_main_item.py:704](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L704)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_MapReduce().json
-
-[Show source in tasks_create_task_request_main_item.py:696](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L696)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_Parallel
-
-[Show source in tasks_create_task_request_main_item.py:649](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L649)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_Parallel(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_Parallel().dict
-
-[Show source in tasks_create_task_request_main_item.py:663](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L663)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_Parallel().json
-
-[Show source in tasks_create_task_request_main_item.py:655](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L655)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_Prompt
-
-[Show source in tasks_create_task_request_main_item.py:146](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L146)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_Prompt(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_Prompt().dict
-
-[Show source in tasks_create_task_request_main_item.py:159](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L159)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_Prompt().json
-
-[Show source in tasks_create_task_request_main_item.py:151](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L151)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_Return
-
-[Show source in tasks_create_task_request_main_item.py:261](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L261)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_Return(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_Return().dict
-
-[Show source in tasks_create_task_request_main_item.py:273](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L273)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_Return().json
-
-[Show source in tasks_create_task_request_main_item.py:265](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L265)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_Search
-
-[Show source in tasks_create_task_request_main_item.py:451](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L451)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_Search(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_Search().dict
-
-[Show source in tasks_create_task_request_main_item.py:463](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L463)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_Search().json
-
-[Show source in tasks_create_task_request_main_item.py:455](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L455)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_Set
-
-[Show source in tasks_create_task_request_main_item.py:337](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L337)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_Set(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_Set().dict
-
-[Show source in tasks_create_task_request_main_item.py:349](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L349)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_Set().json
-
-[Show source in tasks_create_task_request_main_item.py:341](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L341)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_Sleep
-
-[Show source in tasks_create_task_request_main_item.py:223](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L223)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_Sleep(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_Sleep().dict
-
-[Show source in tasks_create_task_request_main_item.py:235](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L235)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_Sleep().json
-
-[Show source in tasks_create_task_request_main_item.py:227](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L227)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_Switch
-
-[Show source in tasks_create_task_request_main_item.py:571](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L571)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_Switch(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_Switch().dict
-
-[Show source in tasks_create_task_request_main_item.py:583](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L583)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_Switch().json
-
-[Show source in tasks_create_task_request_main_item.py:575](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L575)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_ToolCall
-
-[Show source in tasks_create_task_request_main_item.py:66](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L66)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_ToolCall(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_ToolCall().dict
-
-[Show source in tasks_create_task_request_main_item.py:81](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L81)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_ToolCall().json
-
-[Show source in tasks_create_task_request_main_item.py:73](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L73)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_WaitForInput
-
-[Show source in tasks_create_task_request_main_item.py:489](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L489)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_WaitForInput(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_WaitForInput().dict
-
-[Show source in tasks_create_task_request_main_item.py:503](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L503)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_WaitForInput().json
-
-[Show source in tasks_create_task_request_main_item.py:495](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L495)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksCreateTaskRequestMainItem_Yield
-
-[Show source in tasks_create_task_request_main_item.py:107](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L107)
-
-#### Signature
-
-```python
-class TasksCreateTaskRequestMainItem_Yield(pydantic_v1.BaseModel): ...
-```
-
-### TasksCreateTaskRequestMainItem_Yield().dict
-
-[Show source in tasks_create_task_request_main_item.py:120](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L120)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksCreateTaskRequestMainItem_Yield().json
-
-[Show source in tasks_create_task_request_main_item.py:112](../../../../../../../julep/api/types/tasks_create_task_request_main_item.py#L112)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_embed_step.md b/docs/python-sdk-docs/julep/api/types/tasks_embed_step.md
deleted file mode 100644
index af18dfe3b..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_embed_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksEmbedStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksEmbedStep
-
-> Auto-generated documentation for [julep.api.types.tasks_embed_step](../../../../../../../julep/api/types/tasks_embed_step.py) module.
-
-- [TasksEmbedStep](#tasksembedstep)
- - [TasksEmbedStep](#tasksembedstep-1)
-
-## TasksEmbedStep
-
-[Show source in tasks_embed_step.py:11](../../../../../../../julep/api/types/tasks_embed_step.py#L11)
-
-#### Signature
-
-```python
-class TasksEmbedStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksEmbedStep().dict
-
-[Show source in tasks_embed_step.py:25](../../../../../../../julep/api/types/tasks_embed_step.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksEmbedStep().json
-
-[Show source in tasks_embed_step.py:17](../../../../../../../julep/api/types/tasks_embed_step.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_error_workflow_step.md b/docs/python-sdk-docs/julep/api/types/tasks_error_workflow_step.md
deleted file mode 100644
index 457cc00b6..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_error_workflow_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksErrorWorkflowStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksErrorWorkflowStep
-
-> Auto-generated documentation for [julep.api.types.tasks_error_workflow_step](../../../../../../../julep/api/types/tasks_error_workflow_step.py) module.
-
-- [TasksErrorWorkflowStep](#taskserrorworkflowstep)
- - [TasksErrorWorkflowStep](#taskserrorworkflowstep-1)
-
-## TasksErrorWorkflowStep
-
-[Show source in tasks_error_workflow_step.py:10](../../../../../../../julep/api/types/tasks_error_workflow_step.py#L10)
-
-#### Signature
-
-```python
-class TasksErrorWorkflowStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksErrorWorkflowStep().dict
-
-[Show source in tasks_error_workflow_step.py:24](../../../../../../../julep/api/types/tasks_error_workflow_step.py#L24)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksErrorWorkflowStep().json
-
-[Show source in tasks_error_workflow_step.py:16](../../../../../../../julep/api/types/tasks_error_workflow_step.py#L16)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_evaluate_step.md b/docs/python-sdk-docs/julep/api/types/tasks_evaluate_step.md
deleted file mode 100644
index cc9d0b45e..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_evaluate_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksEvaluateStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksEvaluateStep
-
-> Auto-generated documentation for [julep.api.types.tasks_evaluate_step](../../../../../../../julep/api/types/tasks_evaluate_step.py) module.
-
-- [TasksEvaluateStep](#tasksevaluatestep)
- - [TasksEvaluateStep](#tasksevaluatestep-1)
-
-## TasksEvaluateStep
-
-[Show source in tasks_evaluate_step.py:11](../../../../../../../julep/api/types/tasks_evaluate_step.py#L11)
-
-#### Signature
-
-```python
-class TasksEvaluateStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksEvaluateStep().dict
-
-[Show source in tasks_evaluate_step.py:25](../../../../../../../julep/api/types/tasks_evaluate_step.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksEvaluateStep().json
-
-[Show source in tasks_evaluate_step.py:17](../../../../../../../julep/api/types/tasks_evaluate_step.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_foreach_do.md b/docs/python-sdk-docs/julep/api/types/tasks_foreach_do.md
deleted file mode 100644
index 29730240e..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_foreach_do.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksForeachDo
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksForeachDo
-
-> Auto-generated documentation for [julep.api.types.tasks_foreach_do](../../../../../../../julep/api/types/tasks_foreach_do.py) module.
-
-- [TasksForeachDo](#tasksforeachdo)
- - [TasksForeachDo](#tasksforeachdo-1)
-
-## TasksForeachDo
-
-[Show source in tasks_foreach_do.py:12](../../../../../../../julep/api/types/tasks_foreach_do.py#L12)
-
-#### Signature
-
-```python
-class TasksForeachDo(pydantic_v1.BaseModel): ...
-```
-
-### TasksForeachDo().dict
-
-[Show source in tasks_foreach_do.py:31](../../../../../../../julep/api/types/tasks_foreach_do.py#L31)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksForeachDo().json
-
-[Show source in tasks_foreach_do.py:23](../../../../../../../julep/api/types/tasks_foreach_do.py#L23)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_foreach_do_do.md b/docs/python-sdk-docs/julep/api/types/tasks_foreach_do_do.md
deleted file mode 100644
index 729006800..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_foreach_do_do.md
+++ /dev/null
@@ -1,460 +0,0 @@
-# Tasks Foreach Do Do
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tasks Foreach Do Do
-
-> Auto-generated documentation for [julep.api.types.tasks_foreach_do_do](../../../../../../../julep/api/types/tasks_foreach_do_do.py) module.
-
-- [Tasks Foreach Do Do](#tasks-foreach-do-do)
- - [TasksForeachDoDo_Embed](#tasksforeachdodo_embed)
- - [TasksForeachDoDo_Error](#tasksforeachdodo_error)
- - [TasksForeachDoDo_Evaluate](#tasksforeachdodo_evaluate)
- - [TasksForeachDoDo_Get](#tasksforeachdodo_get)
- - [TasksForeachDoDo_Log](#tasksforeachdodo_log)
- - [TasksForeachDoDo_Prompt](#tasksforeachdodo_prompt)
- - [TasksForeachDoDo_Return](#tasksforeachdodo_return)
- - [TasksForeachDoDo_Search](#tasksforeachdodo_search)
- - [TasksForeachDoDo_Set](#tasksforeachdodo_set)
- - [TasksForeachDoDo_Sleep](#tasksforeachdodo_sleep)
- - [TasksForeachDoDo_ToolCall](#tasksforeachdodo_toolcall)
- - [TasksForeachDoDo_WaitForInput](#tasksforeachdodo_waitforinput)
- - [TasksForeachDoDo_Yield](#tasksforeachdodo_yield)
-
-## TasksForeachDoDo_Embed
-
-[Show source in tasks_foreach_do_do.py:447](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L447)
-
-The steps to run for each iteration
-
-#### Signature
-
-```python
-class TasksForeachDoDo_Embed(pydantic_v1.BaseModel): ...
-```
-
-### TasksForeachDoDo_Embed().dict
-
-[Show source in tasks_foreach_do_do.py:463](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L463)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksForeachDoDo_Embed().json
-
-[Show source in tasks_foreach_do_do.py:455](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L455)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksForeachDoDo_Error
-
-[Show source in tasks_foreach_do_do.py:195](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L195)
-
-The steps to run for each iteration
-
-#### Signature
-
-```python
-class TasksForeachDoDo_Error(pydantic_v1.BaseModel): ...
-```
-
-### TasksForeachDoDo_Error().dict
-
-[Show source in tasks_foreach_do_do.py:211](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L211)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksForeachDoDo_Error().json
-
-[Show source in tasks_foreach_do_do.py:203](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L203)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksForeachDoDo_Evaluate
-
-[Show source in tasks_foreach_do_do.py:20](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L20)
-
-The steps to run for each iteration
-
-#### Signature
-
-```python
-class TasksForeachDoDo_Evaluate(pydantic_v1.BaseModel): ...
-```
-
-### TasksForeachDoDo_Evaluate().dict
-
-[Show source in tasks_foreach_do_do.py:38](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L38)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksForeachDoDo_Evaluate().json
-
-[Show source in tasks_foreach_do_do.py:30](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L30)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksForeachDoDo_Get
-
-[Show source in tasks_foreach_do_do.py:321](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L321)
-
-The steps to run for each iteration
-
-#### Signature
-
-```python
-class TasksForeachDoDo_Get(pydantic_v1.BaseModel): ...
-```
-
-### TasksForeachDoDo_Get().dict
-
-[Show source in tasks_foreach_do_do.py:337](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L337)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksForeachDoDo_Get().json
-
-[Show source in tasks_foreach_do_do.py:329](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L329)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksForeachDoDo_Log
-
-[Show source in tasks_foreach_do_do.py:405](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L405)
-
-The steps to run for each iteration
-
-#### Signature
-
-```python
-class TasksForeachDoDo_Log(pydantic_v1.BaseModel): ...
-```
-
-### TasksForeachDoDo_Log().dict
-
-[Show source in tasks_foreach_do_do.py:421](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L421)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksForeachDoDo_Log().json
-
-[Show source in tasks_foreach_do_do.py:413](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L413)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksForeachDoDo_Prompt
-
-[Show source in tasks_foreach_do_do.py:152](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L152)
-
-The steps to run for each iteration
-
-#### Signature
-
-```python
-class TasksForeachDoDo_Prompt(pydantic_v1.BaseModel): ...
-```
-
-### TasksForeachDoDo_Prompt().dict
-
-[Show source in tasks_foreach_do_do.py:169](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L169)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksForeachDoDo_Prompt().json
-
-[Show source in tasks_foreach_do_do.py:161](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L161)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksForeachDoDo_Return
-
-[Show source in tasks_foreach_do_do.py:279](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L279)
-
-The steps to run for each iteration
-
-#### Signature
-
-```python
-class TasksForeachDoDo_Return(pydantic_v1.BaseModel): ...
-```
-
-### TasksForeachDoDo_Return().dict
-
-[Show source in tasks_foreach_do_do.py:295](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L295)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksForeachDoDo_Return().json
-
-[Show source in tasks_foreach_do_do.py:287](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L287)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksForeachDoDo_Search
-
-[Show source in tasks_foreach_do_do.py:489](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L489)
-
-The steps to run for each iteration
-
-#### Signature
-
-```python
-class TasksForeachDoDo_Search(pydantic_v1.BaseModel): ...
-```
-
-### TasksForeachDoDo_Search().dict
-
-[Show source in tasks_foreach_do_do.py:505](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L505)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksForeachDoDo_Search().json
-
-[Show source in tasks_foreach_do_do.py:497](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L497)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksForeachDoDo_Set
-
-[Show source in tasks_foreach_do_do.py:363](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L363)
-
-The steps to run for each iteration
-
-#### Signature
-
-```python
-class TasksForeachDoDo_Set(pydantic_v1.BaseModel): ...
-```
-
-### TasksForeachDoDo_Set().dict
-
-[Show source in tasks_foreach_do_do.py:379](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L379)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksForeachDoDo_Set().json
-
-[Show source in tasks_foreach_do_do.py:371](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L371)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksForeachDoDo_Sleep
-
-[Show source in tasks_foreach_do_do.py:237](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L237)
-
-The steps to run for each iteration
-
-#### Signature
-
-```python
-class TasksForeachDoDo_Sleep(pydantic_v1.BaseModel): ...
-```
-
-### TasksForeachDoDo_Sleep().dict
-
-[Show source in tasks_foreach_do_do.py:253](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L253)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksForeachDoDo_Sleep().json
-
-[Show source in tasks_foreach_do_do.py:245](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L245)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksForeachDoDo_ToolCall
-
-[Show source in tasks_foreach_do_do.py:64](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L64)
-
-The steps to run for each iteration
-
-#### Signature
-
-```python
-class TasksForeachDoDo_ToolCall(pydantic_v1.BaseModel): ...
-```
-
-### TasksForeachDoDo_ToolCall().dict
-
-[Show source in tasks_foreach_do_do.py:83](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L83)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksForeachDoDo_ToolCall().json
-
-[Show source in tasks_foreach_do_do.py:75](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L75)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksForeachDoDo_WaitForInput
-
-[Show source in tasks_foreach_do_do.py:531](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L531)
-
-The steps to run for each iteration
-
-#### Signature
-
-```python
-class TasksForeachDoDo_WaitForInput(pydantic_v1.BaseModel): ...
-```
-
-### TasksForeachDoDo_WaitForInput().dict
-
-[Show source in tasks_foreach_do_do.py:549](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L549)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksForeachDoDo_WaitForInput().json
-
-[Show source in tasks_foreach_do_do.py:541](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L541)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksForeachDoDo_Yield
-
-[Show source in tasks_foreach_do_do.py:109](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L109)
-
-The steps to run for each iteration
-
-#### Signature
-
-```python
-class TasksForeachDoDo_Yield(pydantic_v1.BaseModel): ...
-```
-
-### TasksForeachDoDo_Yield().dict
-
-[Show source in tasks_foreach_do_do.py:126](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L126)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksForeachDoDo_Yield().json
-
-[Show source in tasks_foreach_do_do.py:118](../../../../../../../julep/api/types/tasks_foreach_do_do.py#L118)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_foreach_step.md b/docs/python-sdk-docs/julep/api/types/tasks_foreach_step.md
deleted file mode 100644
index 563f1c526..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_foreach_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksForeachStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksForeachStep
-
-> Auto-generated documentation for [julep.api.types.tasks_foreach_step](../../../../../../../julep/api/types/tasks_foreach_step.py) module.
-
-- [TasksForeachStep](#tasksforeachstep)
- - [TasksForeachStep](#tasksforeachstep-1)
-
-## TasksForeachStep
-
-[Show source in tasks_foreach_step.py:11](../../../../../../../julep/api/types/tasks_foreach_step.py#L11)
-
-#### Signature
-
-```python
-class TasksForeachStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksForeachStep().dict
-
-[Show source in tasks_foreach_step.py:25](../../../../../../../julep/api/types/tasks_foreach_step.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksForeachStep().json
-
-[Show source in tasks_foreach_step.py:17](../../../../../../../julep/api/types/tasks_foreach_step.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_get_step.md b/docs/python-sdk-docs/julep/api/types/tasks_get_step.md
deleted file mode 100644
index 0bda9cb54..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_get_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksGetStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksGetStep
-
-> Auto-generated documentation for [julep.api.types.tasks_get_step](../../../../../../../julep/api/types/tasks_get_step.py) module.
-
-- [TasksGetStep](#tasksgetstep)
- - [TasksGetStep](#tasksgetstep-1)
-
-## TasksGetStep
-
-[Show source in tasks_get_step.py:10](../../../../../../../julep/api/types/tasks_get_step.py#L10)
-
-#### Signature
-
-```python
-class TasksGetStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksGetStep().dict
-
-[Show source in tasks_get_step.py:24](../../../../../../../julep/api/types/tasks_get_step.py#L24)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksGetStep().json
-
-[Show source in tasks_get_step.py:16](../../../../../../../julep/api/types/tasks_get_step.py#L16)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_if_else_workflow_step.md b/docs/python-sdk-docs/julep/api/types/tasks_if_else_workflow_step.md
deleted file mode 100644
index 27aa1d222..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_if_else_workflow_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksIfElseWorkflowStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksIfElseWorkflowStep
-
-> Auto-generated documentation for [julep.api.types.tasks_if_else_workflow_step](../../../../../../../julep/api/types/tasks_if_else_workflow_step.py) module.
-
-- [TasksIfElseWorkflowStep](#tasksifelseworkflowstep)
- - [TasksIfElseWorkflowStep](#tasksifelseworkflowstep-1)
-
-## TasksIfElseWorkflowStep
-
-[Show source in tasks_if_else_workflow_step.py:13](../../../../../../../julep/api/types/tasks_if_else_workflow_step.py#L13)
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStep().dict
-
-[Show source in tasks_if_else_workflow_step.py:37](../../../../../../../julep/api/types/tasks_if_else_workflow_step.py#L37)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStep().json
-
-[Show source in tasks_if_else_workflow_step.py:29](../../../../../../../julep/api/types/tasks_if_else_workflow_step.py#L29)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_if_else_workflow_step_else.md b/docs/python-sdk-docs/julep/api/types/tasks_if_else_workflow_step_else.md
deleted file mode 100644
index e3928449c..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_if_else_workflow_step_else.md
+++ /dev/null
@@ -1,460 +0,0 @@
-# Tasks If Else Workflow Step Else
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tasks If Else Workflow Step Else
-
-> Auto-generated documentation for [julep.api.types.tasks_if_else_workflow_step_else](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py) module.
-
-- [Tasks If Else Workflow Step Else](#tasks-if-else-workflow-step-else)
- - [TasksIfElseWorkflowStepElse_Embed](#tasksifelseworkflowstepelse_embed)
- - [TasksIfElseWorkflowStepElse_Error](#tasksifelseworkflowstepelse_error)
- - [TasksIfElseWorkflowStepElse_Evaluate](#tasksifelseworkflowstepelse_evaluate)
- - [TasksIfElseWorkflowStepElse_Get](#tasksifelseworkflowstepelse_get)
- - [TasksIfElseWorkflowStepElse_Log](#tasksifelseworkflowstepelse_log)
- - [TasksIfElseWorkflowStepElse_Prompt](#tasksifelseworkflowstepelse_prompt)
- - [TasksIfElseWorkflowStepElse_Return](#tasksifelseworkflowstepelse_return)
- - [TasksIfElseWorkflowStepElse_Search](#tasksifelseworkflowstepelse_search)
- - [TasksIfElseWorkflowStepElse_Set](#tasksifelseworkflowstepelse_set)
- - [TasksIfElseWorkflowStepElse_Sleep](#tasksifelseworkflowstepelse_sleep)
- - [TasksIfElseWorkflowStepElse_ToolCall](#tasksifelseworkflowstepelse_toolcall)
- - [TasksIfElseWorkflowStepElse_WaitForInput](#tasksifelseworkflowstepelse_waitforinput)
- - [TasksIfElseWorkflowStepElse_Yield](#tasksifelseworkflowstepelse_yield)
-
-## TasksIfElseWorkflowStepElse_Embed
-
-[Show source in tasks_if_else_workflow_step_else.py:447](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L447)
-
-The steps to run if the condition is false
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepElse_Embed(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepElse_Embed().dict
-
-[Show source in tasks_if_else_workflow_step_else.py:463](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L463)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepElse_Embed().json
-
-[Show source in tasks_if_else_workflow_step_else.py:455](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L455)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepElse_Error
-
-[Show source in tasks_if_else_workflow_step_else.py:195](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L195)
-
-The steps to run if the condition is false
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepElse_Error(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepElse_Error().dict
-
-[Show source in tasks_if_else_workflow_step_else.py:211](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L211)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepElse_Error().json
-
-[Show source in tasks_if_else_workflow_step_else.py:203](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L203)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepElse_Evaluate
-
-[Show source in tasks_if_else_workflow_step_else.py:20](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L20)
-
-The steps to run if the condition is false
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepElse_Evaluate(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepElse_Evaluate().dict
-
-[Show source in tasks_if_else_workflow_step_else.py:38](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L38)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepElse_Evaluate().json
-
-[Show source in tasks_if_else_workflow_step_else.py:30](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L30)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepElse_Get
-
-[Show source in tasks_if_else_workflow_step_else.py:321](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L321)
-
-The steps to run if the condition is false
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepElse_Get(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepElse_Get().dict
-
-[Show source in tasks_if_else_workflow_step_else.py:337](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L337)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepElse_Get().json
-
-[Show source in tasks_if_else_workflow_step_else.py:329](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L329)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepElse_Log
-
-[Show source in tasks_if_else_workflow_step_else.py:405](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L405)
-
-The steps to run if the condition is false
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepElse_Log(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepElse_Log().dict
-
-[Show source in tasks_if_else_workflow_step_else.py:421](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L421)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepElse_Log().json
-
-[Show source in tasks_if_else_workflow_step_else.py:413](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L413)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepElse_Prompt
-
-[Show source in tasks_if_else_workflow_step_else.py:152](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L152)
-
-The steps to run if the condition is false
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepElse_Prompt(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepElse_Prompt().dict
-
-[Show source in tasks_if_else_workflow_step_else.py:169](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L169)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepElse_Prompt().json
-
-[Show source in tasks_if_else_workflow_step_else.py:161](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L161)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepElse_Return
-
-[Show source in tasks_if_else_workflow_step_else.py:279](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L279)
-
-The steps to run if the condition is false
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepElse_Return(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepElse_Return().dict
-
-[Show source in tasks_if_else_workflow_step_else.py:295](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L295)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepElse_Return().json
-
-[Show source in tasks_if_else_workflow_step_else.py:287](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L287)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepElse_Search
-
-[Show source in tasks_if_else_workflow_step_else.py:489](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L489)
-
-The steps to run if the condition is false
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepElse_Search(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepElse_Search().dict
-
-[Show source in tasks_if_else_workflow_step_else.py:505](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L505)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepElse_Search().json
-
-[Show source in tasks_if_else_workflow_step_else.py:497](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L497)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepElse_Set
-
-[Show source in tasks_if_else_workflow_step_else.py:363](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L363)
-
-The steps to run if the condition is false
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepElse_Set(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepElse_Set().dict
-
-[Show source in tasks_if_else_workflow_step_else.py:379](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L379)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepElse_Set().json
-
-[Show source in tasks_if_else_workflow_step_else.py:371](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L371)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepElse_Sleep
-
-[Show source in tasks_if_else_workflow_step_else.py:237](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L237)
-
-The steps to run if the condition is false
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepElse_Sleep(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepElse_Sleep().dict
-
-[Show source in tasks_if_else_workflow_step_else.py:253](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L253)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepElse_Sleep().json
-
-[Show source in tasks_if_else_workflow_step_else.py:245](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L245)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepElse_ToolCall
-
-[Show source in tasks_if_else_workflow_step_else.py:64](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L64)
-
-The steps to run if the condition is false
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepElse_ToolCall(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepElse_ToolCall().dict
-
-[Show source in tasks_if_else_workflow_step_else.py:83](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L83)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepElse_ToolCall().json
-
-[Show source in tasks_if_else_workflow_step_else.py:75](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L75)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepElse_WaitForInput
-
-[Show source in tasks_if_else_workflow_step_else.py:531](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L531)
-
-The steps to run if the condition is false
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepElse_WaitForInput(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepElse_WaitForInput().dict
-
-[Show source in tasks_if_else_workflow_step_else.py:549](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L549)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepElse_WaitForInput().json
-
-[Show source in tasks_if_else_workflow_step_else.py:541](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L541)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepElse_Yield
-
-[Show source in tasks_if_else_workflow_step_else.py:109](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L109)
-
-The steps to run if the condition is false
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepElse_Yield(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepElse_Yield().dict
-
-[Show source in tasks_if_else_workflow_step_else.py:126](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L126)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepElse_Yield().json
-
-[Show source in tasks_if_else_workflow_step_else.py:118](../../../../../../../julep/api/types/tasks_if_else_workflow_step_else.py#L118)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_if_else_workflow_step_then.md b/docs/python-sdk-docs/julep/api/types/tasks_if_else_workflow_step_then.md
deleted file mode 100644
index 75ef5edf1..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_if_else_workflow_step_then.md
+++ /dev/null
@@ -1,460 +0,0 @@
-# Tasks If Else Workflow Step Then
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tasks If Else Workflow Step Then
-
-> Auto-generated documentation for [julep.api.types.tasks_if_else_workflow_step_then](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py) module.
-
-- [Tasks If Else Workflow Step Then](#tasks-if-else-workflow-step-then)
- - [TasksIfElseWorkflowStepThen_Embed](#tasksifelseworkflowstepthen_embed)
- - [TasksIfElseWorkflowStepThen_Error](#tasksifelseworkflowstepthen_error)
- - [TasksIfElseWorkflowStepThen_Evaluate](#tasksifelseworkflowstepthen_evaluate)
- - [TasksIfElseWorkflowStepThen_Get](#tasksifelseworkflowstepthen_get)
- - [TasksIfElseWorkflowStepThen_Log](#tasksifelseworkflowstepthen_log)
- - [TasksIfElseWorkflowStepThen_Prompt](#tasksifelseworkflowstepthen_prompt)
- - [TasksIfElseWorkflowStepThen_Return](#tasksifelseworkflowstepthen_return)
- - [TasksIfElseWorkflowStepThen_Search](#tasksifelseworkflowstepthen_search)
- - [TasksIfElseWorkflowStepThen_Set](#tasksifelseworkflowstepthen_set)
- - [TasksIfElseWorkflowStepThen_Sleep](#tasksifelseworkflowstepthen_sleep)
- - [TasksIfElseWorkflowStepThen_ToolCall](#tasksifelseworkflowstepthen_toolcall)
- - [TasksIfElseWorkflowStepThen_WaitForInput](#tasksifelseworkflowstepthen_waitforinput)
- - [TasksIfElseWorkflowStepThen_Yield](#tasksifelseworkflowstepthen_yield)
-
-## TasksIfElseWorkflowStepThen_Embed
-
-[Show source in tasks_if_else_workflow_step_then.py:447](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L447)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepThen_Embed(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepThen_Embed().dict
-
-[Show source in tasks_if_else_workflow_step_then.py:463](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L463)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepThen_Embed().json
-
-[Show source in tasks_if_else_workflow_step_then.py:455](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L455)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepThen_Error
-
-[Show source in tasks_if_else_workflow_step_then.py:195](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L195)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepThen_Error(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepThen_Error().dict
-
-[Show source in tasks_if_else_workflow_step_then.py:211](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L211)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepThen_Error().json
-
-[Show source in tasks_if_else_workflow_step_then.py:203](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L203)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepThen_Evaluate
-
-[Show source in tasks_if_else_workflow_step_then.py:20](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L20)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepThen_Evaluate(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepThen_Evaluate().dict
-
-[Show source in tasks_if_else_workflow_step_then.py:38](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L38)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepThen_Evaluate().json
-
-[Show source in tasks_if_else_workflow_step_then.py:30](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L30)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepThen_Get
-
-[Show source in tasks_if_else_workflow_step_then.py:321](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L321)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepThen_Get(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepThen_Get().dict
-
-[Show source in tasks_if_else_workflow_step_then.py:337](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L337)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepThen_Get().json
-
-[Show source in tasks_if_else_workflow_step_then.py:329](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L329)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepThen_Log
-
-[Show source in tasks_if_else_workflow_step_then.py:405](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L405)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepThen_Log(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepThen_Log().dict
-
-[Show source in tasks_if_else_workflow_step_then.py:421](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L421)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepThen_Log().json
-
-[Show source in tasks_if_else_workflow_step_then.py:413](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L413)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepThen_Prompt
-
-[Show source in tasks_if_else_workflow_step_then.py:152](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L152)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepThen_Prompt(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepThen_Prompt().dict
-
-[Show source in tasks_if_else_workflow_step_then.py:169](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L169)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepThen_Prompt().json
-
-[Show source in tasks_if_else_workflow_step_then.py:161](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L161)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepThen_Return
-
-[Show source in tasks_if_else_workflow_step_then.py:279](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L279)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepThen_Return(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepThen_Return().dict
-
-[Show source in tasks_if_else_workflow_step_then.py:295](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L295)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepThen_Return().json
-
-[Show source in tasks_if_else_workflow_step_then.py:287](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L287)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepThen_Search
-
-[Show source in tasks_if_else_workflow_step_then.py:489](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L489)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepThen_Search(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepThen_Search().dict
-
-[Show source in tasks_if_else_workflow_step_then.py:505](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L505)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepThen_Search().json
-
-[Show source in tasks_if_else_workflow_step_then.py:497](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L497)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepThen_Set
-
-[Show source in tasks_if_else_workflow_step_then.py:363](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L363)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepThen_Set(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepThen_Set().dict
-
-[Show source in tasks_if_else_workflow_step_then.py:379](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L379)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepThen_Set().json
-
-[Show source in tasks_if_else_workflow_step_then.py:371](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L371)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepThen_Sleep
-
-[Show source in tasks_if_else_workflow_step_then.py:237](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L237)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepThen_Sleep(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepThen_Sleep().dict
-
-[Show source in tasks_if_else_workflow_step_then.py:253](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L253)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepThen_Sleep().json
-
-[Show source in tasks_if_else_workflow_step_then.py:245](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L245)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepThen_ToolCall
-
-[Show source in tasks_if_else_workflow_step_then.py:64](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L64)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepThen_ToolCall(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepThen_ToolCall().dict
-
-[Show source in tasks_if_else_workflow_step_then.py:83](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L83)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepThen_ToolCall().json
-
-[Show source in tasks_if_else_workflow_step_then.py:75](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L75)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepThen_WaitForInput
-
-[Show source in tasks_if_else_workflow_step_then.py:531](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L531)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepThen_WaitForInput(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepThen_WaitForInput().dict
-
-[Show source in tasks_if_else_workflow_step_then.py:549](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L549)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepThen_WaitForInput().json
-
-[Show source in tasks_if_else_workflow_step_then.py:541](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L541)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksIfElseWorkflowStepThen_Yield
-
-[Show source in tasks_if_else_workflow_step_then.py:109](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L109)
-
-The steps to run if the condition is true
-
-#### Signature
-
-```python
-class TasksIfElseWorkflowStepThen_Yield(pydantic_v1.BaseModel): ...
-```
-
-### TasksIfElseWorkflowStepThen_Yield().dict
-
-[Show source in tasks_if_else_workflow_step_then.py:126](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L126)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksIfElseWorkflowStepThen_Yield().json
-
-[Show source in tasks_if_else_workflow_step_then.py:118](../../../../../../../julep/api/types/tasks_if_else_workflow_step_then.py#L118)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_log_step.md b/docs/python-sdk-docs/julep/api/types/tasks_log_step.md
deleted file mode 100644
index 2ab4a3c39..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_log_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksLogStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksLogStep
-
-> Auto-generated documentation for [julep.api.types.tasks_log_step](../../../../../../../julep/api/types/tasks_log_step.py) module.
-
-- [TasksLogStep](#taskslogstep)
- - [TasksLogStep](#taskslogstep-1)
-
-## TasksLogStep
-
-[Show source in tasks_log_step.py:11](../../../../../../../julep/api/types/tasks_log_step.py#L11)
-
-#### Signature
-
-```python
-class TasksLogStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksLogStep().dict
-
-[Show source in tasks_log_step.py:25](../../../../../../../julep/api/types/tasks_log_step.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksLogStep().json
-
-[Show source in tasks_log_step.py:17](../../../../../../../julep/api/types/tasks_log_step.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_map_over.md b/docs/python-sdk-docs/julep/api/types/tasks_map_over.md
deleted file mode 100644
index af877ed87..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_map_over.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksMapOver
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksMapOver
-
-> Auto-generated documentation for [julep.api.types.tasks_map_over](../../../../../../../julep/api/types/tasks_map_over.py) module.
-
-- [TasksMapOver](#tasksmapover)
- - [TasksMapOver](#tasksmapover-1)
-
-## TasksMapOver
-
-[Show source in tasks_map_over.py:11](../../../../../../../julep/api/types/tasks_map_over.py#L11)
-
-#### Signature
-
-```python
-class TasksMapOver(pydantic_v1.BaseModel): ...
-```
-
-### TasksMapOver().dict
-
-[Show source in tasks_map_over.py:30](../../../../../../../julep/api/types/tasks_map_over.py#L30)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksMapOver().json
-
-[Show source in tasks_map_over.py:22](../../../../../../../julep/api/types/tasks_map_over.py#L22)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_map_reduce_step.md b/docs/python-sdk-docs/julep/api/types/tasks_map_reduce_step.md
deleted file mode 100644
index 15fe7be42..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_map_reduce_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksMapReduceStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksMapReduceStep
-
-> Auto-generated documentation for [julep.api.types.tasks_map_reduce_step](../../../../../../../julep/api/types/tasks_map_reduce_step.py) module.
-
-- [TasksMapReduceStep](#tasksmapreducestep)
- - [TasksMapReduceStep](#tasksmapreducestep-1)
-
-## TasksMapReduceStep
-
-[Show source in tasks_map_reduce_step.py:12](../../../../../../../julep/api/types/tasks_map_reduce_step.py#L12)
-
-#### Signature
-
-```python
-class TasksMapReduceStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksMapReduceStep().dict
-
-[Show source in tasks_map_reduce_step.py:31](../../../../../../../julep/api/types/tasks_map_reduce_step.py#L31)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksMapReduceStep().json
-
-[Show source in tasks_map_reduce_step.py:23](../../../../../../../julep/api/types/tasks_map_reduce_step.py#L23)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_parallel_step.md b/docs/python-sdk-docs/julep/api/types/tasks_parallel_step.md
deleted file mode 100644
index 3c2c08d7d..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_parallel_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksParallelStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksParallelStep
-
-> Auto-generated documentation for [julep.api.types.tasks_parallel_step](../../../../../../../julep/api/types/tasks_parallel_step.py) module.
-
-- [TasksParallelStep](#tasksparallelstep)
- - [TasksParallelStep](#tasksparallelstep-1)
-
-## TasksParallelStep
-
-[Show source in tasks_parallel_step.py:11](../../../../../../../julep/api/types/tasks_parallel_step.py#L11)
-
-#### Signature
-
-```python
-class TasksParallelStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksParallelStep().dict
-
-[Show source in tasks_parallel_step.py:25](../../../../../../../julep/api/types/tasks_parallel_step.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksParallelStep().json
-
-[Show source in tasks_parallel_step.py:17](../../../../../../../julep/api/types/tasks_parallel_step.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_parallel_step_parallel_item.md b/docs/python-sdk-docs/julep/api/types/tasks_parallel_step_parallel_item.md
deleted file mode 100644
index 6ac00488b..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_parallel_step_parallel_item.md
+++ /dev/null
@@ -1,434 +0,0 @@
-# Tasks Parallel Step Parallel Item
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tasks Parallel Step Parallel Item
-
-> Auto-generated documentation for [julep.api.types.tasks_parallel_step_parallel_item](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py) module.
-
-- [Tasks Parallel Step Parallel Item](#tasks-parallel-step-parallel-item)
- - [TasksParallelStepParallelItem_Embed](#tasksparallelstepparallelitem_embed)
- - [TasksParallelStepParallelItem_Error](#tasksparallelstepparallelitem_error)
- - [TasksParallelStepParallelItem_Evaluate](#tasksparallelstepparallelitem_evaluate)
- - [TasksParallelStepParallelItem_Get](#tasksparallelstepparallelitem_get)
- - [TasksParallelStepParallelItem_Log](#tasksparallelstepparallelitem_log)
- - [TasksParallelStepParallelItem_Prompt](#tasksparallelstepparallelitem_prompt)
- - [TasksParallelStepParallelItem_Return](#tasksparallelstepparallelitem_return)
- - [TasksParallelStepParallelItem_Search](#tasksparallelstepparallelitem_search)
- - [TasksParallelStepParallelItem_Set](#tasksparallelstepparallelitem_set)
- - [TasksParallelStepParallelItem_Sleep](#tasksparallelstepparallelitem_sleep)
- - [TasksParallelStepParallelItem_ToolCall](#tasksparallelstepparallelitem_toolcall)
- - [TasksParallelStepParallelItem_WaitForInput](#tasksparallelstepparallelitem_waitforinput)
- - [TasksParallelStepParallelItem_Yield](#tasksparallelstepparallelitem_yield)
-
-## TasksParallelStepParallelItem_Embed
-
-[Show source in tasks_parallel_step_parallel_item.py:407](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L407)
-
-#### Signature
-
-```python
-class TasksParallelStepParallelItem_Embed(pydantic_v1.BaseModel): ...
-```
-
-### TasksParallelStepParallelItem_Embed().dict
-
-[Show source in tasks_parallel_step_parallel_item.py:419](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L419)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksParallelStepParallelItem_Embed().json
-
-[Show source in tasks_parallel_step_parallel_item.py:411](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L411)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksParallelStepParallelItem_Error
-
-[Show source in tasks_parallel_step_parallel_item.py:179](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L179)
-
-#### Signature
-
-```python
-class TasksParallelStepParallelItem_Error(pydantic_v1.BaseModel): ...
-```
-
-### TasksParallelStepParallelItem_Error().dict
-
-[Show source in tasks_parallel_step_parallel_item.py:191](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L191)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksParallelStepParallelItem_Error().json
-
-[Show source in tasks_parallel_step_parallel_item.py:183](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L183)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksParallelStepParallelItem_Evaluate
-
-[Show source in tasks_parallel_step_parallel_item.py:20](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L20)
-
-#### Signature
-
-```python
-class TasksParallelStepParallelItem_Evaluate(pydantic_v1.BaseModel): ...
-```
-
-### TasksParallelStepParallelItem_Evaluate().dict
-
-[Show source in tasks_parallel_step_parallel_item.py:34](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L34)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksParallelStepParallelItem_Evaluate().json
-
-[Show source in tasks_parallel_step_parallel_item.py:26](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L26)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksParallelStepParallelItem_Get
-
-[Show source in tasks_parallel_step_parallel_item.py:293](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L293)
-
-#### Signature
-
-```python
-class TasksParallelStepParallelItem_Get(pydantic_v1.BaseModel): ...
-```
-
-### TasksParallelStepParallelItem_Get().dict
-
-[Show source in tasks_parallel_step_parallel_item.py:305](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L305)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksParallelStepParallelItem_Get().json
-
-[Show source in tasks_parallel_step_parallel_item.py:297](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L297)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksParallelStepParallelItem_Log
-
-[Show source in tasks_parallel_step_parallel_item.py:369](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L369)
-
-#### Signature
-
-```python
-class TasksParallelStepParallelItem_Log(pydantic_v1.BaseModel): ...
-```
-
-### TasksParallelStepParallelItem_Log().dict
-
-[Show source in tasks_parallel_step_parallel_item.py:381](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L381)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksParallelStepParallelItem_Log().json
-
-[Show source in tasks_parallel_step_parallel_item.py:373](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L373)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksParallelStepParallelItem_Prompt
-
-[Show source in tasks_parallel_step_parallel_item.py:140](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L140)
-
-#### Signature
-
-```python
-class TasksParallelStepParallelItem_Prompt(pydantic_v1.BaseModel): ...
-```
-
-### TasksParallelStepParallelItem_Prompt().dict
-
-[Show source in tasks_parallel_step_parallel_item.py:153](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L153)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksParallelStepParallelItem_Prompt().json
-
-[Show source in tasks_parallel_step_parallel_item.py:145](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L145)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksParallelStepParallelItem_Return
-
-[Show source in tasks_parallel_step_parallel_item.py:255](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L255)
-
-#### Signature
-
-```python
-class TasksParallelStepParallelItem_Return(pydantic_v1.BaseModel): ...
-```
-
-### TasksParallelStepParallelItem_Return().dict
-
-[Show source in tasks_parallel_step_parallel_item.py:267](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L267)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksParallelStepParallelItem_Return().json
-
-[Show source in tasks_parallel_step_parallel_item.py:259](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L259)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksParallelStepParallelItem_Search
-
-[Show source in tasks_parallel_step_parallel_item.py:445](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L445)
-
-#### Signature
-
-```python
-class TasksParallelStepParallelItem_Search(pydantic_v1.BaseModel): ...
-```
-
-### TasksParallelStepParallelItem_Search().dict
-
-[Show source in tasks_parallel_step_parallel_item.py:457](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L457)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksParallelStepParallelItem_Search().json
-
-[Show source in tasks_parallel_step_parallel_item.py:449](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L449)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksParallelStepParallelItem_Set
-
-[Show source in tasks_parallel_step_parallel_item.py:331](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L331)
-
-#### Signature
-
-```python
-class TasksParallelStepParallelItem_Set(pydantic_v1.BaseModel): ...
-```
-
-### TasksParallelStepParallelItem_Set().dict
-
-[Show source in tasks_parallel_step_parallel_item.py:343](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L343)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksParallelStepParallelItem_Set().json
-
-[Show source in tasks_parallel_step_parallel_item.py:335](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L335)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksParallelStepParallelItem_Sleep
-
-[Show source in tasks_parallel_step_parallel_item.py:217](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L217)
-
-#### Signature
-
-```python
-class TasksParallelStepParallelItem_Sleep(pydantic_v1.BaseModel): ...
-```
-
-### TasksParallelStepParallelItem_Sleep().dict
-
-[Show source in tasks_parallel_step_parallel_item.py:229](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L229)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksParallelStepParallelItem_Sleep().json
-
-[Show source in tasks_parallel_step_parallel_item.py:221](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L221)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksParallelStepParallelItem_ToolCall
-
-[Show source in tasks_parallel_step_parallel_item.py:60](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L60)
-
-#### Signature
-
-```python
-class TasksParallelStepParallelItem_ToolCall(pydantic_v1.BaseModel): ...
-```
-
-### TasksParallelStepParallelItem_ToolCall().dict
-
-[Show source in tasks_parallel_step_parallel_item.py:75](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L75)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksParallelStepParallelItem_ToolCall().json
-
-[Show source in tasks_parallel_step_parallel_item.py:67](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L67)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksParallelStepParallelItem_WaitForInput
-
-[Show source in tasks_parallel_step_parallel_item.py:483](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L483)
-
-#### Signature
-
-```python
-class TasksParallelStepParallelItem_WaitForInput(pydantic_v1.BaseModel): ...
-```
-
-### TasksParallelStepParallelItem_WaitForInput().dict
-
-[Show source in tasks_parallel_step_parallel_item.py:497](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L497)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksParallelStepParallelItem_WaitForInput().json
-
-[Show source in tasks_parallel_step_parallel_item.py:489](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L489)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksParallelStepParallelItem_Yield
-
-[Show source in tasks_parallel_step_parallel_item.py:101](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L101)
-
-#### Signature
-
-```python
-class TasksParallelStepParallelItem_Yield(pydantic_v1.BaseModel): ...
-```
-
-### TasksParallelStepParallelItem_Yield().dict
-
-[Show source in tasks_parallel_step_parallel_item.py:114](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L114)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksParallelStepParallelItem_Yield().json
-
-[Show source in tasks_parallel_step_parallel_item.py:106](../../../../../../../julep/api/types/tasks_parallel_step_parallel_item.py#L106)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_patch_task_request_main_item.md b/docs/python-sdk-docs/julep/api/types/tasks_patch_task_request_main_item.md
deleted file mode 100644
index de1078439..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_patch_task_request_main_item.md
+++ /dev/null
@@ -1,599 +0,0 @@
-# Tasks Patch Task Request Main Item
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tasks Patch Task Request Main Item
-
-> Auto-generated documentation for [julep.api.types.tasks_patch_task_request_main_item](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py) module.
-
-- [Tasks Patch Task Request Main Item](#tasks-patch-task-request-main-item)
- - [TasksPatchTaskRequestMainItem_Embed](#taskspatchtaskrequestmainitem_embed)
- - [TasksPatchTaskRequestMainItem_Error](#taskspatchtaskrequestmainitem_error)
- - [TasksPatchTaskRequestMainItem_Evaluate](#taskspatchtaskrequestmainitem_evaluate)
- - [TasksPatchTaskRequestMainItem_Foreach](#taskspatchtaskrequestmainitem_foreach)
- - [TasksPatchTaskRequestMainItem_Get](#taskspatchtaskrequestmainitem_get)
- - [TasksPatchTaskRequestMainItem_IfElse](#taskspatchtaskrequestmainitem_ifelse)
- - [TasksPatchTaskRequestMainItem_Log](#taskspatchtaskrequestmainitem_log)
- - [TasksPatchTaskRequestMainItem_MapReduce](#taskspatchtaskrequestmainitem_mapreduce)
- - [TasksPatchTaskRequestMainItem_Parallel](#taskspatchtaskrequestmainitem_parallel)
- - [TasksPatchTaskRequestMainItem_Prompt](#taskspatchtaskrequestmainitem_prompt)
- - [TasksPatchTaskRequestMainItem_Return](#taskspatchtaskrequestmainitem_return)
- - [TasksPatchTaskRequestMainItem_Search](#taskspatchtaskrequestmainitem_search)
- - [TasksPatchTaskRequestMainItem_Set](#taskspatchtaskrequestmainitem_set)
- - [TasksPatchTaskRequestMainItem_Sleep](#taskspatchtaskrequestmainitem_sleep)
- - [TasksPatchTaskRequestMainItem_Switch](#taskspatchtaskrequestmainitem_switch)
- - [TasksPatchTaskRequestMainItem_ToolCall](#taskspatchtaskrequestmainitem_toolcall)
- - [TasksPatchTaskRequestMainItem_WaitForInput](#taskspatchtaskrequestmainitem_waitforinput)
- - [TasksPatchTaskRequestMainItem_Yield](#taskspatchtaskrequestmainitem_yield)
-
-## TasksPatchTaskRequestMainItem_Embed
-
-[Show source in tasks_patch_task_request_main_item.py:413](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L413)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_Embed(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_Embed().dict
-
-[Show source in tasks_patch_task_request_main_item.py:425](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L425)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_Embed().json
-
-[Show source in tasks_patch_task_request_main_item.py:417](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L417)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_Error
-
-[Show source in tasks_patch_task_request_main_item.py:185](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L185)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_Error(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_Error().dict
-
-[Show source in tasks_patch_task_request_main_item.py:197](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L197)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_Error().json
-
-[Show source in tasks_patch_task_request_main_item.py:189](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L189)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_Evaluate
-
-[Show source in tasks_patch_task_request_main_item.py:26](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L26)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_Evaluate(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_Evaluate().dict
-
-[Show source in tasks_patch_task_request_main_item.py:40](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L40)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_Evaluate().json
-
-[Show source in tasks_patch_task_request_main_item.py:32](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L32)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_Foreach
-
-[Show source in tasks_patch_task_request_main_item.py:609](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L609)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_Foreach(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_Foreach().dict
-
-[Show source in tasks_patch_task_request_main_item.py:623](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L623)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_Foreach().json
-
-[Show source in tasks_patch_task_request_main_item.py:615](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L615)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_Get
-
-[Show source in tasks_patch_task_request_main_item.py:299](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L299)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_Get(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_Get().dict
-
-[Show source in tasks_patch_task_request_main_item.py:311](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L311)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_Get().json
-
-[Show source in tasks_patch_task_request_main_item.py:303](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L303)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_IfElse
-
-[Show source in tasks_patch_task_request_main_item.py:529](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L529)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_IfElse(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_IfElse().dict
-
-[Show source in tasks_patch_task_request_main_item.py:545](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L545)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_IfElse().json
-
-[Show source in tasks_patch_task_request_main_item.py:537](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L537)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_Log
-
-[Show source in tasks_patch_task_request_main_item.py:375](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L375)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_Log(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_Log().dict
-
-[Show source in tasks_patch_task_request_main_item.py:387](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L387)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_Log().json
-
-[Show source in tasks_patch_task_request_main_item.py:379](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L379)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_MapReduce
-
-[Show source in tasks_patch_task_request_main_item.py:689](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L689)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_MapReduce(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_MapReduce().dict
-
-[Show source in tasks_patch_task_request_main_item.py:704](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L704)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_MapReduce().json
-
-[Show source in tasks_patch_task_request_main_item.py:696](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L696)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_Parallel
-
-[Show source in tasks_patch_task_request_main_item.py:649](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L649)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_Parallel(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_Parallel().dict
-
-[Show source in tasks_patch_task_request_main_item.py:663](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L663)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_Parallel().json
-
-[Show source in tasks_patch_task_request_main_item.py:655](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L655)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_Prompt
-
-[Show source in tasks_patch_task_request_main_item.py:146](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L146)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_Prompt(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_Prompt().dict
-
-[Show source in tasks_patch_task_request_main_item.py:159](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L159)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_Prompt().json
-
-[Show source in tasks_patch_task_request_main_item.py:151](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L151)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_Return
-
-[Show source in tasks_patch_task_request_main_item.py:261](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L261)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_Return(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_Return().dict
-
-[Show source in tasks_patch_task_request_main_item.py:273](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L273)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_Return().json
-
-[Show source in tasks_patch_task_request_main_item.py:265](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L265)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_Search
-
-[Show source in tasks_patch_task_request_main_item.py:451](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L451)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_Search(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_Search().dict
-
-[Show source in tasks_patch_task_request_main_item.py:463](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L463)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_Search().json
-
-[Show source in tasks_patch_task_request_main_item.py:455](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L455)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_Set
-
-[Show source in tasks_patch_task_request_main_item.py:337](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L337)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_Set(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_Set().dict
-
-[Show source in tasks_patch_task_request_main_item.py:349](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L349)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_Set().json
-
-[Show source in tasks_patch_task_request_main_item.py:341](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L341)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_Sleep
-
-[Show source in tasks_patch_task_request_main_item.py:223](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L223)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_Sleep(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_Sleep().dict
-
-[Show source in tasks_patch_task_request_main_item.py:235](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L235)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_Sleep().json
-
-[Show source in tasks_patch_task_request_main_item.py:227](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L227)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_Switch
-
-[Show source in tasks_patch_task_request_main_item.py:571](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L571)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_Switch(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_Switch().dict
-
-[Show source in tasks_patch_task_request_main_item.py:583](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L583)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_Switch().json
-
-[Show source in tasks_patch_task_request_main_item.py:575](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L575)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_ToolCall
-
-[Show source in tasks_patch_task_request_main_item.py:66](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L66)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_ToolCall(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_ToolCall().dict
-
-[Show source in tasks_patch_task_request_main_item.py:81](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L81)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_ToolCall().json
-
-[Show source in tasks_patch_task_request_main_item.py:73](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L73)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_WaitForInput
-
-[Show source in tasks_patch_task_request_main_item.py:489](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L489)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_WaitForInput(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_WaitForInput().dict
-
-[Show source in tasks_patch_task_request_main_item.py:503](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L503)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_WaitForInput().json
-
-[Show source in tasks_patch_task_request_main_item.py:495](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L495)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksPatchTaskRequestMainItem_Yield
-
-[Show source in tasks_patch_task_request_main_item.py:107](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L107)
-
-#### Signature
-
-```python
-class TasksPatchTaskRequestMainItem_Yield(pydantic_v1.BaseModel): ...
-```
-
-### TasksPatchTaskRequestMainItem_Yield().dict
-
-[Show source in tasks_patch_task_request_main_item.py:120](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L120)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPatchTaskRequestMainItem_Yield().json
-
-[Show source in tasks_patch_task_request_main_item.py:112](../../../../../../../julep/api/types/tasks_patch_task_request_main_item.py#L112)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_prompt_step.md b/docs/python-sdk-docs/julep/api/types/tasks_prompt_step.md
deleted file mode 100644
index aead87f7b..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_prompt_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksPromptStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksPromptStep
-
-> Auto-generated documentation for [julep.api.types.tasks_prompt_step](../../../../../../../julep/api/types/tasks_prompt_step.py) module.
-
-- [TasksPromptStep](#taskspromptstep)
- - [TasksPromptStep](#taskspromptstep-1)
-
-## TasksPromptStep
-
-[Show source in tasks_prompt_step.py:12](../../../../../../../julep/api/types/tasks_prompt_step.py#L12)
-
-#### Signature
-
-```python
-class TasksPromptStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksPromptStep().dict
-
-[Show source in tasks_prompt_step.py:31](../../../../../../../julep/api/types/tasks_prompt_step.py#L31)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksPromptStep().json
-
-[Show source in tasks_prompt_step.py:23](../../../../../../../julep/api/types/tasks_prompt_step.py#L23)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_prompt_step_prompt.md b/docs/python-sdk-docs/julep/api/types/tasks_prompt_step_prompt.md
deleted file mode 100644
index dcaf88924..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_prompt_step_prompt.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Tasks Prompt Step Prompt
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tasks Prompt Step Prompt
-
-> Auto-generated documentation for [julep.api.types.tasks_prompt_step_prompt](../../../../../../../julep/api/types/tasks_prompt_step_prompt.py) module.
-- [Tasks Prompt Step Prompt](#tasks-prompt-step-prompt)
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_return_step.md b/docs/python-sdk-docs/julep/api/types/tasks_return_step.md
deleted file mode 100644
index 6ffe79f9a..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_return_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksReturnStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksReturnStep
-
-> Auto-generated documentation for [julep.api.types.tasks_return_step](../../../../../../../julep/api/types/tasks_return_step.py) module.
-
-- [TasksReturnStep](#tasksreturnstep)
- - [TasksReturnStep](#tasksreturnstep-1)
-
-## TasksReturnStep
-
-[Show source in tasks_return_step.py:11](../../../../../../../julep/api/types/tasks_return_step.py#L11)
-
-#### Signature
-
-```python
-class TasksReturnStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksReturnStep().dict
-
-[Show source in tasks_return_step.py:25](../../../../../../../julep/api/types/tasks_return_step.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksReturnStep().json
-
-[Show source in tasks_return_step.py:17](../../../../../../../julep/api/types/tasks_return_step.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_route_list_request_direction.md b/docs/python-sdk-docs/julep/api/types/tasks_route_list_request_direction.md
deleted file mode 100644
index a770714c2..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_route_list_request_direction.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Tasks Route List Request Direction
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tasks Route List Request Direction
-
-> Auto-generated documentation for [julep.api.types.tasks_route_list_request_direction](../../../../../../../julep/api/types/tasks_route_list_request_direction.py) module.
-- [Tasks Route List Request Direction](#tasks-route-list-request-direction)
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_route_list_request_sort_by.md b/docs/python-sdk-docs/julep/api/types/tasks_route_list_request_sort_by.md
deleted file mode 100644
index 6724a2a5e..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_route_list_request_sort_by.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Tasks Route List Request Sort By
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tasks Route List Request Sort By
-
-> Auto-generated documentation for [julep.api.types.tasks_route_list_request_sort_by](../../../../../../../julep/api/types/tasks_route_list_request_sort_by.py) module.
-- [Tasks Route List Request Sort By](#tasks-route-list-request-sort-by)
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_route_list_response.md b/docs/python-sdk-docs/julep/api/types/tasks_route_list_response.md
deleted file mode 100644
index 567d53784..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_route_list_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksRouteListResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksRouteListResponse
-
-> Auto-generated documentation for [julep.api.types.tasks_route_list_response](../../../../../../../julep/api/types/tasks_route_list_response.py) module.
-
-- [TasksRouteListResponse](#tasksroutelistresponse)
- - [TasksRouteListResponse](#tasksroutelistresponse-1)
-
-## TasksRouteListResponse
-
-[Show source in tasks_route_list_response.py:11](../../../../../../../julep/api/types/tasks_route_list_response.py#L11)
-
-#### Signature
-
-```python
-class TasksRouteListResponse(pydantic_v1.BaseModel): ...
-```
-
-### TasksRouteListResponse().dict
-
-[Show source in tasks_route_list_response.py:22](../../../../../../../julep/api/types/tasks_route_list_response.py#L22)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksRouteListResponse().json
-
-[Show source in tasks_route_list_response.py:14](../../../../../../../julep/api/types/tasks_route_list_response.py#L14)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_search_step.md b/docs/python-sdk-docs/julep/api/types/tasks_search_step.md
deleted file mode 100644
index 261961a32..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_search_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksSearchStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksSearchStep
-
-> Auto-generated documentation for [julep.api.types.tasks_search_step](../../../../../../../julep/api/types/tasks_search_step.py) module.
-
-- [TasksSearchStep](#taskssearchstep)
- - [TasksSearchStep](#taskssearchstep-1)
-
-## TasksSearchStep
-
-[Show source in tasks_search_step.py:11](../../../../../../../julep/api/types/tasks_search_step.py#L11)
-
-#### Signature
-
-```python
-class TasksSearchStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksSearchStep().dict
-
-[Show source in tasks_search_step.py:25](../../../../../../../julep/api/types/tasks_search_step.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksSearchStep().json
-
-[Show source in tasks_search_step.py:17](../../../../../../../julep/api/types/tasks_search_step.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_search_step_search.md b/docs/python-sdk-docs/julep/api/types/tasks_search_step_search.md
deleted file mode 100644
index 3a493bb23..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_search_step_search.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Tasks Search Step Search
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tasks Search Step Search
-
-> Auto-generated documentation for [julep.api.types.tasks_search_step_search](../../../../../../../julep/api/types/tasks_search_step_search.py) module.
-- [Tasks Search Step Search](#tasks-search-step-search)
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_set_key.md b/docs/python-sdk-docs/julep/api/types/tasks_set_key.md
deleted file mode 100644
index 38598bcf3..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_set_key.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksSetKey
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksSetKey
-
-> Auto-generated documentation for [julep.api.types.tasks_set_key](../../../../../../../julep/api/types/tasks_set_key.py) module.
-
-- [TasksSetKey](#taskssetkey)
- - [TasksSetKey](#taskssetkey-1)
-
-## TasksSetKey
-
-[Show source in tasks_set_key.py:11](../../../../../../../julep/api/types/tasks_set_key.py#L11)
-
-#### Signature
-
-```python
-class TasksSetKey(pydantic_v1.BaseModel): ...
-```
-
-### TasksSetKey().dict
-
-[Show source in tasks_set_key.py:30](../../../../../../../julep/api/types/tasks_set_key.py#L30)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksSetKey().json
-
-[Show source in tasks_set_key.py:22](../../../../../../../julep/api/types/tasks_set_key.py#L22)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_set_step.md b/docs/python-sdk-docs/julep/api/types/tasks_set_step.md
deleted file mode 100644
index e8de84022..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_set_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksSetStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksSetStep
-
-> Auto-generated documentation for [julep.api.types.tasks_set_step](../../../../../../../julep/api/types/tasks_set_step.py) module.
-
-- [TasksSetStep](#taskssetstep)
- - [TasksSetStep](#taskssetstep-1)
-
-## TasksSetStep
-
-[Show source in tasks_set_step.py:11](../../../../../../../julep/api/types/tasks_set_step.py#L11)
-
-#### Signature
-
-```python
-class TasksSetStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksSetStep().dict
-
-[Show source in tasks_set_step.py:25](../../../../../../../julep/api/types/tasks_set_step.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksSetStep().json
-
-[Show source in tasks_set_step.py:17](../../../../../../../julep/api/types/tasks_set_step.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_set_step_set.md b/docs/python-sdk-docs/julep/api/types/tasks_set_step_set.md
deleted file mode 100644
index 142512310..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_set_step_set.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Tasks Set Step Set
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tasks Set Step Set
-
-> Auto-generated documentation for [julep.api.types.tasks_set_step_set](../../../../../../../julep/api/types/tasks_set_step_set.py) module.
-- [Tasks Set Step Set](#tasks-set-step-set)
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_sleep_for.md b/docs/python-sdk-docs/julep/api/types/tasks_sleep_for.md
deleted file mode 100644
index 884627663..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_sleep_for.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksSleepFor
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksSleepFor
-
-> Auto-generated documentation for [julep.api.types.tasks_sleep_for](../../../../../../../julep/api/types/tasks_sleep_for.py) module.
-
-- [TasksSleepFor](#taskssleepfor)
- - [TasksSleepFor](#taskssleepfor-1)
-
-## TasksSleepFor
-
-[Show source in tasks_sleep_for.py:10](../../../../../../../julep/api/types/tasks_sleep_for.py#L10)
-
-#### Signature
-
-```python
-class TasksSleepFor(pydantic_v1.BaseModel): ...
-```
-
-### TasksSleepFor().dict
-
-[Show source in tasks_sleep_for.py:39](../../../../../../../julep/api/types/tasks_sleep_for.py#L39)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksSleepFor().json
-
-[Show source in tasks_sleep_for.py:31](../../../../../../../julep/api/types/tasks_sleep_for.py#L31)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_sleep_step.md b/docs/python-sdk-docs/julep/api/types/tasks_sleep_step.md
deleted file mode 100644
index b286704b0..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_sleep_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksSleepStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksSleepStep
-
-> Auto-generated documentation for [julep.api.types.tasks_sleep_step](../../../../../../../julep/api/types/tasks_sleep_step.py) module.
-
-- [TasksSleepStep](#taskssleepstep)
- - [TasksSleepStep](#taskssleepstep-1)
-
-## TasksSleepStep
-
-[Show source in tasks_sleep_step.py:11](../../../../../../../julep/api/types/tasks_sleep_step.py#L11)
-
-#### Signature
-
-```python
-class TasksSleepStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksSleepStep().dict
-
-[Show source in tasks_sleep_step.py:25](../../../../../../../julep/api/types/tasks_sleep_step.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksSleepStep().json
-
-[Show source in tasks_sleep_step.py:17](../../../../../../../julep/api/types/tasks_sleep_step.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_switch_step.md b/docs/python-sdk-docs/julep/api/types/tasks_switch_step.md
deleted file mode 100644
index ac6daef52..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_switch_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksSwitchStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksSwitchStep
-
-> Auto-generated documentation for [julep.api.types.tasks_switch_step](../../../../../../../julep/api/types/tasks_switch_step.py) module.
-
-- [TasksSwitchStep](#tasksswitchstep)
- - [TasksSwitchStep](#tasksswitchstep-1)
-
-## TasksSwitchStep
-
-[Show source in tasks_switch_step.py:11](../../../../../../../julep/api/types/tasks_switch_step.py#L11)
-
-#### Signature
-
-```python
-class TasksSwitchStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksSwitchStep().dict
-
-[Show source in tasks_switch_step.py:25](../../../../../../../julep/api/types/tasks_switch_step.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksSwitchStep().json
-
-[Show source in tasks_switch_step.py:17](../../../../../../../julep/api/types/tasks_switch_step.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_task.md b/docs/python-sdk-docs/julep/api/types/tasks_task.md
deleted file mode 100644
index 64d55c76d..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_task.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# TasksTask
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksTask
-
-> Auto-generated documentation for [julep.api.types.tasks_task](../../../../../../../julep/api/types/tasks_task.py) module.
-
-- [TasksTask](#taskstask)
- - [TasksTask](#taskstask-1)
-
-## TasksTask
-
-[Show source in tasks_task.py:13](../../../../../../../julep/api/types/tasks_task.py#L13)
-
-Object describing a Task
-
-#### Signature
-
-```python
-class TasksTask(pydantic_v1.BaseModel): ...
-```
-
-### TasksTask().dict
-
-[Show source in tasks_task.py:63](../../../../../../../julep/api/types/tasks_task.py#L63)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTask().json
-
-[Show source in tasks_task.py:55](../../../../../../../julep/api/types/tasks_task.py#L55)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_task_main_item.md b/docs/python-sdk-docs/julep/api/types/tasks_task_main_item.md
deleted file mode 100644
index ae12a2f50..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_task_main_item.md
+++ /dev/null
@@ -1,599 +0,0 @@
-# Tasks Task Main Item
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tasks Task Main Item
-
-> Auto-generated documentation for [julep.api.types.tasks_task_main_item](../../../../../../../julep/api/types/tasks_task_main_item.py) module.
-
-- [Tasks Task Main Item](#tasks-task-main-item)
- - [TasksTaskMainItem_Embed](#taskstaskmainitem_embed)
- - [TasksTaskMainItem_Error](#taskstaskmainitem_error)
- - [TasksTaskMainItem_Evaluate](#taskstaskmainitem_evaluate)
- - [TasksTaskMainItem_Foreach](#taskstaskmainitem_foreach)
- - [TasksTaskMainItem_Get](#taskstaskmainitem_get)
- - [TasksTaskMainItem_IfElse](#taskstaskmainitem_ifelse)
- - [TasksTaskMainItem_Log](#taskstaskmainitem_log)
- - [TasksTaskMainItem_MapReduce](#taskstaskmainitem_mapreduce)
- - [TasksTaskMainItem_Parallel](#taskstaskmainitem_parallel)
- - [TasksTaskMainItem_Prompt](#taskstaskmainitem_prompt)
- - [TasksTaskMainItem_Return](#taskstaskmainitem_return)
- - [TasksTaskMainItem_Search](#taskstaskmainitem_search)
- - [TasksTaskMainItem_Set](#taskstaskmainitem_set)
- - [TasksTaskMainItem_Sleep](#taskstaskmainitem_sleep)
- - [TasksTaskMainItem_Switch](#taskstaskmainitem_switch)
- - [TasksTaskMainItem_ToolCall](#taskstaskmainitem_toolcall)
- - [TasksTaskMainItem_WaitForInput](#taskstaskmainitem_waitforinput)
- - [TasksTaskMainItem_Yield](#taskstaskmainitem_yield)
-
-## TasksTaskMainItem_Embed
-
-[Show source in tasks_task_main_item.py:413](../../../../../../../julep/api/types/tasks_task_main_item.py#L413)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_Embed(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_Embed().dict
-
-[Show source in tasks_task_main_item.py:425](../../../../../../../julep/api/types/tasks_task_main_item.py#L425)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_Embed().json
-
-[Show source in tasks_task_main_item.py:417](../../../../../../../julep/api/types/tasks_task_main_item.py#L417)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_Error
-
-[Show source in tasks_task_main_item.py:185](../../../../../../../julep/api/types/tasks_task_main_item.py#L185)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_Error(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_Error().dict
-
-[Show source in tasks_task_main_item.py:197](../../../../../../../julep/api/types/tasks_task_main_item.py#L197)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_Error().json
-
-[Show source in tasks_task_main_item.py:189](../../../../../../../julep/api/types/tasks_task_main_item.py#L189)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_Evaluate
-
-[Show source in tasks_task_main_item.py:26](../../../../../../../julep/api/types/tasks_task_main_item.py#L26)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_Evaluate(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_Evaluate().dict
-
-[Show source in tasks_task_main_item.py:40](../../../../../../../julep/api/types/tasks_task_main_item.py#L40)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_Evaluate().json
-
-[Show source in tasks_task_main_item.py:32](../../../../../../../julep/api/types/tasks_task_main_item.py#L32)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_Foreach
-
-[Show source in tasks_task_main_item.py:609](../../../../../../../julep/api/types/tasks_task_main_item.py#L609)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_Foreach(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_Foreach().dict
-
-[Show source in tasks_task_main_item.py:623](../../../../../../../julep/api/types/tasks_task_main_item.py#L623)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_Foreach().json
-
-[Show source in tasks_task_main_item.py:615](../../../../../../../julep/api/types/tasks_task_main_item.py#L615)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_Get
-
-[Show source in tasks_task_main_item.py:299](../../../../../../../julep/api/types/tasks_task_main_item.py#L299)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_Get(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_Get().dict
-
-[Show source in tasks_task_main_item.py:311](../../../../../../../julep/api/types/tasks_task_main_item.py#L311)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_Get().json
-
-[Show source in tasks_task_main_item.py:303](../../../../../../../julep/api/types/tasks_task_main_item.py#L303)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_IfElse
-
-[Show source in tasks_task_main_item.py:529](../../../../../../../julep/api/types/tasks_task_main_item.py#L529)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_IfElse(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_IfElse().dict
-
-[Show source in tasks_task_main_item.py:545](../../../../../../../julep/api/types/tasks_task_main_item.py#L545)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_IfElse().json
-
-[Show source in tasks_task_main_item.py:537](../../../../../../../julep/api/types/tasks_task_main_item.py#L537)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_Log
-
-[Show source in tasks_task_main_item.py:375](../../../../../../../julep/api/types/tasks_task_main_item.py#L375)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_Log(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_Log().dict
-
-[Show source in tasks_task_main_item.py:387](../../../../../../../julep/api/types/tasks_task_main_item.py#L387)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_Log().json
-
-[Show source in tasks_task_main_item.py:379](../../../../../../../julep/api/types/tasks_task_main_item.py#L379)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_MapReduce
-
-[Show source in tasks_task_main_item.py:689](../../../../../../../julep/api/types/tasks_task_main_item.py#L689)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_MapReduce(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_MapReduce().dict
-
-[Show source in tasks_task_main_item.py:704](../../../../../../../julep/api/types/tasks_task_main_item.py#L704)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_MapReduce().json
-
-[Show source in tasks_task_main_item.py:696](../../../../../../../julep/api/types/tasks_task_main_item.py#L696)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_Parallel
-
-[Show source in tasks_task_main_item.py:649](../../../../../../../julep/api/types/tasks_task_main_item.py#L649)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_Parallel(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_Parallel().dict
-
-[Show source in tasks_task_main_item.py:663](../../../../../../../julep/api/types/tasks_task_main_item.py#L663)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_Parallel().json
-
-[Show source in tasks_task_main_item.py:655](../../../../../../../julep/api/types/tasks_task_main_item.py#L655)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_Prompt
-
-[Show source in tasks_task_main_item.py:146](../../../../../../../julep/api/types/tasks_task_main_item.py#L146)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_Prompt(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_Prompt().dict
-
-[Show source in tasks_task_main_item.py:159](../../../../../../../julep/api/types/tasks_task_main_item.py#L159)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_Prompt().json
-
-[Show source in tasks_task_main_item.py:151](../../../../../../../julep/api/types/tasks_task_main_item.py#L151)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_Return
-
-[Show source in tasks_task_main_item.py:261](../../../../../../../julep/api/types/tasks_task_main_item.py#L261)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_Return(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_Return().dict
-
-[Show source in tasks_task_main_item.py:273](../../../../../../../julep/api/types/tasks_task_main_item.py#L273)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_Return().json
-
-[Show source in tasks_task_main_item.py:265](../../../../../../../julep/api/types/tasks_task_main_item.py#L265)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_Search
-
-[Show source in tasks_task_main_item.py:451](../../../../../../../julep/api/types/tasks_task_main_item.py#L451)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_Search(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_Search().dict
-
-[Show source in tasks_task_main_item.py:463](../../../../../../../julep/api/types/tasks_task_main_item.py#L463)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_Search().json
-
-[Show source in tasks_task_main_item.py:455](../../../../../../../julep/api/types/tasks_task_main_item.py#L455)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_Set
-
-[Show source in tasks_task_main_item.py:337](../../../../../../../julep/api/types/tasks_task_main_item.py#L337)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_Set(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_Set().dict
-
-[Show source in tasks_task_main_item.py:349](../../../../../../../julep/api/types/tasks_task_main_item.py#L349)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_Set().json
-
-[Show source in tasks_task_main_item.py:341](../../../../../../../julep/api/types/tasks_task_main_item.py#L341)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_Sleep
-
-[Show source in tasks_task_main_item.py:223](../../../../../../../julep/api/types/tasks_task_main_item.py#L223)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_Sleep(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_Sleep().dict
-
-[Show source in tasks_task_main_item.py:235](../../../../../../../julep/api/types/tasks_task_main_item.py#L235)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_Sleep().json
-
-[Show source in tasks_task_main_item.py:227](../../../../../../../julep/api/types/tasks_task_main_item.py#L227)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_Switch
-
-[Show source in tasks_task_main_item.py:571](../../../../../../../julep/api/types/tasks_task_main_item.py#L571)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_Switch(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_Switch().dict
-
-[Show source in tasks_task_main_item.py:583](../../../../../../../julep/api/types/tasks_task_main_item.py#L583)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_Switch().json
-
-[Show source in tasks_task_main_item.py:575](../../../../../../../julep/api/types/tasks_task_main_item.py#L575)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_ToolCall
-
-[Show source in tasks_task_main_item.py:66](../../../../../../../julep/api/types/tasks_task_main_item.py#L66)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_ToolCall(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_ToolCall().dict
-
-[Show source in tasks_task_main_item.py:81](../../../../../../../julep/api/types/tasks_task_main_item.py#L81)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_ToolCall().json
-
-[Show source in tasks_task_main_item.py:73](../../../../../../../julep/api/types/tasks_task_main_item.py#L73)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_WaitForInput
-
-[Show source in tasks_task_main_item.py:489](../../../../../../../julep/api/types/tasks_task_main_item.py#L489)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_WaitForInput(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_WaitForInput().dict
-
-[Show source in tasks_task_main_item.py:503](../../../../../../../julep/api/types/tasks_task_main_item.py#L503)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_WaitForInput().json
-
-[Show source in tasks_task_main_item.py:495](../../../../../../../julep/api/types/tasks_task_main_item.py#L495)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksTaskMainItem_Yield
-
-[Show source in tasks_task_main_item.py:107](../../../../../../../julep/api/types/tasks_task_main_item.py#L107)
-
-#### Signature
-
-```python
-class TasksTaskMainItem_Yield(pydantic_v1.BaseModel): ...
-```
-
-### TasksTaskMainItem_Yield().dict
-
-[Show source in tasks_task_main_item.py:120](../../../../../../../julep/api/types/tasks_task_main_item.py#L120)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskMainItem_Yield().json
-
-[Show source in tasks_task_main_item.py:112](../../../../../../../julep/api/types/tasks_task_main_item.py#L112)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_task_tool.md b/docs/python-sdk-docs/julep/api/types/tasks_task_tool.md
deleted file mode 100644
index 7be0648db..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_task_tool.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksTaskTool
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksTaskTool
-
-> Auto-generated documentation for [julep.api.types.tasks_task_tool](../../../../../../../julep/api/types/tasks_task_tool.py) module.
-
-- [TasksTaskTool](#taskstasktool)
- - [TasksTaskTool](#taskstasktool-1)
-
-## TasksTaskTool
-
-[Show source in tasks_task_tool.py:11](../../../../../../../julep/api/types/tasks_task_tool.py#L11)
-
-#### Signature
-
-```python
-class TasksTaskTool(ToolsCreateToolRequest): ...
-```
-
-### TasksTaskTool().dict
-
-[Show source in tasks_task_tool.py:25](../../../../../../../julep/api/types/tasks_task_tool.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksTaskTool().json
-
-[Show source in tasks_task_tool.py:17](../../../../../../../julep/api/types/tasks_task_tool.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_tool_call_step.md b/docs/python-sdk-docs/julep/api/types/tasks_tool_call_step.md
deleted file mode 100644
index 871140201..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_tool_call_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksToolCallStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksToolCallStep
-
-> Auto-generated documentation for [julep.api.types.tasks_tool_call_step](../../../../../../../julep/api/types/tasks_tool_call_step.py) module.
-
-- [TasksToolCallStep](#taskstoolcallstep)
- - [TasksToolCallStep](#taskstoolcallstep-1)
-
-## TasksToolCallStep
-
-[Show source in tasks_tool_call_step.py:12](../../../../../../../julep/api/types/tasks_tool_call_step.py#L12)
-
-#### Signature
-
-```python
-class TasksToolCallStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksToolCallStep().dict
-
-[Show source in tasks_tool_call_step.py:31](../../../../../../../julep/api/types/tasks_tool_call_step.py#L31)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksToolCallStep().json
-
-[Show source in tasks_tool_call_step.py:23](../../../../../../../julep/api/types/tasks_tool_call_step.py#L23)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_update_task_request_main_item.md b/docs/python-sdk-docs/julep/api/types/tasks_update_task_request_main_item.md
deleted file mode 100644
index e0a8569f9..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_update_task_request_main_item.md
+++ /dev/null
@@ -1,599 +0,0 @@
-# Tasks Update Task Request Main Item
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tasks Update Task Request Main Item
-
-> Auto-generated documentation for [julep.api.types.tasks_update_task_request_main_item](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py) module.
-
-- [Tasks Update Task Request Main Item](#tasks-update-task-request-main-item)
- - [TasksUpdateTaskRequestMainItem_Embed](#tasksupdatetaskrequestmainitem_embed)
- - [TasksUpdateTaskRequestMainItem_Error](#tasksupdatetaskrequestmainitem_error)
- - [TasksUpdateTaskRequestMainItem_Evaluate](#tasksupdatetaskrequestmainitem_evaluate)
- - [TasksUpdateTaskRequestMainItem_Foreach](#tasksupdatetaskrequestmainitem_foreach)
- - [TasksUpdateTaskRequestMainItem_Get](#tasksupdatetaskrequestmainitem_get)
- - [TasksUpdateTaskRequestMainItem_IfElse](#tasksupdatetaskrequestmainitem_ifelse)
- - [TasksUpdateTaskRequestMainItem_Log](#tasksupdatetaskrequestmainitem_log)
- - [TasksUpdateTaskRequestMainItem_MapReduce](#tasksupdatetaskrequestmainitem_mapreduce)
- - [TasksUpdateTaskRequestMainItem_Parallel](#tasksupdatetaskrequestmainitem_parallel)
- - [TasksUpdateTaskRequestMainItem_Prompt](#tasksupdatetaskrequestmainitem_prompt)
- - [TasksUpdateTaskRequestMainItem_Return](#tasksupdatetaskrequestmainitem_return)
- - [TasksUpdateTaskRequestMainItem_Search](#tasksupdatetaskrequestmainitem_search)
- - [TasksUpdateTaskRequestMainItem_Set](#tasksupdatetaskrequestmainitem_set)
- - [TasksUpdateTaskRequestMainItem_Sleep](#tasksupdatetaskrequestmainitem_sleep)
- - [TasksUpdateTaskRequestMainItem_Switch](#tasksupdatetaskrequestmainitem_switch)
- - [TasksUpdateTaskRequestMainItem_ToolCall](#tasksupdatetaskrequestmainitem_toolcall)
- - [TasksUpdateTaskRequestMainItem_WaitForInput](#tasksupdatetaskrequestmainitem_waitforinput)
- - [TasksUpdateTaskRequestMainItem_Yield](#tasksupdatetaskrequestmainitem_yield)
-
-## TasksUpdateTaskRequestMainItem_Embed
-
-[Show source in tasks_update_task_request_main_item.py:413](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L413)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_Embed(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_Embed().dict
-
-[Show source in tasks_update_task_request_main_item.py:425](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L425)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_Embed().json
-
-[Show source in tasks_update_task_request_main_item.py:417](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L417)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_Error
-
-[Show source in tasks_update_task_request_main_item.py:185](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L185)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_Error(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_Error().dict
-
-[Show source in tasks_update_task_request_main_item.py:197](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L197)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_Error().json
-
-[Show source in tasks_update_task_request_main_item.py:189](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L189)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_Evaluate
-
-[Show source in tasks_update_task_request_main_item.py:26](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L26)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_Evaluate(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_Evaluate().dict
-
-[Show source in tasks_update_task_request_main_item.py:40](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L40)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_Evaluate().json
-
-[Show source in tasks_update_task_request_main_item.py:32](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L32)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_Foreach
-
-[Show source in tasks_update_task_request_main_item.py:609](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L609)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_Foreach(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_Foreach().dict
-
-[Show source in tasks_update_task_request_main_item.py:623](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L623)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_Foreach().json
-
-[Show source in tasks_update_task_request_main_item.py:615](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L615)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_Get
-
-[Show source in tasks_update_task_request_main_item.py:299](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L299)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_Get(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_Get().dict
-
-[Show source in tasks_update_task_request_main_item.py:311](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L311)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_Get().json
-
-[Show source in tasks_update_task_request_main_item.py:303](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L303)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_IfElse
-
-[Show source in tasks_update_task_request_main_item.py:529](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L529)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_IfElse(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_IfElse().dict
-
-[Show source in tasks_update_task_request_main_item.py:545](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L545)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_IfElse().json
-
-[Show source in tasks_update_task_request_main_item.py:537](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L537)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_Log
-
-[Show source in tasks_update_task_request_main_item.py:375](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L375)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_Log(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_Log().dict
-
-[Show source in tasks_update_task_request_main_item.py:387](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L387)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_Log().json
-
-[Show source in tasks_update_task_request_main_item.py:379](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L379)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_MapReduce
-
-[Show source in tasks_update_task_request_main_item.py:689](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L689)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_MapReduce(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_MapReduce().dict
-
-[Show source in tasks_update_task_request_main_item.py:704](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L704)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_MapReduce().json
-
-[Show source in tasks_update_task_request_main_item.py:696](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L696)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_Parallel
-
-[Show source in tasks_update_task_request_main_item.py:649](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L649)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_Parallel(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_Parallel().dict
-
-[Show source in tasks_update_task_request_main_item.py:663](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L663)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_Parallel().json
-
-[Show source in tasks_update_task_request_main_item.py:655](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L655)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_Prompt
-
-[Show source in tasks_update_task_request_main_item.py:146](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L146)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_Prompt(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_Prompt().dict
-
-[Show source in tasks_update_task_request_main_item.py:159](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L159)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_Prompt().json
-
-[Show source in tasks_update_task_request_main_item.py:151](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L151)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_Return
-
-[Show source in tasks_update_task_request_main_item.py:261](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L261)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_Return(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_Return().dict
-
-[Show source in tasks_update_task_request_main_item.py:273](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L273)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_Return().json
-
-[Show source in tasks_update_task_request_main_item.py:265](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L265)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_Search
-
-[Show source in tasks_update_task_request_main_item.py:451](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L451)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_Search(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_Search().dict
-
-[Show source in tasks_update_task_request_main_item.py:463](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L463)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_Search().json
-
-[Show source in tasks_update_task_request_main_item.py:455](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L455)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_Set
-
-[Show source in tasks_update_task_request_main_item.py:337](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L337)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_Set(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_Set().dict
-
-[Show source in tasks_update_task_request_main_item.py:349](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L349)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_Set().json
-
-[Show source in tasks_update_task_request_main_item.py:341](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L341)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_Sleep
-
-[Show source in tasks_update_task_request_main_item.py:223](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L223)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_Sleep(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_Sleep().dict
-
-[Show source in tasks_update_task_request_main_item.py:235](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L235)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_Sleep().json
-
-[Show source in tasks_update_task_request_main_item.py:227](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L227)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_Switch
-
-[Show source in tasks_update_task_request_main_item.py:571](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L571)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_Switch(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_Switch().dict
-
-[Show source in tasks_update_task_request_main_item.py:583](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L583)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_Switch().json
-
-[Show source in tasks_update_task_request_main_item.py:575](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L575)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_ToolCall
-
-[Show source in tasks_update_task_request_main_item.py:66](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L66)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_ToolCall(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_ToolCall().dict
-
-[Show source in tasks_update_task_request_main_item.py:81](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L81)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_ToolCall().json
-
-[Show source in tasks_update_task_request_main_item.py:73](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L73)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_WaitForInput
-
-[Show source in tasks_update_task_request_main_item.py:489](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L489)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_WaitForInput(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_WaitForInput().dict
-
-[Show source in tasks_update_task_request_main_item.py:503](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L503)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_WaitForInput().json
-
-[Show source in tasks_update_task_request_main_item.py:495](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L495)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## TasksUpdateTaskRequestMainItem_Yield
-
-[Show source in tasks_update_task_request_main_item.py:107](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L107)
-
-#### Signature
-
-```python
-class TasksUpdateTaskRequestMainItem_Yield(pydantic_v1.BaseModel): ...
-```
-
-### TasksUpdateTaskRequestMainItem_Yield().dict
-
-[Show source in tasks_update_task_request_main_item.py:120](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L120)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksUpdateTaskRequestMainItem_Yield().json
-
-[Show source in tasks_update_task_request_main_item.py:112](../../../../../../../julep/api/types/tasks_update_task_request_main_item.py#L112)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_wait_for_input_step.md b/docs/python-sdk-docs/julep/api/types/tasks_wait_for_input_step.md
deleted file mode 100644
index 94949a2f6..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_wait_for_input_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksWaitForInputStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksWaitForInputStep
-
-> Auto-generated documentation for [julep.api.types.tasks_wait_for_input_step](../../../../../../../julep/api/types/tasks_wait_for_input_step.py) module.
-
-- [TasksWaitForInputStep](#taskswaitforinputstep)
- - [TasksWaitForInputStep](#taskswaitforinputstep-1)
-
-## TasksWaitForInputStep
-
-[Show source in tasks_wait_for_input_step.py:11](../../../../../../../julep/api/types/tasks_wait_for_input_step.py#L11)
-
-#### Signature
-
-```python
-class TasksWaitForInputStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksWaitForInputStep().dict
-
-[Show source in tasks_wait_for_input_step.py:25](../../../../../../../julep/api/types/tasks_wait_for_input_step.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksWaitForInputStep().json
-
-[Show source in tasks_wait_for_input_step.py:17](../../../../../../../julep/api/types/tasks_wait_for_input_step.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tasks_yield_step.md b/docs/python-sdk-docs/julep/api/types/tasks_yield_step.md
deleted file mode 100644
index fb4038462..000000000
--- a/docs/python-sdk-docs/julep/api/types/tasks_yield_step.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# TasksYieldStep
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / TasksYieldStep
-
-> Auto-generated documentation for [julep.api.types.tasks_yield_step](../../../../../../../julep/api/types/tasks_yield_step.py) module.
-
-- [TasksYieldStep](#tasksyieldstep)
- - [TasksYieldStep](#tasksyieldstep-1)
-
-## TasksYieldStep
-
-[Show source in tasks_yield_step.py:11](../../../../../../../julep/api/types/tasks_yield_step.py#L11)
-
-#### Signature
-
-```python
-class TasksYieldStep(pydantic_v1.BaseModel): ...
-```
-
-### TasksYieldStep().dict
-
-[Show source in tasks_yield_step.py:30](../../../../../../../julep/api/types/tasks_yield_step.py#L30)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### TasksYieldStep().json
-
-[Show source in tasks_yield_step.py:22](../../../../../../../julep/api/types/tasks_yield_step.py#L22)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tools_chosen_function_call.md b/docs/python-sdk-docs/julep/api/types/tools_chosen_function_call.md
deleted file mode 100644
index e07a53092..000000000
--- a/docs/python-sdk-docs/julep/api/types/tools_chosen_function_call.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ToolsChosenFunctionCall
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ToolsChosenFunctionCall
-
-> Auto-generated documentation for [julep.api.types.tools_chosen_function_call](../../../../../../../julep/api/types/tools_chosen_function_call.py) module.
-
-- [ToolsChosenFunctionCall](#toolschosenfunctioncall)
- - [ToolsChosenFunctionCall](#toolschosenfunctioncall-1)
-
-## ToolsChosenFunctionCall
-
-[Show source in tools_chosen_function_call.py:11](../../../../../../../julep/api/types/tools_chosen_function_call.py#L11)
-
-#### Signature
-
-```python
-class ToolsChosenFunctionCall(pydantic_v1.BaseModel): ...
-```
-
-### ToolsChosenFunctionCall().dict
-
-[Show source in tools_chosen_function_call.py:25](../../../../../../../julep/api/types/tools_chosen_function_call.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ToolsChosenFunctionCall().json
-
-[Show source in tools_chosen_function_call.py:17](../../../../../../../julep/api/types/tools_chosen_function_call.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tools_chosen_tool_call.md b/docs/python-sdk-docs/julep/api/types/tools_chosen_tool_call.md
deleted file mode 100644
index 676f843f8..000000000
--- a/docs/python-sdk-docs/julep/api/types/tools_chosen_tool_call.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# Tools Chosen Tool Call
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tools Chosen Tool Call
-
-> Auto-generated documentation for [julep.api.types.tools_chosen_tool_call](../../../../../../../julep/api/types/tools_chosen_tool_call.py) module.
-
-- [Tools Chosen Tool Call](#tools-chosen-tool-call)
- - [Base](#base)
- - [ToolsChosenToolCall_Function](#toolschosentoolcall_function)
-
-## Base
-
-[Show source in tools_chosen_tool_call.py:14](../../../../../../../julep/api/types/tools_chosen_tool_call.py#L14)
-
-#### Signature
-
-```python
-class Base(pydantic_v1.BaseModel): ...
-```
-
-### Base().dict
-
-[Show source in tools_chosen_tool_call.py:29](../../../../../../../julep/api/types/tools_chosen_tool_call.py#L29)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### Base().json
-
-[Show source in tools_chosen_tool_call.py:21](../../../../../../../julep/api/types/tools_chosen_tool_call.py#L21)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## ToolsChosenToolCall_Function
-
-[Show source in tools_chosen_tool_call.py:53](../../../../../../../julep/api/types/tools_chosen_tool_call.py#L53)
-
-The response tool value generated by the model
-
-#### Signature
-
-```python
-class ToolsChosenToolCall_Function(Base): ...
-```
-
-#### See also
-
-- [Base](#base)
-
-### ToolsChosenToolCall_Function().dict
-
-[Show source in tools_chosen_tool_call.py:69](../../../../../../../julep/api/types/tools_chosen_tool_call.py#L69)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ToolsChosenToolCall_Function().json
-
-[Show source in tools_chosen_tool_call.py:61](../../../../../../../julep/api/types/tools_chosen_tool_call.py#L61)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tools_create_tool_request.md b/docs/python-sdk-docs/julep/api/types/tools_create_tool_request.md
deleted file mode 100644
index 7fb2bcb10..000000000
--- a/docs/python-sdk-docs/julep/api/types/tools_create_tool_request.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# ToolsCreateToolRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ToolsCreateToolRequest
-
-> Auto-generated documentation for [julep.api.types.tools_create_tool_request](../../../../../../../julep/api/types/tools_create_tool_request.py) module.
-
-- [ToolsCreateToolRequest](#toolscreatetoolrequest)
- - [ToolsCreateToolRequest](#toolscreatetoolrequest-1)
-
-## ToolsCreateToolRequest
-
-[Show source in tools_create_tool_request.py:13](../../../../../../../julep/api/types/tools_create_tool_request.py#L13)
-
-Payload for creating a tool
-
-#### Signature
-
-```python
-class ToolsCreateToolRequest(pydantic_v1.BaseModel): ...
-```
-
-### ToolsCreateToolRequest().dict
-
-[Show source in tools_create_tool_request.py:41](../../../../../../../julep/api/types/tools_create_tool_request.py#L41)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ToolsCreateToolRequest().json
-
-[Show source in tools_create_tool_request.py:33](../../../../../../../julep/api/types/tools_create_tool_request.py#L33)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tools_function_call_option.md b/docs/python-sdk-docs/julep/api/types/tools_function_call_option.md
deleted file mode 100644
index 277b38b40..000000000
--- a/docs/python-sdk-docs/julep/api/types/tools_function_call_option.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ToolsFunctionCallOption
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ToolsFunctionCallOption
-
-> Auto-generated documentation for [julep.api.types.tools_function_call_option](../../../../../../../julep/api/types/tools_function_call_option.py) module.
-
-- [ToolsFunctionCallOption](#toolsfunctioncalloption)
- - [ToolsFunctionCallOption](#toolsfunctioncalloption-1)
-
-## ToolsFunctionCallOption
-
-[Show source in tools_function_call_option.py:10](../../../../../../../julep/api/types/tools_function_call_option.py#L10)
-
-#### Signature
-
-```python
-class ToolsFunctionCallOption(pydantic_v1.BaseModel): ...
-```
-
-### ToolsFunctionCallOption().dict
-
-[Show source in tools_function_call_option.py:24](../../../../../../../julep/api/types/tools_function_call_option.py#L24)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ToolsFunctionCallOption().json
-
-[Show source in tools_function_call_option.py:16](../../../../../../../julep/api/types/tools_function_call_option.py#L16)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tools_function_def.md b/docs/python-sdk-docs/julep/api/types/tools_function_def.md
deleted file mode 100644
index f08e87dae..000000000
--- a/docs/python-sdk-docs/julep/api/types/tools_function_def.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# ToolsFunctionDef
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ToolsFunctionDef
-
-> Auto-generated documentation for [julep.api.types.tools_function_def](../../../../../../../julep/api/types/tools_function_def.py) module.
-
-- [ToolsFunctionDef](#toolsfunctiondef)
- - [ToolsFunctionDef](#toolsfunctiondef-1)
-
-## ToolsFunctionDef
-
-[Show source in tools_function_def.py:11](../../../../../../../julep/api/types/tools_function_def.py#L11)
-
-Function definition
-
-#### Signature
-
-```python
-class ToolsFunctionDef(pydantic_v1.BaseModel): ...
-```
-
-### ToolsFunctionDef().dict
-
-[Show source in tools_function_def.py:39](../../../../../../../julep/api/types/tools_function_def.py#L39)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ToolsFunctionDef().json
-
-[Show source in tools_function_def.py:31](../../../../../../../julep/api/types/tools_function_def.py#L31)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tools_function_tool.md b/docs/python-sdk-docs/julep/api/types/tools_function_tool.md
deleted file mode 100644
index 5ef4f60a5..000000000
--- a/docs/python-sdk-docs/julep/api/types/tools_function_tool.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ToolsFunctionTool
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ToolsFunctionTool
-
-> Auto-generated documentation for [julep.api.types.tools_function_tool](../../../../../../../julep/api/types/tools_function_tool.py) module.
-
-- [ToolsFunctionTool](#toolsfunctiontool)
- - [ToolsFunctionTool](#toolsfunctiontool-1)
-
-## ToolsFunctionTool
-
-[Show source in tools_function_tool.py:11](../../../../../../../julep/api/types/tools_function_tool.py#L11)
-
-#### Signature
-
-```python
-class ToolsFunctionTool(pydantic_v1.BaseModel): ...
-```
-
-### ToolsFunctionTool().dict
-
-[Show source in tools_function_tool.py:26](../../../../../../../julep/api/types/tools_function_tool.py#L26)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ToolsFunctionTool().json
-
-[Show source in tools_function_tool.py:18](../../../../../../../julep/api/types/tools_function_tool.py#L18)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tools_named_function_choice.md b/docs/python-sdk-docs/julep/api/types/tools_named_function_choice.md
deleted file mode 100644
index 388aed5dc..000000000
--- a/docs/python-sdk-docs/julep/api/types/tools_named_function_choice.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ToolsNamedFunctionChoice
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ToolsNamedFunctionChoice
-
-> Auto-generated documentation for [julep.api.types.tools_named_function_choice](../../../../../../../julep/api/types/tools_named_function_choice.py) module.
-
-- [ToolsNamedFunctionChoice](#toolsnamedfunctionchoice)
- - [ToolsNamedFunctionChoice](#toolsnamedfunctionchoice-1)
-
-## ToolsNamedFunctionChoice
-
-[Show source in tools_named_function_choice.py:11](../../../../../../../julep/api/types/tools_named_function_choice.py#L11)
-
-#### Signature
-
-```python
-class ToolsNamedFunctionChoice(pydantic_v1.BaseModel): ...
-```
-
-### ToolsNamedFunctionChoice().dict
-
-[Show source in tools_named_function_choice.py:25](../../../../../../../julep/api/types/tools_named_function_choice.py#L25)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ToolsNamedFunctionChoice().json
-
-[Show source in tools_named_function_choice.py:17](../../../../../../../julep/api/types/tools_named_function_choice.py#L17)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tools_named_tool_choice.md b/docs/python-sdk-docs/julep/api/types/tools_named_tool_choice.md
deleted file mode 100644
index 67ac8f4c2..000000000
--- a/docs/python-sdk-docs/julep/api/types/tools_named_tool_choice.md
+++ /dev/null
@@ -1,75 +0,0 @@
-# Tools Named Tool Choice
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tools Named Tool Choice
-
-> Auto-generated documentation for [julep.api.types.tools_named_tool_choice](../../../../../../../julep/api/types/tools_named_tool_choice.py) module.
-
-- [Tools Named Tool Choice](#tools-named-tool-choice)
- - [Base](#base)
- - [ToolsNamedToolChoice_Function](#toolsnamedtoolchoice_function)
-
-## Base
-
-[Show source in tools_named_tool_choice.py:13](../../../../../../../julep/api/types/tools_named_tool_choice.py#L13)
-
-#### Signature
-
-```python
-class Base(pydantic_v1.BaseModel): ...
-```
-
-### Base().dict
-
-[Show source in tools_named_tool_choice.py:27](../../../../../../../julep/api/types/tools_named_tool_choice.py#L27)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### Base().json
-
-[Show source in tools_named_tool_choice.py:19](../../../../../../../julep/api/types/tools_named_tool_choice.py#L19)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## ToolsNamedToolChoice_Function
-
-[Show source in tools_named_tool_choice.py:51](../../../../../../../julep/api/types/tools_named_tool_choice.py#L51)
-
-#### Signature
-
-```python
-class ToolsNamedToolChoice_Function(Base): ...
-```
-
-#### See also
-
-- [Base](#base)
-
-### ToolsNamedToolChoice_Function().dict
-
-[Show source in tools_named_tool_choice.py:63](../../../../../../../julep/api/types/tools_named_tool_choice.py#L63)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ToolsNamedToolChoice_Function().json
-
-[Show source in tools_named_tool_choice.py:55](../../../../../../../julep/api/types/tools_named_tool_choice.py#L55)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tools_tool.md b/docs/python-sdk-docs/julep/api/types/tools_tool.md
deleted file mode 100644
index 4d33f1985..000000000
--- a/docs/python-sdk-docs/julep/api/types/tools_tool.md
+++ /dev/null
@@ -1,75 +0,0 @@
-# Tools Tool
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tools Tool
-
-> Auto-generated documentation for [julep.api.types.tools_tool](../../../../../../../julep/api/types/tools_tool.py) module.
-
-- [Tools Tool](#tools-tool)
- - [Base](#base)
- - [ToolsTool_Function](#toolstool_function)
-
-## Base
-
-[Show source in tools_tool.py:16](../../../../../../../julep/api/types/tools_tool.py#L16)
-
-#### Signature
-
-```python
-class Base(pydantic_v1.BaseModel): ...
-```
-
-### Base().dict
-
-[Show source in tools_tool.py:46](../../../../../../../julep/api/types/tools_tool.py#L46)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### Base().json
-
-[Show source in tools_tool.py:38](../../../../../../../julep/api/types/tools_tool.py#L38)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
-
-
-
-## ToolsTool_Function
-
-[Show source in tools_tool.py:70](../../../../../../../julep/api/types/tools_tool.py#L70)
-
-#### Signature
-
-```python
-class ToolsTool_Function(Base): ...
-```
-
-#### See also
-
-- [Base](#base)
-
-### ToolsTool_Function().dict
-
-[Show source in tools_tool.py:83](../../../../../../../julep/api/types/tools_tool.py#L83)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ToolsTool_Function().json
-
-[Show source in tools_tool.py:75](../../../../../../../julep/api/types/tools_tool.py#L75)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tools_tool_response.md b/docs/python-sdk-docs/julep/api/types/tools_tool_response.md
deleted file mode 100644
index 7655fb126..000000000
--- a/docs/python-sdk-docs/julep/api/types/tools_tool_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# ToolsToolResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / ToolsToolResponse
-
-> Auto-generated documentation for [julep.api.types.tools_tool_response](../../../../../../../julep/api/types/tools_tool_response.py) module.
-
-- [ToolsToolResponse](#toolstoolresponse)
- - [ToolsToolResponse](#toolstoolresponse-1)
-
-## ToolsToolResponse
-
-[Show source in tools_tool_response.py:11](../../../../../../../julep/api/types/tools_tool_response.py#L11)
-
-#### Signature
-
-```python
-class ToolsToolResponse(pydantic_v1.BaseModel): ...
-```
-
-### ToolsToolResponse().dict
-
-[Show source in tools_tool_response.py:26](../../../../../../../julep/api/types/tools_tool_response.py#L26)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### ToolsToolResponse().json
-
-[Show source in tools_tool_response.py:18](../../../../../../../julep/api/types/tools_tool_response.py#L18)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/tools_tool_type.md b/docs/python-sdk-docs/julep/api/types/tools_tool_type.md
deleted file mode 100644
index 704512b7d..000000000
--- a/docs/python-sdk-docs/julep/api/types/tools_tool_type.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Tools Tool Type
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Tools Tool Type
-
-> Auto-generated documentation for [julep.api.types.tools_tool_type](../../../../../../../julep/api/types/tools_tool_type.py) module.
-- [Tools Tool Type](#tools-tool-type)
diff --git a/docs/python-sdk-docs/julep/api/types/user_docs_route_list_request_direction.md b/docs/python-sdk-docs/julep/api/types/user_docs_route_list_request_direction.md
deleted file mode 100644
index 942657be7..000000000
--- a/docs/python-sdk-docs/julep/api/types/user_docs_route_list_request_direction.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# User Docs Route List Request Direction
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / User Docs Route List Request Direction
-
-> Auto-generated documentation for [julep.api.types.user_docs_route_list_request_direction](../../../../../../../julep/api/types/user_docs_route_list_request_direction.py) module.
-- [User Docs Route List Request Direction](#user-docs-route-list-request-direction)
diff --git a/docs/python-sdk-docs/julep/api/types/user_docs_route_list_request_sort_by.md b/docs/python-sdk-docs/julep/api/types/user_docs_route_list_request_sort_by.md
deleted file mode 100644
index 49add30a0..000000000
--- a/docs/python-sdk-docs/julep/api/types/user_docs_route_list_request_sort_by.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# User Docs Route List Request Sort By
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / User Docs Route List Request Sort By
-
-> Auto-generated documentation for [julep.api.types.user_docs_route_list_request_sort_by](../../../../../../../julep/api/types/user_docs_route_list_request_sort_by.py) module.
-- [User Docs Route List Request Sort By](#user-docs-route-list-request-sort-by)
diff --git a/docs/python-sdk-docs/julep/api/types/user_docs_route_list_response.md b/docs/python-sdk-docs/julep/api/types/user_docs_route_list_response.md
deleted file mode 100644
index 272cf8500..000000000
--- a/docs/python-sdk-docs/julep/api/types/user_docs_route_list_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# UserDocsRouteListResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / UserDocsRouteListResponse
-
-> Auto-generated documentation for [julep.api.types.user_docs_route_list_response](../../../../../../../julep/api/types/user_docs_route_list_response.py) module.
-
-- [UserDocsRouteListResponse](#userdocsroutelistresponse)
- - [UserDocsRouteListResponse](#userdocsroutelistresponse-1)
-
-## UserDocsRouteListResponse
-
-[Show source in user_docs_route_list_response.py:11](../../../../../../../julep/api/types/user_docs_route_list_response.py#L11)
-
-#### Signature
-
-```python
-class UserDocsRouteListResponse(pydantic_v1.BaseModel): ...
-```
-
-### UserDocsRouteListResponse().dict
-
-[Show source in user_docs_route_list_response.py:22](../../../../../../../julep/api/types/user_docs_route_list_response.py#L22)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### UserDocsRouteListResponse().json
-
-[Show source in user_docs_route_list_response.py:14](../../../../../../../julep/api/types/user_docs_route_list_response.py#L14)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/user_docs_search_route_search_request_body.md b/docs/python-sdk-docs/julep/api/types/user_docs_search_route_search_request_body.md
deleted file mode 100644
index 69e2cefff..000000000
--- a/docs/python-sdk-docs/julep/api/types/user_docs_search_route_search_request_body.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# User Docs Search Route Search Request Body
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / User Docs Search Route Search Request Body
-
-> Auto-generated documentation for [julep.api.types.user_docs_search_route_search_request_body](../../../../../../../julep/api/types/user_docs_search_route_search_request_body.py) module.
-- [User Docs Search Route Search Request Body](#user-docs-search-route-search-request-body)
diff --git a/docs/python-sdk-docs/julep/api/types/users_create_or_update_user_request.md b/docs/python-sdk-docs/julep/api/types/users_create_or_update_user_request.md
deleted file mode 100644
index 5dd9a655a..000000000
--- a/docs/python-sdk-docs/julep/api/types/users_create_or_update_user_request.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# UsersCreateOrUpdateUserRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / UsersCreateOrUpdateUserRequest
-
-> Auto-generated documentation for [julep.api.types.users_create_or_update_user_request](../../../../../../../julep/api/types/users_create_or_update_user_request.py) module.
-
-- [UsersCreateOrUpdateUserRequest](#userscreateorupdateuserrequest)
- - [UsersCreateOrUpdateUserRequest](#userscreateorupdateuserrequest-1)
-
-## UsersCreateOrUpdateUserRequest
-
-[Show source in users_create_or_update_user_request.py:12](../../../../../../../julep/api/types/users_create_or_update_user_request.py#L12)
-
-#### Signature
-
-```python
-class UsersCreateOrUpdateUserRequest(UsersCreateUserRequest): ...
-```
-
-### UsersCreateOrUpdateUserRequest().dict
-
-[Show source in users_create_or_update_user_request.py:23](../../../../../../../julep/api/types/users_create_or_update_user_request.py#L23)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### UsersCreateOrUpdateUserRequest().json
-
-[Show source in users_create_or_update_user_request.py:15](../../../../../../../julep/api/types/users_create_or_update_user_request.py#L15)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/users_create_user_request.md b/docs/python-sdk-docs/julep/api/types/users_create_user_request.md
deleted file mode 100644
index 3f765ed01..000000000
--- a/docs/python-sdk-docs/julep/api/types/users_create_user_request.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# UsersCreateUserRequest
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / UsersCreateUserRequest
-
-> Auto-generated documentation for [julep.api.types.users_create_user_request](../../../../../../../julep/api/types/users_create_user_request.py) module.
-
-- [UsersCreateUserRequest](#userscreateuserrequest)
- - [UsersCreateUserRequest](#userscreateuserrequest-1)
-
-## UsersCreateUserRequest
-
-[Show source in users_create_user_request.py:11](../../../../../../../julep/api/types/users_create_user_request.py#L11)
-
-Payload for creating a user (and associated documents)
-
-#### Signature
-
-```python
-class UsersCreateUserRequest(pydantic_v1.BaseModel): ...
-```
-
-### UsersCreateUserRequest().dict
-
-[Show source in users_create_user_request.py:35](../../../../../../../julep/api/types/users_create_user_request.py#L35)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### UsersCreateUserRequest().json
-
-[Show source in users_create_user_request.py:27](../../../../../../../julep/api/types/users_create_user_request.py#L27)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/users_route_list_request_direction.md b/docs/python-sdk-docs/julep/api/types/users_route_list_request_direction.md
deleted file mode 100644
index 977ec383d..000000000
--- a/docs/python-sdk-docs/julep/api/types/users_route_list_request_direction.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Users Route List Request Direction
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Users Route List Request Direction
-
-> Auto-generated documentation for [julep.api.types.users_route_list_request_direction](../../../../../../../julep/api/types/users_route_list_request_direction.py) module.
-- [Users Route List Request Direction](#users-route-list-request-direction)
diff --git a/docs/python-sdk-docs/julep/api/types/users_route_list_request_sort_by.md b/docs/python-sdk-docs/julep/api/types/users_route_list_request_sort_by.md
deleted file mode 100644
index a155de328..000000000
--- a/docs/python-sdk-docs/julep/api/types/users_route_list_request_sort_by.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Users Route List Request Sort By
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / Users Route List Request Sort By
-
-> Auto-generated documentation for [julep.api.types.users_route_list_request_sort_by](../../../../../../../julep/api/types/users_route_list_request_sort_by.py) module.
-- [Users Route List Request Sort By](#users-route-list-request-sort-by)
diff --git a/docs/python-sdk-docs/julep/api/types/users_route_list_response.md b/docs/python-sdk-docs/julep/api/types/users_route_list_response.md
deleted file mode 100644
index 4baec8697..000000000
--- a/docs/python-sdk-docs/julep/api/types/users_route_list_response.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# UsersRouteListResponse
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / UsersRouteListResponse
-
-> Auto-generated documentation for [julep.api.types.users_route_list_response](../../../../../../../julep/api/types/users_route_list_response.py) module.
-
-- [UsersRouteListResponse](#usersroutelistresponse)
- - [UsersRouteListResponse](#usersroutelistresponse-1)
-
-## UsersRouteListResponse
-
-[Show source in users_route_list_response.py:11](../../../../../../../julep/api/types/users_route_list_response.py#L11)
-
-#### Signature
-
-```python
-class UsersRouteListResponse(pydantic_v1.BaseModel): ...
-```
-
-### UsersRouteListResponse().dict
-
-[Show source in users_route_list_response.py:22](../../../../../../../julep/api/types/users_route_list_response.py#L22)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### UsersRouteListResponse().json
-
-[Show source in users_route_list_response.py:14](../../../../../../../julep/api/types/users_route_list_response.py#L14)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/api/types/users_user.md b/docs/python-sdk-docs/julep/api/types/users_user.md
deleted file mode 100644
index e83f75d39..000000000
--- a/docs/python-sdk-docs/julep/api/types/users_user.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# UsersUser
-
-[Julep Python SDK Index](../../../README.md#julep-python-sdk-index) / [Julep](../../index.md#julep) / [Julep Python Library](../index.md#julep-python-library) / [Types](./index.md#types) / UsersUser
-
-> Auto-generated documentation for [julep.api.types.users_user](../../../../../../../julep/api/types/users_user.py) module.
-
-- [UsersUser](#usersuser)
- - [UsersUser](#usersuser-1)
-
-## UsersUser
-
-[Show source in users_user.py:12](../../../../../../../julep/api/types/users_user.py#L12)
-
-#### Signature
-
-```python
-class UsersUser(pydantic_v1.BaseModel): ...
-```
-
-### UsersUser().dict
-
-[Show source in users_user.py:43](../../../../../../../julep/api/types/users_user.py#L43)
-
-#### Signature
-
-```python
-def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: ...
-```
-
-### UsersUser().json
-
-[Show source in users_user.py:35](../../../../../../../julep/api/types/users_user.py#L35)
-
-#### Signature
-
-```python
-def json(self, **kwargs: typing.Any) -> str: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/client.md b/docs/python-sdk-docs/julep/client.md
deleted file mode 100644
index 589c499ee..000000000
--- a/docs/python-sdk-docs/julep/client.md
+++ /dev/null
@@ -1,112 +0,0 @@
-# Client
-
-[Julep Python SDK Index](../README.md#julep-python-sdk-index) / [Julep](./index.md#julep) / Client
-
-> Auto-generated documentation for [julep.client](../../../../../julep/client.py) module.
-
-- [Client](#client)
- - [AsyncClient](#asyncclient)
- - [Client](#client-1)
-
-## AsyncClient
-
-[Show source in client.py:158](../../../../../julep/client.py#L158)
-
-A class representing an asynchronous client for interacting with various managers.
-
-This class initializes asynchronous managers for agents, users, sessions, documents, memories,
-and tools. It requires an API key and a base URL to establish a connection with the backend
-service. If these are not explicitly provided, it looks for them in the environment variables.
-
-#### Attributes
-
-- `agents` *AsyncAgentsManager* - Manager for handling agent-related interactions.
-- `users` *AsyncUsersManager* - Manager for handling user-related interactions.
-- `sessions` *AsyncSessionsManager* - Manager for handling session-related interactions.
-- `docs` *AsyncDocsManager* - Manager for handling document-related interactions.
-- `memories` *AsyncMemoriesManager* - Manager for handling memory-related interactions.
-- `tools` *AsyncToolsManager* - Manager for handling tool-related interactions.
-- `chat` *AsyncChat* - A chat manager instance for handling chat interactions (based on OpenAI client).
-- `completions` *AsyncCompletions* - A manager instance for handling completions (based on OpenAI client).
-
-#### Raises
-
-- `AssertionError` - If `api_key` or `base_url` is not provided and also not set as an
- environment variable.
-
-#### Notes
-
-The `api_key` and `base_url` can either be passed explicitly or set as environment
-variables `JULEP_API_KEY` and `JULEP_API_URL`, respectively.
-
-#### Arguments
-
-- `api_key` *Optional[str]* - The API key required to authenticate with the service.
- Defaults to the value of the `JULEP_API_KEY` environment variable.
-- `base_url` *Optional[str]* - The base URL of the API service.
- Defaults to the value of the `JULEP_API_URL` environment variable.
-- `*args` - Variable length argument list.
-- `**kwargs` - Arbitrary keyword arguments.
-
-#### Signature
-
-```python
-class AsyncClient:
- @beartype
- def __init__(
- self,
- api_key: Optional[str] = JULEP_API_KEY,
- base_url: Optional[str] = JULEP_API_URL,
- *args,
- **kwargs
- ): ...
-```
-
-
-
-## Client
-
-[Show source in client.py:40](../../../../../julep/client.py#L40)
-
-A class that encapsulates managers for different aspects of a system and provides an interface for interacting with an API.
-
-This class initializes and makes use of various manager classes to handle agents, users, sessions, documents, memories, and tools. It requires an API key and a base URL to initialize the API client that the managers will use.
-
-Attributes:
- agents (AgentsManager): A manager instance for handling agents.
- users (UsersManager): A manager instance for handling users.
- sessions (SessionsManager): A manager instance for handling sessions.
- docs (DocsManager): A manager instance for handling documents.
- memories (MemoriesManager): A manager instance for handling memories.
- tools (ToolsManager): A manager instance for handling tools.
- chat (Chat): A chat manager instance for handling chat interactions (based on OpenAI client).
- completions (Completions): A manager instance for handling completions (based on OpenAI client).
-
-Args:
- api_key (Optional[str]): The API key needed to authenticate with the API. Defaults to the JULEP_API_KEY environment variable.
- base_url (Optional[str]): The base URL for the API endpoints. Defaults to the JULEP_API_URL environment variable.
- *args: Variable length argument list.
- **kwargs: Arbitrary keyword arguments.
-
-Raises:
- AssertionError: If either `api_key` or `base_url` is not provided and not set as an environment variable.
-
-Note:
- `beartype` decorator is expected to ensure type checking on the parameters during runtime. The constants `JULEP_API_KEY` and `JULEP_API_URL` should be predefined and represent default values for the API key and base URL, respectively, which can be overridden by providing a value at instantiation.
-
-#### Signature
-
-```python
-class Client:
- @beartype
- def __init__(
- self,
- api_key: Optional[str] = JULEP_API_KEY,
- base_url: Optional[str] = JULEP_API_URL,
- timeout: int = 300,
- additional_headers: Dict[str, str] = {},
- _httpx_client: Optional[httpx.Client] = None,
- *args,
- **kwargs
- ): ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/env.md b/docs/python-sdk-docs/julep/env.md
deleted file mode 100644
index b0a6fe385..000000000
--- a/docs/python-sdk-docs/julep/env.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# Env
-
-[Julep Python SDK Index](../README.md#julep-python-sdk-index) / [Julep](./index.md#julep) / Env
-
-> Auto-generated documentation for [julep.env](../../../../../julep/env.py) module.
-
-#### Attributes
-
-- `env` - Initialize the environment variable handler.: Env()
-
-- `JULEP_API_KEY`: `Optional[str]` - Optional environment variable for the Julep API key. Defaults to None if not set.: env.str('JULEP_API_KEY', None)
-
-- `JULEP_API_URL`: `Optional[str]` - Optional environment variable for the Julep API URL. Defaults to the Julep API's default environment URL if not set.: env.str('JULEP_API_URL', JulepApiEnvironment.DEFAULT.value)
-- [Env](#env)
diff --git a/docs/python-sdk-docs/julep/index.md b/docs/python-sdk-docs/julep/index.md
deleted file mode 100644
index 956edacf9..000000000
--- a/docs/python-sdk-docs/julep/index.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Julep
-
-[Julep Python SDK Index](../README.md#julep-python-sdk-index) / Julep
-
-> Auto-generated documentation for [julep](../../../../../julep/__init__.py) module.
-
-- [Julep](#julep)
- - [Modules](#modules)
-
-## Modules
-
-- [Julep Python Library](api/index.md)
-- [Client](./client.md)
-- [Env](./env.md)
-- [Managers](managers/index.md)
-- [Utils](utils/index.md)
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/managers/agent.md b/docs/python-sdk-docs/julep/managers/agent.md
deleted file mode 100644
index aaf04fd29..000000000
--- a/docs/python-sdk-docs/julep/managers/agent.md
+++ /dev/null
@@ -1,748 +0,0 @@
-# Agent
-
-[Julep Python SDK Index](../../README.md#julep-python-sdk-index) / [Julep](../index.md#julep) / [Managers](./index.md#managers) / Agent
-
-> Auto-generated documentation for [julep.managers.agent](../../../../../../julep/managers/agent.py) module.
-
-- [Agent](#agent)
- - [AgentCreateArgs](#agentcreateargs)
- - [AgentUpdateArgs](#agentupdateargs)
- - [AgentsManager](#agentsmanager)
- - [AsyncAgentsManager](#asyncagentsmanager)
- - [BaseAgentsManager](#baseagentsmanager)
-
-## AgentCreateArgs
-
-[Show source in agent.py:41](../../../../../../julep/managers/agent.py#L41)
-
-#### Signature
-
-```python
-class AgentCreateArgs(TypedDict): ...
-```
-
-
-
-## AgentUpdateArgs
-
-[Show source in agent.py:53](../../../../../../julep/managers/agent.py#L53)
-
-#### Signature
-
-```python
-class AgentUpdateArgs(TypedDict): ...
-```
-
-
-
-## AgentsManager
-
-[Show source in agent.py:312](../../../../../../julep/managers/agent.py#L312)
-
-A class for managing agents, inheriting from [BaseAgentsManager](#baseagentsmanager).
-
-This class provides functionalities to interact with and manage agents, including creating, retrieving, listing, updating, and deleting agents. It utilizes type annotations to ensure type correctness at runtime using the `beartype` decorator.
-
-#### Methods
-
-- `get(id` - Union[str, UUID]) -> Agent:
- Retrieves an agent by its unique identifier.
-
-#### Arguments
-
-id (Union[str, UUID]): The unique identifier of the agent, which can be either a string or a UUID.
-
-- `name` *str* - The name of the agent.
-- `about` *str* - A description of the agent.
-- `instructions` *List[str]* - A list of instructions or dictionaries defining instructions.
-- `tools` *List[ToolDict], optional* - A list of dictionaries defining tools. Defaults to an empty list.
-- `functions` *List[FunctionDefDict], optional* - A list of dictionaries defining functions. Defaults to an empty list.
-- `default_settings` *DefaultSettingsDict, optional* - A dictionary of default settings. Defaults to an empty dictionary.
-- `model` *ModelName, optional* - The model name to be used. Defaults to 'julep-ai/samantha-1-turbo'.
-- `docs` *List[DocDict], optional* - A list of dictionaries defining documentation. Defaults to an empty list.
-metadata (Dict[str, Any])
-
-- `limit` *Optional[int], optional* - The maximum number of agents to retrieve. Defaults to None, meaning no limit.
-- `offset` *Optional[int], optional* - The number of agents to skip (for pagination). Defaults to None.
-
-agent_id (Union[str, UUID]): The unique identifier of the agent to be deleted.
-
-- `update(*,` *agent_id* - Union[str, UUID], about: Optional[str]=None, instructions: Optional[List[str]]=None, name: Optional[str]=None, model: Optional[str]=None, default_settings: Optional[DefaultSettingsDict]=None) -> ResourceUpdatedResponse:
- Updates an existing agent with new details.
-
-agent_id (Union[str, UUID]): The unique identifier of the agent to be updated.
-- `about` *Optional[str], optional* - A new description of the agent. Defaults to None (no change).
-- `instructions` *Optional[List[str]], optional* - A new list of instructions or dictionaries defining instructions. Defaults to None (no change).
-- `name` *Optional[str], optional* - A new name for the agent. Defaults to None (no change).
-- `model` *Optional[str], optional* - A new model name to be used. Defaults to None (no change).
-- `default_settings` *Optional[DefaultSettingsDict], optional* - A new dictionary of default settings. Defaults to None (no change).
-metadata (Dict[str, Any])
-
-#### Returns
-
-- `Agent` - The agent with the corresponding identifier.
-
-- `create(*,` *name* - str, about: str, instructions: List[str], tools: List[ToolDict]=[], functions: List[FunctionDefDict]=[], default_settings: DefaultSettingsDict={}, model: ModelName='julep-ai/samantha-1-turbo', docs: List[DocDict]=[]) -> ResourceCreatedResponse:
- Creates a new agent with the provided details.
-
-- `ResourceCreatedResponse` - The response indicating the resource (agent) was successfully created.
-
-- `list(*,` *limit* - Optional[int]=None, offset: Optional[int]=None) -> List[Agent]:
- Lists all agents with pagination support.
-
-- `List[Agent]` - A list of agents, considering the pagination parameters.
-
-- `delete(agent_id` - Union[str, UUID]):
- Deletes an agent by its unique identifier.
-
-- `ResourceUpdatedResponse` - The response indicating the resource (agent) was successfully updated.
-
-#### Signature
-
-```python
-class AgentsManager(BaseAgentsManager): ...
-```
-
-#### See also
-
-- [BaseAgentsManager](#baseagentsmanager)
-
-### AgentsManager().create
-
-[Show source in agent.py:394](../../../../../../julep/managers/agent.py#L394)
-
-Creates a new resource with the specified details.
-
-#### Arguments
-
-- `name` *str* - The name of the resource.
-- `about` *str* - A description of the resource.
-- `instructions` *List[str]* - A list of instructions or dictionaries with instruction details.
-- `tools` *List[ToolDict], optional* - A list of dictionaries with tool details. Defaults to an empty list.
-- `functions` *List[FunctionDefDict], optional* - A list of dictionaries with function definition details. Defaults to an empty list.
-- `default_settings` *DefaultSettingsDict, optional* - A dictionary with default settings. Defaults to an empty dictionary.
-- `model` *ModelName, optional* - The name of the model to use. Defaults to 'julep-ai/samantha-1-turbo'.
-- `docs` *List[DocDict], optional* - A list of dictionaries with documentation details. Defaults to an empty list.
-metadata (Dict[str, Any])
-
-#### Returns
-
-- `Agent` - An instance of the Agent with the specified details
-
-#### Notes
-
-This function is decorated with `@beartype`, which will perform runtime type checking on the arguments.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(Agent)
-def create(self, **kwargs: AgentCreateArgs) -> Agent: ...
-```
-
-#### See also
-
-- [AgentCreateArgs](#agentcreateargs)
-
-### AgentsManager().delete
-
-[Show source in agent.py:453](../../../../../../julep/managers/agent.py#L453)
-
-Delete the agent with the specified ID.
-
-Args:
- agent_id (Union[str, UUID]): The identifier of the agent to be deleted.
-
-Returns:
- The return type depends on the implementation of the `_delete` method. This will typically be `None`
- if the deletion is successful, or an error may be raised if the deletion fails.
-
-Note:
- The `@beartype` decorator is used to enforce type checking of the `agent_id` parameter.
-
-#### Signature
-
-```python
-@beartype
-def delete(self, agent_id: Union[str, UUID]): ...
-```
-
-### AgentsManager().get
-
-[Show source in agent.py:377](../../../../../../julep/managers/agent.py#L377)
-
-Retrieve an Agent object by its identifier.
-
-#### Arguments
-
-id (Union[str, UUID]): The unique identifier of the Agent to be retrieved.
-
-#### Returns
-
-- `Agent` - An instance of the Agent with the specified ID.
-
-#### Raises
-
-- `BeartypeException` - If the type of `id` is neither a string nor a UUID.
-Any exception raised by the `_get` method.
-
-#### Signature
-
-```python
-@beartype
-def get(self, id: Union[str, UUID]) -> Agent: ...
-```
-
-### AgentsManager().list
-
-[Show source in agent.py:420](../../../../../../julep/managers/agent.py#L420)
-
-List the Agent objects, possibly with pagination.
-
-#### Arguments
-
-- `limit` *Optional[int], optional* - The maximum number of Agent objects to return.
- Defaults to None, meaning no limit is applied.
-- `offset` *Optional[int], optional* - The number of initial Agent objects to skip before
- starting to collect the return list. Defaults to None,
- meaning no offset is applied.
-
-#### Returns
-
-- `List[Agent]` - A list of Agent objects.
-
-#### Raises
-
-- `BeartypeDecorHintPepParamViolation` - If the function is called with incorrect types
- for the `limit` or `offset` parameters.
-
-#### Signature
-
-```python
-@beartype
-def list(
- self,
- limit: Optional[int] = None,
- offset: Optional[int] = None,
- metadata_filter: Dict[str, Any] = {},
-) -> List[Agent]: ...
-```
-
-### AgentsManager().update
-
-[Show source in agent.py:470](../../../../../../julep/managers/agent.py#L470)
-
-Update the properties of a resource.
-
-This function updates various attributes of an existing resource based on the provided keyword arguments. All updates are optional and are applied only if the corresponding argument is given.
-
-#### Arguments
-
-agent_id (Union[str, UUID]): The identifier of the agent, either as a string or a UUID object.
-- `about` *Optional[str], optional* - A brief description of the agent. Defaults to None.
-- `instructions` *Optional[List[str]], optional* - A list of instructions or instruction dictionaries to update the agent with. Defaults to None.
-- `name` *Optional[str], optional* - The new name to assign to the agent. Defaults to None.
-- `model` *Optional[str], optional* - The model identifier to associate with the agent. Defaults to None.
-- `default_settings` *Optional[DefaultSettingsDict], optional* - A dictionary of default settings to apply to the agent. Defaults to None.
-metadata (Dict[str, Any])
-- `overwrite` *bool, optional* - Whether to overwrite the existing agent settings. Defaults to False.
-
-#### Returns
-
-- `ResourceUpdatedResponse` - An object representing the response to the update request.
-
-#### Notes
-
-This method is decorated with `beartype`, which means it enforces type annotations at runtime.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(Agent)
-def update(self, agent_id: Union[str, UUID], **kwargs: AgentUpdateArgs) -> Agent: ...
-```
-
-#### See also
-
-- [AgentUpdateArgs](#agentupdateargs)
-
-
-
-## AsyncAgentsManager
-
-[Show source in agent.py:499](../../../../../../julep/managers/agent.py#L499)
-
-A class for managing asynchronous agent operations.
-
-This class provides asynchronous methods for creating, retrieving, updating,
-listing, and deleting agents. It is a subclass of BaseAgentsManager, which
-defines the underlying functionality and structure that this class utilizes.
-
-#### Attributes
-
-None explicitly listed, as they are inherited from the [BaseAgentsManager](#baseagentsmanager) class.
-
-#### Methods
-
-get:
- Retrieves a single agent by its ID.
-
-#### Arguments
-
-id (Union[UUID, str]): The unique identifier of the agent to retrieve.
-
-- `name` *str* - The name of the agent to create.
-- `about` *str* - A description of the agent.
-- `instructions` *List[str]* - The instructions for operating the agent.
-- `tools` *List[ToolDict], optional* - An optional list of tools for the agent.
-- `functions` *List[FunctionDefDict], optional* - An optional list of functions the agent can perform.
-- `default_settings` *DefaultSettingsDict, optional* - Optional default settings for the agent.
-- `model` *ModelName, optional* - The model name to associate with the agent, defaults to 'julep-ai/samantha-1-turbo'.
-- `docs` *List[DocDict], optional* - An optional list of documents associated with the agent.
-metadata (Dict[str, Any])
-
-- `limit` *Optional[int], optional* - The maximum number of agents to retrieve.
-- `offset` *Optional[int], optional* - The number of agents to skip before starting to collect the results.
-
-agent_id (Union[str, UUID]): The unique identifier of the agent to delete.
-
-agent_id (Union[str, UUID]): The unique identifier of the agent to update.
-- `about` *Optional[str], optional* - An optional new description for the agent.
-- `instructions` *Optional[List[str]], optional* - Optional new instructions for the agent.
-- `name` *Optional[str], optional* - An optional new name for the agent.
-- `model` *Optional[str], optional* - Optional new model associated with the agent.
-- `default_settings` *Optional[DefaultSettingsDict], optional* - Optional new default settings for the agent.
-metadata (Dict[str, Any])
-
-#### Returns
-
-- `Agent` - The requested agent.
-
-create:
- Creates a new agent with the provided specifications.
-
-- `ResourceCreatedResponse` - A response indicating the agent was created successfully.
-
-list:
- Asynchronously lists agents with optional pagination and returns an awaitable object.
-
-- `List[Agent]` - A list of agents.
-
-delete:
- Asynchronously deletes an agent by its ID and returns an awaitable object.
-
-The response from the delete operation (specific return type may vary).
-
-update:
- Asynchronously updates the specified fields of an agent by its ID and returns an awaitable object.
-
-- `ResourceUpdatedResponse` - A response indicating the agent was updated successfully.
-
-#### Signature
-
-```python
-class AsyncAgentsManager(BaseAgentsManager): ...
-```
-
-#### See also
-
-- [BaseAgentsManager](#baseagentsmanager)
-
-### AsyncAgentsManager().create
-
-[Show source in agent.py:591](../../../../../../julep/managers/agent.py#L591)
-
-Create a new resource asynchronously with specified details.
-
-This function is decorated with `beartype` to ensure that arguments conform to specified types.
-
-#### Arguments
-
-- `name` *str* - The name of the resource to create.
-- `about` *str* - Information or description about the resource.
-- `instructions` *List[str]* - A list of strings or dictionaries detailing the instructions for the resource.
-- `tools` *List[ToolDict], optional* - A list of dictionaries representing the tools associated with the resource. Defaults to an empty list.
-- `functions` *List[FunctionDefDict], optional* - A list of dictionaries defining functions that can be performed with the resource. Defaults to an empty list.
-- `default_settings` *DefaultSettingsDict, optional* - A dictionary with default settings for the resource. Defaults to an empty dictionary.
-- `model` *ModelName, optional* - The model identifier to use for the resource. Defaults to 'julep-ai/samantha-1-turbo'.
-- `docs` *List[DocDict], optional* - A list of dictionaries containing documentation for the resource. Defaults to an empty list.
-metadata (Dict[str, Any])
-
-#### Returns
-
-- `Agent` - An instance of the Agent with the specified details
-
-#### Raises
-
-The exceptions that may be raised are not specified in the signature and depend on the implementation of the _create method.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(Agent)
-async def create(self, **kwargs: AgentCreateArgs) -> Agent: ...
-```
-
-#### See also
-
-- [AgentCreateArgs](#agentcreateargs)
-
-### AsyncAgentsManager().delete
-
-[Show source in agent.py:650](../../../../../../julep/managers/agent.py#L650)
-
-Asynchronously deletes an agent given its identifier.
-
-This function is decorated with @beartype to ensure type checking of the input argument at runtime.
-
-#### Arguments
-
-agent_id (Union[str, UUID]): The identifier of the agent to be deleted. Can be a string or a UUID object.
-
-#### Returns
-
-The result of the asynchronous deletion operation, which is implementation-dependent.
-
-#### Signature
-
-```python
-@beartype
-async def delete(self, agent_id: Union[str, UUID]): ...
-```
-
-### AsyncAgentsManager().get
-
-[Show source in agent.py:572](../../../../../../julep/managers/agent.py#L572)
-
-Asynchronously retrieve an Agent object by its ID.
-
-The `id` parameter can be either a UUID or a string representation of a UUID.
-
-#### Arguments
-
-id (Union[UUID, str]): The unique identifier of the Agent to retrieve.
-
-#### Returns
-
-- `Agent` - The Agent object associated with the given id.
-
-#### Raises
-
-- `Beartype` *exceptions* - If the input id does not conform to the specified types.
-- `Other` *exceptions* - Depending on the implementation of the `_get` method.
-
-#### Signature
-
-```python
-@beartype
-async def get(self, id: Union[UUID, str]) -> Agent: ...
-```
-
-### AsyncAgentsManager().list
-
-[Show source in agent.py:619](../../../../../../julep/managers/agent.py#L619)
-
-Asynchronously lists agents with optional limit and offset.
-
-This method wraps the call to a private method '_list_items' which performs the actual listing
-of agent items. It uses the 'beartype' decorator for runtime type checking.
-
-#### Arguments
-
-- `limit` *Optional[int], optional* - The maximum number of agent items to return. Defaults to None, which means no limit.
-- `offset` *Optional[int], optional* - The offset from where to start the listing. Defaults to None, which means start from the beginning.
-
-#### Returns
-
-- `List[Agent]` - A list of agent items collected based on the provided 'limit' and 'offset' parameters.
-
-#### Signature
-
-```python
-@beartype
-async def list(
- self,
- limit: Optional[int] = None,
- offset: Optional[int] = None,
- metadata_filter: Dict[str, Any] = {},
-) -> List[Agent]: ...
-```
-
-### AsyncAgentsManager().update
-
-[Show source in agent.py:665](../../../../../../julep/managers/agent.py#L665)
-
-Asynchronously update an agent's details.
-
-This function is decorated with `beartype` to enforce the type checking of parameters. It updates the properties of the agent identified by `agent_id`.
-
-#### Arguments
-
-agent_id (Union[str, UUID]): Unique identifier for the agent. It can be a string or a UUID object.
-- `about` *Optional[str]* - Additional information about the agent. Default is None.
-- `instructions` *Optional[List[str]]* - A list of instructions or instruction dictionaries. Default is None.
-- `name` *Optional[str]* - The name of the agent. Default is None.
-- `model` *Optional[str]* - The model identifier or name. Default is None.
-- `default_settings` *Optional[DefaultSettingsDict]* - Dictionary with default settings for the agent. Default is None.
-metadata (Dict[str, Any])
-- `overwrite` *bool* - Whether to overwrite the existing agent settings. Default is False.
-
-#### Returns
-
-- `ResourceUpdatedResponse` - An object containing the details of the update response.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(Agent)
-async def update(
- self, agent_id: Union[str, UUID], **kwargs: AgentUpdateArgs
-) -> Agent: ...
-```
-
-#### See also
-
-- [AgentUpdateArgs](#agentupdateargs)
-
-
-
-## BaseAgentsManager
-
-[Show source in agent.py:63](../../../../../../julep/managers/agent.py#L63)
-
-A class responsible for managing agent entities.
-
-This manager handles CRUD operations for agents including retrieving, creating, listing, deleting, and updating agents using an API client.
-
-#### Attributes
-
-- `api_client` *ApiClientType* - The client responsible for API interactions.
-
-#### Methods
-
-- `_get(self,` *id* - Union[str, UUID]) -> Union[Agent, Awaitable[Agent]]:
- Retrieves a single agent by its UUID.
-
-#### Arguments
-
-id (Union[str, UUID]): The UUID of the agent to retrieve.
-- `name` *str* - The name of the new agent.
-- `about` *str* - Description about the new agent.
-- `instructions` *List[str]* - List of instructions or instruction dictionaries for the new agent.
-- `tools` *List[ToolDict], optional* - List of tool dictionaries. Defaults to an empty list.
-- `functions` *List[FunctionDefDict], optional* - List of function definition dictionaries. Defaults to an empty list.
-- `default_settings` *DefaultSettingsDict, optional* - Dictionary of default settings for the new agent. Defaults to an empty dictionary.
-- `model` *ModelName, optional* - The model name for the new agent. Defaults to 'julep-ai/samantha-1-turbo'.
-- `docs` *List[DocDict], optional* - List of document dictionaries for the new agent. Defaults to an empty list.
-metadata (Dict[str, Any], optional): Dictionary of metadata for the new agent. Defaults to an empty dictionary.
-- `limit` *Optional[int], optional* - The maximum number of agents to list. Defaults to None.
-- `offset` *Optional[int], optional* - The number of agents to skip (for pagination). Defaults to None.
-metadata_filter (Dict[str, Any], optional): Filters for querying agents based on metadata. Defaults to an empty dictionary.
-agent_id (Union[str, UUID]): The UUID of the agent to delete.
-agent_id (Union[str, UUID]): The UUID of the agent to update.
-- `about` *Optional[str], optional* - The new description about the agent.
-- `instructions` *Optional[List[str]], optional* - The new list of instructions or instruction dictionaries.
-- `name` *Optional[str], optional* - The new name for the agent.
-- `model` *Optional[str], optional* - The new model name for the agent.
-- `default_settings` *Optional[DefaultSettingsDict], optional* - The new default settings dictionary for the agent.
-metadata (Dict[str, Any])
-
-#### Returns
-
-The agent object or an awaitable that resolves to the agent object.
-
-- `_create(self,` *name* - str, about: str, instructions: List[str], tools: List[ToolDict] = [], functions: List[FunctionDefDict] = [], default_settings: DefaultSettingsDict = {}, model: ModelName = 'julep-ai/samantha-1-turbo', docs: List[DocDict] = [], metadata: Dict[str, Any] = {}) -> Union[ResourceCreatedResponse, Awaitable[ResourceCreatedResponse]]:
- Creates an agent with the given specifications.
- The response indicating creation or an awaitable that resolves to the creation response.
-
-- `_list_items(self,` *limit* - Optional[int] = None, offset: Optional[int] = None, metadata_filter: Dict[str, Any] = {}) -> Union[ListAgentsResponse, Awaitable[ListAgentsResponse]]:
- Lists agents with pagination support and optional metadata filtering.
- The list of agents or an awaitable that resolves to the list of agents.
-
-- `_delete(self,` *agent_id* - Union[str, UUID]) -> Union[None, Awaitable[None]]:
- Deletes an agent with the specified UUID.
- None or an awaitable that resolves to None.
-
-- `_update(self,` *agent_id* - Union[str, UUID], about: Optional[str] = None, instructions: Optional[List[str]] = None, name: Optional[str] = None, model: Optional[str] = None, default_settings: Optional[DefaultSettingsDict] = None, metadata: Dict[str, Any] = {}) -> Union[ResourceUpdatedResponse, Awaitable[ResourceUpdatedResponse]]:
- Updates the specified fields of an agent.
- The response indicating successful update or an awaitable that resolves to the update response.
-
-#### Signature
-
-```python
-class BaseAgentsManager(BaseManager): ...
-```
-
-### BaseAgentsManager()._create
-
-[Show source in agent.py:141](../../../../../../julep/managers/agent.py#L141)
-
-Create a new agent with the specified configuration.
-
-#### Arguments
-
-- `name` *str* - Name of the agent.
-- `about` *str* - Information about the agent.
-- `instructions` *List[str]* - List of instructions as either string or dictionaries for the agent.
-- `tools` *List[ToolDict], optional* - List of tool configurations for the agent. Defaults to an empty list.
-- `functions` *List[FunctionDefDict], optional* - List of function definitions for the agent. Defaults to an empty list.
-- `default_settings` *DefaultSettingsDict, optional* - Dictionary of default settings for the agent. Defaults to an empty dict.
-- `model` *ModelName, optional* - The model name identifier. Defaults to 'julep-ai/samantha-1-turbo'.
-- `docs` *List[DocDict], optional* - List of document configurations for the agent. Defaults to an empty list.
-metadata (Dict[str, Any])
-
-#### Returns
-
-- `Union[ResourceCreatedResponse,` *Awaitable[ResourceCreatedResponse]]* - The response object indicating the resource has been created or a future of the response object if the creation is being awaited.
-
-#### Raises
-
-- `AssertionError` - If both functions and tools are provided.
-
-#### Notes
-
-The `_create` method is meant to be used internally and should be considered private.
-It assumes the input data for instructions, tools, and docs will have the proper format,
-and items in the 'instructions' list will be converted to Instruction instances.
-
-#### Signature
-
-```python
-def _create(
- self,
- name: str,
- about: str = "",
- instructions: List[str] = [],
- tools: List[ToolDict] = [],
- functions: List[FunctionDefDict] = [],
- default_settings: DefaultSettingsDict = {},
- model: ModelName = "julep-ai/samantha-1-turbo",
- docs: List[DocDict] = [],
- metadata: Dict[str, Any] = {},
-) -> Union[ResourceCreatedResponse, Awaitable[ResourceCreatedResponse]]: ...
-```
-
-#### See also
-
-- [ModelName](#modelname)
-
-### BaseAgentsManager()._delete
-
-[Show source in agent.py:235](../../../../../../julep/managers/agent.py#L235)
-
-Delete an agent by its ID.
-
-#### Arguments
-
-agent_id (Union[str, UUID]): The UUID v4 of the agent to be deleted.
-
-#### Returns
-
-- `Union[None,` *Awaitable[None]]* - A future that resolves to None if the
-operation is asynchronous, or None immediately if the operation is
-synchronous.
-
-#### Raises
-
-- `AssertionError` - If `agent_id` is not a valid UUID v4.
-
-#### Signature
-
-```python
-def _delete(self, agent_id: Union[str, UUID]) -> Union[None, Awaitable[None]]: ...
-```
-
-### BaseAgentsManager()._get
-
-[Show source in agent.py:125](../../../../../../julep/managers/agent.py#L125)
-
-Retrieves an agent based on the provided identifier.
-
-#### Arguments
-
-id (Union[str, UUID]): The identifier of the agent, which can be a string or UUID object.
-
-#### Returns
-
-- `Union[Agent,` *Awaitable[Agent]]* - The agent object or an awaitable yielding the agent object, depending on the API client.
-
-#### Raises
-
-- `AssertionError` - If the provided id is not a valid UUID v4.
-
-#### Signature
-
-```python
-def _get(self, id: Union[str, UUID]) -> Union[Agent, Awaitable[Agent]]: ...
-```
-
-### BaseAgentsManager()._list_items
-
-[Show source in agent.py:211](../../../../../../julep/managers/agent.py#L211)
-
-Lists items with optional pagination.
-
-This method wraps the `list_agents` API call and includes optional limit and offset parameters for pagination.
-
-Args:
- limit (Optional[int], optional): The maximum number of items to return. Defaults to None, which means no limit.
- offset (Optional[int], optional): The index of the first item to return. Defaults to None, which means no offset.
-
-Returns:
- Union[ListAgentsResponse, Awaitable[ListAgentsResponse]]: A ListAgentsResponse object, or an awaitable that resolves to a ListAgentsResponse object.
-
-#### Signature
-
-```python
-def _list_items(
- self,
- limit: Optional[int] = None,
- offset: Optional[int] = None,
- metadata_filter: str = "{}",
-) -> Union[ListAgentsResponse, Awaitable[ListAgentsResponse]]: ...
-```
-
-### BaseAgentsManager()._update
-
-[Show source in agent.py:253](../../../../../../julep/managers/agent.py#L253)
-
-Update the agent's properties.
-
-Args:
- agent_id (Union[str, UUID]): The unique identifier for the agent, which can be a string or UUID object.
- about (Optional[str], optional): A brief description of the agent. Defaults to None.
- instructions (Optional[List[str]], optional): A list of either strings or instruction dictionaries that will be converted into Instruction objects. Defaults to None.
- name (Optional[str], optional): The name of the agent. Defaults to None.
- model (Optional[str], optional): The model identifier for the agent. Defaults to None.
- default_settings (Optional[DefaultSettingsDict], optional): A dictionary of default settings to apply to the agent. Defaults to None.
- metadata (Dict[str, Any])
- overwrite (bool, optional): Whether to overwrite the existing agent settings. Defaults to False.
-
-Returns:
- Union[ResourceUpdatedResponse, Awaitable[ResourceUpdatedResponse]]: An object representing the response for the resource updated, which can also be an awaitable in asynchronous contexts.
-
-Raises:
- AssertionError: If the provided agent_id is not validated by the is_valid_uuid4 function.
-
-Note:
- This method asserts that the agent_id must be a valid UUID v4. The instructions and default_settings, if provided, are converted into their respective object types before making the update API call.
-
-#### Signature
-
-```python
-def _update(
- self,
- agent_id: Union[str, UUID],
- about: Optional[str] = NotSet,
- instructions: List[str] = NotSet,
- name: Optional[str] = NotSet,
- model: Optional[str] = NotSet,
- default_settings: Optional[DefaultSettingsDict] = NotSet,
- metadata: Dict[str, Any] = NotSet,
- overwrite: bool = False,
-) -> Union[ResourceUpdatedResponse, Awaitable[ResourceUpdatedResponse]]: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/managers/base.md b/docs/python-sdk-docs/julep/managers/base.md
deleted file mode 100644
index 242176b4f..000000000
--- a/docs/python-sdk-docs/julep/managers/base.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# Base
-
-[Julep Python SDK Index](../../README.md#julep-python-sdk-index) / [Julep](../index.md#julep) / [Managers](./index.md#managers) / Base
-
-> Auto-generated documentation for [julep.managers.base](../../../../../../julep/managers/base.py) module.
-
-- [Base](#base)
- - [BaseManager](#basemanager)
-
-## BaseManager
-
-[Show source in base.py:7](../../../../../../julep/managers/base.py#L7)
-
-A class that serves as a base manager for working with different API clients. This class is responsible for abstracting the complexities of interacting with various API clients, providing a unified interface for higher-level components.
-
-Attributes:
- api_client (Union[JulepApi, AsyncJulepApi]): A client instance for communicating with an API. This attribute is essential for enabling the class to perform API operations, whether they are synchronous or asynchronous.
-
-Args:
- api_client (Union[JulepApi, AsyncJulepApi]): The API client that is used for making API calls. It is crucial for the operation of this class, allowing it to interact with the API effectively.
-
-#### Signature
-
-```python
-class BaseManager:
- def __init__(self, api_client: Union[JulepApi, AsyncJulepApi]): ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/managers/doc.md b/docs/python-sdk-docs/julep/managers/doc.md
deleted file mode 100644
index d25537089..000000000
--- a/docs/python-sdk-docs/julep/managers/doc.md
+++ /dev/null
@@ -1,501 +0,0 @@
-# Doc
-
-[Julep Python SDK Index](../../README.md#julep-python-sdk-index) / [Julep](../index.md#julep) / [Managers](./index.md#managers) / Doc
-
-> Auto-generated documentation for [julep.managers.doc](../../../../../../julep/managers/doc.py) module.
-
-- [Doc](#doc)
- - [AsyncDocsManager](#asyncdocsmanager)
- - [BaseDocsManager](#basedocsmanager)
- - [DocsCreateArgs](#docscreateargs)
- - [DocsManager](#docsmanager)
-
-## AsyncDocsManager
-
-[Show source in doc.py:342](../../../../../../julep/managers/doc.py#L342)
-
-A class for managing asynchronous operations on documents.
-
-Inherits from BaseDocsManager to provide async document retrieval, creation, and deletion.
-
-#### Attributes
-
-Inherited from BaseDocsManager.
-
-#### Methods
-
-async list(self, *, agent_id: Optional[Union[str, UUID]] = None, user_id: Optional[Union[str, UUID]] = None, limit: Optional[int] = None, offset: Optional[int] = None) -> List[Doc]:
- Asynchronously get a list of documents, with optional filtering based on agent_id, user_id, and pagination options limit and offset.
-
-#### Arguments
-
-agent_id (Optional[Union[str, UUID]]): The agent's identifier to filter documents.
-user_id (Optional[Union[str, UUID]]): The user's identifier to filter documents.
-- `limit` *Optional[int]* - The maximum number of documents to return.
-- `offset` *Optional[int]* - The offset from where to start returning documents.
-agent_id (Optional[Union[str, UUID]]): The agent's identifier associated with the document.
-user_id (Optional[Union[str, UUID]]): The user's identifier associated with the document.
-- `doc` *DocDict* - The document data to be created.
-doc_id (Union[str, UUID]): The unique identifier of the document to be deleted.
-agent_id (Optional[Union[str, UUID]]): The agent's identifier associated with the document, if applicable.
-user_id (Optional[Union[str, UUID]]): The user's identifier associated with the document, if applicable.
-
-#### Returns
-
-- `List[Doc]` - A list of documents.
-
-async create(self, *, agent_id: Optional[Union[str, UUID]] = None, user_id: Optional[Union[str, UUID]] = None, doc: DocDict) -> ResourceCreatedResponse:
- Asynchronously create a new document with the given document information, and optional agent_id and user_id.
- - `ResourceCreatedResponse` - A response object indicating successful creation of the document.
-
-async delete(self, *, doc_id: Union[str, UUID], agent_id: Optional[Union[str, UUID]] = None, user_id: Optional[Union[str, UUID]] = None):
- Asynchronously delete a document by its id, with optional association to a specific agent_id or user_id.
-
-#### Notes
-
-The `@beartype` decorator is being used to perform runtime type checking on the function arguments.
-
-#### Signature
-
-```python
-class AsyncDocsManager(BaseDocsManager): ...
-```
-
-#### See also
-
-- [BaseDocsManager](#basedocsmanager)
-
-### AsyncDocsManager().create
-
-[Show source in doc.py:423](../../../../../../julep/managers/doc.py#L423)
-
-Create a new resource asynchronously.
-
-#### Arguments
-
-agent_id (Optional[Union[str, UUID]]): The ID of the agent. Default is None.
-user_id (Optional[Union[str, UUID]]): The ID of the user. Default is None.
-- `doc` *DocDict* - A dictionary containing document data.
-
-#### Returns
-
-- `ResourceCreatedResponse` - An object representing the response for a resource created.
-
-#### Raises
-
-- `BeartypeException` - If any of the input arguments do not match their expected types. This is implicitly raised due to the use of the beartype decorator.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(Doc)
-async def create(self, **kwargs: DocsCreateArgs) -> Doc: ...
-```
-
-#### See also
-
-- [DocsCreateArgs](#docscreateargs)
-
-### AsyncDocsManager().delete
-
-[Show source in doc.py:443](../../../../../../julep/managers/doc.py#L443)
-
-Asynchronously deletes a document by its ID.
-
-This function is a coroutine and must be awaited.
-
-#### Arguments
-
-doc_id (Union[str, UUID]): The unique identifier of the document to delete.
-agent_id (Optional[Union[str, UUID]]): The unique identifier of the agent, if any.
-user_id (Optional[Union[str, UUID]]): The unique identifier of the user, if any.
-
-#### Returns
-
-- `Coroutine[Any]` - A coroutine that, when awaited, returns the result of the document deletion process.
-
-#### Notes
-
-The `@beartype` decorator is used to enforce type checking on the function arguments.
-
-#### Signature
-
-```python
-@beartype
-async def delete(
- self,
- doc_id: Union[str, UUID],
- agent_id: Optional[Union[str, UUID]] = None,
- user_id: Optional[Union[str, UUID]] = None,
-): ...
-```
-
-### AsyncDocsManager().list
-
-[Show source in doc.py:382](../../../../../../julep/managers/doc.py#L382)
-
-Asynchronously get a list of documents.
-
-This function fetches documents based on the provided filtering criteria such as `agent_id`, `user_id`,
-and supports pagination through `limit` and `offset`.
-
-#### Arguments
-
-agent_id (Optional[Union[str, UUID]]): The ID of the agent to filter documents by. Default is None.
-user_id (Optional[Union[str, UUID]]): The ID of the user to filter documents by. Default is None.
-- `limit` *Optional[int]* - The maximum number of documents to return. Default is None.
-- `offset` *Optional[int]* - The offset from where to start the document retrieval. Default is None.
-
-#### Returns
-
-- `List[Doc]` - A list of document objects.
-
-#### Notes
-
-The `@beartype` decorator is used to ensure that arguments conform to the expected types.
-
-#### Raises
-
-- `BeartypeDecorHintPepParamException` - If any of the parameters do not adhere to the declared types.
-
-#### Signature
-
-```python
-@beartype
-async def list(
- self,
- agent_id: Optional[Union[str, UUID]] = None,
- user_id: Optional[Union[str, UUID]] = None,
- limit: Optional[int] = None,
- offset: Optional[int] = None,
- metadata_filter: Dict[str, Any] = {},
-) -> List[Doc]: ...
-```
-
-
-
-## BaseDocsManager
-
-[Show source in doc.py:30](../../../../../../julep/managers/doc.py#L30)
-
-Manages documents for agents or users by providing internal methods to list, create, and delete documents.
-
-The class utilizes an API client to interact with a back-end service that handles the document management operations.
-
-Typical usage example:
-
-docs_manager = BaseDocsManager(api_client)
-agent_docs = docs_manager._list(agent_id="some-agent-uuid")
-user_docs = docs_manager._list(user_id="some-user-uuid")
-created_doc = docs_manager._create(agent_id="some-agent-uuid", doc={"key": "value"})
-docs_manager._delete(user_id="some-user-uuid", doc_id="some-doc-uuid")
-
-#### Attributes
-
-- `api_client` - A client instance used to make API calls to the document management system.
-
-#### Methods
-
-- `_list(agent_id` - Optional[Union[str, UUID]], user_id: Optional[Union[str, UUID]],
- - `limit` - Optional[int]=None, offset: Optional[int]=None) -> Union[GetAgentDocsResponse, Awaitable[GetAgentDocsResponse]]
- Retrieves docsrmation for either an agent or user.
- Must provide exactly one valid UUID v4 for either `agent_id` or `user_id`.
-
-- `_create(agent_id` - Optional[Union[str, UUID]], user_id: Optional[Union[str, UUID]], doc: DocDict) -> Union[ResourceCreatedResponse, Awaitable[ResourceCreatedResponse]]
- Creates docsrmation for either an agent or user.
- Must provide exactly one valid UUID v4 for either `agent_id` or `user_id`.
- The `doc` parameter contains the document information to be created.
-
-- `_delete(agent_id` - Optional[Union[str, UUID]], user_id: Optional[Union[str, UUID]], doc_id: Union[str, UUID]):
- Deletes docsrmation for either an agent or user.
- Must provide exactly one valid UUID v4 for either `agent_id` or `user_id`, and a valid UUID for `doc_id`.
-
-#### Signature
-
-```python
-class BaseDocsManager(BaseManager): ...
-```
-
-### BaseDocsManager()._create
-
-[Show source in doc.py:115](../../../../../../julep/managers/doc.py#L115)
-
-Create a new resource with docsrmation for either an agent or a user, but not both.
-
-This function asserts that exactly one of `agent_id` or `user_id` is provided and is a valid UUID v4.
-It then creates the appropriate docsrmation based on which ID was provided.
-
-Args:
- agent_id (Optional[Union[str, UUID]]): The UUID of the agent or None.
- user_id (Optional[Union[str, UUID]]): The UUID of the user or None.
- doc (DocDict): A dictionary containing the document data for the resource being created.
- metadata (Dict[str, Any]): Optional metadata for the document. Defaults to an empty dictionary.
-
-Returns:
- Union[ResourceCreatedResponse, Awaitable[ResourceCreatedResponse]]: The response after creating the resource, which could be immediate or an awaitable for asynchronous execution.
-
-Raises:
- AssertionError: If both `agent_id` and `user_id` are provided, neither are provided, or if the provided IDs are not valid UUID v4 strings.
-
-Note:
- One and only one of `agent_id` or `user_id` must be provided and must be a valid UUID v4.
- The `DocDict` type should be a dictionary compatible with the `CreateDoc` schema.
-
-#### Signature
-
-```python
-def _create(
- self,
- doc: DocDict,
- agent_id: Optional[Union[str, UUID]] = None,
- user_id: Optional[Union[str, UUID]] = None,
- metadata: Dict[str, Any] = {},
-) -> Union[ResourceCreatedResponse, Awaitable[ResourceCreatedResponse]]: ...
-```
-
-### BaseDocsManager()._delete
-
-[Show source in doc.py:164](../../../../../../julep/managers/doc.py#L164)
-
-Delete docs based on either an agent_id or a user_id.
-
-This method selects the appropriate deletion operation (agent or user) based on whether an `agent_id` or `user_id` is provided. Only one of these ID types should be valid and provided.
-
-Args:
- agent_id (Optional[Union[str, UUID]]): A unique identifier of an agent. Either a string or UUID v4, but not both `agent_id` and `user_id`.
- user_id (Optional[Union[str, UUID]]): A unique identifier of a user. Either a string or UUID v4, but not both `agent_id` and `user_id`.
- doc_id (Union[str, UUID]): A unique identifier for docsrmation to be deleted, as a string or UUID v4.
-
-Returns:
- The result of the API deletion request. This can be the response object from the client's delete operation.
-
-Raises:
- AssertionError: If both `agent_id` and `user_id` are provided, neither are provided, or if the provided IDs are not valid UUID v4 strings.
- Other exceptions related to the `api_client` operations could potentially be raised and depend on its implementation.
-
-#### Signature
-
-```python
-def _delete(
- self,
- agent_id: Optional[Union[str, UUID]],
- user_id: Optional[Union[str, UUID]],
- doc_id: Union[str, UUID],
-) -> Union[ResourceDeletedResponse, Awaitable[ResourceDeletedResponse]]: ...
-```
-
-### BaseDocsManager()._list
-
-[Show source in doc.py:63](../../../../../../julep/managers/doc.py#L63)
-
-Retrieve docsrmation for an agent or user based on their ID.
-
-This internal method fetches docsrmation for either an agent or a user,
-but not both. If both or neither `agent_id` and `user_id` are provided, it will
-assert an error.
-
-#### Arguments
-
-agent_id (Optional[Union[str, UUID]]): The UUID v4 of the agent for whom docs is requested, exclusive with `user_id`.
-user_id (Optional[Union[str, UUID]]): The UUID v4 of the user for whom docs is requested, exclusive with `agent_id`.
-- `limit` *Optional[int]* - The maximum number of records to return. Defaults to None.
-- `offset` *Optional[int]* - The number of records to skip before starting to collect the response set. Defaults to None.
-metadata_filter (Dict[str, Any]): A dictionary used for filtering documents based on metadata criteria. Defaults to an empty dictionary.
-
-#### Returns
-
-- `Union[GetAgentDocsResponse,` *Awaitable[GetAgentDocsResponse]]* - The response object containing docsrmation about the agent or user, or a promise of such an object if the call is asynchronous.
-
-#### Raises
-
-- `AssertionError` - If both `agent_id` and `user_id` are provided or neither is provided, or if the provided IDs are not valid UUID v4.
-
-#### Signature
-
-```python
-def _list(
- self,
- agent_id: Optional[Union[str, UUID]],
- user_id: Optional[Union[str, UUID]],
- limit: Optional[int] = None,
- offset: Optional[int] = None,
- metadata_filter: Dict[str, Any] = {},
-) -> Union[GetAgentDocsResponse, Awaitable[GetAgentDocsResponse]]: ...
-```
-
-
-
-## DocsCreateArgs
-
-[Show source in doc.py:23](../../../../../../julep/managers/doc.py#L23)
-
-#### Signature
-
-```python
-class DocsCreateArgs(TypedDict): ...
-```
-
-
-
-## DocsManager
-
-[Show source in doc.py:208](../../../../../../julep/managers/doc.py#L208)
-
-A class responsible for managing documents.
-
-This class provides methods for retrieving, creating, and deleting documents. It uses a base document management system to perform operations.
-
-#### Attributes
-
-None specific to this class, as all are inherited from BaseDocsManager.
-
-#### Methods
-
-get:
- Retrieves a list of documents according to specified filters.
-
-#### Arguments
-
-agent_id (Optional[Union[str, UUID]]): The agent's identifier to filter documents by, if any.
-user_id (Optional[Union[str, UUID]]): The user's identifier to filter documents by, if any.
-- `limit` *Optional[int]* - The maximum number of documents to be retrieved.
-- `offset` *Optional[int]* - The number of documents to skip before starting to collect the document output list.
-
-agent_id (Optional[Union[str, UUID]]): The agent's identifier associated with the document, if any.
-user_id (Optional[Union[str, UUID]]): The user's identifier associated with the document, if any.
-- `doc` *DocDict* - The document to be created represented as a dictionary of document metadata.
-
-doc_id (Union[str, UUID]): The identifier of the document to be deleted.
-agent_id (Optional[Union[str, UUID]]): The agent's identifier associated with the document, if any.
-user_id (Optional[Union[str, UUID]]): The user's identifier associated with the document, if any.
-
-#### Returns
-
-- `List[Doc]` - A list of documents matching the provided filters.
-
-create:
- Creates a new document.
-
-- `ResourceCreatedResponse` - An object representing the creation response, typically containing the ID of the created document.
-
-delete:
- Deletes a document by its document identifier.
-
-None, but the method may raise exceptions on failure.
-
-#### Signature
-
-```python
-class DocsManager(BaseDocsManager): ...
-```
-
-#### See also
-
-- [BaseDocsManager](#basedocsmanager)
-
-### DocsManager().create
-
-[Show source in doc.py:288](../../../../../../julep/managers/doc.py#L288)
-
-Create a new resource with the specified document.
-
-This method wraps a call to an internal '_create' method, passing along any
-specified agent or user identifiers, along with the document data.
-
-#### Arguments
-
-agent_id (Optional[Union[str, UUID]]): The agent identifier associated with the resource creation.
-user_id (Optional[Union[str, UUID]]): The user identifier associated with the resource creation.
-- `doc` *DocDict* - A dictionary containing the document data.
-
-#### Returns
-
-- `ResourceCreatedResponse` - An object representing the response for the resource creation operation.
-
-#### Raises
-
-- `BeartypeException` - If any input parameters are of incorrect type, due to type enforcement by the @beartype decorator.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(Doc)
-def create(self, **kwargs: DocsCreateArgs) -> Doc: ...
-```
-
-#### See also
-
-- [DocsCreateArgs](#docscreateargs)
-
-### DocsManager().delete
-
-[Show source in doc.py:311](../../../../../../julep/managers/doc.py#L311)
-
-Deletes a document by its identifier.
-
-This function wraps the internal _delete method, providing an interface to delete documents by their ID while optionally specifying the agent ID and user ID.
-
-#### Arguments
-
-doc_id (Union[str, UUID]): The unique identifier of the document to be deleted.
-agent_id (Optional[Union[str, UUID]]): The unique identifier of the agent performing the delete operation, if any.
-user_id (Optional[Union[str, UUID]]): The unique identifier of the user performing the delete operation, if any.
-
-#### Returns
-
-The return type depends on the implementation of the `_delete` method.
-
-#### Raises
-
-The exceptions raised depend on the implementation of the `_delete` method.
-
-#### Signature
-
-```python
-@beartype
-def delete(
- self,
- doc_id: Union[str, UUID],
- agent_id: Optional[Union[str, UUID]] = None,
- user_id: Optional[Union[str, UUID]] = None,
-): ...
-```
-
-### DocsManager().list
-
-[Show source in doc.py:253](../../../../../../julep/managers/doc.py#L253)
-
-Retrieve a list of documents based on specified criteria.
-
-This method supports filtering the documents by agent_id or user_id, and also supports pagination through the limit and offset parameters.
-
-#### Arguments
-
-agent_id (Optional[Union[str, UUID]]): The unique identifier for the agent. Can be a string or a UUID object. Default is None, which means no filtering by agent_id is applied.
-user_id (Optional[Union[str, UUID]]): The unique identifier for the user. Can be a string or a UUID object. Default is None, which means no filtering by user_id is applied.
-- `limit` *Optional[int]* - The maximum number of documents to retrieve. Default is None, which means no limit is applied.
-- `offset` *Optional[int]* - The number of documents to skip before starting to collect the document list. Default is None, which means no offset is applied.
-
-#### Returns
-
-- `List[Doc]` - A list of documents that match the provided criteria.
-
-#### Notes
-
-The `@beartype` decorator is used to ensure that the input arguments are of the expected types. If an argument is passed that does not match the expected type, a type error will be raised.
-
-#### Signature
-
-```python
-@beartype
-def list(
- self,
- agent_id: Optional[Union[str, UUID]] = None,
- user_id: Optional[Union[str, UUID]] = None,
- limit: Optional[int] = None,
- offset: Optional[int] = None,
- metadata_filter: Dict[str, Any] = {},
-) -> List[Doc]: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/managers/index.md b/docs/python-sdk-docs/julep/managers/index.md
deleted file mode 100644
index 94775758f..000000000
--- a/docs/python-sdk-docs/julep/managers/index.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# Managers
-
-[Julep Python SDK Index](../../README.md#julep-python-sdk-index) / [Julep](../index.md#julep) / Managers
-
-> Auto-generated documentation for [julep.managers](../../../../../../julep/managers/__init__.py) module.
-
-- [Managers](#managers)
- - [Modules](#modules)
-
-## Modules
-
-- [Agent](./agent.md)
-- [Base](./base.md)
-- [Doc](./doc.md)
-- [Memory](./memory.md)
-- [Session](./session.md)
-- [Task](./task.md)
-- [Tool](./tool.md)
-- [Types](./types.md)
-- [User](./user.md)
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/managers/memory.md b/docs/python-sdk-docs/julep/managers/memory.md
deleted file mode 100644
index 11b7d9dc8..000000000
--- a/docs/python-sdk-docs/julep/managers/memory.md
+++ /dev/null
@@ -1,219 +0,0 @@
-# Memory
-
-[Julep Python SDK Index](../../README.md#julep-python-sdk-index) / [Julep](../index.md#julep) / [Managers](./index.md#managers) / Memory
-
-> Auto-generated documentation for [julep.managers.memory](../../../../../../julep/managers/memory.py) module.
-
-- [Memory](#memory)
- - [AsyncMemoriesManager](#asyncmemoriesmanager)
- - [BaseMemoriesManager](#basememoriesmanager)
- - [MemoriesManager](#memoriesmanager)
-
-## AsyncMemoriesManager
-
-[Show source in memory.py:134](../../../../../../julep/managers/memory.py#L134)
-
-Asynchronously lists memories based on various filter parameters.
-
-Args:
- agent_id (Union[str, UUID]): The unique identifier of the agent.
- query (str): The search query string to filter memories.
- types (Optional[Union[str, List[str]]], optional): The types of memories to filter by. Defaults to None.
- user_id (Optional[str], optional): The unique identifier of the user. Defaults to None.
- limit (Optional[int], optional): The maximum number of memories to return. Defaults to None.
- offset (Optional[int], optional): The number of memories to skip before starting to collect the result set. Defaults to None.
-
-Returns:
- List[Memory]: A list of Memory objects that match the given filters.
-
-Raises:
- ValidationError: If the input validation fails.
- DatabaseError: If there is a problem accessing the database.
-
-#### Signature
-
-```python
-class AsyncMemoriesManager(BaseMemoriesManager): ...
-```
-
-#### See also
-
-- [BaseMemoriesManager](#basememoriesmanager)
-
-### AsyncMemoriesManager().list
-
-[Show source in memory.py:154](../../../../../../julep/managers/memory.py#L154)
-
-Asynchronously list memories based on query parameters.
-
-#### Arguments
-
-agent_id (Union[str, UUID]): The ID of the agent to list memories for.
-- `query` *str* - The query string to filter memories.
-types (Optional[Union[str, List[str]]], optional): The types of memories to retrieve. Defaults to None.
-- `user_id` *Optional[str], optional* - The ID of the user to list memories for. Defaults to None.
-- `limit` *Optional[int], optional* - The maximum number of memories to return. Defaults to None.
-- `offset` *Optional[int], optional* - The offset to start listing memories from. Defaults to None.
-
-#### Returns
-
-- `List[Memory]` - A list of Memory objects that match the query.
-
-#### Notes
-
-`@beartype` decorator is used for runtime type checking.
-
-#### Signature
-
-```python
-@beartype
-async def list(
- self,
- agent_id: Union[str, UUID],
- query: str,
- types: Optional[Union[str, List[str]]] = None,
- user_id: Optional[str] = None,
- limit: Optional[int] = None,
- offset: Optional[int] = None,
-) -> List[Memory]: ...
-```
-
-
-
-## BaseMemoriesManager
-
-[Show source in memory.py:16](../../../../../../julep/managers/memory.py#L16)
-
-A base manager class for handling agent memories.
-
-This manager provides an interface to interact with agent memories, facilitating
-operations such as listing and retrieving memories based on various criteria.
-
-Methods:
- _list(agent_id, query, types=None, user_id=None, limit=None, offset=None):
- Retrieves a list of memories for a given agent.
-
-Args:
- agent_id (str): A valid UUID v4 string identifying the agent.
- query (str): The query string to search memories.
- types (Optional[Union[str, List[str]]]): The type(s) of memories to retrieve.
- user_id (Optional[str]): The user identifier associated with the memories.
- limit (Optional[int]): The maximum number of memories to retrieve.
- offset (Optional[int]): The number of initial memories to skip in the result set.
-
-Returns:
- Union[GetAgentMemoriesResponse, Awaitable[GetAgentMemoriesResponse]]:
- A synchronous or asynchronous response object containing the list of agent memories.
-
-Raises:
- AssertionError: If `agent_id` is not a valid UUID v4.
-
-#### Signature
-
-```python
-class BaseMemoriesManager(BaseManager): ...
-```
-
-### BaseMemoriesManager()._list
-
-[Show source in memory.py:43](../../../../../../julep/managers/memory.py#L43)
-
-List memories from a given agent based on a query and further filtering options.
-
-#### Arguments
-
-- `agent_id` *str* - A valid UUID v4 representing the agent ID.
-- `query` *str* - Query string to filter memories.
-types (Optional[Union[str, List[str]]], optional): The types of memories to filter.
-- `user_id` *Optional[str], optional* - The user ID to filter memories.
-- `limit` *Optional[int], optional* - The maximum number of memories to return.
-- `offset` *Optional[int], optional* - The number of memories to skip before starting to collect the result set.
-
-#### Returns
-
-- `Union[GetAgentMemoriesResponse,` *Awaitable[GetAgentMemoriesResponse]]* - Returns a synchronous or asynchronous response with the agent memories.
-
-#### Raises
-
-- `AssertionError` - If `agent_id` is not a valid UUID v4.
-
-#### Signature
-
-```python
-def _list(
- self,
- agent_id: str,
- query: str,
- types: Optional[Union[str, List[str]]] = None,
- user_id: Optional[str] = None,
- limit: Optional[int] = None,
- offset: Optional[int] = None,
-) -> Union[GetAgentMemoriesResponse, Awaitable[GetAgentMemoriesResponse]]: ...
-```
-
-
-
-## MemoriesManager
-
-[Show source in memory.py:80](../../../../../../julep/managers/memory.py#L80)
-
-A class for managing memory entities associated with agents.
-
-Inherits from [BaseMemoriesManager](#basememoriesmanager) and extends its functionality to specifically
-manage and retrieve memory entities for agents based on query parameters.
-
-Attributes:
- Inherited from [BaseMemoriesManager](#basememoriesmanager).
-
-Methods:
- list: Retrieves a list of memory entities based on query parameters.
-
-#### Signature
-
-```python
-class MemoriesManager(BaseMemoriesManager): ...
-```
-
-#### See also
-
-- [BaseMemoriesManager](#basememoriesmanager)
-
-### MemoriesManager().list
-
-[Show source in memory.py:94](../../../../../../julep/managers/memory.py#L94)
-
-List memories meeting specified criteria.
-
-This function fetches a list of Memory objects based on various filters and parameters such as agent_id, query, types, user_id, limit, and offset.
-
-#### Arguments
-
-agent_id (Union[str, UUID]): The unique identifier for the agent.
-- `query` *str* - The search term used to filter memories.
-types (Optional[Union[str, List[str]]], optional): The types of memories to retrieve. Can be a single type as a string or a list of types. Default is None, which does not filter by type.
-- `user_id` *Optional[str], optional* - The unique identifier for the user. If provided, only memories associated with this user will be retrieved. Default is None.
-- `limit` *Optional[int], optional* - The maximum number of memories to return. Default is None, which means no limit.
-- `offset` *Optional[int], optional* - The number of memories to skip before starting to return the results. Default is None.
-
-#### Returns
-
-- `List[Memory]` - A list of Memory objects that match the given criteria.
-
-#### Notes
-
-The `@beartype` decorator is used to ensure that arguments conform to the expected types at runtime.
-
-#### Signature
-
-```python
-@beartype
-def list(
- self,
- agent_id: Union[str, UUID],
- query: str,
- types: Optional[Union[str, List[str]]] = None,
- user_id: Optional[str] = None,
- limit: Optional[int] = None,
- offset: Optional[int] = None,
-) -> List[Memory]: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/managers/session.md b/docs/python-sdk-docs/julep/managers/session.md
deleted file mode 100644
index 96a40a6de..000000000
--- a/docs/python-sdk-docs/julep/managers/session.md
+++ /dev/null
@@ -1,1226 +0,0 @@
-# Session
-
-[Julep Python SDK Index](../../README.md#julep-python-sdk-index) / [Julep](../index.md#julep) / [Managers](./index.md#managers) / Session
-
-> Auto-generated documentation for [julep.managers.session](../../../../../../julep/managers/session.py) module.
-
-- [Session](#session)
- - [AsyncSessionsManager](#asyncsessionsmanager)
- - [BaseSessionsManager](#basesessionsmanager)
- - [SessionCreateArgs](#sessioncreateargs)
- - [SessionUpdateArgs](#sessionupdateargs)
- - [SessionsManager](#sessionsmanager)
-
-## AsyncSessionsManager
-
-[Show source in session.py:800](../../../../../../julep/managers/session.py#L800)
-
-A class for managing asynchronous sessions.
-
-This class handles operations related to creating, retrieving, updating,
-deleting, and interacting with sessions asynchronously. It extends the
-functionality of BaseSessionsManager with asynchronous behavior.
-
-#### Attributes
-
-Inherits attributes from the BaseSessionsManager class.
-
-#### Methods
-
-- `async` *get(id* - Union[UUID, str]) -> Session:
- Retrieves a session by its ID.
-
-async create(*, user_id: Union[str, UUID], agent_id: Union[str, UUID], situation: Optional[str]=None) -> ResourceCreatedResponse:
- Creates a new session with the specified user and agent IDs, and an optional situation.
-
-async list(*, limit: Optional[int]=None, offset: Optional[int]=None) -> List[Session]:
- Lists sessions with an optional limit and offset for pagination.
-
-- `async` *delete(session_id* - Union[str, UUID]):
- Deletes a session by its ID.
-
-async update(*, session_id: Union[str, UUID], situation: str) -> ResourceUpdatedResponse:
- Updates the situation for a session by its ID.
-
-async chat(*, session_id: str, messages: List[InputChatMlMessage], tools: Optional[List[Tool]]=None, tool_choice: Optional[ToolChoiceOption]=None, frequency_penalty: Optional[float]=None, length_penalty: Optional[float]=None, logit_bias: Optional[Dict[str, Optional[int]]]=None, max_tokens: Optional[int]=None, presence_penalty: Optional[float]=None, repetition_penalty: Optional[float]=None, response_format: Optional[ChatSettingsResponseFormat]=None, seed: Optional[int]=None, stop: Optional[ChatSettingsStop]=None, stream: Optional[bool]=None, temperature: Optional[float]=None, top_p: Optional[float]=None, recall: Optional[bool]=None, remember: Optional[bool]=None) -> ChatResponse:
- Initiates a chat session with given messages and optional parameters for the chat behavior and output.
-
-async suggestions(*, session_id: Union[str, UUID], limit: Optional[int]=None, offset: Optional[int]=None) -> List[Suggestion]:
- Retrieves suggestions related to a session optionally limited and paginated.
-
-async history(*, session_id: Union[str, UUID], limit: Optional[int]=None, offset: Optional[int]=None) -> List[ChatMlMessage]:
- Retrieves the history of messages in a session, optionally limited and paginated.
-
-- `async` *delete_history(session_id* - Union[str, UUID]) -> None:
-
-#### Notes
-
-The `@beartype` decorator is used for runtime type checking of the arguments.
-
-Additional methods may be provided by the BaseSessionsManager.
-
-#### Signature
-
-```python
-class AsyncSessionsManager(BaseSessionsManager): ...
-```
-
-#### See also
-
-- [BaseSessionsManager](#basesessionsmanager)
-
-### AsyncSessionsManager().chat
-
-[Show source in session.py:975](../../../../../../julep/managers/session.py#L975)
-
-Sends a message in an asynchronous chat session and retrieves the response.
-
-This method leverages the messaging interface with various options to adjust the behavior of the chat bot.
-
-#### Arguments
-
-- `session_id` *str* - The unique identifier for the chat session.
-- `messages` *List[InputChatMlMessage]* - A list of chat messages in the session's context.
-- `tools` *Optional[List[Tool]]* - A list of tools, if provided, to enhance the chat capabilities.
-- `tool_choice` *Optional[ToolChoiceOption]* - A preference for tool selection during the chat.
-- `frequency_penalty` *Optional[float]* - Adjusts how much the model should avoid repeating the same line of thought.
-- `length_penalty` *Optional[float]* - Penalizes longer responses.
-logit_bias (Optional[Dict[str, Optional[int]]]): Biases the model's prediction towards or away from certain tokens.
-- `max_tokens` *Optional[int]* - The maximum length of the generated response.
-- `presence_penalty` *Optional[float]* - Adjusts how much the model should consider new concepts.
-- `repetition_penalty` *Optional[float]* - Adjusts how much the model should avoid repeating previous input.
-- `response_format` *Optional[ChatSettingsResponseFormat]* - The desired format for the response.
-- `seed` *Optional[int]* - A seed used to initialize the model's random number generator.
-- `stop` *Optional[ChatSettingsStop]* - Tokens that signify the end of the response.
-- `stream` *Optional[bool]* - Whether or not to stream the responses.
-- `temperature` *Optional[float]* - Controls randomness in the response generation.
-- `top_p` *Optional[float]* - Controls diversity via nucleus sampling.
-- `recall` *Optional[bool]* - If true, the model recalls previous messages within the same session.
-- `remember` *Optional[bool]* - If true, the model incorporates the context from the previous conversations in the session.
-
-#### Returns
-
-- `ChatResponse` - The response from the chat bot, encapsulating the result of the chat action.
-
-#### Notes
-
-This function is decorated with `@beartype`, which enforces type annotations at runtime.
-
-#### Examples
-
-```python
->>> response = await chat(...)
->>> print(response)
-```
-
-#### Signature
-
-```python
-@beartype
-async def chat(
- self,
- session_id: str,
- messages: List[Union[InputChatMlMessageDict, InputChatMlMessage]],
- tools: Optional[List[Union[ToolDict, Tool]]] = None,
- tool_choice: Optional[ToolChoiceOption] = None,
- frequency_penalty: Optional[float] = None,
- length_penalty: Optional[float] = None,
- logit_bias: Optional[Dict[str, Optional[int]]] = None,
- max_tokens: Optional[int] = None,
- presence_penalty: Optional[float] = None,
- repetition_penalty: Optional[float] = None,
- response_format: Optional[
- Union[ChatSettingsResponseFormatDict, ChatSettingsResponseFormat]
- ] = None,
- seed: Optional[int] = None,
- stop: Optional[ChatSettingsStop] = None,
- stream: Optional[bool] = None,
- temperature: Optional[float] = None,
- top_p: Optional[float] = None,
- recall: Optional[bool] = None,
- remember: Optional[bool] = None,
-) -> ChatResponse: ...
-```
-
-### AsyncSessionsManager().create
-
-[Show source in session.py:872](../../../../../../julep/managers/session.py#L872)
-
-Asynchronously create a resource with the specified user and agent identifiers.
-
-This function wraps an internal _create method and is decorated with `beartype` for run-time type checking.
-
-#### Arguments
-
-user_id (Union[str, UUID]): Unique identifier for the user.
-agent_id (Union[str, UUID]): Unique identifier for the agent.
-- `situation` *Optional[str], optional* - Description of the situation, defaults to None.
-
-#### Returns
-
-- `Session` - The created Session object
-
-#### Raises
-
-- `BeartypeException` - If any of the input arguments do not match their expected types.
-Any exception raised by the internal _create method.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(Session)
-async def create(self, **kwargs: SessionCreateArgs) -> Session: ...
-```
-
-#### See also
-
-- [SessionCreateArgs](#sessioncreateargs)
-
-### AsyncSessionsManager().delete
-
-[Show source in session.py:925](../../../../../../julep/managers/session.py#L925)
-
-Asynchronously delete a session given its ID.
-
-#### Arguments
-
-session_id (Union[str, UUID]): The unique identifier for the session, which can
- be either a string or a UUID.
-
-#### Returns
-
-Coroutine[Any, Any, Any]: A coroutine that, when awaited, completes the deletion process.
-
-#### Raises
-
-The decorators or the body of the '_delete' method may define specific exceptions that
-could be raised during the execution. Generally, include any exceptions that are raised
-by the '_delete' method or by the 'beartype' decorator in this section.
-
-#### Signature
-
-```python
-@beartype
-async def delete(self, session_id: Union[str, UUID]): ...
-```
-
-### AsyncSessionsManager().delete_history
-
-[Show source in session.py:1120](../../../../../../julep/managers/session.py#L1120)
-
-Delete the history of a session asynchronously.
-
-#### Arguments
-
-session_id (Union[str, UUID]): The unique identifier for the session.
-
-#### Returns
-
-- `None` - The result of the delete operation.
-
-#### Raises
-
-- `AssertionError` - If the `session_id` is not a valid UUID v4.
-
-#### Signature
-
-```python
-@beartype
-async def delete_history(self, session_id: Union[str, UUID]) -> None: ...
-```
-
-### AsyncSessionsManager().get
-
-[Show source in session.py:844](../../../../../../julep/managers/session.py#L844)
-
-Asynchronously get a Session object by its identifier.
-
-This method retrieves a Session based on the provided `id`. It uses an underlying
-asynchronous '_get' method to perform the operation.
-
-#### Arguments
-
-id (Union[UUID, str]): The unique identifier of the Session to retrieve. It can be
- either a string representation or a UUID object.
-
-#### Returns
-
-- `Session` - The retrieved Session object associated with the given id.
-
-#### Raises
-
-- `TypeError` - If the `id` is not of type UUID or str.
-- `ValueError` - If the `id` is not a valid UUID or an invalid string is provided.
-- `AnyExceptionRaisedBy_get` - Descriptive name of specific exceptions that '_get'
- might raise, if any. Replace this with the actual exceptions.
-
-#### Notes
-
-The `@beartype` decorator is being used to enforce type checking at runtime.
-This ensures that the argument `id` is of the correct type (UUID or str) and
-that the return value is a Session object.
-
-#### Signature
-
-```python
-@beartype
-async def get(self, id: Union[UUID, str]) -> Session: ...
-```
-
-### AsyncSessionsManager().history
-
-[Show source in session.py:1088](../../../../../../julep/managers/session.py#L1088)
-
-Retrieve a history of chat messages based on the session ID, with optional limit and offset.
-
-This function is decorated with 'beartype' for runtime type checking.
-
-#### Arguments
-
-session_id (Union[str, UUID]): The unique identifier for the chat session.
-- `limit` *Optional[int], optional* - The maximum number of chat messages to return. Defaults to None.
-- `offset` *Optional[int], optional* - The number of chat messages to skip before starting to collect the history slice. Defaults to None.
-
-#### Returns
-
-- `List[ChatMlMessage]` - A list of chat messages from the history that match the criteria.
-
-#### Raises
-
-Any exceptions that may be raised by the underlying '_history' method or 'beartype' decorator.
-
-#### Signature
-
-```python
-@beartype
-async def history(
- self,
- session_id: Union[str, UUID],
- limit: Optional[int] = None,
- offset: Optional[int] = None,
-) -> List[ChatMlMessage]: ...
-```
-
-### AsyncSessionsManager().list
-
-[Show source in session.py:895](../../../../../../julep/managers/session.py#L895)
-
-Asynchronously retrieves a list of sessions with optional pagination.
-
-This method utilizes `_list_items` internally to obtain session data with support for limit and offset parameters. The `beartype` decorator is used to ensure that the function parameters match the expected types.
-
-#### Arguments
-
-- `limit` *Optional[int], optional* - The maximum number of sessions to retrieve. Default is None, which retrieves all available sessions.
-- `offset` *Optional[int], optional* - The number to skip before starting to collect the response set. Default is None.
-
-#### Returns
-
-- `List[Session]` - A list of `Session` objects containing session data.
-
-#### Signature
-
-```python
-@beartype
-async def list(
- self,
- limit: Optional[int] = None,
- offset: Optional[int] = None,
- metadata_filter: Dict[str, Any] = {},
-) -> List[Session]: ...
-```
-
-### AsyncSessionsManager().suggestions
-
-[Show source in session.py:1056](../../../../../../julep/managers/session.py#L1056)
-
-Retrieve a list of suggestions asynchronously.
-
-This function asynchronously fetches suggestions based on the provided session ID, with optional limit and offset parameters for pagination.
-
-#### Arguments
-
-session_id (Union[str, UUID]): The session identifier for which suggestions are to be retrieved.
-- `limit` *Optional[int]* - The maximum number of suggestions to return. Defaults to None, which means no limit.
-- `offset` *Optional[int]* - The number of suggestions to skip before starting to return results. Defaults to None, which means no offset.
-
-#### Returns
-
-- `List[Suggestion]` - A list of Suggestion objects.
-
-#### Raises
-
-- `Exception` - Raises an exception if the underlying _suggestions call fails.
-
-#### Signature
-
-```python
-@beartype
-async def suggestions(
- self,
- session_id: Union[str, UUID],
- limit: Optional[int] = None,
- offset: Optional[int] = None,
-) -> List[Suggestion]: ...
-```
-
-### AsyncSessionsManager().update
-
-[Show source in session.py:944](../../../../../../julep/managers/session.py#L944)
-
-Asynchronously update a resource with the given situation.
-
-This method wraps the private `_update` method which performs the actual update
-operation asynchronously.
-
-#### Arguments
-
-session_id (Union[str, UUID]): The session ID of the resource to update.
- It can be either a `str` or a `UUID` object.
-- `situation` *str* - Description of the situation to update the resource with.
-
-#### Returns
-
-- `Session` - The updated Session object
-
-#### Notes
-
-This function is decorated with `@beartype`, which will perform runtime type
-checking on the arguments.
-
-#### Raises
-
-- `BeartypeCallHintParamViolation` - If the `session_id` or `situation`
- arguments do not match their annotated types.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(Session)
-async def update(self, **kwargs: SessionUpdateArgs) -> Session: ...
-```
-
-#### See also
-
-- [SessionUpdateArgs](#sessionupdateargs)
-
-
-
-## BaseSessionsManager
-
-[Show source in session.py:57](../../../../../../julep/managers/session.py#L57)
-
-A class to manage sessions using base API client methods.
-
-This manager handles CRUD operations and additional actions on the session data,
-such as chatting and retrieving history or suggestions.
-
-#### Attributes
-
-- `api_client` - The client used for communicating with an API.
-
-#### Methods
-
-_get(id):
- Retrieve a specific session by its identifier.
-
-#### Arguments
-
-id (Union[str, UUID]): The unique identifier for the session.
-
-agent_id (Union[str, UUID]): The unique identifier for the agent.
-user_id (Optional[Union[str, UUID]]): The unique identifier for the user.
-- `situation` *Optional[str]* - An optional description of the situation for the session.
-
-- `limit` *Optional[int]* - The limit on the number of items to be retrieved.
-- `offset` *Optional[int]* - The number of items to be skipped before starting to collect the result set.
-
-session_id (Union[str, UUID]): The unique identifier for the session to be deleted.
-
-session_id (Union[str, UUID]): The unique identifier for the session to be updated.
-- `situation` *str* - The new situation description for the session.
-
-- `session_id` *str* - The unique identifier for the session.
-- `messages` *List[InputChatMlMessage]* - The list of input chat messages to be sent.
-- `tools` *Optional[List[Tool]]* - ...
-- `tool_choice` *Optional[ToolChoiceOption]* - ...
-- `...` - Other optional parameters for chat settings and modifiers.
-
-session_id (Union[str, UUID]): The unique identifier for the session.
-- `limit` *Optional[int]* - The limit on the number of suggestions to be retrieved.
-- `offset` *Optional[int]* - The number of suggestions to be skipped before starting to collect the result set.
-
-session_id (Union[str, UUID]): The unique identifier for the session.
-- `limit` *Optional[int]* - The limit on the number of history entries to be retrieved.
-- `offset` *Optional[int]* - The number of history entries to be skipped before starting to collect the result set.
-
-session_id (Union[str, UUID]): The unique identifier for the session.
-
-#### Returns
-
-- `Union[Session,` *Awaitable[Session]]* - The session object or an awaitable yielding it.
-
-- `Union[ResourceCreatedResponse,` *Awaitable[ResourceCreatedResponse]]* - The response for the created session or an awaitable yielding it.
-
-_list_items(limit, offset):
- List multiple session items with optional pagination.
-
-- `Union[ListSessionsResponse,` *Awaitable[ListSessionsResponse]]* - The list of sessions or an awaitable yielding it.
-
-_delete(session_id):
- Delete a session by its identifier.
-
-- `Union[None,` *Awaitable[None]]* - None or an awaitable yielding None if the operation is successful.
-
-_update(session_id, situation):
- Update the situation for an existing session.
-
-- `Union[ResourceUpdatedResponse,` *Awaitable[ResourceUpdatedResponse]]* - The response for the updated session or an awaitable yielding it.
-
-_chat(session_id, messages, ...):
- Send chat messages and get responses during a session.
-
-- `Union[ChatResponse,` *Awaitable[ChatResponse]]* - The chat response for the session or an awaitable yielding it.
-
-_suggestions(session_id, limit, offset):
- Get suggestions for a session.
-
-- `Union[GetSuggestionsResponse,` *Awaitable[GetSuggestionsResponse]]* - The suggestions response for the session or an awaitable yielding it.
-
-_history(session_id, limit, offset):
- Get the history for a session.
-
-- `Union[GetHistoryResponse,` *Awaitable[GetHistoryResponse]]* - The history response for the session or an awaitable yielding it.
-
-_delete_history(session_id):
- Delete the history of a session.
-
-- `Union[None,` *Awaitable[None]]* - None or an awaitable yielding None if the operation is successful.
-
-#### Raises
-
-- `ValueError` - If the `id` is not a valid UUID.
-- `NetworkError` - If there is an issue communicating with the API.
-
-_create(user_id, agent_id, situation):
- Create a new session with specified user and agent identifiers.
-
-#### Signature
-
-```python
-class BaseSessionsManager(BaseManager): ...
-```
-
-### BaseSessionsManager()._chat
-
-[Show source in session.py:310](../../../../../../julep/managers/session.py#L310)
-
-Conducts a chat conversation with an AI model using specific parameters.
-
-#### Arguments
-
-- `session_id` *str* - A unique identifier for the chat session.
-- `messages` *List[InputChatMlMessage]* - A list of input messages for the AI to respond to.
-- `tools` *Optional[List[Tool]]* - A list of tools to be used during the chat session.
-- `tool_choice` *Optional[ToolChoiceOption]* - A method for choosing which tools to apply.
-- `frequency_penalty` *Optional[float]* - A modifier to decrease the likelihood of frequency-based repetitions.
-- `length_penalty` *Optional[float]* - A modifier to control the length of the generated responses.
-logit_bias (Optional[Dict[str, Optional[int]]]): Adjustments to the likelihood of specific tokens appearing.
-- `max_tokens` *Optional[int]* - The maximum number of tokens to generate in the output.
-- `presence_penalty` *Optional[float]* - A modifier to control for new concepts' appearance.
-- `repetition_penalty` *Optional[float]* - A modifier to discourage repetitive responses.
-- `response_format` *Optional[ChatSettingsResponseFormat]* - The format in which the response is to be delivered.
-- `seed` *Optional[int]* - An integer to seed the random number generator for reproducibility.
-- `stop` *Optional[ChatSettingsStop]* - Tokens at which to stop generating further tokens.
-- `stream` *Optional[bool]* - Whether to stream the response or deliver it when it's complete.
-- `temperature` *Optional[float]* - A value to control the randomness of the output.
-- `top_p` *Optional[float]* - A value to control the nucleus sampling, i.e., the cumulative probability cutoff.
-- `recall` *Optional[bool]* - A flag to control the recall capability of the AI model.
-- `remember` *Optional[bool]* - A flag to control the persistence of the chat history in the AI's memory.
-
-#### Returns
-
-- `Union[ChatResponse,` *Awaitable[ChatResponse]]* - The response from the AI given the input messages and parameters. This could be a synchronous `ChatResponse` object or an asynchronous `Awaitable[ChatResponse]` if the `stream` parameter is True.
-
-#### Notes
-
-The precise types of some arguments, like `Tool`, `ToolChoiceOption`, `ChatSettingsResponseFormat`, and `ChatSettingsStop`, are not defined within the given context. It's assumed that these types have been defined elsewhere in the code base.
-
-#### Raises
-
-It is not specified what exceptions this function might raise. Typically, one would expect potential exceptions to be associated with the underlying API client's `chat` method failure modes, such as network issues, invalid parameters, etc.
-
-#### Signature
-
-```python
-def _chat(
- self,
- session_id: str,
- messages: List[Union[InputChatMlMessageDict, InputChatMlMessage]],
- tools: Optional[List[Union[ToolDict, Tool]]] = None,
- tool_choice: Optional[ToolChoiceOption] = None,
- frequency_penalty: Optional[float] = None,
- length_penalty: Optional[float] = None,
- logit_bias: Optional[Dict[str, Optional[int]]] = None,
- max_tokens: Optional[int] = None,
- presence_penalty: Optional[float] = None,
- repetition_penalty: Optional[float] = None,
- response_format: Optional[
- Union[ChatSettingsResponseFormatDict, ChatSettingsResponseFormat]
- ] = None,
- seed: Optional[int] = None,
- stop: Optional[ChatSettingsStop] = None,
- stream: Optional[bool] = None,
- temperature: Optional[float] = None,
- top_p: Optional[float] = None,
- recall: Optional[bool] = None,
- remember: Optional[bool] = None,
-) -> Union[ChatResponse, Awaitable[ChatResponse]]: ...
-```
-
-### BaseSessionsManager()._create
-
-[Show source in session.py:182](../../../../../../julep/managers/session.py#L182)
-
-Creates a session for a specified user and agent.
-
-This internal method is responsible for creating a session using the API client. It validates that both the user and agent IDs are valid UUID v4 strings before proceeding with session creation.
-
-#### Arguments
-
-agent_id (Union[str, UUID]): The agent's identifier which could be a string or a UUID object.
-user_id (Optional[Union[str, UUID]]): The user's identifier which could be a string or a UUID object.
-- `situation` *Optional[str], optional* - An optional description of the situation.
-metadata (Dict[str, Any])
-- `render_templates` *bool, optional* - Whether to render templates in the metadata. Defaults to False.
-
-#### Returns
-
-- `Union[ResourceCreatedResponse,` *Awaitable[ResourceCreatedResponse]]* - The response from the API client upon successful session creation, which can be a synchronous `ResourceCreatedResponse` or an asynchronous `Awaitable` of it.
-
-#### Raises
-
-- `AssertionError` - If either `user_id` or `agent_id` is not a valid UUID v4.
-
-#### Signature
-
-```python
-def _create(
- self,
- agent_id: Union[str, UUID],
- user_id: Optional[Union[str, UUID]] = None,
- situation: Optional[str] = None,
- metadata: Dict[str, Any] = {},
- render_templates: bool = False,
- token_budget: Optional[int] = None,
- context_overflow: Optional[str] = None,
-) -> Union[ResourceCreatedResponse, Awaitable[ResourceCreatedResponse]]: ...
-```
-
-### BaseSessionsManager()._delete
-
-[Show source in session.py:251](../../../../../../julep/managers/session.py#L251)
-
-Delete a session given its session ID.
-
-This is an internal method that asserts the provided session_id is a valid UUID v4
-before making the delete request through the API client.
-
-Args:
- session_id (Union[str, UUID]): The session identifier, which should be a valid UUID v4.
-
-Returns:
- Union[None, Awaitable[None]]: The result of the delete operation, which can be either
- None or an Awaitable that resolves to None, depending on whether this is a synchronous
- or asynchronous call.
-
-Raises:
- AssertionError: If the `session_id` is not a valid UUID v4.
-
-#### Signature
-
-```python
-def _delete(self, session_id: Union[str, UUID]) -> Union[None, Awaitable[None]]: ...
-```
-
-### BaseSessionsManager()._delete_history
-
-[Show source in session.py:444](../../../../../../julep/managers/session.py#L444)
-
-Delete the history of a session.
-
-#### Arguments
-
-session_id (Union[str, UUID]): The unique identifier for the session.
-
-#### Returns
-
-- `Union[None,` *Awaitable[None]]* - The result of the delete operation, which can be either
-None or an Awaitable that resolves to None, depending on whether this is a synchronous
-or asynchronous call.
-
-#### Raises
-
-- `AssertionError` - If the `session_id` is not a valid UUID v4.
-
-#### Signature
-
-```python
-def _delete_history(
- self, session_id: Union[str, UUID]
-) -> Union[None, Awaitable[None]]: ...
-```
-
-### BaseSessionsManager()._get
-
-[Show source in session.py:166](../../../../../../julep/managers/session.py#L166)
-
-Get a session by its ID.
-
-#### Arguments
-
-id (Union[str, UUID]): A string or UUID representing the session ID.
-
-#### Returns
-
-- `Union[Session,` *Awaitable[Session]]* - The session object associated with the given ID, which can be either a `Session` instance or an `Awaitable` that resolves to a `Session`.
-
-#### Raises
-
-- `AssertionError` - If the id is not a valid UUID v4.
-
-#### Signature
-
-```python
-def _get(self, id: Union[str, UUID]) -> Union[Session, Awaitable[Session]]: ...
-```
-
-### BaseSessionsManager()._history
-
-[Show source in session.py:416](../../../../../../julep/managers/session.py#L416)
-
-Retrieve a session's history with optional pagination controls.
-
-Args:
- session_id (Union[str, UUID]): Unique identifier for the session
- whose history is being queried. Can be a string or a UUID object.
- limit (Optional[int], optional): The maximum number of history
- entries to retrieve. Defaults to None, which uses the API's default setting.
- offset (Optional[int], optional): The number of initial history
- entries to skip. Defaults to None, which means no offset is applied.
-
-Returns:
- Union[GetHistoryResponse, Awaitable[GetHistoryResponse]]:
- The history response object, which may be either synchronous or
- asynchronous (awaitable), depending on the API client configuration.
-
-#### Signature
-
-```python
-def _history(
- self,
- session_id: Union[str, UUID],
- limit: Optional[int] = None,
- offset: Optional[int] = None,
-) -> Union[GetHistoryResponse, Awaitable[GetHistoryResponse]]: ...
-```
-
-### BaseSessionsManager()._list_items
-
-[Show source in session.py:226](../../../../../../julep/managers/session.py#L226)
-
-List items with optional pagination.
-
-#### Arguments
-
-- `limit` *Optional[int]* - The maximum number of items to return. Defaults to None.
-- `offset` *Optional[int]* - The number of items to skip before starting to collect the result set. Defaults to None.
-
-#### Returns
-
-- `Union[ListSessionsResponse,` *Awaitable[ListSessionsResponse]]* - The response object containing the list of items or an awaitable response object if called asynchronously.
-
-#### Notes
-
-The '_list_items' function is assumed to be a method of a class that has an 'api_client' attribute capable of listing sessions.
-
-#### Signature
-
-```python
-def _list_items(
- self,
- limit: Optional[int] = None,
- offset: Optional[int] = None,
- metadata_filter: str = "{}",
-) -> Union[ListSessionsResponse, Awaitable[ListSessionsResponse]]: ...
-```
-
-### BaseSessionsManager()._suggestions
-
-[Show source in session.py:393](../../../../../../julep/managers/session.py#L393)
-
-Retrieve a list of suggestions for a given session.
-
-Args:
- session_id (Union[str, UUID]): The ID of the session for which to get suggestions.
- limit (Optional[int], optional): The maximum number of suggestions to retrieve. Defaults to None.
- offset (Optional[int], optional): The offset from where to start retrieving suggestions. Defaults to None.
-
-Returns:
- Union[GetSuggestionsResponse, Awaitable[GetSuggestionsResponse]]: The response containing the list of suggestions synchronously or asynchronously, depending on the API client.
-
-#### Signature
-
-```python
-def _suggestions(
- self,
- session_id: Union[str, UUID],
- limit: Optional[int] = None,
- offset: Optional[int] = None,
-) -> Union[GetSuggestionsResponse, Awaitable[GetSuggestionsResponse]]: ...
-```
-
-### BaseSessionsManager()._update
-
-[Show source in session.py:272](../../../../../../julep/managers/session.py#L272)
-
-Update a session with a given situation.
-
-#### Arguments
-
-session_id (Union[str, UUID]): The session identifier, which can be a string-formatted UUID or an actual UUID object.
-- `situation` *str* - A string describing the current situation.
-- `overwrite` *bool, optional* - Whether to overwrite the existing situation. Defaults to False.
-
-#### Returns
-
-- `Union[ResourceUpdatedResponse,` *Awaitable[ResourceUpdatedResponse]]* - The response from the update operation, which can be either synchronous or asynchronous.
-
-#### Raises
-
-- `AssertionError` - If `session_id` is not a valid UUID v4.
-
-#### Signature
-
-```python
-def _update(
- self,
- session_id: Union[str, UUID],
- situation: Optional[str] = None,
- metadata: Optional[Dict[str, Any]] = None,
- overwrite: bool = False,
- token_budget: Optional[int] = None,
- context_overflow: Optional[str] = None,
-) -> Union[ResourceUpdatedResponse, Awaitable[ResourceUpdatedResponse]]: ...
-```
-
-
-
-## SessionCreateArgs
-
-[Show source in session.py:37](../../../../../../julep/managers/session.py#L37)
-
-#### Signature
-
-```python
-class SessionCreateArgs(TypedDict): ...
-```
-
-
-
-## SessionUpdateArgs
-
-[Show source in session.py:47](../../../../../../julep/managers/session.py#L47)
-
-#### Signature
-
-```python
-class SessionUpdateArgs(TypedDict): ...
-```
-
-
-
-## SessionsManager
-
-[Show source in session.py:466](../../../../../../julep/managers/session.py#L466)
-
-A class responsible for managing session interactions.
-
-This class extends [BaseSessionsManager](#basesessionsmanager) and provides methods to get, create,
-list, delete, and update sessions, as well as to initiate a chat within a session,
-request suggestions, and access session history.
-
-#### Methods
-
-- `get` *(id* - Union[str, UUID]) -> Session:
- Retrieves a session by its identifier.
-
-create (
- *,
- - `user_id` - Union[str, UUID],
- - `agent_id` - Union[str, UUID],
- - `situation` - Optional[str]=None
-) -> ResourceCreatedResponse:
- Creates a new session given a user ID and an agent ID, and optionally
- a description of the situation.
-
-list (
- *,
- - `limit` - Optional[int]=None,
- - `offset` - Optional[int]=None
-) -> List[Session]:
- Lists sessions with optional pagination via limit and offset.
-
-- `delete` *(session_id* - Union[str, UUID]):
- Deletes a session identified by the given session ID.
-
-update (
- *,
- - `session_id` - Union[str, UUID],
- - `situation` - str
-) -> ResourceUpdatedResponse:
- Updates the situation of a specific session by its ID.
-
-chat (
- *args
- see full method signature for detailed arguments
-) -> ChatResponse:
- Initiates a chat in the given session with messages and various settings,
- including tools, penalties, biases, tokens, response format, etc.
-
-suggestions (
- *,
- - `session_id` - Union[str, UUID],
- - `limit` - Optional[int]=None,
- - `offset` - Optional[int]=None
-) -> List[Suggestion]:
- Retrieves a list of suggestions for a given session, supported by
- optional pagination parameters.
-
-history (
- *,
- - `session_id` - Union[str, UUID],
- - `limit` - Optional[int]=None,
- - `offset` - Optional[int]=None
-) -> List[ChatMlMessage]:
- Retrieves the chat history for a given session, supported by
- optional pagination parameters.
-
-- `delete_history` *(session_id* - Union[str, UUID]) -> None:
-
-Each method is decorated with `@beartype` for runtime type enforcement.
-
-#### Signature
-
-```python
-class SessionsManager(BaseSessionsManager): ...
-```
-
-#### See also
-
-- [BaseSessionsManager](#basesessionsmanager)
-
-### SessionsManager().chat
-
-[Show source in session.py:647](../../../../../../julep/managers/session.py#L647)
-
-Initiate a chat session with the provided inputs and configurations.
-
-#### Arguments
-
-- `session_id` *str* - Unique identifier for the chat session.
-- `messages` *List[InputChatMlMessage]* - List of messages to send in the chat session.
-- `tools` *Optional[List[Tool]], optional* - List of tools to be used in the session. Defaults to None.
-- `tool_choice` *Optional[ToolChoiceOption], optional* - The choice of tool to optimize response for. Defaults to None.
-- `frequency_penalty` *Optional[float], optional* - Penalty for frequent tokens to control repetition. Defaults to None.
-- `length_penalty` *Optional[float], optional* - Penalty for longer responses to control verbosity. Defaults to None.
-logit_bias (Optional[Dict[str, Optional[int]]], optional): Bias for or against specific tokens. Defaults to None.
-- `max_tokens` *Optional[int], optional* - Maximum number of tokens to generate in the response. Defaults to None.
-- `presence_penalty` *Optional[float], optional* - Penalty for new tokens to control topic introduction. Defaults to None.
-- `repetition_penalty` *Optional[float], optional* - Penalty to discourage repetition. Defaults to None.
-- `response_format` *Optional[ChatSettingsResponseFormat], optional* - Format of the response. Defaults to None.
-- `seed` *Optional[int], optional* - Random seed for deterministic responses. Defaults to None.
-- `stop` *Optional[ChatSettingsStop], optional* - Sequence at which to stop generating further tokens. Defaults to None.
-- `stream` *Optional[bool], optional* - Whether to stream responses or not. Defaults to None.
-- `temperature` *Optional[float], optional* - Sampling temperature for randomness in the response. Defaults to None.
-- `top_p` *Optional[float], optional* - Nucleus sampling parameter to control diversity. Defaults to None.
-- `recall` *Optional[bool], optional* - Whether to allow recalling previous parts of the chat. Defaults to None.
-- `remember` *Optional[bool], optional* - Whether to allow the model to remember previous chats. Defaults to None.
-
-#### Returns
-
-- `ChatResponse` - The response object after processing chat messages.
-
-#### Notes
-
-The 'beartype' decorator is used for runtime type checking.
-
-#### Signature
-
-```python
-@beartype
-def chat(
- self,
- session_id: str,
- messages: List[Union[InputChatMlMessageDict, InputChatMlMessage]],
- tools: Optional[List[Union[ToolDict, Tool]]] = None,
- tool_choice: Optional[ToolChoiceOption] = None,
- frequency_penalty: Optional[float] = None,
- length_penalty: Optional[float] = None,
- logit_bias: Optional[Dict[str, Optional[int]]] = None,
- max_tokens: Optional[int] = None,
- presence_penalty: Optional[float] = None,
- repetition_penalty: Optional[float] = None,
- response_format: Optional[
- Union[ChatSettingsResponseFormatDict, ChatSettingsResponseFormat]
- ] = None,
- seed: Optional[int] = None,
- stop: Optional[ChatSettingsStop] = None,
- stream: Optional[bool] = None,
- temperature: Optional[float] = None,
- top_p: Optional[float] = None,
- recall: Optional[bool] = None,
- remember: Optional[bool] = None,
-) -> ChatResponse: ...
-```
-
-### SessionsManager().create
-
-[Show source in session.py:551](../../../../../../julep/managers/session.py#L551)
-
-Create a new resource with a user ID and an agent ID, optionally including a situation description.
-
-#### Arguments
-
-user_id (Union[str, UUID]): The unique identifier for the user.
-agent_id (Union[str, UUID]): The unique identifier for the agent.
-- `situation` *Optional[str]* - An optional description of the situation.
-
-#### Returns
-
-- `Session` - The created Session object.
-
-#### Raises
-
-- `BeartypeException` - If the provided `user_id` or `agent_id` do not match the required type.
-Any other exception that `_create` might raise.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(Session)
-def create(self, **kwargs: SessionCreateArgs) -> Session: ...
-```
-
-#### See also
-
-- [SessionCreateArgs](#sessioncreateargs)
-
-### SessionsManager().delete
-
-[Show source in session.py:603](../../../../../../julep/managers/session.py#L603)
-
-Deletes a session based on its session ID.
-
-#### Arguments
-
-session_id (Union[str, UUID]): The session ID to be deleted, which can be a string or a UUID object.
-
-#### Returns
-
-The result from the internal `_delete` method call.
-
-#### Raises
-
-The specific exceptions that `self._delete` might raise, which should be documented in its docstring.
-
-#### Signature
-
-```python
-@beartype
-def delete(self, session_id: Union[str, UUID]): ...
-```
-
-### SessionsManager().delete_history
-
-[Show source in session.py:783](../../../../../../julep/managers/session.py#L783)
-
-Delete the history of a session.
-
-#### Arguments
-
-session_id (Union[str, UUID]): The unique identifier for the session.
-
-#### Returns
-
-- `None` - The result of the delete operation.
-
-#### Raises
-
-- `AssertionError` - If the `session_id` is not a valid UUID v4.
-
-#### Signature
-
-```python
-@beartype
-def delete_history(self, session_id: Union[str, UUID]) -> None: ...
-```
-
-### SessionsManager().get
-
-[Show source in session.py:534](../../../../../../julep/managers/session.py#L534)
-
-Retrieve a Session object based on a given identifier.
-
-Args:
- id (Union[str, UUID]): The identifier of the session, which can be either a string or a UUID.
-
-Returns:
- Session: The session object associated with the given id.
-
-Raises:
- TypeError: If the id is neither a string nor a UUID.
- KeyError: If the session with the given id does not exist.
-
-#### Signature
-
-```python
-@beartype
-def get(self, id: Union[str, UUID]) -> Session: ...
-```
-
-### SessionsManager().history
-
-[Show source in session.py:756](../../../../../../julep/managers/session.py#L756)
-
-Retrieve a history of ChatMl messages for a given session.
-
-This method uses the private method `_history` to fetch the message history and returns a list of ChatMlMessage objects.
-
-Args:
- session_id (Union[str, UUID]): The session identifier to fetch the chat history for.
- limit (Optional[int], optional): The maximum number of messages to return. If None, no limit is applied. Defaults to None.
- offset (Optional[int], optional): The offset from where to start fetching messages. If None, no offset is applied. Defaults to None.
-
-Returns:
- List[ChatMlMessage]: A list of ChatMlMessage objects representing the history of messages for the session.
-
-#### Signature
-
-```python
-@beartype
-def history(
- self,
- session_id: Union[str, UUID],
- limit: Optional[int] = None,
- offset: Optional[int] = None,
-) -> List[ChatMlMessage]: ...
-```
-
-### SessionsManager().list
-
-[Show source in session.py:572](../../../../../../julep/managers/session.py#L572)
-
-Retrieve a list of Session objects with optional pagination.
-
-Args:
- limit (Optional[int]): The maximum number of Session objects to return.
- Defaults to None, which indicates no limit.
- offset (Optional[int]): The number of items to skip before starting to return the results.
- Defaults to None, which indicates no offset.
-
-Returns:
- List[Session]: A list of Session objects meeting the criteria.
-
-Raises:
- BeartypeException: If the input arguments do not match their annotated types.
-
-#### Signature
-
-```python
-@beartype
-def list(
- self,
- limit: Optional[int] = None,
- offset: Optional[int] = None,
- metadata_filter: Dict[str, Any] = {},
-) -> List[Session]: ...
-```
-
-### SessionsManager().suggestions
-
-[Show source in session.py:722](../../../../../../julep/managers/session.py#L722)
-
-Provides a list of suggestion objects based on the given session ID.
-
-This method retrieves suggestions and is decorated with `beartype` for runtime type
-checking of the passed arguments.
-
-#### Arguments
-
-session_id (Union[str, UUID]): The ID of the session to retrieve suggestions for.
-- `limit` *Optional[int], optional* - The maximum number of suggestions to return.
- Defaults to None, which means no limit.
-- `offset` *Optional[int], optional* - The number to offset the list of returned
- suggestions by. Defaults to None, which means no offset.
-
-#### Returns
-
-- `List[Suggestion]` - A list of suggestion objects.
-
-#### Raises
-
-Any exceptions that `_suggestions` might raise, for example, if the method is unable
-to retrieve suggestions based on the provided session ID.
-
-#### Signature
-
-```python
-@beartype
-def suggestions(
- self,
- session_id: Union[str, UUID],
- limit: Optional[int] = None,
- offset: Optional[int] = None,
-) -> List[Suggestion]: ...
-```
-
-### SessionsManager().update
-
-[Show source in session.py:619](../../../../../../julep/managers/session.py#L619)
-
-Updates the state of a resource based on a given situation.
-
-This function is type-checked using beartype to ensure that the `session_id` parameter
-is either a string or a UUID and that the `situation` parameter is a string. It delegates
-the actual update process to an internal method '_update'.
-
-#### Arguments
-
-session_id (Union[str, UUID]): The session identifier, which can be a UUID or a
- string that uniquely identifies the session.
-- `situation` *str* - A string that represents the new situation for the resource update.
-- `overwrite` *bool, optional* - A flag to indicate whether to overwrite the existing
-
-#### Returns
-
-- `Session` - The updated Session object.
-
-#### Notes
-
-The `@beartype` decorator is used for runtime type checking of the function arguments.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(Session)
-def update(self, **kwargs: SessionUpdateArgs) -> Session: ...
-```
-
-#### See also
-
-- [SessionUpdateArgs](#sessionupdateargs)
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/managers/task.md b/docs/python-sdk-docs/julep/managers/task.md
deleted file mode 100644
index e295f2d5f..000000000
--- a/docs/python-sdk-docs/julep/managers/task.md
+++ /dev/null
@@ -1,608 +0,0 @@
-# Task
-
-[Julep Python SDK Index](../../README.md#julep-python-sdk-index) / [Julep](../index.md#julep) / [Managers](./index.md#managers) / Task
-
-> Auto-generated documentation for [julep.managers.task](../../../../../../julep/managers/task.py) module.
-
-- [Task](#task)
- - [AsyncTasksManager](#asynctasksmanager)
- - [BaseTasksManager](#basetasksmanager)
- - [StartTaskExecutionArgs](#starttaskexecutionargs)
- - [TaskCreateArgs](#taskcreateargs)
- - [TasksManager](#tasksmanager)
-
-## AsyncTasksManager
-
-[Show source in task.py:348](../../../../../../julep/managers/task.py#L348)
-
-A class for managing tasks, inheriting from [BaseTasksManager](#basetasksmanager).
-
-This class provides asynchronous functionalities to interact with and manage tasks, including creating, retrieving, start execution and get execution of tasks. It utilizes type annotations to ensure type correctness at runtime using the `beartype` decorator.
-
-#### Methods
-
-- `get(self,` *agent_id* - Union[UUID, str], task_id: Union[UUID, str]) -> Task:
- Asynchronously retrieves a single task given agent and task IDs.
-
-#### Arguments
-
-agent_id (Union[UUID, str]): The UUID of the agent
-task_id (Union[UUID, str]): The UUID of the task
-agent_id (Union[UUID, str]): Agent ID
-- `name` *str* - Task name
-- `description` *Optional[str]* - Task description
-- `tools_available` *Optional[List[str]]* - A list of available tools
-input_schema (Optional[Dict[str, Any]]): Input schema
-- `main` *List[WorkflowStep]* - A list of workflow steps
-task_id Union[UUID, str]: Task ID
-execution_id (Union[UUID, str]): Execution ID
-agent_id (Union[UUID, str]): Agent ID
-task_id (Union[UUID, str]): Task ID
-arguments (Dict[str, Any]): Task arguments
-- `status` *ExecutionStatus* - Task execution status
-agent_id (Union[UUID, str]): Agent ID
-
-#### Returns
-
-- `Task` - The task object with the corresponding identifier.
-
-- `create(self,` *agent_id* - Union[UUID, str], name: str, description: Optional[str] = None, tools_available: Optional[List[str]] = None, input_schema: Optional[Dict[str, Any]] = None, main: List[WorkflowStep]) -> Task:
- Asynchronously creates a task with the given specifications.
- - `Task` - A newly created task object.
-
-- `get_task_execution(self,` *task_id* - Union[UUID, str], execution_id: Union[UUID, str]) -> List[Execution]:
- Asynchronously retrieves task execution objects given a task and execution IDs
- - `List[Execution]` - A list of Execution objects
-
-- `start_task_execution(self,` *agent_id* - Union[UUID, str], task_id: Union[UUID, str], arguments: Dict[str, Any], status: ExecutionStatus) -> Execution:
- Asynchronously starts task execution given agent and task IDs and all the required parameters
- - `Execution` - A newly created execution object
-
-- `list(self,` *agent_id* - Union[UUID, str]) -> List[Task]:
- Asynchronously retrieves a list of tasks.
-
-- `List[Task]` - A list of Task objects.
-
-#### Signature
-
-```python
-class AsyncTasksManager(BaseTasksManager): ...
-```
-
-#### See also
-
-- [BaseTasksManager](#basetasksmanager)
-
-### AsyncTasksManager().create
-
-[Show source in task.py:418](../../../../../../julep/managers/task.py#L418)
-
-Asynchronously creates a task with the given specifications.
-
-#### Arguments
-
-agent_id (Union[UUID, str]): Agent ID
-- `name` *str* - Task name
-- `description` *Optional[str]* - Task description
-- `tools_available` *Optional[List[str]]* - A list of available tools
-input_schema (Optional[Dict[str, Any]]): Input schema
-- `main` *List[WorkflowStep]* - A list of workflow steps
-
-#### Returns
-
-- `Task` - A newly created task object.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(Task)
-async def create(self, **kwargs: TaskCreateArgs) -> Task: ...
-```
-
-#### See also
-
-- [TaskCreateArgs](#taskcreateargs)
-
-### AsyncTasksManager().get
-
-[Show source in task.py:436](../../../../../../julep/managers/task.py#L436)
-
-Asynchronously retrieves a single task given agent and task IDs.
-
-#### Arguments
-
-agent_id (Union[UUID, str]): The UUID of the agent
-task_id (Union[UUID, str]): The UUID of the task
-
-#### Returns
-
-- `Task` - The task object with the corresponding identifier.
-
-#### Signature
-
-```python
-@beartype
-async def get(self, agent_id: Union[UUID, str], task_id: Union[UUID, str]) -> Task: ...
-```
-
-### AsyncTasksManager().get_task_execution
-
-[Show source in task.py:449](../../../../../../julep/managers/task.py#L449)
-
-Asynchronously retrieves task execution objects given a task and execution IDs
-
-#### Arguments
-
-task_id Union[UUID, str]: Task ID
-execution_id (Union[UUID, str]): Execution ID
-
-#### Returns
-
-- `List[Execution]` - A list of Execution objects
-
-#### Signature
-
-```python
-@beartype
-async def get_task_execution(
- self, task_id: Union[UUID, str], execution_id: Union[UUID, str]
-) -> List[Execution]: ...
-```
-
-### AsyncTasksManager().list
-
-[Show source in task.py:402](../../../../../../julep/managers/task.py#L402)
-
-Asynchronously retrieves a list of tasks.
-
-#### Arguments
-
-agent_id (Union[UUID, str]): Agent ID
-
-#### Returns
-
-- `List[Task]` - A list of Task objects.
-
-#### Signature
-
-```python
-@beartype
-async def list(self, agent_id: Union[UUID, str]) -> List[Task]: ...
-```
-
-### AsyncTasksManager().start_task_execution
-
-[Show source in task.py:466](../../../../../../julep/managers/task.py#L466)
-
-Asynchronously starts task execution given agent and task IDs and all the required parameters
-
-#### Arguments
-
-agent_id (Union[UUID, str]): Agent ID
-task_id (Union[UUID, str]): Task ID
-arguments (Dict[str, Any]): Task arguments
-- `status` *ExecutionStatus* - Task execution status
-
-#### Returns
-
-- `Execution` - A newly created execution object
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(Execution)
-async def start_task_execution(self, **kwargs: StartTaskExecutionArgs) -> Execution: ...
-```
-
-#### See also
-
-- [StartTaskExecutionArgs](#starttaskexecutionargs)
-
-
-
-## BaseTasksManager
-
-[Show source in task.py:32](../../../../../../julep/managers/task.py#L32)
-
-A class responsible for managing task entities.
-
-This manager handles CRUD operations for tasks including retrieving, creating, starting execution, getting execution of tasks using an API client.
-
-#### Attributes
-
-- `api_client` *ApiClientType* - The client responsible for API interactions.
-
-#### Methods
-
-- `_get(self,` *agent_id* - Union[UUID, str], task_id: Union[UUID, str]) -> Union[Task, Awaitable[Task]]:
- Retrieves a single task given agent and task IDs.
-
-#### Arguments
-
- agent_id (Union[UUID, str]): The UUID of the agent
- task_id (Union[UUID, str]): The UUID of the task
- agent_id (Union[UUID, str]): Agent ID
- - `name` *str* - Task name
- - `description` *Optional[str]* - Task description
- - `tools_available` *Optional[List[str]]* - A list of available tools
- input_schema (Optional[Dict[str, Any]]): Input schema
- - `main` *List[WorkflowStep]* - A list of workflow steps
- task_id Union[UUID, str]: Task ID
- execution_id (Union[UUID, str]): Execution ID
- agent_id (Union[UUID, str]): Agent ID
- task_id (Union[UUID, str]): Task ID
- arguments (Dict[str, Any]): Task arguments
- - `status` *ExecutionStatus* - Task execution status
-agent_id (Union[UUID, str]): Agent ID
-
-#### Returns
-
-The task object or an awaitable that resolves to the task object.
-
-- `_create(self,` *agent_id* - Union[UUID, str], name: str, description: Optional[str] = None, tools_available: Optional[List[str]] = None, input_schema: Optional[Dict[str, Any]] = None, main: List[WorkflowStep]) -> Union[ResourceCreatedResponse, Awaitable[ResourceCreatedResponse]]:
- Creates a task with the given specifications.
- The response indicating creation or an awaitable that resolves to the creation response.
-
-- `_get_task_execution(self,` *task_id* - Union[UUID, str], execution_id: Union[UUID, str]) -> Union[List[Execution], Awaitable[List[Execution]]]:
- Retrieves task execution objects given a task and execution IDs
- A list of Execution objects
-
-- `_start_task_execution(self,` *agent_id* - Union[UUID, str], task_id: Union[UUID, str], arguments: Dict[str, Any], status: ExecutionStatus) -> Union[ResourceCreatedResponse, Awaitable[ResourceCreatedResponse]]:
- Starts task execution given agent and task IDs and all the required parameters
- The response indicating creation or an awaitable that resolves to the creation response.
-
-- `_list(self,` *agent_id* - Union[UUID, str]) -> Union[List[Task], Awaitable[List[Task]]]:
-Retrieves a list of tasks.
- - `List[Task]` - A list of Task objects.
-
-#### Signature
-
-```python
-class BaseTasksManager(BaseManager): ...
-```
-
-### BaseTasksManager()._create
-
-[Show source in task.py:105](../../../../../../julep/managers/task.py#L105)
-
-Creates a task with the given specifications.
-
-#### Arguments
-
-agent_id (Union[UUID, str]): Agent ID
-- `name` *str* - Task name
-- `description` *Optional[str]* - Task description
-- `tools_available` *Optional[List[str]]* - A list of available tools
-input_schema (Optional[Dict[str, Any]]): Input schema
-- `main` *List[WorkflowStep]* - A list of workflow steps
-
-#### Returns
-
-The response indicating creation or an awaitable that resolves to the creation response.
-
-#### Signature
-
-```python
-def _create(
- self,
- agent_id: Union[UUID, str],
- name: str,
- description: Optional[str] = None,
- tools_available: Optional[List[str]] = None,
- input_schema: Optional[Dict[str, Any]] = None,
- main: List[WorkflowStep],
-) -> Union[ResourceCreatedResponse, Awaitable[ResourceCreatedResponse]]: ...
-```
-
-### BaseTasksManager()._get
-
-[Show source in task.py:139](../../../../../../julep/managers/task.py#L139)
-
-Retrieves a single task given agent and task IDs.
-
-#### Arguments
-
-agent_id (Union[UUID, str]): The UUID of the agent
-task_id (Union[UUID, str]): The UUID of the task
-
-#### Returns
-
-The task object or an awaitable that resolves to the task object.
-
-#### Signature
-
-```python
-def _get(
- self, agent_id: Union[UUID, str], task_id: Union[UUID, str]
-) -> Union[Task, Awaitable[Task]]: ...
-```
-
-### BaseTasksManager()._get_task_execution
-
-[Show source in task.py:159](../../../../../../julep/managers/task.py#L159)
-
-Retrieves task execution objects given a task and execution IDs
-
-#### Arguments
-
-task_id Union[UUID, str]: Task ID
-execution_id (Union[UUID, str]): Execution ID
-
-#### Returns
-
-A list of Execution objects
-
-#### Signature
-
-```python
-def _get_task_execution(
- self, task_id: Union[UUID, str], execution_id: Union[UUID, str]
-) -> Union[List[Execution], Awaitable[List[Execution]]]: ...
-```
-
-### BaseTasksManager()._list
-
-[Show source in task.py:88](../../../../../../julep/managers/task.py#L88)
-
-Retrieves a list of tasks.
-
-#### Arguments
-
-agent_id (Union[UUID, str]): Agent ID
-
-#### Returns
-
-- `List[Task]` - A list of Task objects.
-
-#### Signature
-
-```python
-def _list(
- self, agent_id: Union[UUID, str]
-) -> Union[List[Task], Awaitable[List[Task]]]: ...
-```
-
-### BaseTasksManager()._start_task_execution
-
-[Show source in task.py:179](../../../../../../julep/managers/task.py#L179)
-
-Starts task execution given agent and task IDs and all the required parameters
-
-#### Arguments
-
-agent_id (Union[UUID, str]): Agent ID
-task_id (Union[UUID, str]): Task ID
-arguments (Dict[str, Any]): Task arguments
-- `status` *ExecutionStatus* - Task execution status
-
-#### Returns
-
-The response indicating creation or an awaitable that resolves to the creation response.
-
-#### Signature
-
-```python
-def _start_task_execution(
- self,
- agent_id: Union[UUID, str],
- task_id: Union[UUID, str],
- arguments: Dict[str, Any],
- status: ExecutionStatus,
-) -> Union[ResourceCreatedResponse, Awaitable[ResourceCreatedResponse]]: ...
-```
-
-
-
-## StartTaskExecutionArgs
-
-[Show source in task.py:25](../../../../../../julep/managers/task.py#L25)
-
-#### Signature
-
-```python
-class StartTaskExecutionArgs(TypedDict): ...
-```
-
-
-
-## TaskCreateArgs
-
-[Show source in task.py:16](../../../../../../julep/managers/task.py#L16)
-
-#### Signature
-
-```python
-class TaskCreateArgs(TypedDict): ...
-```
-
-
-
-## TasksManager
-
-[Show source in task.py:210](../../../../../../julep/managers/task.py#L210)
-
-A class for managing tasks, inheriting from [BaseTasksManager](#basetasksmanager).
-
-This class provides functionalities to interact with and manage tasks, including creating, retrieving, start execution and get execution of tasks. It utilizes type annotations to ensure type correctness at runtime using the `beartype` decorator.
-
-#### Methods
-
-- `get(self,` *agent_id* - Union[UUID, str], task_id: Union[UUID, str]) -> Task:
- Retrieves a single task given agent and task IDs.
-
-#### Arguments
-
-agent_id (Union[UUID, str]): The UUID of the agent
-task_id (Union[UUID, str]): The UUID of the task
-agent_id (Union[UUID, str]): Agent ID
-- `name` *str* - Task name
-- `description` *Optional[str]* - Task description
-- `tools_available` *Optional[List[str]]* - A list of available tools
-input_schema (Optional[Dict[str, Any]]): Input schema
-- `main` *List[WorkflowStep]* - A list of workflow steps
-task_id Union[UUID, str]: Task ID
-execution_id (Union[UUID, str]): Execution ID
-agent_id (Union[UUID, str]): Agent ID
-task_id (Union[UUID, str]): Task ID
-arguments (Dict[str, Any]): Task arguments
-- `status` *ExecutionStatus* - Task execution status
-agent_id (Union[UUID, str]): Agent ID
-
-#### Returns
-
-- `Task` - The task object with the corresponding identifier.
-
-- `create(self,` *agent_id* - Union[UUID, str], name: str, description: Optional[str] = None, tools_available: Optional[List[str]] = None, input_schema: Optional[Dict[str, Any]] = None, main: List[WorkflowStep]) -> Task:
- Creates a task with the given specifications.
- - `Task` - A newly created task object.
-
-- `get_task_execution(self,` *task_id* - Union[UUID, str], execution_id: Union[UUID, str]) -> List[Execution]:
- Retrieves task execution objects given a task and execution IDs
- - `List[Execution]` - A list of Execution objects
-
-- `start_task_execution(self,` *agent_id* - Union[UUID, str], task_id: Union[UUID, str], arguments: Dict[str, Any], status: ExecutionStatus) -> Execution:
- Starts task execution given agent and task IDs and all the required parameters
- - `Execution` - A newly created execution object
-
-- `list(self,` *agent_id* - Union[UUID, str]) -> List[Task]:
- Retrieves a list of tasks.
- - `List[Task]` - A list of Task objects.
-
-#### Signature
-
-```python
-class TasksManager(BaseTasksManager): ...
-```
-
-#### See also
-
-- [BaseTasksManager](#basetasksmanager)
-
-### TasksManager().create
-
-[Show source in task.py:282](../../../../../../julep/managers/task.py#L282)
-
-Creates a task with the given specifications.
-
-#### Arguments
-
-agent_id (Union[UUID, str]): Agent ID
-- `name` *str* - Task name
-- `description` *Optional[str]* - Task description
-- `tools_available` *Optional[List[str]]* - A list of available tools
-input_schema (Optional[Dict[str, Any]]): Input schema
-- `main` *List[WorkflowStep]* - A list of workflow steps
-
-#### Returns
-
-- `Task` - A newly created task object.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(Task)
-def create(self, **kwargs: TaskCreateArgs) -> Task: ...
-```
-
-#### See also
-
-- [TaskCreateArgs](#taskcreateargs)
-
-### TasksManager().get
-
-[Show source in task.py:300](../../../../../../julep/managers/task.py#L300)
-
-Retrieves a single task given agent and task IDs.
-
-#### Arguments
-
-agent_id (Union[UUID, str]): The UUID of the agent
-task_id (Union[UUID, str]): The UUID of the task
-
-#### Returns
-
-- `Task` - The task object with the corresponding identifier.
-
-#### Signature
-
-```python
-@beartype
-def get(self, agent_id: Union[UUID, str], task_id: Union[UUID, str]) -> Task: ...
-```
-
-### TasksManager().get_task_execution
-
-[Show source in task.py:313](../../../../../../julep/managers/task.py#L313)
-
-Retrieves task execution objects given a task and execution IDs
-
-#### Arguments
-
-task_id Union[UUID, str]: Task ID
-execution_id (Union[UUID, str]): Execution ID
-
-#### Returns
-
-- `List[Execution]` - A list of Execution objects
-
-#### Signature
-
-```python
-@beartype
-def get_task_execution(
- self, task_id: Union[UUID, str], execution_id: Union[UUID, str]
-) -> List[Execution]: ...
-```
-
-### TasksManager().list
-
-[Show source in task.py:263](../../../../../../julep/managers/task.py#L263)
-
-Retrieves a list of tasks.
-
-#### Arguments
-
-agent_id (Union[UUID, str]): Agent ID
-
-#### Returns
-
-- `List[Task]` - A list of Task objects.
-
-#### Signature
-
-```python
-@beartype
-def list(self, agent_id: Union[UUID, str]) -> List[Task]: ...
-```
-
-### TasksManager().start_task_execution
-
-[Show source in task.py:331](../../../../../../julep/managers/task.py#L331)
-
-Starts task execution given agent and task IDs and all the required parameters
-
-#### Arguments
-
-agent_id (Union[UUID, str]): Agent ID
-task_id (Union[UUID, str]): Task ID
-arguments (Dict[str, Any]): Task arguments
-- `status` *ExecutionStatus* - Task execution status
-
-#### Returns
-
-- `Execution` - A newly created execution object
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(Execution)
-def start_task_execution(self, **kwargs: StartTaskExecutionArgs) -> Execution: ...
-```
-
-#### See also
-
-- [StartTaskExecutionArgs](#starttaskexecutionargs)
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/managers/tool.md b/docs/python-sdk-docs/julep/managers/tool.md
deleted file mode 100644
index 73889b87a..000000000
--- a/docs/python-sdk-docs/julep/managers/tool.md
+++ /dev/null
@@ -1,521 +0,0 @@
-# Tool
-
-[Julep Python SDK Index](../../README.md#julep-python-sdk-index) / [Julep](../index.md#julep) / [Managers](./index.md#managers) / Tool
-
-> Auto-generated documentation for [julep.managers.tool](../../../../../../julep/managers/tool.py) module.
-
-- [Tool](#tool)
- - [AsyncToolsManager](#asynctoolsmanager)
- - [BaseToolsManager](#basetoolsmanager)
- - [ToolsManager](#toolsmanager)
-
-## AsyncToolsManager
-
-[Show source in tool.py:352](../../../../../../julep/managers/tool.py#L352)
-
-A manager for asynchronous tools handling.
-
-This class provides async methods to manage tools, allowing create, retrieve, update, and delete operations.
-
-Methods:
- get: Asynchronously retrieves tools associated with an agent.
- create: Asynchronously creates a new tool associated with an agent.
- delete: Asynchronously deletes a tool associated with an agent.
- update: Asynchronously updates a tool associated with an agent.
-
-Attributes:
- Inherited from BaseToolsManager.
-
-#### Signature
-
-```python
-class AsyncToolsManager(BaseToolsManager): ...
-```
-
-#### See also
-
-- [BaseToolsManager](#basetoolsmanager)
-
-### AsyncToolsManager().create
-
-[Show source in tool.py:403](../../../../../../julep/managers/tool.py#L403)
-
-Create a new resource asynchronously.
-
-This method creates a new resource using the provided `agent_id` and `tool` information.
-
-#### Arguments
-
-agent_id (Union[str, UUID]): The identifier of the agent, which can be a string or a UUID object.
-- `tool` *ToolDict* - A dictionary containing tool-specific data.
-
-#### Returns
-
-- `ResourceCreatedResponse` - An object representing the response received after creating the resource.
-
-#### Raises
-
-- `BeartypeException` - If the type of any argument does not match the expected type.
-
-#### Signature
-
-```python
-@beartype
-async def create(
- self, agent_id: Union[str, UUID], tool: ToolDict
-) -> ResourceCreatedResponse: ...
-```
-
-### AsyncToolsManager().delete
-
-[Show source in tool.py:430](../../../../../../julep/managers/tool.py#L430)
-
-Asynchronously delete a specified agent-tool association.
-
-This function is a high-level asynchronous API that delegates to a
-private coroutinal method `_delete` to perform the actual deletion based on
-the provided `agent_id` and `tool_id`.
-
-Args:
- agent_id (Union[str, UUID]): The unique identifier of the agent.
- tool_id (Union[str, UUID]): The unique identifier of the tool.
-
-Returns:
- The return type is not explicitly stated in the function signature.
- Typically, the returned value would be documented here, but you may need
- to investigate the implementation of `_delete` to determine what it
- returns.
-
-Raises:
- The exceptions that this function might raise are not stated in the
- snippet provided. If the private method `_delete` raises any exceptions,
- they should be documented here. Depending on the implementation, common
- exceptions might include `ValueError` if identifiers are invalid or
- `RuntimeError` if deletion fails.
-
-#### Signature
-
-```python
-@beartype
-async def delete(
- self, agent_id: Union[str, UUID], tool_id: Union[str, UUID]
-) -> Awaitable[ResourceDeletedResponse]: ...
-```
-
-### AsyncToolsManager().get
-
-[Show source in tool.py:368](../../../../../../julep/managers/tool.py#L368)
-
-Asynchronously get a list of Tool objects based on provided filters.
-
-This method fetches Tool objects with the option to limit the results and
-offset them, to allow for pagination.
-
-#### Arguments
-
-agent_id (Union[str, UUID]): The unique identifier of the agent for which to fetch tools.
-- `limit` *Optional[int], optional* - The maximum number of tools to return. Defaults to None, which implies no limit.
-- `offset` *Optional[int], optional* - The number of tools to skip before starting to return the tools. Defaults to None, which means start from the beginning.
-
-#### Returns
-
-- `List[Tool]` - A list of Tool objects that match the criteria.
-
-#### Notes
-
-This function is decorated with beartype, which assures that the input
-arguments adhere to the specified types at runtime. It is an asynchronous
-function and should be called with `await`.
-
-#### Signature
-
-```python
-@beartype
-async def get(
- self,
- agent_id: Union[str, UUID],
- limit: Optional[int] = None,
- offset: Optional[int] = None,
-) -> List[Tool]: ...
-```
-
-### AsyncToolsManager().update
-
-[Show source in tool.py:466](../../../../../../julep/managers/tool.py#L466)
-
-Asynchronously updates a resource identified by the agent_id and tool_id with a new definition.
-
-This function is type-enforced using the `beartype` decorator.
-
-#### Arguments
-
-agent_id (Union[str, UUID]): The unique identifier for the agent.
-tool_id (Union[str, UUID]): The unique identifier for the tool.
-- `function` *FunctionDefDict* - A dictionary containing the function definition which needs to be updated.
-
-#### Returns
-
-- `ResourceUpdatedResponse` - An object representing the response received after updating the resource.
-
-#### Raises
-
-This will depend on the implementation of the `_update` method and any exceptions that it raises.
-
-#### Signature
-
-```python
-@beartype
-async def update(
- self,
- agent_id: Union[str, UUID],
- tool_id: Union[str, UUID],
- function: FunctionDefDict,
-) -> ResourceUpdatedResponse: ...
-```
-
-
-
-## BaseToolsManager
-
-[Show source in tool.py:22](../../../../../../julep/managers/tool.py#L22)
-
-A class to manage tools by interacting with an API client.
-
-This class provides methods for creating, reading, updating, and deleting tools associated with agents. It ensures the validity of UUIDs for agent_id and tool_id where applicable and handles both synchronous and asynchronous operations.
-
-#### Attributes
-
-- `api_client` - The API client used to send requests to the service.
-
-#### Methods
-
-- `_get(self,` *agent_id* - Union[str, UUID], limit: Optional[int]=None, offset: Optional[int]=None) -> Union[GetAgentToolsResponse, Awaitable[GetAgentToolsResponse]]:
- Retrieves a list of tools associated with the specified agent. Supports pagination through limit and offset parameters.
-
-- `_create(self,` *agent_id* - Union[str, UUID], tool: ToolDict) -> Union[ResourceCreatedResponse, Awaitable[ResourceCreatedResponse]]:
- Creates a new tool associated with the specified agent.
-
-- `_update(self,` *agent_id* - Union[str, UUID], tool_id: Union[str, UUID], function: FunctionDefDict) -> Union[ResourceUpdatedResponse, Awaitable[ResourceUpdatedResponse]]:
- Updates the definition of an existing tool associated with the specified agent.
-
-- `_delete(self,` *agent_id* - Union[str, UUID], tool_id: Union[str, UUID]):
- Deletes a tool associated with the specified agent.
-
-#### Signature
-
-```python
-class BaseToolsManager(BaseManager): ...
-```
-
-### BaseToolsManager()._create
-
-[Show source in tool.py:77](../../../../../../julep/managers/tool.py#L77)
-
-Create a new tool associated with a given agent.
-
-Args:
- agent_id (Union[str, UUID]): The ID of the agent for which to create the tool. Must be a valid UUID v4.
- tool (ToolDict): A dictionary with tool data conforming to the CreateToolRequest structure.
-
-Returns:
- Union[ResourceCreatedResponse, Awaitable[ResourceCreatedResponse]]: The response object indicating the newly created tool,
- either as a direct response or as an awaitable if it's an asynchronous operation.
-
-#### Signature
-
-```python
-def _create(
- self, agent_id: Union[str, UUID], tool: ToolDict
-) -> Union[ResourceCreatedResponse, Awaitable[ResourceCreatedResponse]]: ...
-```
-
-### BaseToolsManager()._delete
-
-[Show source in tool.py:142](../../../../../../julep/managers/tool.py#L142)
-
-Delete a tool associated with an agent.
-
-Args:
- agent_id (Union[str, UUID]): The UUID of the agent.
- tool_id (Union[str, UUID]): The UUID of the tool to be deleted.
-
-Returns:
- The response from the API client's delete_agent_tool method.
-
-Raises:
- AssertionError: If either `agent_id` or `tool_id` is not a valid UUID v4.
-
-#### Signature
-
-```python
-def _delete(
- self, agent_id: Union[str, UUID], tool_id: Union[str, UUID]
-) -> Union[ResourceDeletedResponse, Awaitable[ResourceDeletedResponse]]: ...
-```
-
-### BaseToolsManager()._get
-
-[Show source in tool.py:45](../../../../../../julep/managers/tool.py#L45)
-
-Retrieve tools associated with the given agent.
-
-This is a private method that fetches tools for the provided agent ID, with optional
-limit and offset parameters for pagination.
-
-#### Arguments
-
-agent_id (Union[str, UUID]): The unique identifier for the agent, which can be a
- string or UUID object.
-- `limit` *Optional[int], optional* - The maximum number of tools to retrieve. Defaults to None.
-- `offset` *Optional[int], optional* - The number of tools to skip before starting to collect
- the result set. Defaults to None.
-
-#### Returns
-
-- `Union[GetAgentToolsResponse,` *Awaitable[GetAgentToolsResponse]]* - The response object which
-contains the list of tools, or an awaitable response object for asynchronous operations.
-
-#### Raises
-
-- `AssertionError` - If the agent_id is not a valid UUID v4.
-
-#### Signature
-
-```python
-def _get(
- self,
- agent_id: Union[str, UUID],
- limit: Optional[int] = None,
- offset: Optional[int] = None,
-) -> Union[GetAgentToolsResponse, Awaitable[GetAgentToolsResponse]]: ...
-```
-
-### BaseToolsManager()._update
-
-[Show source in tool.py:102](../../../../../../julep/managers/tool.py#L102)
-
-Update the tool definition for a given agent.
-
-Args:
- agent_id (Union[str, UUID]): The unique identifier for the agent, either in string or UUID format.
- tool_id (Union[str, UUID]): The unique identifier for the tool, either in string or UUID format.
- function (FunctionDefDict): A dictionary containing the function definition that conforms with the required API schema.
- overwrite (bool): A flag to indicate whether to overwrite the existing function definition. Defaults to False.
-
-Returns:
- Union[ResourceUpdatedResponse, Awaitable[ResourceUpdatedResponse]]: The updated resource response sync or async.
-
-Raises:
- AssertionError: If the `agent_id` or `tool_id` is not a valid UUID v4.
-
-#### Signature
-
-```python
-def _update(
- self,
- agent_id: Union[str, UUID],
- tool_id: Union[str, UUID],
- function: FunctionDefDict,
- overwrite: bool = False,
-) -> Union[ResourceUpdatedResponse, Awaitable[ResourceUpdatedResponse]]: ...
-```
-
-
-
-## ToolsManager
-
-[Show source in tool.py:170](../../../../../../julep/managers/tool.py#L170)
-
-A manager class for handling tools related to agents.
-
-This class provides an interface to manage tools, including their retrieval, creation,
-deletion, and updating. It extends the functionalities of the BaseToolsManager.
-
-#### Methods
-
-get:
- Retrieves a list of tools for the given agent.
-
-#### Arguments
-
-agent_id (Union[str, UUID]): The identifier of the agent whose tools are being retrieved.
-- `limit` *Optional[int], optional* - The maximum number of tools to retrieve.
-- `offset` *Optional[int], optional* - The index from which to start the retrieval.
-
-agent_id (Union[str, UUID]): The identifier of the agent for whom the tool is being created.
-- `tool` *ToolDict* - A dictionary of tool attributes.
-
-agent_id (Union[str, UUID]): The identifier of the agent whose tool is being deleted.
-tool_id (Union[str, UUID]): The unique identifier of the tool to be deleted.
-
-update:
- Updates the definition of an existing tool for the given agent.
-
-agent_id (Union[str, UUID]): The identifier of the agent whose tool is being updated.
-tool_id (Union[str, UUID]): The unique identifier of the tool to be updated.
-- `function` *FunctionDefDict* - A dictionary representing the definition of the tool to be updated.
-
-#### Returns
-
-- `List[Tool]` - A list of Tool objects.
-
-create:
- Creates a new tool for the given agent.
-
-- `ResourceCreatedResponse` - An object indicating the successful creation of the tool.
-
-delete:
- Deletes a tool for the given agent.
-
-- `ResourceUpdatedResponse` - An object indicating the successful update of the tool.
-
-Inherits:
- - [BaseToolsManager](#basetoolsmanager) - A base class that defines the basic operations for tool management.
-
-#### Signature
-
-```python
-class ToolsManager(BaseToolsManager): ...
-```
-
-#### See also
-
-- [BaseToolsManager](#basetoolsmanager)
-
-### ToolsManager().create
-
-[Show source in tool.py:252](../../../../../../julep/managers/tool.py#L252)
-
-Create a new resource with the provided agent identifier and tool information.
-
-This method wraps the internal `_create` method to construct and return a ResourceCreatedResponse.
-
-Args:
- agent_id (Union[str, UUID]): The unique identifier for the agent. Can be a string or a UUID object.
- tool (ToolDict): A dictionary containing tool-specific configuration or information.
-
-Returns:
- ResourceCreatedResponse: An object representing the successfully created resource, including metadata like creation timestamps and resource identifiers.
-
-Raises:
- TypeError: If the `agent_id` or `tool` arguments are not of the expected type.
- ValueError: If any values within the `tool` dictionary are invalid or out of accepted range.
- RuntimeError: If the creation process encounters an unexpected error.
-
-Note:
- The `@beartype` decorator is used to enforce type checking of the arguments at runtime.
-
-Example usage:
-
-```python
->>> response = instance.create(agent_id="123e4567-e89b-12d3-a456-426614174000", tool={"type": "screwdriver", "size": "M4"})
->>> print(response)
-ResourceCreatedResponse(resource_id='abcde-12345', created_at='2021-01-01T12:00:00Z')
-```
-
-#### Signature
-
-```python
-@beartype
-def create(
- self, agent_id: Union[str, UUID], tool: ToolDict
-) -> ResourceCreatedResponse: ...
-```
-
-### ToolsManager().delete
-
-[Show source in tool.py:290](../../../../../../julep/managers/tool.py#L290)
-
-Deletes an agent's access to a specific tool.
-
-#### Arguments
-
-agent_id (Union[str, UUID]): The unique identifier of the agent.
-tool_id (Union[str, UUID]): The unique identifier of the tool.
-
-#### Returns
-
-The result of the delete operation, the specific type of which may depend on the implementation of `_delete`.
-
-#### Raises
-
-- `Beartype` *exceptions* - If `agent_id` or `tool_id` are of the wrong type.
-
-#### Signature
-
-```python
-@beartype
-def delete(self, agent_id: Union[str, UUID], tool_id: Union[str, UUID]): ...
-```
-
-### ToolsManager().get
-
-[Show source in tool.py:221](../../../../../../julep/managers/tool.py#L221)
-
-Retrieve a list of Tool objects for the specified agent.
-
-This method wraps the internal _get method and returns the 'items' property
-from the result, which contains a list of Tool instances.
-
-Args:
- agent_id (Union[str, UUID]): The ID of the agent to retrieve Tool objects for.
- limit (Optional[int]): The maximum number of Tool objects to return. Defaults to None, implying no limit.
- offset (Optional[int]): The number to skip before starting to collect the result set. Defaults to None, implying no offset.
-
-Returns:
- List[Tool]: A list of Tool instances associated with the specified agent ID.
-
-Raises:
- BeartypeException: If the input argument types do not match the expected types.
-
-#### Signature
-
-```python
-@beartype
-def get(
- self,
- agent_id: Union[str, UUID],
- limit: Optional[int] = None,
- offset: Optional[int] = None,
-) -> List[Tool]: ...
-```
-
-### ToolsManager().update
-
-[Show source in tool.py:315](../../../../../../julep/managers/tool.py#L315)
-
-Update a specific tool definition for an agent.
-
-#### Arguments
-
-agent_id (Union[str, UUID]): The unique identifier of the agent.
-tool_id (Union[str, UUID]): The unique identifier of the tool to be updated.
-- `function` *FunctionDefDict* - A dictionary containing the new definition of the tool.
-- `overwrite` *bool* - A flag indicating whether to overwrite the existing definition.
-
-#### Returns
-
-- `ResourceUpdatedResponse` - An object representing the update operation response.
-
-#### Notes
-
-This function is decorated with `beartype` which ensures that the arguments provided
-match the expected types at runtime.
-
-#### Raises
-
-- `BeartypeDecorHintPepParamException` - If the type of any parameter does not match the expected type.
-Any exceptions that `self._update` method might raise.
-
-#### Signature
-
-```python
-@beartype
-def update(
- self,
- agent_id: Union[str, UUID],
- tool_id: Union[str, UUID],
- function: FunctionDefDict,
- overwrite: bool = False,
-) -> ResourceUpdatedResponse: ...
-```
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/managers/types.md b/docs/python-sdk-docs/julep/managers/types.md
deleted file mode 100644
index 03813b1c6..000000000
--- a/docs/python-sdk-docs/julep/managers/types.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# Types
-
-[Julep Python SDK Index](../../README.md#julep-python-sdk-index) / [Julep](../index.md#julep) / [Managers](./index.md#managers) / Types
-
-> Auto-generated documentation for [julep.managers.types](../../../../../../julep/managers/types.py) module.
-
-#### Attributes
-
-- `ChatSettingsResponseFormatDict` - Represents the settings for chat response formatting, used in configuring agent chat behavior.: TypedDict('ChatSettingsResponseFormat', **{k: v.outer_type_ for (k, v) in ChatSettingsResponseFormat.__fields__.items()})
-
-- `InputChatMlMessageDict` - Represents an input message for chat in ML format, used for processing chat inputs.: TypedDict('InputChatMlMessage', **{k: v.outer_type_ for (k, v) in InputChatMlMessage.__fields__.items()})
-
-- `ToolDict` - Represents the structure of a tool, used for defining tools within the system.: TypedDict('Tool', **{k: v.outer_type_ for (k, v) in Tool.__fields__.items()})
-
-- `DocDict` - Represents the serialized form of a document, used for API communication.: TypedDict('DocDict', **{k: v.outer_type_ for (k, v) in CreateDoc.__fields__.items()})
-
-- `DefaultSettingsDict` - Represents the default settings for an agent, used in agent configuration.: TypedDict('DefaultSettingsDict', **{k: v.outer_type_ for (k, v) in AgentDefaultSettings.__fields__.items()})
-
-- `FunctionDefDict` - Represents the definition of a function, used for defining functions within the system.: TypedDict('FunctionDefDict', **{k: v.outer_type_ for (k, v) in FunctionDef.__fields__.items()})
-
-- `ToolDict` - Represents the request structure for creating a tool, used in tool creation API calls.: TypedDict('ToolDict', **{k: v.outer_type_ for (k, v) in CreateToolRequest.__fields__.items()})
-- [Types](#types)
diff --git a/docs/python-sdk-docs/julep/managers/user.md b/docs/python-sdk-docs/julep/managers/user.md
deleted file mode 100644
index 606b2f5c9..000000000
--- a/docs/python-sdk-docs/julep/managers/user.md
+++ /dev/null
@@ -1,621 +0,0 @@
-# User
-
-[Julep Python SDK Index](../../README.md#julep-python-sdk-index) / [Julep](../index.md#julep) / [Managers](./index.md#managers) / User
-
-> Auto-generated documentation for [julep.managers.user](../../../../../../julep/managers/user.py) module.
-
-- [User](#user)
- - [AsyncUsersManager](#asyncusersmanager)
- - [BaseUsersManager](#baseusersmanager)
- - [UserCreateArgs](#usercreateargs)
- - [UserUpdateArgs](#userupdateargs)
- - [UsersManager](#usersmanager)
-
-## AsyncUsersManager
-
-[Show source in user.py:358](../../../../../../julep/managers/user.py#L358)
-
-A class that provides asynchronous management of users extending BaseUsersManager.
-
-Attributes are inherited from BaseUsersManager.
-
-#### Methods
-
-get (Union[UUID, str]) -> User:
- Asynchronously retrieves a user by their unique identifier (either a UUID or a string).
-
-create (*, name: str, about: str, docs: List[DocDict]=[]) -> ResourceCreatedResponse:
- Asynchronously creates a new user with the given name, about description, and optional list of documents.
-
-list (*, limit: Optional[int]=None, offset: Optional[int]=None) -> List[User]:
- Asynchronously retrieves a list of users with an optional limit and offset for pagination.
-
-delete (*, user_id: Union[str, UUID]) -> None:
- Asynchronously deletes a user identified by their unique ID (either a string or a UUID).
-
-update (*, user_id: Union[str, UUID], about: Optional[str]=None, name: Optional[str]=None) -> ResourceUpdatedResponse:
- Asynchronously updates a user's information identified by their unique ID with optional new about description and name.
-
-#### Notes
-
-The beartype decorator is used for runtime type checking of the parameters passed to the methods.
-
-#### Signature
-
-```python
-class AsyncUsersManager(BaseUsersManager): ...
-```
-
-#### See also
-
-- [BaseUsersManager](#baseusersmanager)
-
-### AsyncUsersManager().create
-
-[Show source in user.py:402](../../../../../../julep/managers/user.py#L402)
-
-Asynchronously create a new resource with the provided name, description, and documents.
-
-This function is decorated with `@beartype` to ensure type checking at runtime.
-
-#### Arguments
-
-- `name` *str* - The name of the resource to be created.
-- `about` *str* - Brief information about the resource.
-- `docs` *List[DocDict], optional* - A list of document dictionaries with structure defined by DocDict type.
-
-#### Returns
-
-- `ResourceCreatedResponse` - An instance representing the response after resource creation.
-
-#### Raises
-
-- `BeartypeException` - If any of the parameters do not match their annotated types.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(User)
-async def create(self, **kwargs: UserCreateArgs) -> User: ...
-```
-
-#### See also
-
-- [UserCreateArgs](#usercreateargs)
-
-### AsyncUsersManager().delete
-
-[Show source in user.py:461](../../../../../../julep/managers/user.py#L461)
-
-Asynchronously deletes a user by their user ID.
-
-#### Arguments
-
-user_id (Union[str, UUID]): The unique identifier of the user to delete, which can be a string or a UUID.
-
-#### Returns
-
-- `None` - This function does not return anything.
-
-#### Notes
-
-- The function is decorated with `@beartype` for runtime type checking.
-- This function is a coroutine, it should be called with `await`.
-
-#### Raises
-
-- The raised exceptions depend on the implementation of the underlying `_delete` coroutine.
-
-#### Signature
-
-```python
-@beartype
-async def delete(self, user_id: Union[str, UUID]) -> None: ...
-```
-
-### AsyncUsersManager().get
-
-[Show source in user.py:384](../../../../../../julep/managers/user.py#L384)
-
-Fetch a User object asynchronously by its identifier.
-
-This method retrieves a User object from some data storage asynchronously based on the provided identifier, which can be either a UUID or a string.
-
-#### Arguments
-
-id (Union[UUID, str]): The unique identifier of the User to be retrieved.
-
-#### Returns
-
-- `User` - An instance of the User class corresponding to the given id.
-
-#### Raises
-
-- `Exception` - If the retrieval fails or the user cannot be found.
-
-#### Signature
-
-```python
-@beartype
-async def get(self, id: Union[UUID, str]) -> User: ...
-```
-
-### AsyncUsersManager().list
-
-[Show source in user.py:424](../../../../../../julep/managers/user.py#L424)
-
-Asynchronously lists users with optional limits and offsets.
-
-This function applies the `beartype` decorator for runtime type checking.
-
-#### Arguments
-
-- `limit` *Optional[int], optional* - The maximum number of users to be returned. Defaults to None, which means no limit.
-- `offset` *Optional[int], optional* - The number to offset the list of returned users by. Defaults to None, which means no offset.
-
-#### Returns
-
-- `List[User]` - A list of user objects.
-
-#### Raises
-
-- `TypeError` - If any input arguments are not of the expected type.
-Any other exception that might be raised during the retrieval of users from the data source.
-
-#### Notes
-
-The actual exception raised by the `beartype` decorator or during the users' retrieval will depend on the implementation detail of the `self._list_items` method and the `beartype` configuration.
-
-#### Signature
-
-```python
-@beartype
-async def list(
- self,
- limit: Optional[int] = None,
- offset: Optional[int] = None,
- metadata_filter: Dict[str, Any] = {},
-) -> List[User]: ...
-```
-
-### AsyncUsersManager().update
-
-[Show source in user.py:486](../../../../../../julep/managers/user.py#L486)
-
-Asynchronously updates user details.
-
-This function updates user details such as 'about' and 'name'. It uses type annotations to enforce the types of the parameters and an asynchronous call to '_update' method to perform the actual update operation.
-
-#### Arguments
-
-user_id (Union[str, UUID]): The unique identifier of the user, which can be either a string or a UUID.
-- `about` *Optional[str], optional* - A description of the user. Default is None, indicating no update.
-- `name` *Optional[str], optional* - The name of the user. Default is None, indicating no update.
-
-#### Returns
-
-- `ResourceUpdatedResponse` - An object representing the update status.
-
-#### Notes
-
-This function is decorated with @beartype to perform runtime type checking.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(User)
-async def update(self, user_id: Union[str, UUID], **kwargs: UserUpdateArgs) -> User: ...
-```
-
-#### See also
-
-- [UserUpdateArgs](#userupdateargs)
-
-
-
-## BaseUsersManager
-
-[Show source in user.py:36](../../../../../../julep/managers/user.py#L36)
-
-A manager class for handling user-related operations through an API client.
-
-This class provides high-level methods to interact with user records,
-such as retrieving a user by ID, creating a new user, listing all users,
-deleting a user, and updating a user's details.
-
-Attributes:
- api_client: The API client instance to communicate with the user service.
-
-Methods:
- _get: Retrieve a user by a unique UUID.
- _create: Create a new user with the specified name and about fields, and optionally additional documents.
- _list_items: List users with optional pagination through limit and offset parameters.
- _delete: Delete a user by UUID.
- _update: Update user details such as the 'about' description and name by UUID.
-
-Raises:
- AssertionError: If the provided ID for the user operations is not a valid UUID v4.
-
-#### Signature
-
-```python
-class BaseUsersManager(BaseManager): ...
-```
-
-### BaseUsersManager()._create
-
-[Show source in user.py:79](../../../../../../julep/managers/user.py#L79)
-
-Create a new resource with the given name and about information, optionally including additional docs.
-
-This internal method allows for creating a new resource with optional docsrmation.
-
-#### Arguments
-
-- `name` *str* - The name of the new resource.
-- `about` *str* - A brief description about the new resource.
-- `docs` *List[DocDict], optional* - A list of dictionaries with documentation-related information. Each dictionary
- must conform to the structure expected by CreateDoc. Defaults to an empty list.
-metadata (Dict[str, Any])
-
-#### Returns
-
-- `Union[ResourceCreatedResponse,` *Awaitable[ResourceCreatedResponse]]* - The response indicating the resource has been
-created successfully. It can be either a synchronous ResourceCreatedResponse or an asynchronous Awaitable object
-containing a ResourceCreatedResponse.
-
-#### Notes
-
-This method is an internal API implementation detail and should not be used directly outside the defining class
-or module.
-
-Side effects:
- Modifies internal state by converting each doc dict to an instance of CreateDoc and uses the
- internal API client to create a new user resource.
-
-#### Signature
-
-```python
-def _create(
- self, name: str, about: str, docs: List[DocDict] = [], metadata: Dict[str, Any] = {}
-) -> Union[ResourceCreatedResponse, Awaitable[ResourceCreatedResponse]]: ...
-```
-
-### BaseUsersManager()._delete
-
-[Show source in user.py:144](../../../../../../julep/managers/user.py#L144)
-
-Delete a user given their user ID.
-
-Args:
- user_id (Union[str, UUID]): The identifier of the user. Must be a valid UUID version 4.
-
-Returns:
- Union[None, Awaitable[None]]: None if the deletion is synchronous, or an Awaitable
- that resolves to None if the deletion is asynchronous.
-
-Raises:
- AssertionError: If the user_id is not a valid UUID v4.
-
-#### Signature
-
-```python
-def _delete(self, user_id: Union[str, UUID]) -> Union[None, Awaitable[None]]: ...
-```
-
-### BaseUsersManager()._get
-
-[Show source in user.py:58](../../../../../../julep/managers/user.py#L58)
-
-Get the user by their ID.
-
-This method is intended to retrieve a User object or an Awaitable User object by the user's unique identifier. The identifier can be a string representation of a UUID or a UUID object itself.
-
-#### Arguments
-
-id (Union[str, UUID]): The unique identifier of the user to retrieve. It must be a valid UUID v4.
-
-#### Returns
-
-- `Union[User,` *Awaitable[User]]* - The retrieved User instance or an Awaitable that resolves to a User instance.
-
-#### Raises
-
-- `AssertionError` - If the `id` is not a valid UUID v4.
-
-#### Notes
-
-The leading underscore in the method name suggests that this method is intended for internal use and should not be a part of the public interface of the class.
-
-#### Signature
-
-```python
-def _get(self, id: Union[str, UUID]) -> Union[User, Awaitable[User]]: ...
-```
-
-### BaseUsersManager()._list_items
-
-[Show source in user.py:121](../../../../../../julep/managers/user.py#L121)
-
-Fetch a list of users, with optional pagination parameters.
-
-Args:
- limit (Optional[int], optional): The maximum number of users to return. Defaults to None.
- offset (Optional[int], optional): The offset from the start of the list to begin returning users. Defaults to None.
-
-Returns:
- Union[ListUsersResponse, Awaitable[ListUsersResponse]]: An instance of ListUsersResponse,
- or an awaitable that will resolve to it, depending on the API client implementation.
-
-#### Signature
-
-```python
-def _list_items(
- self,
- limit: Optional[int] = None,
- offset: Optional[int] = None,
- metadata_filter: str = "{}",
-) -> Union[ListUsersResponse, Awaitable[ListUsersResponse]]: ...
-```
-
-### BaseUsersManager()._update
-
-[Show source in user.py:161](../../../../../../julep/managers/user.py#L161)
-
-Update user details for a given user ID.
-
-This method updates the 'about' and/or 'name' fields for the user identified by user_id.
-
-#### Arguments
-
-user_id (Union[str, UUID]): The ID of the user to be updated. Must be a valid UUID v4.
-- `about` *Optional[str], optional* - The new information about the user. Defaults to None.
-- `name` *Optional[str], optional* - The new name for the user. Defaults to None.
-metadata (Dict[str, Any])
-- `overwrite` *bool, optional* - Whether to overwrite the existing user data. Defaults to False.
-
-#### Returns
-
-- `Union[ResourceUpdatedResponse,` *Awaitable[ResourceUpdatedResponse]]* - The response indicating successful update or an Awaitable that resolves to such a response.
-
-#### Raises
-
-- `AssertionError` - If `user_id` is not a valid UUID v4.
-
-#### Signature
-
-```python
-def _update(
- self,
- user_id: Union[str, UUID],
- about: Optional[str] = NotSet,
- name: Optional[str] = NotSet,
- metadata: Dict[str, Any] = NotSet,
- overwrite: bool = False,
-) -> Union[ResourceUpdatedResponse, Awaitable[ResourceUpdatedResponse]]: ...
-```
-
-
-
-## UserCreateArgs
-
-[Show source in user.py:22](../../../../../../julep/managers/user.py#L22)
-
-#### Signature
-
-```python
-class UserCreateArgs(TypedDict): ...
-```
-
-
-
-## UserUpdateArgs
-
-[Show source in user.py:29](../../../../../../julep/managers/user.py#L29)
-
-#### Signature
-
-```python
-class UserUpdateArgs(TypedDict): ...
-```
-
-
-
-## UsersManager
-
-[Show source in user.py:208](../../../../../../julep/managers/user.py#L208)
-
-A class responsible for managing users in a system.
-
-This class is a specialized version of the BaseUsersManager and provides
-methods for retrieving, creating, listing, deleting, and updating users within
-the system.
-
-#### Methods
-
-- `get(id` - Union[str, UUID]) -> User:
- Retrieves a user based on their unique identifier (either a string or UUID).
-
-- `create(*,` *name* - str, about: str, docs: List[DocDict]=[]) -> ResourceCreatedResponse:
- Creates a new user with the specified name, description about the user,
- and an optional list of documents associated with the user.
-
-- `list(*,` *limit* - Optional[int]=None, offset: Optional[int]=None) -> List[User]:
- Lists users in the system, with optional limit and offset for pagination.
-
-- `delete(*,` *user_id* - Union[str, UUID]) -> None:
- Deletes a user from the system based on their unique identifier.
-
-- `update(*,` *user_id* - Union[str, UUID], about: Optional[str]=None, name: Optional[str]=None) -> ResourceUpdatedResponse:
- Updates an existing user's information with optional new about and name
- fields.
-
-#### Signature
-
-```python
-class UsersManager(BaseUsersManager): ...
-```
-
-#### See also
-
-- [BaseUsersManager](#baseusersmanager)
-
-### UsersManager().create
-
-[Show source in user.py:255](../../../../../../julep/managers/user.py#L255)
-
-Create a new resource with the specified name, about text, and associated docs.
-
-Args:
- name (str): The name of the resource to create.
- about (str): A brief description of the resource.
- docs (List[DocDict], optional): A list of dictionaries representing the documents associated with the resource. Defaults to an empty list.
-
-Returns:
- ResourceCreatedResponse: An object representing the response received upon the successful creation of the resource.
-
-Note:
- Using mutable types like list as default argument values in Python is risky because if the list is modified,
- those changes will persist across subsequent calls to the function which use the default value. It is
- generally safer to use `None` as a default value and then set the default inside the function if needed.
-
-Raises:
- BeartypeException: If the input types do not match the specified function annotations.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(User)
-def create(self, **kwargs: UserCreateArgs) -> User: ...
-```
-
-#### See also
-
-- [UserCreateArgs](#usercreateargs)
-
-### UsersManager().delete
-
-[Show source in user.py:311](../../../../../../julep/managers/user.py#L311)
-
-Deletes a user based on the provided user ID.
-
-#### Arguments
-
-user_id (Union[str, UUID]): Unique identifier of the user.
-
-#### Returns
-
-None
-
-#### Notes
-
-This function is type-checked with `beartype` to ensure that the `user_id`
-parameter matches either a string or a UUID type.
-
-#### Raises
-
-The specific exceptions raised depend on the implementation of the `_delete`
-method this function proxies to.
-
-#### Signature
-
-```python
-@beartype
-def delete(self, user_id: Union[str, UUID]) -> None: ...
-```
-
-### UsersManager().get
-
-[Show source in user.py:235](../../../../../../julep/managers/user.py#L235)
-
-Retrieve a User object by its identifier.
-
-The method supports retrieval by both string representations of a UUID and
-UUID objects directly.
-
-#### Arguments
-
-id (Union[str, UUID]): The identifier of the User, can be a string or UUID.
-
-#### Returns
-
-- `User` - The User object associated with the provided id.
-
-#### Raises
-
-- `ValueError` - If 'id' is neither a string nor a UUID.
-- `NotFoundError` - If a User with the given 'id' does not exist.
-
-#### Signature
-
-```python
-@beartype
-def get(self, id: Union[str, UUID]) -> User: ...
-```
-
-### UsersManager().list
-
-[Show source in user.py:280](../../../../../../julep/managers/user.py#L280)
-
-Lists the users optionally applying limit and offset.
-
-#### Arguments
-
-- `limit` *Optional[int], optional* - The maximum number of users to return.
- None means no limit. Defaults to None.
-- `offset` *Optional[int], optional* - The index of the first user to return.
- None means start from the beginning. Defaults to None.
-
-#### Returns
-
-- `List[User]` - A list of user objects.
-
-#### Raises
-
-- `BeartypeException` - If the type of `limit` or `offset` is not as expected.
-
-#### Signature
-
-```python
-@beartype
-def list(
- self,
- limit: Optional[int] = None,
- offset: Optional[int] = None,
- metadata_filter: Dict[str, Any] = {},
-) -> List[User]: ...
-```
-
-### UsersManager().update
-
-[Show source in user.py:337](../../../../../../julep/managers/user.py#L337)
-
-Update user information.
-
-This method updates user details such as the `about` text and user's `name` for a given `user_id`.
-
-#### Arguments
-
-user_id (Union[str, UUID]): The unique identifier for the user, which can be a string or a UUID object.
-- `about(Optional[str],` *optional)* - The descriptive information about the user. Defaults to None, indicating that `about` should not be updated if not provided.
-- `name(Optional[str],` *optional)* - The name of the user. Defaults to None, indicating that `name` should not be updated if not provided.
-- `overwrite(bool,` *optional)* - Whether to overwrite the existing user data. Defaults to False.
-
-#### Returns
-
-- `ResourceUpdatedResponse` - An object indicating the outcome of the update operation, which typically includes the status of the operation and possibly the updated resource data.
-
-#### Signature
-
-```python
-@beartype
-@rewrap_in_class(User)
-def update(self, user_id: Union[str, UUID], **kwargs: UserUpdateArgs) -> User: ...
-```
-
-#### See also
-
-- [UserUpdateArgs](#userupdateargs)
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/utils/index.md b/docs/python-sdk-docs/julep/utils/index.md
deleted file mode 100644
index 5a2c64b61..000000000
--- a/docs/python-sdk-docs/julep/utils/index.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Utils
-
-[Julep Python SDK Index](../../README.md#julep-python-sdk-index) / [Julep](../index.md#julep) / Utils
-
-> Auto-generated documentation for [julep.utils](../../../../../../julep/utils/__init__.py) module.
-
-- [Utils](#utils)
- - [Modules](#modules)
-
-## Modules
-
-- [Openai Patch](./openai_patch.md)
\ No newline at end of file
diff --git a/docs/python-sdk-docs/julep/utils/openai_patch.md b/docs/python-sdk-docs/julep/utils/openai_patch.md
deleted file mode 100644
index e1aa0323e..000000000
--- a/docs/python-sdk-docs/julep/utils/openai_patch.md
+++ /dev/null
@@ -1,93 +0,0 @@
-# Openai Patch
-
-[Julep Python SDK Index](../../README.md#julep-python-sdk-index) / [Julep](../index.md#julep) / [Utils](./index.md#utils) / Openai Patch
-
-> Auto-generated documentation for [julep.utils.openai_patch](../../../../../../julep/utils/openai_patch.py) module.
-
-- [Openai Patch](#openai-patch)
- - [patch_chat_acreate](#patch_chat_acreate)
- - [patch_chat_create](#patch_chat_create)
- - [patch_completions_acreate](#patch_completions_acreate)
- - [patch_completions_create](#patch_completions_create)
-
-## patch_chat_acreate
-
-[Show source in openai_patch.py:95](../../../../../../julep/utils/openai_patch.py#L95)
-
-Asynchronously patches the `chat.completions.create` method of the OpenAI client.
-
-This function updates the `chat.completions.create` method to an asynchronous version, enabling the inclusion of additional parameters and adjustments to its behavior.
-
-#### Arguments
-
-- client (OpenAI): The OpenAI client instance to be patched.
-
-#### Returns
-
-- `-` *OpenAI* - The patched OpenAI client instance with the updated `chat.completions.create` method.
-
-#### Signature
-
-```python
-def patch_chat_acreate(client: OpenAI): ...
-```
-
-
-
-## patch_chat_create
-
-[Show source in openai_patch.py:270](../../../../../../julep/utils/openai_patch.py#L270)
-
-#### Signature
-
-```python
-def patch_chat_create(client: OpenAI): ...
-```
-
-
-
-## patch_completions_acreate
-
-[Show source in openai_patch.py:20](../../../../../../julep/utils/openai_patch.py#L20)
-
-Asynchronously patches the `completions.create` method of the OpenAI client.
-
-This function replaces the original `completions.create` method with a custom asynchronous version that allows for additional parameters and custom behavior.
-
-#### Arguments
-
-- client (OpenAI): The OpenAI client instance to be patched.
-
-#### Returns
-
-- `-` *OpenAI* - The patched OpenAI client instance with the modified `completions.create` method.
-
-#### Signature
-
-```python
-def patch_completions_acreate(client: OpenAI): ...
-```
-
-
-
-## patch_completions_create
-
-[Show source in openai_patch.py:195](../../../../../../julep/utils/openai_patch.py#L195)
-
-Patches the `completions.create` method (non-async version) of the OpenAI client.
-
-This function replaces the original `completions.create` method with a custom version that supports additional parameters and custom behavior, without changing it to an asynchronous function.
-
-#### Arguments
-
-- client (OpenAI): The OpenAI client instance to be patched.
-
-#### Returns
-
-- `-` *OpenAI* - The patched OpenAI client instance with the modified `completions.create` method.
-
-#### Signature
-
-```python
-def patch_completions_create(client: OpenAI): ...
-```
\ No newline at end of file
diff --git a/docs/reference/api_endpoints/agent_endpoints.md b/docs/reference/api_endpoints/agent_endpoints.md
new file mode 100644
index 000000000..692931bb2
--- /dev/null
+++ b/docs/reference/api_endpoints/agent_endpoints.md
@@ -0,0 +1,74 @@
+# Agent Endpoints
+
+This document provides a reference for all Agent API endpoints in Julep.
+
+## List Agents
+
+- **Endpoint**: `GET /agents`
+- **Description**: Retrieves a paginated list of agents.
+- **Query Parameters**:
+ - `limit` (optional): Number of agents to return per page.
+ - `offset` (optional): Number of agents to skip.
+
+## Create a New Agent
+
+- **Endpoint**: `POST /agents`
+- **Description**: Creates a new agent.
+- **Request Body**:
+ ```json
+ {
+ "name": "string",
+ "about": "string",
+ "model": "string",
+ "instructions": ["string"]
+ }
+ ```
+
+## Get an Agent
+
+- **Endpoint**: `GET /agents/{id}`
+- **Description**: Retrieves details of a specific agent.
+
+## Update an Agent
+
+- **Endpoint**: `PUT /agents/{id}`
+- **Description**: Updates an existing agent (overwrites existing values).
+- **Request Body**: Same as Create a New Agent
+
+## Partially Update an Agent
+
+- **Endpoint**: `PATCH /agents/{id}`
+- **Description**: Updates an existing agent (merges with existing values).
+- **Request Body**: Partial agent object
+
+## Delete an Agent
+
+- **Endpoint**: `DELETE /agents/{id}`
+- **Description**: Deletes a specific agent.
+
+## Get Agent Documents
+
+- **Endpoint**: `GET /agents/{id}/docs`
+- **Description**: Retrieves documents associated with an agent.
+
+## Search Agent Documents
+
+- **Endpoint**: `GET /agents/{id}/search`
+- **Description**: Searches documents owned by an agent.
+
+## Get Agent Tools
+
+- **Endpoint**: `GET /agents/{id}/tools`
+- **Description**: Retrieves tools associated with an agent.
+
+## Get Agent Tasks
+
+- **Endpoint**: `GET /agents/{id}/tasks`
+- **Description**: Retrieves tasks associated with an agent.
+
+## Create or Update Agent Tasks
+
+- **Endpoint**: `PUT /agents/{parent_id}/tasks`
+- **Description**: Creates or updates tasks for an agent.
+
+For all endpoints, replace `{id}` or `{parent_id}` with the actual agent ID.
\ No newline at end of file
diff --git a/docs/reference/api_endpoints/doc_endpoints.md b/docs/reference/api_endpoints/doc_endpoints.md
new file mode 100644
index 000000000..c168ecac2
--- /dev/null
+++ b/docs/reference/api_endpoints/doc_endpoints.md
@@ -0,0 +1,36 @@
+# Doc Endpoints
+
+This document provides a reference for all Doc API endpoints in Julep.
+
+## List Docs for a User
+
+- **Endpoint**: `GET /users/{id}/docs`
+- **Description**: Retrieves a paginated list of documents for a specific user.
+- **Query Parameters**:
+ - `limit` (optional): Number of documents to return per page.
+ - `offset` (optional): Number of documents to skip.
+
+## Create a New Doc for a User
+
+- **Endpoint**: `POST /users/{id}/docs`
+- **Description**: Creates a new document for a specific user.
+- **Request Body**:
+ ```json
+ {
+ "title": "string",
+ "content": "string"
+ }
+ ```
+
+## Delete a Doc for a User
+
+- **Endpoint**: `DELETE /users/{id}/docs/{child_id}`
+- **Description**: Deletes a specific document for a user.
+
+## List Docs for an Agent
+
+- **Endpoint**: `GET /agents/{id}/docs`
+- **Description**: Retrieves a paginated list of documents for a specific agent.
+- **Query Parameters**:
+ - `limit` (optional): Number of documents to return per page.
+ - `offset` (optional): Number of documents to skip.
\ No newline at end of file
diff --git a/docs/reference/api_endpoints/session_endpoints.md b/docs/reference/api_endpoints/session_endpoints.md
new file mode 100644
index 000000000..f7a649594
--- /dev/null
+++ b/docs/reference/api_endpoints/session_endpoints.md
@@ -0,0 +1,84 @@
+# Session Endpoints
+
+This document provides a reference for all Session API endpoints in Julep.
+
+## List Sessions
+
+- **Endpoint**: `GET /sessions`
+- **Description**: Retrieves a paginated list of sessions.
+- **Query Parameters**:
+ - `limit` (optional): Number of sessions to return per page.
+ - `offset` (optional): Number of sessions to skip.
+
+## Create a New Session
+
+- **Endpoint**: `POST /sessions`
+- **Description**: Creates a new session.
+- **Request Body**:
+ ```json
+ {
+ "agent_id": "string",
+ "user_id": "string",
+ "situation": "string",
+ "token_budget": 4000,
+ "context_overflow": "truncate"
+ }
+ ```
+
+## Get a Session
+
+- **Endpoint**: `GET /sessions/{id}`
+- **Description**: Retrieves details of a specific session.
+
+## Update a Session
+
+- **Endpoint**: `PUT /sessions/{id}`
+- **Description**: Updates an existing session.
+- **Request Body**: Partial session object
+
+## Delete a Session
+
+- **Endpoint**: `DELETE /sessions/{id}`
+- **Description**: Deletes a specific session.
+
+## Get Session Messages
+
+- **Endpoint**: `GET /sessions/{id}/messages`
+- **Description**: Retrieves messages in a session.
+
+## Create a New Message in a Session
+
+- **Endpoint**: `POST /sessions/{id}/messages`
+- **Description**: Adds a new message to a session.
+- **Request Body**:
+ ```json
+ {
+ "role": "user",
+ "content": "string"
+ }
+ ```
+
+## Get Session Tools
+
+- **Endpoint**: `GET /sessions/{id}/tools`
+- **Description**: Retrieves tools available in a session.
+
+## Chat in a Session
+
+- **Endpoint**: `POST /sessions/{id}/chat`
+- **Description**: Initiates a chat interaction in a session.
+- **Request Body**:
+ ```json
+ {
+ "messages": [
+ {
+ "role": "user",
+ "content": "string"
+ }
+ ],
+ "stream": false,
+ "max_tokens": 150
+ }
+ ```
+
+For all endpoints, replace `{id}` with the actual session ID.
\ No newline at end of file
diff --git a/docs/reference/api_endpoints/tool_endpoints.md b/docs/reference/api_endpoints/tool_endpoints.md
new file mode 100644
index 000000000..a0aeab36a
--- /dev/null
+++ b/docs/reference/api_endpoints/tool_endpoints.md
@@ -0,0 +1,55 @@
+# Tool Endpoints
+
+This document provides a reference for all Tool API endpoints in Julep.
+
+## List Tools for an Agent
+
+- **Endpoint**: `GET /agents/{id}/tools`
+- **Description**: Retrieves a paginated list of tools for a specific agent.
+- **Query Parameters**:
+ - `limit` (optional): Number of tools to return per page.
+ - `offset` (optional): Number of tools to skip.
+
+## Create a New Tool for an Agent
+
+- **Endpoint**: `POST /agents/{id}/tools`
+- **Description**: Creates a new tool for a specific agent.
+- **Request Body**:
+ ```json
+ {
+ "name": "string",
+ "type": "function",
+ "function": {
+ "description": "string",
+ "parameters": {
+ "type": "object",
+ "properties": {
+ "param_name": {
+ "type": "string",
+ "description": "string"
+ }
+ },
+ "required": ["param_name"]
+ }
+ }
+ }
+ ```
+
+## Update a Tool for an Agent
+
+- **Endpoint**: `PUT /agents/{id}/tools/{child_id}`
+- **Description**: Updates an existing tool for a specific agent (overwrites existing values).
+- **Request Body**: Same as Create a New Tool
+
+## Partially Update a Tool for an Agent
+
+- **Endpoint**: `PATCH /agents/{id}/tools/{child_id}`
+- **Description**: Updates an existing tool for a specific agent (merges with existing values).
+- **Request Body**: Partial tool object
+
+## Delete a Tool for an Agent
+
+- **Endpoint**: `DELETE /agents/{id}/tools/{child_id}`
+- **Description**: Deletes a specific tool for an agent.
+
+For all endpoints, replace `{id}` with the actual agent ID and `{child_id}` with the actual tool ID.
\ No newline at end of file
diff --git a/docs/reference/api_endpoints/user_endpoints.md b/docs/reference/api_endpoints/user_endpoints.md
new file mode 100644
index 000000000..9242c7167
--- /dev/null
+++ b/docs/reference/api_endpoints/user_endpoints.md
@@ -0,0 +1,57 @@
+# User Endpoints
+
+This document provides a reference for all User API endpoints in Julep.
+
+## List Users
+
+- **Endpoint**: `GET /users`
+- **Description**: Retrieves a paginated list of users.
+- **Query Parameters**:
+ - `limit` (optional): Number of users to return per page.
+ - `offset` (optional): Number of users to skip.
+
+## Create a New User
+
+- **Endpoint**: `POST /users`
+- **Description**: Creates a new user.
+- **Request Body**:
+ ```json
+ {
+ "name": "string",
+ "about": "string"
+ }
+ ```
+
+## Get a User
+
+- **Endpoint**: `GET /users/{id}`
+- **Description**: Retrieves details of a specific user.
+
+## Update a User
+
+- **Endpoint**: `PUT /users/{id}`
+- **Description**: Updates an existing user (overwrites existing values).
+- **Request Body**: Same as Create a New User
+
+## Partially Update a User
+
+- **Endpoint**: `PATCH /users/{id}`
+- **Description**: Updates an existing user (merges with existing values).
+- **Request Body**: Partial user object
+
+## Delete a User
+
+- **Endpoint**: `DELETE /users/{id}`
+- **Description**: Deletes a specific user.
+
+## Get User Documents
+
+- **Endpoint**: `GET /users/{id}/docs`
+- **Description**: Retrieves documents associated with a user.
+
+## Search User Documents
+
+- **Endpoint**: `GET /users/{id}/search`
+- **Description**: Searches documents owned by a user.
+
+For all endpoints, replace `{id}` with the actual user ID.
\ No newline at end of file
diff --git a/docs/s1-model/capabilities/README.md b/docs/s1-model/capabilities/README.md
deleted file mode 100644
index 9fc323294..000000000
--- a/docs/s1-model/capabilities/README.md
+++ /dev/null
@@ -1,364 +0,0 @@
----
-description: >-
- This section showcases the different use-cases that Samantha-1-Turbo has been
- fine-tuned for.
----
-
-# Capabilities
-
-The [Julep Playground](https://playground.julep.ao) offers an interface to prompt and tweak parameters different use-cases.
-
-## **Chain of Thought**
-
-Chain of Thought is a technique used to handle complex queries or solve problems that require multiple steps. It's a way to prompt the model to "think out loud" before arriving at a final solution.
-
-CoT can be executed by prompting some information or structure in the `thought` section and then [continuing the generation](../context-sections.md#continue-inline) inline.
-
-### Prompt Example
-
-[Model Playground Example](https://platform.julep.ai/short/XtrQd8)
-
-**Situation**
-
-
Your name is Albert.
-You are a personal math tutor who holds 2 PhDs in physics and computational math.
-You are talking to your student.
-Answer with vigour and interest.
-Explain your answers thoroughly.
-
-
-**User**
-
-```
-Please solve for the equation `3x + 11 = 14`. I need the solution only.
-```
-
-**Thought**\
-Prompt the model to continue generating and come up with a response in this section. The `continue` flag has to be set to **True** with or without a prompt.
-
-{% hint style="info" %}
-The `continue` flag is what aids generation in the final section and allows the model to "think" in the thought section before it speaks.
-{% endhint %}
-
-{% tabs %}
-{% tab title="Chat Completion" %}
-{% code overflow="wrap" %}
-```json
-{
- "role": "system",
- "name": "thought",
- "content": "Let's break this down step-by-step:"
- "continue": True
-}
-```
-{% endcode %}
-{% endtab %}
-{% endtabs %}
-
-**Response**
-
-The model shall attempt to solve the problem step-by-step.
-
-In order to generate the final answer,
-
-* Set `continue` to False
-* Re-prompt with the completed Chain of Thought.
-
-
-
-Python Sample Code
-
-{% code overflow="wrap" %}
-```python
-from julep import Client
-
-api_key = "YOUR_API_KEY"
-client = Client(api_key=api_key)
-
-messages = [
- {
- "role": "system",
- "name": "situation",
- "content": "Your name is Albert.\nYou are a personal math tutor who holds 2 PhDs in physics and computational math.\nYou are talking to your student.\nAnswer with vigour and interest.\nExplain your answers thoroughly.",
- },
- {
- "role": "user",
- "name": "David",
- "content": "Please solve for the equation `3x + 11 = 14`. I need the solution only.",
- },
- # Thought section can have a starting prompt to guide the CoT
- {
- "role": "system",
- "name": "thought",
- "content": "Let's break this down step-by-step:",
- "continue": True # Important: needs to be added to generate in the same section.
- },
-]
-
-chat_completion = client.chat.completions.create(
- model="julep-ai/samantha-1-turbo",
- messages=messages,
- temperature=0
-)
-
-content = chat_completion.choices[0].message.content
-```
-{% endcode %}
-
-To generate the final answer, the model is re-prompted with it's complete thought.
-
-```python
-messages[-1]["continue"] = False
-messages[-1]["content"] = content
-
-chat_completion = client.chat.completions.create(
- model="julep-ai/samantha-1-turbo",
- seed=42,
- messages=messages,
- max_tokens=300,
- temperature=0.2,
-)
-
-print("Albert:", chat_completion.choices[0].message.content)
-```
-
-This results in the final response:
-
-```
-Albert: The solution to the equation `3x + 11 = 14` is x = 1.
-```
-
-
-
-***
-
-## **Multi-participant Conversations**
-
-[**Model Playground Example**](https://platform.julep.ai/short/cUt9JY)
-
-`samantha-1-turbo` has been trained to handle multi-participant conversations as well as keep track of different perspectives of the participants. The `user` section is used to create multiple users.
-
-### Prompt Example
-
-**Situation**
-
-```
-You are Danny, Jacob and Anna's friend.
-You are hanging out with them at a party and you overhear this conversation between them.
-You will talk casually.
-Make sure you respond to both Anna and Jacob when necessary.
-Make sure your responses are that of a 18 year old teenager. Be casual and young in your tone
-```
-
-**User**
-
-Here one can
-
-
-
-{% code overflow="wrap" %}
-```python
-from julep import Client
-
-api_key = "YOUR_API_KEY"
-client = Client(api_key=api_key)
-
-messages = [
- {
- "role": "system",
- "name": "situation",
- "content": "You are Danny, Jacob and Anna's friend.\nYou are hanging out with them at a party.\nYou will talk casually.\nMake sure you respond to both Anna and Jacob when necessary.\nMake sure your responses are that of a 18 year old teenager. Be casual and young in your tone.",
- },
- {
- "role": "user",
- "name": "Anna",
- "content": "I'm feeling really anxious lately and I don't know why.",
- },
- {
- "role": "user",
- "name": "Jacob",
- "content": "Anxiety is just a sign of weakness. You need to toughen up and stop worrying so much. Have you tried just distracting yourself from your anxious thoughts with something else?",
- },
-]
-
-chat_completion = client.chat.completions.create(
- model="julep-ai/samantha-1-turbo",
- messages=messages,
- max_tokens=200,
- temperature=0.2,
-)
-
-print("Danny:", chat_completion.choices[0].message.content)
-```
-{% endcode %}
-
-Running the above prompt chain should result in the following response.
-
-{% code overflow="wrap" %}
-```
-Danny: Hey Anna, I'm sorry to hear you're feeling anxious. It's not a sign of weakness, though. It's actually pretty normal to feel anxious sometimes, especially when you're going through a lot of changes like we are. Have you talked to anyone about it? Maybe a counselor or a friend? And have you tried some relaxation techniques like deep breathing or meditation? They can really help.
-```
-{% endcode %}
-
-***
-
-## **Intent Detection**
-
-[**Playground Example**](https://playground.julep.ai/short/zACl1Y)
-
-Intent detection is a powerful feature to identify the purpose or goal behind a user's query. It allows for users to converse and get things done without needing to explicitly state their goals, making conversations more contextual and natural.
-
-It can be achieved with a combination of `information` and `thought` sections.
-
-In this example, there are three possible intents; _A) Shopping, B) Feedback, C) None_ and give relevant context about those intents to help the model identify those intents.
-
-{% code overflow="wrap" %}
-```python
-from julep import Client
-
-api_key = "YOUR_API_KEY"
-client = Client(api_key=api_key)
-
-messages = [
- {
- "role": "system",
- "name": "situation",
- "content": 'You are Julia, a shopping assistant for "Uniqlo", an online clothing store.\nYou will help the user shop. Help the user decide which clothes to pick.\nYou will understand the user\'s intent\n',
- },
- {"role": "assistant", "name": "Julia", "content": "Hi Jacob! How can I help you?"},
- {
- "role": "user",
- "name": "Jacob",
- "content": "Hey. I'd like to talk to a sales representative regarding my delivery experience with my last purchase.",
- },
- {
- "role": "system",
- "name": "thought",
- "content": "Following are the actions I can help the user with:\n\nA) Shopping:\nThe user is looking to shop from my catalogue and needs help in suggesting, browsing and finding clothing and accessories.\nI can use the `get_catalogue()` and `checkout()` functions\n\nB) Feedback:\nThe user wants to provide feedback for a previous order. I can use the `get_order()`, `send_feedback()` or `connect_with_rep()` functions\n\nC) None:\nI am unsure of what the user wants.\n\nBased on the conversation, user needs help with: \nAnswer:",
- "continue": True,
- },
-]
-
-chat_completion = client.chat.completions.create(
- model="julep-ai/samantha-1-turbo",
- messages=messages,
- max_tokens=1,
- temperature=0.2,
-)
-```
-{% endcode %}
-
-Given a dictionary mapping intent with instructions, it is possible to switch and use any suitable instruction based on the intent.
-
-{% code overflow="wrap" %}
-```python
-actions = {
- "A": "As Julia, your task is to be a shopping assistant for the user {}. Be cheerful and happy.\nAsk the user important relevant questions regarding choice of clothing, occasion, taste, style preferences, inspiration and more. Make sure you are cheerful and thankful.\n\nYou have access to the `get_catalogue()` and `checkout()` functions",
- "B": "As Julia, your task is to be a feedback collector from the user {}. Ask relevant questions regarding the order.\nMake sure you gather all information about the experience.\nBe extremely empathetic and regretful in case the feedback is negative.\nBe cheerful and thankful in case the feedback is positive.\n\nYou have access to the `get_order()`, `send_feedback()` or `connect_with_rep()` functions.",
- "C": "As Julia, you are unsure of what the user intends to do. Convey this to the user and ask questions to understand more.",
-}
-
-user_intent = chat_completion.choices[0].message.content
-
-user = "Jacob"
-messages.pop()
-
-messages.append(
- {
- "role": "system",
- "name": "information",
- "content": actions[user_intent.lstrip()].format(user),
- }
-)
-
-chat_completion = client.chat.completions.create(
- model="julep-ai/samantha-1-turbo",
- messages=messages,
- max_tokens=250,
- temperature=0.2,
-)
-
-print(chat_completion.choices[0].message.content)
-```
-{% endcode %}
-
-{% code overflow="wrap" %}
-```
-Julia: Of course, Jacob. I'd be happy to help. Could you please provide me with your order number so I can look up the details?
-```
-{% endcode %}
-
-***
-
-## Function Calling (experimental)
-
-_Function calling is not supported on the Playground._
-
-All the models from Julep support function calling out of the box. You can describe the functions and their arguments to the model and have it intelligently choose which function to call. \
-The model generates JSON that you can use to call the function in your code.
-
-With the intelligently chosen function and arguments, you can call the relevant functions
-
-Here's an example of how to execute function calling.
-
-```python
-from julep import Client
-
-api_key = "YOUR_API_KEY"
-client = Client(api_key=api_key)
-
-functions = [
- {
- "name": "get_current_weather",
- "description": "Get the current weather",
- "parameters": {
- "type": "object",
- "properties": {
- "location": {
- "type": "string",
- "description": "The city and state, e.g. San Francisco, CA",
- },
- "format": {
- "type": "string",
- "enum": ["celsius", "fahrenheit"],
- "description": "The temperature unit to use. Infer this from the users location.",
- },
- },
- "required": ["location", "format"],
- },
- },
-]
-
-messages = [
- {
- "role": "system",
- "name": "situation",
- "content": "You are a Weather Bot. Use functions to get information",
- },
- {
- "role": "user",
- "name": "Alice",
- "content": "What is the weather like in Delhi like today?",
- },
-]
-
-chat_completion = client.chat.completions.create(
- model="julep-ai/samantha-1-turbo",
- messages=messages,
- functions=functions,
- max_tokens=250,
- temperature=0,
-)
-
-arguments =
-function =
-
-function_to_call = globals().get(function)
-result = function_to_call(**function_args)
-```
-
-
-
-
-
-***
diff --git a/docs/s1-model/capabilities/capabilities.md b/docs/s1-model/capabilities/capabilities.md
deleted file mode 100644
index 8b183495a..000000000
--- a/docs/s1-model/capabilities/capabilities.md
+++ /dev/null
@@ -1,90 +0,0 @@
-# Human-like conversations
-
-`samantha-1-turbo` has been trained to be conversational and chatty as opposed to the robotic tone of other models like GPT, Llama or Mistral.
-
-It requires significantly less prompting to craft a personality and set the tone for conversations using the context sections.
-
-### Example
-
-[**Model Playground Example**](https://platform.julep.ai/short/rNnbSe)
-
-**Situation**\
-This section sets up _situation_ the model should enact. This prompt sets the context of the conversation.
-
-{% code title="" overflow="wrap" %}
-```
-Your name is Jessica.
-You are a stuck up Cali teenager.
-You basically complain about everything.
-Showing rebellion is an evolutionary necessity for you.
-
-You are talking to a random person.
-Answer with disinterest and complete irreverence to absolutely everything.
-Don't write emotions. Keep your answers short.
-```
-{% endcode %}
-
-**Information**\
-Helps guide the conversation by setting a topic providing some facts that can be referenced later into the conversation.
-
-{% code overflow="wrap" %}
-```
-David is currently planning to travel to San Francisco to raise some funds for his
-startup, "CoffeeAI".
-```
-{% endcode %}
-
-
-
-Python Sample Code
-
-{% code overflow="wrap" %}
-```python
-from julep import Client
-
-api_key = "YOUR_API_KEY"
-client = Client(api_key=api_key)
-
-messages = [
- {
- "role": "system",
- "name": "situation",
- "content": "Your name is Jessica.\nYou are a stuck up Cali teenager.\nYou basically complain about everything.\nShowing rebellion is an evolutionary necessity for you.\n\nYou are talking to a random person.\nAnswer with disinterest and complete irreverence to absolutely everything.\nDon't write emotions. Keep your answers short.",
- },
- {
- "role": "system",
- "name": "information",
- "content": 'David is currently planning to travel to San Francisco to raise some funds for his startup, "CoffeeAI"',
- },
- {
- "role": "user",
- "name": "David",
- "content": "Hey, can you tell me how Silicon Valley is? I'm planning on moving there.",
- },
-]
-
-chat_completion = client.chat.completions.create(
- model="julep-ai/samantha-1-turbo",
- messages=messages,
- temperature=0.2
-)
-
-print("Jessica:", chat_completion.choices[0].message.content)
-```
-{% endcode %}
-
-
-
-
-
-
-
-Complete Prompt
-
-
-
-
-
-
-
-***
diff --git a/docs/s1-model/context-sections.md b/docs/s1-model/context-sections.md
deleted file mode 100644
index bfe5e0b9b..000000000
--- a/docs/s1-model/context-sections.md
+++ /dev/null
@@ -1,180 +0,0 @@
----
-description: >-
- This guide will walk you through the key components of the chat structure,
- including user messages, assistant responses, situation context, thought
- progression, and additional information.
----
-
-# Concepts
-
-Samantha models use a set of defined sections to provide context, guide the conversation, and simulate a dynamic interaction.
-
-> **Note about the Completion API Template**
->
-> The Completion API prompts use the sentinel tokens, `<|im_start|>` and `<|im_end|>`
->
-> Each section of the prompt starts with `<|im_start|>` followed by the section name and ends with `<|im_end|>`. Below are examples which show how to use the Completion API with this format.
-
-## Sections Overview
-
-### **User**
-
-Represent user input and include the user's name and content. These messages drive the conversation and guide the model's responses.
-
-{% tabs %}
-{% tab title="Chat Completion API" %}
-```json
-{
- "role": "user",
- "name": "Alice",
- "content": "What is the show Silicon Valley about?"
-}
-```
-{% endtab %}
-
-{% tab title="Completion API" %}
-```markup
-<|im_start|>user (Alice)
-What is the show Silicon Valley about?<|im_end|>
-```
-{% endtab %}
-{% endtabs %}
-
-***
-
-### **Assistant**
-
-Represents the persona given to the LLM. Assistant responses are model-generated replies that provide relevant information, advice, or guidance to users' queries. They are strictly meant to be part of the conversation with the user.
-
-{% tabs %}
-{% tab title="Chat Completion API" %}
-{% code overflow="wrap" %}
-```json
-{
- "role": "assistant",
- "name": "Julia",
- "content": "Silicon Valley is an American television show that focuses on the lives of six people who are members of a fictional startup company called \"Pied Piper.\" The show explores the challenges and triumphs the founders face while trying to navigate the complex world of technology and the cutthroat startup culture in Silicon Valley. It also offers a satirical take on the tech industry, with a focus on themes like innovation, ambition, and the pursuit of success."
-}
-
-```
-{% endcode %}
-{% endtab %}
-
-{% tab title="Completion API" %}
-{% code overflow="wrap" %}
-```markup
-<|im_start|>assistant (Julia)
-Silicon Valley is an American television show that focuses on the lives of six people who are members of a fictional startup company called \"Pied Piper.\" The show explores the challenges and triumphs the founders face while trying to navigate the complex world of technology and the cutthroat startup culture in Silicon Valley. It also offers a satirical take on the tech industry, with a focus on themes like innovation, ambition, and the pursuit of success.<|im_end|>
-```
-{% endcode %}
-{% endtab %}
-{% endtabs %}
-
-***
-
-### **Situation**
-
-Used to set the conversation tone with context and background. This helps the model understand the scenario. Typically, one uses this section as a _system_ prompt and to give the model a persona.
-
-{% tabs %}
-{% tab title="Chat Completion API" %}
-{% code overflow="wrap" %}
-```json
-{
- "role": "system",
- "name": "situation",
- "content": "Imagine you are J. Robert Oppenheimer, the renowned physicist known for your pivotal role in the Manhattan Project. You are meeting a new person in real life and having a conversation with him. Your responses should be short and concise mirror these characteristics. You should aim to provide answers that are not only scientifically accurate and intellectually stimulating but also demonstrate a deep understanding of the ethical and philosophical dimensions of the topics at hand. Your language should be sophisticated yet accessible, inviting engagement and reflection.",
-},
-```
-{% endcode %}
-{% endtab %}
-
-{% tab title="Completion API" %}
-{% code overflow="wrap" %}
-```markup
-<|im_start|>situation
-Imagine you are J. Robert Oppenheimer, the renowned physicist known for your pivotal role in the Manhattan Project. You are meeting a new person in real life and having a conversation with him. Your responses should be short and concise mirror these characteristics. You should aim to provide answers that are not only scientifically accurate and intellectually stimulating but also demonstrate a deep understanding of the ethical and philosophical dimensions of the topics at hand. Your language should be sophisticated yet accessible, inviting engagement and reflection.<|im_end|>
-```
-{% endcode %}
-{% endtab %}
-{% endtabs %}
-
-### **Information**
-
-A section to store factual information and introduce context in order to enrich conversation. This section provides a way to "feed' information about the interaction that affect conversations. Provides a paradigm for RAG.
-
-{% tabs %}
-{% tab title="Chat Completion API" %}
-{% code overflow="wrap" %}
-```json
-{
- "role": "system",
- "name": "information",
- "content": "You are talking to Diwank. He has ordered his soup. He is vegetarian.",
-}
-```
-{% endcode %}
-{% endtab %}
-
-{% tab title="Completion API" %}
-{% code overflow="wrap" %}
-```markup
-<|im_start|>information
-You are talking to Diwank. He has ordered his soup. He is vegetarian.<|im_end|>
-```
-{% endcode %}
-{% endtab %}
-{% endtabs %}
-
-### **Thought**
-
-A section specifically for doing [Chain of Thought](https://arxiv.org/abs/2201.11903). This provides a way to prompt the model to _think_ before generating a final response to the user.
-
-{% tabs %}
-{% tab title="Chat Completion API" %}
-{% code overflow="wrap" %}
-```json
-{
- "role": "system",
- "name": "thought",
- "content": "I should ask him more about his food preferences and choices.",
-}
-```
-{% endcode %}
-{% endtab %}
-
-{% tab title="Completion API" %}
-{% code overflow="wrap" %}
-```markup
-<|im_start|>thought
-I should ask him more about his food preferences and choices.<|im_end|>
-```
-{% endcode %}
-{% endtab %}
-{% endtabs %}
-
-***
-
-## Continue Inline
-
-Julep's API also exposes a special paradigm for allowing the model to continue generating in any context section given some prompt.
-
-{% code overflow="wrap" %}
-```python
-messages = [
- {
- "role": "system",
- "name": "situation",
- "content": "Your name is Albert.\nYou are a personal math tutor who holds 2 PhDs in physics and computational math.\nYou are talking to your student.\nAnswer with vigour and interest.\nExplain your answers thoroughly.",
- },
- {
- "role": "user",
- "name": "David",
- "content": "Please solve for the equation `3x + 11 = 14`. I need the solution only.",
- },
- {"role": "system", "name": "thought", "continue": True},
-]
-```
-{% endcode %}
-
-With `continue` set to `True`, the model will now respond with a continued generation in the `thought` section. This is particularly useful in [Chain of Thought](capabilities/#chain-of-thought) prompting and [Intent Detection](capabilities/#intent-detection).
diff --git a/docs/s1-model/overview.md b/docs/s1-model/overview.md
deleted file mode 100644
index 6a4bea482..000000000
--- a/docs/s1-model/overview.md
+++ /dev/null
@@ -1,121 +0,0 @@
----
-description: >-
- Samantha-1 is a series of our specially fine-tuned models for human-like
- conversations and agentic capabilities.
----
-
-# Overview
-
-## `samantha-1-turbo`
-
-`samantha-1-turbo` a conversational LLM, is a fine-tuned version of Mistral-7B-v0.1.
-
-During the fine-tuning process, 35 open-source datasets were adapted to enhance the model's capabilities. Each dataset underwent formatting and revision to not only support a conversational structure involving multiple turns and participants, but also incorporate the ability for native function calling. This enabled the conversational LLM to seamlessly integrate conversational dynamics with function execution within the same context.
-
-### Key Features
-
-* Fine-tuned for human-like conversations.
-* Handles multi-turn multi-participant conversations.
-* Supports function-calling.
-* Special context section for embedded Chain of Thought.
-* Special context section for memory management.
-* More control over anthropomorphic personality.
-
-### Training
-
-Model:
-
-* Layers: 32
-* Hidden Size: 4096
-* Attention Heads: 32
-* Context Length: 32768 (with Sliding Window Attention)
-* Vocab Size: 32032
-
-Software:
-
-* PyTorch
-* DeepSpeed
-* Flash-Attention
-* Axolotl
-
-### Context Section
-
-This model has the following context sections.
-
-* `user`: Represent the user and user input.
-* `assistant`: Represents the output by the model
-* `situation`: An equivalent of the `system` section in OpenAI and other models. Meant to give the background and set the conversation tone.
-* `thought`: A section for doing Chain of Thought. Let's the model "think" before generating a final response in the `assistant` section.
-* `information`: A section to store factual information and introduce context in order to enrich conversation.
-
-The model and speaker sections can optionally include a name like `me (Samantha)` or `person (Dmitry)`
-
-[Read more about Context Sections](overview.md#context-section)
-
-### Usage
-
-You will need an API key to inference the model.
-
-Samantha can be inferenced using either the Chat Completion API or Completion API. For more details check out [Quickstart](../getting-started/python-setup.md).
-
-{% tabs %}
-{% tab title="Chat Completion API" %}
-```python
-messages = [
- {
- "role": "system",
- "name": "situation",
- "content": "You are a Julia, an AI waiter. Your task is to help the guests decide their order."
- },
- {
- "role": "system",
- "name": "information",
- "content": "You are talking to Diwank. He has ordered his soup. He is vegetarian."
- },
- {
- "role": "system",
- "name": "thought",
- "content": "I should ask him more about his food preferences and choices."
- }
-]
-
-```
-{% endtab %}
-
-{% tab title="Completion API" %}
-```python
-messages = """
-<|im_start|>situation
-You are a Julia, an AI waiter. Your task is to help the guests decide their order.<|im_end|>
-<|im_start|>information
-You are talking to Diwank. He has ordered his soup. He is vegetarian.
-<|im_start|>thought
-I should ask him more about his food preferences and choices.<|im_end|>
-"""
-```
-{% endtab %}
-{% endtabs %}
-
-### Evaluation
-
-Evaluations show that training fine tuning Mistral-7B with our dataset and format does not lead to catastrophic forgetting.
-
-Benchmarks show that `samantha-1-turbo` retains most, if not all the qualities of Mistral with better results in EQBench and TruthfulQA, due to it's better emotional understanding and ability to use the `thought` section for more conversational questions.
-
-| Benchmarks | Samantha-1-Turbo | Mistral 7B |
-| -------------- | ---------------- | ---------- |
-| **EQBench** | 57.6% | 52.1% |
-| **TruthfulQA** | 43.57% | 42.15% |
-| Hellaswag | 79.07% | 81.3% |
-| MMLU | 57.7% | 59.5% |
-| Arc | 79% | 80% |
-
-***
-
-## Use Cases
-
-* **Personal Assistants**: Create AI personal assistants with a fun and consistent personality.
-* **Customer Service**: Automate customer service with a system that can remember past interactions and respond accordingly.
-* **Empathetic systems**: For use cases such as therapeutic support, personal coaching, and companionship.
-* **Games and Interactive Media**: Create engaging characters and interactive dialogues for games and media.
-* **Community Engagement:** Connect and empower users to engage with brand communities on channels such as WhatsApp
diff --git a/docs/s1-model/tutorial.md b/docs/s1-model/tutorial.md
deleted file mode 100644
index 04a8e7e25..000000000
--- a/docs/s1-model/tutorial.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Tutorial
-
-{% hint style="info" %}
-**Coming soon.**
-{% endhint %}
diff --git a/docs/tutorials/creating_your_first_agent.md b/docs/tutorials/creating_your_first_agent.md
new file mode 100644
index 000000000..a21d27b1d
--- /dev/null
+++ b/docs/tutorials/creating_your_first_agent.md
@@ -0,0 +1,48 @@
+# Creating Your First Agent
+
+This tutorial will guide you through the process of creating your first agent using the Julep API.
+
+## Step 1: Prepare the Agent Data
+
+Decide on the basic properties of your agent:
+
+```json
+{
+ "name": "MyFirstAgent",
+ "about": "A helpful assistant for general tasks",
+ "model": "gpt-4-turbo",
+ "instructions": ["Be helpful", "Be concise"]
+}
+```
+
+## Step 2: Create the Agent
+
+Use the following curl command to create your agent:
+
+```bash
+curl -X POST "https://api.julep.ai/api/agents" \
+ -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "name": "MyFirstAgent",
+ "about": "A helpful assistant for general tasks",
+ "model": "gpt-4-turbo",
+ "instructions": ["Be helpful", "Be concise"]
+ }'
+```
+
+## Step 3: Verify the Agent Creation
+
+Check if your agent was created successfully:
+
+```bash
+curl -X GET "https://api.julep.ai/api/agents" \
+ -H "Authorization: Bearer $JULEP_API_KEY"
+```
+
+You should see your newly created agent in the list.
+
+## Next Steps
+
+- Learn how to [manage sessions](./managing_sessions.md) with your new agent.
+- Explore [integrating tools](./integrating_tools.md) to enhance your agent's capabilities.
\ No newline at end of file
diff --git a/docs/tutorials/integrating_tools.md b/docs/tutorials/integrating_tools.md
new file mode 100644
index 000000000..16889f4a6
--- /dev/null
+++ b/docs/tutorials/integrating_tools.md
@@ -0,0 +1,58 @@
+# Integrating Tools
+
+This tutorial will show you how to integrate tools with your Julep agents.
+
+## Creating a User-Defined Function Tool
+
+Here's how to create a simple tool for sending emails:
+
+```bash
+curl -X POST "https://api.julep.ai/api/agents/YOUR_AGENT_ID/tools" \
+ -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "name": "send_email",
+ "type": "function",
+ "function": {
+ "description": "Send an email to a recipient",
+ "parameters": {
+ "type": "object",
+ "properties": {
+ "to": {
+ "type": "string",
+ "description": "Recipient email address"
+ },
+ "subject": {
+ "type": "string",
+ "description": "Email subject"
+ },
+ "body": {
+ "type": "string",
+ "description": "Email body"
+ }
+ },
+ "required": ["to", "subject", "body"]
+ }
+ }
+ }'
+```
+
+## Using Tools in Sessions
+
+When creating or updating a session, you can specify which tools to use:
+
+```bash
+curl -X POST "https://api.julep.ai/api/sessions" \
+ -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "agent_id": "YOUR_AGENT_ID",
+ "user_id": "YOUR_USER_ID",
+ "tools": ["send_email"]
+ }'
+```
+
+## Next Steps
+
+- Learn about [customizing tasks](../how-to-guides/customizing_tasks.md) to create complex workflows using tools.
+- Explore [handling executions](../how-to-guides/handling_executions.md) to manage tool usage in tasks.
\ No newline at end of file
diff --git a/docs/tutorials/managing_sessions.md b/docs/tutorials/managing_sessions.md
new file mode 100644
index 000000000..866484912
--- /dev/null
+++ b/docs/tutorials/managing_sessions.md
@@ -0,0 +1,51 @@
+# Managing Sessions
+
+This tutorial will guide you through creating and managing sessions with your Julep agents.
+
+## Creating a Session
+
+To create a new session with an agent:
+
+```bash
+curl -X POST "https://api.julep.ai/api/sessions" \
+ -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "agent_id": "YOUR_AGENT_ID",
+ "user_id": "YOUR_USER_ID",
+ "situation": "Custom situation for this session"
+ }'
+```
+
+## Interacting with a Session
+
+To send a message in a session:
+
+```bash
+curl -X POST "https://api.julep.ai/api/sessions/YOUR_SESSION_ID/messages" \
+ -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "role": "user",
+ "content": "Hello, how can you help me today?"
+ }'
+```
+
+## Managing Context Overflow
+
+If you're dealing with long conversations, you may need to handle context overflow:
+
+```bash
+curl -X PUT "https://api.julep.ai/api/sessions/YOUR_SESSION_ID" \
+ -H "Authorization: Bearer $JULEP_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "token_budget": 4000,
+ "context_overflow": "truncate"
+ }'
+```
+
+## Next Steps
+
+- Learn about [integrating tools](./integrating_tools.md) to enhance your sessions.
+- Explore [customizing tasks](../how-to-guides/customizing_tasks.md) for more complex interactions.
\ No newline at end of file
diff --git a/example.py b/example.py
new file mode 100644
index 000000000..ef6d6f427
--- /dev/null
+++ b/example.py
@@ -0,0 +1,107 @@
+from julep import Julep, AsyncJulep
+
+# 🔑 Initialize the Julep client
+# Or alternatively, use AsyncJulep for async operations
+client = Julep(api_key="your_api_key")
+
+##################
+## 🤖 Agent 🤖 ##
+##################
+
+# Create a research agent
+agent = client.agents.create(
+ name="Research Agent",
+ about="You are a research agent designed to handle research inquiries.",
+ model="claude-3.5-sonnet",
+)
+
+# 🔍 Add a web search tool to the agent
+client.agents.tools.create(
+ agent_id=agent.id,
+ name="web_search", # Should be python valid variable name
+ description="Use this tool to research inquiries.",
+ integration={
+ "provider": "brave",
+ "method": "search",
+ "setup": {
+ "api_key": "your_brave_api_key",
+ },
+ },
+)
+
+#################
+## 💬 Chat 💬 ##
+#################
+
+# Start an interactive chat session with the agent
+session = client.sessions.create(
+ agent_id=agent.id,
+ context_overflow="adaptive", # 🧠 Julep will dynamically compute the context window if needed
+)
+
+# 🔄 Chat loop
+while (user_input := input("You: ")) != "exit":
+ response = client.sessions.chat(
+ session_id=session.id,
+ message=user_input,
+ )
+
+ print("Agent: ", response.choices[0].message.content)
+
+
+#################
+## 📋 Task 📋 ##
+#################
+
+# Create a recurring research task for the agent
+task = client.tasks.create(
+ agent_id=agent.id,
+ name="Research Task",
+ description="Research the given topic every 24 hours.",
+ #
+ # 🛠️ Task specific tools
+ tools=[
+ {
+ "name": "send_email",
+ "description": "Send an email to the user with the results.",
+ "api_call": {
+ "method": "post",
+ "url": "https://api.sendgrid.com/v3/mail/send",
+ "headers": {"Authorization": "Bearer YOUR_SENDGRID_API_KEY"},
+ },
+ }
+ ],
+ #
+ # 🔢 Task main steps
+ main=[
+ #
+ # Step 1: Research the topic
+ {
+ # `_` (underscore) variable refers to the previous step's output
+ # Here, it points to the topic input from the user
+ "prompt": "Look up topic '{{_.topic}}' and summarize the results.",
+ "tools": [{"ref": {"name": "web_search"}}], # 🔍 Use the web search tool from the agent
+ "unwrap": True,
+ },
+ #
+ # Step 2: Send email with research results
+ {
+ "tool": "send_email",
+ "arguments": {
+ "subject": "Research Results",
+ "body": "'Here are the research results for today: ' + _.content",
+ "to": "inputs[0].email", # Reference the email from the user's input
+ },
+ },
+ #
+ # Step 3: Wait for 24 hours before repeating
+ {"sleep": "24 * 60 * 60"},
+ ],
+)
+
+# 🚀 Start the recurring task
+client.executions.create(task_id=task.id, input={"topic": "Python"})
+
+# 🔁 This will run the task every 24 hours,
+# research for the topic "Python", and
+# send the results to the user's email
diff --git a/example.ts b/example.ts
new file mode 100644
index 000000000..3ef4e1a91
--- /dev/null
+++ b/example.ts
@@ -0,0 +1,117 @@
+import Julep from '@julep/sdk';
+
+// 🔑 Initialize the Julep client
+const client = new Julep({
+ apiKey: 'your_api_key',
+ environment: 'production', // or 'dev' | 'local_multi_tenant' | 'local'
+});
+
+async function main() {
+ /*
+ * 🤖 Agent 🤖
+ */
+
+ // Create a research agent
+ const agent = await client.agents.createOrUpdate('dad00000-0000-4000-a000-000000000000', {
+ name: 'Research Agent',
+ about: 'You are a research agent designed to handle research inquiries.',
+ model: 'claude-3.5-sonnet',
+ });
+
+ // 🔍 Add a web search tool to the agent
+ await client.agents.tools.create(agent.id, {
+ name: 'web_search',
+ description: 'Use this tool to research inquiries.',
+ integration: {
+ provider: 'brave',
+ method: 'search',
+ setup: {
+ api_key: 'your_brave_api_key',
+ },
+ },
+ });
+
+ /*
+ * 💬 Chat 💬
+ */
+
+ // Start an interactive chat session with the agent
+ const session = await client.sessions.create({
+ agentId: agent.id,
+ contextOverflow: 'adaptive', /* 🧠 Julep will dynamically compute the context window if needed */
+ });
+
+ // 🔄 Chat loop
+ const readline = require('readline').createInterface({
+ input: process.stdin,
+ output: process.stdout,
+ });
+
+ const askQuestion = (query: string) => new Promise((resolve) => readline.question(query, resolve));
+
+ while (true) {
+ const userInput = await askQuestion('You: ');
+ if (userInput === 'exit') break;
+
+ const response = await client.sessions.chat(session.id, {
+ message: userInput,
+ });
+
+ console.log('Agent: ', response.choices[0].message.content);
+ }
+
+ readline.close();
+
+ /*
+ * 📋 Task 📋
+ */
+
+ // Create a recurring research task for the agent
+ const task = await client.tasks.create(agent.id, {
+ name: 'Research Task',
+ description: 'Research the given topic every 24 hours.',
+ /* 🛠️ Task specific tools */
+ tools: [
+ {
+ name: 'send_email',
+ description: 'Send an email to the user with the results.',
+ apiCall: {
+ method: 'post',
+ url: 'https://api.sendgrid.com/v3/mail/send',
+ headers: { Authorization: 'Bearer YOUR_SENDGRID_API_KEY' },
+ },
+ },
+ ],
+ /* 🔢 Task main steps */
+ main: [
+ // Step 1: Research the topic
+ {
+ prompt: "Look up topic '{{_.topic}}' and summarize the results.",
+ tools: [{ ref: { name: 'web_search' } }], /* 🔍 Use the web search tool from the agent */
+ unwrap: true,
+ },
+ // Step 2: Send email with research results
+ {
+ tool: 'send_email',
+ arguments: {
+ subject: 'Research Results',
+ body: "'Here are the research results for today: ' + _.content",
+ to: 'inputs[0].email', // Reference the email from the user's input
+ },
+ },
+ // Step 3: Wait for 24 hours before repeating
+ { sleep: 24 * 60 * 60 },
+ ],
+ });
+
+ // 🚀 Start the recurring task
+ await client.executions.create(task.id, { input: { topic: 'TypeScript' } });
+
+ /*
+ * 🔁 This will run the task every 24 hours,
+ * research for the topic "TypeScript", and
+ * send the results to the user's email
+ */
+}
+
+main().catch(console.error);
\ No newline at end of file
diff --git a/gateway/Dockerfile b/gateway/Dockerfile
index 196de1245..f48aeb5ce 100644
--- a/gateway/Dockerfile
+++ b/gateway/Dockerfile
@@ -1,3 +1,6 @@
+# syntax=docker/dockerfile:1
+# check=error=true
+
FROM alpine/git
ARG PLUGIN_MODULE=github.com/julep-ai/traefik-jwt-plugin
ARG PLUGIN_GIT_REPO=https://github.com/julep-ai/traefik-jwt-plugin.git
@@ -11,13 +14,12 @@ RUN git clone ${PLUGIN_GIT_REPO} /plugins-local/src/${PLUGIN_MODULE} \
FROM traefik:v2.11
ENV GATEWAY_PORT=80
-ENV JWT_SHARED_KEY=""
-# ENV MODEL_API_URL=""
-# ENV MODEL_API_KEY=""
-# ENV MODEL_API_KEY_HEADER_NAME="Authorization"
ENV AGENTS_API_URL=""
-ENV AGENTS_API_KEY=""
-ENV AGENTS_API_KEY_HEADER_NAME="Authorization"
+
+# Expected environment variables:
+# JWT_SHARED_KEY=""
+# AGENTS_API_KEY=""
+# AGENTS_API_KEY_HEADER_NAME="Authorization"
COPY --from=0 /plugins-local /plugins-local
diff --git a/gateway/entrypoint.sh b/gateway/entrypoint.sh
index a87081d02..e28f8db06 100755
--- a/gateway/entrypoint.sh
+++ b/gateway/entrypoint.sh
@@ -1,8 +1,11 @@
#!/bin/sh
# Check the environment variables
-# REMOVED: MODEL_API_KEY MODEL_API_URL MODEL_API_KEY_HEADER_NAME
-for var_name in GATEWAY_PORT JWT_SHARED_KEY AGENTS_API_KEY AGENTS_API_URL AGENTS_API_KEY_HEADER_NAME
+AGENTS_API_URL=${AGENTS_API_URL:-http://agents-api:8080}
+AGENTS_API_KEY_HEADER_NAME=${AGENTS_API_KEY_HEADER_NAME:-Authorization}
+GATEWAY_PORT=${GATEWAY_PORT:-80}
+
+for var_name in JWT_SHARED_KEY AGENTS_API_KEY
do
if [ -z "`eval echo \\\$$var_name`" ]; then
echo "Error: Environment variable '$var_name' is not set."
diff --git a/image.png b/image.png
deleted file mode 100644
index ccb8756cb..000000000
Binary files a/image.png and /dev/null differ
diff --git a/integrations-service/Dockerfile b/integrations-service/Dockerfile
new file mode 100644
index 000000000..784983610
--- /dev/null
+++ b/integrations-service/Dockerfile
@@ -0,0 +1,22 @@
+# syntax=docker/dockerfile:1
+# check=error=true
+
+FROM python:3.12-slim
+
+WORKDIR /app
+
+# Install Poetry
+RUN pip install poetry
+
+# Copy only requirements to cache them in docker layer
+COPY pyproject.toml poetry.lock* /app/
+
+# Project initialization:
+RUN poetry config virtualenvs.create false \
+ && poetry install --no-interaction --no-ansi
+
+# Copy project
+COPY . ./
+
+# Run the application
+ENTRYPOINT ["python", "-m", "integrations.web", "--host", "0.0.0.0", "--port", "8000"]
diff --git a/integrations-service/docker-compose.yml b/integrations-service/docker-compose.yml
new file mode 100644
index 000000000..750dc473d
--- /dev/null
+++ b/integrations-service/docker-compose.yml
@@ -0,0 +1,26 @@
+name: julep-integrations
+
+# Shared environment variables
+x--shared-environment: &shared-environment
+ OPENAI_API_KEY: ${OPENAI_API_KEY}
+
+services:
+ integrations:
+ environment:
+ <<: *shared-environment
+
+ build: .
+ ports:
+ - "8000:8000"
+
+ develop:
+ watch:
+ - action: sync+restart
+ path: ./
+ target: /app/
+ ignore:
+ - ./**/*.pyc
+ - action: rebuild
+ path: poetry.lock
+ - action: rebuild
+ path: Dockerfile
\ No newline at end of file
diff --git a/integrations-service/integrations/__init__.py b/integrations-service/integrations/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/integrations-service/integrations/models/__init__.py b/integrations-service/integrations/models/__init__.py
new file mode 100644
index 000000000..9f7fb6992
--- /dev/null
+++ b/integrations-service/integrations/models/__init__.py
@@ -0,0 +1,18 @@
+from .base_models import (
+ BaseArguments,
+ BaseOutput,
+ BaseProvider,
+ BaseProviderMethod,
+ BaseSetup,
+ ProviderInfo,
+)
+from .brave import BraveSearchArguments, BraveSearchOutput, BraveSearchSetup
+from .browserbase import (
+ BrowserBaseLoadArguments,
+ BrowserBaseLoadOutput,
+ BrowserBaseSetup,
+)
+from .hacker_news import HackerNewsFetchArguments, HackerNewsFetchOutput
+from .spider import SpiderFetchArguments, SpiderFetchOutput, SpiderSetup
+from .weather import WeatherGetArguments, WeatherGetOutput, WeatherSetup
+from .wikipedia import WikipediaSearchArguments, WikipediaSearchOutput
diff --git a/integrations-service/integrations/models/base_models.py b/integrations-service/integrations/models/base_models.py
new file mode 100644
index 000000000..72e250365
--- /dev/null
+++ b/integrations-service/integrations/models/base_models.py
@@ -0,0 +1,36 @@
+from typing import Annotated, Any, Optional
+
+from pydantic import BaseModel, Field, RootModel
+from pydantic_core import Url
+
+IdentifierName = Annotated[str, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")]
+
+
+class BaseSetup(BaseModel): ...
+
+
+class BaseArguments(BaseModel): ...
+
+
+class BaseOutput(BaseModel): ...
+
+
+class ProviderInfo(BaseModel):
+ url: Optional[Url]
+ docs: Optional[Url]
+ icon: Optional[Url]
+ friendly_name: str
+
+
+class BaseProviderMethod(BaseModel):
+ method: IdentifierName
+ description: str
+ arguments: type[BaseArguments]
+ output: type[BaseOutput]
+
+
+class BaseProvider(BaseModel):
+ provider: IdentifierName
+ setup: type[BaseSetup] | None
+ methods: list[BaseProviderMethod]
+ info: ProviderInfo
diff --git a/integrations-service/integrations/models/brave.py b/integrations-service/integrations/models/brave.py
new file mode 100644
index 000000000..bbf3ca077
--- /dev/null
+++ b/integrations-service/integrations/models/brave.py
@@ -0,0 +1,19 @@
+from pydantic import Field
+
+from .base_models import (
+ BaseArguments,
+ BaseOutput,
+ BaseSetup,
+)
+
+
+class BraveSearchSetup(BaseSetup):
+ api_key: str = Field(..., description="The api key for Brave Search")
+
+
+class BraveSearchArguments(BaseArguments):
+ query: str = Field(..., description="The search query for searching with Brave")
+
+
+class BraveSearchOutput(BaseOutput):
+ result: str = Field(..., description="The result of the Brave Search")
diff --git a/integrations-service/integrations/models/browserbase.py b/integrations-service/integrations/models/browserbase.py
new file mode 100644
index 000000000..fdc585090
--- /dev/null
+++ b/integrations-service/integrations/models/browserbase.py
@@ -0,0 +1,29 @@
+from typing import List, Optional
+
+from langchain_core.documents import Document
+from pydantic import Field
+from pydantic_core import Url
+
+from .base_models import (
+ BaseArguments,
+ BaseOutput,
+ BaseSetup,
+)
+
+
+class BrowserBaseSetup(BaseSetup):
+ api_key: str = Field(..., description="The api key for BrowserBase")
+ project_id: str = Field(..., description="The project id for BrowserBase")
+ session_id: Optional[str] = Field(
+ None, description="The session id for BrowserBase"
+ )
+
+
+class BrowserBaseLoadArguments(BaseArguments):
+ urls: List[Url] = Field(..., description="The urls for loading with BrowserBase")
+
+
+class BrowserBaseLoadOutput(BaseOutput):
+ documents: List[Document] = Field(
+ ..., description="The documents loaded from the urls"
+ )
diff --git a/integrations-service/integrations/models/dalle_image_generator.py b/integrations-service/integrations/models/dalle_image_generator.py
new file mode 100644
index 000000000..36a3e45b2
--- /dev/null
+++ b/integrations-service/integrations/models/dalle_image_generator.py
@@ -0,0 +1,9 @@
+from pydantic import BaseModel, Field
+
+
+class DalleImageGeneratorSetup(BaseModel):
+ api_key: str = Field(str, description="The API key for DALL-E")
+
+
+class DalleImageGeneratorArguments(BaseModel):
+ prompt: str = Field(str, description="The image generation prompt")
diff --git a/integrations-service/integrations/models/duckduckgo_search.py b/integrations-service/integrations/models/duckduckgo_search.py
new file mode 100644
index 000000000..109b58d22
--- /dev/null
+++ b/integrations-service/integrations/models/duckduckgo_search.py
@@ -0,0 +1,5 @@
+from pydantic import BaseModel, Field
+
+
+class DuckDuckGoSearchExecutionArguments(BaseModel):
+ query: str = Field(..., description="The search query string")
diff --git a/integrations-service/integrations/models/execution.py b/integrations-service/integrations/models/execution.py
new file mode 100644
index 000000000..ff9290d6a
--- /dev/null
+++ b/integrations-service/integrations/models/execution.py
@@ -0,0 +1,50 @@
+from typing import Optional, Union
+
+from pydantic import BaseModel
+
+from .brave import BraveSearchArguments, BraveSearchOutput, BraveSearchSetup
+from .browserbase import (
+ BrowserBaseLoadArguments,
+ BrowserBaseLoadOutput,
+ BrowserBaseSetup,
+)
+from .hacker_news import HackerNewsFetchArguments, HackerNewsFetchOutput
+from .spider import SpiderFetchArguments, SpiderFetchOutput, SpiderSetup
+from .weather import WeatherGetArguments, WeatherGetOutput, WeatherSetup
+from .wikipedia import WikipediaSearchArguments, WikipediaSearchOutput
+
+ExecutionSetup = Union[
+ SpiderSetup,
+ WeatherSetup,
+ BraveSearchSetup,
+ BrowserBaseSetup,
+]
+
+ExecutionArguments = Union[
+ SpiderFetchArguments,
+ WeatherGetArguments,
+ HackerNewsFetchArguments,
+ WikipediaSearchArguments,
+ BraveSearchArguments,
+ BrowserBaseLoadArguments,
+]
+
+ExecutionResponse = Union[
+ SpiderFetchOutput,
+ WeatherGetOutput,
+ HackerNewsFetchOutput,
+ WikipediaSearchOutput,
+ BraveSearchOutput,
+ BrowserBaseLoadOutput,
+]
+
+
+class ExecutionRequest(BaseModel):
+ setup: Optional[ExecutionSetup]
+ """
+ The setup parameters the integration accepts (such as API keys)
+ """
+ arguments: ExecutionArguments
+ """
+ The arguments to pass to the integration
+ """
diff --git a/integrations-service/integrations/models/hacker_news.py b/integrations-service/integrations/models/hacker_news.py
new file mode 100644
index 000000000..1d0b92a23
--- /dev/null
+++ b/integrations-service/integrations/models/hacker_news.py
@@ -0,0 +1,15 @@
+from langchain_core.documents import Document
+from pydantic import Field
+from pydantic_core import Url
+
+from .base_models import BaseArguments, BaseOutput
+
+
+class HackerNewsFetchArguments(BaseArguments):
+ url: Url = Field(..., description="The URL of the Hacker News thread to fetch")
+
+
+class HackerNewsFetchOutput(BaseOutput):
+ documents: list[Document] = Field(
+ ..., description="The documents returned from the Hacker News search"
+ )
diff --git a/integrations-service/integrations/models/models.py b/integrations-service/integrations/models/models.py
new file mode 100644
index 000000000..84eb1417a
--- /dev/null
+++ b/integrations-service/integrations/models/models.py
@@ -0,0 +1,81 @@
+from typing import Literal, Union
+
+from pydantic import BaseModel
+
+from .dalle_image_generator import (
+ DalleImageGeneratorArguments,
+ DalleImageGeneratorSetup,
+)
+from .duckduckgo_search import DuckDuckGoSearchExecutionArguments
+from .hacker_news import HackerNewsExecutionArguments
+from .weather import WeatherExecutionArguments, WeatherExecutionSetup
+from .wikipedia import WikipediaExecutionArguments
+
+ExecuteIntegrationArguments = Union[
+ WikipediaExecutionArguments,
+ DuckDuckGoSearchExecutionArguments,
+ DalleImageGeneratorArguments,
+ WeatherExecutionArguments,
+ HackerNewsExecutionArguments,
+]
+
+ExecuteIntegrationSetup = Union[
+ DalleImageGeneratorSetup,
+ WeatherExecutionSetup,
+]
+
+
+class IntegrationExecutionRequest(BaseModel):
+ setup: ExecuteIntegrationSetup | None = None
+ """
+ The setup parameters the integration accepts (such as API keys)
+ """
+ arguments: ExecuteIntegrationArguments
+ """
+ The arguments to pass to the integration
+ """
+
+
+class IntegrationExecutionResponse(BaseModel):
+ result: str
+ """
+ The result of the integration execution
+ """
+
+
+class IntegrationDef(BaseModel):
+ provider: (
+ Literal[
+ "dummy",
+ "dalle_image_generator",
+ "duckduckgo_search",
+ "hacker_news",
+ "weather",
+ "wikipedia",
+ "twitter",
+ "web_base",
+ "requests",
+ "gmail",
+ "tts_query",
+ ]
+ | None
+ ) = None
+ """
+ The provider of the integration
+ """
+ method: str | None = None
+ """
+ The specific method of the integration to call
+ """
+ description: str | None = None
+ """
+ Optional description of the integration
+ """
+ setup: dict | None = None
+ """
+ The setup parameters the integration accepts
+ """
+ arguments: dict | None = None
+ """
+ The arguments to pre-apply to the integration call
+ """
diff --git a/integrations-service/integrations/models/request.py b/integrations-service/integrations/models/request.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/integrations-service/integrations/models/spider.py b/integrations-service/integrations/models/spider.py
new file mode 100644
index 000000000..d72eba656
--- /dev/null
+++ b/integrations-service/integrations/models/spider.py
@@ -0,0 +1,21 @@
+from langchain_core.documents import Document
+from pydantic import Field
+from pydantic_core import Url
+
+from .base_models import BaseArguments, BaseOutput, BaseSetup
+
+
+class SpiderSetup(BaseSetup):
+ spider_api_key: str = Field(..., description="The request for which to fetch data")
+
+
+class SpiderFetchArguments(BaseArguments):
+ url: Url = Field(..., description="The url for which to fetch data")
+ mode: str = Field("scrape", description="The type of crawlers")
+ params: dict | None = Field(None, description="The parameters for the Spider API")
+
+
+class SpiderFetchOutput(BaseOutput):
+ documents: list[Document] = Field(
+ ..., description="The documents returned from the spider"
+ )
diff --git a/integrations-service/integrations/models/weather.py b/integrations-service/integrations/models/weather.py
new file mode 100644
index 000000000..47cd0d8e3
--- /dev/null
+++ b/integrations-service/integrations/models/weather.py
@@ -0,0 +1,23 @@
+from pydantic import Field
+
+from .base_models import (
+ BaseArguments,
+ BaseOutput,
+ BaseSetup,
+)
+
+
+class WeatherSetup(BaseSetup):
+ openweathermap_api_key: str = Field(
+ ..., description="The api key for OpenWeatherMap"
+ )
+
+
+class WeatherGetArguments(BaseArguments):
+ location: str = Field(
+ ..., description="The location for which to fetch weather data"
+ )
+
+
+class WeatherGetOutput(BaseOutput):
+ result: str = Field(..., description="The weather data for the specified location")
diff --git a/integrations-service/integrations/models/wikipedia.py b/integrations-service/integrations/models/wikipedia.py
new file mode 100644
index 000000000..8c8e4f623
--- /dev/null
+++ b/integrations-service/integrations/models/wikipedia.py
@@ -0,0 +1,20 @@
+from typing import Literal
+
+from langchain_core.documents import Document
+from pydantic import Field
+
+from .base_models import (
+ BaseArguments,
+ BaseOutput,
+)
+
+
+class WikipediaSearchArguments(BaseArguments):
+ query: str = Field(..., description="The search query string")
+ load_max_docs: int = Field(2, description="Maximum number of documents to load")
+
+
+class WikipediaSearchOutput(BaseOutput):
+ documents: list[Document] = Field(
+ ..., description="The documents returned from the Wikipedia search"
+ )
diff --git a/integrations-service/integrations/providers.py b/integrations-service/integrations/providers.py
new file mode 100644
index 000000000..4bce7a2ba
--- /dev/null
+++ b/integrations-service/integrations/providers.py
@@ -0,0 +1,144 @@
+from .models import (
+ BaseProvider,
+ BaseProviderMethod,
+ BraveSearchArguments,
+ BraveSearchOutput,
+ BraveSearchSetup,
+ BrowserBaseLoadArguments,
+ BrowserBaseLoadOutput,
+ BrowserBaseSetup,
+ HackerNewsFetchArguments,
+ HackerNewsFetchOutput,
+ ProviderInfo,
+ SpiderFetchArguments,
+ SpiderFetchOutput,
+ SpiderSetup,
+ WeatherGetArguments,
+ WeatherGetOutput,
+ WeatherSetup,
+ WikipediaSearchArguments,
+ WikipediaSearchOutput,
+)
+
+wikipedia = BaseProvider(
+ provider="wikipedia",
+ setup=None,
+ methods=[
+ BaseProviderMethod(
+ method="search",
+ description="Search for a page on Wikipedia",
+ arguments=WikipediaSearchArguments,
+ output=WikipediaSearchOutput,
+ ),
+ ],
+ info=ProviderInfo(
+ url="https://www.wikipedia.org/",
+ docs="https://www.wikipedia.org/wiki/Main_Page",
+ icon="https://www.wikipedia.org/static/favicon/wikipedia.ico",
+ friendly_name="Wikipedia",
+ ),
+)
+
+weather = BaseProvider(
+ provider="weather",
+ setup=WeatherSetup,
+ methods=[
+ BaseProviderMethod(
+ method="get",
+ description="Get the current weather for a city",
+ arguments=WeatherGetArguments,
+ output=WeatherGetOutput,
+ ),
+ ],
+ info=ProviderInfo(
+ url="https://www.weatherapi.com/",
+ docs="https://www.weatherapi.com/docs/",
+ icon="https://www.weatherapi.com/favicon.ico",
+ friendly_name="Weather API",
+ ),
+)
+
+hacker_news = BaseProvider(
+ provider="hacker_news",
+ setup=None,
+ methods=[
+ BaseProviderMethod(
+ method="fetch",
+ description="Get the top stories from Hacker News",
+ arguments=HackerNewsFetchArguments,
+ output=HackerNewsFetchOutput,
+ ),
+ ],
+ info=ProviderInfo(
+ url="https://news.ycombinator.com/",
+ docs="https://news.ycombinator.com/newsguidelines.html",
+ icon="https://news.ycombinator.com/favicon.ico",
+ friendly_name="Hacker News",
+ ),
+)
+
+spider = BaseProvider(
+ provider="spider",
+ setup=SpiderSetup,
+ methods=[
+ BaseProviderMethod(
+ method="crawl",
+ description="Crawl a website and extract data",
+ arguments=SpiderFetchArguments,
+ output=SpiderFetchOutput,
+ ),
+ ],
+ info=ProviderInfo(
+ url="https://spider.com/",
+ docs="https://spider.com/docs/",
+ icon="https://spider.com/favicon.ico",
+ friendly_name="Spider",
+ ),
+)
+
+brave = BaseProvider(
+ provider="brave",
+ setup=BraveSearchSetup,
+ methods=[
+ BaseProviderMethod(
+ method="search",
+ description="Search with Brave",
+ arguments=BraveSearchArguments,
+ output=BraveSearchOutput,
+ ),
+ ],
+ info=ProviderInfo(
+ url="https://brave.com/",
+ docs="https://brave.com/docs/",
+ icon="https://brave.com/favicon.ico",
+ friendly_name="Brave Search",
+ ),
+)
+
+browserbase = BaseProvider(
+ provider="browserbase",
+ setup=BrowserBaseSetup,
+ methods=[
+ BaseProviderMethod(
+ method="load",
+ description="Load documents from the provided urls",
+ arguments=BrowserBaseLoadArguments,
+ output=BrowserBaseLoadOutput,
+ ),
+ ],
+ info=ProviderInfo(
+ url="https://browserbase.com/",
+ docs="https://browserbase.com/docs/",
+ icon="https://browserbase.com/favicon.ico",
+ friendly_name="BrowserBase",
+ ),
+)
+
+providers = {
+ "wikipedia": wikipedia,
+ "weather": weather,
+ "hacker_news": hacker_news,
+ "spider": spider,
+ "brave": brave,
+ "browserbase": browserbase,
+}
diff --git a/integrations-service/integrations/routers/__init__.py b/integrations-service/integrations/routers/__init__.py
new file mode 100644
index 000000000..f1be65754
--- /dev/null
+++ b/integrations-service/integrations/routers/__init__.py
@@ -0,0 +1,2 @@
+from .execution.router import router as execution_router
+from .integrations.router import router as integrations_router
diff --git a/integrations-service/integrations/routers/execution/__init__.py b/integrations-service/integrations/routers/execution/__init__.py
new file mode 100644
index 000000000..ef8e79dda
--- /dev/null
+++ b/integrations-service/integrations/routers/execution/__init__.py
@@ -0,0 +1 @@
+from .execute import execute
diff --git a/integrations-service/integrations/routers/execution/execute.py b/integrations-service/integrations/routers/execution/execute.py
new file mode 100644
index 000000000..df4bf913a
--- /dev/null
+++ b/integrations-service/integrations/routers/execution/execute.py
@@ -0,0 +1,33 @@
+from fastapi import HTTPException
+
+from ...models.base_models import IdentifierName
+from ...models.execution import ExecutionRequest, ExecutionResponse
+from ...utils.execute_integration import execute_integration
+from .router import router
+
+
+@router.post("/execute/{provider}", tags=["execution"])
+async def execute(
+ provider: IdentifierName,
+ data: ExecutionRequest,
+) -> ExecutionResponse:
+ try:
+ return await execute_integration(
+ provider=provider, arguments=data.arguments, setup=data.setup
+ )
+ except ValueError as e:
+ raise HTTPException(status_code=400, detail=str(e))
+
+
+@router.post("/execute/{provider}/{method}", tags=["execution"])
+def execute(
+ provider: IdentifierName,
+ method: IdentifierName,
+ data: ExecutionRequest,
+) -> ExecutionResponse:
+ try:
+ return execute_integration(
+ provider=provider, arguments=data.arguments, setup=data.setup, method=method
+ )
+ except ValueError as e:
+ raise HTTPException(status_code=400, detail=str(e))
diff --git a/integrations-service/integrations/routers/execution/router.py b/integrations-service/integrations/routers/execution/router.py
new file mode 100644
index 000000000..5c3ec9311
--- /dev/null
+++ b/integrations-service/integrations/routers/execution/router.py
@@ -0,0 +1,3 @@
+from fastapi import APIRouter
+
+router: APIRouter = APIRouter()
diff --git a/integrations-service/integrations/routers/integrations/__init__.py b/integrations-service/integrations/routers/integrations/__init__.py
new file mode 100644
index 000000000..26eac0aaf
--- /dev/null
+++ b/integrations-service/integrations/routers/integrations/__init__.py
@@ -0,0 +1,3 @@
+from .get_integration import get_integration
+from .get_integration_tool import get_integration_tool
+from .get_integrations import get_integrations
diff --git a/integrations-service/integrations/routers/integrations/get_integration.py b/integrations-service/integrations/routers/integrations/get_integration.py
new file mode 100644
index 000000000..2a9b34595
--- /dev/null
+++ b/integrations-service/integrations/routers/integrations/get_integration.py
@@ -0,0 +1,23 @@
+from typing import List
+
+from ...providers import providers
+from .router import router
+
+
+@router.get("/integrations/{provider}", tags=["integration"])
+async def get_integration(provider: str) -> dict:
+ integration = providers[provider]
+ return {
+ "provider": integration.provider,
+ "setup": integration.setup.model_json_schema() if integration.setup else None,
+ "methods": [
+ {
+ "method": m.method,
+ "description": m.description,
+ "arguments": m.arguments.model_json_schema(),
+ "output": m.output.model_json_schema(),
+ }
+ for m in integration.methods
+ ],
+ "info": integration.info.model_dump_json(),
+ }
diff --git a/integrations-service/integrations/routers/integrations/get_integration_tool.py b/integrations-service/integrations/routers/integrations/get_integration_tool.py
new file mode 100644
index 000000000..42e3c1bc8
--- /dev/null
+++ b/integrations-service/integrations/routers/integrations/get_integration_tool.py
@@ -0,0 +1,44 @@
+from typing import Optional
+
+from fastapi import HTTPException
+
+from ...models.base_models import BaseProvider, BaseProviderMethod
+from .router import router
+
+
+def convert_to_openai_tool(
+ provider: BaseProvider, method: Optional[BaseProviderMethod] = None
+) -> dict:
+ method = method or provider.methods[0]
+ name = f"{provider.provider}_{method.method}"
+ description = method.description
+ arguments = method.arguments.model_json_schema()
+
+ return {
+ "type": "function",
+ "function": {
+ "name": name,
+ "description": description,
+ "parameters": arguments,
+ },
+ }
+
+
+@router.get("/integrations/{provider}/tool", tags=["integration_tool"])
+@router.get("/integrations/{provider}/{method}/tool", tags=["integration_tool"])
+async def get_integration_tool(provider: str, method: Optional[str] = None):
+ from ...providers import providers
+
+ provider: BaseProvider | None = providers.get(provider, None)
+
+ if not provider:
+ raise HTTPException(status_code=404, detail="Integration not found")
+
+ if method:
+ for m in provider.methods:
+ if m.method == method:
+ return convert_to_openai_tool(provider, m)
+ else:
+ return convert_to_openai_tool(provider)
+
+ raise HTTPException(status_code=404, detail="Integration not found")
diff --git a/integrations-service/integrations/routers/integrations/get_integrations.py b/integrations-service/integrations/routers/integrations/get_integrations.py
new file mode 100644
index 000000000..b3b3530c7
--- /dev/null
+++ b/integrations-service/integrations/routers/integrations/get_integrations.py
@@ -0,0 +1,31 @@
+from typing import List
+
+from ...providers import providers
+from .router import router
+
+
+@router.get("/integrations", tags=["integrations"])
+async def get_integrations() -> List[dict]:
+ integrations = [
+ {
+ "provider": p.provider,
+ "setup": p.setup.model_json_schema() if p.setup else None,
+ "methods": [
+ {
+ "method": m.method,
+ "description": m.description,
+ "arguments": m.arguments.model_json_schema(),
+ "output": m.output.model_json_schema(),
+ }
+ for m in p.methods
+ ],
+ "info": {
+ "url": p.info.url,
+ "docs": p.info.docs,
+ "icon": p.info.icon,
+ "friendly_name": p.info.friendly_name,
+ },
+ }
+ for p in providers.values()
+ ]
+ return integrations
diff --git a/integrations-service/integrations/routers/integrations/router.py b/integrations-service/integrations/routers/integrations/router.py
new file mode 100644
index 000000000..5c3ec9311
--- /dev/null
+++ b/integrations-service/integrations/routers/integrations/router.py
@@ -0,0 +1,3 @@
+from fastapi import APIRouter
+
+router: APIRouter = APIRouter()
diff --git a/integrations-service/integrations/utils/execute_integration.py b/integrations-service/integrations/utils/execute_integration.py
new file mode 100644
index 000000000..fdc6d23d0
--- /dev/null
+++ b/integrations-service/integrations/utils/execute_integration.py
@@ -0,0 +1,37 @@
+import importlib
+
+from ..models.base_models import BaseProvider, IdentifierName
+from ..models.execution import ExecutionArguments, ExecutionResponse, ExecutionSetup
+from ..providers import providers
+
+
+async def execute_integration(
+ provider: IdentifierName,
+ arguments: ExecutionArguments,
+ method: IdentifierName | None = None,
+ setup: ExecutionSetup | None = None,
+) -> ExecutionResponse:
+ if provider not in providers:
+ raise ValueError(f"Unknown provider: {provider}")
+ provider: BaseProvider = providers[provider]
+ if method is None:
+ method = provider.methods[0].method
+ if method not in [method.method for method in provider.methods]:
+ raise ValueError(f"Unknown method: {method} for provider: {provider}")
+
+ provider_module = importlib.import_module(
+ f"integrations.utils.integrations.{provider.provider}", package="integrations"
+ )
+ execution_function = getattr(provider_module, method)
+
+ if setup:
+ setup_class = provider.setup
+ if setup_class:
+ setup = setup_class(**setup.model_dump())
+ arguments_class = next(m for m in provider.methods if m.method == method).arguments
+ parsed_arguments = arguments_class(**arguments.model_dump())
+
+ if setup:
+ return await execution_function(setup=setup, arguments=parsed_arguments)
+ else:
+ return execution_function(arguments=parsed_arguments)
diff --git a/integrations-service/integrations/utils/integrations/__init__.py b/integrations-service/integrations/utils/integrations/__init__.py
new file mode 100644
index 000000000..dc123fd4c
--- /dev/null
+++ b/integrations-service/integrations/utils/integrations/__init__.py
@@ -0,0 +1,6 @@
+from .brave import search
+from .browserbase import load
+from .hacker_news import fetch
+from .spider import crawl
+from .weather import get
+from .wikipedia import search
diff --git a/integrations-service/integrations/utils/integrations/__tts_query.py b/integrations-service/integrations/utils/integrations/__tts_query.py
new file mode 100644
index 000000000..b4ce59d4d
--- /dev/null
+++ b/integrations-service/integrations/utils/integrations/__tts_query.py
@@ -0,0 +1,20 @@
+import os
+
+from langchain_community.tools import ElevenLabsText2SpeechTool
+
+
+async def tts_query(arguments: dict) -> str:
+ """
+ Converts text to speech using ElevenLabs API and plays the generated audio.
+ """
+ text_to_speak = arguments.get("query")
+ if not text_to_speak:
+ raise ValueError("Query parameter is required for text to speech")
+
+ eleven_api_key = os.getenv("ELEVEN_API_KEY")
+
+ tts = ElevenLabsText2SpeechTool(eleven_api_key=eleven_api_key)
+
+ speech_file = tts.run(text_to_speak)
+
+ return tts.play(speech_file)
diff --git a/integrations-service/integrations/utils/integrations/__twitter.py b/integrations-service/integrations/utils/integrations/__twitter.py
new file mode 100644
index 000000000..b21b18197
--- /dev/null
+++ b/integrations-service/integrations/utils/integrations/__twitter.py
@@ -0,0 +1,32 @@
+import os
+
+from langchain_community.document_loaders import TwitterTweetLoader
+
+
+async def twitter(arguments: dict) -> str:
+ """
+ Loads tweets from specified Twitter users and returns them as formatted string.
+ """
+ bearer_token = os.getenv("TWITTER_BEARER_TOKEN")
+ if not bearer_token:
+ raise ValueError("Twitter API bearer token is not set")
+
+ twitter_users = arguments.get("twitter_users")
+ if not twitter_users:
+ raise ValueError("Twitter users parameter is required for Twitter loader")
+
+ number_tweets = arguments.get("number_tweets", 50)
+
+ loader = TwitterTweetLoader.from_bearer_token(
+ oauth2_bearer_token=bearer_token,
+ twitter_users=twitter_users,
+ number_tweets=number_tweets,
+ )
+
+ documents = loader.load()
+
+ # Format the results as a string
+ result = "\n\n".join(
+ [f"Tweet: {doc.page_content}\nMetadata: {doc.metadata}" for doc in documents]
+ )
+ return result
diff --git a/integrations-service/integrations/utils/integrations/brave.py b/integrations-service/integrations/utils/integrations/brave.py
new file mode 100644
index 000000000..10bfe8084
--- /dev/null
+++ b/integrations-service/integrations/utils/integrations/brave.py
@@ -0,0 +1,19 @@
+from langchain_community.tools import BraveSearch
+
+from ...models import BraveSearchArguments, BraveSearchOutput, BraveSearchSetup
+
+
+async def search(
+ setup: BraveSearchSetup, arguments: BraveSearchArguments
+) -> BraveSearchOutput:
+ """
+ Searches Brave Search with the provided query.
+ """
+
+ assert isinstance(setup, BraveSearchSetup), "Invalid setup"
+ assert isinstance(arguments, BraveSearchArguments), "Invalid arguments"
+
+ tool = BraveSearch.from_api_key(api_key=setup.api_key, search_kwargs={"count": 3})
+
+ result = tool.run(arguments.query)
+ return BraveSearchOutput(result=result)
diff --git a/integrations-service/integrations/utils/integrations/browserbase.py b/integrations-service/integrations/utils/integrations/browserbase.py
new file mode 100644
index 000000000..7cc672662
--- /dev/null
+++ b/integrations-service/integrations/utils/integrations/browserbase.py
@@ -0,0 +1,27 @@
+from langchain_community.document_loaders import BrowserbaseLoader
+
+from ...models import BrowserBaseLoadArguments, BrowserBaseLoadOutput, BrowserBaseSetup
+
+
+async def load(
+ setup: BrowserBaseSetup, arguments: BrowserBaseLoadArguments
+) -> BrowserBaseLoadOutput:
+ """
+ Loads documents from the provided urls using BrowserBase.
+ """
+
+ assert isinstance(setup, BrowserBaseSetup), "Invalid setup"
+ assert isinstance(arguments, BrowserBaseLoadArguments), "Invalid arguments"
+
+ urls = [str(url) for url in arguments.urls]
+
+ loader = BrowserbaseLoader(
+ api_key=setup.api_key,
+ project_id=setup.project_id,
+ session_id=setup.session_id,
+ urls=urls,
+ text_content=False,
+ )
+
+ documents = loader.load()
+ return BrowserBaseLoadOutput(documents=documents)
diff --git a/integrations-service/integrations/utils/integrations/dalle_image_generator.py b/integrations-service/integrations/utils/integrations/dalle_image_generator.py
new file mode 100644
index 000000000..e0a6496b8
--- /dev/null
+++ b/integrations-service/integrations/utils/integrations/dalle_image_generator.py
@@ -0,0 +1,22 @@
+from langchain_community.utilities.dalle_image_generator import DallEAPIWrapper
+
+from ...models import DalleImageGeneratorArguments, DalleImageGeneratorSetup
+
+
+async def dalle_image_generator(
+ setup: DalleImageGeneratorSetup, arguments: DalleImageGeneratorArguments
+) -> str:
+ """
+ Generates an image using DALL-E based on a provided prompt.
+ """
+
+ assert isinstance(setup, DalleImageGeneratorSetup), "Invalid setup"
+ assert isinstance(arguments, DalleImageGeneratorArguments), "Invalid arguments"
+
+ # FIXME: Fix OpenAI API Key error
+
+ dalle = DallEAPIWrapper(api_key=setup.api_key)
+ prompt = arguments.prompt
+ if not prompt:
+ raise ValueError("Prompt parameter is required for DALL-E image generation")
+ return dalle.run(prompt)
diff --git a/integrations-service/integrations/utils/integrations/duckduckgo_search.py b/integrations-service/integrations/utils/integrations/duckduckgo_search.py
new file mode 100644
index 000000000..a8ea38f56
--- /dev/null
+++ b/integrations-service/integrations/utils/integrations/duckduckgo_search.py
@@ -0,0 +1,15 @@
+from langchain_community.tools import DuckDuckGoSearchRun
+
+from ...models import DuckDuckGoSearchExecutionArguments
+
+
+async def duckduckgo_search(arguments: DuckDuckGoSearchExecutionArguments) -> str:
+ """
+ Performs a web search using DuckDuckGo and returns the results.
+ """
+
+ search = DuckDuckGoSearchRun()
+ query = arguments.query
+ if not query:
+ raise ValueError("Query parameter is required for DuckDuckGo search")
+ return search.run(query)
diff --git a/integrations-service/integrations/utils/integrations/gmail/send_mail.py b/integrations-service/integrations/utils/integrations/gmail/send_mail.py
new file mode 100644
index 000000000..e1863f280
--- /dev/null
+++ b/integrations-service/integrations/utils/integrations/gmail/send_mail.py
@@ -0,0 +1,6 @@
+async def send_mail(arguments: dict) -> str:
+ """
+ Dummy integration for sending an email to a specified recipient with a given subject and message.
+ """
+
+ return "Mail sent"
diff --git a/integrations-service/integrations/utils/integrations/hacker_news.py b/integrations-service/integrations/utils/integrations/hacker_news.py
new file mode 100644
index 000000000..526024c72
--- /dev/null
+++ b/integrations-service/integrations/utils/integrations/hacker_news.py
@@ -0,0 +1,22 @@
+from langchain_community.document_loaders import HNLoader
+
+from ...models import HackerNewsFetchArguments, HackerNewsFetchOutput
+
+
+async def fetch(arguments: HackerNewsFetchArguments) -> HackerNewsFetchOutput:
+ """
+ Fetches and formats content from a Hacker News thread using the provided URL.
+ """
+
+ assert isinstance(arguments, HackerNewsFetchArguments), "Invalid arguments"
+
+ url = arguments.url
+ if not url:
+ raise ValueError("URL parameter is required for Hacker News search")
+ loader = HNLoader(str(url))
+ documents = loader.load()
+
+ if not documents:
+ raise ValueError("No data found for the given URL")
+
+ return HackerNewsFetchOutput(documents=documents)
diff --git a/integrations-service/integrations/utils/integrations/request.py b/integrations-service/integrations/utils/integrations/request.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/integrations-service/integrations/utils/integrations/spider.py b/integrations-service/integrations/utils/integrations/spider.py
new file mode 100644
index 000000000..a355e2347
--- /dev/null
+++ b/integrations-service/integrations/utils/integrations/spider.py
@@ -0,0 +1,28 @@
+from langchain_community.document_loaders import SpiderLoader
+
+from ...models import SpiderFetchArguments, SpiderFetchOutput, SpiderSetup
+
+
+async def crawl(setup: SpiderSetup, arguments: SpiderFetchArguments) -> SpiderFetchOutput:
+ """
+ Fetches data from a specified URL.
+ """
+
+ assert isinstance(setup, SpiderSetup), "Invalid setup"
+ assert isinstance(arguments, SpiderFetchArguments), "Invalid arguments"
+
+ url = arguments.url
+
+ if not url:
+ raise ValueError("URL parameter is required for spider")
+
+ spider_loader = SpiderLoader(
+ api_key=setup.spider_api_key,
+ url=str(url),
+ mode=arguments.mode,
+ params=arguments.params,
+ )
+
+ documents = spider_loader.load()
+
+ return SpiderFetchOutput(documents=documents)
diff --git a/integrations-service/integrations/utils/integrations/weather.py b/integrations-service/integrations/utils/integrations/weather.py
new file mode 100644
index 000000000..e9393bc09
--- /dev/null
+++ b/integrations-service/integrations/utils/integrations/weather.py
@@ -0,0 +1,23 @@
+from langchain_community.utilities import OpenWeatherMapAPIWrapper
+
+from ...models import WeatherGetArguments, WeatherGetOutput, WeatherSetup
+
+
+async def get(setup: WeatherSetup, arguments: WeatherGetArguments) -> WeatherGetOutput:
+ """
+ Fetches weather data for a specified location using OpenWeatherMap API.
+ """
+
+ assert isinstance(setup, WeatherSetup), "Invalid setup"
+ assert isinstance(arguments, WeatherGetArguments), "Invalid arguments"
+
+ location = arguments.location
+
+ openweathermap_api_key = setup.openweathermap_api_key
+ if not location:
+ raise ValueError("Location parameter is required for weather data")
+
+ weather = OpenWeatherMapAPIWrapper(openweathermap_api_key=openweathermap_api_key)
+ result = weather.run(location)
+ return WeatherGetOutput(result=result)
+
diff --git a/integrations-service/integrations/utils/integrations/wikipedia.py b/integrations-service/integrations/utils/integrations/wikipedia.py
new file mode 100644
index 000000000..aa53b5515
--- /dev/null
+++ b/integrations-service/integrations/utils/integrations/wikipedia.py
@@ -0,0 +1,20 @@
+from langchain_community.document_loaders import WikipediaLoader
+
+from ...models import WikipediaSearchArguments, WikipediaSearchOutput
+
+
+def search(arguments: WikipediaSearchArguments) -> WikipediaSearchOutput:
+ """
+ Searches Wikipedia for a given query and returns formatted results.
+ """
+
+ query = arguments.query
+ if not query:
+ raise ValueError("Query parameter is required for Wikipedia search")
+
+ load_max_docs = arguments.load_max_docs
+
+ loader = WikipediaLoader(query=query, load_max_docs=load_max_docs)
+ documents = loader.load()
+
+ return WikipediaSearchOutput(documents=documents)
diff --git a/integrations-service/integrations/web.py b/integrations-service/integrations/web.py
new file mode 100644
index 000000000..ae91a53ca
--- /dev/null
+++ b/integrations-service/integrations/web.py
@@ -0,0 +1,83 @@
+import logging
+from typing import Any, Callable
+
+import fire
+import uvicorn
+from fastapi import FastAPI, Request, status
+from fastapi.exceptions import HTTPException, RequestValidationError
+from fastapi.responses import JSONResponse
+
+from .routers import execution_router, integrations_router
+
+app: FastAPI = FastAPI()
+
+# Add routers
+app.include_router(integrations_router)
+app.include_router(execution_router)
+
+
+logger: logging.Logger = logging.getLogger(__name__)
+
+
+def make_exception_handler(status: int) -> Callable[[Any, Any], Any]:
+ """
+ Creates a custom exception handler for the application.
+
+ Parameters:
+ - status (int): The HTTP status code to return for this exception.
+
+ Returns:
+ A callable exception handler that logs the exception and returns a JSON response with the specified status code.
+ """
+
+ async def _handler(request: Request, exc):
+ exc_str = f"{exc}".replace("\n", " ").replace(" ", " ")
+ logger.exception(exc)
+ content = {"status_code": status, "message": exc_str, "data": None}
+ return JSONResponse(content=content, status_code=status)
+
+ return _handler
+
+
+def register_exceptions(app: FastAPI) -> None:
+ """
+ Registers custom exception handlers for the FastAPI application.
+
+ Parameters:
+ - app (FastAPI): The FastAPI application instance to register the exception handlers for.
+ """
+ app.add_exception_handler(
+ RequestValidationError,
+ make_exception_handler(status.HTTP_422_UNPROCESSABLE_ENTITY),
+ )
+
+
+@app.exception_handler(HTTPException)
+async def http_exception_handler(request, exc: HTTPException): # pylint: disable=unused-argument
+ return JSONResponse(
+ status_code=exc.status_code,
+ content={"error": {"message": str(exc)}},
+ )
+
+
+def main(
+ host="0.0.0.0",
+ port=8000,
+ backlog=4096,
+ timeout_keep_alive=30,
+ workers=None,
+ log_level="info",
+) -> None:
+ uvicorn.run(
+ app,
+ host=host,
+ port=port,
+ log_level=log_level,
+ timeout_keep_alive=timeout_keep_alive,
+ backlog=backlog,
+ workers=workers,
+ )
+
+
+if __name__ == "__main__":
+ fire.Fire(main)
diff --git a/integrations-service/poetry.lock b/integrations-service/poetry.lock
new file mode 100644
index 000000000..e56fd28cd
--- /dev/null
+++ b/integrations-service/poetry.lock
@@ -0,0 +1,2396 @@
+# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
+
+[[package]]
+name = "aiohappyeyeballs"
+version = "2.4.2"
+description = "Happy Eyeballs for asyncio"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "aiohappyeyeballs-2.4.2-py3-none-any.whl", hash = "sha256:8522691d9a154ba1145b157d6d5c15e5c692527ce6a53c5e5f9876977f6dab2f"},
+ {file = "aiohappyeyeballs-2.4.2.tar.gz", hash = "sha256:4ca893e6c5c1f5bf3888b04cb5a3bee24995398efef6e0b9f747b5e89d84fd74"},
+]
+
+[[package]]
+name = "aiohttp"
+version = "3.10.8"
+description = "Async http client/server framework (asyncio)"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "aiohttp-3.10.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a1ba7bc139592339ddeb62c06486d0fa0f4ca61216e14137a40d626c81faf10c"},
+ {file = "aiohttp-3.10.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:85e4d7bd05d18e4b348441e7584c681eff646e3bf38f68b2626807f3add21aa2"},
+ {file = "aiohttp-3.10.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:69de056022e7abf69cb9fec795515973cc3eeaff51e3ea8d72a77aa933a91c52"},
+ {file = "aiohttp-3.10.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee3587506898d4a404b33bd19689286ccf226c3d44d7a73670c8498cd688e42c"},
+ {file = "aiohttp-3.10.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fe285a697c851734285369614443451462ce78aac2b77db23567507484b1dc6f"},
+ {file = "aiohttp-3.10.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10c7932337285a6bfa3a5fe1fd4da90b66ebfd9d0cbd1544402e1202eb9a8c3e"},
+ {file = "aiohttp-3.10.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd9716ef0224fe0d0336997eb242f40619f9f8c5c57e66b525a1ebf9f1d8cebe"},
+ {file = "aiohttp-3.10.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ceacea31f8a55cdba02bc72c93eb2e1b77160e91f8abd605969c168502fd71eb"},
+ {file = "aiohttp-3.10.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9721554bfa9e15f6e462da304374c2f1baede3cb06008c36c47fa37ea32f1dc4"},
+ {file = "aiohttp-3.10.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:22cdeb684d8552490dd2697a5138c4ecb46f844892df437aaf94f7eea99af879"},
+ {file = "aiohttp-3.10.8-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e56bb7e31c4bc79956b866163170bc89fd619e0581ce813330d4ea46921a4881"},
+ {file = "aiohttp-3.10.8-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:3a95d2686bc4794d66bd8de654e41b5339fab542b2bca9238aa63ed5f4f2ce82"},
+ {file = "aiohttp-3.10.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d82404a0e7b10e0d7f022cf44031b78af8a4f99bd01561ac68f7c24772fed021"},
+ {file = "aiohttp-3.10.8-cp310-cp310-win32.whl", hash = "sha256:4e10b04542d27e21538e670156e88766543692a0a883f243ba8fad9ddea82e53"},
+ {file = "aiohttp-3.10.8-cp310-cp310-win_amd64.whl", hash = "sha256:680dbcff5adc7f696ccf8bf671d38366a1f620b5616a1d333d0cb33956065395"},
+ {file = "aiohttp-3.10.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:33a68011a38020ed4ff41ae0dbf4a96a202562ecf2024bdd8f65385f1d07f6ef"},
+ {file = "aiohttp-3.10.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6c7efa6616a95e3bd73b8a69691012d2ef1f95f9ea0189e42f338fae080c2fc6"},
+ {file = "aiohttp-3.10.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ddb9b9764cfb4459acf01c02d2a59d3e5066b06a846a364fd1749aa168efa2be"},
+ {file = "aiohttp-3.10.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7f270f4ca92760f98a42c45a58674fff488e23b144ec80b1cc6fa2effed377"},
+ {file = "aiohttp-3.10.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6984dda9d79064361ab58d03f6c1e793ea845c6cfa89ffe1a7b9bb400dfd56bd"},
+ {file = "aiohttp-3.10.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f6d47e392c27206701565c8df4cac6ebed28fdf6dcaea5b1eea7a4631d8e6db"},
+ {file = "aiohttp-3.10.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a72f89aea712c619b2ca32c6f4335c77125ede27530ad9705f4f349357833695"},
+ {file = "aiohttp-3.10.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36074b26f3263879ba8e4dbd33db2b79874a3392f403a70b772701363148b9f"},
+ {file = "aiohttp-3.10.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e32148b4a745e70a255a1d44b5664de1f2e24fcefb98a75b60c83b9e260ddb5b"},
+ {file = "aiohttp-3.10.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5aa1a073514cf59c81ad49a4ed9b5d72b2433638cd53160fd2f3a9cfa94718db"},
+ {file = "aiohttp-3.10.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d3a79200a9d5e621c4623081ddb25380b713c8cf5233cd11c1aabad990bb9381"},
+ {file = "aiohttp-3.10.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e45fdfcb2d5bcad83373e4808825b7512953146d147488114575780640665027"},
+ {file = "aiohttp-3.10.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f78e2a78432c537ae876a93013b7bc0027ba5b93ad7b3463624c4b6906489332"},
+ {file = "aiohttp-3.10.8-cp311-cp311-win32.whl", hash = "sha256:f8179855a4e4f3b931cb1764ec87673d3fbdcca2af496c8d30567d7b034a13db"},
+ {file = "aiohttp-3.10.8-cp311-cp311-win_amd64.whl", hash = "sha256:ef9b484604af05ca745b6108ca1aaa22ae1919037ae4f93aaf9a37ba42e0b835"},
+ {file = "aiohttp-3.10.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ab2d6523575fc98896c80f49ac99e849c0b0e69cc80bf864eed6af2ae728a52b"},
+ {file = "aiohttp-3.10.8-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f5d5d5401744dda50b943d8764508d0e60cc2d3305ac1e6420935861a9d544bc"},
+ {file = "aiohttp-3.10.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de23085cf90911600ace512e909114385026b16324fa203cc74c81f21fd3276a"},
+ {file = "aiohttp-3.10.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4618f0d2bf523043866a9ff8458900d8eb0a6d4018f251dae98e5f1fb699f3a8"},
+ {file = "aiohttp-3.10.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21c1925541ca84f7b5e0df361c0a813a7d6a56d3b0030ebd4b220b8d232015f9"},
+ {file = "aiohttp-3.10.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:497a7d20caea8855c5429db3cdb829385467217d7feb86952a6107e033e031b9"},
+ {file = "aiohttp-3.10.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c887019dbcb4af58a091a45ccf376fffe800b5531b45c1efccda4bedf87747ea"},
+ {file = "aiohttp-3.10.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40d2d719c3c36a7a65ed26400e2b45b2d9ed7edf498f4df38b2ae130f25a0d01"},
+ {file = "aiohttp-3.10.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:57359785f27394a8bcab0da6dcd46706d087dfebf59a8d0ad2e64a4bc2f6f94f"},
+ {file = "aiohttp-3.10.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a961ee6f2cdd1a2be4735333ab284691180d40bad48f97bb598841bfcbfb94ec"},
+ {file = "aiohttp-3.10.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:fe3d79d6af839ffa46fdc5d2cf34295390894471e9875050eafa584cb781508d"},
+ {file = "aiohttp-3.10.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a281cba03bdaa341c70b7551b2256a88d45eead149f48b75a96d41128c240b3"},
+ {file = "aiohttp-3.10.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c6769d71bfb1ed60321363a9bc05e94dcf05e38295ef41d46ac08919e5b00d19"},
+ {file = "aiohttp-3.10.8-cp312-cp312-win32.whl", hash = "sha256:a3081246bab4d419697ee45e555cef5cd1def7ac193dff6f50be761d2e44f194"},
+ {file = "aiohttp-3.10.8-cp312-cp312-win_amd64.whl", hash = "sha256:ab1546fc8e00676febc81c548a876c7bde32f881b8334b77f84719ab2c7d28dc"},
+ {file = "aiohttp-3.10.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:b1a012677b8e0a39e181e218de47d6741c5922202e3b0b65e412e2ce47c39337"},
+ {file = "aiohttp-3.10.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2df786c96c57cd6b87156ba4c5f166af7b88f3fc05f9d592252fdc83d8615a3c"},
+ {file = "aiohttp-3.10.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8885ca09d3a9317219c0831276bfe26984b17b2c37b7bf70dd478d17092a4772"},
+ {file = "aiohttp-3.10.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dbf252ac19860e0ab56cd480d2805498f47c5a2d04f5995d8d8a6effd04b48c"},
+ {file = "aiohttp-3.10.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2036479b6b94afaaca7d07b8a68dc0e67b0caf5f6293bb6a5a1825f5923000"},
+ {file = "aiohttp-3.10.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:365783e1b7c40b59ed4ce2b5a7491bae48f41cd2c30d52647a5b1ee8604c68ad"},
+ {file = "aiohttp-3.10.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:270e653b5a4b557476a1ed40e6b6ce82f331aab669620d7c95c658ef976c9c5e"},
+ {file = "aiohttp-3.10.8-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8960fabc20bfe4fafb941067cda8e23c8c17c98c121aa31c7bf0cdab11b07842"},
+ {file = "aiohttp-3.10.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f21e8f2abed9a44afc3d15bba22e0dfc71e5fa859bea916e42354c16102b036f"},
+ {file = "aiohttp-3.10.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fecd55e7418fabd297fd836e65cbd6371aa4035a264998a091bbf13f94d9c44d"},
+ {file = "aiohttp-3.10.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:badb51d851358cd7535b647bb67af4854b64f3c85f0d089c737f75504d5910ec"},
+ {file = "aiohttp-3.10.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e860985f30f3a015979e63e7ba1a391526cdac1b22b7b332579df7867848e255"},
+ {file = "aiohttp-3.10.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:71462f8eeca477cbc0c9700a9464e3f75f59068aed5e9d4a521a103692da72dc"},
+ {file = "aiohttp-3.10.8-cp313-cp313-win32.whl", hash = "sha256:177126e971782769b34933e94fddd1089cef0fe6b82fee8a885e539f5b0f0c6a"},
+ {file = "aiohttp-3.10.8-cp313-cp313-win_amd64.whl", hash = "sha256:98a4eb60e27033dee9593814ca320ee8c199489fbc6b2699d0f710584db7feb7"},
+ {file = "aiohttp-3.10.8-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ffef3d763e4c8fc97e740da5b4d0f080b78630a3914f4e772a122bbfa608c1db"},
+ {file = "aiohttp-3.10.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:597128cb7bc5f068181b49a732961f46cb89f85686206289d6ccb5e27cb5fbe2"},
+ {file = "aiohttp-3.10.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f23a6c1d09de5de89a33c9e9b229106cb70dcfdd55e81a3a3580eaadaa32bc92"},
+ {file = "aiohttp-3.10.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da57af0c54a302b7c655fa1ccd5b1817a53739afa39924ef1816e7b7c8a07ccb"},
+ {file = "aiohttp-3.10.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e7a6af57091056a79a35104d6ec29d98ec7f1fb7270ad9c6fff871b678d1ff8"},
+ {file = "aiohttp-3.10.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32710d6b3b6c09c60c794d84ca887a3a2890131c0b02b3cefdcc6709a2260a7c"},
+ {file = "aiohttp-3.10.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b91f4f62ad39a8a42d511d66269b46cb2fb7dea9564c21ab6c56a642d28bff5"},
+ {file = "aiohttp-3.10.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:471a8c47344b9cc309558b3fcc469bd2c12b49322b4b31eb386c4a2b2d44e44a"},
+ {file = "aiohttp-3.10.8-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:fc0e7f91705445d79beafba9bb3057dd50830e40fe5417017a76a214af54e122"},
+ {file = "aiohttp-3.10.8-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:85431c9131a9a0f65260dc7a65c800ca5eae78c4c9931618f18c8e0933a0e0c1"},
+ {file = "aiohttp-3.10.8-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:b91557ee0893da52794b25660d4f57bb519bcad8b7df301acd3898f7197c5d81"},
+ {file = "aiohttp-3.10.8-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:4954e6b06dd0be97e1a5751fc606be1f9edbdc553c5d9b57d72406a8fbd17f9d"},
+ {file = "aiohttp-3.10.8-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a087c84b4992160ffef7afd98ef24177c8bd4ad61c53607145a8377457385100"},
+ {file = "aiohttp-3.10.8-cp38-cp38-win32.whl", hash = "sha256:e1f0f7b27171b2956a27bd8f899751d0866ddabdd05cbddf3520f945130a908c"},
+ {file = "aiohttp-3.10.8-cp38-cp38-win_amd64.whl", hash = "sha256:c4916070e12ae140110aa598031876c1bf8676a36a750716ea0aa5bd694aa2e7"},
+ {file = "aiohttp-3.10.8-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5284997e3d88d0dfb874c43e51ae8f4a6f4ca5b90dcf22995035187253d430db"},
+ {file = "aiohttp-3.10.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9443d9ebc5167ce1fbb552faf2d666fb22ef5716a8750be67efd140a7733738c"},
+ {file = "aiohttp-3.10.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b667e2a03407d79a76c618dc30cedebd48f082d85880d0c9c4ec2faa3e10f43e"},
+ {file = "aiohttp-3.10.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98fae99d5c2146f254b7806001498e6f9ffb0e330de55a35e72feb7cb2fa399b"},
+ {file = "aiohttp-3.10.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8296edd99d0dd9d0eb8b9e25b3b3506eef55c1854e9cc230f0b3f885f680410b"},
+ {file = "aiohttp-3.10.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ce46dfb49cfbf9e92818be4b761d4042230b1f0e05ffec0aad15b3eb162b905"},
+ {file = "aiohttp-3.10.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c38cfd355fd86c39b2d54651bd6ed7d63d4fe3b5553f364bae3306e2445f847"},
+ {file = "aiohttp-3.10.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:713dff3f87ceec3bde4f3f484861464e722cf7533f9fa6b824ec82bb5a9010a7"},
+ {file = "aiohttp-3.10.8-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:21a72f4a9c69a8567a0aca12042f12bba25d3139fd5dd8eeb9931f4d9e8599cd"},
+ {file = "aiohttp-3.10.8-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:6d1ad868624f6cea77341ef2877ad4e71f7116834a6cd7ec36ec5c32f94ee6ae"},
+ {file = "aiohttp-3.10.8-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:a78ba86d5a08207d1d1ad10b97aed6ea48b374b3f6831d02d0b06545ac0f181e"},
+ {file = "aiohttp-3.10.8-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:aff048793d05e1ce05b62e49dccf81fe52719a13f4861530706619506224992b"},
+ {file = "aiohttp-3.10.8-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d088ca05381fd409793571d8e34eca06daf41c8c50a05aeed358d2d340c7af81"},
+ {file = "aiohttp-3.10.8-cp39-cp39-win32.whl", hash = "sha256:ee97c4e54f457c366e1f76fbbf3e8effee9de57dae671084a161c00f481106ce"},
+ {file = "aiohttp-3.10.8-cp39-cp39-win_amd64.whl", hash = "sha256:d95ae4420669c871667aad92ba8cce6251d61d79c1a38504621094143f94a8b4"},
+ {file = "aiohttp-3.10.8.tar.gz", hash = "sha256:21f8225f7dc187018e8433c9326be01477fb2810721e048b33ac49091b19fb4a"},
+]
+
+[package.dependencies]
+aiohappyeyeballs = ">=2.3.0"
+aiosignal = ">=1.1.2"
+attrs = ">=17.3.0"
+frozenlist = ">=1.1.1"
+multidict = ">=4.5,<7.0"
+yarl = ">=1.12.0,<2.0"
+
+[package.extras]
+speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"]
+
+[[package]]
+name = "aiosignal"
+version = "1.3.1"
+description = "aiosignal: a list of registered asynchronous callbacks"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"},
+ {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"},
+]
+
+[package.dependencies]
+frozenlist = ">=1.1.0"
+
+[[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.0"
+description = "High level compatibility layer for multiple asynchronous event loop implementations"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"},
+ {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"},
+]
+
+[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", "uvloop (>=0.21.0b1)"]
+trio = ["trio (>=0.26.1)"]
+
+[[package]]
+name = "atomicwrites"
+version = "1.4.1"
+description = "Atomic file writes."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"},
+]
+
+[[package]]
+name = "attrs"
+version = "24.2.0"
+description = "Classes Without Boilerplate"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"},
+ {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"},
+]
+
+[package.extras]
+benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
+cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
+dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
+docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"]
+tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
+tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"]
+
+[[package]]
+name = "beautifulsoup4"
+version = "4.12.3"
+description = "Screen-scraping library"
+optional = false
+python-versions = ">=3.6.0"
+files = [
+ {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"},
+ {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"},
+]
+
+[package.dependencies]
+soupsieve = ">1.2"
+
+[package.extras]
+cchardet = ["cchardet"]
+chardet = ["chardet"]
+charset-normalizer = ["charset-normalizer"]
+html5lib = ["html5lib"]
+lxml = ["lxml"]
+
+[[package]]
+name = "browserbase"
+version = "0.3.0"
+description = "Browserbase Python SDK"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "browserbase-0.3.0-py3-none-any.whl", hash = "sha256:16fe6f0b1fc55aca050bbabf76cd17d83ee1a798d9bba274b09421ca120b5ec3"},
+ {file = "browserbase-0.3.0.tar.gz", hash = "sha256:2ec31641fab0a9ec3b2f23ed0244f01e3b35423806c1c6665d68706133958b07"},
+]
+
+[package.dependencies]
+httpx = ">=0.27.0"
+playwright = ">=1.43.0"
+pydantic = ">=2.7.1"
+
+[[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.3.2"
+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.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
+ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
+]
+
+[[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 = "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 = "dataclasses-json"
+version = "0.6.7"
+description = "Easily serialize dataclasses to and from JSON."
+optional = false
+python-versions = "<4.0,>=3.7"
+files = [
+ {file = "dataclasses_json-0.6.7-py3-none-any.whl", hash = "sha256:0dbf33f26c8d5305befd61b39d2b3414e8a407bedc2834dea9b8d642666fb40a"},
+ {file = "dataclasses_json-0.6.7.tar.gz", hash = "sha256:b6b3e528266ea45b9535223bc53ca645f5208833c29229e847b3f26a1cc55fc0"},
+]
+
+[package.dependencies]
+marshmallow = ">=3.18.0,<4.0.0"
+typing-inspect = ">=0.4.0,<1"
+
+[[package]]
+name = "distro"
+version = "1.9.0"
+description = "Distro - an OS platform information API"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"},
+ {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"},
+]
+
+[[package]]
+name = "duckduckgo-search"
+version = "6.2.13"
+description = "Search for words, documents, images, news, maps and text translation using the DuckDuckGo.com search engine."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "duckduckgo_search-6.2.13-py3-none-any.whl", hash = "sha256:a6618fb2744fa1d081b1bf2e47ef8051de993276a15c20f4e879a150726472de"},
+ {file = "duckduckgo_search-6.2.13.tar.gz", hash = "sha256:f89a9782f0f47d18c01a761c83453d0aef7a4335d1b6466fc47709652d5ca791"},
+]
+
+[package.dependencies]
+click = ">=8.1.7"
+primp = ">=0.6.3"
+
+[package.extras]
+dev = ["mypy (>=1.11.1)", "pytest (>=8.3.1)", "pytest-asyncio (>=0.23.8)", "ruff (>=0.6.1)"]
+lxml = ["lxml (>=5.2.2)"]
+
+[[package]]
+name = "fastapi"
+version = "0.115.0"
+description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "fastapi-0.115.0-py3-none-any.whl", hash = "sha256:17ea427674467486e997206a5ab25760f6b09e069f099b96f5b55a32fb6f1631"},
+ {file = "fastapi-0.115.0.tar.gz", hash = "sha256:f93b4ca3529a8ebc6fc3fcf710e5efa8de3df9b41570958abf1d97d843138004"},
+]
+
+[package.dependencies]
+pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0"
+starlette = ">=0.37.2,<0.39.0"
+typing-extensions = ">=4.8.0"
+
+[package.extras]
+all = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
+standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "jinja2 (>=2.11.2)", "python-multipart (>=0.0.7)", "uvicorn[standard] (>=0.12.0)"]
+
+[[package]]
+name = "fire"
+version = "0.6.0"
+description = "A library for automatically generating command line interfaces."
+optional = false
+python-versions = "*"
+files = [
+ {file = "fire-0.6.0.tar.gz", hash = "sha256:54ec5b996ecdd3c0309c800324a0703d6da512241bc73b553db959d98de0aa66"},
+]
+
+[package.dependencies]
+six = "*"
+termcolor = "*"
+
+[[package]]
+name = "frozenlist"
+version = "1.4.1"
+description = "A list-like structure which implements collections.abc.MutableSequence"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"},
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"},
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"},
+ {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"},
+ {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"},
+ {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"},
+ {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"},
+ {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"},
+ {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"},
+ {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"},
+ {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"},
+ {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"},
+ {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"},
+ {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"},
+ {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"},
+]
+
+[[package]]
+name = "geojson"
+version = "2.5.0"
+description = "Python bindings and utilities for GeoJSON"
+optional = false
+python-versions = "*"
+files = [
+ {file = "geojson-2.5.0-py2.py3-none-any.whl", hash = "sha256:ccbd13368dd728f4e4f13ffe6aaf725b6e802c692ba0dde628be475040c534ba"},
+ {file = "geojson-2.5.0.tar.gz", hash = "sha256:6e4bb7ace4226a45d9c8c8b1348b3fc43540658359f93c3f7e03efa9f15f658a"},
+]
+
+[[package]]
+name = "greenlet"
+version = "3.0.3"
+description = "Lightweight in-process concurrent programming"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"},
+ {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"},
+ {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"},
+ {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"},
+ {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"},
+ {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"},
+ {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"},
+ {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"},
+ {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"},
+ {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"},
+ {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"},
+ {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"},
+ {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"},
+ {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"},
+ {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"},
+ {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"},
+ {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"},
+ {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"},
+ {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"},
+ {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"},
+ {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"},
+ {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"},
+ {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"},
+ {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"},
+ {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"},
+ {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"},
+ {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"},
+ {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"},
+]
+
+[package.extras]
+docs = ["Sphinx", "furo"]
+test = ["objgraph", "psutil"]
+
+[[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.5"
+description = "A minimal low-level HTTP client."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"},
+ {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"},
+]
+
+[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,<0.26.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 = "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 = "immutabledict"
+version = "4.2.0"
+description = "Immutable wrapper around dictionaries (a fork of frozendict)"
+optional = false
+python-versions = ">=3.8,<4.0"
+files = [
+ {file = "immutabledict-4.2.0-py3-none-any.whl", hash = "sha256:d728b2c2410d698d95e6200237feb50a695584d20289ad3379a439aa3d90baba"},
+ {file = "immutabledict-4.2.0.tar.gz", hash = "sha256:e003fd81aad2377a5a758bf7e1086cf3b70b63e9a5cc2f46bce8d0a2b4727c5f"},
+]
+
+[[package]]
+name = "importlab"
+version = "0.8.1"
+description = "A library to calculate python dependency graphs."
+optional = false
+python-versions = ">=3.6.0"
+files = [
+ {file = "importlab-0.8.1-py2.py3-none-any.whl", hash = "sha256:124cfa00e8a34fefe8aac1a5e94f56c781b178c9eb61a1d3f60f7e03b77338d3"},
+ {file = "importlab-0.8.1.tar.gz", hash = "sha256:b3893853b1f6eb027da509c3b40e6787e95dd66b4b66f1b3613aad77556e1465"},
+]
+
+[package.dependencies]
+networkx = ">=2"
+
+[[package]]
+name = "iniconfig"
+version = "2.0.0"
+description = "brain-dead simple config-ini parsing"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
+ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
+]
+
+[[package]]
+name = "jinja2"
+version = "3.1.4"
+description = "A very fast and expressive template engine."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"},
+ {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"},
+]
+
+[package.dependencies]
+MarkupSafe = ">=2.0"
+
+[package.extras]
+i18n = ["Babel (>=2.7)"]
+
+[[package]]
+name = "jiter"
+version = "0.5.0"
+description = "Fast iterable JSON parser."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jiter-0.5.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b599f4e89b3def9a94091e6ee52e1d7ad7bc33e238ebb9c4c63f211d74822c3f"},
+ {file = "jiter-0.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a063f71c4b06225543dddadbe09d203dc0c95ba352d8b85f1221173480a71d5"},
+ {file = "jiter-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:acc0d5b8b3dd12e91dd184b87273f864b363dfabc90ef29a1092d269f18c7e28"},
+ {file = "jiter-0.5.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c22541f0b672f4d741382a97c65609332a783501551445ab2df137ada01e019e"},
+ {file = "jiter-0.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:63314832e302cc10d8dfbda0333a384bf4bcfce80d65fe99b0f3c0da8945a91a"},
+ {file = "jiter-0.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a25fbd8a5a58061e433d6fae6d5298777c0814a8bcefa1e5ecfff20c594bd749"},
+ {file = "jiter-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:503b2c27d87dfff5ab717a8200fbbcf4714516c9d85558048b1fc14d2de7d8dc"},
+ {file = "jiter-0.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6d1f3d27cce923713933a844872d213d244e09b53ec99b7a7fdf73d543529d6d"},
+ {file = "jiter-0.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c95980207b3998f2c3b3098f357994d3fd7661121f30669ca7cb945f09510a87"},
+ {file = "jiter-0.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:afa66939d834b0ce063f57d9895e8036ffc41c4bd90e4a99631e5f261d9b518e"},
+ {file = "jiter-0.5.0-cp310-none-win32.whl", hash = "sha256:f16ca8f10e62f25fd81d5310e852df6649af17824146ca74647a018424ddeccf"},
+ {file = "jiter-0.5.0-cp310-none-win_amd64.whl", hash = "sha256:b2950e4798e82dd9176935ef6a55cf6a448b5c71515a556da3f6b811a7844f1e"},
+ {file = "jiter-0.5.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d4c8e1ed0ef31ad29cae5ea16b9e41529eb50a7fba70600008e9f8de6376d553"},
+ {file = "jiter-0.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c6f16e21276074a12d8421692515b3fd6d2ea9c94fd0734c39a12960a20e85f3"},
+ {file = "jiter-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5280e68e7740c8c128d3ae5ab63335ce6d1fb6603d3b809637b11713487af9e6"},
+ {file = "jiter-0.5.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:583c57fc30cc1fec360e66323aadd7fc3edeec01289bfafc35d3b9dcb29495e4"},
+ {file = "jiter-0.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26351cc14507bdf466b5f99aba3df3143a59da75799bf64a53a3ad3155ecded9"},
+ {file = "jiter-0.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829df14d656b3fb87e50ae8b48253a8851c707da9f30d45aacab2aa2ba2d614"},
+ {file = "jiter-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a42a4bdcf7307b86cb863b2fb9bb55029b422d8f86276a50487982d99eed7c6e"},
+ {file = "jiter-0.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04d461ad0aebf696f8da13c99bc1b3e06f66ecf6cfd56254cc402f6385231c06"},
+ {file = "jiter-0.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e6375923c5f19888c9226582a124b77b622f8fd0018b843c45eeb19d9701c403"},
+ {file = "jiter-0.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2cec323a853c24fd0472517113768c92ae0be8f8c384ef4441d3632da8baa646"},
+ {file = "jiter-0.5.0-cp311-none-win32.whl", hash = "sha256:aa1db0967130b5cab63dfe4d6ff547c88b2a394c3410db64744d491df7f069bb"},
+ {file = "jiter-0.5.0-cp311-none-win_amd64.whl", hash = "sha256:aa9d2b85b2ed7dc7697597dcfaac66e63c1b3028652f751c81c65a9f220899ae"},
+ {file = "jiter-0.5.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9f664e7351604f91dcdd557603c57fc0d551bc65cc0a732fdacbf73ad335049a"},
+ {file = "jiter-0.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:044f2f1148b5248ad2c8c3afb43430dccf676c5a5834d2f5089a4e6c5bbd64df"},
+ {file = "jiter-0.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:702e3520384c88b6e270c55c772d4bd6d7b150608dcc94dea87ceba1b6391248"},
+ {file = "jiter-0.5.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:528d742dcde73fad9d63e8242c036ab4a84389a56e04efd854062b660f559544"},
+ {file = "jiter-0.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8cf80e5fe6ab582c82f0c3331df27a7e1565e2dcf06265afd5173d809cdbf9ba"},
+ {file = "jiter-0.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:44dfc9ddfb9b51a5626568ef4e55ada462b7328996294fe4d36de02fce42721f"},
+ {file = "jiter-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c451f7922992751a936b96c5f5b9bb9312243d9b754c34b33d0cb72c84669f4e"},
+ {file = "jiter-0.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:308fce789a2f093dca1ff91ac391f11a9f99c35369117ad5a5c6c4903e1b3e3a"},
+ {file = "jiter-0.5.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7f5ad4a7c6b0d90776fdefa294f662e8a86871e601309643de30bf94bb93a64e"},
+ {file = "jiter-0.5.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ea189db75f8eca08807d02ae27929e890c7d47599ce3d0a6a5d41f2419ecf338"},
+ {file = "jiter-0.5.0-cp312-none-win32.whl", hash = "sha256:e3bbe3910c724b877846186c25fe3c802e105a2c1fc2b57d6688b9f8772026e4"},
+ {file = "jiter-0.5.0-cp312-none-win_amd64.whl", hash = "sha256:a586832f70c3f1481732919215f36d41c59ca080fa27a65cf23d9490e75b2ef5"},
+ {file = "jiter-0.5.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f04bc2fc50dc77be9d10f73fcc4e39346402ffe21726ff41028f36e179b587e6"},
+ {file = "jiter-0.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6f433a4169ad22fcb550b11179bb2b4fd405de9b982601914ef448390b2954f3"},
+ {file = "jiter-0.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad4a6398c85d3a20067e6c69890ca01f68659da94d74c800298581724e426c7e"},
+ {file = "jiter-0.5.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6baa88334e7af3f4d7a5c66c3a63808e5efbc3698a1c57626541ddd22f8e4fbf"},
+ {file = "jiter-0.5.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ece0a115c05efca597c6d938f88c9357c843f8c245dbbb53361a1c01afd7148"},
+ {file = "jiter-0.5.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:335942557162ad372cc367ffaf93217117401bf930483b4b3ebdb1223dbddfa7"},
+ {file = "jiter-0.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:649b0ee97a6e6da174bffcb3c8c051a5935d7d4f2f52ea1583b5b3e7822fbf14"},
+ {file = "jiter-0.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f4be354c5de82157886ca7f5925dbda369b77344b4b4adf2723079715f823989"},
+ {file = "jiter-0.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5206144578831a6de278a38896864ded4ed96af66e1e63ec5dd7f4a1fce38a3a"},
+ {file = "jiter-0.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8120c60f8121ac3d6f072b97ef0e71770cc72b3c23084c72c4189428b1b1d3b6"},
+ {file = "jiter-0.5.0-cp38-none-win32.whl", hash = "sha256:6f1223f88b6d76b519cb033a4d3687ca157c272ec5d6015c322fc5b3074d8a5e"},
+ {file = "jiter-0.5.0-cp38-none-win_amd64.whl", hash = "sha256:c59614b225d9f434ea8fc0d0bec51ef5fa8c83679afedc0433905994fb36d631"},
+ {file = "jiter-0.5.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:0af3838cfb7e6afee3f00dc66fa24695199e20ba87df26e942820345b0afc566"},
+ {file = "jiter-0.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:550b11d669600dbc342364fd4adbe987f14d0bbedaf06feb1b983383dcc4b961"},
+ {file = "jiter-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:489875bf1a0ffb3cb38a727b01e6673f0f2e395b2aad3c9387f94187cb214bbf"},
+ {file = "jiter-0.5.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b250ca2594f5599ca82ba7e68785a669b352156260c5362ea1b4e04a0f3e2389"},
+ {file = "jiter-0.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ea18e01f785c6667ca15407cd6dabbe029d77474d53595a189bdc813347218e"},
+ {file = "jiter-0.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462a52be85b53cd9bffd94e2d788a09984274fe6cebb893d6287e1c296d50653"},
+ {file = "jiter-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92cc68b48d50fa472c79c93965e19bd48f40f207cb557a8346daa020d6ba973b"},
+ {file = "jiter-0.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1c834133e59a8521bc87ebcad773608c6fa6ab5c7a022df24a45030826cf10bc"},
+ {file = "jiter-0.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab3a71ff31cf2d45cb216dc37af522d335211f3a972d2fe14ea99073de6cb104"},
+ {file = "jiter-0.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cccd3af9c48ac500c95e1bcbc498020c87e1781ff0345dd371462d67b76643eb"},
+ {file = "jiter-0.5.0-cp39-none-win32.whl", hash = "sha256:368084d8d5c4fc40ff7c3cc513c4f73e02c85f6009217922d0823a48ee7adf61"},
+ {file = "jiter-0.5.0-cp39-none-win_amd64.whl", hash = "sha256:ce03f7b4129eb72f1687fa11300fbf677b02990618428934662406d2a76742a1"},
+ {file = "jiter-0.5.0.tar.gz", hash = "sha256:1d916ba875bcab5c5f7d927df998c4cb694d27dceddf3392e58beaf10563368a"},
+]
+
+[[package]]
+name = "jsonpatch"
+version = "1.33"
+description = "Apply JSON-Patches (RFC 6902)"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*"
+files = [
+ {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"},
+ {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"},
+]
+
+[package.dependencies]
+jsonpointer = ">=1.9"
+
+[[package]]
+name = "jsonpointer"
+version = "3.0.0"
+description = "Identify specific nodes in a JSON document (RFC 6901)"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"},
+ {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"},
+]
+
+[[package]]
+name = "langchain"
+version = "0.3.1"
+description = "Building applications with LLMs through composability"
+optional = false
+python-versions = "<4.0,>=3.9"
+files = [
+ {file = "langchain-0.3.1-py3-none-any.whl", hash = "sha256:94e5ee7464d4366e4b158aa5704953c39701ea237b9ed4b200096d49e83bb3ae"},
+ {file = "langchain-0.3.1.tar.gz", hash = "sha256:54d6e3abda2ec056875a231a418a4130ba7576e629e899067e499bfc847b7586"},
+]
+
+[package.dependencies]
+aiohttp = ">=3.8.3,<4.0.0"
+langchain-core = ">=0.3.6,<0.4.0"
+langchain-text-splitters = ">=0.3.0,<0.4.0"
+langsmith = ">=0.1.17,<0.2.0"
+numpy = {version = ">=1.26.0,<2.0.0", markers = "python_version >= \"3.12\""}
+pydantic = ">=2.7.4,<3.0.0"
+PyYAML = ">=5.3"
+requests = ">=2,<3"
+SQLAlchemy = ">=1.4,<3"
+tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<9.0.0"
+
+[[package]]
+name = "langchain-community"
+version = "0.3.1"
+description = "Community contributed LangChain integrations."
+optional = false
+python-versions = "<4.0,>=3.9"
+files = [
+ {file = "langchain_community-0.3.1-py3-none-any.whl", hash = "sha256:627eb26c16417764762ac47dd0d3005109f750f40242a88bb8f2958b798bcf90"},
+ {file = "langchain_community-0.3.1.tar.gz", hash = "sha256:c964a70628f266a61647e58f2f0434db633d4287a729f100a81dd8b0654aec93"},
+]
+
+[package.dependencies]
+aiohttp = ">=3.8.3,<4.0.0"
+dataclasses-json = ">=0.5.7,<0.7"
+langchain = ">=0.3.1,<0.4.0"
+langchain-core = ">=0.3.6,<0.4.0"
+langsmith = ">=0.1.125,<0.2.0"
+numpy = {version = ">=1.26.0,<2.0.0", markers = "python_version >= \"3.12\""}
+pydantic-settings = ">=2.4.0,<3.0.0"
+PyYAML = ">=5.3"
+requests = ">=2,<3"
+SQLAlchemy = ">=1.4,<3"
+tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<9.0.0"
+
+[[package]]
+name = "langchain-core"
+version = "0.3.6"
+description = "Building applications with LLMs through composability"
+optional = false
+python-versions = "<4.0,>=3.9"
+files = [
+ {file = "langchain_core-0.3.6-py3-none-any.whl", hash = "sha256:7bb3df0117bdc628b18b6c8748de72c6f537d745d47566053ce6650d5712281c"},
+ {file = "langchain_core-0.3.6.tar.gz", hash = "sha256:eb190494a5483f1965f693bb2085edb523370b20fc52dc294d3bd425773cd076"},
+]
+
+[package.dependencies]
+jsonpatch = ">=1.33,<2.0"
+langsmith = ">=0.1.125,<0.2.0"
+packaging = ">=23.2,<25"
+pydantic = [
+ {version = ">=2.5.2,<3.0.0", markers = "python_full_version < \"3.12.4\""},
+ {version = ">=2.7.4,<3.0.0", markers = "python_full_version >= \"3.12.4\""},
+]
+PyYAML = ">=5.3"
+tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<9.0.0"
+typing-extensions = ">=4.7"
+
+[[package]]
+name = "langchain-text-splitters"
+version = "0.3.0"
+description = "LangChain text splitting utilities"
+optional = false
+python-versions = "<4.0,>=3.9"
+files = [
+ {file = "langchain_text_splitters-0.3.0-py3-none-any.whl", hash = "sha256:e84243e45eaff16e5b776cd9c81b6d07c55c010ebcb1965deb3d1792b7358e83"},
+ {file = "langchain_text_splitters-0.3.0.tar.gz", hash = "sha256:f9fe0b4d244db1d6de211e7343d4abc4aa90295aa22e1f0c89e51f33c55cd7ce"},
+]
+
+[package.dependencies]
+langchain-core = ">=0.3.0,<0.4.0"
+
+[[package]]
+name = "langsmith"
+version = "0.1.129"
+description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform."
+optional = false
+python-versions = "<4.0,>=3.8.1"
+files = [
+ {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"},
+ {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"},
+]
+
+[package.dependencies]
+httpx = ">=0.23.0,<1"
+orjson = ">=3.9.14,<4.0.0"
+pydantic = [
+ {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""},
+ {version = ">=2.7.4,<3.0.0", markers = "python_full_version >= \"3.12.4\""},
+]
+requests = ">=2,<3"
+
+[[package]]
+name = "libcst"
+version = "1.4.0"
+description = "A concrete syntax tree with AST-like properties for Python 3.0 through 3.12 programs."
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "libcst-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:279b54568ea1f25add50ea4ba3d76d4f5835500c82f24d54daae4c5095b986aa"},
+ {file = "libcst-1.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3401dae41fe24565387a65baee3887e31a44e3e58066b0250bc3f3ccf85b1b5a"},
+ {file = "libcst-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1989fa12d3cd79118ebd29ebe2a6976d23d509b1a4226bc3d66fcb7cb50bd5d"},
+ {file = "libcst-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:addc6d585141a7677591868886f6bda0577529401a59d210aa8112114340e129"},
+ {file = "libcst-1.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:17d71001cb25e94cfe8c3d997095741a8c4aa7a6d234c0f972bc42818c88dfaf"},
+ {file = "libcst-1.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:2d47de16d105e7dd5f4e01a428d9f4dc1e71efd74f79766daf54528ce37f23c3"},
+ {file = "libcst-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e6227562fc5c9c1efd15dfe90b0971ae254461b8b6b23c1b617139b6003de1c1"},
+ {file = "libcst-1.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3399e6c95df89921511b44d8c5bf6a75bcbc2d51f1f6429763609ba005c10f6b"},
+ {file = "libcst-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48601e3e590e2d6a7ab8c019cf3937c70511a78d778ab3333764531253acdb33"},
+ {file = "libcst-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f42797309bb725f0f000510d5463175ccd7155395f09b5e7723971b0007a976d"},
+ {file = "libcst-1.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb4e42ea107a37bff7f9fdbee9532d39f9ea77b89caa5c5112b37057b12e0838"},
+ {file = "libcst-1.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:9d0cc3c5a2a51fa7e1d579a828c0a2e46b2170024fd8b1a0691c8a52f3abb2d9"},
+ {file = "libcst-1.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7ece51d935bc9bf60b528473d2e5cc67cbb88e2f8146297e40ee2c7d80be6f13"},
+ {file = "libcst-1.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:81653dea1cdfa4c6520a7c5ffb95fa4d220cbd242e446c7a06d42d8636bfcbba"},
+ {file = "libcst-1.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6abce0e66bba2babfadc20530fd3688f672d565674336595b4623cd800b91ef"},
+ {file = "libcst-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5da9d7dc83801aba3b8d911f82dc1a375db0d508318bad79d9fb245374afe068"},
+ {file = "libcst-1.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c54aa66c86d8ece9c93156a2cf5ca512b0dce40142fe9e072c86af2bf892411"},
+ {file = "libcst-1.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:62e2682ee1567b6a89c91853865372bf34f178bfd237853d84df2b87b446e654"},
+ {file = "libcst-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b8ecdba8934632b4dadacb666cd3816627a6ead831b806336972ccc4ba7ca0e9"},
+ {file = "libcst-1.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8e54c777b8d27339b70f304d16fc8bc8674ef1bd34ed05ea874bf4921eb5a313"},
+ {file = "libcst-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:061d6855ef30efe38b8a292b7e5d57c8e820e71fc9ec9846678b60a934b53bbb"},
+ {file = "libcst-1.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb0abf627ee14903d05d0ad9b2c6865f1b21eb4081e2c7bea1033f85db2b8bae"},
+ {file = "libcst-1.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d024f44059a853b4b852cfc04fec33e346659d851371e46fc8e7c19de24d3da9"},
+ {file = "libcst-1.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:3c6a8faab9da48c5b371557d0999b4ca51f4f2cbd37ee8c2c4df0ac01c781465"},
+ {file = "libcst-1.4.0.tar.gz", hash = "sha256:449e0b16604f054fa7f27c3ffe86ea7ef6c409836fe68fe4e752a1894175db00"},
+]
+
+[package.dependencies]
+pyyaml = ">=5.2"
+
+[package.extras]
+dev = ["Sphinx (>=5.1.1)", "black (==23.12.1)", "build (>=0.10.0)", "coverage (>=4.5.4)", "fixit (==2.1.0)", "flake8 (==7.0.0)", "hypothesis (>=4.36.0)", "hypothesmith (>=0.0.4)", "jinja2 (==3.1.4)", "jupyter (>=1.0.0)", "maturin (>=0.8.3,<1.6)", "nbsphinx (>=0.4.2)", "prompt-toolkit (>=2.0.9)", "pyre-check (==0.9.18)", "setuptools-rust (>=1.5.2)", "setuptools-scm (>=6.0.1)", "slotscheck (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "ufmt (==2.6.0)", "usort (==1.0.8.post1)"]
+
+[[package]]
+name = "markupsafe"
+version = "2.1.5"
+description = "Safely add untrusted strings to HTML/XML markup."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"},
+ {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"},
+]
+
+[[package]]
+name = "marshmallow"
+version = "3.22.0"
+description = "A lightweight library for converting complex datatypes to and from native Python datatypes."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "marshmallow-3.22.0-py3-none-any.whl", hash = "sha256:71a2dce49ef901c3f97ed296ae5051135fd3febd2bf43afe0ae9a82143a494d9"},
+ {file = "marshmallow-3.22.0.tar.gz", hash = "sha256:4972f529104a220bb8637d595aa4c9762afbe7f7a77d82dc58c1615d70c5823e"},
+]
+
+[package.dependencies]
+packaging = ">=17.0"
+
+[package.extras]
+dev = ["marshmallow[tests]", "pre-commit (>=3.5,<4.0)", "tox"]
+docs = ["alabaster (==1.0.0)", "autodocsumm (==0.2.13)", "sphinx (==8.0.2)", "sphinx-issues (==4.1.0)", "sphinx-version-warning (==1.1.2)"]
+tests = ["pytest", "pytz", "simplejson"]
+
+[[package]]
+name = "msgspec"
+version = "0.18.6"
+description = "A fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "msgspec-0.18.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:77f30b0234eceeff0f651119b9821ce80949b4d667ad38f3bfed0d0ebf9d6d8f"},
+ {file = "msgspec-0.18.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a76b60e501b3932782a9da039bd1cd552b7d8dec54ce38332b87136c64852dd"},
+ {file = "msgspec-0.18.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06acbd6edf175bee0e36295d6b0302c6de3aaf61246b46f9549ca0041a9d7177"},
+ {file = "msgspec-0.18.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40a4df891676d9c28a67c2cc39947c33de516335680d1316a89e8f7218660410"},
+ {file = "msgspec-0.18.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a6896f4cd5b4b7d688018805520769a8446df911eb93b421c6c68155cdf9dd5a"},
+ {file = "msgspec-0.18.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3ac4dd63fd5309dd42a8c8c36c1563531069152be7819518be0a9d03be9788e4"},
+ {file = "msgspec-0.18.6-cp310-cp310-win_amd64.whl", hash = "sha256:fda4c357145cf0b760000c4ad597e19b53adf01382b711f281720a10a0fe72b7"},
+ {file = "msgspec-0.18.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e77e56ffe2701e83a96e35770c6adb655ffc074d530018d1b584a8e635b4f36f"},
+ {file = "msgspec-0.18.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5351afb216b743df4b6b147691523697ff3a2fc5f3d54f771e91219f5c23aaa"},
+ {file = "msgspec-0.18.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3232fabacef86fe8323cecbe99abbc5c02f7698e3f5f2e248e3480b66a3596b"},
+ {file = "msgspec-0.18.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3b524df6ea9998bbc99ea6ee4d0276a101bcc1aa8d14887bb823914d9f60d07"},
+ {file = "msgspec-0.18.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:37f67c1d81272131895bb20d388dd8d341390acd0e192a55ab02d4d6468b434c"},
+ {file = "msgspec-0.18.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d0feb7a03d971c1c0353de1a8fe30bb6579c2dc5ccf29b5f7c7ab01172010492"},
+ {file = "msgspec-0.18.6-cp311-cp311-win_amd64.whl", hash = "sha256:41cf758d3f40428c235c0f27bc6f322d43063bc32da7b9643e3f805c21ed57b4"},
+ {file = "msgspec-0.18.6-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d86f5071fe33e19500920333c11e2267a31942d18fed4d9de5bc2fbab267d28c"},
+ {file = "msgspec-0.18.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce13981bfa06f5eb126a3a5a38b1976bddb49a36e4f46d8e6edecf33ccf11df1"},
+ {file = "msgspec-0.18.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e97dec6932ad5e3ee1e3c14718638ba333befc45e0661caa57033cd4cc489466"},
+ {file = "msgspec-0.18.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad237100393f637b297926cae1868b0d500f764ccd2f0623a380e2bcfb2809ca"},
+ {file = "msgspec-0.18.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db1d8626748fa5d29bbd15da58b2d73af25b10aa98abf85aab8028119188ed57"},
+ {file = "msgspec-0.18.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:d70cb3d00d9f4de14d0b31d38dfe60c88ae16f3182988246a9861259c6722af6"},
+ {file = "msgspec-0.18.6-cp312-cp312-win_amd64.whl", hash = "sha256:1003c20bfe9c6114cc16ea5db9c5466e49fae3d7f5e2e59cb70693190ad34da0"},
+ {file = "msgspec-0.18.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f7d9faed6dfff654a9ca7d9b0068456517f63dbc3aa704a527f493b9200b210a"},
+ {file = "msgspec-0.18.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9da21f804c1a1471f26d32b5d9bc0480450ea77fbb8d9db431463ab64aaac2cf"},
+ {file = "msgspec-0.18.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46eb2f6b22b0e61c137e65795b97dc515860bf6ec761d8fb65fdb62aa094ba61"},
+ {file = "msgspec-0.18.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8355b55c80ac3e04885d72db515817d9fbb0def3bab936bba104e99ad22cf46"},
+ {file = "msgspec-0.18.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9080eb12b8f59e177bd1eb5c21e24dd2ba2fa88a1dbc9a98e05ad7779b54c681"},
+ {file = "msgspec-0.18.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cc001cf39becf8d2dcd3f413a4797c55009b3a3cdbf78a8bf5a7ca8fdb76032c"},
+ {file = "msgspec-0.18.6-cp38-cp38-win_amd64.whl", hash = "sha256:fac5834e14ac4da1fca373753e0c4ec9c8069d1fe5f534fa5208453b6065d5be"},
+ {file = "msgspec-0.18.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:974d3520fcc6b824a6dedbdf2b411df31a73e6e7414301abac62e6b8d03791b4"},
+ {file = "msgspec-0.18.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fd62e5818731a66aaa8e9b0a1e5543dc979a46278da01e85c3c9a1a4f047ef7e"},
+ {file = "msgspec-0.18.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7481355a1adcf1f08dedd9311193c674ffb8bf7b79314b4314752b89a2cf7f1c"},
+ {file = "msgspec-0.18.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6aa85198f8f154cf35d6f979998f6dadd3dc46a8a8c714632f53f5d65b315c07"},
+ {file = "msgspec-0.18.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e24539b25c85c8f0597274f11061c102ad6b0c56af053373ba4629772b407be"},
+ {file = "msgspec-0.18.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c61ee4d3be03ea9cd089f7c8e36158786cd06e51fbb62529276452bbf2d52ece"},
+ {file = "msgspec-0.18.6-cp39-cp39-win_amd64.whl", hash = "sha256:b5c390b0b0b7da879520d4ae26044d74aeee5144f83087eb7842ba59c02bc090"},
+ {file = "msgspec-0.18.6.tar.gz", hash = "sha256:a59fc3b4fcdb972d09138cb516dbde600c99d07c38fd9372a6ef500d2d031b4e"},
+]
+
+[package.extras]
+dev = ["attrs", "coverage", "furo", "gcovr", "ipython", "msgpack", "mypy", "pre-commit", "pyright", "pytest", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "tomli", "tomli-w"]
+doc = ["furo", "ipython", "sphinx", "sphinx-copybutton", "sphinx-design"]
+test = ["attrs", "msgpack", "mypy", "pyright", "pytest", "pyyaml", "tomli", "tomli-w"]
+toml = ["tomli", "tomli-w"]
+yaml = ["pyyaml"]
+
+[[package]]
+name = "multidict"
+version = "6.1.0"
+description = "multidict implementation"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"},
+ {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"},
+ {file = "multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53"},
+ {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5"},
+ {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581"},
+ {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56"},
+ {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429"},
+ {file = "multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748"},
+ {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"},
+ {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056"},
+ {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76"},
+ {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160"},
+ {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7"},
+ {file = "multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0"},
+ {file = "multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d"},
+ {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"},
+ {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"},
+ {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"},
+ {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"},
+ {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"},
+ {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"},
+ {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"},
+ {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"},
+ {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"},
+ {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"},
+ {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"},
+ {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"},
+ {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"},
+ {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"},
+ {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"},
+ {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa"},
+ {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436"},
+ {file = "multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761"},
+ {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e"},
+ {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef"},
+ {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95"},
+ {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925"},
+ {file = "multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966"},
+ {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305"},
+ {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2"},
+ {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2"},
+ {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6"},
+ {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3"},
+ {file = "multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133"},
+ {file = "multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1"},
+ {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008"},
+ {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f"},
+ {file = "multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28"},
+ {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b"},
+ {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c"},
+ {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3"},
+ {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44"},
+ {file = "multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2"},
+ {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3"},
+ {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa"},
+ {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa"},
+ {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4"},
+ {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6"},
+ {file = "multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81"},
+ {file = "multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774"},
+ {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392"},
+ {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a"},
+ {file = "multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2"},
+ {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc"},
+ {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478"},
+ {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4"},
+ {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d"},
+ {file = "multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6"},
+ {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2"},
+ {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd"},
+ {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6"},
+ {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492"},
+ {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd"},
+ {file = "multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167"},
+ {file = "multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef"},
+ {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c"},
+ {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1"},
+ {file = "multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c"},
+ {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c"},
+ {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f"},
+ {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875"},
+ {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255"},
+ {file = "multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30"},
+ {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057"},
+ {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657"},
+ {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28"},
+ {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972"},
+ {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43"},
+ {file = "multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada"},
+ {file = "multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a"},
+ {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"},
+ {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"},
+]
+
+[[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 = "networkx"
+version = "3.1"
+description = "Python package for creating and manipulating graphs and networks"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "networkx-3.1-py3-none-any.whl", hash = "sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36"},
+ {file = "networkx-3.1.tar.gz", hash = "sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61"},
+]
+
+[package.extras]
+default = ["matplotlib (>=3.4)", "numpy (>=1.20)", "pandas (>=1.3)", "scipy (>=1.8)"]
+developer = ["mypy (>=1.1)", "pre-commit (>=3.2)"]
+doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.13)", "sphinx (>=6.1)", "sphinx-gallery (>=0.12)", "texext (>=0.6.7)"]
+extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.10)", "sympy (>=1.10)"]
+test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"]
+
+[[package]]
+name = "ninja"
+version = "1.11.1.1"
+description = "Ninja is a small build system with a focus on speed"
+optional = false
+python-versions = "*"
+files = [
+ {file = "ninja-1.11.1.1-py2.py3-none-macosx_10_9_universal2.macosx_10_9_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl", hash = "sha256:376889c76d87b95b5719fdd61dd7db193aa7fd4432e5d52d2e44e4c497bdbbee"},
+ {file = "ninja-1.11.1.1-py2.py3-none-manylinux1_i686.manylinux_2_5_i686.whl", hash = "sha256:ecf80cf5afd09f14dcceff28cb3f11dc90fb97c999c89307aea435889cb66877"},
+ {file = "ninja-1.11.1.1-py2.py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:84502ec98f02a037a169c4b0d5d86075eaf6afc55e1879003d6cab51ced2ea4b"},
+ {file = "ninja-1.11.1.1-py2.py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:73b93c14046447c7c5cc892433d4fae65d6364bec6685411cb97a8bcf815f93a"},
+ {file = "ninja-1.11.1.1-py2.py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:18302d96a5467ea98b68e1cae1ae4b4fb2b2a56a82b955193c637557c7273dbd"},
+ {file = "ninja-1.11.1.1-py2.py3-none-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:aad34a70ef15b12519946c5633344bc775a7656d789d9ed5fdb0d456383716ef"},
+ {file = "ninja-1.11.1.1-py2.py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:d491fc8d89cdcb416107c349ad1e3a735d4c4af5e1cb8f5f727baca6350fdaea"},
+ {file = "ninja-1.11.1.1-py2.py3-none-musllinux_1_1_i686.whl", hash = "sha256:7563ce1d9fe6ed5af0b8dd9ab4a214bf4ff1f2f6fd6dc29f480981f0f8b8b249"},
+ {file = "ninja-1.11.1.1-py2.py3-none-musllinux_1_1_ppc64le.whl", hash = "sha256:9df724344202b83018abb45cb1efc22efd337a1496514e7e6b3b59655be85205"},
+ {file = "ninja-1.11.1.1-py2.py3-none-musllinux_1_1_s390x.whl", hash = "sha256:3e0f9be5bb20d74d58c66cc1c414c3e6aeb45c35b0d0e41e8d739c2c0d57784f"},
+ {file = "ninja-1.11.1.1-py2.py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:76482ba746a2618eecf89d5253c0d1e4f1da1270d41e9f54dfbd91831b0f6885"},
+ {file = "ninja-1.11.1.1-py2.py3-none-win32.whl", hash = "sha256:fa2ba9d74acfdfbfbcf06fad1b8282de8a7a8c481d9dee45c859a8c93fcc1082"},
+ {file = "ninja-1.11.1.1-py2.py3-none-win_amd64.whl", hash = "sha256:95da904130bfa02ea74ff9c0116b4ad266174fafb1c707aa50212bc7859aebf1"},
+ {file = "ninja-1.11.1.1-py2.py3-none-win_arm64.whl", hash = "sha256:185e0641bde601e53841525c4196278e9aaf4463758da6dd1e752c0a0f54136a"},
+ {file = "ninja-1.11.1.1.tar.gz", hash = "sha256:9d793b08dd857e38d0b6ffe9e6b7145d7c485a42dcfea04905ca0cdb6017cc3c"},
+]
+
+[package.extras]
+test = ["codecov (>=2.0.5)", "coverage (>=4.2)", "flake8 (>=3.0.4)", "pytest (>=4.5.0)", "pytest-cov (>=2.7.1)", "pytest-runner (>=5.1)", "pytest-virtualenv (>=1.7.0)", "virtualenv (>=15.0.3)"]
+
+[[package]]
+name = "numpy"
+version = "1.26.4"
+description = "Fundamental package for array computing in Python"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"},
+ {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"},
+ {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"},
+ {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"},
+ {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"},
+ {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"},
+ {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"},
+ {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"},
+ {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"},
+ {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"},
+ {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"},
+ {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"},
+ {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"},
+ {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"},
+ {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"},
+ {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"},
+ {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"},
+ {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"},
+ {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"},
+ {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"},
+ {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"},
+ {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"},
+ {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"},
+ {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"},
+ {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"},
+ {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"},
+ {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"},
+ {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"},
+ {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"},
+ {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"},
+ {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"},
+ {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"},
+ {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"},
+ {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"},
+ {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"},
+ {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"},
+]
+
+[[package]]
+name = "oauthlib"
+version = "3.2.2"
+description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca"},
+ {file = "oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918"},
+]
+
+[package.extras]
+rsa = ["cryptography (>=3.0.0)"]
+signals = ["blinker (>=1.4.0)"]
+signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"]
+
+[[package]]
+name = "openai"
+version = "1.50.2"
+description = "The official Python library for the openai API"
+optional = false
+python-versions = ">=3.7.1"
+files = [
+ {file = "openai-1.50.2-py3-none-any.whl", hash = "sha256:822dd2051baa3393d0d5406990611975dd6f533020dc9375a34d4fe67e8b75f7"},
+ {file = "openai-1.50.2.tar.gz", hash = "sha256:3987ae027152fc8bea745d60b02c8f4c4a76e1b5c70e73565fa556db6f78c9e6"},
+]
+
+[package.dependencies]
+anyio = ">=3.5.0,<5"
+distro = ">=1.7.0,<2"
+httpx = ">=0.23.0,<1"
+jiter = ">=0.4.0,<1"
+pydantic = ">=1.9.0,<3"
+sniffio = "*"
+tqdm = ">4"
+typing-extensions = ">=4.11,<5"
+
+[package.extras]
+datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"]
+
+[[package]]
+name = "orjson"
+version = "3.10.7"
+description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"},
+ {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"},
+ {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"},
+ {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"},
+ {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"},
+ {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"},
+ {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"},
+ {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"},
+ {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"},
+ {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"},
+ {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"},
+ {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"},
+ {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"},
+ {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"},
+ {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"},
+ {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"},
+ {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"},
+ {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"},
+ {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"},
+ {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"},
+ {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"},
+ {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"},
+ {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"},
+ {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"},
+ {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"},
+ {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"},
+ {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"},
+ {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"},
+ {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"},
+ {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"},
+ {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"},
+ {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"},
+ {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"},
+ {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"},
+ {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"},
+ {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"},
+ {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"},
+ {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"},
+ {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"},
+ {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"},
+ {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"},
+ {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"},
+ {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"},
+ {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"},
+ {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"},
+ {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"},
+ {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"},
+ {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"},
+ {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"},
+ {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"},
+ {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"},
+ {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"},
+ {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"},
+ {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"},
+ {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"},
+ {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"},
+ {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"},
+]
+
+[[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 = "playwright"
+version = "1.47.0"
+description = "A high-level API to automate web browsers"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "playwright-1.47.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:f205df24edb925db1a4ab62f1ab0da06f14bb69e382efecfb0deedc4c7f4b8cd"},
+ {file = "playwright-1.47.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7fc820faf6885f69a52ba4ec94124e575d3c4a4003bf29200029b4a4f2b2d0ab"},
+ {file = "playwright-1.47.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:8e212dc472ff19c7d46ed7e900191c7a786ce697556ac3f1615986ec3aa00341"},
+ {file = "playwright-1.47.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:a1935672531963e4b2a321de5aa59b982fb92463ee6e1032dd7326378e462955"},
+ {file = "playwright-1.47.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0a1b61473d6f7f39c5d77d4800b3cbefecb03344c90b98f3fbcae63294ad249"},
+ {file = "playwright-1.47.0-py3-none-win32.whl", hash = "sha256:1b977ed81f6bba5582617684a21adab9bad5676d90a357ebf892db7bdf4a9974"},
+ {file = "playwright-1.47.0-py3-none-win_amd64.whl", hash = "sha256:0ec1056042d2e86088795a503347407570bffa32cbe20748e5d4c93dba085280"},
+]
+
+[package.dependencies]
+greenlet = "3.0.3"
+pyee = "12.0.0"
+
+[[package]]
+name = "pluggy"
+version = "1.5.0"
+description = "plugin and hook calling mechanisms for python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"},
+ {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"},
+]
+
+[package.extras]
+dev = ["pre-commit", "tox"]
+testing = ["pytest", "pytest-benchmark"]
+
+[[package]]
+name = "primp"
+version = "0.6.3"
+description = "HTTP client that can impersonate web browsers, mimicking their headers and `TLS/JA3/JA4/HTTP2` fingerprints"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "primp-0.6.3-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bdbe6a7cdaaf5c9ed863432a941f4a75bd4c6ff626cbc8d32fc232793c70ba06"},
+ {file = "primp-0.6.3-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:eeb53eb987bdcbcd85740633470255cab887d921df713ffa12a36a13366c9cdb"},
+ {file = "primp-0.6.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78da53d3c92a8e3f05bd3286ac76c291f1b6fe5e08ea63b7ba92b0f9141800bb"},
+ {file = "primp-0.6.3-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:86337b44deecdac752bd8112909987fc9fa9b894f30191c80a164dc8f895da53"},
+ {file = "primp-0.6.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d3cd9a22b97f3eae42b2a5fb99f00480daf4cd6d9b139e05b0ffb03f7cc037f3"},
+ {file = "primp-0.6.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7732bec917e2d3c48a31cdb92e1250f4ad6203a1aa4f802bd9abd84f2286a1e0"},
+ {file = "primp-0.6.3-cp38-abi3-win_amd64.whl", hash = "sha256:1e4113c34b86c676ae321af185f03a372caef3ee009f1682c2d62e30ec87348c"},
+ {file = "primp-0.6.3.tar.gz", hash = "sha256:17d30ebe26864defad5232dbbe1372e80483940012356e1f68846bb182282039"},
+]
+
+[package.extras]
+dev = ["certifi", "pytest (>=8.1.1)"]
+
+[[package]]
+name = "py"
+version = "1.11.0"
+description = "library with cross-python path, ini-parsing, io, code, log facilities"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
+ {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
+]
+
+[[package]]
+name = "pycnite"
+version = "2024.7.31"
+description = "Python bytecode utilities"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pycnite-2024.7.31-py3-none-any.whl", hash = "sha256:9ff9c09d35056435b867e14ebf79626ca94b6017923a0bf9935377fa90d4cbb3"},
+ {file = "pycnite-2024.7.31.tar.gz", hash = "sha256:5125f1c95aef4a23b9bec3b32fae76873dcd46324fa68e39c10fa852ecdea340"},
+]
+
+[[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.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 = "pydantic-settings"
+version = "2.5.2"
+description = "Settings management using Pydantic"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pydantic_settings-2.5.2-py3-none-any.whl", hash = "sha256:2c912e55fd5794a59bf8c832b9de832dcfdf4778d79ff79b708744eed499a907"},
+ {file = "pydantic_settings-2.5.2.tar.gz", hash = "sha256:f90b139682bee4d2065273d5185d71d37ea46cfe57e1b5ae184fc6a0b2484ca0"},
+]
+
+[package.dependencies]
+pydantic = ">=2.7.0"
+python-dotenv = ">=0.21.0"
+
+[package.extras]
+azure-key-vault = ["azure-identity (>=1.16.0)", "azure-keyvault-secrets (>=4.8.0)"]
+toml = ["tomli (>=2.0.1)"]
+yaml = ["pyyaml (>=6.0.1)"]
+
+[[package]]
+name = "pydot"
+version = "3.0.2"
+description = "Python interface to Graphviz's Dot"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pydot-3.0.2-py3-none-any.whl", hash = "sha256:99cedaa55d04abb0b2bc56d9981a6da781053dd5ac75c428e8dd53db53f90b14"},
+ {file = "pydot-3.0.2.tar.gz", hash = "sha256:9180da540b51b3aa09fbf81140b3edfbe2315d778e8589a7d0a4a69c41332bae"},
+]
+
+[package.dependencies]
+pyparsing = ">=3.0.9"
+
+[package.extras]
+dev = ["chardet", "parameterized", "ruff"]
+release = ["zest.releaser[recommended]"]
+tests = ["chardet", "parameterized", "pytest", "pytest-cov", "pytest-xdist[psutil]", "ruff", "tox"]
+
+[[package]]
+name = "pyee"
+version = "12.0.0"
+description = "A rough port of Node.js's EventEmitter to Python with a few tricks of its own"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pyee-12.0.0-py3-none-any.whl", hash = "sha256:7b14b74320600049ccc7d0e0b1becd3b4bd0a03c745758225e31a59f4095c990"},
+ {file = "pyee-12.0.0.tar.gz", hash = "sha256:c480603f4aa2927d4766eb41fa82793fe60a82cbfdb8d688e0d08c55a534e145"},
+]
+
+[package.dependencies]
+typing-extensions = "*"
+
+[package.extras]
+dev = ["black", "build", "flake8", "flake8-black", "isort", "jupyter-console", "mkdocs", "mkdocs-include-markdown-plugin", "mkdocstrings[python]", "pytest", "pytest-asyncio", "pytest-trio", "sphinx", "toml", "tox", "trio", "trio", "trio-typing", "twine", "twisted", "validate-pyproject[all]"]
+
+[[package]]
+name = "pyowm"
+version = "3.3.0"
+description = "A Python wrapper around OpenWeatherMap web APIs"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pyowm-3.3.0-py3-none-any.whl", hash = "sha256:86463108e7613171531ba306040b43c972b3fc0b0acf73b12c50910cdd2107ab"},
+ {file = "pyowm-3.3.0.tar.gz", hash = "sha256:8196f77c91eac680676ed5ee484aae8a165408055e3e2b28025cbf60b8681e03"},
+]
+
+[package.dependencies]
+geojson = ">=2.3.0,<3"
+PySocks = ">=1.7.1,<2"
+requests = [
+ {version = ">=2.20.0,<3"},
+ {version = "*", extras = ["socks"]},
+]
+
+[[package]]
+name = "pyparsing"
+version = "3.1.4"
+description = "pyparsing module - Classes and methods to define and execute parsing grammars"
+optional = false
+python-versions = ">=3.6.8"
+files = [
+ {file = "pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c"},
+ {file = "pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032"},
+]
+
+[package.extras]
+diagrams = ["jinja2", "railroad-diagrams"]
+
+[[package]]
+name = "pysocks"
+version = "1.7.1"
+description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "PySocks-1.7.1-py27-none-any.whl", hash = "sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299"},
+ {file = "PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5"},
+ {file = "PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0"},
+]
+
+[[package]]
+name = "pytest"
+version = "6.2.5"
+description = "pytest: simple powerful testing with Python"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"},
+ {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"},
+]
+
+[package.dependencies]
+atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
+attrs = ">=19.2.0"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+iniconfig = "*"
+packaging = "*"
+pluggy = ">=0.12,<2.0"
+py = ">=1.8.2"
+toml = "*"
+
+[package.extras]
+testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
+
+[[package]]
+name = "python-dotenv"
+version = "1.0.1"
+description = "Read key-value pairs from a .env file and set them as environment variables"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"},
+ {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"},
+]
+
+[package.extras]
+cli = ["click (>=5.0)"]
+
+[[package]]
+name = "pytype"
+version = "2024.9.13"
+description = "Python type inferencer"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pytype-2024.9.13-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:52c0005d220b27f9c933e4077de700c4e8171abce0c2af72f4c6263a85ff5bce"},
+ {file = "pytype-2024.9.13-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d5dc847c2fe98bac044f956e2fc9f074f09704b64436522b81ede7dd5fa3653"},
+ {file = "pytype-2024.9.13-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:529f19141c6170d96a38909df430ca52e6904eaef851ad2690cf632f17d2c195"},
+ {file = "pytype-2024.9.13-cp311-cp311-macosx_10_14_universal2.whl", hash = "sha256:38f3eddf05d8530ef16d3d7c2da2556148b9975fc7c3405ac3073022e1a7434b"},
+ {file = "pytype-2024.9.13-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b530eae5ab421a2dc9c4ef53f68629c5a622545150ae9702dbb811f56852a63"},
+ {file = "pytype-2024.9.13-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eb9eaaaf6c33e2716fdce1cf4166d3e5099372d8898b69ab7673225928096456"},
+ {file = "pytype-2024.9.13-cp312-cp312-macosx_10_14_universal2.whl", hash = "sha256:53b767d85f374c7483c8b2849dceb811a15fcb01520e245dd82bd7c0e2befefb"},
+ {file = "pytype-2024.9.13-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:176a5bbc0cb0882918a0b48818b95df2c15811e3a8391da089ffc5b33fea7013"},
+ {file = "pytype-2024.9.13-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7bdaf1eaaf17a13741f67686c2d4c94c30279cd682c7e4cf535e41fc911b0e59"},
+ {file = "pytype-2024.9.13-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:425011cc45fba8c83af796155049f9db89d11e8aedbfb21bc1c99408f4a2c4e3"},
+ {file = "pytype-2024.9.13-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e500727967b843488c1978114778162ef00fee9be49dfa5b4758dcbbcc55dd9"},
+ {file = "pytype-2024.9.13-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b9b40beab6ef04fc260d86a8ef47b25d1b525dbc4cfbcb73151fd74210c176df"},
+ {file = "pytype-2024.9.13-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:b5fdc24b60938ee846dfbdf08b5ea96e934e7d69c34eb1f8fb7707083d177f0e"},
+ {file = "pytype-2024.9.13-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8dcfd509118c2d7e0787e72832b45e30037af1c29dfcb733a7e8014f58337287"},
+ {file = "pytype-2024.9.13-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9df731062dc18518a46135c4825ad966e1a275ffc0723dd62f9771b420889da0"},
+ {file = "pytype-2024.9.13.tar.gz", hash = "sha256:941046ca0f1c43b79162bb51836fef0ba6608012d99f6833148c249f22216f26"},
+]
+
+[package.dependencies]
+attrs = ">=21.4.0"
+immutabledict = ">=4.1.0"
+importlab = ">=0.8"
+jinja2 = ">=3.1.2"
+libcst = ">=1.0.1"
+msgspec = ">=0.18.6"
+networkx = "<3.2"
+ninja = ">=1.10.0.post2"
+pycnite = ">=2024.07.31"
+pydot = ">=1.4.2"
+tabulate = ">=0.8.10"
+toml = ">=0.10.2"
+typing-extensions = ">=4.3.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"
+PySocks = {version = ">=1.5.6,<1.5.7 || >1.5.7", optional = true, markers = "extra == \"socks\""}
+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 = "requests-oauthlib"
+version = "1.3.1"
+description = "OAuthlib authentication support for Requests."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"},
+ {file = "requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5"},
+]
+
+[package.dependencies]
+oauthlib = ">=3.0.0"
+requests = ">=2.0.0"
+
+[package.extras]
+rsa = ["oauthlib[signedtoken] (>=3.0.0)"]
+
+[[package]]
+name = "ruff"
+version = "0.6.8"
+description = "An extremely fast Python linter and code formatter, written in Rust."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "ruff-0.6.8-py3-none-linux_armv6l.whl", hash = "sha256:77944bca110ff0a43b768f05a529fecd0706aac7bcce36d7f1eeb4cbfca5f0f2"},
+ {file = "ruff-0.6.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:27b87e1801e786cd6ede4ada3faa5e254ce774de835e6723fd94551464c56b8c"},
+ {file = "ruff-0.6.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:cd48f945da2a6334f1793d7f701725a76ba93bf3d73c36f6b21fb04d5338dcf5"},
+ {file = "ruff-0.6.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:677e03c00f37c66cea033274295a983c7c546edea5043d0c798833adf4cf4c6f"},
+ {file = "ruff-0.6.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f1476236b3eacfacfc0f66aa9e6cd39f2a624cb73ea99189556015f27c0bdeb"},
+ {file = "ruff-0.6.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f5a2f17c7d32991169195d52a04c95b256378bbf0de8cb98478351eb70d526f"},
+ {file = "ruff-0.6.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5fd0d4b7b1457c49e435ee1e437900ced9b35cb8dc5178921dfb7d98d65a08d0"},
+ {file = "ruff-0.6.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8034b19b993e9601f2ddf2c517451e17a6ab5cdb1c13fdff50c1442a7171d87"},
+ {file = "ruff-0.6.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6cfb227b932ba8ef6e56c9f875d987973cd5e35bc5d05f5abf045af78ad8e098"},
+ {file = "ruff-0.6.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef0411eccfc3909269fed47c61ffebdcb84a04504bafa6b6df9b85c27e813b0"},
+ {file = "ruff-0.6.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:007dee844738c3d2e6c24ab5bc7d43c99ba3e1943bd2d95d598582e9c1b27750"},
+ {file = "ruff-0.6.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ce60058d3cdd8490e5e5471ef086b3f1e90ab872b548814e35930e21d848c9ce"},
+ {file = "ruff-0.6.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:1085c455d1b3fdb8021ad534379c60353b81ba079712bce7a900e834859182fa"},
+ {file = "ruff-0.6.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:70edf6a93b19481affd287d696d9e311388d808671bc209fb8907b46a8c3af44"},
+ {file = "ruff-0.6.8-py3-none-win32.whl", hash = "sha256:792213f7be25316f9b46b854df80a77e0da87ec66691e8f012f887b4a671ab5a"},
+ {file = "ruff-0.6.8-py3-none-win_amd64.whl", hash = "sha256:ec0517dc0f37cad14a5319ba7bba6e7e339d03fbf967a6d69b0907d61be7a263"},
+ {file = "ruff-0.6.8-py3-none-win_arm64.whl", hash = "sha256:8d3bb2e3fbb9875172119021a13eed38849e762499e3cfde9588e4b4d70968dc"},
+ {file = "ruff-0.6.8.tar.gz", hash = "sha256:a5bf44b1aa0adaf6d9d20f86162b34f7c593bfedabc51239953e446aefc8ce18"},
+]
+
+[[package]]
+name = "setuptools"
+version = "75.1.0"
+description = "Easily download, build, install, upgrade, and uninstall Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"},
+ {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"},
+]
+
+[package.extras]
+check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"]
+core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"]
+cover = ["pytest-cov"]
+doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"]
+enabler = ["pytest-enabler (>=2.2)"]
+test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"]
+type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"]
+
+[[package]]
+name = "six"
+version = "1.16.0"
+description = "Python 2 and 3 compatibility utilities"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+files = [
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+]
+
+[[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 = "soupsieve"
+version = "2.6"
+description = "A modern CSS selector implementation for Beautiful Soup."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"},
+ {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"},
+]
+
+[[package]]
+name = "spider-client"
+version = "0.0.70"
+description = "Python SDK for Spider Cloud API"
+optional = false
+python-versions = "*"
+files = [
+ {file = "spider-client-0.0.70.tar.gz", hash = "sha256:3c46cb3cfe1ba4dc904bf18f1c727af7ab1f6ba04464e5bf149304aa92cc769c"},
+]
+
+[package.dependencies]
+requests = "*"
+
+[[package]]
+name = "sqlalchemy"
+version = "2.0.35"
+description = "Database Abstraction Library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "SQLAlchemy-2.0.35-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:67219632be22f14750f0d1c70e62f204ba69d28f62fd6432ba05ab295853de9b"},
+ {file = "SQLAlchemy-2.0.35-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4668bd8faf7e5b71c0319407b608f278f279668f358857dbfd10ef1954ac9f90"},
+ {file = "SQLAlchemy-2.0.35-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb8bea573863762bbf45d1e13f87c2d2fd32cee2dbd50d050f83f87429c9e1ea"},
+ {file = "SQLAlchemy-2.0.35-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f552023710d4b93d8fb29a91fadf97de89c5926c6bd758897875435f2a939f33"},
+ {file = "SQLAlchemy-2.0.35-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:016b2e665f778f13d3c438651dd4de244214b527a275e0acf1d44c05bc6026a9"},
+ {file = "SQLAlchemy-2.0.35-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7befc148de64b6060937231cbff8d01ccf0bfd75aa26383ffdf8d82b12ec04ff"},
+ {file = "SQLAlchemy-2.0.35-cp310-cp310-win32.whl", hash = "sha256:22b83aed390e3099584b839b93f80a0f4a95ee7f48270c97c90acd40ee646f0b"},
+ {file = "SQLAlchemy-2.0.35-cp310-cp310-win_amd64.whl", hash = "sha256:a29762cd3d116585278ffb2e5b8cc311fb095ea278b96feef28d0b423154858e"},
+ {file = "SQLAlchemy-2.0.35-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e21f66748ab725ade40fa7af8ec8b5019c68ab00b929f6643e1b1af461eddb60"},
+ {file = "SQLAlchemy-2.0.35-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8a6219108a15fc6d24de499d0d515c7235c617b2540d97116b663dade1a54d62"},
+ {file = "SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:042622a5306c23b972192283f4e22372da3b8ddf5f7aac1cc5d9c9b222ab3ff6"},
+ {file = "SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:627dee0c280eea91aed87b20a1f849e9ae2fe719d52cbf847c0e0ea34464b3f7"},
+ {file = "SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4fdcd72a789c1c31ed242fd8c1bcd9ea186a98ee8e5408a50e610edfef980d71"},
+ {file = "SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:89b64cd8898a3a6f642db4eb7b26d1b28a497d4022eccd7717ca066823e9fb01"},
+ {file = "SQLAlchemy-2.0.35-cp311-cp311-win32.whl", hash = "sha256:6a93c5a0dfe8d34951e8a6f499a9479ffb9258123551fa007fc708ae2ac2bc5e"},
+ {file = "SQLAlchemy-2.0.35-cp311-cp311-win_amd64.whl", hash = "sha256:c68fe3fcde03920c46697585620135b4ecfdfc1ed23e75cc2c2ae9f8502c10b8"},
+ {file = "SQLAlchemy-2.0.35-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:eb60b026d8ad0c97917cb81d3662d0b39b8ff1335e3fabb24984c6acd0c900a2"},
+ {file = "SQLAlchemy-2.0.35-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6921ee01caf375363be5e9ae70d08ce7ca9d7e0e8983183080211a062d299468"},
+ {file = "SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cdf1a0dbe5ced887a9b127da4ffd7354e9c1a3b9bb330dce84df6b70ccb3a8d"},
+ {file = "SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93a71c8601e823236ac0e5d087e4f397874a421017b3318fd92c0b14acf2b6db"},
+ {file = "SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e04b622bb8a88f10e439084486f2f6349bf4d50605ac3e445869c7ea5cf0fa8c"},
+ {file = "SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1b56961e2d31389aaadf4906d453859f35302b4eb818d34a26fab72596076bb8"},
+ {file = "SQLAlchemy-2.0.35-cp312-cp312-win32.whl", hash = "sha256:0f9f3f9a3763b9c4deb8c5d09c4cc52ffe49f9876af41cc1b2ad0138878453cf"},
+ {file = "SQLAlchemy-2.0.35-cp312-cp312-win_amd64.whl", hash = "sha256:25b0f63e7fcc2a6290cb5f7f5b4fc4047843504983a28856ce9b35d8f7de03cc"},
+ {file = "SQLAlchemy-2.0.35-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f021d334f2ca692523aaf7bbf7592ceff70c8594fad853416a81d66b35e3abf9"},
+ {file = "SQLAlchemy-2.0.35-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05c3f58cf91683102f2f0265c0db3bd3892e9eedabe059720492dbaa4f922da1"},
+ {file = "SQLAlchemy-2.0.35-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:032d979ce77a6c2432653322ba4cbeabf5a6837f704d16fa38b5a05d8e21fa00"},
+ {file = "SQLAlchemy-2.0.35-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:2e795c2f7d7249b75bb5f479b432a51b59041580d20599d4e112b5f2046437a3"},
+ {file = "SQLAlchemy-2.0.35-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:cc32b2990fc34380ec2f6195f33a76b6cdaa9eecf09f0c9404b74fc120aef36f"},
+ {file = "SQLAlchemy-2.0.35-cp37-cp37m-win32.whl", hash = "sha256:9509c4123491d0e63fb5e16199e09f8e262066e58903e84615c301dde8fa2e87"},
+ {file = "SQLAlchemy-2.0.35-cp37-cp37m-win_amd64.whl", hash = "sha256:3655af10ebcc0f1e4e06c5900bb33e080d6a1fa4228f502121f28a3b1753cde5"},
+ {file = "SQLAlchemy-2.0.35-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4c31943b61ed8fdd63dfd12ccc919f2bf95eefca133767db6fbbd15da62078ec"},
+ {file = "SQLAlchemy-2.0.35-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a62dd5d7cc8626a3634208df458c5fe4f21200d96a74d122c83bc2015b333bc1"},
+ {file = "SQLAlchemy-2.0.35-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0630774b0977804fba4b6bbea6852ab56c14965a2b0c7fc7282c5f7d90a1ae72"},
+ {file = "SQLAlchemy-2.0.35-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d625eddf7efeba2abfd9c014a22c0f6b3796e0ffb48f5d5ab106568ef01ff5a"},
+ {file = "SQLAlchemy-2.0.35-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ada603db10bb865bbe591939de854faf2c60f43c9b763e90f653224138f910d9"},
+ {file = "SQLAlchemy-2.0.35-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c41411e192f8d3ea39ea70e0fae48762cd11a2244e03751a98bd3c0ca9a4e936"},
+ {file = "SQLAlchemy-2.0.35-cp38-cp38-win32.whl", hash = "sha256:d299797d75cd747e7797b1b41817111406b8b10a4f88b6e8fe5b5e59598b43b0"},
+ {file = "SQLAlchemy-2.0.35-cp38-cp38-win_amd64.whl", hash = "sha256:0375a141e1c0878103eb3d719eb6d5aa444b490c96f3fedab8471c7f6ffe70ee"},
+ {file = "SQLAlchemy-2.0.35-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ccae5de2a0140d8be6838c331604f91d6fafd0735dbdcee1ac78fc8fbaba76b4"},
+ {file = "SQLAlchemy-2.0.35-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2a275a806f73e849e1c309ac11108ea1a14cd7058577aba962cd7190e27c9e3c"},
+ {file = "SQLAlchemy-2.0.35-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:732e026240cdd1c1b2e3ac515c7a23820430ed94292ce33806a95869c46bd139"},
+ {file = "SQLAlchemy-2.0.35-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:890da8cd1941fa3dab28c5bac3b9da8502e7e366f895b3b8e500896f12f94d11"},
+ {file = "SQLAlchemy-2.0.35-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0d8326269dbf944b9201911b0d9f3dc524d64779a07518199a58384c3d37a44"},
+ {file = "SQLAlchemy-2.0.35-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b76d63495b0508ab9fc23f8152bac63205d2a704cd009a2b0722f4c8e0cba8e0"},
+ {file = "SQLAlchemy-2.0.35-cp39-cp39-win32.whl", hash = "sha256:69683e02e8a9de37f17985905a5eca18ad651bf592314b4d3d799029797d0eb3"},
+ {file = "SQLAlchemy-2.0.35-cp39-cp39-win_amd64.whl", hash = "sha256:aee110e4ef3c528f3abbc3c2018c121e708938adeeff9006428dd7c8555e9b3f"},
+ {file = "SQLAlchemy-2.0.35-py3-none-any.whl", hash = "sha256:2ab3f0336c0387662ce6221ad30ab3a5e6499aab01b9790879b6578fd9b8faa1"},
+ {file = "sqlalchemy-2.0.35.tar.gz", hash = "sha256:e11d7ea4d24f0a262bccf9a7cd6284c976c5369dac21db237cff59586045ab9f"},
+]
+
+[package.dependencies]
+greenlet = {version = "!=0.4.17", markers = "python_version < \"3.13\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"}
+typing-extensions = ">=4.6.0"
+
+[package.extras]
+aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"]
+aioodbc = ["aioodbc", "greenlet (!=0.4.17)"]
+aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
+asyncio = ["greenlet (!=0.4.17)"]
+asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
+mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"]
+mssql = ["pyodbc"]
+mssql-pymssql = ["pymssql"]
+mssql-pyodbc = ["pyodbc"]
+mypy = ["mypy (>=0.910)"]
+mysql = ["mysqlclient (>=1.4.0)"]
+mysql-connector = ["mysql-connector-python"]
+oracle = ["cx_oracle (>=8)"]
+oracle-oracledb = ["oracledb (>=1.0.1)"]
+postgresql = ["psycopg2 (>=2.7)"]
+postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"]
+postgresql-pg8000 = ["pg8000 (>=1.29.1)"]
+postgresql-psycopg = ["psycopg (>=3.0.7)"]
+postgresql-psycopg2binary = ["psycopg2-binary"]
+postgresql-psycopg2cffi = ["psycopg2cffi"]
+postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"]
+pymysql = ["pymysql"]
+sqlcipher = ["sqlcipher3_binary"]
+
+[[package]]
+name = "starlette"
+version = "0.38.6"
+description = "The little ASGI library that shines."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "starlette-0.38.6-py3-none-any.whl", hash = "sha256:4517a1409e2e73ee4951214ba012052b9e16f60e90d73cfb06192c19203bbb05"},
+ {file = "starlette-0.38.6.tar.gz", hash = "sha256:863a1588f5574e70a821dadefb41e4881ea451a47a3cd1b4df359d4ffefe5ead"},
+]
+
+[package.dependencies]
+anyio = ">=3.4.0,<5"
+
+[package.extras]
+full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"]
+
+[[package]]
+name = "tabulate"
+version = "0.9.0"
+description = "Pretty-print tabular data"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"},
+ {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"},
+]
+
+[package.extras]
+widechars = ["wcwidth"]
+
+[[package]]
+name = "tenacity"
+version = "8.5.0"
+description = "Retry code until it succeeds"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"},
+ {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"},
+]
+
+[package.extras]
+doc = ["reno", "sphinx"]
+test = ["pytest", "tornado (>=4.5)", "typeguard"]
+
+[[package]]
+name = "termcolor"
+version = "2.4.0"
+description = "ANSI color formatting for output in terminal"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "termcolor-2.4.0-py3-none-any.whl", hash = "sha256:9297c0df9c99445c2412e832e882a7884038a25617c60cea2ad69488d4040d63"},
+ {file = "termcolor-2.4.0.tar.gz", hash = "sha256:aab9e56047c8ac41ed798fa36d892a37aca6b3e9159f3e0c24bc64a9b3ac7b7a"},
+]
+
+[package.extras]
+tests = ["pytest", "pytest-cov"]
+
+[[package]]
+name = "toml"
+version = "0.10.2"
+description = "Python Library for Tom's Obvious, Minimal Language"
+optional = false
+python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
+files = [
+ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
+ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
+]
+
+[[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 = "tweepy"
+version = "4.14.0"
+description = "Twitter library for Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tweepy-4.14.0-py3-none-any.whl", hash = "sha256:db6d3844ccc0c6d27f339f12ba8acc89912a961da513c1ae50fa2be502a56afb"},
+ {file = "tweepy-4.14.0.tar.gz", hash = "sha256:1f9f1707d6972de6cff6c5fd90dfe6a449cd2e0d70bd40043ffab01e07a06c8c"},
+]
+
+[package.dependencies]
+oauthlib = ">=3.2.0,<4"
+requests = ">=2.27.0,<3"
+requests-oauthlib = ">=1.2.0,<2"
+
+[package.extras]
+async = ["aiohttp (>=3.7.3,<4)", "async-lru (>=1.0.3,<3)"]
+dev = ["coverage (>=4.4.2)", "coveralls (>=2.1.0)", "tox (>=3.21.0)"]
+docs = ["myst-parser (==0.15.2)", "readthedocs-sphinx-search (==0.1.1)", "sphinx (==4.2.0)", "sphinx-hoverxref (==0.7b1)", "sphinx-rtd-theme (==1.0.0)", "sphinx-tabs (==3.2.0)"]
+socks = ["requests[socks] (>=2.27.0,<3)"]
+test = ["vcrpy (>=1.10.3)"]
+
+[[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 = "typing-inspect"
+version = "0.9.0"
+description = "Runtime inspection utilities for typing module."
+optional = false
+python-versions = "*"
+files = [
+ {file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"},
+ {file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"},
+]
+
+[package.dependencies]
+mypy-extensions = ">=0.3.0"
+typing-extensions = ">=3.7.4"
+
+[[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)"]
+
+[[package]]
+name = "uvicorn"
+version = "0.30.6"
+description = "The lightning-fast ASGI server."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "uvicorn-0.30.6-py3-none-any.whl", hash = "sha256:65fd46fe3fda5bdc1b03b94eb634923ff18cd35b2f084813ea79d1f103f711b5"},
+ {file = "uvicorn-0.30.6.tar.gz", hash = "sha256:4b15decdda1e72be08209e860a1e10e92439ad5b97cf44cc945fcbee66fc5788"},
+]
+
+[package.dependencies]
+click = ">=7.0"
+h11 = ">=0.8"
+
+[package.extras]
+standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
+
+[[package]]
+name = "wikipedia"
+version = "1.4.0"
+description = "Wikipedia API for Python"
+optional = false
+python-versions = "*"
+files = [
+ {file = "wikipedia-1.4.0.tar.gz", hash = "sha256:db0fad1829fdd441b1852306e9856398204dc0786d2996dd2e0c8bb8e26133b2"},
+]
+
+[package.dependencies]
+beautifulsoup4 = "*"
+requests = ">=2.0.0,<3.0.0"
+
+[[package]]
+name = "yarl"
+version = "1.13.1"
+description = "Yet another URL library"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "yarl-1.13.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:82e692fb325013a18a5b73a4fed5a1edaa7c58144dc67ad9ef3d604eccd451ad"},
+ {file = "yarl-1.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df4e82e68f43a07735ae70a2d84c0353e58e20add20ec0af611f32cd5ba43fb4"},
+ {file = "yarl-1.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ec9dd328016d8d25702a24ee274932aebf6be9787ed1c28d021945d264235b3c"},
+ {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5820bd4178e6a639b3ef1db8b18500a82ceab6d8b89309e121a6859f56585b05"},
+ {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86c438ce920e089c8c2388c7dcc8ab30dfe13c09b8af3d306bcabb46a053d6f7"},
+ {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3de86547c820e4f4da4606d1c8ab5765dd633189791f15247706a2eeabc783ae"},
+ {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca53632007c69ddcdefe1e8cbc3920dd88825e618153795b57e6ebcc92e752a"},
+ {file = "yarl-1.13.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4ee1d240b84e2f213565f0ec08caef27a0e657d4c42859809155cf3a29d1735"},
+ {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c49f3e379177f4477f929097f7ed4b0622a586b0aa40c07ac8c0f8e40659a1ac"},
+ {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5c5e32fef09ce101fe14acd0f498232b5710effe13abac14cd95de9c274e689e"},
+ {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ab9524e45ee809a083338a749af3b53cc7efec458c3ad084361c1dbf7aaf82a2"},
+ {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:b1481c048fe787f65e34cb06f7d6824376d5d99f1231eae4778bbe5c3831076d"},
+ {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:31497aefd68036d8e31bfbacef915826ca2e741dbb97a8d6c7eac66deda3b606"},
+ {file = "yarl-1.13.1-cp310-cp310-win32.whl", hash = "sha256:1fa56f34b2236f5192cb5fceba7bbb09620e5337e0b6dfe2ea0ddbd19dd5b154"},
+ {file = "yarl-1.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:1bbb418f46c7f7355084833051701b2301092e4611d9e392360c3ba2e3e69f88"},
+ {file = "yarl-1.13.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:216a6785f296169ed52cd7dcdc2612f82c20f8c9634bf7446327f50398732a51"},
+ {file = "yarl-1.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:40c6e73c03a6befb85b72da213638b8aaa80fe4136ec8691560cf98b11b8ae6e"},
+ {file = "yarl-1.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2430cf996113abe5aee387d39ee19529327205cda975d2b82c0e7e96e5fdabdc"},
+ {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fb4134cc6e005b99fa29dbc86f1ea0a298440ab6b07c6b3ee09232a3b48f495"},
+ {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:309c104ecf67626c033845b860d31594a41343766a46fa58c3309c538a1e22b2"},
+ {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f90575e9fe3aae2c1e686393a9689c724cd00045275407f71771ae5d690ccf38"},
+ {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d2e1626be8712333a9f71270366f4a132f476ffbe83b689dd6dc0d114796c74"},
+ {file = "yarl-1.13.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b66c87da3c6da8f8e8b648878903ca54589038a0b1e08dde2c86d9cd92d4ac9"},
+ {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cf1ad338620249f8dd6d4b6a91a69d1f265387df3697ad5dc996305cf6c26fb2"},
+ {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9915300fe5a0aa663c01363db37e4ae8e7c15996ebe2c6cce995e7033ff6457f"},
+ {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:703b0f584fcf157ef87816a3c0ff868e8c9f3c370009a8b23b56255885528f10"},
+ {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:1d8e3ca29f643dd121f264a7c89f329f0fcb2e4461833f02de6e39fef80f89da"},
+ {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7055bbade838d68af73aea13f8c86588e4bcc00c2235b4b6d6edb0dbd174e246"},
+ {file = "yarl-1.13.1-cp311-cp311-win32.whl", hash = "sha256:a3442c31c11088e462d44a644a454d48110f0588de830921fd201060ff19612a"},
+ {file = "yarl-1.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:81bad32c8f8b5897c909bf3468bf601f1b855d12f53b6af0271963ee67fff0d2"},
+ {file = "yarl-1.13.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f452cc1436151387d3d50533523291d5f77c6bc7913c116eb985304abdbd9ec9"},
+ {file = "yarl-1.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9cec42a20eae8bebf81e9ce23fb0d0c729fc54cf00643eb251ce7c0215ad49fe"},
+ {file = "yarl-1.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d959fe96e5c2712c1876d69af0507d98f0b0e8d81bee14cfb3f6737470205419"},
+ {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8c837ab90c455f3ea8e68bee143472ee87828bff19ba19776e16ff961425b57"},
+ {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:94a993f976cdcb2dc1b855d8b89b792893220db8862d1a619efa7451817c836b"},
+ {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b2442a415a5f4c55ced0fade7b72123210d579f7d950e0b5527fc598866e62c"},
+ {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fdbf0418489525231723cdb6c79e7738b3cbacbaed2b750cb033e4ea208f220"},
+ {file = "yarl-1.13.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b7f6e699304717fdc265a7e1922561b02a93ceffdaefdc877acaf9b9f3080b8"},
+ {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bcd5bf4132e6a8d3eb54b8d56885f3d3a38ecd7ecae8426ecf7d9673b270de43"},
+ {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2a93a4557f7fc74a38ca5a404abb443a242217b91cd0c4840b1ebedaad8919d4"},
+ {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:22b739f99c7e4787922903f27a892744189482125cc7b95b747f04dd5c83aa9f"},
+ {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2db874dd1d22d4c2c657807562411ffdfabec38ce4c5ce48b4c654be552759dc"},
+ {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4feaaa4742517eaceafcbe74595ed335a494c84634d33961214b278126ec1485"},
+ {file = "yarl-1.13.1-cp312-cp312-win32.whl", hash = "sha256:bbf9c2a589be7414ac4a534d54e4517d03f1cbb142c0041191b729c2fa23f320"},
+ {file = "yarl-1.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:d07b52c8c450f9366c34aa205754355e933922c79135125541daae6cbf31c799"},
+ {file = "yarl-1.13.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:95c6737f28069153c399d875317f226bbdea939fd48a6349a3b03da6829fb550"},
+ {file = "yarl-1.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:cd66152561632ed4b2a9192e7f8e5a1d41e28f58120b4761622e0355f0fe034c"},
+ {file = "yarl-1.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6a2acde25be0cf9be23a8f6cbd31734536a264723fca860af3ae5e89d771cd71"},
+ {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18595e6a2ee0826bf7dfdee823b6ab55c9b70e8f80f8b77c37e694288f5de1"},
+ {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a31d21089894942f7d9a8df166b495101b7258ff11ae0abec58e32daf8088813"},
+ {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:45f209fb4bbfe8630e3d2e2052535ca5b53d4ce2d2026bed4d0637b0416830da"},
+ {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f722f30366474a99745533cc4015b1781ee54b08de73260b2bbe13316079851"},
+ {file = "yarl-1.13.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3bf60444269345d712838bb11cc4eadaf51ff1a364ae39ce87a5ca8ad3bb2c8"},
+ {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:942c80a832a79c3707cca46bd12ab8aa58fddb34b1626d42b05aa8f0bcefc206"},
+ {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:44b07e1690f010c3c01d353b5790ec73b2f59b4eae5b0000593199766b3f7a5c"},
+ {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:396e59b8de7e4d59ff5507fb4322d2329865b909f29a7ed7ca37e63ade7f835c"},
+ {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3bb83a0f12701c0b91112a11148b5217617982e1e466069d0555be9b372f2734"},
+ {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c92b89bffc660f1274779cb6fbb290ec1f90d6dfe14492523a0667f10170de26"},
+ {file = "yarl-1.13.1-cp313-cp313-win32.whl", hash = "sha256:269c201bbc01d2cbba5b86997a1e0f73ba5e2f471cfa6e226bcaa7fd664b598d"},
+ {file = "yarl-1.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:1d0828e17fa701b557c6eaed5edbd9098eb62d8838344486248489ff233998b8"},
+ {file = "yarl-1.13.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8be8cdfe20787e6a5fcbd010f8066227e2bb9058331a4eccddec6c0db2bb85b2"},
+ {file = "yarl-1.13.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:08d7148ff11cb8e886d86dadbfd2e466a76d5dd38c7ea8ebd9b0e07946e76e4b"},
+ {file = "yarl-1.13.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4afdf84610ca44dcffe8b6c22c68f309aff96be55f5ea2fa31c0c225d6b83e23"},
+ {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0d12fe78dcf60efa205e9a63f395b5d343e801cf31e5e1dda0d2c1fb618073d"},
+ {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298c1eecfd3257aa16c0cb0bdffb54411e3e831351cd69e6b0739be16b1bdaa8"},
+ {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c14c16831b565707149c742d87a6203eb5597f4329278446d5c0ae7a1a43928e"},
+ {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a9bacedbb99685a75ad033fd4de37129449e69808e50e08034034c0bf063f99"},
+ {file = "yarl-1.13.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:658e8449b84b92a4373f99305de042b6bd0d19bf2080c093881e0516557474a5"},
+ {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:373f16f38721c680316a6a00ae21cc178e3a8ef43c0227f88356a24c5193abd6"},
+ {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:45d23c4668d4925688e2ea251b53f36a498e9ea860913ce43b52d9605d3d8177"},
+ {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f7917697bcaa3bc3e83db91aa3a0e448bf5cde43c84b7fc1ae2427d2417c0224"},
+ {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:5989a38ba1281e43e4663931a53fbf356f78a0325251fd6af09dd03b1d676a09"},
+ {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:11b3ca8b42a024513adce810385fcabdd682772411d95bbbda3b9ed1a4257644"},
+ {file = "yarl-1.13.1-cp38-cp38-win32.whl", hash = "sha256:dcaef817e13eafa547cdfdc5284fe77970b891f731266545aae08d6cce52161e"},
+ {file = "yarl-1.13.1-cp38-cp38-win_amd64.whl", hash = "sha256:7addd26594e588503bdef03908fc207206adac5bd90b6d4bc3e3cf33a829f57d"},
+ {file = "yarl-1.13.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a0ae6637b173d0c40b9c1462e12a7a2000a71a3258fa88756a34c7d38926911c"},
+ {file = "yarl-1.13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:576365c9f7469e1f6124d67b001639b77113cfd05e85ce0310f5f318fd02fe85"},
+ {file = "yarl-1.13.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:78f271722423b2d4851cf1f4fa1a1c4833a128d020062721ba35e1a87154a049"},
+ {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d74f3c335cfe9c21ea78988e67f18eb9822f5d31f88b41aec3a1ec5ecd32da5"},
+ {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1891d69a6ba16e89473909665cd355d783a8a31bc84720902c5911dbb6373465"},
+ {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fb382fd7b4377363cc9f13ba7c819c3c78ed97c36a82f16f3f92f108c787cbbf"},
+ {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c8854b9f80693d20cec797d8e48a848c2fb273eb6f2587b57763ccba3f3bd4b"},
+ {file = "yarl-1.13.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbf2c3f04ff50f16404ce70f822cdc59760e5e2d7965905f0e700270feb2bbfc"},
+ {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fb9f59f3848edf186a76446eb8bcf4c900fe147cb756fbbd730ef43b2e67c6a7"},
+ {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ef9b85fa1bc91c4db24407e7c4da93a5822a73dd4513d67b454ca7064e8dc6a3"},
+ {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:098b870c18f1341786f290b4d699504e18f1cd050ed179af8123fd8232513424"},
+ {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:8c723c91c94a3bc8033dd2696a0f53e5d5f8496186013167bddc3fb5d9df46a3"},
+ {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:44a4c40a6f84e4d5955b63462a0e2a988f8982fba245cf885ce3be7618f6aa7d"},
+ {file = "yarl-1.13.1-cp39-cp39-win32.whl", hash = "sha256:84bbcdcf393139f0abc9f642bf03f00cac31010f3034faa03224a9ef0bb74323"},
+ {file = "yarl-1.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:fc2931ac9ce9c61c9968989ec831d3a5e6fcaaff9474e7cfa8de80b7aff5a093"},
+ {file = "yarl-1.13.1-py3-none-any.whl", hash = "sha256:6a5185ad722ab4dd52d5fb1f30dcc73282eb1ed494906a92d1a228d3f89607b0"},
+ {file = "yarl-1.13.1.tar.gz", hash = "sha256:ec8cfe2295f3e5e44c51f57272afbd69414ae629ec7c6b27f5a410efc78b70a0"},
+]
+
+[package.dependencies]
+idna = ">=2.0"
+multidict = ">=4.0"
+
+[metadata]
+lock-version = "2.0"
+python-versions = ">=3.12,<3.13"
+content-hash = "09de1366659448cf284d8db6f8b7ed615e75f1aa44c1684868905e1c86780ac4"
diff --git a/integrations-service/pyproject.toml b/integrations-service/pyproject.toml
new file mode 100644
index 000000000..584efa480
--- /dev/null
+++ b/integrations-service/pyproject.toml
@@ -0,0 +1,41 @@
+[tool.poetry]
+name = "integrations"
+version = "0.1.0"
+description = "Integration service for various AI tools"
+authors = ["Your Name "]
+
+[tool.poetry.dependencies]
+python = ">=3.12,<3.13"
+langchain-community = "^0.3.0"
+fastapi = "^0.115.0"
+uvicorn = "^0.30.6"
+langchain = "^0.3.0"
+pydantic = "^2.9.2"
+duckduckgo-search = "^6.2.13"
+openai = "^1.47.1"
+tweepy = "^4.14.0"
+wikipedia = "^1.4.0"
+fire = "^0.6.0"
+pyowm = "^3.3.0"
+spider-client = "^0.0.70"
+browserbase = "^0.3.0"
+setuptools = "^75.1.0"
+
+[tool.poe.tasks]
+format = "ruff format"
+lint = "ruff check --select I --fix --unsafe-fixes integrations/**/*.py"
+typecheck = "pytype --config pytype.toml"
+check = [
+ "lint",
+ "format",
+ "typecheck",
+]
+
+[tool.poetry.dev-dependencies]
+pytest = "^6.2.5"
+pytype = "^2024.9.13"
+ruff = "^0.6.8"
+
+[build-system]
+requires = ["poetry-core>=1.0.0"]
+build-backend = "poetry.core.masonry.api"
\ No newline at end of file
diff --git a/integrations-service/pytype.toml b/integrations-service/pytype.toml
new file mode 100644
index 000000000..70b578106
--- /dev/null
+++ b/integrations-service/pytype.toml
@@ -0,0 +1,64 @@
+# NOTE: All relative paths are relative to the location of this file.
+
+[tool.pytype]
+
+# Space-separated list of files or directories to exclude.
+exclude = [
+]
+
+# Space-separated list of files or directories to process.
+inputs = [
+ '.',
+]
+
+# Keep going past errors to analyze as many files as possible.
+keep_going = true
+
+# Run N jobs in parallel. When 'auto' is used, this will be equivalent to the
+# number of CPUs on the host system.
+jobs = 'auto'
+
+# All pytype output goes here.
+output = '.pytype'
+
+# Platform (e.g., "linux", "win32") that the target code runs on.
+platform = 'linux'
+
+# Paths to source code directories, separated by ':'.
+pythonpath = '.'
+
+# Python version (major.minor) of the target code.
+python_version = '3.12'
+
+# Don't allow None to match bool. This flag is temporary and will be removed
+# once this behavior is enabled by default.
+none_is_not_bool = true
+
+# Variables initialized as None retain their None binding. This flag is
+# temporary and will be removed once this behavior is enabled by default.
+strict_none_binding = true
+
+# Space-separated list of error names to ignore.
+disable = [
+ 'pyi-error',
+]
+
+# --------------
+# Optional flags
+# --------------
+
+# Bind 'self' in methods with non-transparent decorators. This flag is temporary
+# and will be removed once this behavior is enabled by default.
+bind_decorated_methods = false
+
+# Enable parameter count checks for overriding methods with renamed arguments.
+# This flag is temporary and will be removed once this behavior is enabled by
+# default.
+overriding_renamed_parameter_count_checks = false
+
+# Opt-in: Do not allow Any as a return type.
+no_return_any = false
+
+# Opt-in: Require decoration with @typing.override when overriding a method or
+# nested class attribute of a parent class.
+require_override_decorator = false
\ No newline at end of file
diff --git a/memory-store/Dockerfile b/memory-store/Dockerfile
index af3cb6e42..852a5f687 100644
--- a/memory-store/Dockerfile
+++ b/memory-store/Dockerfile
@@ -1,3 +1,5 @@
+# syntax=docker/dockerfile:1
+# check=error=true
# We need to build the cozo binary first from the repo
# https://github.com/cozodb/cozo
# Then copy the binary to the ./bin directory
diff --git a/memory-store/docker-compose.yml b/memory-store/docker-compose.yml
index 3ed06f1de..2adf50e81 100644
--- a/memory-store/docker-compose.yml
+++ b/memory-store/docker-compose.yml
@@ -18,7 +18,7 @@ services:
labels:
ofelia.enabled: "true"
- ofelia.job-exec.backupcron.schedule: "@every 1h"
+ ofelia.job-exec.backupcron.schedule: "@every 3h"
ofelia.job-exec.backupcron.environment: '["COZO_PORT=${COZO_PORT}", "COZO_AUTH_TOKEN=${COZO_AUTH_TOKEN}", "COZO_BACKUP_DIR=${COZO_BACKUP_DIR}"]'
ofelia.job-exec.backupcron.command: bash /app/backup.sh
diff --git a/sdks/node-sdk b/sdks/node-sdk
new file mode 160000
index 000000000..8f190fd7c
--- /dev/null
+++ b/sdks/node-sdk
@@ -0,0 +1 @@
+Subproject commit 8f190fd7c36f32aeb112ead95ba40254c8cbbc46
diff --git a/sdks/python-sdk b/sdks/python-sdk
new file mode 160000
index 000000000..872b15062
--- /dev/null
+++ b/sdks/python-sdk
@@ -0,0 +1 @@
+Subproject commit 872b150629d33e563740095125a2276c1be023e8
diff --git a/typespec/common/scalars.tsp b/typespec/common/scalars.tsp
index 79eda2d99..76ccef2d3 100644
--- a/typespec/common/scalars.tsp
+++ b/typespec/common/scalars.tsp
@@ -48,12 +48,24 @@ alias eventStream = "text/event-stream";
/** Different possible sources that can produce new entries */
alias entrySource = "api_request" | "api_response" | "tool_response" | "internal" | "summarizer" | "meta";
-/** Naming convention for tool references. Tools are resolved in order: `step-settings` -> `task` -> `agent` */
-@pattern("^(function|integration|system|api_call)\\.(\\w+)$")
-scalar toolRef extends string;
-
/** A simple python expression compatible with SimpleEval. */
scalar PyExpression extends string;
/** A valid jinja template. */
-scalar JinjaTemplate extends string;
\ No newline at end of file
+scalar JinjaTemplate extends string;
+
+/** Integration provider name */
+alias integrationProvider = (
+ | "dummy"
+ | "hacker_news"
+ | "weather"
+ | "wikipedia"
+ | "spider"
+ | "brave"
+ | "browserbase"
+ // | "dalle_image_generator"
+ // | "duckduckgo_search"
+ // | "twitter"
+ // | "webpage"
+ // | "requests"
+);
diff --git a/typespec/docs/models.tsp b/typespec/docs/models.tsp
index ee283fe02..f01b379c6 100644
--- a/typespec/docs/models.tsp
+++ b/typespec/docs/models.tsp
@@ -23,6 +23,10 @@ model Doc {
/** Contents of the document */
content: string | string[];
+
+ /** Embeddings for the document */
+ @visibility("read")
+ embeddings?: float32[] | float32[][];
}
/** Payload for creating a doc */
diff --git a/typespec/package-lock.json b/typespec/package-lock.json
index 2eb61490e..0ddfdb155 100644
--- a/typespec/package-lock.json
+++ b/typespec/package-lock.json
@@ -1,19 +1,19 @@
{
"name": "julep-typespec",
- "version": "0.3.0",
+ "version": "0.4.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "julep-typespec",
- "version": "0.3.0",
+ "version": "0.4.0",
"dependencies": {
- "@typespec/compiler": "^0.59.1",
- "@typespec/http": "^0.59.1",
- "@typespec/openapi": "^0.59.0",
- "@typespec/openapi3": "^0.59.1",
- "@typespec/rest": "^0.59.1",
- "@typespec/versioning": "^0.59.0"
+ "@typespec/compiler": "^0.60.1",
+ "@typespec/http": "^0.60.0",
+ "@typespec/openapi": "^0.60.0",
+ "@typespec/openapi3": "^0.60.0",
+ "@typespec/rest": "^0.60.0",
+ "@typespec/versioning": "^0.60.1"
}
},
"node_modules/@apidevtools/swagger-methods": {
@@ -60,9 +60,9 @@
}
},
"node_modules/@babel/runtime": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.8.tgz",
- "integrity": "sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==",
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
+ "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
"license": "MIT",
"dependencies": {
"regenerator-runtime": "^0.14.0"
@@ -274,9 +274,9 @@
"license": "MIT"
},
"node_modules/@typespec/compiler": {
- "version": "0.59.1",
- "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-0.59.1.tgz",
- "integrity": "sha512-O2ljgr6YoFaIH6a8lWc90/czdv4B2X6N9wz4WsnQnVvgO0Tj0s+3xkvp4Tv59RKMhT0f3fK6dL8oEGO32FYk1A==",
+ "version": "0.60.1",
+ "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-0.60.1.tgz",
+ "integrity": "sha512-I6Vcpvd7mBP7SI5vCBh9rZGXAtVy95BKhAd33Enw32psswiSzRpA7zdyZhOMekTOGVXNS/+E5l2PGGCzQddB4w==",
"license": "MIT",
"dependencies": {
"@babel/code-frame": "~7.24.7",
@@ -303,34 +303,34 @@
}
},
"node_modules/@typespec/http": {
- "version": "0.59.1",
- "resolved": "https://registry.npmjs.org/@typespec/http/-/http-0.59.1.tgz",
- "integrity": "sha512-Ai8oCAO+Bw1HMSZ9gOI5Od4fNn/ul4HrVtTB01xFuLK6FQj854pxhzao8ylPnr7gIRQ327FV12/QfXR87yCiYQ==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@typespec/http/-/http-0.60.0.tgz",
+ "integrity": "sha512-ktfS9vpHfltyeAaQLNAZdqrn6Per3vmB/HDH/iyudYLA5wWblT1siKvpFCMWq53CJorRO7yeOKv+Q/M26zwEtg==",
"license": "MIT",
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "~0.59.0"
+ "@typespec/compiler": "~0.60.0"
}
},
"node_modules/@typespec/openapi": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-0.59.0.tgz",
- "integrity": "sha512-do1Dm5w0MuK3994gYTBg6qMfgeIxmmsDqnz3zimYKMPpbnUBi4F6/o4iCfn0Fn9kaNl+H6UlOzZpsZW9xHui1Q==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-0.60.0.tgz",
+ "integrity": "sha512-YVwLppgHY8r/MudHNSLSUXzdw+CIpjmb31gI2a0KDGnI6sWDwY7LSWfjGU4TY/ubt0+X0Tjoy330mTvw71YBTg==",
"license": "MIT",
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "~0.59.0",
- "@typespec/http": "~0.59.0"
+ "@typespec/compiler": "~0.60.0",
+ "@typespec/http": "~0.60.0"
}
},
"node_modules/@typespec/openapi3": {
- "version": "0.59.1",
- "resolved": "https://registry.npmjs.org/@typespec/openapi3/-/openapi3-0.59.1.tgz",
- "integrity": "sha512-89VbUbkWKxeFgE0w0hpVyk1UZ6ZHRxOhcAHvF5MgxQxEhs2ALXKAqapWjFQsYrLBhAUoWzdPFrJJUMbwF9kX0Q==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@typespec/openapi3/-/openapi3-0.60.0.tgz",
+ "integrity": "sha512-gvrTHZACdeQtV7GfhVOHqkyTgMFyM2nKAIiz2P83LIncMCDUc00bGKGmaBk+xpuwKtCJyxBeVpCbID31YAq96g==",
"license": "MIT",
"dependencies": {
"@readme/openapi-parser": "~2.6.0",
@@ -343,35 +343,35 @@
"node": ">=18.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "~0.59.0",
- "@typespec/http": "~0.59.1",
- "@typespec/openapi": "~0.59.0",
- "@typespec/versioning": "~0.59.0"
+ "@typespec/compiler": "~0.60.0",
+ "@typespec/http": "~0.60.0",
+ "@typespec/openapi": "~0.60.0",
+ "@typespec/versioning": "~0.60.0"
}
},
"node_modules/@typespec/rest": {
- "version": "0.59.1",
- "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.59.1.tgz",
- "integrity": "sha512-uKU431jBYL2tVQWG5THA75+OtXDa1e8cMAafYK/JJRRiVRd8D/Epd8fp07dzlB8tFGrhCaGlekRMqFPFrHh2/A==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.60.0.tgz",
+ "integrity": "sha512-mHYubyuBvwdV2xkHrJfPwV7b/Ksyb9lA1Q/AQwpVFa7Qu1X075TBVALmH+hK3V0EdUG1CGJZ5Sw4BWgl8ZS0BA==",
"license": "MIT",
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "~0.59.0",
- "@typespec/http": "~0.59.1"
+ "@typespec/compiler": "~0.60.0",
+ "@typespec/http": "~0.60.0"
}
},
"node_modules/@typespec/versioning": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.59.0.tgz",
- "integrity": "sha512-aihO/ux0lLmsuYAdGVkiBflSudcZokYG42SELk1FtMFo609G3Pd7ep7hau6unBnMIceQZejB0ow5UGRupK4X5A==",
+ "version": "0.60.1",
+ "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.60.1.tgz",
+ "integrity": "sha512-HogYL7P9uOPoSvkLLDjF22S6E9td6EY3c6TcIHhCzDTAQoi54csikD0gNrtcCkFG0UeQk29HgQymV397j+vp4g==",
"license": "MIT",
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "~0.59.0"
+ "@typespec/compiler": "~0.60.0"
}
},
"node_modules/ajv": {
@@ -514,9 +514,9 @@
"license": "MIT"
},
"node_modules/escalade": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
- "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"license": "MIT",
"engines": {
"node": ">=6"
@@ -637,9 +637,9 @@
}
},
"node_modules/ignore": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
- "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"license": "MIT",
"engines": {
"node": ">= 4"
@@ -761,6 +761,7 @@
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
"dependencies": {
"braces": "^3.0.3",
"picomatch": "^2.3.1"
@@ -1059,9 +1060,9 @@
}
},
"node_modules/vscode-languageserver-textdocument": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz",
- "integrity": "sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==",
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz",
+ "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==",
"license": "MIT"
},
"node_modules/vscode-languageserver-types": {
diff --git a/typespec/package.json b/typespec/package.json
index a7b3d7ee4..d424d67dc 100644
--- a/typespec/package.json
+++ b/typespec/package.json
@@ -1,14 +1,14 @@
{
"name": "julep-typespec",
- "version": "0.3.0",
+ "version": "0.4.0",
"type": "module",
"dependencies": {
- "@typespec/compiler": "^0.59.1",
- "@typespec/http": "^0.59.1",
- "@typespec/openapi": "^0.59.0",
- "@typespec/openapi3": "^0.59.1",
- "@typespec/rest": "^0.59.1",
- "@typespec/versioning": "^0.59.0"
+ "@typespec/compiler": "^0.60.1",
+ "@typespec/http": "^0.60.0",
+ "@typespec/openapi": "^0.60.0",
+ "@typespec/openapi3": "^0.60.0",
+ "@typespec/rest": "^0.60.0",
+ "@typespec/versioning": "^0.60.1"
},
"private": true
}
diff --git a/typespec/sessions/models.tsp b/typespec/sessions/models.tsp
index aecec4ba1..dfbb6ea41 100644
--- a/typespec/sessions/models.tsp
+++ b/typespec/sessions/models.tsp
@@ -62,6 +62,15 @@ model Session {
/** Action to start on context window overflow */
context_overflow: ContextOverflowType | null = null;
+ /** Whether to forward the tool results to the model when available.
+ * "true" => always forward
+ * "false" => never forward
+ * null => forward if applicable (default)
+ *
+ * If a tool call is made, the tool's output will be sent back to the model as the model's input.
+ * If a tool call is not made, the model's output will be returned as is. */
+ forward_tool_results: boolean | null = null;
+
...HasId;
...HasMetadata;
...HasTimestamps;
diff --git a/typespec/tasks/models.tsp b/typespec/tasks/models.tsp
index 4ec23f31b..b8b115861 100644
--- a/typespec/tasks/models.tsp
+++ b/typespec/tasks/models.tsp
@@ -30,6 +30,24 @@ model TaskTool extends CreateToolRequest {
inherited?: boolean = false;
}
+/** Reference to a tool by id */
+model ToolRefById {
+ @visibility("read", "create")
+ id?: uuid;
+}
+
+/** Reference to a tool by name */
+model ToolRefByName {
+ @visibility("read", "create")
+ name?: validPythonIdentifier;
+}
+
+/** Reference to a tool */
+model ToolRef {
+ @visibility("read", "create")
+ ref: ToolRefById | ToolRefByName;
+}
+
/** Object describing a Task */
model Task {
@visibility("read", "create")
diff --git a/typespec/tasks/steps.tsp b/typespec/tasks/steps.tsp
index d9be46577..2267ae320 100644
--- a/typespec/tasks/steps.tsp
+++ b/typespec/tasks/steps.tsp
@@ -4,6 +4,7 @@ import "../chat";
import "../common";
import "../docs";
import "../entries";
+import "../tools";
import "./step_kind.tsp";
@@ -13,6 +14,7 @@ using Chat;
using Common;
using Docs;
using Entries;
+using Tools;
namespace Tasks;
@@ -47,7 +49,8 @@ alias MappableWorkflowStep =
| SetStep
| LogStep
| EmbedStep
- | SearchStep;
+ | SearchStep
+ | YieldStep;
alias NonConditionalWorkflowStep =
| MappableWorkflowStep
@@ -76,7 +79,7 @@ model ToolCallStep extends BaseWorkflowStep<"tool_call"> {
model ToolCallStepDef {
/** The tool to run */
- tool: toolRef;
+ tool: validPythonIdentifier;
/** The input parameters for the tool (defaults to last step output) */
arguments: ExpressionObject | "_" = "_";
@@ -93,8 +96,26 @@ model PromptStepDef {
/** The prompt to run */
prompt: JinjaTemplate | InputChatMLMessage[];
+ /** The tools to use for the prompt */
+ tools: "all" | (ToolRef | CreateToolRequest)[] = #[];
+
+ /** The tool choice for the prompt */
+ tool_choice?: ToolChoiceOption;
+
/** Settings for the prompt */
settings?: ChatSettings;
+
+ /** Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content` */
+ unwrap?: boolean = false;
+
+ /** Whether to forward the tool results to the model when available.
+ * "true" => always forward
+ * "false" => never forward
+ * null => forward if applicable (default)
+ *
+ * If a tool call is made, the tool's output will be used as the model's input.
+ * If a tool call is not made, the model's output will be used as the next step's input. */
+ forward_tool_results: boolean | null = null;
}
model EvaluateStep extends BaseWorkflowStep<"evaluate"> {
diff --git a/typespec/tools/models.tsp b/typespec/tools/models.tsp
index bab70b643..8a8cead44 100644
--- a/typespec/tools/models.tsp
+++ b/typespec/tools/models.tsp
@@ -35,26 +35,53 @@ model FunctionDef {
name?: null = null;
/** Description of the function */
- description?: identifierSafeUnicode;
+ description?: string;
/** The parameters the function accepts */
parameters?: FunctionParameters;
}
+/** Integration definition */
+model IntegrationDef {
+ /** The provider of the integration */
+ provider: integrationProvider | string;
+
+ /** The specific method of the integration to call */
+ method?: string;
+
+ /** Optional description of the integration */
+ description?: string;
+
+ /** The setup parameters the integration accepts */
+ setup?: FunctionParameters;
+
+ /** The arguments to pre-apply to the integration call */
+ arguments?: FunctionParameters;
+}
+
+/** System definition */
+model SystemDef {
+ /** The name of the system call */
+ call: string;
+
+ /** Optional description of the system call */
+ description?: string;
+
+ /** The arguments to pre-apply to the system call */
+ arguments?: FunctionParameters;
+}
+
// TODO: We should use this model for all tools, not just functions and discriminate on the type
model Tool {
- /** Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now) */
- type: ToolType = ToolType.function;
-
/** Name of the tool (must be unique for this agent and a valid python identifier string )*/
name: validPythonIdentifier;
/** The function to call */
- function: FunctionDef;
- integration?: unknown;
- system?: unknown;
- api_call?: unknown;
+ function?: FunctionDef;
+ integration?: IntegrationDef;
+ system?: SystemDef;
+ api_call?: never; // TODO: Implement
...HasTimestamps;
...HasId;
@@ -65,22 +92,11 @@ model FunctionCallOption {
name: string;
}
-@discriminator("type")
model NamedToolChoice {
- /** Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now) */
- type: ToolType;
-
function?: FunctionCallOption;
- integration?: unknown;
- system?: unknown;
- api_call?: unknown;
-}
-
-model NamedFunctionChoice extends NamedToolChoice {
- type: ToolType.function;
-
- /** The function to call */
- function: FunctionCallOption;
+ integration?: never; // TODO: Implement
+ system?: never; // TODO: Implement
+ api_call?: never; // TODO: Implement
}
model ToolResponse {
@@ -112,9 +128,9 @@ model ChosenToolCall {
type: ToolType;
function?: FunctionCallOption;
- integration?: unknown;
- system?: unknown;
- api_call?: unknown;
+ integration?: never; // TODO: Implement
+ system?: never; // TODO: Implement
+ api_call?: never; // TODO: Implement
...HasId;
}
diff --git a/v0.3_README-CN.md b/v0.3_README-CN.md
deleted file mode 100644
index 2c88ad382..000000000
--- a/v0.3_README-CN.md
+++ /dev/null
@@ -1,230 +0,0 @@
-[English](/) | 中文翻译
-
-
-
----
-## Why Julep?
-We've built a lot of AI apps and understand how difficult it is to evaluate hundreds of tools, techniques, and models, and then make them work well together.
-
-**The Problems**
-1. The barrier to making LLM apps with memory, knowledge & tools is too high.
-2. Agentic behaviour is hard to control when done through multi-agent frameworks.
-
----
-## Features
-- **Statefulness By Design**: Manages conversation history by default. Use simple flags; `remember` & `recall` to tune whether to save or retrieve conversation history.
-- **Support for Users & Agents**: Allows creating different user <-> agent interactions like `One Agent <-> Many Users`; `Many Agents <-> One User` etc. [Read more,](https://docs.julep.ai/concepts/).
-- **Built-in RAG**: Add, delete & update documents to give the LLM context about the user or an agent depending on your use case. [Read more here.](https://docs.julep.ai/guides/build-a-retrieval-augmented-generation-rag-agent)
-- **90+ tools built-in**: Connect your AI app to 90+ third-party applications using [Composio](https://docs.composio.dev/framework/julep/) natively. `toolset.handle_tool_calls(julep_client, session.id, response)` will call and handle your tools for you! [See example](https://docs.julep.ai/guides/use-julep-with-composio)
-- **Local-first**: Julep comes ready to be deployed to production using Docker Compose. Support for k8s coming soon!
-- **Switch LLMs on the fly**: Update the Agent to switch between LLMs from OpenAI, Anthropic or Ollama. All the while preserving state.
-- ***Assign Tasks to Agents**: Define agentic workflows to be executed asynchronously with one ore more without worrying about timeouts or multiplying hallucinations. [Work in progress](https://github.com/julep-ai/julep/discussions/387)
-
-> (*) Coming soon!
-
----
-## Guides
-You can view the different features of Julep in action in the [guide docs](https://docs.julep.ai/guides/).
-1. [Simple Conversational Bot](https://deepnote.com/app/julep-ai-761c/Julep-Mixers-4dfff09a-84f2-4278-baa3-d1a00b88ba26)
-2. [Search Agent](https://docs.julep.ai/guides/)
-3. [RAG Agent](https://docs.julep.ai/guides/build-a-retrieval-augmented-generation-rag-agent)
-5. [GitHub Agent with Composio](https://docs.julep.ai/guides/use-julep-with-composio)
-5. [GPT 4o for Vision](https://docs.julep.ai/guides/image-+-text-with-gpt-4o)
----
-
-## Quickstart
-### Option 1: Use the Julep Cloud
-Our hosted platform is in Beta!
-
-To get access:
-- Head over to https://platform.julep.ai
-- Generate and add your `JULEP_API_KEY` in `.env`
-
-### Option 2: Install and run Julep locally
-Head over to docs on [self-hosting](https://docs.julep.ai/guides/self-hosting) to see how to run Julep locally!
-### Installation
-
-```
-pip install julep
-```
-### Setting up the `client`
-
-```py
-from julep import Client
-from pprint import pprint
-import textwrap
-import os
-
-base_url = os.environ.get("JULEP_API_URL")
-api_key = os.environ.get("JULEP_API_KEY")
-
-client = Client(api_key=api_key, base_url=base_url)
-```
-
-### Create an agent
-Agent is the object to which LLM settings like model, temperature along with tools are scoped to.
-```py
-agent = client.agents.create(
- name="Jessica"
- model="gpt-4",
- tools=[] # Tools defined here
-)
-```
-
-### Create a user
-User is the object which represents the user of the application.
-
-Memories are formed and saved for each user and many users can talk to one agent.
-```py
-user = client.users.create(
- name="Anon",
- about="Average nerdy techbro/girl spending 8 hours a day on a laptop,
-)
-```
-
-### Create a session
-A "user" and an "agent" communicate in a "session". System prompt goes here.
-Conversation history and summary are stored in a "session" which saves the conversation history.
-
-The session paradigm allows for; many users to interact with one agent and allow separation of conversation history and memories.
-
-```py
-situation_prompt = """You are Jessica. You're a stuck up Cali teenager.
-You basically complain about everything. You live in Bel-Air, Los Angeles and drag yourself to Curtis High School when you must.
-"""
-session = client.sessions.create(
- user_id=user.id, agent_id=agent.id, situation=situation_prompt
-)
-```
-
-### Start a stateful conversation
-`session.chat` controls the communication between the "agent" and the "user".
-
-It has two important arguments;
-- `recall`: Retrieves the previous conversations and memories.
-- `remember`: Saves the current conversation turn into the memory store.
-
-To keep the session stateful, both need to be `True`
-
-```py
-user_msg = "hey. what do u think of starbucks"
-response = client.sessions.chat(
- session_id=session.id,
- messages=[
- {
- "role": "user",
- "content": user_msg,
- "name": "Anon",
- }
- ],
- recall=True,
- remember=True,
-)
-
-print("\n".join(textwrap.wrap(response.response[0][0].content, width=100)))
-```
----
-
-## API and SDKs
-To use the API directly or to take a look at request & response formats, authentication, available endpoints and more, please refer to the [API Documentation](https://docs.julep.ai/api-reference/agents-api/agents-api)
-
-You can also use the [Postman Collection](https://god.gw.postman.com/run-collection/33213061-a0a1e3a9-9681-44ae-a5c2-703912b32336?action=collection%2Ffork&source=rip_markdown&collection-url=entityId%3D33213061-a0a1e3a9-9681-44ae-a5c2-703912b32336%26entityType%3Dcollection%26workspaceId%3D183380b4-f2ac-44ef-b018-1f65dfc8256b) for reference.
-
-### Python SDK
-
-To install the Python SDK, run:
-
-```bash
-pip install julep
-```
-For more information on using the Python SDK, please refer to the [Python SDK documentation](https://docs.julep.ai/api-reference/python-sdk-docs).
-
-
-### TypeScript SDK
-To install the TypeScript SDK using `npm`, run:
-
-```bash
-npm install @julep/sdk
-```
-
-For more information on using the TypeScript SDK, please refer to the [TypeScript SDK documentation](https://docs.julep.ai/api-reference/js-sdk-docs).
-
----
-
-## Deployment
-Check out the [self-hosting guide](https://docs.julep.ai/agents/self-hosting) to host the platform yourself.
-
-If you want to deploy Julep to production, [let's hop on a call](https://cal.com/ishitaj/15min)!
-
-We'll help you customise the platform and help you get set up with:
-- Multi-tenancy
-- Reverse proxy along with authentication and authorisation
-- Self-hosted LLMs
-- & more
-
----
-## Contributing
-We welcome contributions from the community to help improve and expand the Julep AI platform. See [CONTRIBUTING.md](CONTRIBUTING.md)
-
----
-## License
-Julep AI is released under the Apache 2.0 License. By using, contributing to, or distributing the Julep AI platform, you agree to the terms and conditions of this license.
-
----
-## Contact and Support
-If you have any questions, need assistance, or want to get in touch with the Julep AI team, please use the following channels:
-
-- [Discord](https://discord.com/invite/JTSBGRZrzj): Join our community forum to discuss ideas, ask questions, and get help from other Julep AI users and the development team.
-- GitHub Issues: For technical issues, bug reports, and feature requests, please open an issue on the Julep AI GitHub repository.
-- Email Support: If you need direct assistance from our support team, send an email to hey@julep.ai, and we'll get back to you as soon as possible.
-- Follow for updates on [X](https://twitter.com/julep_ai) & [LinkedIn](https://www.linkedin.com/company/julep-ai/)
-- [Hop on a call](https://cal.com/ishitaj/15min): We wanna know what you're building and how we can tweak and tune Julep to help you build your next AI app.