Skip to content

Commit f3d8fde

Browse files
stainless-app[bot]ericdong-langchainjacoblee93dependabot[bot]jkennedyvz
authored
release: 0.1.0-alpha.25 (#109)
* Revert "main to next (#108)" (#110) This reverts commit 5a8988d. * Fix/lint and remove method count (#111) * release: 0.1.0-alpha.24 * fix: lint and remove outdated method count ci test Made-with: Cursor --------- Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com> * feat: Adds package version resource to build (#100) * codegen metadata * codegen metadata * chore: make `Properties` more resilient to `null` * chore: drop apache dependency * codegen metadata * codegen metadata * codegen metadata * chore(internal): expand imports * feat(api): manual updates * codegen metadata * feat(api): manual updates * codegen metadata * feat(api): manual updates * codegen metadata * codegen metadata * feat(api): api update * codegen metadata * codegen metadata * feat(api): api update * feat(api): api update * codegen metadata * codegen metadata * codegen metadata * codegen metadata * feat(api): api update * codegen metadata * codegen metadata * codegen metadata * codegen metadata * codegen metadata * codegen metadata * codegen metadata * codegen metadata * feat(api): api update * codegen metadata * feat(api): manual updates removed endpoints not in openAPI spec * codegen metadata * codegen metadata * codegen metadata * chore: align user agent format (#96) * feat(api): api update * codegen metadata * codegen metadata * feat(api): api update * chore(internal): codegen related update * chore(internal): bump palantir-java-format * chore(ci): skip uploading artifacts on stainless-internal branches * chore: update placeholder string * codegen metadata * codegen metadata * codegen metadata * codegen metadata * feat(api): api update * codegen metadata * codegen metadata * fix(client): incorrect `Retry-After` parsing * codegen metadata * codegen metadata * feat(api): api update * feat(api): api update * codegen metadata * codegen metadata * feat(api): api update * codegen metadata * chore(internal): tweak CI branches * codegen metadata * codegen metadata * codegen metadata * codegen metadata * codegen metadata * chore(internal): update retry delay tests * fix(client): allow updating header/query affecting fields in `toBuilder()` * codegen metadata * codegen metadata * feat(api): api update * feat(api): api update * codegen metadata * chore(internal): bump ktfmt * chore: remove old test (#97) * codegen metadata * feat(api): manual updates * codegen metadata * feat(api): api update * codegen metadata * codegen metadata * codegen metadata * chore(internal): update gitignore * codegen metadata * codegen metadata * codegen metadata * chore(ci): skip lint on metadata-only changes Note that we still want to run tests, as these depend on the metadata. * Fix error messages (#102) * codegen metadata * Merge * Merge * Lint * Add debug log * main to next (#108) * codegen metadata * codegen metadata * chore: make `Properties` more resilient to `null` * chore: drop apache dependency * codegen metadata * codegen metadata * codegen metadata * chore(internal): expand imports * feat(api): manual updates * codegen metadata * feat(api): manual updates * codegen metadata * feat(api): manual updates * codegen metadata * codegen metadata * feat(api): api update * codegen metadata * codegen metadata * feat(api): api update * feat(api): api update * codegen metadata * codegen metadata * codegen metadata * codegen metadata * feat(api): api update * codegen metadata * codegen metadata * codegen metadata * codegen metadata * codegen metadata * codegen metadata * codegen metadata * codegen metadata * feat(api): api update * codegen metadata * feat(api): manual updates removed endpoints not in openAPI spec * codegen metadata * codegen metadata * codegen metadata * chore: align user agent format (#96) * feat(api): api update * codegen metadata * codegen metadata * feat(api): api update * chore(internal): codegen related update * chore(internal): bump palantir-java-format * chore(ci): skip uploading artifacts on stainless-internal branches * chore: update placeholder string * codegen metadata * codegen metadata * codegen metadata * codegen metadata * feat(api): api update * codegen metadata * codegen metadata * fix(client): incorrect `Retry-After` parsing * codegen metadata * codegen metadata * feat(api): api update * feat(api): api update * codegen metadata * codegen metadata * feat(api): api update * codegen metadata * chore(internal): tweak CI branches * codegen metadata * codegen metadata * codegen metadata * codegen metadata * codegen metadata * chore(internal): update retry delay tests * fix(client): allow updating header/query affecting fields in `toBuilder()` * codegen metadata * codegen metadata * feat(api): api update * feat(api): api update * codegen metadata * chore(internal): bump ktfmt * chore: remove old test (#97) * codegen metadata * feat(api): manual updates * codegen metadata * feat(api): api update * codegen metadata * codegen metadata * codegen metadata * chore(internal): update gitignore * codegen metadata * codegen metadata * codegen metadata * chore(ci): skip lint on metadata-only changes Note that we still want to run tests, as these depend on the metadata. * Fix error messages (#102) * codegen metadata * release: 0.1.0-alpha.24 * fix: lint and remove outdated method count ci test (#103) Made-with: Cursor * chore(deps): bump gradle/actions from 5 to 6 in the all-actions group (#99) Bumps the all-actions group with 1 update: [gradle/actions](https://github.com/gradle/actions). Updates `gradle/actions` from 5 to 6 - [Release notes](https://github.com/gradle/actions/releases) - [Commits](gradle/actions@v5...v6) --- updated-dependencies: - dependency-name: gradle/actions dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: all-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com> Co-authored-by: Jacob Lee <jacoblee93@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Change to warning and add a test --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com> Co-authored-by: ericdong-langchain <ericdong@langchain.dev> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Adds contributing guide (#112) * ci: add minimum workflow permissions (#106) - Add top-level `permissions: contents: read` to all 4 workflow files - Change release-doctor.yml trigger from `pull_request` to `pull_request_target` to prevent secret exfiltration via PR-controlled workflow modifications Co-authored-by: Posture Fix <posture-fix@langchain.ai> * ci: SHA-pin third-party Gradle actions (#107) Pin gradle/actions/setup-gradle and gradle/gradle-build-action to full commit SHAs to prevent supply chain attacks via tag hijacking. - gradle/actions/setup-gradle@v6 → @205054a... (ci.yml ×2, codeql.yml) - gradle/gradle-build-action@v3 → @12318b0... (ci.yml, publish-sonatype.yml) Co-authored-by: Posture Fix <posture-fix@langchain.ai> * chore: fix dependabot.yml posture issues (#105) * chore: update dependabot.yml to comply with posture checks - Change schedule from weekly to monthly for all ecosystems - Add update-types split (major vs minor-and-patch) for gradle and github-actions - Add docker ecosystem entry for .devcontainer/Dockerfile * chore: add target-branch next and fix docker group split for Stainless posture compliance --------- Co-authored-by: Posture Fix <posture-fix@langchain.ai> * feat(api): api update * feat(api): api update * feat: Add `traceable` function wrapper for LangSmith tracing (#101) * Adds versioning resource to build * Adds initial version of traceable * Lint * Deflake * Progress * Progress * Fixes * Fixes * More refactor * Small bug * Refactor * Fix * Devin feedback * Tests and feedback * Remove redundant comment * Docstring * codegen metadata * codegen metadata * feat: Adds processInputs and processOutputs to traceable (#113) * Adds processInputs and processOutputs to traceable * Move generics into TraceProcessIO to avoid having them top level * Fix docstring, nit * codegen metadata * codegen metadata * feat(api): api update * codegen metadata * codegen metadata * codegen metadata * codegen metadata * feat(api): api update * codegen metadata * feat(api): manual updates * codegen metadata * fix: Fix format detection when pulling legacy prompts (#115) * Fix format detection when pulling legacy prompts * Feedback * Update AGENTS.md (#116) * feat: Rework wrapOpenAI (#114) * Update wrapOpenAI * Remove * Fixes * nits * Feedback * Cache * Remove comment * Fix * feat(api): api update * feat(api): api update * fix: patch security alerts — bump Jackson and constrain vulnerable transitive deps (#119) Bumps Jackson 2.18.2→2.18.6 in published api deps and adds version constraints for vulnerable transitive dependencies in test and example scopes (Tomcat 9.0.115, Jetty 9.4.57, logback 1.2.13, commons-fileupload 1.6.0, commons-io 2.14.0, json-smart 2.4.9, snakeyaml 1.31, spring-web 5.3.34). Addresses alerts: #75 (jackson-core), #82/#81/#80/#79/#78/#72/#70/#69 /#68/#66/#65/#60/#59/#54/#52/#51/#48/#46/#45/#44/#43/#35/#34/#29/#31 (tomcat/jetty/logback/commons). Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> * codegen metadata * codegen metadata * feat: Adds support for tracing streams with traceable (#117) * Adds support for tracing streams with traceable * Polish * Make stream tracing opt-in * Rework to use a passthrough instead of a proxy * Record stream cancellations as errors * Feedback * Format and add to AGENTS.md * feat: Adds streaming support for wrapOpenAI (#118) * Adds support for tracing streams with traceable * Polish * Make stream tracing opt-in * Rework to use a passthrough instead of a proxy * Adds streaming support for wrapOpenAI * Record stream cancellations as errors * Adds streaming example * Allow empty config default, add example * Fix * release: 0.1.0-alpha.25 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: ericdong-langchain <ericdong@langchain.dev> Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com> Co-authored-by: Jacob Lee <jacoblee93@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kennedy <65985482+jkennedyvz@users.noreply.github.com> Co-authored-by: Posture Fix <posture-fix@langchain.ai> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 4ba75e7 commit f3d8fde

83 files changed

Lines changed: 7740 additions & 2291 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/dependabot.yml

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,57 @@ version: 2
22
updates:
33
- package-ecosystem: gradle
44
directory: /
5+
target-branch: "next"
56
schedule:
6-
interval: weekly
7+
interval: monthly
78
groups:
8-
all-dependencies:
9+
minor-and-patch:
910
patterns:
1011
- "*"
12+
update-types:
13+
- minor
14+
- patch
15+
major:
16+
patterns:
17+
- "*"
18+
update-types:
19+
- major
20+
open-pull-requests-limit: 5
21+
22+
- package-ecosystem: docker
23+
directory: /.devcontainer
24+
target-branch: "next"
25+
schedule:
26+
interval: monthly
27+
groups:
28+
minor-and-patch:
29+
patterns:
30+
- "*"
31+
update-types:
32+
- minor
33+
- patch
34+
major:
35+
patterns:
36+
- "*"
37+
update-types:
38+
- major
1139
open-pull-requests-limit: 5
1240

1341
- package-ecosystem: github-actions
1442
directory: /
43+
target-branch: "next"
1544
schedule:
16-
interval: weekly
45+
interval: monthly
1746
groups:
18-
all-actions:
47+
minor-and-patch:
48+
patterns:
49+
- "*"
50+
update-types:
51+
- minor
52+
- patch
53+
major:
1954
patterns:
2055
- "*"
56+
update-types:
57+
- major
2158
open-pull-requests-limit: 5

.github/workflows/ci.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ on:
1414
- 'stl-preview-head/**'
1515
- 'stl-preview-base/**'
1616

17+
permissions:
18+
contents: read
19+
1720
jobs:
1821
lint:
1922
timeout-minutes: 15
@@ -34,7 +37,7 @@ jobs:
3437
cache: gradle
3538

3639
- name: Set up Gradle
37-
uses: gradle/actions/setup-gradle@v6
40+
uses: gradle/actions/setup-gradle@205054a7257716ec64af10a2e2ff1ac5d3b132db # v6
3841

3942
- name: Run lints
4043
run: ./scripts/lint
@@ -61,7 +64,7 @@ jobs:
6164
cache: gradle
6265

6366
- name: Set up Gradle
64-
uses: gradle/actions/setup-gradle@v6
67+
uses: gradle/actions/setup-gradle@205054a7257716ec64af10a2e2ff1ac5d3b132db # v6
6568

6669
- name: Build SDK
6770
run: ./scripts/build
@@ -103,7 +106,7 @@ jobs:
103106
cache: gradle
104107

105108
- name: Set up Gradle
106-
uses: gradle/gradle-build-action@v3
109+
uses: gradle/gradle-build-action@12318b01111bfa6462c00534ffa998f8b397b979 # v3
107110

108111
- name: Run tests
109112
run: ./scripts/test

.github/workflows/codeql.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ on:
77
branches: [main, next]
88
schedule:
99
- cron: "0 0 * * 0" # Weekly scan on Sunday at midnight
10+
11+
permissions:
12+
contents: read
13+
1014
jobs:
1115
analyze:
1216
name: Analyze
@@ -28,7 +32,7 @@ jobs:
2832
8
2933
21
3034
- name: Set up Gradle
31-
uses: gradle/actions/setup-gradle@v6
35+
uses: gradle/actions/setup-gradle@205054a7257716ec64af10a2e2ff1ac5d3b132db # v6
3236

3337
- name: Initialize CodeQL
3438
uses: github/codeql-action/init@v4

.github/workflows/publish-sonatype.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ on:
88
release:
99
types: [published]
1010

11+
permissions:
12+
contents: read
13+
1114
jobs:
1215
publish:
1316
name: publish
@@ -26,7 +29,7 @@ jobs:
2629
cache: gradle
2730

2831
- name: Set up Gradle
29-
uses: gradle/gradle-build-action@v3
32+
uses: gradle/gradle-build-action@12318b01111bfa6462c00534ffa998f8b397b979 # v3
3033

3134
- name: Publish to Sonatype
3235
run: |-

.github/workflows/release-doctor.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
name: Release Doctor
22
on:
3-
pull_request:
3+
pull_request_target:
44
branches:
55
- main
66
workflow_dispatch:
77

8+
permissions:
9+
contents: read
10+
811
jobs:
912
release_doctor:
1013
name: release doctor

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
.gradle
44
.idea
55
.kotlin
6+
**/bin/main/
7+
**/bin/test/
68
build/
79
codegen.log
810
kls_database.db

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "0.1.0-alpha.24"
2+
".": "0.1.0-alpha.25"
33
}

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 102
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/langsmith%2Flangsmith-api-9b1a87757cd49a12277fb568ad9a86554c1b46ac115f0ca43fd19e8d8025286d.yml
3-
openapi_spec_hash: 76801a4fc381af1c3435db9504a2b382
4-
config_hash: 787a12876983a14bce67ed57899e4a94
1+
configured_endpoints: 103
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/langsmith%2Flangsmith-api-9b9d7777d6a9aab968ca5e1c90d7dda257754fd6542e44483976ad91d2841499.yml
3+
openapi_spec_hash: 83f2642863f2042a3c091ef10d3207e0
4+
config_hash: c217b34d458f1b65f260715693d447f9

AGENTS.md

Lines changed: 71 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,25 @@ override fun toString(): String =
9191
"}"
9292
```
9393

94+
### Prefer extension functions over type casts
95+
96+
When adding behavior to a type you don't own, use a `private` extension function instead of casting to an implementation type:
97+
98+
```kotlin
99+
// Good — extension function, no cast needed
100+
private fun Stream<*>.withErrorTracking(
101+
errorRef: AtomicReference<Throwable>,
102+
exhaustedRef: AtomicBoolean,
103+
): Stream<Any?> { ... }
104+
105+
val instrumented = result.withErrorTracking(iterationError, streamExhausted)
106+
107+
// Bad — casting to implementation type
108+
val instrumented = wrapStreamWithErrorCapture(result, iterationError, streamExhausted)
109+
// or worse:
110+
(runs as? RunServiceImpl)?.flush()
111+
```
112+
94113
### Use `partition` instead of double `filter`
95114

96115
```kotlin
@@ -157,22 +176,45 @@ The project uses ktfmt with `--kotlinlang-style`.
157176

158177
## Testing
159178

179+
### Don't add comments that restate the test name
180+
181+
Test function names should be descriptive enough on their own. Don't add comments that repeat what the name already says:
182+
183+
```kotlin
184+
// Good — name is self-documenting
185+
@Test
186+
fun parseLegacyPromptTemplateWithTemplateFormat() {
187+
val manifest = ...
188+
}
189+
190+
// Bad — comment restates the function name
191+
@Test
192+
fun parseLegacyPromptTemplateWithTemplateFormat() {
193+
// Legacy PromptTemplate format with template_format field
194+
val manifest = ...
195+
}
196+
```
197+
160198
### Running tests
161199

200+
Try to run targeted tests matching the code you changed:
201+
162202
```bash
163-
# All prompt tests (unit + integration)
164-
./gradlew :langsmith-java-core:test --tests "com.langchain.smith.prompts.*"
203+
# Run tests for the package you changed
204+
./gradlew :langsmith-java-core:test --tests "com.langchain.smith.prompts.*" --rerun
165205

166-
# Just integration tests (requires API keys)
167-
./gradlew :langsmith-java-core:test --tests "com.langchain.smith.prompts.PromptIntegrationTest"
206+
# Run a single test class
207+
./gradlew :langsmith-java-core:test --tests "com.langchain.smith.prompts.ManifestParserTest" --rerun
168208

169-
# Force re-run (skip Gradle cache)
170-
./gradlew :langsmith-java-core:test --tests "..." --rerun
209+
# Run a single test method
210+
./gradlew :langsmith-java-core:test --tests "com.langchain.smith.prompts.ManifestParserTest.parsePromptTemplate" --rerun
171211

172212
# See println output
173213
./gradlew :langsmith-java-core:test --tests "..." --rerun --info
174214
```
175215

216+
Only run the full suite (`./gradlew :langsmith-java-core:test --rerun`) before finalizing a PR or after large cross-cutting changes.
217+
176218
### Integration tests
177219

178220
Integration tests require environment variables:
@@ -188,5 +230,27 @@ Tests skip gracefully via `assumeTrue` if keys are missing.
188230
## Code style
189231

190232
- `toString()` should be single-line, following the `ClassName{field=value, field=value}` convention used by the rest of the SDK.
191-
- Avoid `@Suppress("UNCHECKED_CAST")` — restructure code to use safe patterns (`as? String`, `is Map<*, *>` with `entries.associate`, etc).
233+
- Avoid `@Suppress("UNCHECKED_CAST")` — restructure code to use safe patterns (`as? String`, `is Map<*, *>` with `entries.associate`, etc). When unavoidable (e.g. generic type erasure after an `is` check), add a comment explaining why the cast is safe.
234+
- Use named arguments for constructor/function calls with 2+ parameters, especially when types could be confused:
235+
```kotlin
236+
// Good
237+
PromptMessage(
238+
role = PromptMessage.Role.HUMAN,
239+
template = template,
240+
templateFormat = templateFormat,
241+
)
242+
243+
// Bad — positional args are ambiguous
244+
PromptMessage(PromptMessage.Role.HUMAN, template, templateFormat = templateFormat)
245+
```
246+
- Name functions from the caller's perspective — describe what the caller gets, not what the function does internally. Prefer `stream.withErrorTracking()` over `wrapStreamWithErrorCapture(stream)`.
247+
- When an `Optional` has a fallback default, use `orElse(default)` directly instead of `orElse(null) ?: default`:
248+
```kotlin
249+
// Good — default goes straight into orElse
250+
kwargs["template_format"]?.asString()?.orElse("f-string") ?: "f-string"
251+
252+
// Bad — creates unnecessary null intermediary
253+
kwargs["template_format"]?.asString()?.orElse(null) ?: "f-string"
254+
```
255+
The `?: "f-string"` is still needed to handle the case where the key is missing from the map (`null` from `kwargs["template_format"]`), but `orElse` should carry the default for when the key exists but isn't a string.
192256
- Anthropic SDK is a `compileOnly` dependency — users must add it themselves. Methods that use Anthropic types should catch `NoClassDefFoundError` and throw `IllegalStateException` with a clear message.

CHANGELOG.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,37 @@
11
# Changelog
22

3+
## 0.1.0-alpha.25 (2026-03-31)
4+
5+
Full Changelog: [v0.1.0-alpha.24...v0.1.0-alpha.25](https://github.com/langchain-ai/langsmith-java/compare/v0.1.0-alpha.24...v0.1.0-alpha.25)
6+
7+
### Features
8+
9+
* Add `traceable` function wrapper for LangSmith tracing ([#101](https://github.com/langchain-ai/langsmith-java/issues/101)) ([f3bf340](https://github.com/langchain-ai/langsmith-java/commit/f3bf3404fe56be9801806ea44f283eb586d96ce8))
10+
* Adds package version resource to build ([#100](https://github.com/langchain-ai/langsmith-java/issues/100)) ([31cc003](https://github.com/langchain-ai/langsmith-java/commit/31cc0037be79a336cd86f6d53c7093f6c3fb7034))
11+
* Adds processInputs and processOutputs to traceable ([#113](https://github.com/langchain-ai/langsmith-java/issues/113)) ([ee2991f](https://github.com/langchain-ai/langsmith-java/commit/ee2991f830703f29b3d0eddfd621109362a465e5))
12+
* Adds streaming support for wrapOpenAI ([#118](https://github.com/langchain-ai/langsmith-java/issues/118)) ([aae9d2c](https://github.com/langchain-ai/langsmith-java/commit/aae9d2c0dc7f7dae40960113154d9ddff3bd0e06))
13+
* Adds support for tracing streams with traceable ([#117](https://github.com/langchain-ai/langsmith-java/issues/117)) ([0217521](https://github.com/langchain-ai/langsmith-java/commit/0217521b852c70dba4795b145b3eb7b16fd2d10f))
14+
* **api:** api update ([9182ef8](https://github.com/langchain-ai/langsmith-java/commit/9182ef84e304c602899c73b6865473d3ade4953f))
15+
* **api:** api update ([0c91488](https://github.com/langchain-ai/langsmith-java/commit/0c914884473e1de2877708cd92db30fdc8fc10aa))
16+
* **api:** api update ([efa16fc](https://github.com/langchain-ai/langsmith-java/commit/efa16fcb5974fbd5500714936cb52a6e930a6181))
17+
* **api:** api update ([979e8af](https://github.com/langchain-ai/langsmith-java/commit/979e8af2b6f01444bcea33e1e09d1acbc986a6be))
18+
* **api:** api update ([cd9f555](https://github.com/langchain-ai/langsmith-java/commit/cd9f555e525172d5ba0bcb0cd033dc045a9026bd))
19+
* **api:** api update ([af93e09](https://github.com/langchain-ai/langsmith-java/commit/af93e09dc9dd8597454b2a02b1ed37de4e71fde4))
20+
* **api:** manual updates ([493d5e9](https://github.com/langchain-ai/langsmith-java/commit/493d5e9b2844ff160598b87602c9f91733722fe4))
21+
* Rework wrapOpenAI ([#114](https://github.com/langchain-ai/langsmith-java/issues/114)) ([63e0bdc](https://github.com/langchain-ai/langsmith-java/commit/63e0bdc5c893185399065c2c602ed0d5c46bbc68))
22+
23+
24+
### Bug Fixes
25+
26+
* Fix format detection when pulling legacy prompts ([#115](https://github.com/langchain-ai/langsmith-java/issues/115)) ([ea6c3d2](https://github.com/langchain-ai/langsmith-java/commit/ea6c3d29d7c726b7b8455e6e93ec3322330ea5e7))
27+
* patch security alerts — bump Jackson and constrain vulnerable transitive deps ([#119](https://github.com/langchain-ai/langsmith-java/issues/119)) ([dfe092c](https://github.com/langchain-ai/langsmith-java/commit/dfe092c51ab27c3131b81785321664a75d584764))
28+
29+
30+
### Chores
31+
32+
* **deps:** bump gradle/actions from 5 to 6 in the all-actions group ([#99](https://github.com/langchain-ai/langsmith-java/issues/99)) ([4ba75e7](https://github.com/langchain-ai/langsmith-java/commit/4ba75e7776499833eddb1959b194b71eb847840f))
33+
* fix dependabot.yml posture issues ([#105](https://github.com/langchain-ai/langsmith-java/issues/105)) ([a0e5441](https://github.com/langchain-ai/langsmith-java/commit/a0e544170d0c62e340a6250c32b6b521f818eaa4))
34+
335
## 0.1.0-alpha.24 (2026-03-25)
436

537
Full Changelog: [v0.1.0-alpha.23...v0.1.0-alpha.24](https://github.com/langchain-ai/langsmith-java/compare/v0.1.0-alpha.23...v0.1.0-alpha.24)

0 commit comments

Comments
 (0)