Skip to content

Commit 9db38a4

Browse files
🌿 Fern Regeneration -- December 18, 2025 (#143)
1 parent 6ba47f9 commit 9db38a4

21 files changed

Lines changed: 185 additions & 472 deletions

File tree

.fern/metadata.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"cliVersion": "0.112.1",
3+
"generatorName": "fernapi/fern-go-sdk",
4+
"generatorVersion": "1.21.5",
5+
"generatorConfig": {
6+
"union": "v1",
7+
"includeLegacyClientOptions": true
8+
},
9+
"sdkVersion": "v2.16.1"
10+
}

.github/workflows/e2e.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,13 @@ jobs:
1818
go get golang.org/x/tools@v0.9.2-0.20230531220058-a260315e300a
1919
- name: Build
2020
run: go build -v ./...
21+
- name: Setup wiremock server
22+
run: |
23+
if [ -f wiremock/docker-compose.test.yml ]; then docker compose -f wiremock/docker-compose.test.yml down && docker compose -f wiremock/docker-compose.test.yml up -d; fi
2124
- name: Test with the Go CLI
2225
run: go test -v ./...
2326
env:
2427
COHERE_API_KEY: ${{ secrets.COHERE_API_KEY }}
25-
28+
- name: Teardown wiremock server
29+
run: |
30+
if [ -f wiremock/docker-compose.test.yml ]; then docker compose -f wiremock/docker-compose.test.yml down; fi

batches/batches_test/batches_test.go

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/root_test/root_test.go

Lines changed: 13 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

connectors/connectors_test/connectors_test.go

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/request_option.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/stream.go

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,8 @@ func (s *SseStreamReader) nextEvent() (*SseEvent, error) {
306306
}
307307

308308
func (s *SseStreamReader) parseSseLine(_bytes []byte, event *SseEvent) {
309-
if bytes.HasPrefix(_bytes, sseDataPrefix) {
309+
// Try to parse with space first (standard format), then without space (lenient format)
310+
if value, ok := s.tryParseField(_bytes, sseDataPrefix, sseDataPrefixNoSpace); ok {
310311
if len(event.data) > 0 {
311312
// Join multiple data: lines using the configured delimiter
312313
// This allows customization of how multi-line data is concatenated:
@@ -316,16 +317,28 @@ func (s *SseStreamReader) parseSseLine(_bytes []byte, event *SseEvent) {
316317
lineDelimiter := s.options.getLineDelimiter()
317318
event.data = append(event.data, lineDelimiter...)
318319
}
319-
event.data = append(event.data, _bytes[len(sseDataPrefix):]...)
320-
} else if bytes.HasPrefix(_bytes, sseIdPrefix) {
321-
event.id = append(event.id, _bytes[len(sseIdPrefix):]...)
322-
} else if bytes.HasPrefix(_bytes, sseEventPrefix) {
323-
event.event = append(event.event, _bytes[len(sseEventPrefix):]...)
324-
} else if bytes.HasPrefix(_bytes, sseRetryPrefix) {
325-
event.retry = append(event.retry, _bytes[len(sseRetryPrefix):]...)
320+
event.data = append(event.data, value...)
321+
} else if value, ok := s.tryParseField(_bytes, sseIdPrefix, sseIdPrefixNoSpace); ok {
322+
event.id = append(event.id, value...)
323+
} else if value, ok := s.tryParseField(_bytes, sseEventPrefix, sseEventPrefixNoSpace); ok {
324+
event.event = append(event.event, value...)
325+
} else if value, ok := s.tryParseField(_bytes, sseRetryPrefix, sseRetryPrefixNoSpace); ok {
326+
event.retry = append(event.retry, value...)
326327
}
327328
}
328329

330+
// tryParseField attempts to parse an SSE field by trying multiple prefix patterns in order.
331+
// This handles APIs that don't strictly follow the SSE specification by omitting the space after the colon.
332+
// It tries each prefix in the order provided and returns the value after the first matching prefix.
333+
func (s *SseStreamReader) tryParseField(line []byte, prefixes ...[]byte) ([]byte, bool) {
334+
for _, prefix := range prefixes {
335+
if bytes.HasPrefix(line, prefix) {
336+
return line[len(prefix):], true
337+
}
338+
}
339+
return nil, false
340+
}
341+
329342
func (event *SseEvent) size() int {
330343
return len(event.id) + len(event.data) + len(event.event) + len(event.retry)
331344
}
@@ -346,4 +359,10 @@ var (
346359
sseDataPrefix = []byte("data: ")
347360
sseEventPrefix = []byte("event: ")
348361
sseRetryPrefix = []byte("retry: ")
362+
363+
// Lenient prefixes without space for APIs that don't strictly follow SSE specification
364+
sseIdPrefixNoSpace = []byte("id:")
365+
sseDataPrefixNoSpace = []byte("data:")
366+
sseEventPrefixNoSpace = []byte("event:")
367+
sseRetryPrefixNoSpace = []byte("retry:")
349368
)

datasets/datasets_test/datasets_test.go

Lines changed: 5 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

embedjobs/embed_jobs_test/embed_jobs_test.go

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

finetuning/finetuning_test/finetuning_test.go

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)