Skip to content

Commit 862275c

Browse files
authored
Merge pull request #20 from chatbotkit/next
Release go-sdk
2 parents 7cc397e + 61cec0e commit 862275c

9 files changed

Lines changed: 67 additions & 45 deletions

File tree

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Release workflow for the go-sdk.
22
#
3-
# go-sdk is a library, not a binary for a Go module the git tag *is* the
3+
# go-sdk is a library, not a binary - for a Go module the git tag *is* the
44
# release (consumers fetch source via `go get`). This workflow therefore does
55
# not build or publish artifacts; it only creates a GitHub Release with
66
# auto-generated notes for the tag created by tag-release.yml.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ lint: vet fmt-check
2424
@if command -v golangci-lint > /dev/null 2>&1; then \
2525
golangci-lint run $(PACKAGES); \
2626
else \
27-
echo "golangci-lint not installed skipping (run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest)"; \
27+
echo "golangci-lint not installed - skipping (run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest)"; \
2828
fi
2929

3030
tidy:

README.md

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,37 @@
1+
[![ChatBotKit](https://img.shields.io/badge/credits-ChatBotKit-blue.svg)](https://chatbotkit.com)
2+
[![CBK.AI](https://img.shields.io/badge/credits-CBK.AI-blue.svg)](https://cbk.ai)
3+
[![Email](https://img.shields.io/badge/Email-Support-blue?logo=mail.ru)](mailto:support@chatbotkit.com)
4+
[![Discord](https://img.shields.io/badge/Discord-Support-blue?logo=discord)](https://go.cbk.ai/discord)
5+
[![Go Reference](https://pkg.go.dev/badge/github.com/chatbotkit/go-sdk.svg)](https://pkg.go.dev/github.com/chatbotkit/go-sdk)
6+
[![Follow on Twitter](https://img.shields.io/twitter/follow/chatbotkit.svg?logo=twitter)](https://twitter.com/chatbotkit)
7+
8+
```text
9+
.d8888b. 888888b. 888 d8P
10+
d88P Y88b 888 "88b 888 d8P
11+
888 888 888 .88P 888 d8P
12+
888 8888888K. 888d88K
13+
888 888 "Y88b 8888888b
14+
888 888 888 888 888 Y88b
15+
Y88b d88P 888 d88P 888 Y88b
16+
"Y8888P" 8888888P" 888 Y88b .ai
17+
```
18+
119
# ChatBotKit Go SDK
220

3-
The official Go SDK for [ChatBotKit](https://chatbotkit.com) - a platform for building and deploying conversational AI applications.
21+
The official Go SDK for [ChatBotKit](https://chatbotkit.com) - a platform for
22+
building and deploying conversational AI applications. With ChatBotKit you can
23+
create bots and agents with custom data, skillsets, and integrations while
24+
keeping AI orchestration on the ChatBotKit platform.
425

526
## Why ChatBotKit?
627

7-
**Build lighter, future-proof AI agents.** When you build with ChatBotKit, the heavy lifting happens on our servers-not in your application. This architectural advantage delivers:
28+
**Build lighter, future-proof AI agents.** When you build with ChatBotKit, the heavy lifting happens on our servers, not in your application. This architectural advantage delivers:
829

930
- 🪶 **Lightweight Agents**: Your agents stay lean because complex AI processing, model orchestration, and tool execution happen server-side. Less code in your app means faster load times and simpler maintenance.
1031

1132
- 🛡️ **Robust & Streamlined**: Server-side processing provides a more reliable experience with built-in error handling, automatic retries, and consistent behavior across all platforms.
1233

13-
- 🔄 **Backward & Forward Compatible**: As AI technology evolves-new models, new capabilities, new paradigms-your agents automatically benefit. No code changes required on your end.
34+
- 🔄 **Backward & Forward Compatible**: As AI technology evolves with new models, new capabilities, and new paradigms, your agents automatically benefit. No code changes required on your end.
1435

1536
- 🔮 **Future-Proof**: Agents you build today will remain capable tomorrow. When we add support for new AI models or capabilities, your existing agents gain those powers without any updates to your codebase.
1637

@@ -575,10 +596,10 @@ if err != nil {
575596

576597
## Releasing
577598

578-
Versions are published as Git tags for a Go module, the tag _is_ the release.
599+
Versions are published as Git tags - for a Go module, the tag _is_ the release.
579600
The version is driven by the [`VERSION`](VERSION) file:
580601

581-
1. Bump `VERSION` (semver, no `v` prefix e.g. `0.2.0`) in a pull request.
602+
1. Bump `VERSION` (semver, no `v` prefix - e.g. `0.2.0`) in a pull request.
582603
2. Merge to `main`. The `Tag Release` workflow reads `VERSION` and, if the
583604
matching `vX.Y.Z` tag does not yet exist, creates and pushes it, then
584605
triggers the `Release` workflow to publish GitHub release notes.

examples/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ tools := agent.Tools{
176176
An autonomous agent that ships with skill definitions baked into the binary using Go's `embed` package:
177177

178178
- Embeds a `skills/` directory at compile time with `//go:embed`
179-
- Loads skills from `embed.FS` via `agent.LoadSkillsFromFS` no temp-directory extraction needed
179+
- Loads skills from `embed.FS` via `agent.LoadSkillsFromFS` - no temp-directory extraction needed
180180
- Bundles skills as a feature passed to `agent.ExecuteWithTools`
181181
- Produces a single self-contained executable with no external skill files
182182

examples/agent-with-embedded-skills/README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ Demonstrates bundling skill definitions directly into the executable using Go's
1111

1212
## Skills bundled in this example
1313

14-
| Skill | Description |
15-
| --- | --- |
14+
| Skill | Description |
15+
| ------------- | ------------------------------------------------------------------ |
1616
| `Code Review` | Reviews code snippets for correctness, style, and potential issues |
17-
| `Summarize` | Condenses long text into a concise summary |
17+
| `Summarize` | Condenses long text into a concise summary |
1818

19-
Add more skills by creating a new subdirectory under `skills/` with a `SKILL.md` file they are picked up automatically at compile time.
19+
Add more skills by creating a new subdirectory under `skills/` with a `SKILL.md` file - they are picked up automatically at compile time.
2020

2121
## Usage
2222

@@ -34,8 +34,8 @@ go run .
3434

3535
```
3636
Loaded 2 embedded skill(s):
37-
• Code Review Reviews code snippets for correctness, style, and potential issues...
38-
• Summarize Condenses long text into a concise summary, preserving key points...
37+
• Code Review - Reviews code snippets for correctness, style, and potential issues...
38+
• Summarize - Condenses long text into a concise summary, preserving key points...
3939
4040
Task: Summarize the following text in bullet style: ...
4141
@@ -86,4 +86,4 @@ Extended documentation...
8686

8787
## Difference from `agent.LoadSkills`
8888

89-
`LoadSkills` reads from OS directories at runtime and sets `SkillDefinition.Path` to an absolute filesystem path. `LoadSkillsFromFS` accepts any `fs.FS` including `embed.FS` and sets `Path` to the FS-relative directory name (e.g. `"code-review"`). The rest of the API is identical.
89+
`LoadSkills` reads from OS directories at runtime and sets `SkillDefinition.Path` to an absolute filesystem path. `LoadSkillsFromFS` accepts any `fs.FS` - including `embed.FS` - and sets `Path` to the FS-relative directory name (e.g. `"code-review"`). The rest of the API is identical.

examples/agent-with-embedded-skills/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// ships as a single self-contained executable with no external skill files.
77
//
88
// The skills/ directory is embedded at compile time. At startup the embedded
9-
// FS is passed directly to agent.LoadSkillsFromFS no temp-directory
9+
// FS is passed directly to agent.LoadSkillsFromFS - no temp-directory
1010
// extraction required.
1111
//
1212
// Usage:
@@ -78,7 +78,7 @@ fast compilation.`
7878
skills := skillsResult.GetSkills()
7979
fmt.Printf("Loaded %d embedded skill(s):\n", len(skills))
8080
for _, s := range skills {
81-
fmt.Printf(" • %s %s\n", s.Name, s.Description)
81+
fmt.Printf(" • %s - %s\n", s.Name, s.Description)
8282
}
8383
fmt.Println()
8484

examples/chatbot/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ ChatBot ready! Type your message and press Enter. Type 'exit' to quit.
3030
3131
user: Hello! What can you do?
3232
bot: Hello! I'm an AI assistant powered by ChatBotKit. I can help you with a
33-
variety of tasks answering questions, explaining concepts, writing, brainstorming,
33+
variety of tasks - answering questions, explaining concepts, writing, brainstorming,
3434
and much more. What would you like to discuss?
3535
3636
user: Tell me a short joke

examples/stateful-agent/README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ Demonstrates the same manually-driven `agent.CompleteWithTools` loop as the stat
1111

1212
## When to use this pattern
1313

14-
| Use case | Why |
15-
| --- | --- |
16-
| Persisted history | The server stores every message; no local slice to maintain |
17-
| Remote orchestration | Resume a long-running conversation by ID from any process |
18-
| Recovery | Restart without reconstructing a local message array |
19-
| Inspection | Query the final conversation state via the API after the loop |
14+
| Use case | Why |
15+
| -------------------- | ------------------------------------------------------------- |
16+
| Persisted history | The server stores every message; no local slice to maintain |
17+
| Remote orchestration | Resume a long-running conversation by ID from any process |
18+
| Recovery | Restart without reconstructing a local message array |
19+
| Inspection | Query the final conversation state via the API after the loop |
2020

2121
## Usage
2222

@@ -51,7 +51,7 @@ Bot: The weather in San Francisco is sunny at 72°F...
5151

5252
## Key difference from the stateless example
5353

54-
The stateless example appends `MessageAgentEvent` entries to a local `[]agent.Message` slice. Here, that slice is replaced by a server-side conversation the only state the loop tracks locally is the conversation ID and whether to send `Text` on the next call:
54+
The stateless example appends `MessageAgentEvent` entries to a local `[]agent.Message` slice. Here, that slice is replaced by a server-side conversation - the only state the loop tracks locally is the conversation ID and whether to send `Text` on the next call:
5555

5656
```go
5757
nextText := &userPrompt // send prompt on first iteration

types/types.go

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

0 commit comments

Comments
 (0)