Skip to content

Add triage-sentry-issues daemon - #359

Merged
chrisdoc merged 3 commits into
mainfrom
charlie/triage-sentry-issues-daemon
Jun 20, 2026
Merged

Add triage-sentry-issues daemon#359
chrisdoc merged 3 commits into
mainfrom
charlie/triage-sentry-issues-daemon

Conversation

@charliecreates

@charliecreates charliecreates Bot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Added a scheduled Sentry triage daemon at .agents/daemons/triage-sentry-issues/DAEMON.md.
  • Based the routine on the linear bug-context pattern.
  • Validated daemon configs successfully.

Resolves #358

✨ PR Description

Purpose: Add daemon specification for automated Sentry issue triage with release/repository context correlation and evidence-based commenting.

Main changes:

  • Created DAEMON.md documentation defining triage candidate signals, high-signal issue selection criteria, and production-environment filtering rules
  • Specified research policy requiring Sentry evidence, release context, and repository context gathering with materiality checks before posting updates
  • Established comment format template with signal assessment, suspect releases/commits, ownership clues, and idempotent no-op behavior for unchanged evidence states

Generated by LinearB AI and added by gitStream.
AI-generated content may contain inaccuracies. Please verify before using.
💡 Tip: You can customize your AI Description using Guidelines Learn how

@charliecreates charliecreates Bot mentioned this pull request Jun 20, 2026
@codecov

codecov Bot commented Jun 20, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 71.36%. Comparing base (e8a068c) to head (84a0868).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #359   +/-   ##
=======================================
  Coverage   71.36%   71.36%           
=======================================
  Files          18       18           
  Lines         674      674           
  Branches      202      202           
=======================================
  Hits          481      481           
  Misses        110      110           
  Partials       83       83           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@gitstream-cm gitstream-cm Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✨ PR Review

The daemon definition is well-structured and includes clear idempotency rules and deny guards. A few gaps around operational scope, schedule timezone, and idempotency robustness are worth addressing before deployment.

3 issues detected:

🐞 Bug - No Sentry organization or project filter is defined, so the daemon has unbounded read and comment access across all visible projects.

Details: The daemon never specifies which Sentry organization(s) or project(s) it is allowed to operate on. Without an explicit allow-list, the agent could scan every project visible to whatever credentials it runs under, triggering unintended API usage, unexpected comment noise on unrelated projects, and potential data-access violations.

File: .agents/daemons/triage-sentry-issues/DAEMON.md (1-16)

🐞 Bug - Relying on a human-readable header string as the sole idempotency key is fragile and can be spoofed or missed, leading to duplicate or skipped triage updates. 🛠️

Details: The idempotency check (line 64) instructs the daemon to "inspect prior Charlie triage comments," but the comment format uses only a generic **Triage update** header with no unique machine-readable marker. Any person or bot that happens to post a comment starting with that string would satisfy the check, causing the daemon to skip a legitimate update. Conversely, if the daemon's own past comments ever differ slightly in phrasing, it may duplicate updates.

File: .agents/daemons/triage-sentry-issues/DAEMON.md (51-64)

🛠️ A suggested code correction is included in the review comments.

🐞 Bug - No timezone is specified, so the effective run time is undefined and scheduler-dependent.

Details: The cron expression 0 10 * * 1-5 has no associated timezone. Depending on the scheduler's default (often UTC), this could fire at 10:00 UTC rather than the team's local business hours, making the triage output stale or poorly timed relative to developer standups.

File: .agents/daemons/triage-sentry-issues/DAEMON.md (4-4)

Generated by LinearB AI and added by gitStream.
AI-generated content may contain inaccuracies. Please verify before using.
💡 Tip: You can customize your AI Review using Guidelines Learn how

Comment thread .agents/daemons/triage-sentry-issues/DAEMON.md Outdated
@greptile-apps

greptile-apps Bot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

  • Adds a new .agents/daemons/triage-sentry-issues/DAEMON.md daemon spec for scheduled Sentry issue triage.
  • Defines weekday activation, candidate criteria, release/repository correlation guidance, and evidence-based update behavior.
  • Adds a required Sentry comment format and no-op rules for avoiding unchanged triage updates.

Confidence Score: 4/5

The change is limited to a daemon specification, but the unclosed Markdown fence can cause the daemon to treat policy text as comment content.

The affected file is small and the issue is localized, with a straightforward fix to restore the intended split between the sample comment and operating instructions.

.agents/daemons/triage-sentry-issues/DAEMON.md

T-Rex T-Rex Logs

What T-Rex did

  • Verified the daemon descriptor could not be found at the base state and validation was ABSENT.
  • Verified the daemon descriptor exists at head, frontmatter parses, all contract checks pass, and validation is PASS.
  • Noted environment limitation where npm run check could not run because oxlint is not installed, so a fallback parser/check was used.

View all artifacts

T-Rex Ran code and verified through T-Rex

Reviews (3): Last reviewed commit: "Apply suggestions from code review" | Re-trigger Greptile

Comment on lines +6 to +8
- Identify high-signal unresolved or regressed Sentry issues using event/user impact, recency, and production-environment relevance.
- Correlate each candidate with release and repository context, including suspect commits, recent pull requests, and touched files.
- Post one concise triage update on the Sentry issue only when new evidence materially changes likely scope, ownership clues, or next debugging action.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Add Sentry scope

This scheduled daemon can select any high-signal Sentry issue that the integration can see. If Charlie has access to more than this repo's Sentry project, it can post triage comments on unrelated projects and correlate those issues with the wrong repository context. Add an explicit project, release, or repository match requirement, and no-op when that mapping is unavailable.

Comment on lines +46 to +57
Post at most one concise Sentry comment per issue per activation, and only when the evidence changed materially.

Use this format:

```md
**Triage update**

Signal: <current impact and trend>
Release/repo context: <suspect release window, commits, or PRs>
Most likely area: <module/file/owner clue from stack traces or changes>
Next step: <single recommended debugging or validation action>
Evidence: <up to 3 links or references>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Stabilize duplicate detection

The daemon runs every weekday, but the required comment format only stores free-form prose. When the same evidence is summarized with slightly different wording or link order, the next run has no stable key to compare and can post another equivalent triage update. Include a durable evidence marker, such as issue id, release, top frame, suspect commits, and trend bucket, and compare that before posting.

Comment on lines +64 to +66
Before posting, inspect prior Charlie triage comments on the same Sentry issue.

No-op when an equivalent update already exists for the same evidence state. Post a follow-up only if at least one material change is true:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Check all prior updates

The idempotency check only looks at prior Charlie triage comments, even though the deny rule says not to post an equivalent update when evidence has not changed. If a human, Sentry automation, or another daemon already posted the same evidence and next step, this daemon can still add a duplicate comment. The check should compare the current evidence state against recent relevant comments, not only Charlie-authored ones.

@chrisdoc

Copy link
Copy Markdown
Owner

@CharlieHelps this misses the watch condition, to watch for new sentry issues

@charliecreates

Copy link
Copy Markdown
Contributor Author

Good catch — I missed that. I added an explicit watch condition for new Sentry issues in .agents/daemons/triage-sentry-issues/DAEMON.md and pushed the fix here: 84a0868

Also re-ran checks with bun run check (pass).

@gitstream-cm gitstream-cm Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✨ PR Review

The daemon spec is well-structured and the deny/no-op rules are thoughtful. The three previously-identified issues (missing org/project allow-list, non-unique idempotency marker, and missing timezone on the cron) remain unresolved. One additional new issue was identified around the watch trigger.

1 issues detected:

🐞 Bug - A newly-created Sentry issue can never satisfy the high-signal candidate criteria, making every watch-triggered activation a guaranteed no-op that still burns API calls.

Details: The watch trigger fires on every new Sentry issue creation, but the candidate-signal criteria (lines 24–31) require established patterns such as "high or rising event volume," "repeated occurrences across sessions," and issues that are "unresolved or regressed." A brand-new issue has none of this history, so the watch-triggered run will almost always evaluate candidates, find the new issue unqualified, and no-op — while still consuming Sentry and repository API quota on every single issue creation event. For organizations with high error rates this could mean hundreds of spurious daemon activations per day.

File: .agents/daemons/triage-sentry-issues/DAEMON.md (5-6)

Generated by LinearB AI and added by gitStream.
AI-generated content may contain inaccuracies. Please verify before using.
💡 Tip: You can customize your AI Review using Guidelines Learn how

Comment on lines +5 to +6
watch:
- A new Sentry issue is created.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Cover regressed issues

The only watched Sentry event is new issue creation, but this daemon is meant to triage unresolved or regressed issues whose impact changes over time. When an existing production issue sharply worsens after a release, an event-scoped activation can miss it because no new issue was created. Make the daemon either purely scheduled so it scans unresolved high-signal issues each run, or include regression/worsening events in the trigger scope.


## Update/comment format

Post at most one concise Sentry comment per issue per activation, and only when the evidence changed materially.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Bound scheduled runs

The scheduled path does not define a checkpoint, lookback window, or per-run cap. On the first weekday activation, the daemon can treat every visible high-signal unresolved or regressed Sentry issue as in scope and post one comment on each issue. The existing idempotency rule only prevents repeats after a comment already exists, so it does not prevent an initial batch of comments across old backlog issues. Add a bounded discovery rule such as issues first seen or regressed since the previous successful activation, with a small fallback window and candidate limit.

Comment on lines +66 to +68
Before posting, inspect prior Charlie triage comments on the same Sentry issue.

No-op when an equivalent update already exists for the same evidence state. Post a follow-up only if at least one material change is true:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Coordinate duplicate posts

This daemon can run from both the weekday schedule and the new-issue trigger, but the posting rule only says to inspect prior comments before posting. If two activations handle the same issue at the same time, both can inspect before either comment exists and then both post equivalent triage updates. Require a final re-check or durable claim/evidence marker immediately before posting so concurrent activations cannot produce duplicate comments.

Co-authored-by: gitstream-cm[bot] <111687743+gitstream-cm[bot]@users.noreply.github.com>
@chrisdoc
chrisdoc merged commit b71a287 into main Jun 20, 2026
6 of 7 checks passed

@gitstream-cm gitstream-cm Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✨ PR Review

The daemon definition is well-structured with clear candidate signals, research policy, deny rules, and a machine-readable comment marker that resolves a previous idempotency concern. One structural defect was found that could affect how the agent interprets the document.

1 issues detected:

🐞 Bug - The markdown code fence opened at line 52 is never closed, causing the "## No-op behavior" section and its bullet conditions to be rendered as raw code rather than structured instructions.

Details: The fenced code block opened at line 52 (```md) is never closed with a matching ```. As a result, everything that follows — including the no-op criteria (lines 62–67) and the entire "## No-op behavior" section (lines 69–77) — is swallowed into the code block body. In rendered markdown these lines appear as literal code, not as behavioral rules. An agent parsing the rendered document could treat the no-op conditions as part of the comment template it should post rather than as execution-time guard clauses, causing it to paste the "No-op when…" block into every Sentry comment it creates.

File: .agents/daemons/triage-sentry-issues/DAEMON.md (52-77)

Generated by LinearB AI and added by gitStream.
AI-generated content may contain inaccuracies. Please verify before using.
💡 Tip: You can customize your AI Review using Guidelines Learn how

Comment on lines +52 to +60
```md
<!-- charlie:triage-sentry id:triage-sentry-issues -->
**Triage update**

Signal: <current impact and trend>
Release/repo context: <suspect release window, commits, or PRs>
Most likely area: <module/file/owner clue from stack traces or changes>
Next step: <single recommended debugging or validation action>
Evidence: <up to 3 links or references>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Close the format fence

The Markdown fence opened for the sample Sentry comment is never closed. That makes the idempotency/material-change rules and the whole no-op section part of the example comment body, so the daemon can include those policy lines in Sentry comments instead of treating them as instructions. Close the fence after the Evidence: line so the duplicate-check and no-op rules remain operative policy.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

aaearon added a commit to aaearon/hevy-mcp that referenced this pull request Jun 24, 2026
* chore(deps-dev): bump the development-dependencies group across 1 directory with 8 updates (chrisdoc#335)

Bumps the development-dependencies group with 8 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `21.0.1` | `21.0.2` |
| [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) | `21.0.1` | `21.0.2` |
| [@commitlint/prompt-cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/prompt-cli) | `21.0.1` | `21.0.2` |
| [lefthook](https://github.com/evilmartians/lefthook) | `2.1.8` | `2.1.9` |
| [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) | `0.51.0` | `0.53.0` |
| [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) | `1.66.0` | `1.68.0` |
| [tsdown](https://github.com/rolldown/tsdown) | `0.22.0` | `0.22.2` |
| [tsx](https://github.com/privatenumber/tsx) | `4.22.3` | `4.22.4` |



Updates `@commitlint/cli` from 21.0.1 to 21.0.2
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.0.2/@commitlint/cli)

Updates `@commitlint/config-conventional` from 21.0.1 to 21.0.2
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.0.2/@commitlint/config-conventional)

Updates `@commitlint/prompt-cli` from 21.0.1 to 21.0.2
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/prompt-cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.0.2/@commitlint/prompt-cli)

Updates `lefthook` from 2.1.8 to 2.1.9
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](evilmartians/lefthook@v2.1.8...v2.1.9)

Updates `oxfmt` from 0.51.0 to 0.53.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxfmt/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxfmt_v0.53.0/npm/oxfmt)

Updates `oxlint` from 1.66.0 to 1.68.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.68.0/npm/oxlint)

Updates `tsdown` from 0.22.0 to 0.22.2
- [Release notes](https://github.com/rolldown/tsdown/releases)
- [Commits](rolldown/tsdown@v0.22.0...v0.22.2)

Updates `tsx` from 4.22.3 to 4.22.4
- [Release notes](https://github.com/privatenumber/tsx/releases)
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)
- [Commits](privatenumber/tsx@v4.22.3...v4.22.4)

---
updated-dependencies:
- dependency-name: "@commitlint/cli"
  dependency-version: 21.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@commitlint/config-conventional"
  dependency-version: 21.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@commitlint/prompt-cli"
  dependency-version: 21.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: lefthook
  dependency-version: 2.1.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: oxfmt
  dependency-version: 0.53.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: oxlint
  dependency-version: 1.68.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: tsdown
  dependency-version: 0.22.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: tsx
  dependency-version: 4.22.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.23.17 [skip ci]

## [1.23.17](chrisdoc/hevy-mcp@v1.23.16...v1.23.17) (2026-06-04)

* chore(deps): bump hono from 4.12.18 to 4.12.23 (chrisdoc#336)

Bumps [hono](https://github.com/honojs/hono) from 4.12.18 to 4.12.23.
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](honojs/hono@v4.12.18...v4.12.23)

---
updated-dependencies:
- dependency-name: hono
  dependency-version: 4.12.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.23.18 [skip ci]

## [1.23.18](chrisdoc/hevy-mcp@v1.23.17...v1.23.18) (2026-06-04)

* chore(deps): bump codecov/codecov-action (chrisdoc#337)

Bumps the observability-actions group with 1 update: [codecov/codecov-action](https://github.com/codecov/codecov-action).


Updates `codecov/codecov-action` from 6 to 7
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@v6...v7)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: observability-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.23.19 [skip ci]

## [1.23.19](chrisdoc/hevy-mcp@v1.23.18...v1.23.19) (2026-06-09)

* chore(deps): bump the production-dependencies group with 7 updates (chrisdoc#338)

Bumps the production-dependencies group with 7 updates:

| Package | From | To |
| --- | --- | --- |
| [@kubb/cli](https://github.com/kubb-labs/kubb/tree/HEAD/packages/cli) | `4.37.9` | `4.37.12` |
| [@kubb/core](https://github.com/kubb-labs/kubb/tree/HEAD/packages/core) | `4.37.9` | `4.37.12` |
| [@kubb/plugin-client](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-client) | `4.37.9` | `4.37.12` |
| [@kubb/plugin-faker](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-faker) | `4.37.9` | `4.37.12` |
| [@kubb/plugin-oas](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-oas) | `4.37.9` | `4.37.12` |
| [@kubb/plugin-ts](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-ts) | `4.37.9` | `4.37.12` |
| [@kubb/plugin-zod](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-zod) | `4.37.9` | `4.37.12` |


Updates `@kubb/cli` from 4.37.9 to 4.37.12
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/cli@4.37.12/packages/cli/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/cli@4.37.12/packages/cli)

Updates `@kubb/core` from 4.37.9 to 4.37.12
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/core@4.37.12/packages/core/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/core@4.37.12/packages/core)

Updates `@kubb/plugin-client` from 4.37.9 to 4.37.12
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-client@4.37.12/packages/plugin-client/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-client@4.37.12/packages/plugin-client)

Updates `@kubb/plugin-faker` from 4.37.9 to 4.37.12
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-faker@4.37.12/packages/plugin-faker/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-faker@4.37.12/packages/plugin-faker)

Updates `@kubb/plugin-oas` from 4.37.9 to 4.37.12
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-oas@4.37.12/packages/plugin-oas/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-oas@4.37.12/packages/plugin-oas)

Updates `@kubb/plugin-ts` from 4.37.9 to 4.37.12
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-ts@4.37.12/packages/plugin-ts/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-ts@4.37.12/packages/plugin-ts)

Updates `@kubb/plugin-zod` from 4.37.9 to 4.37.12
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-zod@4.37.12/packages/plugin-zod/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-zod@4.37.12/packages/plugin-zod)

---
updated-dependencies:
- dependency-name: "@kubb/cli"
  dependency-version: 4.37.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@kubb/core"
  dependency-version: 4.37.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@kubb/plugin-client"
  dependency-version: 4.37.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@kubb/plugin-faker"
  dependency-version: 4.37.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@kubb/plugin-oas"
  dependency-version: 4.37.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@kubb/plugin-ts"
  dependency-version: 4.37.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@kubb/plugin-zod"
  dependency-version: 4.37.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.23.20 [skip ci]

## [1.23.20](chrisdoc/hevy-mcp@v1.23.19...v1.23.20) (2026-06-09)

* chore(deps-dev): bump the development-dependencies group with 3 updates (chrisdoc#339)

Bumps the development-dependencies group with 3 updates: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node), [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) and [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint).


Updates `@types/node` from 25.9.1 to 25.9.2
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `oxfmt` from 0.53.0 to 0.54.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxfmt/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxfmt_v0.54.0/npm/oxfmt)

Updates `oxlint` from 1.68.0 to 1.69.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.69.0/npm/oxlint)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 25.9.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: oxfmt
  dependency-version: 0.54.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: oxlint
  dependency-version: 1.69.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.23.21 [skip ci]

## [1.23.21](chrisdoc/hevy-mcp@v1.23.20...v1.23.21) (2026-06-09)

* chore(deps): bump shell-quote from 1.8.3 to 1.8.4 (chrisdoc#340)

Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.3 to 1.8.4.
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)
- [Commits](ljharb/shell-quote@v1.8.3...v1.8.4)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-version: 1.8.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.23.22 [skip ci]

## [1.23.22](chrisdoc/hevy-mcp@v1.23.21...v1.23.22) (2026-06-10)

* chore(deps-dev): bump esbuild from 0.28.0 to 0.28.1 (chrisdoc#343)

Bumps [esbuild](https://github.com/evanw/esbuild) from 0.28.0 to 0.28.1.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md)
- [Commits](evanw/esbuild@v0.28.0...v0.28.1)

---
updated-dependencies:
- dependency-name: esbuild
  dependency-version: 0.28.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.23.23 [skip ci]

## [1.23.23](chrisdoc/hevy-mcp@v1.23.22...v1.23.23) (2026-06-13)

* Add tool annotations and fix body measurement payload handling (chrisdoc#342)

* fix: move dev-only kubb packages to devDependencies

Six @kubb/* packages were declared as runtime dependencies but are only
used by `npm run build:client` (kubb generate). Keeping them in
dependencies made `npx hevy-mcp` installs resolve their caret ranges
directly, which broke whenever an unpublished @kubb version was
referenced (chrisdoc#322). Only @kubb/plugin-client is imported at runtime by
the generated client, so it stays in dependencies.

Also syncs package-lock.json, which was missing yaml@2.9.0.

Fixes chrisdoc#322

https://claude.ai/code/session_01CuJWqXKY94msBi4cUgn1D8

* fix: accept partial body measurement inputs

Two bugs prevented valid body measurement writes (chrisdoc#341):

- Measurement fields used strict z.number(), rejecting numeric strings
  like "81.5" that some MCP clients send. They now use
  z.coerce.number() like the other tools, while null/undefined still
  short-circuit before coercion.
- buildMeasurementPayload() forwarded every omitted field as null,
  which the Hevy API rejects. Nullish fields are now omitted from the
  payload entirely, for both create and update.

Fixes chrisdoc#341

https://claude.ai/code/session_01CuJWqXKY94msBi4cUgn1D8

* feat: add get-user-info tool

Exposes the Hevy API's GET /v1/user/info endpoint, which existed in the
generated client but had no MCP tool. Returns the authenticated user's
ID, display name, and public profile URL — useful for verifying which
account an API key belongs to.

Also refreshes the README tools table, which was stale
(get-routine-by-id, missing body measurement and exercise template
tools).

https://claude.ai/code/session_01CuJWqXKY94msBi4cUgn1D8

* feat: add MCP tool annotations to all tools

Every tool now declares title, readOnlyHint, destructiveHint,
idempotentHint, and openWorldHint so MCP clients can render tools
properly and decide when calls are safe to auto-approve:

- get-*/search-* tools are marked read-only
- create-* tools are non-destructive, non-idempotent writes
- update-* tools are destructive (PUT-style overwrites) and idempotent
- delete-webhook-subscription is destructive and idempotent
- openWorldHint is false everywhere since the Hevy API is a closed
  domain limited to the authenticated user's data

Shared annotation factories live in src/utils/tool-annotations.ts and a
new annotations.test.ts asserts the policy for all 26 tools. Test
helpers now extract handlers position-independently so the added
registration argument doesn't break them.

https://claude.ai/code/session_01CuJWqXKY94msBi4cUgn1D8

* fix: harden body measurement input edge cases

Addresses PR chrisdoc#342 review feedback:

- Empty strings are treated as omitted instead of being coerced to 0
  by z.coerce.number().
- update-body-measurement now rejects calls without at least one
  non-null measurement field instead of sending an empty PUT body.
- Tool descriptions document that null values are treated as omitted,
  since the Hevy API rejects nulls and has no way to clear individual
  fields.

https://claude.ai/code/session_01CuJWqXKY94msBi4cUgn1D8

---------

Co-authored-by: Claude <noreply@anthropic.com>

* Hash Sentry user ID from Hevy API key (chrisdoc#345)

* fix: hash sentry user identifiers

* fix: avoid CodeQL API key hash alert

---------

Co-authored-by: CharlieHelps <charlie@charlielabs.ai>

* ci: add commitlint check to github workflow and unify agent instructions

* chore: trigger release

* chore(release): 1.23.24 [skip ci]

## [1.23.24](chrisdoc/hevy-mcp@v1.23.23...v1.23.24) (2026-06-15)

* chore: update dependencies

* feat: fix sentry

* chore(release): 1.24.0 [skip ci]

# [1.24.0](chrisdoc/hevy-mcp@v1.23.24...v1.24.0) (2026-06-15)

### Features

* fix sentry ([728d9a0](chrisdoc@728d9a0))

* build: rebuild package with correct version on publish

* chore(deps): bump form-data from 4.0.5 to 4.0.6 (chrisdoc#346)

Bumps [form-data](https://github.com/form-data/form-data) from 4.0.5 to 4.0.6.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](form-data/form-data@v4.0.5...v4.0.6)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.24.1 [skip ci]

## [1.24.1](chrisdoc/hevy-mcp@v1.24.0...v1.24.1) (2026-06-15)

* fix: align sentry release name with project@version pattern

* chore(release): 1.24.2 [skip ci]

## [1.24.2](chrisdoc/hevy-mcp@v1.24.1...v1.24.2) (2026-06-15)

### Bug Fixes

* align sentry release name with project@version pattern ([fa9613f](chrisdoc@fa9613f))

* feat: add MCP lifecycle and stdio parse observability (chrisdoc#348)

Co-authored-by: CharlieHelps <charlie@charlielabs.ai>

* chore(release): 1.25.0 [skip ci]

# [1.25.0](chrisdoc/hevy-mcp@v1.24.2...v1.25.0) (2026-06-16)

### Features

* add MCP lifecycle and stdio parse observability ([chrisdoc#348](chrisdoc#348)) ([f7a816b](chrisdoc@f7a816b))

* Install docs-drift-maintainer daemon (chrisdoc#349)

Co-authored-by: charliecreates[bot] <198680274+charliecreates[bot]@users.noreply.github.com>

* Install pr-merge-conflict-repair daemon (chrisdoc#350)

Co-authored-by: charliecreates[bot] <198680274+charliecreates[bot]@users.noreply.github.com>

* Install pr-metadata daemon (chrisdoc#352)

Co-authored-by: charliecreates[bot] <198680274+charliecreates[bot]@users.noreply.github.com>

* Install pr-check-repair daemon (chrisdoc#351)

Co-authored-by: charliecreates[bot] <198680274+charliecreates[bot]@users.noreply.github.com>

* chore: ignore .agents directory in oxlint and oxfmt

* chore(release): 1.25.1 [skip ci]

## [1.25.1](chrisdoc/hevy-mcp@v1.25.0...v1.25.1) (2026-06-17)

* build: upgrade Node.js requirement to 26

* docs: document recent sentry observability changes (chrisdoc#353)

* docs: document recent sentry observability changes

* build: include .agents files in project checks

* Revert "build: include .agents files in project checks"

This reverts commit e8211d4.

---------

Co-authored-by: CharlieHelps <charlie@charlielabs.ai>

* chore(release): 1.25.2 [skip ci]

## [1.25.2](chrisdoc/hevy-mcp@v1.25.1...v1.25.2) (2026-06-17)

* chore(deps): bump hono from 4.12.23 to 4.12.25 (chrisdoc#354)

Bumps [hono](https://github.com/honojs/hono) from 4.12.23 to 4.12.25.
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](honojs/hono@v4.12.23...v4.12.25)

---
updated-dependencies:
- dependency-name: hono
  dependency-version: 4.12.25
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.25.3 [skip ci]

## [1.25.3](chrisdoc/hevy-mcp@v1.25.2...v1.25.3) (2026-06-17)

* fix: remove kubb plugin-client from runtime deps (chrisdoc#356)

* chore(release): 1.25.4 [skip ci]

## [1.25.4](chrisdoc/hevy-mcp@v1.25.3...v1.25.4) (2026-06-19)

### Bug Fixes

* remove kubb plugin-client from runtime deps ([chrisdoc#356](chrisdoc#356)) ([61077ae](chrisdoc@61077ae))

* chore(deps-dev): bump undici from 6.24.1 to 6.27.0 (chrisdoc#357)

Bumps [undici](https://github.com/nodejs/undici) from 6.24.1 to 6.27.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](nodejs/undici@v6.24.1...v6.27.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 6.27.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.25.5 [skip ci]

## [1.25.5](chrisdoc/hevy-mcp@v1.25.4...v1.25.5) (2026-06-19)

* Add triage-sentry-issues daemon (chrisdoc#359)

* feat(agents): add triage-sentry-issues daemon

* fix(daemon): watch for new sentry issues

* Apply suggestions from code review

Co-authored-by: gitstream-cm[bot] <111687743+gitstream-cm[bot]@users.noreply.github.com>

---------

Co-authored-by: CharlieHelps <charlie@charlielabs.ai>
Co-authored-by: Christoph Kieslich <c.kieslich@gmail.com>
Co-authored-by: gitstream-cm[bot] <111687743+gitstream-cm[bot]@users.noreply.github.com>

* chore(deps): bump actions/checkout in the github-core-actions group (chrisdoc#362)

Bumps the github-core-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-core-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.25.6 [skip ci]

## [1.25.6](chrisdoc/hevy-mcp@v1.25.5...v1.25.6) (2026-06-23)

* chore(deps): bump the production-dependencies group with 2 updates (chrisdoc#363)

Bumps the production-dependencies group with 2 updates: [@sentry/node](https://github.com/getsentry/sentry-javascript) and [axios](https://github.com/axios/axios).


Updates `@sentry/node` from 10.58.0 to 10.59.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.58.0...10.59.0)

Updates `axios` from 1.18.0 to 1.18.1
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.18.0...v1.18.1)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-version: 10.59.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: axios
  dependency-version: 1.18.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.25.7 [skip ci]

## [1.25.7](chrisdoc/hevy-mcp@v1.25.6...v1.25.7) (2026-06-23)

* chore(deps-dev): bump the development-dependencies group with 11 updates (chrisdoc#364)

Bumps the development-dependencies group with 11 updates:

| Package | From | To |
| --- | --- | --- |
| [@kubb/cli](https://github.com/kubb-labs/kubb/tree/HEAD/packages/cli) | `4.38.0` | `4.39.1` |
| [@kubb/core](https://github.com/kubb-labs/kubb/tree/HEAD/packages/core) | `4.38.0` | `4.39.1` |
| [@kubb/plugin-client](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-client) | `4.38.0` | `4.39.1` |
| [@kubb/plugin-faker](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-faker) | `4.38.0` | `4.39.1` |
| [@kubb/plugin-oas](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-oas) | `4.38.0` | `4.39.1` |
| [@kubb/plugin-ts](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-ts) | `4.38.0` | `4.39.1` |
| [@kubb/plugin-zod](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-zod) | `4.38.0` | `4.39.1` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.9.3` | `26.0.0` |
| [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) | `0.55.0` | `0.56.0` |
| [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) | `1.70.0` | `1.71.0` |
| [tsdown](https://github.com/rolldown/tsdown) | `0.22.2` | `0.22.3` |


Updates `@kubb/cli` from 4.38.0 to 4.39.1
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/cli@4.39.1/packages/cli/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/cli@4.39.1/packages/cli)

Updates `@kubb/core` from 4.38.0 to 4.39.1
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/core@4.39.1/packages/core/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/core@4.39.1/packages/core)

Updates `@kubb/plugin-client` from 4.38.0 to 4.39.1
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-client@4.39.1/packages/plugin-client/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-client@4.39.1/packages/plugin-client)

Updates `@kubb/plugin-faker` from 4.38.0 to 4.39.1
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-faker@4.39.1/packages/plugin-faker/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-faker@4.39.1/packages/plugin-faker)

Updates `@kubb/plugin-oas` from 4.38.0 to 4.39.1
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-oas@4.39.1/packages/plugin-oas/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-oas@4.39.1/packages/plugin-oas)

Updates `@kubb/plugin-ts` from 4.38.0 to 4.39.1
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-ts@4.39.1/packages/plugin-ts/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-ts@4.39.1/packages/plugin-ts)

Updates `@kubb/plugin-zod` from 4.38.0 to 4.39.1
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-zod@4.39.1/packages/plugin-zod/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-zod@4.39.1/packages/plugin-zod)

Updates `@types/node` from 25.9.3 to 26.0.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `oxfmt` from 0.55.0 to 0.56.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxfmt/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxfmt_v0.56.0/npm/oxfmt)

Updates `oxlint` from 1.70.0 to 1.71.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.71.0/npm/oxlint)

Updates `tsdown` from 0.22.2 to 0.22.3
- [Release notes](https://github.com/rolldown/tsdown/releases)
- [Commits](rolldown/tsdown@v0.22.2...v0.22.3)

---
updated-dependencies:
- dependency-name: "@kubb/cli"
  dependency-version: 4.39.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@kubb/core"
  dependency-version: 4.39.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-client"
  dependency-version: 4.39.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-faker"
  dependency-version: 4.39.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-oas"
  dependency-version: 4.39.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-ts"
  dependency-version: 4.39.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-zod"
  dependency-version: 4.39.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@types/node"
  dependency-version: 26.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: development-dependencies
- dependency-name: oxfmt
  dependency-version: 0.56.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: oxlint
  dependency-version: 1.71.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: tsdown
  dependency-version: 0.22.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.25.8 [skip ci]

## [1.25.8](chrisdoc/hevy-mcp@v1.25.7...v1.25.8) (2026-06-23)

* chore: simplify dependabot grouping and weekly schedule (chrisdoc#366)

* chore(release): 1.25.9 [skip ci]

## [1.25.9](chrisdoc/hevy-mcp@v1.25.8...v1.25.9) (2026-06-23)

* chore(deps): bump @sentry/node in the production-dependencies group (chrisdoc#367)

Bumps the production-dependencies group with 1 update: [@sentry/node](https://github.com/getsentry/sentry-javascript).


Updates `@sentry/node` from 10.59.0 to 10.60.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.59.0...10.60.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-version: 10.60.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump the development-dependencies group with 10 updates (chrisdoc#368)

Bumps the development-dependencies group with 10 updates:

| Package | From | To |
| --- | --- | --- |
| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `21.0.2` | `21.1.0` |
| [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) | `21.0.2` | `21.1.0` |
| [@commitlint/prompt-cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/prompt-cli) | `21.0.2` | `21.1.0` |
| [@kubb/cli](https://github.com/kubb-labs/kubb/tree/HEAD/packages/cli) | `4.39.1` | `4.39.2` |
| [@kubb/core](https://github.com/kubb-labs/kubb/tree/HEAD/packages/core) | `4.39.1` | `4.39.2` |
| [@kubb/plugin-client](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-client) | `4.39.1` | `4.39.2` |
| [@kubb/plugin-faker](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-faker) | `4.39.1` | `4.39.2` |
| [@kubb/plugin-oas](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-oas) | `4.39.1` | `4.39.2` |
| [@kubb/plugin-ts](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-ts) | `4.39.1` | `4.39.2` |
| [@kubb/plugin-zod](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-zod) | `4.39.1` | `4.39.2` |


Updates `@commitlint/cli` from 21.0.2 to 21.1.0
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.1.0/@commitlint/cli)

Updates `@commitlint/config-conventional` from 21.0.2 to 21.1.0
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.1.0/@commitlint/config-conventional)

Updates `@commitlint/prompt-cli` from 21.0.2 to 21.1.0
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/prompt-cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.1.0/@commitlint/prompt-cli)

Updates `@kubb/cli` from 4.39.1 to 4.39.2
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/cli@4.39.2/packages/cli/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/cli@4.39.2/packages/cli)

Updates `@kubb/core` from 4.39.1 to 4.39.2
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/core@4.39.2/packages/core/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/core@4.39.2/packages/core)

Updates `@kubb/plugin-client` from 4.39.1 to 4.39.2
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-client@4.39.2/packages/plugin-client/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-client@4.39.2/packages/plugin-client)

Updates `@kubb/plugin-faker` from 4.39.1 to 4.39.2
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-faker@4.39.2/packages/plugin-faker/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-faker@4.39.2/packages/plugin-faker)

Updates `@kubb/plugin-oas` from 4.39.1 to 4.39.2
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-oas@4.39.2/packages/plugin-oas/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-oas@4.39.2/packages/plugin-oas)

Updates `@kubb/plugin-ts` from 4.39.1 to 4.39.2
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-ts@4.39.2/packages/plugin-ts/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-ts@4.39.2/packages/plugin-ts)

Updates `@kubb/plugin-zod` from 4.39.1 to 4.39.2
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-zod@4.39.2/packages/plugin-zod/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-zod@4.39.2/packages/plugin-zod)

---
updated-dependencies:
- dependency-name: "@commitlint/cli"
  dependency-version: 21.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@commitlint/config-conventional"
  dependency-version: 21.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@commitlint/prompt-cli"
  dependency-version: 21.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@kubb/cli"
  dependency-version: 4.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@kubb/core"
  dependency-version: 4.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-client"
  dependency-version: 4.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-faker"
  dependency-version: 4.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-oas"
  dependency-version: 4.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-ts"
  dependency-version: 4.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-zod"
  dependency-version: 4.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.25.10 [skip ci]

## [1.25.10](chrisdoc/hevy-mcp@v1.25.9...v1.25.10) (2026-06-23)

* docs: add add-mcp setup instructions to README (chrisdoc#361)

Co-authored-by: CharlieHelps <charlie@charlielabs.ai>

* chore(release): 1.25.11 [skip ci]

## [1.25.11](chrisdoc/hevy-mcp@v1.25.10...v1.25.11) (2026-06-23)

* chore(release): include all semantic commit types in notes (chrisdoc#370)

Co-authored-by: CharlieHelps <charlie@charlielabs.ai>

* chore(release): 1.25.12 [skip ci]

## [1.25.12](chrisdoc/hevy-mcp@v1.25.11...v1.25.12) (2026-06-24)

* feat: make Sentry telemetry opt-in via SENTRY_DSN

Sentry only initializes when SENTRY_DSN is set, so neither the published
package nor this fork sends telemetry by default. Removes the hardcoded
upstream DSN (which sent fork users' errors/usage to upstream's project).

Add SENTRY_RELEASE and SENTRY_TRACES_SAMPLE_RATE overrides, tests for the
opt-in behavior, and docs in README/AGENTS.md.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: Christoph Kieslich <c.kieslich@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: charliecreates[bot] <198680274+charliecreates[bot]@users.noreply.github.com>
Co-authored-by: CharlieHelps <charlie@charlielabs.ai>
Co-authored-by: gitstream-cm[bot] <111687743+gitstream-cm[bot]@users.noreply.github.com>
aaearon added a commit to aaearon/hevy-mcp that referenced this pull request Jun 24, 2026
* chore(deps-dev): bump the development-dependencies group across 1 directory with 8 updates (chrisdoc#335)

Bumps the development-dependencies group with 8 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `21.0.1` | `21.0.2` |
| [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) | `21.0.1` | `21.0.2` |
| [@commitlint/prompt-cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/prompt-cli) | `21.0.1` | `21.0.2` |
| [lefthook](https://github.com/evilmartians/lefthook) | `2.1.8` | `2.1.9` |
| [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) | `0.51.0` | `0.53.0` |
| [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) | `1.66.0` | `1.68.0` |
| [tsdown](https://github.com/rolldown/tsdown) | `0.22.0` | `0.22.2` |
| [tsx](https://github.com/privatenumber/tsx) | `4.22.3` | `4.22.4` |



Updates `@commitlint/cli` from 21.0.1 to 21.0.2
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.0.2/@commitlint/cli)

Updates `@commitlint/config-conventional` from 21.0.1 to 21.0.2
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.0.2/@commitlint/config-conventional)

Updates `@commitlint/prompt-cli` from 21.0.1 to 21.0.2
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/prompt-cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.0.2/@commitlint/prompt-cli)

Updates `lefthook` from 2.1.8 to 2.1.9
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](evilmartians/lefthook@v2.1.8...v2.1.9)

Updates `oxfmt` from 0.51.0 to 0.53.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxfmt/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxfmt_v0.53.0/npm/oxfmt)

Updates `oxlint` from 1.66.0 to 1.68.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.68.0/npm/oxlint)

Updates `tsdown` from 0.22.0 to 0.22.2
- [Release notes](https://github.com/rolldown/tsdown/releases)
- [Commits](rolldown/tsdown@v0.22.0...v0.22.2)

Updates `tsx` from 4.22.3 to 4.22.4
- [Release notes](https://github.com/privatenumber/tsx/releases)
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)
- [Commits](privatenumber/tsx@v4.22.3...v4.22.4)

---
updated-dependencies:
- dependency-name: "@commitlint/cli"
  dependency-version: 21.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@commitlint/config-conventional"
  dependency-version: 21.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@commitlint/prompt-cli"
  dependency-version: 21.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: lefthook
  dependency-version: 2.1.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: oxfmt
  dependency-version: 0.53.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: oxlint
  dependency-version: 1.68.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: tsdown
  dependency-version: 0.22.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: tsx
  dependency-version: 4.22.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.23.17 [skip ci]

## [1.23.17](chrisdoc/hevy-mcp@v1.23.16...v1.23.17) (2026-06-04)

* chore(deps): bump hono from 4.12.18 to 4.12.23 (chrisdoc#336)

Bumps [hono](https://github.com/honojs/hono) from 4.12.18 to 4.12.23.
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](honojs/hono@v4.12.18...v4.12.23)

---
updated-dependencies:
- dependency-name: hono
  dependency-version: 4.12.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.23.18 [skip ci]

## [1.23.18](chrisdoc/hevy-mcp@v1.23.17...v1.23.18) (2026-06-04)

* chore(deps): bump codecov/codecov-action (chrisdoc#337)

Bumps the observability-actions group with 1 update: [codecov/codecov-action](https://github.com/codecov/codecov-action).


Updates `codecov/codecov-action` from 6 to 7
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@v6...v7)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: observability-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.23.19 [skip ci]

## [1.23.19](chrisdoc/hevy-mcp@v1.23.18...v1.23.19) (2026-06-09)

* chore(deps): bump the production-dependencies group with 7 updates (chrisdoc#338)

Bumps the production-dependencies group with 7 updates:

| Package | From | To |
| --- | --- | --- |
| [@kubb/cli](https://github.com/kubb-labs/kubb/tree/HEAD/packages/cli) | `4.37.9` | `4.37.12` |
| [@kubb/core](https://github.com/kubb-labs/kubb/tree/HEAD/packages/core) | `4.37.9` | `4.37.12` |
| [@kubb/plugin-client](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-client) | `4.37.9` | `4.37.12` |
| [@kubb/plugin-faker](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-faker) | `4.37.9` | `4.37.12` |
| [@kubb/plugin-oas](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-oas) | `4.37.9` | `4.37.12` |
| [@kubb/plugin-ts](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-ts) | `4.37.9` | `4.37.12` |
| [@kubb/plugin-zod](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-zod) | `4.37.9` | `4.37.12` |


Updates `@kubb/cli` from 4.37.9 to 4.37.12
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/cli@4.37.12/packages/cli/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/cli@4.37.12/packages/cli)

Updates `@kubb/core` from 4.37.9 to 4.37.12
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/core@4.37.12/packages/core/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/core@4.37.12/packages/core)

Updates `@kubb/plugin-client` from 4.37.9 to 4.37.12
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-client@4.37.12/packages/plugin-client/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-client@4.37.12/packages/plugin-client)

Updates `@kubb/plugin-faker` from 4.37.9 to 4.37.12
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-faker@4.37.12/packages/plugin-faker/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-faker@4.37.12/packages/plugin-faker)

Updates `@kubb/plugin-oas` from 4.37.9 to 4.37.12
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-oas@4.37.12/packages/plugin-oas/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-oas@4.37.12/packages/plugin-oas)

Updates `@kubb/plugin-ts` from 4.37.9 to 4.37.12
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-ts@4.37.12/packages/plugin-ts/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-ts@4.37.12/packages/plugin-ts)

Updates `@kubb/plugin-zod` from 4.37.9 to 4.37.12
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-zod@4.37.12/packages/plugin-zod/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-zod@4.37.12/packages/plugin-zod)

---
updated-dependencies:
- dependency-name: "@kubb/cli"
  dependency-version: 4.37.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@kubb/core"
  dependency-version: 4.37.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@kubb/plugin-client"
  dependency-version: 4.37.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@kubb/plugin-faker"
  dependency-version: 4.37.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@kubb/plugin-oas"
  dependency-version: 4.37.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@kubb/plugin-ts"
  dependency-version: 4.37.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@kubb/plugin-zod"
  dependency-version: 4.37.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.23.20 [skip ci]

## [1.23.20](chrisdoc/hevy-mcp@v1.23.19...v1.23.20) (2026-06-09)

* chore(deps-dev): bump the development-dependencies group with 3 updates (chrisdoc#339)

Bumps the development-dependencies group with 3 updates: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node), [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) and [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint).


Updates `@types/node` from 25.9.1 to 25.9.2
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `oxfmt` from 0.53.0 to 0.54.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxfmt/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxfmt_v0.54.0/npm/oxfmt)

Updates `oxlint` from 1.68.0 to 1.69.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.69.0/npm/oxlint)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 25.9.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: oxfmt
  dependency-version: 0.54.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: oxlint
  dependency-version: 1.69.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.23.21 [skip ci]

## [1.23.21](chrisdoc/hevy-mcp@v1.23.20...v1.23.21) (2026-06-09)

* chore(deps): bump shell-quote from 1.8.3 to 1.8.4 (chrisdoc#340)

Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.3 to 1.8.4.
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)
- [Commits](ljharb/shell-quote@v1.8.3...v1.8.4)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-version: 1.8.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.23.22 [skip ci]

## [1.23.22](chrisdoc/hevy-mcp@v1.23.21...v1.23.22) (2026-06-10)

* chore(deps-dev): bump esbuild from 0.28.0 to 0.28.1 (chrisdoc#343)

Bumps [esbuild](https://github.com/evanw/esbuild) from 0.28.0 to 0.28.1.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md)
- [Commits](evanw/esbuild@v0.28.0...v0.28.1)

---
updated-dependencies:
- dependency-name: esbuild
  dependency-version: 0.28.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.23.23 [skip ci]

## [1.23.23](chrisdoc/hevy-mcp@v1.23.22...v1.23.23) (2026-06-13)

* Add tool annotations and fix body measurement payload handling (chrisdoc#342)

* fix: move dev-only kubb packages to devDependencies

Six @kubb/* packages were declared as runtime dependencies but are only
used by `npm run build:client` (kubb generate). Keeping them in
dependencies made `npx hevy-mcp` installs resolve their caret ranges
directly, which broke whenever an unpublished @kubb version was
referenced (chrisdoc#322). Only @kubb/plugin-client is imported at runtime by
the generated client, so it stays in dependencies.

Also syncs package-lock.json, which was missing yaml@2.9.0.

Fixes chrisdoc#322

https://claude.ai/code/session_01CuJWqXKY94msBi4cUgn1D8

* fix: accept partial body measurement inputs

Two bugs prevented valid body measurement writes (chrisdoc#341):

- Measurement fields used strict z.number(), rejecting numeric strings
  like "81.5" that some MCP clients send. They now use
  z.coerce.number() like the other tools, while null/undefined still
  short-circuit before coercion.
- buildMeasurementPayload() forwarded every omitted field as null,
  which the Hevy API rejects. Nullish fields are now omitted from the
  payload entirely, for both create and update.

Fixes chrisdoc#341

https://claude.ai/code/session_01CuJWqXKY94msBi4cUgn1D8

* feat: add get-user-info tool

Exposes the Hevy API's GET /v1/user/info endpoint, which existed in the
generated client but had no MCP tool. Returns the authenticated user's
ID, display name, and public profile URL — useful for verifying which
account an API key belongs to.

Also refreshes the README tools table, which was stale
(get-routine-by-id, missing body measurement and exercise template
tools).

https://claude.ai/code/session_01CuJWqXKY94msBi4cUgn1D8

* feat: add MCP tool annotations to all tools

Every tool now declares title, readOnlyHint, destructiveHint,
idempotentHint, and openWorldHint so MCP clients can render tools
properly and decide when calls are safe to auto-approve:

- get-*/search-* tools are marked read-only
- create-* tools are non-destructive, non-idempotent writes
- update-* tools are destructive (PUT-style overwrites) and idempotent
- delete-webhook-subscription is destructive and idempotent
- openWorldHint is false everywhere since the Hevy API is a closed
  domain limited to the authenticated user's data

Shared annotation factories live in src/utils/tool-annotations.ts and a
new annotations.test.ts asserts the policy for all 26 tools. Test
helpers now extract handlers position-independently so the added
registration argument doesn't break them.

https://claude.ai/code/session_01CuJWqXKY94msBi4cUgn1D8

* fix: harden body measurement input edge cases

Addresses PR chrisdoc#342 review feedback:

- Empty strings are treated as omitted instead of being coerced to 0
  by z.coerce.number().
- update-body-measurement now rejects calls without at least one
  non-null measurement field instead of sending an empty PUT body.
- Tool descriptions document that null values are treated as omitted,
  since the Hevy API rejects nulls and has no way to clear individual
  fields.

https://claude.ai/code/session_01CuJWqXKY94msBi4cUgn1D8

---------

Co-authored-by: Claude <noreply@anthropic.com>

* Hash Sentry user ID from Hevy API key (chrisdoc#345)

* fix: hash sentry user identifiers

* fix: avoid CodeQL API key hash alert

---------

Co-authored-by: CharlieHelps <charlie@charlielabs.ai>

* ci: add commitlint check to github workflow and unify agent instructions

* chore: trigger release

* chore(release): 1.23.24 [skip ci]

## [1.23.24](chrisdoc/hevy-mcp@v1.23.23...v1.23.24) (2026-06-15)

* chore: update dependencies

* feat: fix sentry

* chore(release): 1.24.0 [skip ci]

# [1.24.0](chrisdoc/hevy-mcp@v1.23.24...v1.24.0) (2026-06-15)

### Features

* fix sentry ([728d9a0](chrisdoc@728d9a0))

* build: rebuild package with correct version on publish

* chore(deps): bump form-data from 4.0.5 to 4.0.6 (chrisdoc#346)

Bumps [form-data](https://github.com/form-data/form-data) from 4.0.5 to 4.0.6.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](form-data/form-data@v4.0.5...v4.0.6)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.24.1 [skip ci]

## [1.24.1](chrisdoc/hevy-mcp@v1.24.0...v1.24.1) (2026-06-15)

* fix: align sentry release name with project@version pattern

* chore(release): 1.24.2 [skip ci]

## [1.24.2](chrisdoc/hevy-mcp@v1.24.1...v1.24.2) (2026-06-15)

### Bug Fixes

* align sentry release name with project@version pattern ([fa9613f](chrisdoc@fa9613f))

* feat: add MCP lifecycle and stdio parse observability (chrisdoc#348)

Co-authored-by: CharlieHelps <charlie@charlielabs.ai>

* chore(release): 1.25.0 [skip ci]

# [1.25.0](chrisdoc/hevy-mcp@v1.24.2...v1.25.0) (2026-06-16)

### Features

* add MCP lifecycle and stdio parse observability ([chrisdoc#348](chrisdoc#348)) ([f7a816b](chrisdoc@f7a816b))

* Install docs-drift-maintainer daemon (chrisdoc#349)

Co-authored-by: charliecreates[bot] <198680274+charliecreates[bot]@users.noreply.github.com>

* Install pr-merge-conflict-repair daemon (chrisdoc#350)

Co-authored-by: charliecreates[bot] <198680274+charliecreates[bot]@users.noreply.github.com>

* Install pr-metadata daemon (chrisdoc#352)

Co-authored-by: charliecreates[bot] <198680274+charliecreates[bot]@users.noreply.github.com>

* Install pr-check-repair daemon (chrisdoc#351)

Co-authored-by: charliecreates[bot] <198680274+charliecreates[bot]@users.noreply.github.com>

* chore: ignore .agents directory in oxlint and oxfmt

* chore(release): 1.25.1 [skip ci]

## [1.25.1](chrisdoc/hevy-mcp@v1.25.0...v1.25.1) (2026-06-17)

* build: upgrade Node.js requirement to 26

* docs: document recent sentry observability changes (chrisdoc#353)

* docs: document recent sentry observability changes

* build: include .agents files in project checks

* Revert "build: include .agents files in project checks"

This reverts commit e8211d4.

---------

Co-authored-by: CharlieHelps <charlie@charlielabs.ai>

* chore(release): 1.25.2 [skip ci]

## [1.25.2](chrisdoc/hevy-mcp@v1.25.1...v1.25.2) (2026-06-17)

* chore(deps): bump hono from 4.12.23 to 4.12.25 (chrisdoc#354)

Bumps [hono](https://github.com/honojs/hono) from 4.12.23 to 4.12.25.
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](honojs/hono@v4.12.23...v4.12.25)

---
updated-dependencies:
- dependency-name: hono
  dependency-version: 4.12.25
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.25.3 [skip ci]

## [1.25.3](chrisdoc/hevy-mcp@v1.25.2...v1.25.3) (2026-06-17)

* fix: remove kubb plugin-client from runtime deps (chrisdoc#356)

* chore(release): 1.25.4 [skip ci]

## [1.25.4](chrisdoc/hevy-mcp@v1.25.3...v1.25.4) (2026-06-19)

### Bug Fixes

* remove kubb plugin-client from runtime deps ([chrisdoc#356](chrisdoc#356)) ([61077ae](chrisdoc@61077ae))

* chore(deps-dev): bump undici from 6.24.1 to 6.27.0 (chrisdoc#357)

Bumps [undici](https://github.com/nodejs/undici) from 6.24.1 to 6.27.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](nodejs/undici@v6.24.1...v6.27.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 6.27.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.25.5 [skip ci]

## [1.25.5](chrisdoc/hevy-mcp@v1.25.4...v1.25.5) (2026-06-19)

* Add triage-sentry-issues daemon (chrisdoc#359)

* feat(agents): add triage-sentry-issues daemon

* fix(daemon): watch for new sentry issues

* Apply suggestions from code review

Co-authored-by: gitstream-cm[bot] <111687743+gitstream-cm[bot]@users.noreply.github.com>

---------

Co-authored-by: CharlieHelps <charlie@charlielabs.ai>
Co-authored-by: Christoph Kieslich <c.kieslich@gmail.com>
Co-authored-by: gitstream-cm[bot] <111687743+gitstream-cm[bot]@users.noreply.github.com>

* chore(deps): bump actions/checkout in the github-core-actions group (chrisdoc#362)

Bumps the github-core-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-core-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.25.6 [skip ci]

## [1.25.6](chrisdoc/hevy-mcp@v1.25.5...v1.25.6) (2026-06-23)

* chore(deps): bump the production-dependencies group with 2 updates (chrisdoc#363)

Bumps the production-dependencies group with 2 updates: [@sentry/node](https://github.com/getsentry/sentry-javascript) and [axios](https://github.com/axios/axios).


Updates `@sentry/node` from 10.58.0 to 10.59.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.58.0...10.59.0)

Updates `axios` from 1.18.0 to 1.18.1
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.18.0...v1.18.1)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-version: 10.59.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: axios
  dependency-version: 1.18.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.25.7 [skip ci]

## [1.25.7](chrisdoc/hevy-mcp@v1.25.6...v1.25.7) (2026-06-23)

* chore(deps-dev): bump the development-dependencies group with 11 updates (chrisdoc#364)

Bumps the development-dependencies group with 11 updates:

| Package | From | To |
| --- | --- | --- |
| [@kubb/cli](https://github.com/kubb-labs/kubb/tree/HEAD/packages/cli) | `4.38.0` | `4.39.1` |
| [@kubb/core](https://github.com/kubb-labs/kubb/tree/HEAD/packages/core) | `4.38.0` | `4.39.1` |
| [@kubb/plugin-client](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-client) | `4.38.0` | `4.39.1` |
| [@kubb/plugin-faker](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-faker) | `4.38.0` | `4.39.1` |
| [@kubb/plugin-oas](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-oas) | `4.38.0` | `4.39.1` |
| [@kubb/plugin-ts](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-ts) | `4.38.0` | `4.39.1` |
| [@kubb/plugin-zod](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-zod) | `4.38.0` | `4.39.1` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.9.3` | `26.0.0` |
| [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) | `0.55.0` | `0.56.0` |
| [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) | `1.70.0` | `1.71.0` |
| [tsdown](https://github.com/rolldown/tsdown) | `0.22.2` | `0.22.3` |


Updates `@kubb/cli` from 4.38.0 to 4.39.1
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/cli@4.39.1/packages/cli/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/cli@4.39.1/packages/cli)

Updates `@kubb/core` from 4.38.0 to 4.39.1
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/core@4.39.1/packages/core/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/core@4.39.1/packages/core)

Updates `@kubb/plugin-client` from 4.38.0 to 4.39.1
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-client@4.39.1/packages/plugin-client/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-client@4.39.1/packages/plugin-client)

Updates `@kubb/plugin-faker` from 4.38.0 to 4.39.1
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-faker@4.39.1/packages/plugin-faker/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-faker@4.39.1/packages/plugin-faker)

Updates `@kubb/plugin-oas` from 4.38.0 to 4.39.1
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-oas@4.39.1/packages/plugin-oas/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-oas@4.39.1/packages/plugin-oas)

Updates `@kubb/plugin-ts` from 4.38.0 to 4.39.1
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-ts@4.39.1/packages/plugin-ts/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-ts@4.39.1/packages/plugin-ts)

Updates `@kubb/plugin-zod` from 4.38.0 to 4.39.1
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-zod@4.39.1/packages/plugin-zod/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-zod@4.39.1/packages/plugin-zod)

Updates `@types/node` from 25.9.3 to 26.0.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `oxfmt` from 0.55.0 to 0.56.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxfmt/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxfmt_v0.56.0/npm/oxfmt)

Updates `oxlint` from 1.70.0 to 1.71.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.71.0/npm/oxlint)

Updates `tsdown` from 0.22.2 to 0.22.3
- [Release notes](https://github.com/rolldown/tsdown/releases)
- [Commits](rolldown/tsdown@v0.22.2...v0.22.3)

---
updated-dependencies:
- dependency-name: "@kubb/cli"
  dependency-version: 4.39.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@kubb/core"
  dependency-version: 4.39.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-client"
  dependency-version: 4.39.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-faker"
  dependency-version: 4.39.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-oas"
  dependency-version: 4.39.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-ts"
  dependency-version: 4.39.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-zod"
  dependency-version: 4.39.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@types/node"
  dependency-version: 26.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: development-dependencies
- dependency-name: oxfmt
  dependency-version: 0.56.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: oxlint
  dependency-version: 1.71.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: tsdown
  dependency-version: 0.22.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.25.8 [skip ci]

## [1.25.8](chrisdoc/hevy-mcp@v1.25.7...v1.25.8) (2026-06-23)

* chore: simplify dependabot grouping and weekly schedule (chrisdoc#366)

* chore(release): 1.25.9 [skip ci]

## [1.25.9](chrisdoc/hevy-mcp@v1.25.8...v1.25.9) (2026-06-23)

* chore(deps): bump @sentry/node in the production-dependencies group (chrisdoc#367)

Bumps the production-dependencies group with 1 update: [@sentry/node](https://github.com/getsentry/sentry-javascript).


Updates `@sentry/node` from 10.59.0 to 10.60.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.59.0...10.60.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-version: 10.60.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump the development-dependencies group with 10 updates (chrisdoc#368)

Bumps the development-dependencies group with 10 updates:

| Package | From | To |
| --- | --- | --- |
| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `21.0.2` | `21.1.0` |
| [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) | `21.0.2` | `21.1.0` |
| [@commitlint/prompt-cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/prompt-cli) | `21.0.2` | `21.1.0` |
| [@kubb/cli](https://github.com/kubb-labs/kubb/tree/HEAD/packages/cli) | `4.39.1` | `4.39.2` |
| [@kubb/core](https://github.com/kubb-labs/kubb/tree/HEAD/packages/core) | `4.39.1` | `4.39.2` |
| [@kubb/plugin-client](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-client) | `4.39.1` | `4.39.2` |
| [@kubb/plugin-faker](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-faker) | `4.39.1` | `4.39.2` |
| [@kubb/plugin-oas](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-oas) | `4.39.1` | `4.39.2` |
| [@kubb/plugin-ts](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-ts) | `4.39.1` | `4.39.2` |
| [@kubb/plugin-zod](https://github.com/kubb-labs/kubb/tree/HEAD/packages/plugin-zod) | `4.39.1` | `4.39.2` |


Updates `@commitlint/cli` from 21.0.2 to 21.1.0
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.1.0/@commitlint/cli)

Updates `@commitlint/config-conventional` from 21.0.2 to 21.1.0
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.1.0/@commitlint/config-conventional)

Updates `@commitlint/prompt-cli` from 21.0.2 to 21.1.0
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/prompt-cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.1.0/@commitlint/prompt-cli)

Updates `@kubb/cli` from 4.39.1 to 4.39.2
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/cli@4.39.2/packages/cli/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/cli@4.39.2/packages/cli)

Updates `@kubb/core` from 4.39.1 to 4.39.2
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/core@4.39.2/packages/core/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/core@4.39.2/packages/core)

Updates `@kubb/plugin-client` from 4.39.1 to 4.39.2
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-client@4.39.2/packages/plugin-client/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-client@4.39.2/packages/plugin-client)

Updates `@kubb/plugin-faker` from 4.39.1 to 4.39.2
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-faker@4.39.2/packages/plugin-faker/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-faker@4.39.2/packages/plugin-faker)

Updates `@kubb/plugin-oas` from 4.39.1 to 4.39.2
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-oas@4.39.2/packages/plugin-oas/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-oas@4.39.2/packages/plugin-oas)

Updates `@kubb/plugin-ts` from 4.39.1 to 4.39.2
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-ts@4.39.2/packages/plugin-ts/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-ts@4.39.2/packages/plugin-ts)

Updates `@kubb/plugin-zod` from 4.39.1 to 4.39.2
- [Release notes](https://github.com/kubb-labs/kubb/releases)
- [Changelog](https://github.com/kubb-labs/kubb/blob/@kubb/plugin-zod@4.39.2/packages/plugin-zod/CHANGELOG.md)
- [Commits](https://github.com/kubb-labs/kubb/commits/@kubb/plugin-zod@4.39.2/packages/plugin-zod)

---
updated-dependencies:
- dependency-name: "@commitlint/cli"
  dependency-version: 21.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@commitlint/config-conventional"
  dependency-version: 21.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@commitlint/prompt-cli"
  dependency-version: 21.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@kubb/cli"
  dependency-version: 4.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@kubb/core"
  dependency-version: 4.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-client"
  dependency-version: 4.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-faker"
  dependency-version: 4.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-oas"
  dependency-version: 4.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-ts"
  dependency-version: 4.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@kubb/plugin-zod"
  dependency-version: 4.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 1.25.10 [skip ci]

## [1.25.10](chrisdoc/hevy-mcp@v1.25.9...v1.25.10) (2026-06-23)

* docs: add add-mcp setup instructions to README (chrisdoc#361)

Co-authored-by: CharlieHelps <charlie@charlielabs.ai>

* chore(release): 1.25.11 [skip ci]

## [1.25.11](chrisdoc/hevy-mcp@v1.25.10...v1.25.11) (2026-06-23)

* chore(release): include all semantic commit types in notes (chrisdoc#370)

Co-authored-by: CharlieHelps <charlie@charlielabs.ai>

* chore(release): 1.25.12 [skip ci]

## [1.25.12](chrisdoc/hevy-mcp@v1.25.11...v1.25.12) (2026-06-24)

* feat: declare outputSchema and return structuredContent for tools

Migrate all JSON-returning MCP tools from server.tool to server.registerTool
with a declared outputSchema, and return structuredContent alongside the text
content. Modern MCP clients (e.g. claude.ai Connectors) get a typed, validated
structured channel.

- formatters.ts: Zod schemas are now the source of truth; FormattedX types are
  derived via z.infer, so formatter/schema drift fails at compile time.
- response-formatter.ts: createJsonResponse also emits structuredContent for
  object payloads (arrays/primitives unchanged for back-compat).
- Each tool wraps its payload in a named key matching its outputSchema key;
  empty lists return the wrapped empty array; not-found/failure paths throw
  (becoming isError responses the SDK does not output-validate); plain-text
  tools keep no outputSchema.
- Add src/tools/output-schema-validation.test.ts: drives every schema-bearing
  tool's success path and asserts structuredContent validates against its
  declared outputSchema (the SDK check that per-tool unit tests skip).
- Docs: AGENTS.md tool-implementation pattern updated.

270 unit tests pass; check:types, oxlint/oxfmt, and build all green.

* test(integration): assert wrapped get-workouts shape and structuredContent

get-workouts now returns { workouts: [...] } with a matching outputSchema; the
integration test (real McpServer + InMemoryTransport) validates the workouts
array and that structuredContent mirrors the text content. Verified against the
live Hevy API.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: Christoph Kieslich <c.kieslich@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: charliecreates[bot] <198680274+charliecreates[bot]@users.noreply.github.com>
Co-authored-by: CharlieHelps <charlie@charlielabs.ai>
Co-authored-by: gitstream-cm[bot] <111687743+gitstream-cm[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

triage-sentry-issues

2 participants