+
+
+### Docker Scout
+
+[Docker Scout](https://docs.docker.com/scout/) is enabled at the Docker Hub repository level for the
+`maximhq/bifrost` image. Every image pushed to Docker Hub is automatically scanned for CVEs against
+continuously updated vulnerability databases.
+
+
+
+
+
+### GCP Artifact Registry Scanning
+
+Enterprise images are pushed to **GCP Artifact Registry** (and AWS ECR for select environments).
+GCP Artifact Registry provides [built-in vulnerability scanning](https://cloud.google.com/artifact-registry/docs/analysis)
+that automatically analyzes container images for OS and language package vulnerabilities.
+
+---
+
+## Supply Chain Security
+
+### GitHub Actions SHA Pinning
+
+All GitHub Actions in the open-source repository are pinned to exact commit SHAs — not mutable version
+tags. This prevents supply chain attacks where a compromised action maintainer could push malicious code
+to an existing tag.
+
+```yaml
+# Every action is pinned to a full SHA with a version comment
+- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+- uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
+- uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
+```
+
+**Coverage:**
+
+| Repository | Pinning Strategy | Actions Pinned |
+| --- | --- | --- |
+| `bifrost` (OSS) | Full SHA with version comment | 103 / 103 (100 %) |
+| `bifrost-enterprise` | Full SHA with version comment | 103 / 103 (100 %) |
+
+### NPM Provenance
+
+Published npm packages include [SLSA provenance attestations](https://docs.npmjs.com/generating-provenance-statements),
+providing a verifiable link between the published package and its source commit.
+
+```yaml
+permissions:
+ id-token: write # Required for npm provenance
+
+# ...
+npm publish --provenance --access public
+```
+
+### Dependency Pinning in CI
+
+All language runtimes are pinned to specific versions across CI workflows to ensure reproducible builds
+and prevent unexpected behavior from runtime updates.
+
+| Runtime | Pinned Version | Used For |
+| --- | --- | --- |
+| Go | `1.26.1` | Core build, tests |
+| Node | `25` | UI build, npm packages |
+| Python | `3.11` | Integration and governance tests |
+| uv | SHA-pinned via `astral-sh/setup-uv` | Python package management |
+
+Python test dependencies are locked via `uv.lock` files for deterministic, reproducible installs:
+
+```
+tests/integrations/uv.lock
+tests/governance/uv.lock
+```
+
+
+
+
+
+---
+
+## Dependency Management — Dependabot
+
+Dependabot monitors four ecosystems on a weekly schedule, automatically opening pull requests for
+outdated or vulnerable dependencies.
+
+
+
+
+---
+
+## Workflow & Network Security
+
+### Principle of Least Privilege
+
+All GitHub Actions workflows follow the principle of least privilege. Permissions are set at the
+job level, not the workflow level, and are scoped to the minimum required.
+
+| Permission | Granted To | Reason |
+| --- | --- | --- |
+| `contents: read` | All jobs (default) | Read repository code |
+| `contents: write` | Tag creation, releases | Create git tags and releases |
+| `security-events: write` | Snyk jobs | Upload SARIF to Security tab |
+| `id-token: write` | Cloud auth, npm publish | OIDC federation, npm provenance |
+| `pull-requests: write` | PR test reporters | Post test results as PR comments |
+
+### Tailscale VPN
+
+Enterprise deployment workflows authenticate through [Tailscale](https://tailscale.com/) before
+accessing any infrastructure. This ensures that CI/CD runners can only reach deployment targets
+through an encrypted, identity-aware network — never over the public internet.
+
+```yaml
+- name: Authenticate Tailscale
+ uses: tailscale/github-action@v4
+ with:
+ oauth-client-id: '${{ secrets.TS_OAUTH_CLIENT_ID }}'
+ oauth-secret: '${{ secrets.TS_OAUTH_SECRET }}'
+ tags: 'tag:gha-ci'
+ version: 1.84.0
+```
+
+- **OAuth-based authentication** — No long-lived API keys; runners authenticate via OAuth client credentials
+- **Version pinned** — Tailscale `1.84.0` to prevent unexpected behavior from updates
+- **Tagged runners** — `gha-ci` tag enables Tailscale ACL policies scoped to CI/CD access
+
+### StepSecurity
+
+[StepSecurity](https://www.stepsecurity.io/) automatically hardens GitHub Actions workflows by applying
+security best practices across all CI/CD pipelines.
+
+- Adds `permissions` blocks to workflows that are missing them
+- Pins action versions to full SHAs where mutable tags were used
+- Detects insecure patterns like unquoted interpolations and artifact poisoning risks
+
+
+
+
+
+### CODEOWNERS
+
+Critical paths in the repository are protected by a `CODEOWNERS` file, ensuring that changes to
+security-sensitive areas require review from designated maintainers before merging.
+
+
+
+
diff --git a/examples/plugins/hello-world/go.mod b/examples/plugins/hello-world/go.mod
index 7f52fcc4b8..4e1251f499 100644
--- a/examples/plugins/hello-world/go.mod
+++ b/examples/plugins/hello-world/go.mod
@@ -2,7 +2,7 @@ module github.com/maximhq/bifrost/examples/plugins/hello-world
go 1.26.1
-require github.com/maximhq/bifrost/core v1.4.14
+require github.com/maximhq/bifrost/core v1.4.15
require (
github.com/andybalholm/brotli v1.2.0 // indirect
diff --git a/examples/plugins/hello-world/go.sum b/examples/plugins/hello-world/go.sum
index 4fb8771184..a31aa03a95 100644
--- a/examples/plugins/hello-world/go.sum
+++ b/examples/plugins/hello-world/go.sum
@@ -39,8 +39,8 @@ github.com/mailru/easyjson v0.9.1 h1:LbtsOm5WAswyWbvTEOqhypdPeZzHavpZx96/n553mR8
github.com/mailru/easyjson v0.9.1/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
github.com/mark3labs/mcp-go v0.43.2 h1:21PUSlWWiSbUPQwXIJ5WKlETixpFpq+WBpbMGDSVy/I=
github.com/mark3labs/mcp-go v0.43.2/go.mod h1:YnJfOL382MIWDx1kMY+2zsRHU/q78dBg9aFb8W6Thdw=
-github.com/maximhq/bifrost/core v1.4.14 h1:apR7IsaXYlcciNrjotjqRngfYesI5YNleBQ3/bgxGiA=
-github.com/maximhq/bifrost/core v1.4.14/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
+github.com/maximhq/bifrost/core v1.4.15 h1:usgMeCQFZJRp5bSshJKbs+10bOYOWq/X3H4fUr78ZrA=
+github.com/maximhq/bifrost/core v1.4.15/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
diff --git a/framework/changelog.md b/framework/changelog.md
index be8dba01f2..555b02a39b 100644
--- a/framework/changelog.md
+++ b/framework/changelog.md
@@ -1,6 +1,6 @@
-- feat: migrate VK provider config allowed keys to explicit allow-list semantics — add AllowAllKeys bool to TableVirtualKeyProviderConfig; backfill existing configs with allow_all_keys=true; empty keys now denies all, ["*"] allows all
-- feat: add MCPDisableAutoToolInject column to TableClientConfig
-- refactor: standardize empty array conventions in modelcatalog and tables.
-- feat: add AllowedExtraHeadersJSON column to TableMCPClient
-- feat: add AllowOnAllVirtualKeys column to TableMCPClient
-- feat: add CalendarAligned budget field, GetCalendarPeriodStart and IsCalendarAlignableDuration helpers [@17jmumford](https://github.com/17jmumford)
+- feat: migrate VK provider config allowed keys to explicit allow-list semantics — add AllowAllKeys bool to TableVirtualKeyProviderConfig; backfill existing configs with allow_all_keys=true; empty keys now denies all, ["*"] allows all
+- feat: add MCPDisableAutoToolInject column to TableClientConfig
+- refactor: standardize empty array conventions in modelcatalog and tables.
+- feat: add AllowedExtraHeadersJSON column to TableMCPClient
+- feat: add AllowOnAllVirtualKeys column to TableMCPClient
+- feat: add CalendarAligned budget field, GetCalendarPeriodStart and IsCalendarAlignableDuration helpers [@17jmumford](https://github.com/17jmumford)
diff --git a/framework/go.mod b/framework/go.mod
index 9cad727eb0..cfc2e008a9 100644
--- a/framework/go.mod
+++ b/framework/go.mod
@@ -4,7 +4,7 @@ go 1.26.1
require (
github.com/google/uuid v1.6.0
- github.com/maximhq/bifrost/core v1.4.14
+ github.com/maximhq/bifrost/core v1.4.15
github.com/pinecone-io/go-pinecone/v5 v5.3.0
github.com/qdrant/go-client v1.16.2
github.com/redis/go-redis/v9 v9.17.2
diff --git a/framework/go.sum b/framework/go.sum
index cb1eb25153..01dcd4a578 100644
--- a/framework/go.sum
+++ b/framework/go.sum
@@ -193,8 +193,8 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.32 h1:JD12Ag3oLy1zQA+BNn74xRgaBbdhbNIDYvQUEuuErjs=
github.com/mattn/go-sqlite3 v1.14.32/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
-github.com/maximhq/bifrost/core v1.4.14 h1:apR7IsaXYlcciNrjotjqRngfYesI5YNleBQ3/bgxGiA=
-github.com/maximhq/bifrost/core v1.4.14/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
+github.com/maximhq/bifrost/core v1.4.15 h1:usgMeCQFZJRp5bSshJKbs+10bOYOWq/X3H4fUr78ZrA=
+github.com/maximhq/bifrost/core v1.4.15/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro=
github.com/oapi-codegen/runtime v1.1.1/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg=
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
diff --git a/framework/modelcatalog/main.go b/framework/modelcatalog/main.go
index c40af1271f..315ba36887 100644
--- a/framework/modelcatalog/main.go
+++ b/framework/modelcatalog/main.go
@@ -128,6 +128,9 @@ type PricingOptions struct {
OutputCostPerVideoPerSecond *float64 `json:"output_cost_per_video_per_second,omitempty"`
OutputCostPerSecond *float64 `json:"output_cost_per_second,omitempty"`
+ // Model parameters
+ MaxOutputTokens *int `json:"max_output_tokens,omitempty"`
+
// Costs - Other
//
// SearchContextCostPerQuery is stored as a single float64, but the pricing datasheet
diff --git a/framework/modelcatalog/sync.go b/framework/modelcatalog/sync.go
index e5ae7599de..29c88542a6 100644
--- a/framework/modelcatalog/sync.go
+++ b/framework/modelcatalog/sync.go
@@ -124,10 +124,30 @@ func (mc *ModelCatalog) syncPricing(ctx context.Context) error {
return fmt.Errorf("failed to reload pricing cache: %w", err)
}
+ // Populate model params cache from pricing datasheet max_output_tokens
+ mc.populateModelParamsFromPricing(pricingData)
+
mc.logger.Info("successfully synced %d pricing records", len(pricingData))
return nil
}
+// populateModelParamsFromPricing extracts max_output_tokens from pricing entries
+// and populates the model params cache so that providers can look up max output
+// tokens without a separate model-parameters sync.
+func (mc *ModelCatalog) populateModelParamsFromPricing(pricingData map[string]PricingEntry) {
+ modelParamsEntries := make(map[string]providerUtils.ModelParams)
+ for modelKey, entry := range pricingData {
+ if entry.MaxOutputTokens != nil {
+ modelName := extractModelName(modelKey)
+ modelParamsEntries[modelName] = providerUtils.ModelParams{MaxOutputTokens: entry.MaxOutputTokens}
+ }
+ }
+ if len(modelParamsEntries) > 0 {
+ providerUtils.BulkSetModelParams(modelParamsEntries)
+ mc.logger.Debug("populated %d model params entries from pricing datasheet", len(modelParamsEntries))
+ }
+}
+
// loadPricingFromURL loads pricing data from the remote URL
func (mc *ModelCatalog) loadPricingFromURL(ctx context.Context) (map[string]PricingEntry, error) {
// Create HTTP client with timeout
@@ -183,6 +203,9 @@ func (mc *ModelCatalog) loadPricingIntoMemory(ctx context.Context) error {
mc.pricingData[key] = pricing
}
+ // Populate model params cache from pricing datasheet max_output_tokens
+ mc.populateModelParamsFromPricing(pricingData)
+
return nil
}
diff --git a/framework/modelcatalog/utils.go b/framework/modelcatalog/utils.go
index 4808ee844d..db4fae6285 100644
--- a/framework/modelcatalog/utils.go
+++ b/framework/modelcatalog/utils.go
@@ -79,18 +79,21 @@ func normalizeStreamRequestType(rt schemas.RequestType) schemas.RequestType {
}
}
-// convertPricingDataToTableModelPricing converts the pricing data to a TableModelPricing struct
-func convertPricingDataToTableModelPricing(modelKey string, entry PricingEntry) configstoreTables.TableModelPricing {
- provider := normalizeProvider(entry.Provider)
-
- // Handle provider/model format - extract just the model name
- modelName := modelKey
+// extractModelName extracts the model name from a model key that may be in provider/model format
+func extractModelName(modelKey string) string {
if strings.Contains(modelKey, "/") {
parts := strings.Split(modelKey, "/")
if len(parts) > 1 {
- modelName = strings.Join(parts[1:], "/")
+ return strings.Join(parts[1:], "/")
}
}
+ return modelKey
+}
+
+// convertPricingDataToTableModelPricing converts the pricing data to a TableModelPricing struct
+func convertPricingDataToTableModelPricing(modelKey string, entry PricingEntry) configstoreTables.TableModelPricing {
+ provider := normalizeProvider(entry.Provider)
+ modelName := extractModelName(modelKey)
return configstoreTables.TableModelPricing{
Model: modelName,
diff --git a/framework/version b/framework/version
index 47f5bfd9fa..dcbb259019 100644
--- a/framework/version
+++ b/framework/version
@@ -1 +1 @@
-1.2.33
+1.2.34
\ No newline at end of file
diff --git a/helm-charts/bifrost/values.schema.json b/helm-charts/bifrost/values.schema.json
index a86ec8b616..4d15e9a712 100644
--- a/helm-charts/bifrost/values.schema.json
+++ b/helm-charts/bifrost/values.schema.json
@@ -714,9 +714,7 @@
"properties": {
"config": {
"required": [
- "dimension",
- "keys",
- "provider"
+ "dimension"
]
}
}
diff --git a/plugins/governance/changelog.md b/plugins/governance/changelog.md
index dd0bbfc9a1..8b2384a219 100644
--- a/plugins/governance/changelog.md
+++ b/plugins/governance/changelog.md
@@ -1,4 +1,4 @@
-- feat: migrate VK provider config allowed keys to deny-by-default — `key_ids: ["*"]` (API) / `allowed_keys: ["*"]` (config) maps to `AllowAllKeys=true` without DB lookups; empty list sets `AllowAllKeys=false` and blocks all keys; resolver populates `includeOnlyKeys` for specific keys or clears it to nil for allow-all to prevent stale filters
-- feat: enforce VK MCPConfigs as an execution-time allow-list — empty MCPConfigs denies all MCP tools, non-empty validates each tool in both PreMCPHook and evaluateGovernanceRequest; respects disable_auto_tool_inject toggle (transport config key: mcp_disable_auto_tool_inject) and skips auto-injection header when caller already set it
-- feat: adds handling for MCP clients with AllowOnAllVirtualKeys to allow all tools for all virtual keys.
-- feat: snap LastReset to calendar boundary for calendar-aligned budgets [@17jmumford](https://github.com/17jmumford)
+- feat: migrate VK provider config allowed keys to deny-by-default — `key_ids: ["*"]` (API) / `allowed_keys: ["*"]` (config) maps to `AllowAllKeys=true` without DB lookups; empty list sets `AllowAllKeys=false` and blocks all keys; resolver populates `includeOnlyKeys` for specific keys or clears it to nil for allow-all to prevent stale filters
+- feat: enforce VK MCPConfigs as an execution-time allow-list — empty MCPConfigs denies all MCP tools, non-empty validates each tool in both PreMCPHook and evaluateGovernanceRequest; respects disable_auto_tool_inject toggle (transport config key: mcp_disable_auto_tool_inject) and skips auto-injection header when caller already set it
+- feat: adds handling for MCP clients with AllowOnAllVirtualKeys to allow all tools for all virtual keys.
+- feat: snap LastReset to calendar boundary for calendar-aligned budgets [@17jmumford](https://github.com/17jmumford)
diff --git a/plugins/governance/go.mod b/plugins/governance/go.mod
index 7abb1aaedc..3505674260 100644
--- a/plugins/governance/go.mod
+++ b/plugins/governance/go.mod
@@ -8,8 +8,8 @@ require (
github.com/bytedance/sonic v1.15.0
github.com/google/cel-go v0.26.1
github.com/google/uuid v1.6.0
- github.com/maximhq/bifrost/core v1.4.14
- github.com/maximhq/bifrost/framework v1.2.33
+ github.com/maximhq/bifrost/core v1.4.15
+ github.com/maximhq/bifrost/framework v1.2.34
github.com/stretchr/testify v1.11.1
github.com/valyala/fasthttp v1.68.0
)
diff --git a/plugins/governance/go.sum b/plugins/governance/go.sum
index da97c76f85..947d9641bc 100644
--- a/plugins/governance/go.sum
+++ b/plugins/governance/go.sum
@@ -199,10 +199,10 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.32 h1:JD12Ag3oLy1zQA+BNn74xRgaBbdhbNIDYvQUEuuErjs=
github.com/mattn/go-sqlite3 v1.14.32/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
-github.com/maximhq/bifrost/core v1.4.14 h1:apR7IsaXYlcciNrjotjqRngfYesI5YNleBQ3/bgxGiA=
-github.com/maximhq/bifrost/core v1.4.14/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
-github.com/maximhq/bifrost/framework v1.2.33 h1:KpaOJu8eIqVDwnAKOPvQHPIWoAjiezKhm3IcPF4pMmw=
-github.com/maximhq/bifrost/framework v1.2.33/go.mod h1:WA3/MbwTFS3tvz/fC5CRRiODzIlGn7rkwJ3WdcRi+y8=
+github.com/maximhq/bifrost/core v1.4.15 h1:usgMeCQFZJRp5bSshJKbs+10bOYOWq/X3H4fUr78ZrA=
+github.com/maximhq/bifrost/core v1.4.15/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
+github.com/maximhq/bifrost/framework v1.2.34 h1:K877/GBMB/VG+YWXNKuNEmbg6XG7IKlgFS0jcoe5EaA=
+github.com/maximhq/bifrost/framework v1.2.34/go.mod h1:C8tzNb8tnOdauF6sycjjKTq/RjuUpB3wb0MhKnJoXmM=
github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro=
github.com/oapi-codegen/runtime v1.1.1/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg=
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
diff --git a/plugins/governance/version b/plugins/governance/version
index 9baec2fdfe..f32f94b9f6 100644
--- a/plugins/governance/version
+++ b/plugins/governance/version
@@ -1 +1 @@
-1.4.33
+1.4.34
\ No newline at end of file
diff --git a/plugins/jsonparser/go.mod b/plugins/jsonparser/go.mod
index fea31a40a5..2f76b95b6a 100644
--- a/plugins/jsonparser/go.mod
+++ b/plugins/jsonparser/go.mod
@@ -2,7 +2,7 @@ module github.com/maximhq/bifrost/plugins/jsonparser
go 1.26.1
-require github.com/maximhq/bifrost/core v1.4.14
+require github.com/maximhq/bifrost/core v1.4.15
require (
cloud.google.com/go v0.123.0 // indirect
diff --git a/plugins/jsonparser/go.sum b/plugins/jsonparser/go.sum
index 55a09e1524..338f34cdc1 100644
--- a/plugins/jsonparser/go.sum
+++ b/plugins/jsonparser/go.sum
@@ -109,8 +109,8 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/maximhq/bifrost/core v1.4.14 h1:apR7IsaXYlcciNrjotjqRngfYesI5YNleBQ3/bgxGiA=
-github.com/maximhq/bifrost/core v1.4.14/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
+github.com/maximhq/bifrost/core v1.4.15 h1:usgMeCQFZJRp5bSshJKbs+10bOYOWq/X3H4fUr78ZrA=
+github.com/maximhq/bifrost/core v1.4.15/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
diff --git a/plugins/jsonparser/version b/plugins/jsonparser/version
index 00bbe72aea..5d3dbca71a 100644
--- a/plugins/jsonparser/version
+++ b/plugins/jsonparser/version
@@ -1 +1 @@
-1.4.32
+1.4.33
\ No newline at end of file
diff --git a/plugins/litellmcompat/go.mod b/plugins/litellmcompat/go.mod
index 57d3591b5c..f9c9a193a3 100644
--- a/plugins/litellmcompat/go.mod
+++ b/plugins/litellmcompat/go.mod
@@ -3,8 +3,8 @@ module github.com/maximhq/bifrost/plugins/litellmcompat
go 1.26.1
require (
- github.com/maximhq/bifrost/core v1.4.14
- github.com/maximhq/bifrost/framework v1.2.33
+ github.com/maximhq/bifrost/core v1.4.15
+ github.com/maximhq/bifrost/framework v1.2.34
)
require (
diff --git a/plugins/litellmcompat/go.sum b/plugins/litellmcompat/go.sum
index d7ee8582d0..31f3e52166 100644
--- a/plugins/litellmcompat/go.sum
+++ b/plugins/litellmcompat/go.sum
@@ -193,10 +193,10 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.32 h1:JD12Ag3oLy1zQA+BNn74xRgaBbdhbNIDYvQUEuuErjs=
github.com/mattn/go-sqlite3 v1.14.32/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
-github.com/maximhq/bifrost/core v1.4.14 h1:apR7IsaXYlcciNrjotjqRngfYesI5YNleBQ3/bgxGiA=
-github.com/maximhq/bifrost/core v1.4.14/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
-github.com/maximhq/bifrost/framework v1.2.33 h1:KpaOJu8eIqVDwnAKOPvQHPIWoAjiezKhm3IcPF4pMmw=
-github.com/maximhq/bifrost/framework v1.2.33/go.mod h1:WA3/MbwTFS3tvz/fC5CRRiODzIlGn7rkwJ3WdcRi+y8=
+github.com/maximhq/bifrost/core v1.4.15 h1:usgMeCQFZJRp5bSshJKbs+10bOYOWq/X3H4fUr78ZrA=
+github.com/maximhq/bifrost/core v1.4.15/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
+github.com/maximhq/bifrost/framework v1.2.34 h1:K877/GBMB/VG+YWXNKuNEmbg6XG7IKlgFS0jcoe5EaA=
+github.com/maximhq/bifrost/framework v1.2.34/go.mod h1:C8tzNb8tnOdauF6sycjjKTq/RjuUpB3wb0MhKnJoXmM=
github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro=
github.com/oapi-codegen/runtime v1.1.1/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg=
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
diff --git a/plugins/litellmcompat/version b/plugins/litellmcompat/version
index 818944f5b8..95dfee2488 100644
--- a/plugins/litellmcompat/version
+++ b/plugins/litellmcompat/version
@@ -1 +1 @@
-0.0.22
+0.0.23
\ No newline at end of file
diff --git a/plugins/logging/go.mod b/plugins/logging/go.mod
index e7187bc4e4..8ebe614ea1 100644
--- a/plugins/logging/go.mod
+++ b/plugins/logging/go.mod
@@ -4,8 +4,8 @@ go 1.26.1
require (
github.com/bytedance/sonic v1.15.0
- github.com/maximhq/bifrost/core v1.4.14
- github.com/maximhq/bifrost/framework v1.2.33
+ github.com/maximhq/bifrost/core v1.4.15
+ github.com/maximhq/bifrost/framework v1.2.34
)
require (
diff --git a/plugins/logging/go.sum b/plugins/logging/go.sum
index d7ee8582d0..31f3e52166 100644
--- a/plugins/logging/go.sum
+++ b/plugins/logging/go.sum
@@ -193,10 +193,10 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.32 h1:JD12Ag3oLy1zQA+BNn74xRgaBbdhbNIDYvQUEuuErjs=
github.com/mattn/go-sqlite3 v1.14.32/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
-github.com/maximhq/bifrost/core v1.4.14 h1:apR7IsaXYlcciNrjotjqRngfYesI5YNleBQ3/bgxGiA=
-github.com/maximhq/bifrost/core v1.4.14/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
-github.com/maximhq/bifrost/framework v1.2.33 h1:KpaOJu8eIqVDwnAKOPvQHPIWoAjiezKhm3IcPF4pMmw=
-github.com/maximhq/bifrost/framework v1.2.33/go.mod h1:WA3/MbwTFS3tvz/fC5CRRiODzIlGn7rkwJ3WdcRi+y8=
+github.com/maximhq/bifrost/core v1.4.15 h1:usgMeCQFZJRp5bSshJKbs+10bOYOWq/X3H4fUr78ZrA=
+github.com/maximhq/bifrost/core v1.4.15/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
+github.com/maximhq/bifrost/framework v1.2.34 h1:K877/GBMB/VG+YWXNKuNEmbg6XG7IKlgFS0jcoe5EaA=
+github.com/maximhq/bifrost/framework v1.2.34/go.mod h1:C8tzNb8tnOdauF6sycjjKTq/RjuUpB3wb0MhKnJoXmM=
github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro=
github.com/oapi-codegen/runtime v1.1.1/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg=
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
diff --git a/plugins/logging/version b/plugins/logging/version
index 9baec2fdfe..f32f94b9f6 100644
--- a/plugins/logging/version
+++ b/plugins/logging/version
@@ -1 +1 @@
-1.4.33
+1.4.34
\ No newline at end of file
diff --git a/plugins/maxim/go.mod b/plugins/maxim/go.mod
index de87544ce1..5743456ae7 100644
--- a/plugins/maxim/go.mod
+++ b/plugins/maxim/go.mod
@@ -3,8 +3,8 @@ module github.com/maximhq/bifrost/plugins/maxim
go 1.26.1
require (
- github.com/maximhq/bifrost/core v1.4.14
- github.com/maximhq/bifrost/framework v1.2.33
+ github.com/maximhq/bifrost/core v1.4.15
+ github.com/maximhq/bifrost/framework v1.2.34
github.com/maximhq/maxim-go v0.2.0
)
diff --git a/plugins/maxim/go.sum b/plugins/maxim/go.sum
index 878b3de101..fb0355d80d 100644
--- a/plugins/maxim/go.sum
+++ b/plugins/maxim/go.sum
@@ -193,10 +193,10 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.32 h1:JD12Ag3oLy1zQA+BNn74xRgaBbdhbNIDYvQUEuuErjs=
github.com/mattn/go-sqlite3 v1.14.32/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
-github.com/maximhq/bifrost/core v1.4.14 h1:apR7IsaXYlcciNrjotjqRngfYesI5YNleBQ3/bgxGiA=
-github.com/maximhq/bifrost/core v1.4.14/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
-github.com/maximhq/bifrost/framework v1.2.33 h1:KpaOJu8eIqVDwnAKOPvQHPIWoAjiezKhm3IcPF4pMmw=
-github.com/maximhq/bifrost/framework v1.2.33/go.mod h1:WA3/MbwTFS3tvz/fC5CRRiODzIlGn7rkwJ3WdcRi+y8=
+github.com/maximhq/bifrost/core v1.4.15 h1:usgMeCQFZJRp5bSshJKbs+10bOYOWq/X3H4fUr78ZrA=
+github.com/maximhq/bifrost/core v1.4.15/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
+github.com/maximhq/bifrost/framework v1.2.34 h1:K877/GBMB/VG+YWXNKuNEmbg6XG7IKlgFS0jcoe5EaA=
+github.com/maximhq/bifrost/framework v1.2.34/go.mod h1:C8tzNb8tnOdauF6sycjjKTq/RjuUpB3wb0MhKnJoXmM=
github.com/maximhq/maxim-go v0.2.0 h1:3SNpna+Z9bDcUBqPLV/pfaZaxTEtsyix7Rn1KtwoEp4=
github.com/maximhq/maxim-go v0.2.0/go.mod h1:RvESsFEUWSJmIypHtV+vHN2EWjp+HoqWGStEvB/cPBU=
github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro=
diff --git a/plugins/maxim/version b/plugins/maxim/version
index 6062bd9648..f79cc1c383 100644
--- a/plugins/maxim/version
+++ b/plugins/maxim/version
@@ -1 +1 @@
-1.5.32
+1.5.33
\ No newline at end of file
diff --git a/plugins/mocker/go.mod b/plugins/mocker/go.mod
index b3ef7e9ec3..e78ddf590c 100644
--- a/plugins/mocker/go.mod
+++ b/plugins/mocker/go.mod
@@ -4,7 +4,7 @@ go 1.26.1
require (
github.com/jaswdr/faker/v2 v2.8.0
- github.com/maximhq/bifrost/core v1.4.14
+ github.com/maximhq/bifrost/core v1.4.15
)
require (
diff --git a/plugins/mocker/go.sum b/plugins/mocker/go.sum
index d530baba38..ace0049a63 100644
--- a/plugins/mocker/go.sum
+++ b/plugins/mocker/go.sum
@@ -111,8 +111,8 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/maximhq/bifrost/core v1.4.14 h1:apR7IsaXYlcciNrjotjqRngfYesI5YNleBQ3/bgxGiA=
-github.com/maximhq/bifrost/core v1.4.14/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
+github.com/maximhq/bifrost/core v1.4.15 h1:usgMeCQFZJRp5bSshJKbs+10bOYOWq/X3H4fUr78ZrA=
+github.com/maximhq/bifrost/core v1.4.15/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
diff --git a/plugins/mocker/version b/plugins/mocker/version
index 00bbe72aea..5d3dbca71a 100644
--- a/plugins/mocker/version
+++ b/plugins/mocker/version
@@ -1 +1 @@
-1.4.32
+1.4.33
\ No newline at end of file
diff --git a/plugins/otel/go.mod b/plugins/otel/go.mod
index 95e98ba095..e6775da882 100644
--- a/plugins/otel/go.mod
+++ b/plugins/otel/go.mod
@@ -3,8 +3,8 @@ module github.com/maximhq/bifrost/plugins/otel
go 1.26.1
require (
- github.com/maximhq/bifrost/core v1.4.14
- github.com/maximhq/bifrost/framework v1.2.33
+ github.com/maximhq/bifrost/core v1.4.15
+ github.com/maximhq/bifrost/framework v1.2.34
go.opentelemetry.io/otel v1.40.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0
diff --git a/plugins/otel/go.sum b/plugins/otel/go.sum
index bf00bb4c13..580ddc194a 100644
--- a/plugins/otel/go.sum
+++ b/plugins/otel/go.sum
@@ -197,10 +197,10 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.32 h1:JD12Ag3oLy1zQA+BNn74xRgaBbdhbNIDYvQUEuuErjs=
github.com/mattn/go-sqlite3 v1.14.32/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
-github.com/maximhq/bifrost/core v1.4.14 h1:apR7IsaXYlcciNrjotjqRngfYesI5YNleBQ3/bgxGiA=
-github.com/maximhq/bifrost/core v1.4.14/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
-github.com/maximhq/bifrost/framework v1.2.33 h1:KpaOJu8eIqVDwnAKOPvQHPIWoAjiezKhm3IcPF4pMmw=
-github.com/maximhq/bifrost/framework v1.2.33/go.mod h1:WA3/MbwTFS3tvz/fC5CRRiODzIlGn7rkwJ3WdcRi+y8=
+github.com/maximhq/bifrost/core v1.4.15 h1:usgMeCQFZJRp5bSshJKbs+10bOYOWq/X3H4fUr78ZrA=
+github.com/maximhq/bifrost/core v1.4.15/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
+github.com/maximhq/bifrost/framework v1.2.34 h1:K877/GBMB/VG+YWXNKuNEmbg6XG7IKlgFS0jcoe5EaA=
+github.com/maximhq/bifrost/framework v1.2.34/go.mod h1:C8tzNb8tnOdauF6sycjjKTq/RjuUpB3wb0MhKnJoXmM=
github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro=
github.com/oapi-codegen/runtime v1.1.1/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg=
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
diff --git a/plugins/otel/version b/plugins/otel/version
index ba7b2f76d1..d28d4019a0 100644
--- a/plugins/otel/version
+++ b/plugins/otel/version
@@ -1 +1 @@
-1.1.32
+1.1.33
\ No newline at end of file
diff --git a/plugins/semanticcache/go.mod b/plugins/semanticcache/go.mod
index 2ee43b374f..f45ae6aad9 100644
--- a/plugins/semanticcache/go.mod
+++ b/plugins/semanticcache/go.mod
@@ -5,8 +5,8 @@ go 1.26.1
require (
github.com/cespare/xxhash/v2 v2.3.0
github.com/google/uuid v1.6.0
- github.com/maximhq/bifrost/core v1.4.14
- github.com/maximhq/bifrost/framework v1.2.33
+ github.com/maximhq/bifrost/core v1.4.15
+ github.com/maximhq/bifrost/framework v1.2.34
github.com/maximhq/bifrost/plugins/mocker v1.4.17
)
diff --git a/plugins/semanticcache/go.sum b/plugins/semanticcache/go.sum
index 71a0202687..e23ab1356b 100644
--- a/plugins/semanticcache/go.sum
+++ b/plugins/semanticcache/go.sum
@@ -195,10 +195,10 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.32 h1:JD12Ag3oLy1zQA+BNn74xRgaBbdhbNIDYvQUEuuErjs=
github.com/mattn/go-sqlite3 v1.14.32/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
-github.com/maximhq/bifrost/core v1.4.14 h1:apR7IsaXYlcciNrjotjqRngfYesI5YNleBQ3/bgxGiA=
-github.com/maximhq/bifrost/core v1.4.14/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
-github.com/maximhq/bifrost/framework v1.2.33 h1:KpaOJu8eIqVDwnAKOPvQHPIWoAjiezKhm3IcPF4pMmw=
-github.com/maximhq/bifrost/framework v1.2.33/go.mod h1:WA3/MbwTFS3tvz/fC5CRRiODzIlGn7rkwJ3WdcRi+y8=
+github.com/maximhq/bifrost/core v1.4.15 h1:usgMeCQFZJRp5bSshJKbs+10bOYOWq/X3H4fUr78ZrA=
+github.com/maximhq/bifrost/core v1.4.15/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
+github.com/maximhq/bifrost/framework v1.2.34 h1:K877/GBMB/VG+YWXNKuNEmbg6XG7IKlgFS0jcoe5EaA=
+github.com/maximhq/bifrost/framework v1.2.34/go.mod h1:C8tzNb8tnOdauF6sycjjKTq/RjuUpB3wb0MhKnJoXmM=
github.com/maximhq/bifrost/plugins/mocker v1.4.17 h1:CEItx77k22fS/N5K8/dCQpse88yfbgzVebQWJXOH4NY=
github.com/maximhq/bifrost/plugins/mocker v1.4.17/go.mod h1:RrA/XyRkggxYiK10k6D6r9VjfmRyiGBIW92ZvhWAtUw=
github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro=
diff --git a/plugins/semanticcache/version b/plugins/semanticcache/version
index d156665af4..7e0d42a49d 100644
--- a/plugins/semanticcache/version
+++ b/plugins/semanticcache/version
@@ -1 +1 @@
-1.4.31
+1.4.32
\ No newline at end of file
diff --git a/plugins/telemetry/go.mod b/plugins/telemetry/go.mod
index 1936785d9b..6d28e68d3e 100644
--- a/plugins/telemetry/go.mod
+++ b/plugins/telemetry/go.mod
@@ -3,8 +3,8 @@ module github.com/maximhq/bifrost/plugins/telemetry
go 1.26.1
require (
- github.com/maximhq/bifrost/core v1.4.14
- github.com/maximhq/bifrost/framework v1.2.33
+ github.com/maximhq/bifrost/core v1.4.15
+ github.com/maximhq/bifrost/framework v1.2.34
github.com/prometheus/client_golang v1.23.2
github.com/valyala/fasthttp v1.68.0
)
diff --git a/plugins/telemetry/go.sum b/plugins/telemetry/go.sum
index 65efa790e3..3c7ff08608 100644
--- a/plugins/telemetry/go.sum
+++ b/plugins/telemetry/go.sum
@@ -195,10 +195,10 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.32 h1:JD12Ag3oLy1zQA+BNn74xRgaBbdhbNIDYvQUEuuErjs=
github.com/mattn/go-sqlite3 v1.14.32/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
-github.com/maximhq/bifrost/core v1.4.14 h1:apR7IsaXYlcciNrjotjqRngfYesI5YNleBQ3/bgxGiA=
-github.com/maximhq/bifrost/core v1.4.14/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
-github.com/maximhq/bifrost/framework v1.2.33 h1:KpaOJu8eIqVDwnAKOPvQHPIWoAjiezKhm3IcPF4pMmw=
-github.com/maximhq/bifrost/framework v1.2.33/go.mod h1:WA3/MbwTFS3tvz/fC5CRRiODzIlGn7rkwJ3WdcRi+y8=
+github.com/maximhq/bifrost/core v1.4.15 h1:usgMeCQFZJRp5bSshJKbs+10bOYOWq/X3H4fUr78ZrA=
+github.com/maximhq/bifrost/core v1.4.15/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
+github.com/maximhq/bifrost/framework v1.2.34 h1:K877/GBMB/VG+YWXNKuNEmbg6XG7IKlgFS0jcoe5EaA=
+github.com/maximhq/bifrost/framework v1.2.34/go.mod h1:C8tzNb8tnOdauF6sycjjKTq/RjuUpB3wb0MhKnJoXmM=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro=
diff --git a/plugins/telemetry/version b/plugins/telemetry/version
index 9baec2fdfe..f32f94b9f6 100644
--- a/plugins/telemetry/version
+++ b/plugins/telemetry/version
@@ -1 +1 @@
-1.4.33
+1.4.34
\ No newline at end of file
diff --git a/transports/Dockerfile b/transports/Dockerfile
index 6a42373fcf..4789eb60bf 100644
--- a/transports/Dockerfile
+++ b/transports/Dockerfile
@@ -1,106 +1,106 @@
# --- UI Build Stage: Build the Next.js frontend ---
-FROM node:25-alpine3.23 AS ui-builder
-WORKDIR /app
-
-# Copy UI package files and install dependencies
-COPY ui/package*.json ./
-RUN npm ci
-
-# Copy UI source code
-COPY ui/ ./
-
-# Build UI (skip the copy-build step)
-RUN npx next build
-RUN node scripts/fix-paths.js
-# Skip the copy-build step since we'll copy the files in the Go build stage
-
-# --- Go Build Stage: Compile the Go binary ---
-FROM golang:1.26.1-alpine3.23 AS builder
-WORKDIR /app
-
-# Install dependencies including gcc for CGO and sqlite
-RUN apk add --no-cache gcc musl-dev sqlite-dev binutils binutils-gold
-
-# Set environment for CGO-enabled build (required for go-sqlite3)
-ENV CGO_ENABLED=1 GOOS=linux
-
-COPY transports/go.mod transports/go.sum ./
-RUN ls
-RUN cat go.mod
-RUN go mod download
-
-# Copy source code and dependencies
-COPY transports/ ./
-
-COPY --from=ui-builder /app/out ./bifrost-http/ui
-
-# Build the binary with CGO enabled and static SQLite linking
-ENV GOWORK=off
-ARG VERSION=unknown
-RUN go build \
- -ldflags="-w -s -X main.Version=v${VERSION} -extldflags '-static'" \
- -a -trimpath \
- -tags "sqlite_static" \
- -o /app/main \
- ./bifrost-http
-
-# Verify build succeeded
-RUN test -f /app/main || (echo "Build failed" && exit 1)
-
-# --- Runtime Stage: Minimal runtime image ---
-FROM alpine:3.23.3
-WORKDIR /app
-
-# Install runtime dependencies for CGO-enabled binary
-# musl: C standard library (required for CGO binaries)
-# libgcc: GCC runtime library
-# ca-certificates: For HTTPS connections
-RUN apk add --no-cache musl libgcc ca-certificates wget
-
-# Create data directory and set up user
-COPY --from=builder /app/main .
-COPY --from=builder /app/docker-entrypoint.sh .
-
-# Getting arguments
-ARG ARG_APP_PORT=8080
-ARG ARG_APP_HOST=0.0.0.0
-ARG ARG_LOG_LEVEL=info
-ARG ARG_LOG_STYLE=json
-ARG ARG_APP_DIR=/app/data
-
-# Environment variables with defaults (can be overridden at runtime)
-ENV APP_PORT=$ARG_APP_PORT \
- APP_HOST=$ARG_APP_HOST \
- LOG_LEVEL=$ARG_LOG_LEVEL \
- LOG_STYLE=$ARG_LOG_STYLE \
- APP_DIR=$ARG_APP_DIR
-
-# Go runtime performance tuning (override at runtime for your workload)
-# GOGC: GC target percentage. Higher = less frequent GC, more memory usage.
-# Default: 100. For high-throughput with available memory, try 200-400.
-# GOMEMLIMIT: Soft memory limit for Go runtime. Set to ~90% of container memory limit.
-# Example: "1800MiB" for a 2GB container, "3600MiB" for 4GB.
-# When set, Go will be more aggressive about GC as it approaches this limit.
-# Note: GOMAXPROCS is automatically detected from cgroup CPU limits via automaxprocs.
-ENV GOGC="" \
- GOMEMLIMIT=""
-
-
-RUN mkdir -p $APP_DIR/logs && \
- adduser -D -s /bin/sh appuser && \
- chown -R appuser:appuser /app && \
- chmod +x /app/docker-entrypoint.sh
-USER appuser
-
-
-# Declare volume for data persistence
-VOLUME ["/app/data"]
-EXPOSE $APP_PORT
-
-# Health check for container status monitoring
-HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
- CMD wget --no-verbose --tries=1 -O /dev/null http://127.0.0.1:${APP_PORT}/health || exit 1
-
-# Use entrypoint script that handles volume permissions and argument processing
-ENTRYPOINT ["/app/docker-entrypoint.sh"]
-CMD ["/app/main"]
+ FROM node:25-alpine3.23@sha256:cf38e1f3c28ac9d81cdc0c51d8220320b3b618780e44ef96a39f76f7dbfef023 AS ui-builder
+ WORKDIR /app
+
+ # Copy UI package files and install dependencies
+ COPY ui/package*.json ./
+ RUN npm ci
+
+ # Copy UI source code
+ COPY ui/ ./
+
+ # Build UI (skip the copy-build step)
+ RUN npx next build
+ RUN node scripts/fix-paths.js
+ # Skip the copy-build step since we'll copy the files in the Go build stage
+
+ # --- Go Build Stage: Compile the Go binary ---
+ FROM golang:1.26.1-alpine3.23@sha256:2389ebfa5b7f43eeafbd6be0c3700cc46690ef842ad962f6c5bd6be49ed82039 AS builder
+ WORKDIR /app
+
+ # Install dependencies including gcc for CGO and sqlite
+ RUN apk add --no-cache gcc musl-dev sqlite-dev binutils binutils-gold
+
+ # Set environment for CGO-enabled build (required for go-sqlite3)
+ ENV CGO_ENABLED=1 GOOS=linux
+
+ COPY transports/go.mod transports/go.sum ./
+ RUN ls
+ RUN cat go.mod
+ RUN go mod download
+
+ # Copy source code and dependencies
+ COPY transports/ ./
+
+ COPY --from=ui-builder /app/out ./bifrost-http/ui
+
+ # Build the binary with CGO enabled and static SQLite linking
+ ENV GOWORK=off
+ ARG VERSION=unknown
+ RUN go build \
+ -ldflags="-w -s -X main.Version=v${VERSION} -extldflags '-static'" \
+ -a -trimpath \
+ -tags "sqlite_static" \
+ -o /app/main \
+ ./bifrost-http
+
+ # Verify build succeeded
+ RUN test -f /app/main || (echo "Build failed" && exit 1)
+
+ # --- Runtime Stage: Minimal runtime image ---
+ FROM alpine:3.23.3@sha256:25109184c71bdad752c8312a8623239686a9a2071e8825f20acb8f2198c3f659
+ WORKDIR /app
+
+ # Install runtime dependencies for CGO-enabled binary
+ # musl: C standard library (required for CGO binaries)
+ # libgcc: GCC runtime library
+ # ca-certificates: For HTTPS connections
+ RUN apk add --no-cache musl libgcc ca-certificates wget
+
+ # Create data directory and set up user
+ COPY --from=builder /app/main .
+ COPY --from=builder /app/docker-entrypoint.sh .
+
+ # Getting arguments
+ ARG ARG_APP_PORT=8080
+ ARG ARG_APP_HOST=0.0.0.0
+ ARG ARG_LOG_LEVEL=info
+ ARG ARG_LOG_STYLE=json
+ ARG ARG_APP_DIR=/app/data
+
+ # Environment variables with defaults (can be overridden at runtime)
+ ENV APP_PORT=$ARG_APP_PORT \
+ APP_HOST=$ARG_APP_HOST \
+ LOG_LEVEL=$ARG_LOG_LEVEL \
+ LOG_STYLE=$ARG_LOG_STYLE \
+ APP_DIR=$ARG_APP_DIR
+
+ # Go runtime performance tuning (override at runtime for your workload)
+ # GOGC: GC target percentage. Higher = less frequent GC, more memory usage.
+ # Default: 100. For high-throughput with available memory, try 200-400.
+ # GOMEMLIMIT: Soft memory limit for Go runtime. Set to ~90% of container memory limit.
+ # Example: "1800MiB" for a 2GB container, "3600MiB" for 4GB.
+ # When set, Go will be more aggressive about GC as it approaches this limit.
+ # Note: GOMAXPROCS is automatically detected from cgroup CPU limits via automaxprocs.
+ ENV GOGC="" \
+ GOMEMLIMIT=""
+
+
+ RUN mkdir -p $APP_DIR/logs && \
+ adduser -D -s /bin/sh appuser && \
+ chown -R appuser:appuser /app && \
+ chmod +x /app/docker-entrypoint.sh
+ USER appuser
+
+
+ # Declare volume for data persistence
+ VOLUME ["/app/data"]
+ EXPOSE $APP_PORT
+
+ # Health check for container status monitoring
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
+ CMD wget --no-verbose --tries=1 -O /dev/null http://127.0.0.1:${APP_PORT}/health || exit 1
+
+ # Use entrypoint script that handles volume permissions and argument processing
+ ENTRYPOINT ["/app/docker-entrypoint.sh"]
+ CMD ["/app/main"]
\ No newline at end of file
diff --git a/transports/Dockerfile.local b/transports/Dockerfile.local
index 124e507d68..257a1e47c0 100644
--- a/transports/Dockerfile.local
+++ b/transports/Dockerfile.local
@@ -2,115 +2,115 @@
# For pre-release CI builds where module versions aren't published yet
# --- UI Build Stage: Build the Next.js frontend ---
-FROM node:25-alpine3.23 AS ui-builder
-WORKDIR /app
-
-# Copy UI package files and install dependencies
-COPY ui/package*.json ./
-RUN npm ci
-
-# Copy UI source code
-COPY ui/ ./
-
-# Build UI (skip the copy-build step)
-RUN npx next build
-RUN node scripts/fix-paths.js
-# Skip the copy-build step since we'll copy the files in the Go build stage
-
-# --- Go Build Stage: Compile the Go binary using local modules ---
-FROM golang:1.26.1-alpine3.23 AS builder
-WORKDIR /build
-
-# Install dependencies including gcc for CGO and sqlite
-RUN apk add --no-cache gcc musl-dev sqlite-dev binutils binutils-gold
-
-# Set environment for CGO-enabled build (required for go-sqlite3)
-ENV CGO_ENABLED=1 GOOS=linux
-
-# Copy all local modules
-COPY core/ ./core/
-COPY framework/ ./framework/
-COPY plugins/ ./plugins/
-COPY transports/ ./transports/
-
-# Set up go workspace to resolve local module dependencies
-RUN go work init && \
- go work use ./core && \
- go work use ./framework && \
- go work use ./plugins/governance && \
- go work use ./plugins/jsonparser && \
- go work use ./plugins/litellmcompat && \
- go work use ./plugins/logging && \
- go work use ./plugins/maxim && \
- go work use ./plugins/mocker && \
- go work use ./plugins/otel && \
- go work use ./plugins/semanticcache && \
- go work use ./plugins/telemetry && \
- go work use ./transports
-
-# Download external (non-local) dependencies
-RUN cd /build/transports && go mod download
-
-# Copy UI build output into transports
-COPY --from=ui-builder /app/out ./transports/bifrost-http/ui
-
-# Build the binary with CGO enabled and static SQLite linking
-ARG VERSION=unknown
-RUN cd /build/transports && \
- go build \
- -ldflags="-w -s -X main.Version=v${VERSION} -extldflags '-static'" \
- -a -trimpath \
- -tags "sqlite_static" \
- -o /app/main \
- ./bifrost-http
-
-# Verify build succeeded
-RUN test -f /app/main || (echo "Build failed" && exit 1)
-
-# --- Runtime Stage: Minimal runtime image ---
-FROM alpine:3.23.3
-WORKDIR /app
-
-# Install runtime dependencies for CGO-enabled binary
-# musl: C standard library (required for CGO binaries)
-# libgcc: GCC runtime library
-# ca-certificates: For HTTPS connections
-RUN apk add --no-cache musl libgcc ca-certificates wget
-
-# Create data directory and set up user
-COPY --from=builder /app/main .
-COPY --from=builder /build/transports/docker-entrypoint.sh .
-
-# Getting arguments
-ARG ARG_APP_PORT=8080
-ARG ARG_APP_HOST=0.0.0.0
-ARG ARG_LOG_LEVEL=info
-ARG ARG_LOG_STYLE=json
-ARG ARG_APP_DIR=/app/data
-
-# Environment variables with defaults (can be overridden at runtime)
-ENV APP_PORT=$ARG_APP_PORT \
- APP_HOST=$ARG_APP_HOST \
- LOG_LEVEL=$ARG_LOG_LEVEL \
- LOG_STYLE=$ARG_LOG_STYLE \
- APP_DIR=$ARG_APP_DIR
-
-
-RUN mkdir -p $APP_DIR/logs && \
- adduser -D -s /bin/sh appuser && \
- chown -R appuser:appuser /app && \
- chmod +x /app/docker-entrypoint.sh
-USER appuser
-
-
-# Declare volume for data persistence
-VOLUME ["/app/data"]
-EXPOSE $APP_PORT
-
-# Health check for container status monitoring
-HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
- CMD wget --no-verbose --tries=1 -O /dev/null http://127.0.0.1:${APP_PORT}/health || exit 1
-
-# Use entrypoint script that handles volume permissions and argument processing
-ENTRYPOINT ["/app/docker-entrypoint.sh"]
-CMD ["/app/main"]
+ FROM node:25-alpine3.23 AS ui-builder
+ WORKDIR /app
+
+ # Copy UI package files and install dependencies
+ COPY ui/package*.json ./
+ RUN npm ci
+
+ # Copy UI source code
+ COPY ui/ ./
+
+ # Build UI (skip the copy-build step)
+ RUN npx next build
+ RUN node scripts/fix-paths.js
+ # Skip the copy-build step since we'll copy the files in the Go build stage
+
+ # --- Go Build Stage: Compile the Go binary using local modules ---
+ FROM golang:1.26.1-alpine3.23 AS builder
+ WORKDIR /build
+
+ # Install dependencies including gcc for CGO and sqlite
+ RUN apk add --no-cache gcc musl-dev sqlite-dev binutils binutils-gold
+
+ # Set environment for CGO-enabled build (required for go-sqlite3)
+ ENV CGO_ENABLED=1 GOOS=linux
+
+ # Copy all local modules
+ COPY core/ ./core/
+ COPY framework/ ./framework/
+ COPY plugins/ ./plugins/
+ COPY transports/ ./transports/
+
+ # Set up go workspace to resolve local module dependencies
+ RUN go work init && \
+ go work use ./core && \
+ go work use ./framework && \
+ go work use ./plugins/governance && \
+ go work use ./plugins/jsonparser && \
+ go work use ./plugins/litellmcompat && \
+ go work use ./plugins/logging && \
+ go work use ./plugins/maxim && \
+ go work use ./plugins/mocker && \
+ go work use ./plugins/otel && \
+ go work use ./plugins/semanticcache && \
+ go work use ./plugins/telemetry && \
+ go work use ./transports
+
+ # Download external (non-local) dependencies
+ RUN cd /build/transports && go mod download
+
+ # Copy UI build output into transports
+ COPY --from=ui-builder /app/out ./transports/bifrost-http/ui
+
+ # Build the binary with CGO enabled and static SQLite linking
+ ARG VERSION=unknown
+ RUN cd /build/transports && \
+ go build \
+ -ldflags="-w -s -X main.Version=v${VERSION} -extldflags '-static'" \
+ -a -trimpath \
+ -tags "sqlite_static" \
+ -o /app/main \
+ ./bifrost-http
+
+ # Verify build succeeded
+ RUN test -f /app/main || (echo "Build failed" && exit 1)
+
+ # --- Runtime Stage: Minimal runtime image ---
+ FROM alpine:3.23.3
+ WORKDIR /app
+
+ # Install runtime dependencies for CGO-enabled binary
+ # musl: C standard library (required for CGO binaries)
+ # libgcc: GCC runtime library
+ # ca-certificates: For HTTPS connections
+ RUN apk add --no-cache musl libgcc ca-certificates wget
+
+ # Create data directory and set up user
+ COPY --from=builder /app/main .
+ COPY --from=builder /build/transports/docker-entrypoint.sh .
+
+ # Getting arguments
+ ARG ARG_APP_PORT=8080
+ ARG ARG_APP_HOST=0.0.0.0
+ ARG ARG_LOG_LEVEL=info
+ ARG ARG_LOG_STYLE=json
+ ARG ARG_APP_DIR=/app/data
+
+ # Environment variables with defaults (can be overridden at runtime)
+ ENV APP_PORT=$ARG_APP_PORT \
+ APP_HOST=$ARG_APP_HOST \
+ LOG_LEVEL=$ARG_LOG_LEVEL \
+ LOG_STYLE=$ARG_LOG_STYLE \
+ APP_DIR=$ARG_APP_DIR
+
+
+ RUN mkdir -p $APP_DIR/logs && \
+ adduser -D -s /bin/sh appuser && \
+ chown -R appuser:appuser /app && \
+ chmod +x /app/docker-entrypoint.sh
+ USER appuser
+
+
+ # Declare volume for data persistence
+ VOLUME ["/app/data"]
+ EXPOSE $APP_PORT
+
+ # Health check for container status monitoring
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
+ CMD wget --no-verbose --tries=1 -O /dev/null http://127.0.0.1:${APP_PORT}/health || exit 1
+
+ # Use entrypoint script that handles volume permissions and argument processing
+ ENTRYPOINT ["/app/docker-entrypoint.sh"]
+ CMD ["/app/main"]
\ No newline at end of file
diff --git a/transports/config.schema.json b/transports/config.schema.json
index 9cd015c1a9..d090eb132c 100644
--- a/transports/config.schema.json
+++ b/transports/config.schema.json
@@ -286,6 +286,11 @@
"type": "string",
"format": "date-time",
"description": "Last time budget was reset"
+ },
+ "calendar_aligned": {
+ "type": "boolean",
+ "description": "Snap resets to calendar boundaries (day/week/month/year start)",
+ "default": false
}
},
"required": [
diff --git a/transports/go.mod b/transports/go.mod
index 728d4cc1bc..134e67e1f9 100644
--- a/transports/go.mod
+++ b/transports/go.mod
@@ -12,15 +12,15 @@ require (
github.com/google/uuid v1.6.0
github.com/klauspost/compress v1.18.2
github.com/mark3labs/mcp-go v0.43.2
- github.com/maximhq/bifrost/core v1.4.14
- github.com/maximhq/bifrost/framework v1.2.33
- github.com/maximhq/bifrost/plugins/governance v1.4.33
- github.com/maximhq/bifrost/plugins/litellmcompat v0.0.22
- github.com/maximhq/bifrost/plugins/logging v1.4.33
- github.com/maximhq/bifrost/plugins/maxim v1.5.32
- github.com/maximhq/bifrost/plugins/otel v1.1.32
- github.com/maximhq/bifrost/plugins/semanticcache v1.4.31
- github.com/maximhq/bifrost/plugins/telemetry v1.4.33
+ github.com/maximhq/bifrost/core v1.4.15
+ github.com/maximhq/bifrost/framework v1.2.34
+ github.com/maximhq/bifrost/plugins/governance v1.4.34
+ github.com/maximhq/bifrost/plugins/litellmcompat v0.0.23
+ github.com/maximhq/bifrost/plugins/logging v1.4.34
+ github.com/maximhq/bifrost/plugins/maxim v1.5.33
+ github.com/maximhq/bifrost/plugins/otel v1.1.33
+ github.com/maximhq/bifrost/plugins/semanticcache v1.4.32
+ github.com/maximhq/bifrost/plugins/telemetry v1.4.34
github.com/prometheus/client_golang v1.23.2
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2
github.com/stretchr/testify v1.11.1
@@ -111,7 +111,7 @@ require (
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-sqlite3 v1.14.32 // indirect
- github.com/maximhq/bifrost/plugins/mocker v1.4.32 // indirect
+ github.com/maximhq/bifrost/plugins/mocker v1.4.33 // indirect
github.com/maximhq/maxim-go v0.2.0 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/oapi-codegen/runtime v1.1.1 // indirect
diff --git a/transports/go.sum b/transports/go.sum
index f1de0cd432..e93943bee8 100644
--- a/transports/go.sum
+++ b/transports/go.sum
@@ -213,26 +213,26 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.32 h1:JD12Ag3oLy1zQA+BNn74xRgaBbdhbNIDYvQUEuuErjs=
github.com/mattn/go-sqlite3 v1.14.32/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
-github.com/maximhq/bifrost/core v1.4.14 h1:apR7IsaXYlcciNrjotjqRngfYesI5YNleBQ3/bgxGiA=
-github.com/maximhq/bifrost/core v1.4.14/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
-github.com/maximhq/bifrost/framework v1.2.33 h1:KpaOJu8eIqVDwnAKOPvQHPIWoAjiezKhm3IcPF4pMmw=
-github.com/maximhq/bifrost/framework v1.2.33/go.mod h1:WA3/MbwTFS3tvz/fC5CRRiODzIlGn7rkwJ3WdcRi+y8=
-github.com/maximhq/bifrost/plugins/governance v1.4.33 h1:s8XLOqBmwaz6Fa8J5pRd4UxRi4I1LP/cHOXAfEoeXTM=
-github.com/maximhq/bifrost/plugins/governance v1.4.33/go.mod h1:C867hyl3e1KepzNkZ6UimUm96GVU/0IjTB1KielyL48=
-github.com/maximhq/bifrost/plugins/litellmcompat v0.0.22 h1:U2IRVzmBz69nvlojT+DRrfUdaoXF4xZ22cR+eIo0UeM=
-github.com/maximhq/bifrost/plugins/litellmcompat v0.0.22/go.mod h1:Vd3mn99YjwAUmhM6tn6TN9VK0aHqQhuxoOZqfENab7A=
-github.com/maximhq/bifrost/plugins/logging v1.4.33 h1:K2nrB3It67bMNb+mGrDmm6fhaRf5dbOFs25nPO0WGB0=
-github.com/maximhq/bifrost/plugins/logging v1.4.33/go.mod h1:5C7q21JCuathNX5uWM0s4RYhnqbqZWIDyfW29Jn/4V0=
-github.com/maximhq/bifrost/plugins/maxim v1.5.32 h1:m+Vh+6h5pYGh58seyYKZ5gC7+Bf2N5H/fjNi4lpmGqA=
-github.com/maximhq/bifrost/plugins/maxim v1.5.32/go.mod h1:pfbUA9yjMn8vUNYAaFosHWSa7NQBODdZCUqe7Nd2mzg=
-github.com/maximhq/bifrost/plugins/mocker v1.4.32 h1:AWiIjCLw9AnZpmr7BXvmf3NZWA0KCgzFlCwpm/puraM=
-github.com/maximhq/bifrost/plugins/mocker v1.4.32/go.mod h1:RIyPJtRP2l6WzwpJsThIfXWOT5+pYs2a8gIknTf1Kf0=
-github.com/maximhq/bifrost/plugins/otel v1.1.32 h1:g17+AVuhID+RXSuFrN5//rIg1H9YYSiN4O1oWPgUmE0=
-github.com/maximhq/bifrost/plugins/otel v1.1.32/go.mod h1:PiTBInKjHNPhgdxSUEM3+73eyUEv6FF0IIJkl/NL4s4=
-github.com/maximhq/bifrost/plugins/semanticcache v1.4.31 h1:yYiTLXVvOH/0E381E0grTLa9omBRA36DXq2VnPib8Zk=
-github.com/maximhq/bifrost/plugins/semanticcache v1.4.31/go.mod h1:ByejDIl1A58VI7l5k3sfsVrU9hVNq94srbVMUw/SbWs=
-github.com/maximhq/bifrost/plugins/telemetry v1.4.33 h1:lOuV7Hm/lbdfoZBg7z6t9x+pgOaGa4HQ2T4u305JWV8=
-github.com/maximhq/bifrost/plugins/telemetry v1.4.33/go.mod h1:7DJavMvOFrhITnlr5tB+CXRU4xzU9E4oRwwR4sKhlMU=
+github.com/maximhq/bifrost/core v1.4.15 h1:usgMeCQFZJRp5bSshJKbs+10bOYOWq/X3H4fUr78ZrA=
+github.com/maximhq/bifrost/core v1.4.15/go.mod h1:A+AHUm/jf2lWFz5RNSxcJD/ozPlFJIVK9riMM1nyjt8=
+github.com/maximhq/bifrost/framework v1.2.34 h1:K877/GBMB/VG+YWXNKuNEmbg6XG7IKlgFS0jcoe5EaA=
+github.com/maximhq/bifrost/framework v1.2.34/go.mod h1:C8tzNb8tnOdauF6sycjjKTq/RjuUpB3wb0MhKnJoXmM=
+github.com/maximhq/bifrost/plugins/governance v1.4.34 h1:1GQT8pasHKs70dNjOFAeZm+UWe2Ib9AqxQyhzHDvRJ8=
+github.com/maximhq/bifrost/plugins/governance v1.4.34/go.mod h1:WZrrj3bM9jTgcC3nMaR6dk+bdK/uGjfdFt+MsUX6rcg=
+github.com/maximhq/bifrost/plugins/litellmcompat v0.0.23 h1:YlOIUUJtd8JABkaF58R4DtUWJWul0C+QMYsrl7hAakw=
+github.com/maximhq/bifrost/plugins/litellmcompat v0.0.23/go.mod h1:aSGR264jSQPJB6WnTSuP9a9W+2cPTPIVn5XFqc2ZZyI=
+github.com/maximhq/bifrost/plugins/logging v1.4.34 h1:n1PpbClCmqV+tQ1qZCI/rmY/WSx/oFdVX8Gf/0uV50s=
+github.com/maximhq/bifrost/plugins/logging v1.4.34/go.mod h1:tN0UjURQwYQKcAgzCbKjWA2Xamm5Peoj7b7grCi6Oco=
+github.com/maximhq/bifrost/plugins/maxim v1.5.33 h1:2dPy5K1W5Q5hyfgwryvsL1ngVHeSDNQkK+q+mPaNJxE=
+github.com/maximhq/bifrost/plugins/maxim v1.5.33/go.mod h1:IIEqWUGeiY5OWmAZush2dt4UfEDGch70fsH/3maD7wU=
+github.com/maximhq/bifrost/plugins/mocker v1.4.33 h1:TErHmfS4a73GXf8GfIVkFlPteiRYfe7IFNumh8PH3Hk=
+github.com/maximhq/bifrost/plugins/mocker v1.4.33/go.mod h1:z1hNuqqwCxshOFWfCbLaCn0tJG+GZdwYo/F+gfuYVis=
+github.com/maximhq/bifrost/plugins/otel v1.1.33 h1:6YMkNW32t6sKM98tnXArxh7A3HXaqz78C8NNP+UiZCU=
+github.com/maximhq/bifrost/plugins/otel v1.1.33/go.mod h1:1QPHFkGS31pB7tcT4lQV9SYXHF2LeoFj1qrVPRxrgFw=
+github.com/maximhq/bifrost/plugins/semanticcache v1.4.32 h1:y21XFlL+B7uu4AbKIq6/spKhmTvzpm+ys/lx7qy1W/k=
+github.com/maximhq/bifrost/plugins/semanticcache v1.4.32/go.mod h1:f6N4/kLd6Bn01HrvNt+RsGhCTKla2xxp2Vnch2k+lVs=
+github.com/maximhq/bifrost/plugins/telemetry v1.4.34 h1:JMomnrnpvUDO3cQrz1GTw4t/P3bnk2zQX3ATBAG7xZE=
+github.com/maximhq/bifrost/plugins/telemetry v1.4.34/go.mod h1:Aq2pGKvitjDczuFj3TpKTLjrVmjz24YFYqypQNOGLcU=
github.com/maximhq/maxim-go v0.2.0 h1:3SNpna+Z9bDcUBqPLV/pfaZaxTEtsyix7Rn1KtwoEp4=
github.com/maximhq/maxim-go v0.2.0/go.mod h1:RvESsFEUWSJmIypHtV+vHN2EWjp+HoqWGStEvB/cPBU=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
diff --git a/transports/version b/transports/version
index 04e0d3f14f..4007e54579 100644
--- a/transports/version
+++ b/transports/version
@@ -1 +1 @@
-1.4.17
+1.4.18
\ No newline at end of file
diff --git a/ui/app/_fallbacks/enterprise/components/api-keys/apiKeysIndexView.tsx b/ui/app/_fallbacks/enterprise/components/api-keys/apiKeysIndexView.tsx
index 7929d9bea0..8687f4490a 100644
--- a/ui/app/_fallbacks/enterprise/components/api-keys/apiKeysIndexView.tsx
+++ b/ui/app/_fallbacks/enterprise/components/api-keys/apiKeysIndexView.tsx
@@ -3,10 +3,10 @@
import { Alert, AlertDescription } from "@/components/ui/alert";
import { Button } from "@/components/ui/button";
import { useGetCoreConfigQuery } from "@/lib/store";
+import { useCopyToClipboard } from "@/hooks/useCopyToClipboard";
import { Copy, InfoIcon, KeyRound } from "lucide-react";
import Link from "next/link";
import { useMemo } from "react";
-import { toast } from "sonner";
import ContactUsView from "../views/contactUsView";
export default function APIKeysView() {
@@ -31,10 +31,7 @@ curl --location 'http://localhost:8080/v1/chat/completions'
]
}'`;
- const copyToClipboard = (text: string) => {
- navigator.clipboard.writeText(text);
- toast.success("Copied to clipboard");
- };
+ const { copy: copyToClipboard } = useCopyToClipboard();
if (isLoading) {
return
Request ID:{" "}
- {
- navigator.clipboard
- .writeText(displayLog.id)
- .then(() => toast.success("Request ID copied"))
- .catch(() => toast.error("Failed to copy"));
- }}
- >
+ copyRequestId(displayLog.id)}>
{displayLog.id}