Files
John Kennedy 8b1dff9a1e fix: patch 6 high-severity security alerts (#42)
## Security Alert Patch

Resolves all 6 open high-severity Dependabot alerts in the Maven
dependency graph.

### Packages Updated

| Package | Resolved change | Strategy | Scope | CVEs resolved |
|---|---|---|---|---|
| com.fasterxml.jackson.core:jackson-databind | 2.15.3 -> 2.18.8; 2.21.0
-> 2.21.4 | Parent bump for Palantir plus constrained Dokka classpaths |
Build/dev only | CVE-2026-54512, CVE-2026-54513 |
| org.bouncycastle:bcpg-jdk18on | 1.80 -> 1.84 | Constraint on Kotlin
publishing validation | Build/dev only | CVE-2026-3505 |
| org.codehaus.plexus:plexus-utils | 4.0.2 -> 4.0.3 | Constraint on
Shadow plugin classpath | Test/build only | CVE-2025-67030 |

### Strategy Notes

- Palantir Java Format moves from 2.89.0 to 2.93.0, the first release
that declares patched Jackson 2.21.4.
- Dokka 2.2.0 is the latest release and still declares Jackson 2.15.3,
so its buildscript and worker configurations are constrained to 2.18.8.
Remove the constraint when Dokka publishes a patched dependency graph.
- Kotlin publishing validation selects Bouncy Castle 1.80 internally, so
that isolated configuration is constrained to 1.84.
- Shadow 8.3.8 still declares Plexus Utils 4.0.2. Shadow 9.4.3 was
assessed but failed the repository R8 compatibility test, so the plugin
remains at 8.3.8 with a buildscript-only Plexus constraint.

### Advisory Details

- CVE-2026-54512 / GHSA-j3rv-43j4-c7qm: Jackson polymorphic type
validator bypass via generic type parameters.
- CVE-2026-54513 / GHSA-rmj7-2vxq-3g9f: Jackson array subtype allowlist
bypass.
- CVE-2026-3505 / GHSA-cj8j-37rh-8475: Bouncy Castle uncontrolled
resource consumption.
- CVE-2025-67030 / GHSA-6fmv-xxpf-w3cw: Plexus Utils directory traversal
in extractFile.

### Linear Tickets

No matching open Linear tickets found.

### Verification

- [x] All project dependency reports contain no affected vulnerable
versions
- [x] Kotlin and Java lint pass
- [x] Full Gradle test suite passes
- [x] ProGuard and R8 compatibility checks pass
- [x] Dokka Javadoc generation passes
- [x] git diff --check passes
2026-07-16 11:55:45 +02:00
..
2026-06-03 21:20:47 +02:00

LangSmith Examples

This module contains runnable Kotlin examples organized by feature:

  • example/ - SDK examples (ListRuns, Dataset, PromptManagement, RecordExperiment, E2eEval)
  • example/otel/ - OpenTelemetry tracing examples

Prerequisites

All examples require:

./gradlew :langsmith-java-example:run -Pexample=ExampleName -Dlangchain.langsmithApiKey=your_api_key

Alternatively, you can use environment variables:

export LANGSMITH_API_KEY=your_api_key

The langchain.baseUrl system property (or LANGSMITH_ENDPOINT environment variable) is optional and defaults to https://api.smith.langchain.com/ if not set.

OpenTelemetry Tracing Examples

Located in src/main/kotlin/com/langchain/smith/example/otel/

OpenAI + LangSmith (Real API Calls)

Make actual OpenAI API calls with automatic tracing to LangSmith.

./gradlew :langsmith-java-example:run -Pexample=OtelOpenAI \
  -Dlangchain.langsmithApiKey=your_api_key \
  -DOPENAI_API_KEY=your_openai_key \
  -DLANGSMITH_PROJECT=my-project  # optional, defaults to "default"

View traces at https://smith.langchain.com

LangSmith (Standalone)

Send mock traces to LangSmith without external API calls.

./gradlew :langsmith-java-example:run -Pexample=OtelLangSmith \
  -Dlangchain.langsmithApiKey=your_api_key \
  -DLANGSMITH_PROJECT=my-project  # optional, defaults to "default"

View traces at https://smith.langchain.com

Spring Boot API to LangSmith

REST API with OpenTelemetry traces sent to LangSmith.

# Start server
./gradlew :langsmith-java-example:run -Pexample=SpringBootLangSmith \
  -Dlangchain.langsmithApiKey=your_api_key \
  -DLANGSMITH_PROJECT=my-project  # optional

# In another terminal, test endpoints:
curl -X POST http://localhost:8080/api/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello!"}'

curl "http://localhost:8080/api/analyze?text=This%20is%20great"

Prompt Management Example

Located in src/main/kotlin/com/langchain/smith/example/

Prompt Management (Getting Started)

RECOMMENDED - Clean, simple example following the same pattern as the Dataset example.

./gradlew :langsmith-java-example:run -Pexample=PromptManagement \
  -Dlangchain.langsmithApiKey=your_api_key

Features demonstrated:

  1. Create prompt repositories using client.repos().create()
  2. Add prompt content with variables using client.commits().update()
  3. List and filter prompts using client.repos().list()
  4. Retrieve prompt content using client.commits().retrieve()
  5. View prompts in the LangSmith UI

This example follows the LangSmith Prompt Management docs and uses the SDK directly.


**Additional features:**
- Use prompts with OpenAI to generate responses
- Update prompt metadata and descriptions
- Pull specific commit versions
- System + user message prompts