diff --git a/core/changelog.md b/core/changelog.md
index d52f2f980..0a2d19512 100644
--- a/core/changelog.md
+++ b/core/changelog.md
@@ -1,8 +1,6 @@
-- Feat: Stream token latency sent back in extra fields.
-- Feat: Plugin interface extended with TransportInterceptor method.
-- Feat: Add Anthropic thinking parameter
-- Feat: Add Custom key selector logic and send back request latency in extra fields.
-- Bug: Fallbacks not working occasionally.
\ No newline at end of file
+- Feat: Responses streaming added across all providers.
+- Fix: Bedrock chat streaming decoding fixes.
+- Feat: Added raw response support for all streaming requests.
\ No newline at end of file
diff --git a/core/version b/core/version
index c813fe116..3c43790f5 100644
--- a/core/version
+++ b/core/version
@@ -1 +1 @@
-1.2.5
+1.2.6
diff --git a/docs/changelogs/v1.3.0-prerelease6.mdx b/docs/changelogs/v1.3.0-prerelease6.mdx
index 7336ad75d..84508b47c 100644
--- a/docs/changelogs/v1.3.0-prerelease6.mdx
+++ b/docs/changelogs/v1.3.0-prerelease6.mdx
@@ -4,7 +4,7 @@ description: "v1.3.0-prerelease6 changelog"
---
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
- Feat: Added Anthropic thinking parameter in responses API.
- Feat: Added Anthropic text completion integration support.
- Fix: Extra fields sent back in streaming responses.
@@ -37,37 +37,37 @@ description: "v1.3.0-prerelease6 changelog"
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
- Feat: Added First Token and Inter Token latency metrics for streaming requests.
diff --git a/framework/changelog.md b/framework/changelog.md
index 203305d82..6cb761787 100644
--- a/framework/changelog.md
+++ b/framework/changelog.md
@@ -1,5 +1,5 @@
-- Upgrade dependency: core to 1.2.5
-- Feat: User table added to config store.
\ No newline at end of file
+- Upgrade dependency: core to 1.2.6
+- Feat: Moved the migrator package to a more general location and added database migrations for the logstore to standardize object type values.
\ No newline at end of file
diff --git a/framework/configstore/migrations.go b/framework/configstore/migrations.go
index a8ed12514..6fdf7aa2f 100644
--- a/framework/configstore/migrations.go
+++ b/framework/configstore/migrations.go
@@ -4,7 +4,7 @@ import (
"context"
"fmt"
- "github.com/maximhq/bifrost/framework/configstore/migrator"
+ "github.com/maximhq/bifrost/framework/migrator"
"gorm.io/gorm"
)
diff --git a/framework/configstore/rdb.go b/framework/configstore/rdb.go
index 4f83d7a4b..d28bff63c 100644
--- a/framework/configstore/rdb.go
+++ b/framework/configstore/rdb.go
@@ -7,7 +7,7 @@ import (
"fmt"
"github.com/maximhq/bifrost/core/schemas"
- "github.com/maximhq/bifrost/framework/configstore/migrator"
+ "github.com/maximhq/bifrost/framework/migrator"
"github.com/maximhq/bifrost/framework/logstore"
"github.com/maximhq/bifrost/framework/vectorstore"
"gorm.io/gorm"
diff --git a/framework/configstore/store.go b/framework/configstore/store.go
index 3f539f502..569eaa52b 100644
--- a/framework/configstore/store.go
+++ b/framework/configstore/store.go
@@ -6,7 +6,7 @@ import (
"fmt"
"github.com/maximhq/bifrost/core/schemas"
- "github.com/maximhq/bifrost/framework/configstore/migrator"
+ "github.com/maximhq/bifrost/framework/migrator"
"github.com/maximhq/bifrost/framework/logstore"
"github.com/maximhq/bifrost/framework/vectorstore"
"gorm.io/gorm"
diff --git a/framework/logstore/migrations.go b/framework/logstore/migrations.go
new file mode 100644
index 000000000..260cb7da2
--- /dev/null
+++ b/framework/logstore/migrations.go
@@ -0,0 +1,132 @@
+package logstore
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/maximhq/bifrost/framework/migrator"
+ "gorm.io/gorm"
+)
+
+// Migrate performs the necessary database migrations.
+func triggerMigrations(ctx context.Context, db *gorm.DB) error {
+ if err := migrationInit(ctx, db); err != nil {
+ return err
+ }
+ if err := migrationUpdateObjectColumnValues(ctx, db); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+// migrationInit is the first migration
+func migrationInit(ctx context.Context, db *gorm.DB) error {
+ m := migrator.New(db, migrator.DefaultOptions, []*migrator.Migration{{
+ ID: "logs_init",
+ Migrate: func(tx *gorm.DB) error {
+ tx = tx.WithContext(ctx)
+ migrator := tx.Migrator()
+ if !migrator.HasTable(&Log{}) {
+ if err := migrator.CreateTable(&Log{}); err != nil {
+ return err
+ }
+ }
+
+ return nil
+ },
+ Rollback: func(tx *gorm.DB) error {
+ tx = tx.WithContext(ctx)
+ migrator := tx.Migrator()
+ // Drop children first, then parents (adjust if your actual FKs differ)
+ if err := migrator.DropTable(&Log{}); err != nil {
+ return err
+ }
+ return nil
+ },
+ }})
+ err := m.Migrate()
+ if err != nil {
+ return fmt.Errorf("error while running db migration: %s", err.Error())
+ }
+ return nil
+}
+
+// migrationUpdateObjectColumnValues updates the object column values from old format to new format
+func migrationUpdateObjectColumnValues(ctx context.Context, db *gorm.DB) error {
+ opts := *migrator.DefaultOptions
+ opts.UseTransaction = true
+ m := migrator.New(db, &opts, []*migrator.Migration{{
+ ID: "logs_init_update_object_column_values",
+ Migrate: func(tx *gorm.DB) error {
+ tx = tx.WithContext(ctx)
+
+ updateSQL := `
+ UPDATE logs
+ SET object_type = CASE object_type
+ WHEN 'chat.completion' THEN 'chat_completion'
+ WHEN 'text.completion' THEN 'text_completion'
+ WHEN 'list' THEN 'embedding'
+ WHEN 'audio.speech' THEN 'speech'
+ WHEN 'audio.transcription' THEN 'transcription'
+ WHEN 'chat.completion.chunk' THEN 'chat_completion_stream'
+ WHEN 'audio.speech.chunk' THEN 'speech_stream'
+ WHEN 'audio.transcription.chunk' THEN 'transcription_stream'
+ WHEN 'response' THEN 'responses'
+ WHEN 'response.completion.chunk' THEN 'responses_stream'
+ ELSE object_type
+ END
+ WHERE object_type IN (
+ 'chat.completion', 'text.completion', 'list',
+ 'audio.speech', 'audio.transcription', 'chat.completion.chunk',
+ 'audio.speech.chunk', 'audio.transcription.chunk',
+ 'response', 'response.completion.chunk'
+ )`
+
+ result := tx.Exec(updateSQL)
+ if result.Error != nil {
+ return fmt.Errorf("failed to update object_type values: %w", result.Error)
+ }
+
+ return nil
+ },
+ Rollback: func(tx *gorm.DB) error {
+ tx = tx.WithContext(ctx)
+
+ // Use a single CASE statement for efficient bulk rollback
+ rollbackSQL := `
+ UPDATE logs
+ SET object_type = CASE object_type
+ WHEN 'chat_completion' THEN 'chat.completion'
+ WHEN 'text_completion' THEN 'text.completion'
+ WHEN 'embedding' THEN 'list'
+ WHEN 'speech' THEN 'audio.speech'
+ WHEN 'transcription' THEN 'audio.transcription'
+ WHEN 'chat_completion_stream' THEN 'chat.completion.chunk'
+ WHEN 'speech_stream' THEN 'audio.speech.chunk'
+ WHEN 'transcription_stream' THEN 'audio.transcription.chunk'
+ WHEN 'responses' THEN 'response'
+ WHEN 'responses_stream' THEN 'response.completion.chunk'
+ ELSE object_type
+ END
+ WHERE object_type IN (
+ 'chat_completion', 'text_completion', 'embedding', 'speech',
+ 'transcription', 'chat_completion_stream', 'speech_stream',
+ 'transcription_stream', 'responses', 'responses_stream'
+ )`
+
+ result := tx.Exec(rollbackSQL)
+ if result.Error != nil {
+ return fmt.Errorf("failed to rollback object_type values: %w", result.Error)
+ }
+
+ return nil
+ },
+ }})
+
+ err := m.Migrate()
+ if err != nil {
+ return fmt.Errorf("error while running object column migration: %s", err.Error())
+ }
+ return nil
+}
diff --git a/framework/logstore/sqlite.go b/framework/logstore/sqlite.go
index b0081ab76..0645fbc8a 100644
--- a/framework/logstore/sqlite.go
+++ b/framework/logstore/sqlite.go
@@ -22,7 +22,8 @@ func newSqliteLogStore(ctx context.Context, config *SQLiteConfig, logger schemas
if err != nil {
return nil, err
}
- if err := db.WithContext(ctx).AutoMigrate(&Log{}); err != nil {
+ // Run migrations
+ if err := triggerMigrations(ctx, db); err != nil {
return nil, err
}
return &RDBLogStore{db: db, logger: logger}, nil
diff --git a/framework/configstore/migrator/migrator.go b/framework/migrator/migrator.go
similarity index 100%
rename from framework/configstore/migrator/migrator.go
rename to framework/migrator/migrator.go
diff --git a/framework/version b/framework/version
index e25d8d9f3..0664a8fd2 100644
--- a/framework/version
+++ b/framework/version
@@ -1 +1 @@
-1.1.5
+1.1.6
diff --git a/plugins/governance/changelog.md b/plugins/governance/changelog.md
index ef9f2b482..38b1f9e84 100644
--- a/plugins/governance/changelog.md
+++ b/plugins/governance/changelog.md
@@ -1,5 +1,4 @@
-- Chore: using core 1.2.5 and framework 1.1.5
-- Feat: Added provider routing TransportInterceptor.
+- Chore: using core 1.2.6 and framework 1.1.6
diff --git a/plugins/governance/version b/plugins/governance/version
index 80e78df68..95b25aee2 100644
--- a/plugins/governance/version
+++ b/plugins/governance/version
@@ -1 +1 @@
-1.3.5
+1.3.6
diff --git a/plugins/jsonparser/changelog.md b/plugins/jsonparser/changelog.md
index fca13c260..5de31a62e 100644
--- a/plugins/jsonparser/changelog.md
+++ b/plugins/jsonparser/changelog.md
@@ -1,4 +1,4 @@
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
diff --git a/plugins/jsonparser/version b/plugins/jsonparser/version
index aaf8be715..6f96ed081 100644
--- a/plugins/jsonparser/version
+++ b/plugins/jsonparser/version
@@ -1 +1 @@
-1.3.5
\ No newline at end of file
+1.3.6
\ No newline at end of file
diff --git a/plugins/logging/changelog.md b/plugins/logging/changelog.md
index fca13c260..5de31a62e 100644
--- a/plugins/logging/changelog.md
+++ b/plugins/logging/changelog.md
@@ -1,4 +1,4 @@
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
diff --git a/plugins/logging/version b/plugins/logging/version
index 80e78df68..95b25aee2 100644
--- a/plugins/logging/version
+++ b/plugins/logging/version
@@ -1 +1 @@
-1.3.5
+1.3.6
diff --git a/plugins/maxim/changelog.md b/plugins/maxim/changelog.md
index fca13c260..5de31a62e 100644
--- a/plugins/maxim/changelog.md
+++ b/plugins/maxim/changelog.md
@@ -1,4 +1,4 @@
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
diff --git a/plugins/maxim/version b/plugins/maxim/version
index e516bb9d9..c514bd85c 100644
--- a/plugins/maxim/version
+++ b/plugins/maxim/version
@@ -1 +1 @@
-1.4.5
+1.4.6
diff --git a/plugins/mocker/changelog.md b/plugins/mocker/changelog.md
index fca13c260..5de31a62e 100644
--- a/plugins/mocker/changelog.md
+++ b/plugins/mocker/changelog.md
@@ -1,4 +1,4 @@
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
diff --git a/plugins/mocker/version b/plugins/mocker/version
index aaf8be715..6f96ed081 100644
--- a/plugins/mocker/version
+++ b/plugins/mocker/version
@@ -1 +1 @@
-1.3.5
\ No newline at end of file
+1.3.6
\ No newline at end of file
diff --git a/plugins/otel/changelog.md b/plugins/otel/changelog.md
index fca13c260..5de31a62e 100644
--- a/plugins/otel/changelog.md
+++ b/plugins/otel/changelog.md
@@ -1,4 +1,4 @@
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
diff --git a/plugins/otel/version b/plugins/otel/version
index 1464c521f..ece61c601 100644
--- a/plugins/otel/version
+++ b/plugins/otel/version
@@ -1 +1 @@
-1.0.5
\ No newline at end of file
+1.0.6
\ No newline at end of file
diff --git a/plugins/semanticcache/changelog.md b/plugins/semanticcache/changelog.md
index fca13c260..5de31a62e 100644
--- a/plugins/semanticcache/changelog.md
+++ b/plugins/semanticcache/changelog.md
@@ -1,4 +1,4 @@
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
diff --git a/plugins/semanticcache/version b/plugins/semanticcache/version
index 80e78df68..95b25aee2 100644
--- a/plugins/semanticcache/version
+++ b/plugins/semanticcache/version
@@ -1 +1 @@
-1.3.5
+1.3.6
diff --git a/plugins/telemetry/changelog.md b/plugins/telemetry/changelog.md
index b7aeaf90c..8cdee6c08 100644
--- a/plugins/telemetry/changelog.md
+++ b/plugins/telemetry/changelog.md
@@ -1,5 +1,5 @@
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
-- Feat: Added First Token and Inter Token latency metrics for streaming requests.
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
+- Fix: Removed last token's accumulated latency from inter token latency metric.
diff --git a/plugins/telemetry/version b/plugins/telemetry/version
index aaf8be715..6f96ed081 100644
--- a/plugins/telemetry/version
+++ b/plugins/telemetry/version
@@ -1 +1 @@
-1.3.5
\ No newline at end of file
+1.3.6
\ No newline at end of file
diff --git a/transports/changelog.md b/transports/changelog.md
index 403008814..5007de001 100644
--- a/transports/changelog.md
+++ b/transports/changelog.md
@@ -1,11 +1,8 @@
-- Upgrade dependency: core to 1.2.5 and framework to 1.1.5
-- Feat: Added Anthropic thinking parameter in responses API.
-- Feat: Added Anthropic text completion integration support.
-- Fix: Extra fields sent back in streaming responses.
-- Feat: Latency for all request types (with inter token latency for streaming requests) sent back in Extra fields.
-- Feat: UI websocket implementation generalized.
-- Feat: TokenInterceptor interface added to plugins.
-- Fix: Middlewares added to integrations route.
+- Upgrade dependency: core to 1.2.6 and framework to 1.1.6
+- Added Responses streaming across all providers.
+- Fixed bedrock chat streaming decoding issues.
+- Added raw response support for all streaming requests.
+- Removed last token's accumulated latency from inter token latency metric.
diff --git a/transports/version b/transports/version
index 1a3c553c5..ff0cd1044 100644
--- a/transports/version
+++ b/transports/version
@@ -1 +1 @@
-1.3.0-prerelease6
+1.3.0-prerelease7