Skip to content

deps: bump zod from 3.25.76 to 4.3.6#17

Closed
dependabot[bot] wants to merge 21 commits intomainfrom
dependabot/npm_and_yarn/zod-4.3.6
Closed

deps: bump zod from 3.25.76 to 4.3.6#17
dependabot[bot] wants to merge 21 commits intomainfrom
dependabot/npm_and_yarn/zod-4.3.6

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github Apr 10, 2026

Bumps zod from 3.25.76 to 4.3.6.

Release notes

Sourced from zod's releases.

v4.3.6

Commits:

  • 9977fb0868432461de265a773319e80a90ba3e37 Add brand.dev to sponsors
  • f4b7bae3468f6188b8f004e007d722148fc91d77 Update pullfrog.yml (#5634)
  • 251d7163a0ac7740fee741428d913e3c55702ace Clean up workflow_call
  • edd4132466da0f5065a8e051b599d01fdd1081d8 fix: add missing User-agent to robots.txt and allow all (#5646)
  • 85db85e9091d0706910d60c7eb2e9c181edd87bd fix: typo in codec.test.ts file (#5628)
  • cbf77bb12bdfda2e054818e79001f5cb3798ce76 Avoid non null assertion (#5638)
  • dfbbf1c1ae0c224b8131d80ddf0a264262144086 Avoid re-exported star modules (#5656)
  • 762e911e5773f949452fd6dd4e360f2362110e8e Generalize numeric key handling
  • ca3c8629c0c2715571f70b44c2433cad3db7fe4e v4.3.6

v4.3.5

Commits:

  • 21afffdb42ccab554036312e33fed0ea3cb8f982 [Docs] Update migration guide docs for deprecation of message (#5595)
  • e36743e513aadb307b29949a80d6eb0dcc8fc278 Improve mini treeshaking
  • 0cdc0b8597999fd9ca99767b912c1e82c1ff2d6c 4.3.5

v4.3.4

Commits:

  • 1a8bea3b474eada6f219c163d0d3ad09fadabe72 Add integration tests
  • e01cd02b2f23d7e9078d3813830b146f8a2258b4 Support patternProperties for looserecord (#5592)
  • 089e5fbb0f58ce96d2c4fb34cd91724c78df4af5 Improve looseRecord docs
  • decef9c418d9a598c3f1bada06891ba5d922c5cd Fix lint
  • 9443aab00d44d5d5f4a7eada65fc0fc851781042 Drop iso time in fromJSONSchema
  • 66bda7491a1b9eab83bdeec0c12f4efc7290bd48 Remove .refine() from ZodMiniType
  • b4ab94ca608cd5b581bfc12b20dd8d95b35b3009 4.3.4

v4.3.3

Commits:

  • f3b2151959d215d405f54dff3c7ab3bf1fd887ca v4.3.3

v4.3.2

Commits:

  • bf96635d243118de6e4f260077aa137453790bf6 Loosen strictObjectinside intersection (#5587)
  • f71dc0182ab0f0f9a6be6295b07faca269e10179 Remove Juno (#5590)
  • 0f41e5a12a43e6913c9dcb501b2b5136ea86500d 4.3.2

v4.3.1

Commits:

  • 0fe88407a4149c907929b757dc6618d8afe998fc allow non-overwriting extends with refinements. 4.3.1

v4.3.0

This is Zod's biggest release since 4.0. It addresses several of Zod's longest-standing feature requests.

... (truncated)

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

TechNet365 and others added 21 commits March 23, 2026 20:26
MCP (Model Context Protocol) server for TastyTrade trading operations.
Consumed by DeerFlow AI agent (tasty-autonomus).

Features:
- OAuth authentication (clientId + clientSecret + refreshToken)
- Same SDK v6 generateAccessToken patch as main TastyScanner app
- 9 MCP tools: market overview, strategies, positions, execute trade,
  close position (safe guidance), adjust order (auto-replace),
  working orders, account info, connection status
- Iron Condor strategy builder (server-side port of strategies-builder.ts)
- DxLink quote streamer with 5s data wait for strategy calculations
- HTTP transport (Streamable HTTP + legacy SSE fallback)
- Docker-ready with health checks

Architecture:
- Independent TastyTrade session (not proxied through UI app)
- Runs on internal Docker network only (port 7698)
- Designed as sidecar container alongside main TastyScanner UI
- Removed SSEServerTransport (deprecated in MCP SDK, replaced by StreamableHTTPServerTransport)
- Removed /sse and /messages endpoints — only /mcp (Streamable HTTP) remains
- Added ENABLE_LIVE_TRADING env var (default: false)
  - Gates execute_trade and adjust_order tools
  - When disabled, both tools return TRADING_DISABLED error
  - All read-only tools (market overview, strategies, positions, etc.) work regardless
- Startup log now shows trading status
Strategy builder now supports all strategies from main TastyScanner UI:

Credit strategies (sell premium, positive theta):
  - Iron Condor — put spread + call spread, different short strikes
  - Put Credit Spread — STO put + BTO put below
  - Call Credit Spread — STO call + BTO call above
  - Iron Butterfly — like IC but short strikes at same ATM price
  - Jade Lizard — naked STO put + call spread (zero upside risk)
  - Twisted Sister — naked STO call + put spread (zero downside risk)

Debit strategies (buy premium, negative theta):
  - Long Straddle — BTO put + BTO call at same strike
  - Long Strangle — BTO put + BTO call at different OTM strikes
  - Bull Call Spread — BTO call lower + STO call higher
  - Bear Put Spread — BTO put higher + STO put lower
  - Call Butterfly — BTO lower + 2xSTO mid + BTO upper (calls)
  - Put Butterfly — BTO lower + 2xSTO mid + BTO upper (puts)

get_strategies tool:
  - New strategy_type param: 'all' or any specific type
  - Separate delta filters for credit vs debit strategies
  - debit_min_delta/debit_max_delta params (default 0.30-0.50)
  - Broken wing butterfly detection

All 9 tool descriptions rewritten with clear, detailed explanations
of what each tool does, when to use it, and what it returns.
getNestedOptionChain() returns an array — each element has .expirations.
Previous code did rawChain?.expirations on the array, getting undefined → 0 expirations.

Now iterates over the array (same as main app's tasty-market-data-provider.ts)
and flattens all expirations. Also parseFloat on strike-price to match main app.
New tools:
  - get_watchlists — lists personal + TastyTrade platform watchlists
  - manage_watchlist — create/add/remove/delete personal watchlists

get_market_overview enhanced:
  - watchlist param — scan symbols from a personal watchlist
  - public_watchlist param — scan from TastyTrade platform watchlists
  - hide_earnings_within_days filter — avoid IV crush risk
  - Response now includes source and count metadata

tasty-client.ts: added getUserWatchlists, getPublicWatchlists,
getWatchlist, createWatchlist, replaceWatchlist, deleteWatchlist

DeerFlow workflow:
  1. get_watchlists() → see available lists
  2. get_market_overview(public_watchlist='High Options Volume') → scan
  3. manage_watchlist(action='create', name='My Candidates', symbols=[...])
  4. get_market_overview(watchlist='My Candidates') → monitor your list
  5. get_strategies(symbol) → find trades on candidates
  6. manage_watchlist(action='remove', ...) → clean stale symbols

Total: 11 MCP tools, 2809 lines
get_market_overview now uses a single 'watchlist' param instead of separate
watchlist/public_watchlist. Resolution order:
  1. Try personal watchlist by name
  2. If not found, search TastyTrade platform watchlists (case-insensitive)
  3. If neither found, return WATCHLIST_NOT_FOUND with hint to use get_watchlists()

This means the agent can just call get_market_overview(watchlist='High IVR')
without knowing if it's personal or platform — the tool figures it out.

Removed public_watchlist param — no longer needed.
Added auto-reconnect logic for API calls that fail due to expired tokens, preventing concurrent reconnect attempts.
…on IDs

Security:
- MCP_AUTH_TOKEN env var for Bearer token auth on /mcp endpoints
  (constant-time comparison via crypto.timingSafeEqual)
- CORS middleware (configurable via MCP_CORS_ORIGIN, default localhost:3333)
- Rate limiter: 120 req/min per IP on MCP endpoints
- Session IDs: crypto.randomUUID() instead of predictable Date.now()
- Removed (transport as any).sessionId — use WeakMap tracking
- Account numbers masked in logs (last 4 digits only)
- Health endpoint shows auth_enabled and live_trading status

README:
- Removed TASTY_USERNAME/TASTY_PASSWORD (never existed in code)
- Added correct OAuth env vars table with MCP_AUTH_TOKEN
- Added auth headers to curl examples
- Rewrote Security Notes section

Docker:
- Added MCP_AUTH_TOKEN to docker-compose.yml and combined.yml
- Improved .dockerignore (.env.*, .DS_Store, docker-compose files)
Created src/tasty-api-types.ts with comprehensive interfaces:
  TastyAccountApiResponse, TastyBalanceApiResponse,
  TastyStreamerMessage, TastyStreamerEvent,
  TastyHttpClientInternals (SDK patch),
  TastyOrderApiResponse + Leg + Fill,
  TastyPositionApiResponse + Leg,
  TastyChainApiResponse + Expiration + Strike,
  TastyMetricsApiResponse, TastyEquityInfoApiResponse + TickSize,
  TastyWatchlistApiResponse + Entry,
  extractErrorMessage() + extractHttpStatus() helpers

tasty-client.ts (26 → 0 any):
  - All public API methods now return typed responses
  - catch (err: any) → catch (err: unknown) + extractErrorMessage()
  - httpClient SDK patch: as any → as unknown as TastyHttpClientInternals
  - Streamer events: any → TastyStreamerEvent
  - Account loading: any[] → TastyAccountApiResponse[]

mcp-server.ts (32 → 0 any):
  - All catch blocks: err: any → err: unknown + extractErrorMessage()
  - Watchlist parsing: any → TastyWatchlistApiResponse
  - Position parsing: any → TastyPositionApiResponse
  - Order parsing: any → TastyOrderApiResponse
  - Removed unsafe (x as any)?.data?.items fallbacks

strategy-builder.ts (4 → 0 any):
  - _parseChain: any → TastyChainApiResponse
  - Expiration/strike mapping: typed interfaces

Remaining 4 any: logger.ts (...args: any[]) — correct type for
console.log variadic parameters, cannot be narrowed further.
- Fixed position leg mapping: TastyPositionApiResponse → TastyPositionLegApiResponse
  with proper fallback cast for single-leg positions
- Fixed order property access: removed camelCase aliases (underlyingSymbol, priceEffect,
  orderType, timeInForce, receivedAt) — use only kebab-case from API
- Fixed metrics mapping: parse close-price as string, default symbol to ''
- Fixed watchlist entry extraction: always return string, not union type
- Fixed publicFormatted type: symbol_count instead of symbols array
- Fixed adjust_order: parse price string→number, use TastyOrderLegApiResponse for legs
- Fixed strategy-builder: use only kebab-case expiration properties
- Added index signatures to TastyPositionApiResponse, TastyPositionLegApiResponse,
  TastyOrderApiResponse to allow kebab-case property access
- Build: npx tsc --noEmit passes with 0 errors
DxLink reconnect spam fix:
- Created market-status.ts (same logic as main app)
- When streamer disconnects and market is closed, logs one clean message
  instead of spamming 'Unable to connect' every few seconds
- Polls every 60s, reconnects automatically when trading resumes
- market_status added to ConnectionStatus and health endpoint

Tool descriptions shortened ~60% for small model compatibility:
- get_market_overview: 8 lines → 2
- get_strategies: 15 lines → 4
- get_positions: 6 lines → 1
- execute_trade: 5 lines → 2
- close_position: 4 lines → 1
- adjust_order: 5 lines → 1
- get_account_info: 4 lines → 1
- get_connection_status: 4 lines → 1
- get_watchlists: 8 lines → 1
- manage_watchlist: 8 lines → 1

get_strategies improvements:
- Added max_loss parameter (filter by max loss per contract in $)
- Hard cap max_results at 50 (was unlimited)
- Response now wrapped: {symbol, strategy_type, total_found, returned, strategies}
  so AI knows how many were filtered vs returned
- Logs total vs returned count
Bumps  and [path-to-regexp](https://github.com/pillarjs/path-to-regexp). These dependencies needed to be updated together.

Updates `path-to-regexp` from 8.3.0 to 8.4.0
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](pillarjs/path-to-regexp@v8.3.0...v8.4.0)

Updates `path-to-regexp` from 0.1.12 to 0.1.13
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](pillarjs/path-to-regexp@v8.3.0...v8.4.0)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-version: 8.4.0
  dependency-type: indirect
- dependency-name: path-to-regexp
  dependency-version: 0.1.13
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
- Add MIT LICENSE
- Add CONTRIBUTING.md guidelines
- Add CODEOWNERS for auto-review assignment
- Add CodeQL security analysis workflow
- Add Release workflow with Docker publishing
- Update README with badges, sponsors section, and better structure
- Configure Dependabot for npm, docker, and actions
- Add issue templates (bug report, feature request)
- Add PR template
- Add GitHub Sponsors funding config
Bumps [zod](https://github.com/colinhacks/zod) from 3.25.76 to 4.3.6.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](colinhacks/zod@v3.25.76...v4.3.6)

---
updated-dependencies:
- dependency-name: zod
  dependency-version: 4.3.6
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
@dependabot dependabot Bot added the dependencies Pull requests that update a dependency file label Apr 10, 2026
@dependabot dependabot Bot requested a review from technet365 as a code owner April 10, 2026 08:58
@technet365 technet365 enabled auto-merge April 10, 2026 09:26
@technet365 technet365 closed this Apr 10, 2026
auto-merge was automatically disabled April 10, 2026 09:53

Pull request was closed

@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github Apr 10, 2026

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot dependabot Bot deleted the dependabot/npm_and_yarn/zod-4.3.6 branch April 10, 2026 09:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants