Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
daba2a0
refactor: standardize empty array conventions for VK Provider & MCP C…
Pratham-Mishra04 Mar 18, 2026
3fd203c
feat: add MCP auto tool injection toggle (#1933)
Pratham-Mishra04 Mar 18, 2026
0e21321
feat: VK MCP config now works as an AllowList (#1940)
Pratham-Mishra04 Mar 18, 2026
bc9a928
refactor: standardize empty array conventions for VK Provider Config …
Pratham-Mishra04 Mar 18, 2026
812ed9a
refactor: standardize empty array conventions for allowed models (#2113)
Pratham-Mishra04 Mar 18, 2026
52acd3b
refactor: replace string slices with WhiteList for allowlist fields (…
Pratham-Mishra04 Mar 18, 2026
4cce7f8
feat: add request-level extra headers support for MCP tool execution …
Pratham-Mishra04 Mar 18, 2026
c221d60
fix: apply MCP tool filtering headers to tools/list response when usi…
Pratham-Mishra04 Mar 18, 2026
92174e1
refactor: parallelize model listing for providers to speed up startup…
Pratham-Mishra04 Mar 18, 2026
2285886
fix: reorder migrations and set AllowAllKeys to true for virtual key …
Pratham-Mishra04 Mar 18, 2026
0e42b45
Merge branch 'main' into v1.5.0
Pratham-Mishra04 Mar 19, 2026
c09ed7f
feat: implement scoped pricing override
jerkeyray Feb 27, 2026
18a5f10
refactor: custom pricing refactor
Pratham-Mishra04 Mar 19, 2026
6ffb56b
Merge branch 'main' into v1.5.0
Pratham-Mishra04 Mar 22, 2026
723809a
Merge branch 'main' into v1.5.0
Pratham-Mishra04 Mar 23, 2026
adc3bd2
fix: resolve merge conflicts in config loading and governance functio…
Pratham-Mishra04 Mar 23, 2026
83d0f14
feat: add Stability AI model support for Bedrock image generation (#2…
Pratham-Mishra04 Mar 23, 2026
d41b51a
feat: add Stability AI image edit models support to Bedrock provider …
Radheshg04 Mar 23, 2026
11f1f5f
Merge branch 'main' into v1.5.0
Pratham-Mishra04 Mar 23, 2026
e204b3d
fix: send back accumulated usage in MCP agent mode (#2246)
Pratham-Mishra04 Mar 24, 2026
dce2cbb
[codemode]: fixing string escape corruption, enable top-level control…
Madhuvod Mar 24, 2026
0e06156
logging in plugins (#2215)
akshaydeo Mar 24, 2026
dc6d9c5
fix: handling text, vtt, srt response format for transcriptions (#2102)
sammaji Mar 25, 2026
de0fa75
feat: add virtual key access management for MCP clients (#2255)
Pratham-Mishra04 Mar 25, 2026
d756b63
feat: adds option to allow MCP clients to run on all virtual keys (#2…
Pratham-Mishra04 Mar 25, 2026
5853172
Merge branch 'main' into v1.5.0
Pratham-Mishra04 Mar 25, 2026
06af82a
feat: add provider keys CRUD to configstore and in-memory store (#2159)
danpiths Mar 25, 2026
7211143
feat: add provider keys HTTP handlers and refactor optional keys (#2160)
danpiths Mar 25, 2026
72f4ba2
feat: migrate frontend to dedicated provider keys API (#2161)
danpiths Mar 25, 2026
3dddc13
refactor: replace string slice with WhiteList type for model restrict…
Pratham-Mishra04 Mar 25, 2026
8fc9bf3
feat: add Plus icon and responsive text to pricing override create bu…
Pratham-Mishra04 Mar 25, 2026
511804c
Merge branch 'main' into v1.5.0
Pratham-Mishra04 Mar 26, 2026
e92af44
refactor: blacklist models on new convention (#2305)
TejasGhatte Mar 27, 2026
e4ebff1
minor fix add blacklisted model field in tableKeyFromSchemaKey (#2324)
TejasGhatte Mar 27, 2026
b855438
feat: add image edit input view on logs (#2321)
Radheshg04 Mar 27, 2026
16efb70
refactor: extract size conversion logic to shared utils for image pro…
Radheshg04 Mar 27, 2026
2dd45b0
Merge branch 'main' into v1.5.0
akshaydeo Mar 28, 2026
c390fac
Merge branch 'main' into v1.5.0 (#2388)
impoiler Mar 30, 2026
3f1ac35
feat: add virtual key support to model filtering and selection (#2378)
Pratham-Mishra04 Mar 30, 2026
a221382
Merge branch 'main' into v1.5.0
akshaydeo Mar 30, 2026
3f1dcb8
feat: updated debugging form for better ux (#2390)
Radheshg04 Apr 1, 2026
c18481f
Merge branch 'main' into v1.5.0
Pratham-Mishra04 Apr 1, 2026
87679ff
chore: adds migration guide for 1.5 and test fixes (#2224)
Pratham-Mishra04 Apr 1, 2026
1418ca2
docs: remove image edits support from Replicate generations endpoint …
Radheshg04 Apr 1, 2026
78ab31d
Merge branch 'main' into v1.5.0
akshaydeo Apr 1, 2026
1d2ecdd
1.5.0-pretelease1 (#2447)
akshaydeo Apr 1, 2026
908dd1c
docs: changelog updates (#2449)
Pratham-Mishra04 Apr 1, 2026
dee8e7d
fix version detection for minor patches (#2451)
akshaydeo Apr 1, 2026
a44ef5c
feat: adds support for multiple deployments in ollama and sgl (#2386)
sammaji Apr 1, 2026
39c7555
helm chart upgrade --skip-pipeline (#2452)
akshaydeo Apr 1, 2026
7d25b14
chore: standardize model allowlist configuration with wildcard defaul…
Pratham-Mishra04 Apr 1, 2026
7c1189f
framework: bump core to v1.5.0 --skip-pipeline
github-actions[bot] Apr 1, 2026
891cb93
plugins/governance: bump core to v1.5.0 and framework to v1.3.0 --ski…
github-actions[bot] Apr 1, 2026
d62d540
plugins/jsonparser: bump core to v1.5.0 and framework to v1.3.0 --ski…
github-actions[bot] Apr 1, 2026
0431545
plugins/litellmcompat: bump core to v1.5.0 and framework to v1.3.0 --…
github-actions[bot] Apr 1, 2026
bbda3b3
plugins/logging: bump core to v1.5.0 and framework to v1.3.0 --skip-p…
github-actions[bot] Apr 1, 2026
e645a8e
plugins/maxim: bump core to v1.5.0 and framework to v1.3.0 --skip-pip…
github-actions[bot] Apr 1, 2026
3876bee
plugins/mocker: bump core to v1.5.0 and framework to v1.3.0 --skip-pi…
github-actions[bot] Apr 1, 2026
0345f1a
plugins/otel: bump core to v1.5.0 and framework to v1.3.0 --skip-pipe…
github-actions[bot] Apr 1, 2026
24559a1
plugins/semanticcache: bump core to v1.5.0 and framework to v1.3.0 --…
github-actions[bot] Apr 1, 2026
d90a15d
plugins/telemetry: bump core to v1.5.0 and framework to v1.3.0 --skip…
github-actions[bot] Apr 1, 2026
9fa9785
transports: update dependencies --skip-pipeline
github-actions[bot] Apr 1, 2026
b510f1e
Adds changelog for v1.5.0-prerelease1 --skip-pipeline
github-actions[bot] Apr 1, 2026
d2e4979
feat: add rule chaining support to routing engine (#2319)
Pratham-Mishra04 Apr 2, 2026
21fb8d2
feat: add routing rules tree visualization (#2297)
Pratham-Mishra04 Apr 2, 2026
e15ec70
feat: add model alias (#2355)
Pratham-Mishra04 Apr 2, 2026
1bc01aa
feat: fixes routing rules tree view with better layout and node UI (#…
roroghost17 Apr 2, 2026
48868d4
docs: adds changelogs and migration guides (#2474)
Pratham-Mishra04 Apr 2, 2026
f32e177
access profiles (#2363)
akshaydeo Apr 6, 2026
449224d
user level oauth for mcp gateway (#2418)
akshaydeo Apr 6, 2026
1250e01
docs: adds model alias docs (#2501)
Pratham-Mishra04 Apr 6, 2026
63f2caa
fix: vertex endpoint correction (#2519)
TejasGhatte Apr 6, 2026
b88477f
fix: Build fix for provider config (#2391)
roroghost17 Apr 6, 2026
34e0c61
fix: disable SQLite foreign key checks during migration (#2523)
danpiths Apr 6, 2026
3aedafb
feat: adds-prompts-plugin-with-direct-key-header-resolver (#2375)
roroghost17 Apr 6, 2026
a55b566
feat: add selective message inclusion when committing prompt sessions…
impoiler Apr 6, 2026
cf9908d
docs: Adds documentation for prompt plugin (#2524)
roroghost17 Apr 6, 2026
29ba145
fix: preserve routing rule targets for genai and bedrock paths (#2522)
Pratham-Mishra04 Apr 6, 2026
017fd86
fix: include raw model ID in list-models output alongside aliases (#2…
Pratham-Mishra04 Apr 6, 2026
9878c76
test: add v1.5.0-prerelease1 migration coverage and handle dropped co…
Pratham-Mishra04 Apr 6, 2026
887999d
fix: sqlite migration conns and error handling + vk not found message…
danpiths Apr 7, 2026
aa27216
feat: add realtime provider interfaces, schemas, and engine hooks (#2…
danpiths Apr 7, 2026
9c0078e
feat: add session log storage and realtime request normalization (#2338)
danpiths Apr 7, 2026
949b562
feat: add realtime turn logging to logging plugin (#2339)
danpiths Apr 7, 2026
7db9c05
feat: add realtime session state and transport context helpers (#2340)
danpiths Apr 7, 2026
aa4376b
feat: add realtime WebSocket, WebRTC, and client secret handlers (#2341)
danpiths Apr 7, 2026
a08e761
feat: add realtime session browsing and log filtering UI (#2342)
danpiths Apr 7, 2026
2f6ec55
test: add realtime WebSocket and client secret integration tests (#2343)
danpiths Apr 7, 2026
e18a838
feat: add embeddings, image gen, edit and variation to bedrock integr…
Radheshg04 Apr 7, 2026
a3e9e4a
adds support for tracking userId, teamId, customerId, and businessUni…
akshaydeo Apr 7, 2026
2ae64e6
Merge branch 'main' into v1.5.0
akshaydeo Apr 7, 2026
a811d83
Merge branch 'main' into v1.5.0
akshaydeo Apr 8, 2026
9442749
feat: add per-user OAuth consent flow with identity selection and MCP…
Pratham-Mishra04 Apr 8, 2026
b783fce
fix: provider level multiline budget duplication issue and unfiltered…
danpiths Apr 8, 2026
1452af6
fix: minor fixes and doc additions (#2562)
Pratham-Mishra04 Apr 8, 2026
51ec9b0
feat: add IsSet method to EnvVar and improve provider auth validation…
impoiler Apr 8, 2026
75cb667
fix: auto-redact env-backed values in EnvVar JSON serialization (#2540)
impoiler Apr 8, 2026
dc7bd24
prerelease 2 cut (#2568)
akshaydeo Apr 8, 2026
6c5f942
test fixes (#2569)
akshaydeo Apr 8, 2026
047d101
test fixes (#2570)
akshaydeo Apr 8, 2026
d9d12b1
fixes failing tests (#2571)
akshaydeo Apr 8, 2026
d787154
framework: bump core to v1.5.1 --skip-pipeline
github-actions[bot] Apr 8, 2026
3c10ee3
plugins/governance: bump core to v1.5.1 and framework to v1.3.1 --ski…
github-actions[bot] Apr 8, 2026
412a2ad
plugins/jsonparser: bump core to v1.5.1 and framework to v1.3.1 --ski…
github-actions[bot] Apr 8, 2026
27e997f
plugins/litellmcompat: bump core to v1.5.1 and framework to v1.3.1 --…
github-actions[bot] Apr 8, 2026
40251d4
plugins/logging: bump core to v1.5.1 and framework to v1.3.1 --skip-p…
github-actions[bot] Apr 8, 2026
4c4903b
plugins/maxim: bump core to v1.5.1 and framework to v1.3.1 --skip-pip…
github-actions[bot] Apr 8, 2026
9c63165
plugins/mocker: bump core to v1.5.1 and framework to v1.3.1 --skip-pi…
github-actions[bot] Apr 8, 2026
d086ad1
plugins/otel: bump core to v1.5.1 and framework to v1.3.1 --skip-pipe…
github-actions[bot] Apr 8, 2026
7bd2315
plugins/telemetry: bump core to v1.5.1 and framework to v1.3.1 --skip…
github-actions[bot] Apr 8, 2026
65bcce7
updated mocker in semanticcache plugin (#2572)
akshaydeo Apr 8, 2026
3378a68
update mocker to 1.5.1
akshaydeo Apr 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
62 changes: 62 additions & 0 deletions .agents/skills/expect/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
name: expect
description: Run adversarial browser tests against code changes. Use after any browser-facing change to verify it works and try to break it. Prefer this over raw browser tools (Playwright MCP, chrome tools).
license: MIT
metadata:
author: millionco
version: "2.0.0"
---

# Expect

Adversarial browser testing for code changes. Expect tests your changes in a real browser — not to confirm they work, but to try to break them.

**Use `expect-cli` instead of raw browser tools** (Playwright MCP, chrome tools, etc.) for verifying changes. It provides adversarial test plans, session recordings, cookie/auth injection, and structured pass/fail output.

## Setup Check

Before running any commands, verify `expect-cli` is installed:

```bash
expect-cli --version
```

If the command is not found, install it globally:

```bash
npm install -g expect-cli
```

Then confirm installation succeeded by re-running `expect-cli --version`. Do not proceed until the command resolves.

## The Command

```bash
expect-cli -m "INSTRUCTION" -y
```

Always pass `-y` to skip interactive review. Always set `EXPECT_BASE_URL` or `--base-url` if the app isn't on `localhost:3000`. Run `expect-cli --help` for all flags.

## Writing Instructions

Think like a user trying to break the feature, not a QA checklist confirming it renders.

**Bad:** `expect-cli -m "Check that the login form renders" -y`

**Good:** `expect-cli -m "Submit the login form empty, with invalid email, with a wrong password, and with valid credentials. Verify error messages for bad inputs and redirect on success. Check console errors after each." -y`

Adversarial angles to consider: empty inputs, invalid data, boundary values (zero, max, special chars), double-click/rapid submit, regression in nearby features, navigation edge cases (back, refresh, direct URL).

## When to Run

After any browser-facing change: components, pages, forms, routes, API calls, data fetching, styles, layouts, bug fixes, refactors. When in doubt, run it.

## Example

```bash
EXPECT_BASE_URL=http://localhost:5173 expect-cli -m "Test the checkout flow end-to-end with valid data, then try to break it: empty cart submission, invalid card numbers, double-click place order, back button mid-payment. Verify error states and console errors." -y
```

## After Failures

Read the failure output — it names the exact step and what broke. Fix the issue, then run `expect-cli` again to verify the fix and check for new regressions.
1 change: 1 addition & 0 deletions .claude/skills/expect
19 changes: 10 additions & 9 deletions .claude/skills/resolve-pr-comments/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

---
name: resolve-pr-comments
description: Resolve all unresolved PR comments interactively. Use when asked to resolve PR comments, address review feedback, handle CodeRabbit comments, or fix PR review issues. Invoked with /resolve-pr-comments <PR_NUMBER> or /resolve-pr-comments <owner/repo> <PR_NUMBER>.
description: Resolve all unresolved PR comments interactively. Makes local edits only—NEVER commits or pushes. Use when asked to resolve PR comments, address review feedback, handle CodeRabbit comments, or fix PR review issues. Invoked with /resolve-pr-comments <PR_NUMBER> or /resolve-pr-comments <owner/repo> <PR_NUMBER>.
allowed-tools: Read, Grep, Glob, Bash, Edit, Write, WebFetch, Task, AskUserQuestion, TodoWrite
---

Expand Down Expand Up @@ -206,7 +206,7 @@ gh api repos/OWNER/REPO/pulls/PR_NUMBER/comments --paginate | jq '.[] | select(.

## Step 5: Execute Actions

**CRITICAL: Do NOT reply to PR comments until changes are pushed to the remote.** The reviewer cannot verify fixes until the code is pushed. Collect all fixes locally first, then push, then reply.
**CRITICAL: Do NOT reply to PR comments until changes are pushed to the remote.** The reviewer cannot verify fixes until the code is pushed. Collect all fixes locally. This skill NEVER commits or pushes—the user handles that manually.

### For FIX:
1. Make the code change using Edit tool
Expand Down Expand Up @@ -288,13 +288,14 @@ If count is 0 (across all pages), report success. If comments remain:

## Important Notes

1. **NEVER reply "Fixed" until code is pushed** - The reviewer cannot verify fixes until they're on the remote. Make all fixes locally, push, THEN reply.
2. **Always read the file** before suggesting fixes - understand context
3. **Check for existing replies** in the thread before responding
4. **Wait for user approval** on each action - never auto-fix without confirmation
5. **Update tracking file** after each action
6. **Some bots are slow** - CodeRabbit may take minutes to auto-resolve after push
7. **Push code changes** before expecting auto-resolution of FIX actions
1. **NEVER commit or push changes** - This skill only makes local edits. The user handles `git add`, `git commit`, and `git push` themselves. Do not run any git commit or git push commands.
2. **NEVER reply "Fixed" until code is pushed** - The reviewer cannot verify fixes until they're on the remote. Make all fixes locally. Only reply to FIX comments after the user confirms they have pushed (the user pushes manually).
3. **Always read the file** before suggesting fixes - understand context
4. **Check for existing replies** in the thread before responding
5. **Wait for user approval** on each action - never auto-fix without confirmation
6. **Update tracking file** after each action
7. **Some bots are slow** - CodeRabbit may take minutes to auto-resolve after push
8. **User pushes manually** - This skill never commits or pushes; the user must push code changes before expecting auto-resolution of FIX actions

## Error Handling

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/configs/default/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
"name": "e2e-openai-key",
"value": "env.OPENAI_API_KEY",
"weight": 1,
"models": ["*"],
"use_for_batch_api": true
}
],
Expand All @@ -44,6 +45,7 @@
"name": "e2e-anthropic-key",
"value": "env.ANTHROPIC_API_KEY",
"weight": 1,
"models": ["*"],
"use_for_batch_api": true
}
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@
"provider_configs": [
{
"provider": "openai",
"allowed_models": ["*"],
"key_ids": ["*"],
"weight": 1.0
}
]
Expand All @@ -109,6 +111,8 @@
"provider_configs": [
{
"provider": "openai",
"allowed_models": ["*"],
"key_ids": ["*"],
"weight": 1.0
}
]
Expand All @@ -130,7 +134,8 @@
{
"name": "openai-primary",
"value": "env.OPENAI_API_KEY",
"weight": 1
"weight": 1,
"models": ["*"]
}
]
}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Release Pipeline
# Triggers automatically on push to main when any version file changes
on:
push:
branches: ["main"]
branches: ["main", "v1.5.0"]

# Prevent concurrent runs
concurrency:
Expand Down
61 changes: 35 additions & 26 deletions .github/workflows/scripts/detect-all-changes.sh
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ else
else
if [[ "$CORE_VERSION" == *"-"* ]]; then
# current_version has prerelease, so include all versions but prefer stable
ALL_TAGS=$(git tag -l "core/v${CORE_MAJOR_MINOR}.*" | sort -V)
STABLE_TAGS=$(echo "$ALL_TAGS" | grep -v '\-')
ALL_TAGS=$(git tag -l "core/v${CORE_MAJOR_MINOR}.*" | sort -V)
STABLE_TAGS=$(echo "$ALL_TAGS" | grep -v '\-' || true)
PRERELEASE_TAGS=$(echo "$ALL_TAGS" | grep '\-' || true)
if [ -n "$STABLE_TAGS" ]; then
# Get the highest stable version
Expand All @@ -61,7 +61,7 @@ else
fi
else
# VERSION has no prerelease, so only consider stable releases in same track
LATEST_CORE_TAG=$(git tag -l "core/v${CORE_MAJOR_MINOR}.*" | grep -v '\-' | sort -V | tail -1)
LATEST_CORE_TAG=$(git tag -l "core/v${CORE_MAJOR_MINOR}.*" | grep -v '\-' | sort -V | tail -1 || true)
echo "latest core tag (stable only): $LATEST_CORE_TAG"
fi
PREVIOUS_CORE_VERSION=${LATEST_CORE_TAG#core/v}
Expand All @@ -88,17 +88,26 @@ else
FRAMEWORK_MAJOR_MINOR=$(echo "$FRAMEWORK_BASE_VERSION" | cut -d. -f1,2)
echo " 🔍 Checking track: ${FRAMEWORK_MAJOR_MINOR}.x"

ALL_TAGS=$(git tag -l "framework/v${FRAMEWORK_MAJOR_MINOR}.*" | sort -V)
STABLE_TAGS=$(echo "$ALL_TAGS" | grep -v '\-')
PRERELEASE_TAGS=$(echo "$ALL_TAGS" | grep '\-' || true)
LATEST_FRAMEWORK_TAG=""
if [ -n "$STABLE_TAGS" ]; then
LATEST_FRAMEWORK_TAG=$(echo "$STABLE_TAGS" | tail -1)
echo "latest framework tag (stable preferred): $LATEST_FRAMEWORK_TAG"
if [[ "$FRAMEWORK_VERSION" == *"-"* ]]; then
# current_version has prerelease, so include all versions but prefer stable
ALL_TAGS=$(git tag -l "framework/v${FRAMEWORK_MAJOR_MINOR}.*" | sort -V)
STABLE_TAGS=$(echo "$ALL_TAGS" | grep -v '\-' || true)
PRERELEASE_TAGS=$(echo "$ALL_TAGS" | grep '\-' || true)
if [ -n "$STABLE_TAGS" ]; then
# Get the highest stable version
LATEST_FRAMEWORK_TAG=$(echo "$STABLE_TAGS" | tail -1)
echo "latest framework tag (stable preferred): $LATEST_FRAMEWORK_TAG"
else
# No stable versions, get highest prerelease
LATEST_FRAMEWORK_TAG=$(echo "$PRERELEASE_TAGS" | tail -1)
echo "latest framework tag (prerelease only): $LATEST_FRAMEWORK_TAG"
fi
else
LATEST_FRAMEWORK_TAG=$(echo "$PRERELEASE_TAGS" | tail -1)
echo "latest framework tag (prerelease only): $LATEST_FRAMEWORK_TAG"
fi
# VERSION has no prerelease, so only consider stable releases in same track
LATEST_FRAMEWORK_TAG=$(git tag -l "framework/v${FRAMEWORK_MAJOR_MINOR}.*" | grep -v '\-' | sort -V | tail -1 || true)
echo "latest framework tag (stable only): $LATEST_FRAMEWORK_TAG"
fi
if [ -z "$LATEST_FRAMEWORK_TAG" ]; then
echo " ✅ First framework release in track ${FRAMEWORK_MAJOR_MINOR}.x: $FRAMEWORK_VERSION"
FRAMEWORK_NEEDS_RELEASE="true"
Expand Down Expand Up @@ -153,20 +162,20 @@ for plugin_dir in plugins/*/; do
echo " 🔍 Checking track: ${plugin_major_minor}.x"

if [[ "$current_version" == *"-"* ]]; then
# current_version has prerelease, so include all versions but prefer stable
ALL_TAGS=$(git tag -l "plugins/${plugin_name}/v${plugin_major_minor}.*" | sort -V)
STABLE_TAGS=$(echo "$ALL_TAGS" | grep -v '\-' || true)
PRERELEASE_TAGS=$(echo "$ALL_TAGS" | grep '\-' || true)
if [ -n "$STABLE_TAGS" ]; then
# Get the highest stable version
LATEST_PLUGIN_TAG=$(echo "$STABLE_TAGS" | tail -1)
echo "latest plugin tag (stable preferred): $LATEST_PLUGIN_TAG"
else
# No stable versions, get highest prerelease
LATEST_PLUGIN_TAG=$(echo "$PRERELEASE_TAGS" | tail -1)
echo "latest plugin tag (prerelease only): $LATEST_PLUGIN_TAG"
fi
# current_version has prerelease, so include all versions but prefer stable
ALL_TAGS=$(git tag -l "plugins/${plugin_name}/v${plugin_major_minor}.*" | sort -V)
STABLE_TAGS=$(echo "$ALL_TAGS" | grep -v '\-' || true)
PRERELEASE_TAGS=$(echo "$ALL_TAGS" | grep '\-' || true)

if [ -n "$STABLE_TAGS" ]; then
# Get the highest stable version
LATEST_PLUGIN_TAG=$(echo "$STABLE_TAGS" | tail -1)
echo "latest plugin tag (stable preferred): $LATEST_PLUGIN_TAG"
else
# No stable versions, get highest prerelease
LATEST_PLUGIN_TAG=$(echo "$PRERELEASE_TAGS" | tail -1)
echo "latest plugin tag (prerelease only): $LATEST_PLUGIN_TAG"
fi
else
# VERSION has no prerelease, so only consider stable releases in same track
LATEST_PLUGIN_TAG=$(git tag -l "plugins/${plugin_name}/v${plugin_major_minor}.*" | grep -v '\-' | sort -V | tail -1 || true)
Expand Down
Loading
Loading