Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 1.13.0 · 2026-07-25 16:16 UTC

griptape-ai / griptape

Modular Python framework for AI agents and workflows with chain-of-thought reasoning, tools, and memory.

PythonApache-2.0★ 2 564 зірки⑂ 253 форкиз січ. 2023 р.Переглянути на GitHub ↗

griptape-ai/griptape має індекс здоров’я 79 зі 100, що відповідає смузі «Добрий». Найвищий показник — Vitality (92/100), найнижчий — AI Readiness (67/100). Останнє оновлення було 4 дні тому. Більшість нещодавньої роботи виконують 2 учасники.

79
загалом / 100
Добрий

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє середнє; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 49 («Під ризиком»). Готовність до ШІ не входить до індексу.

79
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Власність

GriptapeОрганізація
188 підписників92 публічні репозиторіїз січ. 2023 р.

За цим репозиторієм стоїть організація — спільна, підзвітна опіка, здатна пережити будь-якого окремого мейнтейнера.

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікація
PyPIgriptape1.11.0-14710 днів тому

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

92Відмінний · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 4 дн. тому
22.8/36Ритм комітів — 33/52 тижнів із комітами
18/18Обсяг комітів — 126 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 28 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year126
human_commit_share0,49
days_since_last_push4
active_weeks_last_year33
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 100 релізів
36/36Свіжість релізів — останній реліз 10 дн. тому
27/27Ритм релізів — реліз кожні ~20,2 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count100
latest_release_tagv1.11.0
releases_from_tagsні
days_since_latest_release10
mean_days_between_releases20,2
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

80Добрий · 18% загального індексу
Як обчислюється оцінка
55.3/60Зірки — 2 564 зірок
20/25Форки — 253 форків
8/15Спостерігачі — 28 спостерігачів
Використані вхідні дані
forks253
stars2 564
watchers28
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (Apache-2.0)
18/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
6.3/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingтак
has_issue_templateні
has_code_of_conductні
has_pull_request_templateтак

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

76Добрий · 24% загального індексу
Як обчислюється оцінка
25.2/54Бас-фактор — на 2 контриб’ютор(ів) припадає половина всіх комітів
11.4/22.5Розподіл комітів — головний контриб’ютор — автор 49% комітів
13.5/13.5Широта контриб’юторів — 41 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 8 contributing companies or organizations
Використані вхідні дані
bus_factor2
contributors_sampled41
top_contributor_share0,492
Як обчислюється оцінка
41.2/46.8Вирішення issue — закрито 88% issue
31.3/38.3Прийняття PR — злито 1 310/1 601 вирішених PR
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Використані вхідні дані
merged_prs1 310
open_issues65
closed_issues479
issue_closed_ratio0,881
closed_unmerged_prs291
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
16.4/25Охоплення власника — 188 підписників у griptape-ai
20/25Послужний список — 92 публічних репозиторіїв, вік облікового запису ~3 р.
Використані вхідні дані
followers188
owner_typeOrganization
is_verified
owner_logingriptape-ai
public_repos92
account_age_days1 281

Супровід пакетів

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у pypi
35/35Свіжість публікацій — остання публікація 10 дн. тому
20/20Історія версій — 147 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesgriptape
ecosystemspypi
any_deprecatedні
min_days_since_publish10

Інженерна якість

Чи наявні базові інженерні практики та документація?

77Добрий · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 6 процес(ів) CI
24/24Наявні тести
0/16Конфігурація лінтера
0/9.6Pre-commit-хуки
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigні
has_linter_configні
has_precommit_configні

Документація

90Відмінний
Як обчислюється оцінка
30/30README
25/25Каталог документації
15/15Сайт документації / домашня сторінка — https://www.griptape.ai
10/10Опис репозиторію
10/10Теми — 8 тем
0/10Wiki
Використані вхідні дані
topicsgpt, llm, openai, ai, python, huggingface, anthropic, claude
has_wikiні
homepagehttps://www.griptape.ai
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

70Добрий · 16% загального індексу

Стан безпеки

62Помірний
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
6/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
7.5/7.5Code-Review — all changesets reviewed
2.5/2.5Contributors — project has 8 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Ліцензія — license file detected
7.5/7.5Maintained — 28 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — немає даних
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
4/5SAST — SAST tool is not run on all commits -- score normalized to 8
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 92 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate6,2
Виключено з оцінювання (немає даних або не застосовно): packaging, signed_releases. Залишкові ваги перенормовано.
Як обчислюється оцінка
35/35Прямі залежності без відомих сповіщень — жодна пряма залежність не має відомих сповіщень
25/25Непрямі залежності без відомих сповіщень — жодна непряма залежність не має відомих сповіщень
0/40Немає задавнених сповіщень — жодне сповіщення не має дати публікації
Використані вхідні дані
sourceosv
advisories0
affected_packages0
assessed_packages39
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Виключено з оцінювання (немає даних або не застосовно): Немає задавнених сповіщень. Залишкові ваги перенормовано. Звірено з runtime-замиканням залежностей pypi:griptape@1.11.0 — тим, що тягне за собою встановлення опублікованого пакета, — 39 пакетів. Досяжність не аналізується.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 0.0, тож він подається окремо і не впливає на загальний індекс здоров'я.

67Помірний · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — docs/griptape-framework/structures/agents.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 49 з 49 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share1
agent_instruction_filesdocs/griptape-framework/structures/agents.md
agent_instruction_max_bytes1 036
Як обчислюється оцінка
18/18Розгортання однією командою — Makefile
22/22Автоматизовані тести
0/11Конфігурація лінтера / форматера
0/11Статична перевірка типів
10/10Відтворюване середовище — Dockerfile, lockfile
10/10Підтверджена практика роботи з агентами — 26 з останніх 100 комітів створено агентом або з його зазначенням
8/8Автоматизоване супроводження — 48 з останніх 100 комітів — автоматичні оновлення залежностей
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfilesuv.lock
has_dockerfileтак
typed_languageні
bootstrap_filesMakefile
has_devcontainerні
has_linter_configні
typecheck_configs
agent_commit_share0,26
toolchain_manifests
dependency_bot_commit_share0,48
Як обчислюється оцінка
0/45Типізований код — Python без конфігурації перевірки типів
54.9/55Керовані розміри файлів — 2/1 230 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languagePython
largest_source_bytes1 400 087
source_files_sampled1 230
oversized_source_files2
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
0/20Сервер MCP
40/40Придатні до запуску приклади — recipes
Використані вхідні дані
example_dirsrecipes
has_mcp_signalні
api_schema_files

Ключові факти

2 564зірок GitHub
41контриб'юторів
126комітів за останні 12 місяців
4днів від останнього пушу
100релізів
2бас-фактор
65відкритих issue
PyPIпакетних екосистем

Попередження щодо збору даних

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

Докладніше

Історія зірок і форків 0 ★ / 253 ⇿
0Зірки
253Форки
100Релізи

Коли додано кожну зірку й форк — зібрано з GitHub і згруповано за днями. Кумулятивне зростання розміщено просто над денними додаваннями, з яких воно складається, тож їх видно одне проти одного: рівномірне органічне накопичення виглядає зовсім інакше, ніж різкий короткочасний сплеск. Там, де цю різницю можна виміряти, її подано як автентичність росту.

050100150200250300252102023-012024-102026-07
Мажорні 1Мінорні 28Патчі 71

Кожна точка охоплює 4 днів.

OpenSSF Scorecard 6.2 / 10
6.2сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).Scorecard v5.5.0 · 2026-07-25 16:16 UTC

10Binary-Artifactsno binaries found in the repo
8Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
10Code-Reviewall changesets reviewed
10Contributorsproject has 8 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained28 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10
н/дPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
8SASTSAST tool is not run on all commits -- score normalized to 8
0Security-Policysecurity policy file not detected
н/дSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities92 existing vulnerabilities detected
Прямі залежності 18
РеєстрПакетОбмеження версіїМаніфест
PyPIopenai>=1.1.1pyproject.toml
PyPIattrs>=24.3.0pyproject.toml
PyPIjinja2>=3.1.4pyproject.toml
PyPImarshmallow>=3.21.3,<4pyproject.toml
PyPImarshmallow-enum>=1.5.1pyproject.toml
PyPItiktoken>=0.12pyproject.toml
PyPIrich>=13.7.1pyproject.toml
PyPIschema>=0.7.7pyproject.toml
PyPIpyyaml>=6.0.1pyproject.toml
PyPItenacity>=8.5.0pyproject.toml
PyPInumpy>=1.26.4,<3pyproject.toml
PyPIrequests>=2.32.0pyproject.toml
PyPIfiletype>=1.2pyproject.toml
PyPIurllib3>=1.25.4,!=2.2.0,<3pyproject.toml
PyPIpydantic>=2.7.4pyproject.toml
PyPIwrapt>=1.16.0pyproject.toml
PyPIpip>=25.0.1pyproject.toml
PyPIjson-schema-to-pydantic>=0.4.6pyproject.toml
Усі залежності 288

Повний розв'язаний набір залежностей із графа залежностей GitHub: 18 прямих і 270 непрямих (транзитивних) пакетів. Транзитивне замикання є повним, коли в репозиторії закомічено lockfile.

РеєстрПакетВерсіяЗв'язок
PyPIattrs26.1.0пряма
PyPIfiletype1.2.0пряма
PyPIjinja23.1.6пряма
PyPIjson-schema-to-pydantic0.4.6пряма
PyPImarshmallow3.26.2пряма
PyPImarshmallow-enum1.5.1пряма
PyPInumpy2.2.3пряма
PyPIopenai1.79.0пряма
PyPIpip26.1пряма
PyPIpydantic2.11.4пряма
PyPIpyyaml6.0.2пряма
PyPIrequests2.33.1пряма
PyPIrich14.0.0пряма
PyPIschema0.7.7пряма
PyPItenacity9.1.2пряма
PyPItiktoken0.12.0пряма
PyPIurllib32.7.0пряма
PyPIwrapt1.17.2пряма
PyPIaiohappyeyeballs2.6.1непряма
PyPIaiohttp3.13.4непряма
PyPIaiolimiter1.2.1непряма
PyPIaiosignal1.4.0непряма
PyPIannotated-types0.7.0непряма
PyPIanthropic0.51.0непряма
PyPIanyio4.8.0непряма
PyPIasn1crypto1.5.1непряма
PyPIastrapy2.0.1непряма
PyPIasync-timeout5.0.1непряма
PyPIbabel2.17.0непряма
PyPIbackports-tarfile1.2.0непряма
PyPIbackrefs5.8непряма
PyPIbeautifulsoup44.13.4непряма
PyPIboto3непряма
PyPIboto31.38.18непряма
PyPIboto3-stubs1.37.12непряма
PyPIbotocore1.38.18непряма
PyPIbotocore-stubs1.37.11непряма
PyPIbrotli1.2.0непряма
PyPIbrotlicffi1.2.0.1непряма
PyPIcertifi2025.1.31непряма
PyPIcffi2.0.0непряма
PyPIcfgv3.4.0непряма
PyPIcharset-normalizer3.4.1непряма
PyPIclick8.1.8непряма
PyPIcohere5.15.0непряма
PyPIcolorama0.4.6непряма
PyPIcourlan1.3.2непряма
PyPIcoverage7.13.5непряма
PyPIcryptography46.0.7непряма
PyPIcuda-bindings13.2.0непряма
PyPIcuda-pathfinder1.5.2непряма
PyPIcuda-toolkit13.0.2непряма
PyPIdateparserнепряма
PyPIdateparser1.2.1непряма
PyPIddgs9.14.4непряма
PyPIdeprecated1.2.18непряма
PyPIdeprecation2.1.0непряма
PyPIdiffusers0.33.1непряма
PyPIdistlib0.3.9непряма
PyPIdistro1.9.0непряма
PyPIdnspython2.7.0непряма
PyPIdockerнепряма
PyPIdocker7.1.0непряма
PyPIdocutils0.21.2непряма
PyPIelevenlabs1.59.0непряма
PyPIevents0.5непряма
PyPIexa-py1.13.1непряма
PyPIexceptiongroupнепряма
PyPIexceptiongroup1.2.2непряма
PyPIexecnet2.1.1непряма
PyPIfake-useragent2.2.0непряма
PyPIfastavro1.10.0непряма
PyPIfilelock3.25.2непряма
PyPIfrozenlist1.5.0непряма
PyPIfsspec2025.3.0непряма
PyPIfuzzywuzzy0.18.0непряма
PyPIghp-import2.1.0непряма
PyPIgoogle-auth2.49.2непряма
PyPIgoogle-genai1.73.1непряма
PyPIgoogleapis-common-protos1.69.1непряма
PyPIgreenlet3.1.1непряма
PyPIgriffe1.6.0непряма
PyPIgriptape1.11.0непряма
PyPIgrpcio1.71.0непряма
PyPIh110.16.0непряма
PyPIh24.3.0непряма
PyPIhpack4.1.0непряма
PyPIhtmldate1.9.4непряма
PyPIhttpcore1.0.9непряма
PyPIhttpx0.28.1непряма
PyPIhttpx-sse0.4.0непряма
PyPIhuggingface-hub0.31.4непряма
PyPIhyperframe6.1.0непряма
PyPIid1.5.0непряма
PyPIidentify2.6.9непряма
PyPIidna3.10непряма
PyPIimportlib-metadata8.6.1непряма
PyPIiniconfig2.0.0непряма
PyPIipaddress1.0.23непряма
PyPIjaraco-classes3.4.0непряма
PyPIjaraco-context6.0.1непряма
PyPIjaraco-functools4.1.0непряма
PyPIjeepney0.9.0непряма
PyPIjiter0.9.0непряма
PyPIjmespath1.0.1непряма
PyPIjustext3.0.2непряма
PyPIkeyring25.6.0непряма
PyPIlxml6.1.0непряма
PyPIlxml-html-clean0.4.4непряма
PyPImail-parser4.1.2непряма
PyPImarkdown3.8.1непряма
PyPImarkdown-it-py3.0.0непряма
PyPImarkdownify1.1.0непряма
PyPImarkupsafe3.0.2непряма
PyPImarqo3.13.0непряма
PyPImcpнепряма
PyPImdformat1.0.0непряма
PyPImdformat-footnote0.1.3непряма
PyPImdformat-frontmatter2.1.2непряма
PyPImdformat-gfm1.0.0непряма
PyPImdformat-mkdocs5.1.4непряма
PyPImdit-py-plugins0.4.2непряма
PyPImdurl0.1.2непряма
PyPImergedeep1.3.4непряма
PyPImkdocs1.6.1непряма
PyPImkdocs-autorefs1.4.4непряма
PyPImkdocs-gen-files0.6.1непряма
PyPImkdocs-get-deps0.2.0непряма
PyPImkdocs-glightbox0.5.2непряма
PyPImkdocs-literate-nav0.6.3непряма
PyPImkdocs-material9.7.6непряма
PyPImkdocs-material-extensions1.3.1непряма
PyPImkdocs-section-index0.3.12непряма
PyPImkdocstrings0.29.0непряма
PyPImkdocstrings-python1.16.5непряма
PyPImongomock4.3.0непряма
PyPImore-itertools10.6.0непряма
PyPImoto5.1.1непряма
PyPImpmath1.3.0непряма
PyPImultidict6.1.0непряма
PyPImypy-boto3-bedrock-agent-runtime1.37.22непряма
PyPImypy-boto3-bedrock-runtime1.37.30непряма
PyPImypy-boto3-dynamodb1.37.12непряма
PyPImypy-boto3-iam1.37.0непряма
PyPImypy-boto3-iot-data1.37.0непряма
PyPImypy-boto3-opensearch1.37.0непряма
PyPImypy-boto3-redshift-data1.37.8непряма
PyPImypy-boto3-s31.37.0непряма
PyPImypy-boto3-sagemaker-runtime1.37.0непряма
PyPImypy-boto3-sqs1.37.0непряма
PyPIndg-httpsclient0.5.1непряма
PyPInetworkx3.4.2непряма
PyPInh30.2.21непряма
PyPInodeenv1.9.1непряма
PyPInumexprнепряма
PyPInvidia-cublas13.1.0.3непряма
PyPInvidia-cuda-cupti13.0.85непряма
PyPInvidia-cuda-nvrtc13.0.88непряма
PyPInvidia-cuda-runtime13.0.96непряма
PyPInvidia-cudnn-cu139.20.0.48непряма
PyPInvidia-cufft12.0.0.61непряма
PyPInvidia-cufile1.15.1.6непряма
PyPInvidia-curand10.4.0.35непряма
PyPInvidia-cusolver12.0.4.66непряма
PyPInvidia-cusparse12.6.3.3непряма
PyPInvidia-cusparselt-cu130.8.1непряма
PyPInvidia-nccl-cu132.29.7непряма
PyPInvidia-nvjitlink13.0.88непряма
PyPInvidia-nvshmem-cu133.4.5непряма
PyPInvidia-nvtx13.0.85непряма
PyPIollama0.4.8непряма
PyPIopensearch-py2.8.0непряма
PyPIopentelemetry-api1.33.1непряма
PyPIopentelemetry-exporter-otlp-proto-common1.33.1непряма
PyPIopentelemetry-exporter-otlp-proto-http1.33.1непряма
PyPIopentelemetry-instrumentation0.54b1непряма
PyPIopentelemetry-instrumentation-threading0.54b1непряма
PyPIopentelemetry-proto1.33.1непряма
PyPIopentelemetry-sdk1.33.1непряма
PyPIopentelemetry-semantic-conventions0.54b1непряма
PyPIpackaging24.2непряма
PyPIpaginate0.5.7непряма
PyPIpandasнепряма
PyPIpandas2.2.3непряма
PyPIpathspec0.12.1непряма
PyPIpgvector0.4.1непряма
PyPIpillow12.2.0непряма
PyPIpinecone6.0.1непряма
PyPIpinecone-plugin-interface0.0.7непряма
PyPIplatformdirs4.3.6непряма
PyPIplaywright1.52.0непряма
PyPIpluggy1.5.0непряма
PyPIportalocker2.10.1непряма
PyPIpprintpp0.4.0непряма
PyPIpre-commit4.6.0непряма
PyPIprimp1.3.1непряма
PyPIpropcache0.3.0непряма
PyPIproperdocs1.6.7непряма
PyPIprotobuf5.29.6непряма
PyPIpsycopg2-binary2.9.10непряма
PyPIpusher3.3.3непряма
PyPIpy-partiql-parser0.6.1непряма
PyPIpyasn10.6.3непряма
PyPIpyasn1-modules0.4.1непряма
PyPIpycparser2.22непряма
PyPIpydantic-core2.33.2непряма
PyPIpyee13.0.0непряма
PyPIpygments2.20.0непряма
PyPIpyjwt2.12.0непряма
PyPIpymdown-extensions10.21.3непряма
PyPIpymongo4.12.1непряма
PyPIpynacl1.6.2непряма
PyPIpyopenssl26.0.0непряма
PyPIpypdf6.10.2непряма
PyPIpyright1.1.410непряма
PyPIpytest9.0.3непряма
PyPIpytest-clarity1.0.1непряма
PyPIpytest-cov7.1.0непряма
PyPIpytest-env1.6.0непряма
PyPIpytest-mock3.15.1непряма
PyPIpytest-xdist3.8.0непряма
PyPIpython-dateutil2.9.0.post0непряма
PyPIpython-dotenv1.2.2непряма
PyPIpytz2025.1непряма
PyPIpywin32309непряма
PyPIpywin32-ctypes0.2.3непряма
PyPIpyyaml-env-tag0.1непряма
PyPIqdrant-client1.14.2непряма
PyPIreadme-renderer44.0непряма
PyPIredis6.2.0непряма
PyPIregex2024.11.6непряма
PyPIrequests-toolbelt1.0.0непряма
PyPIresponses0.25.7непряма
PyPIrfc39862.0.0непряма
PyPIruamel-yaml0.18.10непряма
PyPIruamel-yaml-clib0.2.12непряма
PyPIruff0.15.15непряма
PyPIs3transfer0.12.0непряма
PyPIsafetensors0.5.3непряма
PyPIsecretstorage3.3.3непряма
PyPIselectolax0.4.7непряма
PyPIsentinels1.0.0непряма
PyPIsetuptools78.1.1непряма
PyPIsix1.17.0непряма
PyPIsniffio1.3.1непряма
PyPIsnowflake1.5.0непряма
PyPIsnowflake-connector-python4.4.0непряма
PyPIsnowflake-core1.5.0непряма
PyPIsnowflake-legacy1.0.0непряма
PyPIsnowflake-sqlalchemy1.9.0непряма
PyPIsocksio1.0.0непряма
PyPIsortedcontainers2.4.0непряма
PyPIsoupsieve2.6непряма
PyPIsqlalchemy2.0.41непряма
PyPIstringcaseнепряма
PyPIsympy1.14.0непряма
PyPItavily-python0.7.2непряма
PyPItld0.13непряма
PyPItokenizers0.21.1непряма
PyPItoml0.10.2непряма
PyPItomli2.2.1непряма
PyPItomli2.4.1непряма
PyPItomlkit0.13.2непряма
PyPItorchнепряма
PyPItorch2.12.0непряма
PyPItqdm4.67.1непряма
PyPItrafilatura2.0.0непряма
PyPItransformers4.53.0непряма
PyPItriton3.7.0непряма
PyPItwine6.2.0непряма
PyPItypes-awscrt0.24.1непряма
PyPItypes-requests2.32.0.20250306непряма
PyPItypes-s3transfer0.11.4непряма
PyPItyping-extensions4.15.0непряма
PyPItyping-inspection0.4.0непряма
PyPItypos1.47.0непряма
PyPItzdata2025.1непряма
PyPItzlocal5.3.1непряма
PyPIuuid62024.7.10непряма
PyPIvirtualenv20.36.1непряма
PyPIvoyageai0.3.2непряма
PyPIwatchdog6.0.0непряма
PyPIwcwidth0.2.13непряма
PyPIwebsockets15.0.1непряма
PyPIwerkzeug3.1.6непряма
PyPIxmltodict0.14.2непряма
PyPIyarl1.18.3непряма
PyPIzipp3.21.0непряма
Сповіщення про залежності 0

Встановлення pypi:griptape@1.11.0 тягне 39 пакетів, прямих і транзитивних: 0 мають відомі сповіщення, з них 0 — прямі залежності.

Жодне відоме сповіщення не стосується оцінених залежностей.

Сповіщення означає, що версія, записана в графі залежностей, потрапляє в уражений діапазон. Досяжність не аналізується, а граф містить піниї розробки й тестування — знахідка може стосуватися інструментів, а не поставленого коду.

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [
        "gpt",
        "llm",
        "openai",
        "ai",
        "python",
        "huggingface",
        "anthropic",
        "claude"
      ],
      "is_fork": false,
      "size_kb": 22773,
      "has_wiki": false,
      "homepage": "https://www.griptape.ai",
      "languages": {
        "Jinja": 8692,
        "Python": 2034759,
        "Makefile": 2809,
        "Dockerfile": 141
      },
      "pushed_at": "2026-07-20T17:45:20Z",
      "created_at": "2023-01-14T18:02:16Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-23T15:38:16Z",
      "description": "Modular Python framework for AI agents and workflows with chain-of-thought reasoning, tools, and memory. ",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": "https://www.griptape.ai/",
      "name": "Griptape",
      "type": "Organization",
      "login": "griptape-ai",
      "company": null,
      "location": "United States of America",
      "followers": 188,
      "avatar_url": "https://avatars.githubusercontent.com/u/123192176?v=4",
      "created_at": "2023-01-20T16:33:22Z",
      "is_verified": null,
      "public_repos": 92,
      "account_age_days": 1281
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.11.0",
          "kind": "minor",
          "published_at": "2026-07-14T19:26:57Z"
        },
        {
          "tag": "v1.10.3",
          "kind": "patch",
          "published_at": "2026-06-16T15:55:36Z"
        },
        {
          "tag": "v1.10.2",
          "kind": "patch",
          "published_at": "2026-05-28T00:58:04Z"
        },
        {
          "tag": "v1.10.1",
          "kind": "patch",
          "published_at": "2026-05-07T19:28:39Z"
        },
        {
          "tag": "v1.10.0",
          "kind": "minor",
          "published_at": "2026-04-20T18:54:14Z"
        },
        {
          "tag": "v1.9.4",
          "kind": "patch",
          "published_at": "2026-03-13T15:38:58Z"
        },
        {
          "tag": "v1.9.3",
          "kind": "patch",
          "published_at": "2026-02-19T20:24:23Z"
        },
        {
          "tag": "v1.9.2",
          "kind": "patch",
          "published_at": "2026-02-18T17:52:10Z"
        },
        {
          "tag": "v1.9.1",
          "kind": "patch",
          "published_at": "2026-02-15T00:08:53Z"
        },
        {
          "tag": "v1.9.0",
          "kind": "minor",
          "published_at": "2026-01-13T21:22:41Z"
        },
        {
          "tag": "v1.8.13",
          "kind": "patch",
          "published_at": "2025-11-24T21:39:07Z"
        },
        {
          "tag": "v1.8.12",
          "kind": "patch",
          "published_at": "2025-10-29T23:43:23Z"
        },
        {
          "tag": "v1.8.11",
          "kind": "patch",
          "published_at": "2025-10-29T17:04:10Z"
        },
        {
          "tag": "v1.8.10",
          "kind": "patch",
          "published_at": "2025-10-28T23:06:47Z"
        },
        {
          "tag": "v1.8.9",
          "kind": "patch",
          "published_at": "2025-10-28T19:45:08Z"
        },
        {
          "tag": "v1.8.8",
          "kind": "patch",
          "published_at": "2025-10-10T00:35:08Z"
        },
        {
          "tag": "v1.8.7",
          "kind": "patch",
          "published_at": "2025-10-09T16:18:40Z"
        },
        {
          "tag": "v1.8.6",
          "kind": "patch",
          "published_at": "2025-10-08T19:01:21Z"
        },
        {
          "tag": "v1.8.5",
          "kind": "patch",
          "published_at": "2025-10-06T17:15:04Z"
        },
        {
          "tag": "v1.8.4",
          "kind": "patch",
          "published_at": "2025-09-30T16:35:32Z"
        },
        {
          "tag": "v1.8.3",
          "kind": "patch",
          "published_at": "2025-09-29T16:32:24Z"
        },
        {
          "tag": "v1.8.2",
          "kind": "patch",
          "published_at": "2025-08-27T21:57:48Z"
        },
        {
          "tag": "v1.8.1",
          "kind": "patch",
          "published_at": "2025-08-08T22:11:06Z"
        },
        {
          "tag": "v1.8.0",
          "kind": "minor",
          "published_at": "2025-07-25T20:56:06Z"
        },
        {
          "tag": "v1.7.5",
          "kind": "patch",
          "published_at": "2025-07-08T19:32:21Z"
        },
        {
          "tag": "v1.7.3",
          "kind": "patch",
          "published_at": "2025-06-05T19:31:27Z"
        },
        {
          "tag": "v1.7.2",
          "kind": "patch",
          "published_at": "2025-06-04T18:59:14Z"
        },
        {
          "tag": "v1.7.1",
          "kind": "patch",
          "published_at": "2025-05-09T16:16:38Z"
        },
        {
          "tag": "v1.7.0",
          "kind": "minor",
          "published_at": "2025-05-05T20:57:58Z"
        },
        {
          "tag": "v1.6.4",
          "kind": "patch",
          "published_at": "2025-04-22T18:48:08Z"
        },
        {
          "tag": "v1.6.3",
          "kind": "patch",
          "published_at": "2025-04-21T21:12:25Z"
        },
        {
          "tag": "v1.6.2",
          "kind": "patch",
          "published_at": "2025-04-17T19:11:29Z"
        },
        {
          "tag": "v1.6.1",
          "kind": "patch",
          "published_at": "2025-04-14T16:26:57Z"
        },
        {
          "tag": "v1.6.0",
          "kind": "minor",
          "published_at": "2025-04-08T20:10:49Z"
        },
        {
          "tag": "v1.5.2",
          "kind": "patch",
          "published_at": "2025-03-25T17:32:04Z"
        },
        {
          "tag": "v1.5.1",
          "kind": "patch",
          "published_at": "2025-03-24T22:18:36Z"
        },
        {
          "tag": "v1.5.0",
          "kind": "minor",
          "published_at": "2025-03-13T23:37:00Z"
        },
        {
          "tag": "v1.4.3",
          "kind": "patch",
          "published_at": "2025-03-04T23:28:53Z"
        },
        {
          "tag": "v1.4.2",
          "kind": "patch",
          "published_at": "2025-02-28T17:56:12Z"
        },
        {
          "tag": "v1.4.1",
          "kind": "patch",
          "published_at": "2025-02-27T17:51:52Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2025-02-24T21:49:23Z"
        },
        {
          "tag": "v1.3.5",
          "kind": "patch",
          "published_at": "2025-02-19T23:51:40Z"
        },
        {
          "tag": "v1.3.4",
          "kind": "patch",
          "published_at": "2025-02-13T23:33:25Z"
        },
        {
          "tag": "v1.3.3",
          "kind": "patch",
          "published_at": "2025-02-12T21:17:33Z"
        },
        {
          "tag": "v1.3.2",
          "kind": "patch",
          "published_at": "2025-02-11T22:50:03Z"
        },
        {
          "tag": "v1.3.1",
          "kind": "patch",
          "published_at": "2025-02-10T19:43:07Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2025-02-07T23:14:19Z"
        },
        {
          "tag": "v1.2.1",
          "kind": "patch",
          "published_at": "2025-01-30T18:08:18Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2025-01-21T20:38:03Z"
        },
        {
          "tag": "v1.1.4",
          "kind": "patch",
          "published_at": "2025-01-15T17:03:21Z"
        },
        {
          "tag": "v1.1.3",
          "kind": "patch",
          "published_at": "2025-01-12T19:43:30Z"
        },
        {
          "tag": "v1.1.2",
          "kind": "patch",
          "published_at": "2025-01-12T19:34:52Z"
        },
        {
          "tag": "v1.1.1",
          "kind": "patch",
          "published_at": "2025-01-03T17:37:16Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2024-12-31T17:56:05Z"
        },
        {
          "tag": "v1.0.2",
          "kind": "patch",
          "published_at": "2024-12-16T23:26:00Z"
        },
        {
          "tag": "v1.0.1",
          "kind": "patch",
          "published_at": "2024-12-11T23:36:48Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2024-12-10T18:24:57Z"
        },
        {
          "tag": "v0.34.3",
          "kind": "patch",
          "published_at": "2024-12-10T18:19:29Z"
        },
        {
          "tag": "v0.34.2",
          "kind": "patch",
          "published_at": "2024-12-10T18:19:43Z"
        },
        {
          "tag": "v0.34.1",
          "kind": "patch",
          "published_at": "2024-12-10T18:19:55Z"
        },
        {
          "tag": "v0.34.0",
          "kind": "minor",
          "published_at": "2024-12-10T18:20:06Z"
        },
        {
          "tag": "v0.33.1",
          "kind": "patch",
          "published_at": "2024-12-10T18:20:19Z"
        },
        {
          "tag": "v0.33.0",
          "kind": "minor",
          "published_at": "2024-12-10T18:20:31Z"
        },
        {
          "tag": "v0.32.0",
          "kind": "minor",
          "published_at": "2024-12-10T18:20:45Z"
        },
        {
          "tag": "v0.31.0",
          "kind": "minor",
          "published_at": "2024-12-10T18:20:58Z"
        },
        {
          "tag": "v0.30.2",
          "kind": "patch",
          "published_at": "2024-12-10T18:21:18Z"
        },
        {
          "tag": "v0.30.1",
          "kind": "patch",
          "published_at": "2024-12-10T18:21:30Z"
        },
        {
          "tag": "v0.30.0",
          "kind": "minor",
          "published_at": "2024-12-10T18:21:40Z"
        },
        {
          "tag": "v0.29.2",
          "kind": "patch",
          "published_at": "2024-12-10T18:21:51Z"
        },
        {
          "tag": "v0.29.1",
          "kind": "patch",
          "published_at": "2024-12-10T18:22:03Z"
        },
        {
          "tag": "v0.29.0",
          "kind": "minor",
          "published_at": "2024-12-10T18:25:46Z"
        },
        {
          "tag": "v0.28.2",
          "kind": "patch",
          "published_at": "2024-12-10T18:22:14Z"
        },
        {
          "tag": "v0.28.1",
          "kind": "patch",
          "published_at": "2024-12-10T18:22:24Z"
        },
        {
          "tag": "v0.28.0",
          "kind": "minor",
          "published_at": "2024-12-10T18:13:19Z"
        },
        {
          "tag": "v0.27.2",
          "kind": "patch",
          "published_at": "2024-12-10T18:13:32Z"
        },
        {
          "tag": "v0.27.0",
          "kind": "minor",
          "published_at": "2024-12-10T18:12:43Z"
        },
        {
          "tag": "v0.26.0",
          "kind": "minor",
          "published_at": "2024-06-04T22:03:02Z"
        },
        {
          "tag": "v0.25.1",
          "kind": "patch",
          "published_at": "2024-05-15T19:25:46Z"
        },
        {
          "tag": "v0.25.0",
          "kind": "minor",
          "published_at": "2024-05-06T19:17:49Z"
        },
        {
          "tag": "v0.24.1",
          "kind": "patch",
          "published_at": "2024-03-28T21:37:11Z"
        },
        {
          "tag": "v0.24.0",
          "kind": "minor",
          "published_at": "2024-03-27T20:39:14Z"
        },
        {
          "tag": "v0.23.2",
          "kind": "patch",
          "published_at": "2024-03-15T17:12:45Z"
        },
        {
          "tag": "v0.23.1",
          "kind": "patch",
          "published_at": "2024-03-08T00:10:21Z"
        },
        {
          "tag": "v0.23.0",
          "kind": "minor",
          "published_at": "2024-02-29T16:47:51Z"
        },
        {
          "tag": "v0.22.3",
          "kind": "patch",
          "published_at": "2024-01-22T22:45:49Z"
        },
        {
          "tag": "v0.22.2",
          "kind": "patch",
          "published_at": "2024-01-18T23:52:28Z"
        },
        {
          "tag": "v0.22.1",
          "kind": "patch",
          "published_at": "2024-01-12T22:43:33Z"
        },
        {
          "tag": "v0.22.0",
          "kind": "minor",
          "published_at": "2024-01-11T18:57:32Z"
        },
        {
          "tag": "v0.21.2",
          "kind": "patch",
          "published_at": "2023-12-21T19:40:02Z"
        },
        {
          "tag": "v0.21.1",
          "kind": "patch",
          "published_at": "2023-12-11T18:23:22Z"
        },
        {
          "tag": "v0.21.0",
          "kind": "minor",
          "published_at": "2023-12-11T16:05:55Z"
        },
        {
          "tag": "v0.20.0",
          "kind": "minor",
          "published_at": "2023-11-16T16:29:07Z"
        },
        {
          "tag": "v0.19.4",
          "kind": "patch",
          "published_at": "2023-11-07T16:52:19Z"
        },
        {
          "tag": "v0.19.3",
          "kind": "patch",
          "published_at": "2023-11-03T16:28:02Z"
        },
        {
          "tag": "v0.19.2",
          "kind": "patch",
          "published_at": "2023-11-02T22:12:04Z"
        },
        {
          "tag": "v0.19.1",
          "kind": "patch",
          "published_at": "2023-11-01T17:01:36Z"
        },
        {
          "tag": "v0.19.0",
          "kind": "minor",
          "published_at": "2023-11-01T16:50:30Z"
        },
        {
          "tag": "v0.18.2",
          "kind": "patch",
          "published_at": "2023-10-10T16:54:02Z"
        },
        {
          "tag": "v0.18.1",
          "kind": "patch",
          "published_at": "2023-10-06T20:28:35Z"
        },
        {
          "tag": "v0.18.0",
          "kind": "minor",
          "published_at": "2023-10-06T17:29:09Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "93fbd843afeff389bc21e728e593afaf6fcfd584",
          "body": "…l version (#2251)",
          "is_bot": false,
          "headline": "fix(drivers-prompt): detect deprecated Claude sampling params by mode…",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-07-17T16:35:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c73a7d25b099db6a04d156b7188f9c8cfe9bb9e",
          "body": "Bumps [attrs](https://github.com/python-attrs/attrs) from 25.3.0 to 26.1.0.\n- [Release notes](https://github.com/python-attrs/attrs/releases)\n- [Changelog](https://github.com/python-attrs/attrs/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/python-attrs/attrs/compare/25.3.0...26.1.0)\n\n---\nup\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump attrs from 25.3.0 to 26.1.0 (#2219)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-17T16:13:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7a38f350716ddccf13da722f36b9fab18e0b3479",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump v1.11.0 (#2249)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-07-14T19:11:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff8e1b8bf09b36006ac0bbbf284c449e552a07a6",
          "body": null,
          "is_bot": false,
          "headline": "fix(drivers-prompt-amazon-bedrock): omit unsupported temperature (#2248)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-07-14T18:53:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6bccc124348a7c04edc0e7502cf9c3b5cbb7f86b",
          "body": "* LocalVectorStoreDriver namespace match accuracy\n\n* lint\n\n* format",
          "is_bot": false,
          "headline": "LocalVectorStoreDriver namespace match accuracy (#2244)",
          "author_name": "CJ Kindel",
          "author_login": "cjkindel",
          "committed_at": "2026-07-13T19:58:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31de2ed8846142343715a0a6d4934f381e6d4f9d",
          "body": null,
          "is_bot": false,
          "headline": "docs: point Data Source requests to Discord instead of email (#2229)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-07-03T18:16:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ebf422be2b716eb7770343048aa2dff58b8f5cbe",
          "body": "* feat: add AmazonBedrockRerankDriver\n\n* fix: address bedrock rerank driver review feedback\n\n* fix: format bedrock rerank driver tests\n\n---------\n\nCo-authored-by: Mayank Das <mayank.das@milestone.tech>",
          "is_bot": false,
          "headline": "feat: add AmazonBedrockRerankDriver (#2208)",
          "author_name": "mayankdas2005",
          "author_login": "mayankdas2005",
          "committed_at": "2026-06-24T21:22:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7e178c6aa1fb1f6bcc408045a7308e9c66211cb3",
          "body": "* feat: add DateTimeMetaEntry to MetaMemory\n\nFixes #1748\n\nAdded DateTimeMetaEntry that automatically provides the current date and\ntime as context to agents via MetaMemory, following the existing\nBaseMetaEntry pattern.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n* test: add unit tests \n[…]\nration.\n\n* fix: remove dead 'or True' from test assertion\n\n* fix: replace flaky timestamp comparison with instance independence test\n\n---------\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add DateTimeMetaEntry to MetaMemory (#2190)",
          "author_name": "Mourn_Fall",
          "author_login": "Ottohere-Mourn",
          "committed_at": "2026-06-23T20:32:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4c97d478c9c984250969825172c608910c5165b7",
          "body": "…r (#2207)\n\nAmazonBedrockTokenizer.MODEL_PREFIXES_TO_MAX_INPUT_TOKENS / _OUTPUT_TOKENS\nstop at anthropic.claude-3-*, so Claude 4.x Bedrock model IDs\n(anthropic.claude-sonnet-4-*, anthropic.claude-opus-4-*, including the\nus./eu./apac./global. cross-region inference profile prefixes) match the\ngeneric\n[…]\n the generic anthropic.claude fallback.\nSubstring matching means the cross-region inference profile IDs are covered\nautomatically.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(tokenizers): add Claude 4.x token limits to AmazonBedrockTokenize…",
          "author_name": "Lucas Kim",
          "author_login": "kimnamu",
          "committed_at": "2026-06-22T20:08:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "75ac3cb77afed34060b678d576a392f2e2457baf",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v6...v7)\n\n---\nupdated-dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump actions/checkout from 6 to 7 (#2210)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-22T17:56:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fd03641ec5aaa14c68d5acfb343184d0d9be60d4",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump v1.10.3 (#2204)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-06-16T19:50:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa608903525d856617b2f6baa6de5011657ada3b",
          "body": "…ation (#2189)\n\n* docs: clarify SummaryConversationMemory interaction with Chat/Conversation\n\nFixes #1217\n\nAdded documentation explaining that Chat and Conversation utilities display\nthe full history, while SummaryConversationMemory maintains a separate\nsummarized internal representation.\n\n* docs: f\n[…]\nd)\n\n* fix: add blank line before closing docstring per ruff D209\n\n* fix: match griptape docstring convention — no blank before closing quotes\n\n* fix: condense docstring summary to single line per D205",
          "is_bot": false,
          "headline": "docs: clarify SummaryConversationMemory interaction with Chat/Convers…",
          "author_name": "Mourn_Fall",
          "author_login": "Ottohere-Mourn",
          "committed_at": "2026-06-15T19:54:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b61f11e4fa8a8b2b72bfa26bacfae739b9dc6da1",
          "body": "… ddgs (#2201)\n\nThe `duckduckgo_search` package was renamed to `ddgs`; the old name is now\nan empty stub that emits a deprecation warning and returns no results, so\n`DuckDuckGoWebSearchDriver.search()` silently yielded zero results.\n\nPoint the import and the `drivers-web-search-duckduckgo` extra (an\n[…]\n Updated the test mock targets and docs accordingly.\n\nCloses #2198\n\nCo-authored-by: griptapeops[bot] <griptapeops[bot]@users.noreply.github.com>\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": true,
          "headline": "fix(drivers-web-search-duckduckgo): migrate from duckduckgo_search to…",
          "author_name": "griptapeops[bot]",
          "author_login": "griptapeops[bot]",
          "committed_at": "2026-06-15T17:12:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "45890b9c49bbb404c42e289babbee22074713aad",
          "body": "…m (#2200)\n\nThe Exa API removed support for the `use_autoprompt` request parameter\nand now returns `Invalid option: 'use_autoprompt'`, making\nExaWebSearchDriver non-functional. Drop the parameter from the\nsearch_and_contents call. The `use_autoprompt` field is retained for\nbackwards compatibility but now emits a DeprecationWarning when set and\nis no longer forwarded to the API.\n\nCloses #2199\n\nCo-authored-by: griptapeops[bot] <griptapeops[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(drivers-web-search-exa): stop sending removed use_autoprompt para…",
          "author_name": "griptapeops[bot]",
          "author_login": "griptapeops[bot]",
          "committed_at": "2026-06-15T17:12:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ec9b0edf356614be91d5898ceeef1cb1176f7b0",
          "body": "Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 6 to 7.\n- [Release notes](https://github.com/codecov/codecov-action/releases)\n- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codecov/codecov-action/compare/v\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump codecov/codecov-action from 6 to 7 (#2192)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-08T17:39:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6a9b3ebca6f266b52087634dc98c9a62af964137",
          "body": "… 4 updates (#2191)\n\nBumps the development-dependencies group with 4 updates in the / directory: [ruff](https://github.com/astral-sh/ruff), [pyright](https://github.com/RobertCraigie/pyright-python), [typos](https://github.com/crate-ci/typos) and [mdformat-frontmatter](https://github.com/butler54/md\n[…]\ne:semver-minor\n  dependency-group: development-dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump the development-dependencies group across 1 directory with…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-03T18:04:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d9cadb0fb1bfb81b8ac2f5d22c8a39a91e91f042",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump v1.10.2 (#2188)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-05-28T01:04:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "724fd6ab54864e3f948c0b36be4740f5c1ae6769",
          "body": null,
          "is_bot": false,
          "headline": "fix(anthropic): accept ImageUrlArtifact in tool results (#2187)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-05-28T00:48:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf651c7525eb28f3094b9668e0fac816de97a729",
          "body": "Bumps the development-dependencies group with 4 updates: [torch](https://github.com/pytorch/pytorch), [ruff](https://github.com/astral-sh/ruff), [typos](https://github.com/crate-ci/typos) and [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions).\n\n\nUpdates `torch` from 2.11.0 to 2\n[…]\ne:semver-patch\n  dependency-group: development-dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump the development-dependencies group with 4 updates (#2180)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-19T16:57:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d1d72b1eee5d194e1d28b6159c08c21ba4abd63e",
          "body": "… 4 updates (#2162)\n\n* deps: bump the development-dependencies group across 1 directory with 4 updates\n\nBumps the development-dependencies group with 4 updates in the / directory: [ruff](https://github.com/astral-sh/ruff), [pyright](https://github.com/RobertCraigie/pyright-python), [pre-commit](http\n[…]\ny: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: griptapeops[bot] <griptapeops[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump the development-dependencies group across 1 directory with…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-12T23:03:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e8cb4687892a782ea1fe8d54b2e600c8303d908f",
          "body": "Bumps [lxml](https://github.com/lxml/lxml) from 5.3.1 to 6.1.0.\n- [Release notes](https://github.com/lxml/lxml/releases)\n- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)\n- [Commits](https://github.com/lxml/lxml/compare/lxml-5.3.1...lxml-6.1.0)\n\n---\nupdated-dependencies:\n- dependen\n[…]\nxml\n  dependency-version: 6.1.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump lxml from 5.3.1 to 6.1.0 (#2175)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-12T20:33:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d0af13e9f4a3b93fe1bf14d722f3d21e90068ac0",
          "body": "Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.5.0 to 2.7.0.\n- [Release notes](https://github.com/urllib3/urllib3/releases)\n- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)\n- [Commits](https://github.com/urllib3/urllib3/compare/2.5.0...2.7.0)\n\n---\nupdated-dependenc\n[…]\nendency-version: 2.7.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump urllib3 from 2.5.0 to 2.7.0 (#2174)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-12T20:33:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7190a4bec1dd44757c61efe265a81e110202d5af",
          "body": "Bumps [pip](https://github.com/pypa/pip) from 26.0 to 26.1.\n- [Changelog](https://github.com/pypa/pip/blob/main/NEWS.rst)\n- [Commits](https://github.com/pypa/pip/compare/26.0...26.1)\n\n---\nupdated-dependencies:\n- dependency-name: pip\n  dependency-version: '26.1'\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump pip from 26.0 to 26.1 (#2176)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-12T20:33:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6beb3925382c9a44f5cf614ea9a153db02fb458d",
          "body": "tiktoken 0.11 ships no cp314 wheel, so installing griptape[all] on\nPython 3.14 falls back to an sdist build that requires Rust. tiktoken\n0.12 adds cp314_win_amd64 wheels.\n\nCo-authored-by: griptapeops[bot] <griptapeops[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump tiktoken floor to 0.12 (#2172)",
          "author_name": "griptapeops[bot]",
          "author_login": "griptapeops[bot]",
          "committed_at": "2026-05-11T23:19:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f195ab21c1d4e6d592cc5001991b376451932a6",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump v1.10.1 (#2168)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-05-07T19:36:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "897e5f52162c4b9cb2149486922e24f481f19a81",
          "body": "…-7 (#2163)\n\n* fix: omit sampling params for models that deprecate them (claude-opus-4-7)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\n\n* refactor(anthropic): gate sampling params via supports_* properties\n\nMirrors the OpenAI driver convention by exposing supports_temperature, supports\n[…]\nuality check. Uses startswith(\"claude-opus-4-7\") so dated variants are covered.\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>\nCo-authored-by: Collin Dutter <collin@griptape.ai>",
          "is_bot": false,
          "headline": "fix(drivers-prompt-anthropic): omit sampling params for claude-opus-4…",
          "author_name": "Ian Massingham",
          "author_login": null,
          "committed_at": "2026-05-06T20:00:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "98f2d8a4b0582c45e7bcede1231af69da02e20ce",
          "body": "- Mock trafilatura.fetch_url in tests/unit/tools/test_web_scraper.py so the\n  unit test no longer makes a real HTTP request to github.com, mirroring the\n  pattern already used in tests/unit/loaders/test_web_loader.py.\n- Register image/webp in griptape/utils/file_utils.py so mimetypes.guess_type\n  resolves .webp consistently on platforms (notably Windows) where it is not\n  registered by default.",
          "is_bot": false,
          "headline": "fix(tests): stop hitting network and register .webp mime type (#2166)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-05-06T19:45:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b2af96c6cc262c382bb154667642204e3a066e5b",
          "body": "* feat(drivers-prompt-google): migrate GooglePromptDriver to google-genai SDK\n\nRewrites GooglePromptDriver against the new unified `google-genai` SDK (`from\ngoogle import genai`). The client is now `genai.Client(api_key=...)`, calls go\nthrough `client.models.generate_content` and `generate_content_s\n[…]\niver's client.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: cjkindel <cjkindel@users.noreply.github.com>\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(google): migrate all Google drivers to google-genai SDK (#2155)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-30T16:21:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c14d41e86af63a9f74aa4a616195e36856758d04",
          "body": "Bumps the development-dependencies group with 2 updates: [ruff](https://github.com/astral-sh/ruff) and [mkdocs-section-index](https://github.com/oprypin/mkdocs-section-index).\n\n\nUpdates `ruff` from 0.15.10 to 0.15.11\n- [Release notes](https://github.com/astral-sh/ruff/releases)\n- [Changelog](https:/\n[…]\ne:semver-patch\n  dependency-group: development-dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump the development-dependencies group with 2 updates (#2159)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-21T20:35:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c176edd22d61b3d940a2c33e3d5efaf9a2dc5e61",
          "body": "* fix: pass GH_RELEASE_PAT via token input in release workflow\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n* feat: allow manual dispatch of stable release workflow\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n* feat: allow manual dispatch of publish workflow\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: pass GH_RELEASE_PAT via token input in release workflow (#2158)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-20T19:55:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b1205238604272eac24e3c65a58daf600516fdf7",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump v1.10.0 (#2157)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-20T19:00:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d01156b530272b7ef0a0c6bcd24385feb123362",
          "body": "Bumps [pypdf](https://github.com/py-pdf/pypdf) from 6.10.0 to 6.10.2.\n- [Release notes](https://github.com/py-pdf/pypdf/releases)\n- [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/py-pdf/pypdf/compare/6.10.0...6.10.2)\n\n---\nupdated-dependencies:\n- de\n[…]\nndency-version: 6.10.2\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump pypdf from 6.10.0 to 6.10.2 (#2156)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-17T22:49:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "867e3efc38c512a7eccc8570de7e9594bc048d4f",
          "body": "* fix(tasks): remove `values` envelope from LLM-facing tool schema\n\nThe `@activity` decorator unpacks `params[\"values\"]` into kwargs, so the\ntool schema wrapped the activity schema in `{\"values\": ...}`. LLMs\noccasionally re-wrapped their arguments to match, producing double-wrapped\ninputs like `{\"va\n[…]\nOpus 4.7 <noreply@anthropic.com>\n\n* style: apply ruff lint and format fixes\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(tasks): remove `values` envelope from LLM-facing tool schema (#2154)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-17T19:17:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "24ecf85982c3b445ff5ae8482caec77a07e3cc09",
          "body": "…153)\n\nMCP servers commonly expose tools with hyphens (e.g. `get-sum` on\n`@modelcontextprotocol/server-everything`), which fail Griptape's\nactivity-name regex when a prompt driver serializes the tool schema.\nReplace any non `[a-zA-Z0-9_]` character with `_` when registering the\nactivity, while preserving the original name for the MCP call itself.",
          "is_bot": false,
          "headline": "fix(tools-mcp): sanitize MCP tool names into valid activity names (#2…",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-16T20:13:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70000dd9cc316e2581635ffc7b982f50ac3d9dc3",
          "body": "…$id` (#2151)\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(drivers-prompt-openai): pass valid URI-reference as tool schema `…",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-16T19:05:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7b2dc4d7e124aef6308e9fbf79db8c567269a294",
          "body": "Bumps [pypdf](https://github.com/py-pdf/pypdf) from 6.9.2 to 6.10.0.\n- [Release notes](https://github.com/py-pdf/pypdf/releases)\n- [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/py-pdf/pypdf/compare/6.9.2...6.10.0)\n\n---\nupdated-dependencies:\n- depe\n[…]\nndency-version: 6.10.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump pypdf from 6.9.2 to 6.10.0 (#2145)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-13T20:17:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2eaf4645c767973d31495691dc724230d58571c6",
          "body": "Bumps [cryptography](https://github.com/pyca/cryptography) from 46.0.6 to 46.0.7.\n- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pyca/cryptography/compare/46.0.6...46.0.7)\n\n---\nupdated-dependencies:\n- dependency-name: cryptography\n  dependency-version: 46.0.7\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump cryptography from 46.0.6 to 46.0.7 (#2146)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-13T20:17:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04ef28302a98ff4e33909d4586ea22acf1f1a400",
          "body": "Bumps [pillow](https://github.com/python-pillow/Pillow) from 12.1.1 to 12.2.0.\n- [Release notes](https://github.com/python-pillow/Pillow/releases)\n- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)\n- [Commits](https://github.com/python-pillow/Pillow/compare/12.1.1...12.2.0)\n[…]\nndency-version: 12.2.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump pillow from 12.1.1 to 12.2.0 (#2144)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-13T20:02:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9123322969bc65cf39af28185e0a92f7c72cd806",
          "body": "…ests (re-opened) (#2140)\n\nsecurity: harden CommandRunner against shell injection and add unit tests",
          "is_bot": false,
          "headline": "security: harden CommandRunner against shell injection and add unit t…",
          "author_name": "Rin",
          "author_login": "RinZ27",
          "committed_at": "2026-04-13T19:27:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5645f09e2b9bf0e0cac4cd428c0137f38d69fcff",
          "body": "Bumps the development-dependencies group with 3 updates: [pytest](https://github.com/pytest-dev/pytest), [ruff](https://github.com/astral-sh/ruff) and [typos](https://github.com/crate-ci/typos).\n\n\nUpdates `pytest` from 9.0.2 to 9.0.3\n- [Release notes](https://github.com/pytest-dev/pytest/releases)\n-\n[…]\ne:semver-patch\n  dependency-group: development-dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump the development-dependencies group with 3 updates (#2142)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-13T19:24:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a67816c6f5a9afab60336b75534a7403b9e834d7",
          "body": "Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2 to 3.\n- [Release notes](https://github.com/softprops/action-gh-release/releases)\n- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/softprops/\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump softprops/action-gh-release from 2 to 3 (#2141)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-13T19:20:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8090cfc8b6c41c81f024eebc9f5b88bf86a3e034",
          "body": "… 22 updates (#2138)\n\n* deps: bump the development-dependencies group across 1 directory with 22 updates\n\nBumps the development-dependencies group with 19 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |\n|\n[…]\nthub.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Collin Dutter <collin@griptape.ai>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": true,
          "headline": "deps: bump the development-dependencies group across 1 directory with…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-07T16:04:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "65ce09a9b6e52ea40fc5d0af2b3a2484fcdf8d6e",
          "body": "Bumps [pillow](https://github.com/python-pillow/Pillow) from 11.3.0 to 12.1.1.\n- [Release notes](https://github.com/python-pillow/Pillow/releases)\n- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)\n- [Commits](https://github.com/python-pillow/Pillow/compare/11.3.0...12.1.1)\n[…]\nndency-version: 12.1.1\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump pillow from 11.3.0 to 12.1.1 (#2134)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-06T23:34:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8792147559261d46824a73eee8189054a4b68986",
          "body": "---\nupdated-dependencies:\n- dependency-name: aiohttp\n  dependency-version: 3.13.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump aiohttp from 3.11.13 to 3.13.4 (#2135)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-06T23:33:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f231230129d62cfc29eb0d7e703e55bd620019c5",
          "body": "…(#2133)\n\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: pin pymdown-extensions>=10.17 for pygments 2.20.0 compatibility …",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-06T23:23:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4b3e2fe35683bf0b0a33d1ffdf147b733ef997b7",
          "body": "* chore: drop Python 3.9, set minimum to Python 3.10\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>\n\n* ci: update workflows from Python 3.9 to 3.10\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>\n\n* fix: handle types.UnionType in schema union detection\n\nCo-Authored-By: Claude Opus\n[…]\nh invocation now creates\nits own copy of the captured context under a lock.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: drop Python 3.9 support, set minimum to Python 3.10 (#2129)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-06T23:17:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bd4f1c53c89424dc13a803db042eb48ce185f57f",
          "body": "Bumps [redis](https://github.com/redis/redis-py) from 5.2.1 to 6.2.0.\n- [Release notes](https://github.com/redis/redis-py/releases)\n- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)\n- [Commits](https://github.com/redis/redis-py/compare/v5.2.1...v6.2.0)\n\n---\nupdated-dependencies:\n-\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump redis from 5.2.1 to 6.2.0 (#1978)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T20:59:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "76605ba8442251818d1cec99125d61e7112238ce",
          "body": "Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "deps: bump requests from 2.32.4 to 2.33.1 (#2127)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-03T19:44:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ae04f31f2d763997fa0fa172018b65bec5dfc5c8",
          "body": "---\nupdated-dependencies:\n- dependency-name: aiohttp\n  dependency-version: 3.13.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump aiohttp from 3.11.13 to 3.13.4 (#2101)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T18:11:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7d8bc4f6d9fcac8f40d051e4a0f9ad9951898bb",
          "body": "Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "deps: bump urllib3 from 2.5.0 to 2.6.3 (#2126)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-03T18:08:59Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3c23388c686195255ad820fe059489aca1d7fa60",
          "body": "Bumps [pip](https://github.com/pypa/pip) from 25.1.1 to 26.0.\n- [Changelog](https://github.com/pypa/pip/blob/main/NEWS.rst)\n- [Commits](https://github.com/pypa/pip/compare/25.1.1...26.0)\n\n---\nupdated-dependencies:\n- dependency-name: pip\n  dependency-version: '26.0'\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump pip from 25.1.1 to 26.0 (#2122)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:42:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02804488b4e3d16d1a3c2724b7ee75dd5f3e49fa",
          "body": "Bumps [pygments](https://github.com/pygments/pygments) from 2.19.1 to 2.20.0.\n- [Release notes](https://github.com/pygments/pygments/releases)\n- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)\n- [Commits](https://github.com/pygments/pygments/compare/2.19.1...2.20.0)\n\n---\nupdate\n[…]\nts\n  dependency-version: 2.20.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump pygments from 2.19.1 to 2.20.0 (#2124)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:40:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "94dc852619ce563c48aa0c16651c71bcff0886ca",
          "body": "Bumps [pynacl](https://github.com/pyca/pynacl) from 1.5.0 to 1.6.2.\n- [Changelog](https://github.com/pyca/pynacl/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pyca/pynacl/compare/1.5.0...1.6.2)\n\n---\nupdated-dependencies:\n- dependency-name: pynacl\n  dependency-version: 1.6.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump pynacl from 1.5.0 to 1.6.2 (#2107)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:40:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "42b4bdfc595c285bf9721b07fa118b499202ca47",
          "body": "Bumps [werkzeug](https://github.com/pallets/werkzeug) from 3.1.3 to 3.1.6.\n- [Release notes](https://github.com/pallets/werkzeug/releases)\n- [Changelog](https://github.com/pallets/werkzeug/blob/main/CHANGES.rst)\n- [Commits](https://github.com/pallets/werkzeug/compare/3.1.3...3.1.6)\n\n---\nupdated-depe\n[…]\neug\n  dependency-version: 3.1.6\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump werkzeug from 3.1.3 to 3.1.6 (#2121)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:39:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "39586ec9a586ca7cc9894b5b7037e6f33ddcdfd8",
          "body": "Bumps [marshmallow](https://github.com/marshmallow-code/marshmallow) from 3.26.1 to 3.26.2.\n- [Changelog](https://github.com/marshmallow-code/marshmallow/blob/dev/CHANGELOG.rst)\n- [Commits](https://github.com/marshmallow-code/marshmallow/compare/3.26.1...3.26.2)\n\n---\nupdated-dependencies:\n- dependen\n[…]\nndency-version: 3.26.2\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump marshmallow from 3.26.1 to 3.26.2 (#2123)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:39:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ec749b982c702f7901b1062fb836447661fdb8b0",
          "body": "…missions (#2113)\n\nCo-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: resolve code scanning alert no. 8: Workflow does not contain per…",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-03T17:28:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "413a4ce0e2cb2c8b41ee439938a02ea496ebefbc",
          "body": "…missions (#2117)\n\nCo-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: resolve code scanning alert no. 4: Workflow does not contain per…",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-03T17:14:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ea3079aeaddf025a84216ec54b9ae82fa302a487",
          "body": "…missions (#2116)\n\nCo-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: resolve code scanning alert no. 5: Workflow does not contain per…",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-03T17:12:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4f4e1711e330d2d41222778d11d8f62728fa13b9",
          "body": "…missions (#2119)\n\nCo-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: resolve code scanning alert no. 2: Workflow does not contain per…",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-03T17:11:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9fc8ea72f5be35f76b5f974141f3a49f6747d0f1",
          "body": "…missions (#2120)\n\nCo-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: resolve code scanning alert no. 1: Workflow does not contain per…",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-03T17:11:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7a944f7ef257697934e2ceab222809a8a1e9b261",
          "body": "…missions (#2118)\n\nCo-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: resolve code scanning alert no. 3: Workflow does not contain per…",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-03T17:10:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6a5ea7d32fa693c12a9c5df23527397efeaf8a59",
          "body": "…missions (#2115)\n\nCo-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: resolve code scanning alert no. 6: Workflow does not contain per…",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-03T17:09:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fe203d059bcdbc9e8bf2be141f7d6c116aaf7809",
          "body": "…missions (#2114)\n\nCo-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: resolve code scanning alert no. 7: Workflow does not contain per…",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-03T17:08:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "929d5eeabb9fde4f5a8ad6150e57553325cc54f6",
          "body": "…missions (#2112)\n\nCo-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: resolve code scanning alert no. 9: Workflow does not contain per…",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-03T17:08:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "78eae4ad539f61234e35d8ad7a049a5d18a3db90",
          "body": "…rmissions (#2111)\n\nCo-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: resolve code scanning alert no. 10: Workflow does not contain pe…",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-04-03T17:08:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "492498683d0c217ce22cfe484e018d64a23440ba",
          "body": "Bumps [virtualenv](https://github.com/pypa/virtualenv) from 20.29.3 to 20.36.1.\n- [Release notes](https://github.com/pypa/virtualenv/releases)\n- [Changelog](https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/pypa/virtualenv/compare/20.29.3...20.36.1)\n\n---\n[…]\nv\n  dependency-version: 20.36.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump virtualenv from 20.29.3 to 20.36.1 (#2109)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:01:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "594453ae514017cca39394e7fb9128ae98f1332f",
          "body": "Bumps [torch](https://github.com/pytorch/pytorch) from 2.6.0 to 2.8.0.\n- [Release notes](https://github.com/pytorch/pytorch/releases)\n- [Changelog](https://github.com/pytorch/pytorch/blob/main/RELEASE.md)\n- [Commits](https://github.com/pytorch/pytorch/compare/v2.6.0...v2.8.0)\n\n---\nupdated-dependenci\n[…]\nndency-version: 2.8.0\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump torch from 2.6.0 to 2.8.0 (#2108)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:01:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "41267bfe653a796438761a942dd20a5dab135d8c",
          "body": "Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.14.3 to 10.16.1.\n- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)\n- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.14.3...10.16.1)\n\n---\nupdated-dependencies:\n\n[…]\nency-version: 10.16.1\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump pymdown-extensions from 10.14.3 to 10.16.1 (#2110)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:01:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8d06c1bce151b3dc5f67f949e6bd528c361de2c5",
          "body": "Bumps [pyjwt](https://github.com/jpadilla/pyjwt) from 2.10.1 to 2.12.0.\n- [Release notes](https://github.com/jpadilla/pyjwt/releases)\n- [Changelog](https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst)\n- [Commits](https://github.com/jpadilla/pyjwt/compare/2.10.1...2.12.0)\n\n---\nupdated-depende\n[…]\nwt\n  dependency-version: 2.12.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump pyjwt from 2.10.1 to 2.12.0 (#2097)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:01:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4c35269dd9e6d6d9bbd8203e47653ef3e1bb3f69",
          "body": "Bumps [setuptools](https://github.com/pypa/setuptools) from 76.0.0 to 78.1.1.\n- [Release notes](https://github.com/pypa/setuptools/releases)\n- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)\n- [Commits](https://github.com/pypa/setuptools/compare/v76.0.0...v78.1.1)\n\n---\nupdated-dep\n[…]\nls\n  dependency-version: 78.1.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump setuptools from 76.0.0 to 78.1.1 (#2098)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:00:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "af4f3b8ae388f0a550ed3dd02572a16b27f3f8c4",
          "body": "Bumps [lxml-html-clean](https://github.com/fedora-python/lxml_html_clean) from 0.4.1 to 0.4.4.\n- [Changelog](https://github.com/fedora-python/lxml_html_clean/blob/main/CHANGES.rst)\n- [Commits](https://github.com/fedora-python/lxml_html_clean/compare/0.4.1...0.4.4)\n\n---\nupdated-dependencies:\n- depend\n[…]\nean\n  dependency-version: 0.4.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump lxml-html-clean from 0.4.1 to 0.4.4 (#2104)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:00:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c909f09ebe33c9933a962186ec87781ca1155500",
          "body": "Bumps [transformers](https://github.com/huggingface/transformers) from 4.51.3 to 4.53.0.\n- [Release notes](https://github.com/huggingface/transformers/releases)\n- [Commits](https://github.com/huggingface/transformers/compare/v4.51.3...v4.53.0)\n\n---\nupdated-dependencies:\n- dependency-name: transforme\n[…]\nndency-version: 4.53.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump transformers from 4.51.3 to 4.53.0 (#2106)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:00:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5bcd4d527c50d61b701204fa356a5e7934bc0b0e",
          "body": "Bumps [h2](https://github.com/python-hyper/h2) from 4.2.0 to 4.3.0.\n- [Changelog](https://github.com/python-hyper/h2/blob/master/CHANGELOG.rst)\n- [Commits](https://github.com/python-hyper/h2/compare/v4.2.0...v4.3.0)\n\n---\nupdated-dependencies:\n- dependency-name: h2\n  dependency-version: 4.3.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump h2 from 4.2.0 to 4.3.0 (#2102)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:00:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01b62b40850481f98319040f1a057c84c9a647f0",
          "body": "Bumps [pyopenssl](https://github.com/pyca/pyopenssl) from 25.0.0 to 26.0.0.\n- [Changelog](https://github.com/pyca/pyopenssl/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pyca/pyopenssl/compare/25.0.0...26.0.0)\n\n---\nupdated-dependencies:\n- dependency-name: pyopenssl\n  dependency-version: 26.0.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump pyopenssl from 25.0.0 to 26.0.0 (#2099)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:00:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a4123b5c34f817ad5b7ece8c85ed39fcd37c915d",
          "body": "Bumps [cryptography](https://github.com/pyca/cryptography) from 44.0.2 to 46.0.6.\n- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pyca/cryptography/compare/44.0.2...46.0.6)\n\n---\nupdated-dependencies:\n- dependency-name: cryptography\n  dependency-version: 46.0.6\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump cryptography from 44.0.2 to 46.0.6 (#2095)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:00:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "249131069d2f83b93b0f9855536cc0c8cb28aa6f",
          "body": "Bumps [pillow](https://github.com/python-pillow/Pillow) from 11.2.1 to 11.3.0.\n- [Release notes](https://github.com/python-pillow/Pillow/releases)\n- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)\n- [Commits](https://github.com/python-pillow/Pillow/compare/11.2.1...11.3.0)\n[…]\nndency-version: 11.3.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump pillow from 11.2.1 to 11.3.0 (#2094)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:00:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "63bd9d9df668ce2f3ad7f52817116afd311d19d1",
          "body": "Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.7 to 3.8.1.\n- [Release notes](https://github.com/Python-Markdown/markdown/releases)\n- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)\n- [Commits](https://github.com/Python-Markdown/markdown/co\n[…]\nown\n  dependency-version: 3.8.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump markdown from 3.7 to 3.8.1 (#2105)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:00:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0f273b220800c944abaedc5f03b992a1ad4d515c",
          "body": "Bumps [pypdf](https://github.com/py-pdf/pypdf) from 5.5.0 to 6.9.2.\n- [Release notes](https://github.com/py-pdf/pypdf/releases)\n- [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/py-pdf/pypdf/compare/5.5.0...6.9.2)\n\n---\nupdated-dependencies:\n- depend\n[…]\nendency-version: 6.9.2\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump pypdf from 5.5.0 to 6.9.2 (#2103)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:00:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a6b2b26b724e9658e0afa939cd5201e49a298edb",
          "body": "Bumps [pyasn1](https://github.com/pyasn1/pyasn1) from 0.6.2 to 0.6.3.\n- [Release notes](https://github.com/pyasn1/pyasn1/releases)\n- [Changelog](https://github.com/pyasn1/pyasn1/blob/main/CHANGES.rst)\n- [Commits](https://github.com/pyasn1/pyasn1/compare/v0.6.2...v0.6.3)\n\n---\nupdated-dependencies:\n- \n[…]\nsn1\n  dependency-version: 0.6.3\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump pyasn1 from 0.6.2 to 0.6.3 (#2100)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T17:00:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "90952e47340ebb7e79f1f5c8b84ce4ab56296fa1",
          "body": "Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 5.29.3 to 5.29.6.\n- [Release notes](https://github.com/protocolbuffers/protobuf/releases)\n- [Commits](https://github.com/protocolbuffers/protobuf/commits)\n\n---\nupdated-dependencies:\n- dependency-name: protobuf\n  dependency-version: 5.29.6\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump protobuf from 5.29.3 to 5.29.6 (#2096)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-03T16:59:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8871b613fbc05a7450ac518ca671b200753bb0f0",
          "body": "Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5 to 6.\n- [Release notes](https://github.com/codecov/codecov-action/releases)\n- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codecov/codecov-action/compare/v\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump codecov/codecov-action from 5 to 6 (#2090)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-31T16:01:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6570a828372ce5ea1517ad15cd87ea7786053635",
          "body": "PythonRunner provides no sandbox isolation — Python's exec() injects\n__builtins__ into any globals dict, including an empty one. Adds a\nDeprecationWarning on run() and a docstring making this explicit.\n\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "deprecation(utils): deprecate PythonRunner with security warning (#2086)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-03-27T21:45:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d1ea55965f3b36b3a658754d6304bcd0f43de344",
          "body": "Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.20 to 2.5.0.\n- [Release notes](https://github.com/urllib3/urllib3/releases)\n- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)\n- [Commits](https://github.com/urllib3/urllib3/compare/1.26.20...2.5.0)\n\n---\nupdated-depen\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump urllib3 from 1.26.20 to 2.5.0 (#1980)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-26T15:33:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5e3f718d315459cbe01c099029b342baff3e3459",
          "body": "* fix: make API key error message service-agnostic\n\nRemove hardcoded https://cloud.griptape.ai/keys URL and Griptape Cloud\nbranding from the GT_CLOUD_API_KEY validation error message.\n\nEnterprise customers may use different service URLs, so the error message\nshould not direct users to a specific end\n[…]\n------\n\nSigned-off-by: giulio-leone <giulio97.leone@gmail.com>\nCo-authored-by: giulio-leone <giulio.leone@users.noreply.github.com>\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: make API key error message service-agnostic (#2078)",
          "author_name": "Giulio Leone",
          "author_login": "giulio-leone",
          "committed_at": "2026-03-23T16:59:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d1a66ee3e79fa7553d94f3e14703d168fe71bd5d",
          "body": "* Update README to link to Griptape Nodes\n\n* Windows venv tab for UV install",
          "is_bot": false,
          "headline": "Window venv activation documentation (#2080)",
          "author_name": "CJ Kindel",
          "author_login": "cjkindel",
          "committed_at": "2026-03-16T17:12:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a104738c1711d421f79fd3e1810dfe005be04a5e",
          "body": "* feat: add Claude 4.x model support to AnthropicTokenizer\n\nAdd token limits for Claude 4.x models (200K input, 16K output) to properly support the latest Claude 4.6 Opus, Claude 4.6 Sonnet, and Claude 4.5 Haiku models.\n\nCo-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>\n\n* fix: use -4- prefi\n[…]\n, claude-haiku-4) for more precise matching and better maintainability.\n\nCo-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add Claude 4.x model support to AnthropicTokenizer (#2077)",
          "author_name": "Ian Massingham",
          "author_login": null,
          "committed_at": "2026-03-13T15:30:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b5c345b0e39d1792afde5c84276983698b39fb26",
          "body": "…073)\n\nThe `validate_output_schema` validator in `PromptTask` was using\n`self.output_schema` (the current/old value) in the error message\ninstead of the `output_schema` parameter (the new value being\nvalidated). This caused the error message to report the wrong type\nwhen validation failed on reassig\n[…]\nor would say `NoneType` instead of `str`.\n\nFixes #2038\n\nSigned-off-by: Giulio Leone <6887247+giulio-leone@users.noreply.github.com>\nCo-authored-by: giulio-leone <giulio.leone@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: use parameter value in output_schema validator error message (#2…",
          "author_name": "Giulio Leone",
          "author_login": "giulio-leone",
          "committed_at": "2026-03-09T17:38:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4e744a824a28e503b3df0df5372733f0fc2eb498",
          "body": "… API conflict (#2070)\n\n* fix(drivers-prompt-anthropic): make top_p and top_k optional to avoid API conflict\n\nNewer Anthropic models (Claude 4.6+) reject requests that specify both\n`temperature` and `top_p`. Change `top_p` and `top_k` to Optional fields\ndefaulting to None, and only include them in t\n[…]\nerature is now omitted from the Anthropic\nAPI request to avoid the mutual exclusivity conflict on newer models.\nThis ensures callers who prefer top_p-based sampling don't hit a 400.\n\nMade-with: Cursor",
          "is_bot": false,
          "headline": "fix(drivers-prompt-anthropic): make top_p and top_k optional to avoid…",
          "author_name": "Ian Massingham",
          "author_login": null,
          "committed_at": "2026-03-03T15:06:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c3b8f01f40dbdaae30269121678ed28f902d401e",
          "body": "* Migrate GTC Image driver supported models\n\n* format",
          "is_bot": false,
          "headline": "Migrate GTC Image driver supported models (#2067)",
          "author_name": "CJ Kindel",
          "author_login": "cjkindel",
          "committed_at": "2026-02-19T20:09:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b22600024b376f24da062fea1cc1e52c91eea994",
          "body": null,
          "is_bot": false,
          "headline": "chore: update logo (#2068)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-02-18T16:50:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3e231bf9ea07b2eb7bfb62c47bcaf38d9b552174",
          "body": "… avoid client-side input truncation (#2066)",
          "is_bot": false,
          "headline": "fix(drivers-prompt-griptape-cloud): set very high max_input_tokens to…",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-02-14T23:56:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "073ad9e18131029eb918a261b99143a024f24614",
          "body": "Bumps [h11](https://github.com/python-hyper/h11) from 0.14.0 to 0.16.0.\n- [Commits](https://github.com/python-hyper/h11/compare/v0.14.0...v0.16.0)\n\n---\nupdated-dependencies:\n- dependency-name: h11\n  dependency-version: 0.16.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump h11 from 0.14.0 to 0.16.0 (#2059)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-21T15:57:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d0453dd64fe3f392d7058220395c8b4893e6cb5e",
          "body": "Bumps [requests](https://github.com/psf/requests) from 2.32.3 to 2.32.4.\n- [Release notes](https://github.com/psf/requests/releases)\n- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)\n- [Commits](https://github.com/psf/requests/compare/v2.32.3...v2.32.4)\n\n---\nupdated-dependencies:\n-\n[…]\nndency-version: 2.32.4\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump requests from 2.32.3 to 2.32.4 (#2061)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-21T12:34:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e2262acec655b2b4e83f95a151473917d8a33fd4",
          "body": "Bumps [pyasn1](https://github.com/pyasn1/pyasn1) from 0.6.1 to 0.6.2.\n- [Release notes](https://github.com/pyasn1/pyasn1/releases)\n- [Changelog](https://github.com/pyasn1/pyasn1/blob/main/CHANGES.rst)\n- [Commits](https://github.com/pyasn1/pyasn1/compare/v0.6.1...v0.6.2)\n\n---\nupdated-dependencies:\n- \n[…]\nsn1\n  dependency-version: 0.6.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps: bump pyasn1 from 0.6.1 to 0.6.2 (#2058)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-21T12:09:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "72808903ce35ed846cb578fe08d0765fb79d17b7",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump v1.9.0 (#2057)",
          "author_name": "Collin Dutter",
          "author_login": "collindutter",
          "committed_at": "2026-01-13T21:29:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67caea5437df3d9f9a89ede05295768a9407d884",
          "body": "* updated some of the lazy imports\n\n* one last numpy import\n\n* openai imports resolved\n\n* formatting\n\n* removed lazy loading for jinja and pydantic\n\n* update back to use import optional dependencies\n\n* rerun unit tests\n\n* fix tests\n\n* fix tests by updating references\n\n* move openai to localns dict\n\n* lint and pyright\n\n* prevent openai import\n\n* some changes",
          "is_bot": false,
          "headline": "Lazy Large 3rd party imports (#2056)",
          "author_name": "Kate Forsberg",
          "author_login": "kateforsberg13",
          "committed_at": "2026-01-12T19:06:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c71e9b9a3e7e00448231df8253ce08453c057964",
          "body": "* Prioritize Nodes documentation in header\n\n* Add Nodes blurb to index",
          "is_bot": false,
          "headline": "Docs/nodes priority (#2053)",
          "author_name": "CJ Kindel",
          "author_login": "cjkindel",
          "committed_at": "2026-01-05T18:56:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f322539a0ca94457619af620ff1ca725454a278a",
          "body": "* Add mcptool to tools/init\n\n* specify line_spans\n\n* Add Prism.js css for Firefox\n\n* Update __init__.py",
          "is_bot": false,
          "headline": "Fix/firefox doc syntax (#2049)",
          "author_name": "CJ Kindel",
          "author_login": "cjkindel",
          "committed_at": "2026-01-05T16:22:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38e589c4359a925cb760b61a7b71b6d50821094c",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v5...v6)\n\n---\nupdated-dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "build(deps): bump actions/checkout from 5 to 6 (#2040)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-12-15T19:05:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5367f81c3b78a1c5defff1a241216a7240b695a3",
          "body": "Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7 to 8.\n- [Release notes](https://github.com/peter-evans/create-pull-request/releases)\n- [Commits](https://github.com/peter-evans/create-pull-request/compare/v7...v8)\n\n---\nupdated-dependencies:\n- depende\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "build(deps): bump peter-evans/create-pull-request from 7 to 8 (#2044)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-12-15T19:05:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 126,
      "latest_release_at": "2026-07-14T19:26:57Z",
      "latest_release_tag": "v1.11.0",
      "releases_from_tags": false,
      "days_since_last_push": 4,
      "active_weeks_last_year": 33,
      "days_since_latest_release": 10,
      "mean_days_between_releases": 20.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 62,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "griptape",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/griptape/",
          "is_deprecated": false,
          "latest_version": "1.11.0",
          "repository_url": "https://github.com/griptape-ai/griptape",
          "versions_count": 147,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2023-04-19T00:03:36.353700Z",
          "latest_published_at": "2026-07-14T19:27:40.421697Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 10
        }
      ]
    },
    "popularity": {
      "forks": 253,
      "stars": 2564,
      "watchers": 28,
      "fork_history": {
        "days": [
          {
            "date": "2023-01-20",
            "count": 1
          },
          {
            "date": "2023-03-23",
            "count": 1
          },
          {
            "date": "2023-04-20",
            "count": 1
          },
          {
            "date": "2023-04-21",
            "count": 1
          },
          {
            "date": "2023-04-22",
            "count": 1
          },
          {
            "date": "2023-04-24",
            "count": 1
          },
          {
            "date": "2023-04-25",
            "count": 2
          },
          {
            "date": "2023-04-29",
            "count": 1
          },
          {
            "date": "2023-05-06",
            "count": 1
          },
          {
            "date": "2023-05-09",
            "count": 1
          },
          {
            "date": "2023-05-10",
            "count": 1
          },
          {
            "date": "2023-05-11",
            "count": 1
          },
          {
            "date": "2023-05-13",
            "count": 1
          },
          {
            "date": "2023-05-29",
            "count": 1
          },
          {
            "date": "2023-06-07",
            "count": 1
          },
          {
            "date": "2023-06-14",
            "count": 2
          },
          {
            "date": "2023-06-23",
            "count": 1
          },
          {
            "date": "2023-06-28",
            "count": 1
          },
          {
            "date": "2023-07-03",
            "count": 1
          },
          {
            "date": "2023-07-04",
            "count": 1
          },
          {
            "date": "2023-07-05",
            "count": 1
          },
          {
            "date": "2023-07-08",
            "count": 1
          },
          {
            "date": "2023-07-09",
            "count": 1
          },
          {
            "date": "2023-07-14",
            "count": 1
          },
          {
            "date": "2023-07-21",
            "count": 1
          },
          {
            "date": "2023-07-23",
            "count": 1
          },
          {
            "date": "2023-08-01",
            "count": 2
          },
          {
            "date": "2023-08-02",
            "count": 1
          },
          {
            "date": "2023-08-05",
            "count": 1
          },
          {
            "date": "2023-08-09",
            "count": 1
          },
          {
            "date": "2023-08-17",
            "count": 1
          },
          {
            "date": "2023-08-23",
            "count": 1
          },
          {
            "date": "2023-09-03",
            "count": 1
          },
          {
            "date": "2023-09-08",
            "count": 1
          },
          {
            "date": "2023-09-10",
            "count": 1
          },
          {
            "date": "2023-09-11",
            "count": 1
          },
          {
            "date": "2023-09-13",
            "count": 1
          },
          {
            "date": "2023-09-14",
            "count": 1
          },
          {
            "date": "2023-09-17",
            "count": 1
          },
          {
            "date": "2023-09-18",
            "count": 1
          },
          {
            "date": "2023-09-19",
            "count": 1
          },
          {
            "date": "2023-09-21",
            "count": 1
          },
          {
            "date": "2023-09-23",
            "count": 1
          },
          {
            "date": "2023-09-26",
            "count": 1
          },
          {
            "date": "2023-09-28",
            "count": 2
          },
          {
            "date": "2023-10-03",
            "count": 1
          },
          {
            "date": "2023-10-05",
            "count": 3
          },
          {
            "date": "2023-10-10",
            "count": 2
          },
          {
            "date": "2023-10-11",
            "count": 1
          },
          {
            "date": "2023-10-14",
            "count": 1
          },
          {
            "date": "2023-10-22",
            "count": 1
          },
          {
            "date": "2023-10-23",
            "count": 1
          },
          {
            "date": "2023-10-24",
            "count": 3
          },
          {
            "date": "2023-10-26",
            "count": 1
          },
          {
            "date": "2023-10-27",
            "count": 1
          },
          {
            "date": "2023-10-28",
            "count": 2
          },
          {
            "date": "2023-10-31",
            "count": 1
          },
          {
            "date": "2023-11-01",
            "count": 1
          },
          {
            "date": "2023-11-06",
            "count": 2
          },
          {
            "date": "2023-11-10",
            "count": 1
          },
          {
            "date": "2023-11-11",
            "count": 1
          },
          {
            "date": "2023-11-30",
            "count": 1
          },
          {
            "date": "2023-12-02",
            "count": 1
          },
          {
            "date": "2023-12-07",
            "count": 1
          },
          {
            "date": "2023-12-12",
            "count": 1
          },
          {
            "date": "2023-12-16",
            "count": 1
          },
          {
            "date": "2023-12-22",
            "count": 1
          },
          {
            "date": "2023-12-28",
            "count": 1
          },
          {
            "date": "2024-01-07",
            "count": 1
          },
          {
            "date": "2024-01-16",
            "count": 1
          },
          {
            "date": "2024-01-18",
            "count": 1
          },
          {
            "date": "2024-01-27",
            "count": 1
          },
          {
            "date": "2024-02-02",
            "count": 1
          },
          {
            "date": "2024-02-08",
            "count": 1
          },
          {
            "date": "2024-02-20",
            "count": 1
          },
          {
            "date": "2024-03-11",
            "count": 1
          },
          {
            "date": "2024-03-18",
            "count": 1
          },
          {
            "date": "2024-03-19",
            "count": 1
          },
          {
            "date": "2024-03-28",
            "count": 1
          },
          {
            "date": "2024-03-29",
            "count": 1
          },
          {
            "date": "2024-04-01",
            "count": 1
          },
          {
            "date": "2024-04-15",
            "count": 1
          },
          {
            "date": "2024-04-26",
            "count": 1
          },
          {
            "date": "2024-05-01",
            "count": 2
          },
          {
            "date": "2024-05-07",
            "count": 1
          },
          {
            "date": "2024-05-09",
            "count": 1
          },
          {
            "date": "2024-05-13",
            "count": 1
          },
          {
            "date": "2024-05-14",
            "count": 1
          },
          {
            "date": "2024-05-15",
            "count": 1
          },
          {
            "date": "2024-05-16",
            "count": 1
          },
          {
            "date": "2024-05-19",
            "count": 1
          },
          {
            "date": "2024-05-21",
            "count": 9
          },
          {
            "date": "2024-05-22",
            "count": 1
          },
          {
            "date": "2024-05-23",
            "count": 1
          },
          {
            "date": "2024-05-28",
            "count": 1
          },
          {
            "date": "2024-05-29",
            "count": 1
          },
          {
            "date": "2024-05-31",
            "count": 1
          },
          {
            "date": "2024-06-04",
            "count": 1
          },
          {
            "date": "2024-06-07",
            "count": 1
          },
          {
            "date": "2024-06-19",
            "count": 1
          },
          {
            "date": "2024-06-22",
            "count": 1
          },
          {
            "date": "2024-06-27",
            "count": 1
          },
          {
            "date": "2024-06-30",
            "count": 3
          },
          {
            "date": "2024-07-02",
            "count": 1
          },
          {
            "date": "2024-07-03",
            "count": 2
          },
          {
            "date": "2024-07-12",
            "count": 1
          },
          {
            "date": "2024-07-14",
            "count": 1
          },
          {
            "date": "2024-07-22",
            "count": 1
          },
          {
            "date": "2024-07-24",
            "count": 1
          },
          {
            "date": "2024-07-26",
            "count": 1
          },
          {
            "date": "2024-07-30",
            "count": 1
          },
          {
            "date": "2024-07-31",
            "count": 1
          },
          {
            "date": "2024-08-02",
            "count": 1
          },
          {
            "date": "2024-08-28",
            "count": 1
          },
          {
            "date": "2024-09-03",
            "count": 1
          },
          {
            "date": "2024-09-05",
            "count": 1
          },
          {
            "date": "2024-09-08",
            "count": 1
          },
          {
            "date": "2024-09-12",
            "count": 1
          },
          {
            "date": "2024-09-19",
            "count": 1
          },
          {
            "date": "2024-09-23",
            "count": 1
          },
          {
            "date": "2024-09-27",
            "count": 1
          },
          {
            "date": "2024-10-12",
            "count": 1
          },
          {
            "date": "2024-10-18",
            "count": 1
          },
          {
            "date": "2024-10-21",
            "count": 1
          },
          {
            "date": "2024-10-24",
            "count": 1
          },
          {
            "date": "2024-10-27",
            "count": 1
          },
          {
            "date": "2024-11-01",
            "count": 1
          },
          {
            "date": "2024-11-02",
            "count": 1
          },
          {
            "date": "2024-12-01",
            "count": 1
          },
          {
            "date": "2024-12-04",
            "count": 2
          },
          {
            "date": "2024-12-10",
            "count": 1
          },
          {
            "date": "2024-12-27",
            "count": 1
          },
          {
            "date": "2025-01-03",
            "count": 1
          },
          {
            "date": "2025-01-04",
            "count": 3
          },
          {
            "date": "2025-01-05",
            "count": 2
          },
          {
            "date": "2025-01-08",
            "count": 1
          },
          {
            "date": "2025-01-10",
            "count": 1
          },
          {
            "date": "2025-01-13",
            "count": 1
          },
          {
            "date": "2025-01-23",
            "count": 2
          },
          {
            "date": "2025-02-01",
            "count": 1
          },
          {
            "date": "2025-02-05",
            "count": 1
          },
          {
            "date": "2025-02-10",
            "count": 1
          },
          {
            "date": "2025-03-12",
            "count": 2
          },
          {
            "date": "2025-03-17",
            "count": 1
          },
          {
            "date": "2025-04-05",
            "count": 1
          },
          {
            "date": "2025-04-15",
            "count": 2
          },
          {
            "date": "2025-05-16",
            "count": 1
          },
          {
            "date": "2025-05-22",
            "count": 1
          },
          {
            "date": "2025-06-16",
            "count": 1
          },
          {
            "date": "2025-06-21",
            "count": 1
          },
          {
            "date": "2025-07-28",
            "count": 1
          },
          {
            "date": "2025-08-06",
            "count": 1
          },
          {
            "date": "2025-09-17",
            "count": 1
          },
          {
            "date": "2025-09-25",
            "count": 1
          },
          {
            "date": "2025-10-05",
            "count": 1
          },
          {
            "date": "2025-10-06",
            "count": 1
          },
          {
            "date": "2025-10-08",
            "count": 1
          },
          {
            "date": "2025-10-15",
            "count": 1
          },
          {
            "date": "2025-10-21",
            "count": 1
          },
          {
            "date": "2025-10-22",
            "count": 2
          },
          {
            "date": "2025-11-10",
            "count": 1
          },
          {
            "date": "2025-11-20",
            "count": 1
          },
          {
            "date": "2025-11-23",
            "count": 1
          },
          {
            "date": "2025-12-03",
            "count": 1
          },
          {
            "date": "2025-12-19",
            "count": 2
          },
          {
            "date": "2025-12-20",
            "count": 1
          },
          {
            "date": "2025-12-23",
            "count": 1
          },
          {
            "date": "2025-12-29",
            "count": 1
          },
          {
            "date": "2026-01-10",
            "count": 1
          },
          {
            "date": "2026-01-20",
            "count": 1
          },
          {
            "date": "2026-02-12",
            "count": 1
          },
          {
            "date": "2026-02-16",
            "count": 1
          },
          {
            "date": "2026-02-18",
            "count": 1
          },
          {
            "date": "2026-02-19",
            "count": 1
          },
          {
            "date": "2026-02-22",
            "count": 1
          },
          {
            "date": "2026-02-24",
            "count": 1
          },
          {
            "date": "2026-03-08",
            "count": 1
          },
          {
            "date": "2026-03-11",
            "count": 1
          },
          {
            "date": "2026-03-13",
            "count": 1
          },
          {
            "date": "2026-03-19",
            "count": 2
          },
          {
            "date": "2026-03-21",
            "count": 1
          },
          {
            "date": "2026-03-25",
            "count": 2
          },
          {
            "date": "2026-04-02",
            "count": 1
          },
          {
            "date": "2026-04-05",
            "count": 1
          },
          {
            "date": "2026-04-06",
            "count": 1
          },
          {
            "date": "2026-04-12",
            "count": 1
          },
          {
            "date": "2026-04-15",
            "count": 1
          },
          {
            "date": "2026-04-16",
            "count": 1
          },
          {
            "date": "2026-04-17",
            "count": 1
          },
          {
            "date": "2026-04-22",
            "count": 1
          },
          {
            "date": "2026-05-02",
            "count": 1
          },
          {
            "date": "2026-05-07",
            "count": 1
          },
          {
            "date": "2026-05-09",
            "count": 1
          },
          {
            "date": "2026-05-17",
            "count": 1
          },
          {
            "date": "2026-05-30",
            "count": 1
          },
          {
            "date": "2026-06-03",
            "count": 1
          },
          {
            "date": "2026-06-10",
            "count": 1
          },
          {
            "date": "2026-06-15",
            "count": 1
          },
          {
            "date": "2026-06-19",
            "count": 2
          },
          {
            "date": "2026-06-20",
            "count": 1
          },
          {
            "date": "2026-06-23",
            "count": 1
          },
          {
            "date": "2026-06-25",
            "count": 2
          },
          {
            "date": "2026-06-28",
            "count": 1
          },
          {
            "date": "2026-07-01",
            "count": 1
          },
          {
            "date": "2026-07-02",
            "count": 1
          },
          {
            "date": "2026-07-06",
            "count": 1
          },
          {
            "date": "2026-07-09",
            "count": 2
          },
          {
            "date": "2026-07-10",
            "count": 1
          },
          {
            "date": "2026-07-11",
            "count": 1
          },
          {
            "date": "2026-07-12",
            "count": 2
          },
          {
            "date": "2026-07-14",
            "count": 1
          },
          {
            "date": "2026-07-20",
            "count": 2
          },
          {
            "date": "2026-07-23",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 252,
        "total_forks": 253
      },
      "star_history": null,
      "open_issues_and_prs": 83
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "recipes"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 1400087,
      "source_files_sampled": 1230,
      "oversized_source_files": 2,
      "agent_instruction_files": [
        "docs/griptape-framework/structures/agents.md"
      ],
      "agent_instruction_max_bytes": 1036
    },
    "dependencies": {
      "manifests": [
        "pyproject.toml"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 39,
        "malicious_count": 0,
        "assessed_package": "pypi:griptape@1.11.0",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [
        {
          "name": "openai",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.1.1"
        },
        {
          "name": "attrs",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=24.3.0"
        },
        {
          "name": "jinja2",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.1.4"
        },
        {
          "name": "marshmallow",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.21.3,<4"
        },
        {
          "name": "marshmallow-enum",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.5.1"
        },
        {
          "name": "tiktoken",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.12"
        },
        {
          "name": "rich",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=13.7.1"
        },
        {
          "name": "schema",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.7.7"
        },
        {
          "name": "pyyaml",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0.1"
        },
        {
          "name": "tenacity",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=8.5.0"
        },
        {
          "name": "numpy",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.26.4,<3"
        },
        {
          "name": "requests",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.32.0"
        },
        {
          "name": "filetype",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.2"
        },
        {
          "name": "urllib3",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.25.4,!=2.2.0,<3"
        },
        {
          "name": "pydantic",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.7.4"
        },
        {
          "name": "wrapt",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.16.0"
        },
        {
          "name": "pip",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=25.0.1"
        },
        {
          "name": "json-schema-to-pydantic",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.4.6"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "attrs",
            "direct": true,
            "version": "26.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "filetype",
            "direct": true,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jinja2",
            "direct": true,
            "version": "3.1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "json-schema-to-pydantic",
            "direct": true,
            "version": "0.4.6",
            "ecosystem": "pypi"
          },
          {
            "name": "marshmallow",
            "direct": true,
            "version": "3.26.2",
            "ecosystem": "pypi"
          },
          {
            "name": "marshmallow-enum",
            "direct": true,
            "version": "1.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": true,
            "version": "2.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "openai",
            "direct": true,
            "version": "1.79.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pip",
            "direct": true,
            "version": "26.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic",
            "direct": true,
            "version": "2.11.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml",
            "direct": true,
            "version": "6.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": true,
            "version": "2.33.1",
            "ecosystem": "pypi"
          },
          {
            "name": "rich",
            "direct": true,
            "version": "14.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "schema",
            "direct": true,
            "version": "0.7.7",
            "ecosystem": "pypi"
          },
          {
            "name": "tenacity",
            "direct": true,
            "version": "9.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "tiktoken",
            "direct": true,
            "version": "0.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "urllib3",
            "direct": true,
            "version": "2.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "wrapt",
            "direct": true,
            "version": "1.17.2",
            "ecosystem": "pypi"
          },
          {
            "name": "aiohappyeyeballs",
            "direct": false,
            "version": "2.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "aiohttp",
            "direct": false,
            "version": "3.13.4",
            "ecosystem": "pypi"
          },
          {
            "name": "aiolimiter",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "aiosignal",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "annotated-types",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "anthropic",
            "direct": false,
            "version": "0.51.0",
            "ecosystem": "pypi"
          },
          {
            "name": "anyio",
            "direct": false,
            "version": "4.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "asn1crypto",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "astrapy",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "async-timeout",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "babel",
            "direct": false,
            "version": "2.17.0",
            "ecosystem": "pypi"
          },
          {
            "name": "backports-tarfile",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "backrefs",
            "direct": false,
            "version": "5.8",
            "ecosystem": "pypi"
          },
          {
            "name": "beautifulsoup4",
            "direct": false,
            "version": "4.13.4",
            "ecosystem": "pypi"
          },
          {
            "name": "boto3",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "boto3",
            "direct": false,
            "version": "1.38.18",
            "ecosystem": "pypi"
          },
          {
            "name": "boto3-stubs",
            "direct": false,
            "version": "1.37.12",
            "ecosystem": "pypi"
          },
          {
            "name": "botocore",
            "direct": false,
            "version": "1.38.18",
            "ecosystem": "pypi"
          },
          {
            "name": "botocore-stubs",
            "direct": false,
            "version": "1.37.11",
            "ecosystem": "pypi"
          },
          {
            "name": "brotli",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "brotlicffi",
            "direct": false,
            "version": "1.2.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "certifi",
            "direct": false,
            "version": "2025.1.31",
            "ecosystem": "pypi"
          },
          {
            "name": "cffi",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cfgv",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "charset-normalizer",
            "direct": false,
            "version": "3.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "click",
            "direct": false,
            "version": "8.1.8",
            "ecosystem": "pypi"
          },
          {
            "name": "cohere",
            "direct": false,
            "version": "5.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "colorama",
            "direct": false,
            "version": "0.4.6",
            "ecosystem": "pypi"
          },
          {
            "name": "courlan",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "coverage",
            "direct": false,
            "version": "7.13.5",
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": false,
            "version": "46.0.7",
            "ecosystem": "pypi"
          },
          {
            "name": "cuda-bindings",
            "direct": false,
            "version": "13.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cuda-pathfinder",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "pypi"
          },
          {
            "name": "cuda-toolkit",
            "direct": false,
            "version": "13.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "dateparser",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "dateparser",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "ddgs",
            "direct": false,
            "version": "9.14.4",
            "ecosystem": "pypi"
          },
          {
            "name": "deprecated",
            "direct": false,
            "version": "1.2.18",
            "ecosystem": "pypi"
          },
          {
            "name": "deprecation",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "diffusers",
            "direct": false,
            "version": "0.33.1",
            "ecosystem": "pypi"
          },
          {
            "name": "distlib",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "pypi"
          },
          {
            "name": "distro",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "dnspython",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "docker",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "docker",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "docutils",
            "direct": false,
            "version": "0.21.2",
            "ecosystem": "pypi"
          },
          {
            "name": "elevenlabs",
            "direct": false,
            "version": "1.59.0",
            "ecosystem": "pypi"
          },
          {
            "name": "events",
            "direct": false,
            "version": "0.5",
            "ecosystem": "pypi"
          },
          {
            "name": "exa-py",
            "direct": false,
            "version": "1.13.1",
            "ecosystem": "pypi"
          },
          {
            "name": "exceptiongroup",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "exceptiongroup",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "execnet",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "fake-useragent",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fastavro",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "filelock",
            "direct": false,
            "version": "3.25.2",
            "ecosystem": "pypi"
          },
          {
            "name": "frozenlist",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fsspec",
            "direct": false,
            "version": "2025.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fuzzywuzzy",
            "direct": false,
            "version": "0.18.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ghp-import",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "google-auth",
            "direct": false,
            "version": "2.49.2",
            "ecosystem": "pypi"
          },
          {
            "name": "google-genai",
            "direct": false,
            "version": "1.73.1",
            "ecosystem": "pypi"
          },
          {
            "name": "googleapis-common-protos",
            "direct": false,
            "version": "1.69.1",
            "ecosystem": "pypi"
          },
          {
            "name": "greenlet",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "griffe",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "griptape",
            "direct": false,
            "version": "1.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "grpcio",
            "direct": false,
            "version": "1.71.0",
            "ecosystem": "pypi"
          },
          {
            "name": "h11",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "h2",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "hpack",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "htmldate",
            "direct": false,
            "version": "1.9.4",
            "ecosystem": "pypi"
          },
          {
            "name": "httpcore",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "pypi"
          },
          {
            "name": "httpx",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "pypi"
          },
          {
            "name": "httpx-sse",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "huggingface-hub",
            "direct": false,
            "version": "0.31.4",
            "ecosystem": "pypi"
          },
          {
            "name": "hyperframe",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "id",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "identify",
            "direct": false,
            "version": "2.6.9",
            "ecosystem": "pypi"
          },
          {
            "name": "idna",
            "direct": false,
            "version": "3.10",
            "ecosystem": "pypi"
          },
          {
            "name": "importlib-metadata",
            "direct": false,
            "version": "8.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "iniconfig",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ipaddress",
            "direct": false,
            "version": "1.0.23",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-classes",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-context",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-functools",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jeepney",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jiter",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jmespath",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "justext",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "keyring",
            "direct": false,
            "version": "25.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "lxml",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "lxml-html-clean",
            "direct": false,
            "version": "0.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "mail-parser",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "markdown",
            "direct": false,
            "version": "3.8.1",
            "ecosystem": "pypi"
          },
          {
            "name": "markdown-it-py",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "markdownify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "markupsafe",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "marqo",
            "direct": false,
            "version": "3.13.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mcp",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "mdformat",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mdformat-footnote",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "pypi"
          },
          {
            "name": "mdformat-frontmatter",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mdformat-gfm",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mdformat-mkdocs",
            "direct": false,
            "version": "5.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "mdit-py-plugins",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mdurl",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mergedeep",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-autorefs",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-gen-files",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-get-deps",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-glightbox",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-literate-nav",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-material",
            "direct": false,
            "version": "9.7.6",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-material-extensions",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-section-index",
            "direct": false,
            "version": "0.3.12",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocstrings",
            "direct": false,
            "version": "0.29.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocstrings-python",
            "direct": false,
            "version": "1.16.5",
            "ecosystem": "pypi"
          },
          {
            "name": "mongomock",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "more-itertools",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "moto",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "mpmath",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "multidict",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy-boto3-bedrock-agent-runtime",
            "direct": false,
            "version": "1.37.22",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy-boto3-bedrock-runtime",
            "direct": false,
            "version": "1.37.30",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy-boto3-dynamodb",
            "direct": false,
            "version": "1.37.12",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy-boto3-iam",
            "direct": false,
            "version": "1.37.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy-boto3-iot-data",
            "direct": false,
            "version": "1.37.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy-boto3-opensearch",
            "direct": false,
            "version": "1.37.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy-boto3-redshift-data",
            "direct": false,
            "version": "1.37.8",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy-boto3-s3",
            "direct": false,
            "version": "1.37.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy-boto3-sagemaker-runtime",
            "direct": false,
            "version": "1.37.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy-boto3-sqs",
            "direct": false,
            "version": "1.37.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ndg-httpsclient",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "networkx",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "nh3",
            "direct": false,
            "version": "0.2.21",
            "ecosystem": "pypi"
          },
          {
            "name": "nodeenv",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "numexpr",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cublas",
            "direct": false,
            "version": "13.1.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cuda-cupti",
            "direct": false,
            "version": "13.0.85",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cuda-nvrtc",
            "direct": false,
            "version": "13.0.88",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cuda-runtime",
            "direct": false,
            "version": "13.0.96",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cudnn-cu13",
            "direct": false,
            "version": "9.20.0.48",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cufft",
            "direct": false,
            "version": "12.0.0.61",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cufile",
            "direct": false,
            "version": "1.15.1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-curand",
            "direct": false,
            "version": "10.4.0.35",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cusolver",
            "direct": false,
            "version": "12.0.4.66",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cusparse",
            "direct": false,
            "version": "12.6.3.3",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cusparselt-cu13",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-nccl-cu13",
            "direct": false,
            "version": "2.29.7",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-nvjitlink",
            "direct": false,
            "version": "13.0.88",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-nvshmem-cu13",
            "direct": false,
            "version": "3.4.5",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-nvtx",
            "direct": false,
            "version": "13.0.85",
            "ecosystem": "pypi"
          },
          {
            "name": "ollama",
            "direct": false,
            "version": "0.4.8",
            "ecosystem": "pypi"
          },
          {
            "name": "opensearch-py",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-api",
            "direct": false,
            "version": "1.33.1",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-exporter-otlp-proto-common",
            "direct": false,
            "version": "1.33.1",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-exporter-otlp-proto-http",
            "direct": false,
            "version": "1.33.1",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-instrumentation",
            "direct": false,
            "version": "0.54b1",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-instrumentation-threading",
            "direct": false,
            "version": "0.54b1",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-proto",
            "direct": false,
            "version": "1.33.1",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-sdk",
            "direct": false,
            "version": "1.33.1",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-semantic-conventions",
            "direct": false,
            "version": "0.54b1",
            "ecosystem": "pypi"
          },
          {
            "name": "packaging",
            "direct": false,
            "version": "24.2",
            "ecosystem": "pypi"
          },
          {
            "name": "paginate",
            "direct": false,
            "version": "0.5.7",
            "ecosystem": "pypi"
          },
          {
            "name": "pandas",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pandas",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pathspec",
            "direct": false,
            "version": "0.12.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pgvector",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pillow",
            "direct": false,
            "version": "12.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pinecone",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pinecone-plugin-interface",
            "direct": false,
            "version": "0.0.7",
            "ecosystem": "pypi"
          },
          {
            "name": "platformdirs",
            "direct": false,
            "version": "4.3.6",
            "ecosystem": "pypi"
          },
          {
            "name": "playwright",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pluggy",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "portalocker",
            "direct": false,
            "version": "2.10.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pprintpp",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pre-commit",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "primp",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "propcache",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "properdocs",
            "direct": false,
            "version": "1.6.7",
            "ecosystem": "pypi"
          },
          {
            "name": "protobuf",
            "direct": false,
            "version": "5.29.6",
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg2-binary",
            "direct": false,
            "version": "2.9.10",
            "ecosystem": "pypi"
          },
          {
            "name": "pusher",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "pypi"
          },
          {
            "name": "py-partiql-parser",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pyasn1",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pyasn1-modules",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pycparser",
            "direct": false,
            "version": "2.22",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic-core",
            "direct": false,
            "version": "2.33.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyee",
            "direct": false,
            "version": "13.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pygments",
            "direct": false,
            "version": "2.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyjwt",
            "direct": false,
            "version": "2.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pymdown-extensions",
            "direct": false,
            "version": "10.21.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pymongo",
            "direct": false,
            "version": "4.12.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pynacl",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyopenssl",
            "direct": false,
            "version": "26.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pypdf",
            "direct": false,
            "version": "6.10.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyright",
            "direct": false,
            "version": "1.1.410",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": false,
            "version": "9.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-clarity",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-cov",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-env",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-mock",
            "direct": false,
            "version": "3.15.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-xdist",
            "direct": false,
            "version": "3.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dateutil",
            "direct": false,
            "version": "2.9.0.post0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dotenv",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pytz",
            "direct": false,
            "version": "2025.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pywin32",
            "direct": false,
            "version": "309",
            "ecosystem": "pypi"
          },
          {
            "name": "pywin32-ctypes",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml-env-tag",
            "direct": false,
            "version": "0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "qdrant-client",
            "direct": false,
            "version": "1.14.2",
            "ecosystem": "pypi"
          },
          {
            "name": "readme-renderer",
            "direct": false,
            "version": "44.0",
            "ecosystem": "pypi"
          },
          {
            "name": "redis",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "regex",
            "direct": false,
            "version": "2024.11.6",
            "ecosystem": "pypi"
          },
          {
            "name": "requests-toolbelt",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "responses",
            "direct": false,
            "version": "0.25.7",
            "ecosystem": "pypi"
          },
          {
            "name": "rfc3986",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ruamel-yaml",
            "direct": false,
            "version": "0.18.10",
            "ecosystem": "pypi"
          },
          {
            "name": "ruamel-yaml-clib",
            "direct": false,
            "version": "0.2.12",
            "ecosystem": "pypi"
          },
          {
            "name": "ruff",
            "direct": false,
            "version": "0.15.15",
            "ecosystem": "pypi"
          },
          {
            "name": "s3transfer",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "safetensors",
            "direct": false,
            "version": "0.5.3",
            "ecosystem": "pypi"
          },
          {
            "name": "secretstorage",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "pypi"
          },
          {
            "name": "selectolax",
            "direct": false,
            "version": "0.4.7",
            "ecosystem": "pypi"
          },
          {
            "name": "sentinels",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "setuptools",
            "direct": false,
            "version": "78.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "six",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sniffio",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "snowflake",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "snowflake-connector-python",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "snowflake-core",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "snowflake-legacy",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "snowflake-sqlalchemy",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "socksio",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sortedcontainers",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "soupsieve",
            "direct": false,
            "version": "2.6",
            "ecosystem": "pypi"
          },
          {
            "name": "sqlalchemy",
            "direct": false,
            "version": "2.0.41",
            "ecosystem": "pypi"
          },
          {
            "name": "stringcase",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sympy",
            "direct": false,
            "version": "1.14.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tavily-python",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "pypi"
          },
          {
            "name": "tld",
            "direct": false,
            "version": "0.13",
            "ecosystem": "pypi"
          },
          {
            "name": "tokenizers",
            "direct": false,
            "version": "0.21.1",
            "ecosystem": "pypi"
          },
          {
            "name": "toml",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "pypi"
          },
          {
            "name": "tomli",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "tomli",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "tomlkit",
            "direct": false,
            "version": "0.13.2",
            "ecosystem": "pypi"
          },
          {
            "name": "torch",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "torch",
            "direct": false,
            "version": "2.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tqdm",
            "direct": false,
            "version": "4.67.1",
            "ecosystem": "pypi"
          },
          {
            "name": "trafilatura",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "transformers",
            "direct": false,
            "version": "4.53.0",
            "ecosystem": "pypi"
          },
          {
            "name": "triton",
            "direct": false,
            "version": "3.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "twine",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "types-awscrt",
            "direct": false,
            "version": "0.24.1",
            "ecosystem": "pypi"
          },
          {
            "name": "types-requests",
            "direct": false,
            "version": "2.32.0.20250306",
            "ecosystem": "pypi"
          },
          {
            "name": "types-s3transfer",
            "direct": false,
            "version": "0.11.4",
            "ecosystem": "pypi"
          },
          {
            "name": "typing-extensions",
            "direct": false,
            "version": "4.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "typing-inspection",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "typos",
            "direct": false,
            "version": "1.47.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tzdata",
            "direct": false,
            "version": "2025.1",
            "ecosystem": "pypi"
          },
          {
            "name": "tzlocal",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "uuid6",
            "direct": false,
            "version": "2024.7.10",
            "ecosystem": "pypi"
          },
          {
            "name": "virtualenv",
            "direct": false,
            "version": "20.36.1",
            "ecosystem": "pypi"
          },
          {
            "name": "voyageai",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "watchdog",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "0.2.13",
            "ecosystem": "pypi"
          },
          {
            "name": "websockets",
            "direct": false,
            "version": "15.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "werkzeug",
            "direct": false,
            "version": "3.1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "xmltodict",
            "direct": false,
            "version": "0.14.2",
            "ecosystem": "pypi"
          },
          {
            "name": "yarl",
            "direct": false,
            "version": "1.18.3",
            "ecosystem": "pypi"
          },
          {
            "name": "zipp",
            "direct": false,
            "version": "3.21.0",
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 288,
        "direct_count": 18,
        "indirect_count": 270
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 18,
        "merged_prs": 1310,
        "open_issues": 65,
        "closed_ratio": 0.881,
        "closed_issues": 479,
        "closed_unmerged_prs": 291
      },
      "bus_factor": 2,
      "bot_contributors": 3,
      "top_contributors": [
        {
          "type": "User",
          "login": "collindutter",
          "commits": 785,
          "avatar_url": "https://avatars.githubusercontent.com/u/9911531?v=4"
        },
        {
          "type": "User",
          "login": "vasinov",
          "commits": 485,
          "avatar_url": "https://avatars.githubusercontent.com/u/286876?v=4"
        },
        {
          "type": "User",
          "login": "andrewfrench",
          "commits": 86,
          "avatar_url": "https://avatars.githubusercontent.com/u/3770127?v=4"
        },
        {
          "type": "User",
          "login": "vachillo",
          "commits": 72,
          "avatar_url": "https://avatars.githubusercontent.com/u/43043466?v=4"
        },
        {
          "type": "User",
          "login": "cjkindel",
          "commits": 40,
          "avatar_url": "https://avatars.githubusercontent.com/u/9421414?v=4"
        },
        {
          "type": "User",
          "login": "dylanholmes",
          "commits": 19,
          "avatar_url": "https://avatars.githubusercontent.com/u/4370153?v=4"
        },
        {
          "type": "User",
          "login": "zachgiordano",
          "commits": 18,
          "avatar_url": "https://avatars.githubusercontent.com/u/32624672?v=4"
        },
        {
          "type": "User",
          "login": "trish11953",
          "commits": 14,
          "avatar_url": "https://avatars.githubusercontent.com/u/97489901?v=4"
        },
        {
          "type": "User",
          "login": "emjay07",
          "commits": 10,
          "avatar_url": "https://avatars.githubusercontent.com/u/2302515?v=4"
        },
        {
          "type": "User",
          "login": "william-price01",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/82848178?v=4"
        }
      ],
      "contributors_sampled": 41,
      "top_contributor_share": 0.492
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "code-checks.yml",
        "create-stable-release.yml",
        "docs-integration-tests.yml",
        "publish.yml",
        "pull-request-links.yml",
        "unit-tests.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "uv.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 8,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 10,
            "reason": "all changesets reviewed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 8 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "28 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 8,
            "reason": "SAST tool is not run on all commits -- score normalized to 8",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "92 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "93fbd843afeff389bc21e728e593afaf6fcfd584",
        "ran_at": "2026-07-25T16:16:28Z",
        "aggregate_score": 6.2,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-20T17:39:01Z",
      "oldest_open_prs": [
        {
          "number": 2015,
          "created_at": "2025-10-11T19:40:48Z",
          "last_comment_at": "2025-10-12T23:45:28Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2169,
          "created_at": "2026-05-09T09:20:09Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2171,
          "created_at": "2026-05-11T06:23:18Z",
          "last_comment_at": "2026-05-11T06:26:17Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2195,
          "created_at": "2026-06-11T01:05:33Z",
          "last_comment_at": "2026-07-25T02:25:49Z",
          "last_comment_author": "failsafesecurity"
        },
        {
          "number": 2212,
          "created_at": "2026-06-23T16:58:23Z",
          "last_comment_at": "2026-06-25T12:08:58Z",
          "last_comment_author": "citizen204"
        },
        {
          "number": 2214,
          "created_at": "2026-06-25T20:46:50Z",
          "last_comment_at": "2026-06-25T20:50:21Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2216,
          "created_at": "2026-06-28T17:38:38Z",
          "last_comment_at": "2026-06-28T17:42:44Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2220,
          "created_at": "2026-06-29T17:47:14Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2221,
          "created_at": "2026-06-29T17:47:28Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2228,
          "created_at": "2026-07-01T22:09:38Z",
          "last_comment_at": "2026-07-16T20:20:33Z",
          "last_comment_author": "ferhimedamine"
        },
        {
          "number": 2230,
          "created_at": "2026-07-02T19:21:05Z",
          "last_comment_at": "2026-07-17T07:29:54Z",
          "last_comment_author": "feder-cr"
        },
        {
          "number": 2231,
          "created_at": "2026-07-06T08:38:15Z",
          "last_comment_at": "2026-07-13T05:22:51Z",
          "last_comment_author": "octo-patch"
        },
        {
          "number": 2233,
          "created_at": "2026-07-06T17:46:42Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2235,
          "created_at": "2026-07-09T01:11:35Z",
          "last_comment_at": "2026-07-15T09:56:50Z",
          "last_comment_author": "zc277584121"
        },
        {
          "number": 2252,
          "created_at": "2026-07-17T16:26:50Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2253,
          "created_at": "2026-07-20T08:13:39Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2254,
          "created_at": "2026-07-20T13:49:29Z",
          "last_comment_at": "2026-07-20T13:53:03Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2256,
          "created_at": "2026-07-23T10:34:31Z",
          "last_comment_at": "2026-07-23T10:37:43Z",
          "last_comment_author": "codecov"
        }
      ],
      "last_merged_pr_at": "2026-07-17T16:43:24Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 39,
          "created_at": "2023-05-16T13:09:51Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 50,
          "created_at": "2023-05-18T13:34:36Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 54,
          "created_at": "2023-05-20T05:53:35Z",
          "last_comment_at": "2023-09-12T20:32:20Z",
          "last_comment_author": "collindutter"
        },
        {
          "number": 129,
          "created_at": "2023-07-24T19:39:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 131,
          "created_at": "2023-07-24T19:59:07Z",
          "last_comment_at": "2025-04-02T20:47:53Z",
          "last_comment_author": "collindutter"
        },
        {
          "number": 132,
          "created_at": "2023-07-24T23:09:23Z",
          "last_comment_at": "2024-06-25T23:26:19Z",
          "last_comment_author": "vachillo"
        },
        {
          "number": 306,
          "created_at": "2023-10-01T21:44:10Z",
          "last_comment_at": "2025-01-06T17:41:52Z",
          "last_comment_author": "collindutter"
        },
        {
          "number": 364,
          "created_at": "2023-10-14T08:59:03Z",
          "last_comment_at": "2023-10-24T20:45:58Z",
          "last_comment_author": "derekpai"
        },
        {
          "number": 423,
          "created_at": "2023-11-07T21:19:40Z",
          "last_comment_at": "2023-11-07T21:21:32Z",
          "last_comment_author": "derekpai"
        },
        {
          "number": 530,
          "created_at": "2023-12-22T18:58:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 816,
          "created_at": "2024-06-03T16:32:27Z",
          "last_comment_at": "2025-01-07T22:00:05Z",
          "last_comment_author": "collindutter"
        },
        {
          "number": 981,
          "created_at": "2024-07-15T17:47:29Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 995,
          "created_at": "2024-07-18T17:24:12Z",
          "last_comment_at": "2026-06-15T16:53:47Z",
          "last_comment_author": "collindutter"
        },
        {
          "number": 1023,
          "created_at": "2024-07-29T14:36:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1113,
          "created_at": "2024-08-27T20:41:04Z",
          "last_comment_at": "2024-08-27T20:50:53Z",
          "last_comment_author": "collindutter"
        },
        {
          "number": 1151,
          "created_at": "2024-09-06T16:18:04Z",
          "last_comment_at": "2024-12-19T20:52:59Z",
          "last_comment_author": "collindutter"
        },
        {
          "number": 1206,
          "created_at": "2024-09-27T08:45:00Z",
          "last_comment_at": "2024-10-15T08:28:42Z",
          "last_comment_author": "qwe321389yfs8t7huqd89q"
        },
        {
          "number": 1280,
          "created_at": "2024-10-23T23:16:57Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1322,
          "created_at": "2024-11-07T16:22:05Z",
          "last_comment_at": "2024-11-11T18:46:31Z",
          "last_comment_author": "collindutter"
        },
        {
          "number": 1435,
          "created_at": "2024-12-12T20:27:45Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/griptape-ai/griptape",
    "host": "github.com",
    "name": "griptape",
    "owner": "griptape-ai"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 79,
      "inputs": {
        "security": 70,
        "vitality": 92,
        "community": 80,
        "governance": 76,
        "engineering": 77
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 92,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 87,
            "inputs": {
              "commits_last_year": 126,
              "human_commit_share": 0.49,
              "days_since_last_push": 4,
              "active_weeks_last_year": 33
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 4 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "33/52 weeks with commits",
                "points": 22.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 33
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "126 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 126
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "28 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "v1.11.0",
              "releases_from_tags": false,
              "days_since_latest_release": 10,
              "mean_days_between_releases": 20.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 10 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 10
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~20.2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 20.2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 7,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 7 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 7
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 80,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "forks": 253,
              "stars": 2564,
              "watchers": 28,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "2,564 stars",
                "points": 55.3,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 2564
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "253 forks",
                "points": 20,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 253
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "28 watchers",
                "points": 8,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 28
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 76,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 41,
              "top_contributor_share": 0.492
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "2 contributor(s) cover half of all commits",
                "points": 25.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 49% of commits",
                "points": 11.4,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 49
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "41 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 41
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 8 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 88,
            "inputs": {
              "merged_prs": 1310,
              "open_issues": 65,
              "closed_issues": 479,
              "issue_closed_ratio": 0.881,
              "closed_unmerged_prs": 291
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "88% of issues closed",
                "points": 41.2,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 88
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "1310/1601 decided PRs merged",
                "points": 31.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 1310,
                      "decided": 1601
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "all changesets reviewed",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "followers": 188,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "griptape-ai",
              "public_repos": 92,
              "account_age_days": 1281
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "188 followers of griptape-ai",
                "points": 16.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 188,
                      "login": "griptape-ai"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "92 public repos, account ~3 yr old",
                "points": 20,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 92
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 3
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "griptape"
              ],
              "ecosystems": "pypi",
              "any_deprecated": false,
              "min_days_since_publish": 10
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 10 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 10
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "147 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 147
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 77,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "6 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "gpt",
                "llm",
                "openai",
                "ai",
                "python",
                "huggingface",
                "anthropic",
                "claude"
              ],
              "has_wiki": false,
              "homepage": "https://www.griptape.ai",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://www.griptape.ai",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "8 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "good",
        "name": "Security",
        "value": 70,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 62,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 6.2
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "all changesets reviewed",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 8 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "28 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 8",
                "points": 4,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "92 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the pypi:griptape@1.11.0 runtime dependency closure — what installing the published package pulls in — 39 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "pypi:griptape@1.11.0",
                  "assessed": 39
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 39,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 39,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 15
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 67,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "docs/griptape-framework/structures/agents.md"
              ],
              "agent_instruction_max_bytes": 1036
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "docs/griptape-framework/structures/agents.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "docs/griptape-framework/structures/agents.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "49 of 49 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 49,
                      "sampled": 49
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "uv.lock"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [
                "Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.26,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.48
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "26 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 26,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "48 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 48,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 1400087,
              "source_files_sampled": 1230,
              "oversized_source_files": 2
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "2/1230 source files over 60KB",
                "points": 54.9,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 1230,
                      "oversized": 2
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "recipes"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "recipes",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "recipes"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-25T16:16:57.499688Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/g/griptape-ai/griptape.svg",
  "full_name": "griptape-ai/griptape",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v1.13.0, схема v0.27.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистикаPyPI.