Merge branch 'dev' into opentui
Some checks are pending
format / format (push) Waiting to run
snapshot / publish (push) Waiting to run
test / test (push) Waiting to run

This commit is contained in:
Dax Raad 2025-10-05 07:27:07 -04:00
commit cdeb75adef
17 changed files with 82 additions and 63 deletions

View file

@ -29,7 +29,7 @@
},
"packages/console/core": {
"name": "@opencode-ai/console-core",
"version": "0.14.1",
"version": "0.14.3",
"dependencies": {
"@aws-sdk/client-sts": "3.782.0",
"@jsx-email/render": "1.1.1",
@ -49,7 +49,7 @@
},
"packages/console/function": {
"name": "@opencode-ai/console-function",
"version": "0.14.1",
"version": "0.14.3",
"dependencies": {
"@ai-sdk/anthropic": "2.0.0",
"@ai-sdk/openai": "2.0.2",
@ -69,7 +69,7 @@
},
"packages/console/mail": {
"name": "@opencode-ai/console-mail",
"version": "0.14.1",
"version": "0.14.3",
"dependencies": {
"@jsx-email/all": "2.2.3",
"@jsx-email/cli": "1.4.3",
@ -85,7 +85,7 @@
},
"packages/console/scripts": {
"name": "@opencode-ai/console-scripts",
"version": "0.14.1",
"version": "0.14.3",
"dependencies": {
"@opencode-ai/console-core": "workspace:*",
"tsx": "4.20.5",
@ -97,7 +97,7 @@
},
"packages/desktop": {
"name": "@opencode-ai/desktop",
"version": "0.14.1",
"version": "0.14.3",
"dependencies": {
"@kobalte/core": "catalog:",
"@opencode-ai/sdk": "workspace:*",
@ -131,7 +131,7 @@
},
"packages/function": {
"name": "@opencode-ai/function",
"version": "0.14.1",
"version": "0.14.3",
"dependencies": {
"@octokit/auth-app": "8.0.1",
"@octokit/rest": "22.0.0",
@ -146,7 +146,7 @@
},
"packages/opencode": {
"name": "opencode",
"version": "0.14.1",
"version": "0.14.3",
"bin": {
"opencode": "./bin/opencode",
},
@ -207,7 +207,7 @@
},
"packages/plugin": {
"name": "@opencode-ai/plugin",
"version": "0.14.1",
"version": "0.14.3",
"dependencies": {
"@opencode-ai/sdk": "workspace:*",
"zod": "catalog:",
@ -219,7 +219,7 @@
},
"packages/sdk/js": {
"name": "@opencode-ai/sdk",
"version": "0.14.1",
"version": "0.14.3",
"dependencies": {
"@hey-api/openapi-ts": "0.82.5",
},
@ -230,7 +230,7 @@
},
"packages/web": {
"name": "@opencode-ai/web",
"version": "0.14.1",
"version": "0.14.3",
"dependencies": {
"@astrojs/cloudflare": "12.6.3",
"@astrojs/markdown-remark": "6.3.1",

View file

@ -7,7 +7,7 @@
"dev:remote": "VITE_AUTH_URL=https://auth.dev.opencode.ai bun sst shell --stage=dev bun dev",
"build": "vinxi build && ../../opencode/script/schema.ts ./.output/public/config.json",
"start": "vinxi start",
"version": "0.14.1"
"version": "0.14.3"
},
"dependencies": {
"@ibm/plex": "6.4.1",

View file

@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/console-core",
"version": "0.14.1",
"version": "0.14.3",
"private": true,
"type": "module",
"dependencies": {

View file

@ -1,6 +1,6 @@
{
"name": "@opencode-ai/console-function",
"version": "0.14.1",
"version": "0.14.3",
"$schema": "https://json.schemastore.org/package.json",
"private": true,
"type": "module",

View file

@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/console-mail",
"version": "0.14.1",
"version": "0.14.3",
"private": true,
"type": "module",
"dependencies": {

View file

@ -1,6 +1,6 @@
{
"name": "@opencode-ai/console-scripts",
"version": "0.14.1",
"version": "0.14.3",
"$schema": "https://json.schemastore.org/package.json",
"private": true,
"type": "module",

View file

@ -1,6 +1,6 @@
{
"name": "@opencode-ai/desktop",
"version": "0.14.1",
"version": "0.14.3",
"description": "",
"type": "module",
"scripts": {

View file

@ -1,6 +1,6 @@
{
"name": "@opencode-ai/function",
"version": "0.14.1",
"version": "0.14.3",
"$schema": "https://json.schemastore.org/package.json",
"private": true,
"type": "module",

View file

@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
"version": "0.14.1",
"version": "0.14.3",
"name": "opencode",
"type": "module",
"private": true,

View file

@ -61,6 +61,8 @@ if (!snapshot) {
const macX64Sha = await $`sha256sum ./dist/opencode-darwin-x64.zip | cut -d' ' -f1`.text().then((x) => x.trim())
const macArm64Sha = await $`sha256sum ./dist/opencode-darwin-arm64.zip | cut -d' ' -f1`.text().then((x) => x.trim())
// arch
/*
const binaryPkgbuild = [
"# Maintainer: dax",
"# Maintainer: adam",
@ -146,6 +148,7 @@ if (!snapshot) {
await $`cd ./dist/aur-${pkg} && git commit -m "Update to v${version}"`
await $`cd ./dist/aur-${pkg} && git push`
}
*/
// Homebrew formula
const homebrewFormula = [

View file

@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/plugin",
"version": "0.14.1",
"version": "0.14.3",
"type": "module",
"scripts": {
"typecheck": "tsc --noEmit",

View file

@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/sdk",
"version": "0.14.1",
"version": "0.14.3",
"type": "module",
"scripts": {
"typecheck": "tsc --noEmit",

View file

@ -1,2 +1,21 @@
export * from "./client.js"
export * from "./server.js"
import { createOpencodeClient } from "./client.js"
import { createOpencodeServer } from "./server.js"
import type { ServerOptions } from "./server.js"
export async function createOpencode(options?: ServerOptions) {
const server = await createOpencodeServer({
...options,
})
const client = createOpencodeClient({
baseUrl: server.url,
})
return {
client,
server,
}
}

View file

@ -1,7 +1,7 @@
{
"name": "@opencode-ai/web",
"type": "module",
"version": "0.14.1",
"version": "0.14.3",
"scripts": {
"dev": "astro dev",
"dev:remote": "VITE_API_URL=https://api.opencode.ai astro dev",

View file

@ -25,17 +25,16 @@ npm install @opencode-ai/sdk
## Create client
Create a client instance to connect to your server:
Create an instance of opencode:
```javascript
import { createOpencodeClient } from "@opencode-ai/sdk"
import { createOpencode } from "@opencode-ai/sdk"
const client = createOpencodeClient({
baseUrl: "http://localhost:4096",
responseStyle: "data",
})
const { client } = await createOpencode()
```
This starts both a server and a client
#### Options
| Option | Type | Description | Default |
@ -48,29 +47,14 @@ const client = createOpencodeClient({
---
## Start server
## Config
You can also programmatically start an opencode server:
You can pass a configuration object to customize behavior. The instance still picks up your `opencode.json`, but you can override or add configuration inline:
```javascript
import { createOpencodeServer } from "@opencode-ai/sdk"
import { createOpencode } from "@opencode-ai/sdk"
const server = await createOpencodeServer({
hostname: "127.0.0.1",
port: 4096,
})
console.log(`Server running at ${server.url}`)
server.close()
```
You can pass a configuration object to customize server behavior. The server still picks up your `opencode.json`, but you can override or add configuration inline:
```javascript
import { createOpencodeServer } from "@opencode-ai/sdk"
const server = await createOpencodeServer({
const opencode = await createOpencode({
hostname: "127.0.0.1",
port: 4096,
config: {
@ -78,9 +62,21 @@ const server = await createOpencodeServer({
},
})
console.log(`Server running at ${server.url}`)
console.log(`Server running at ${opencode.server.url}`)
server.close()
opencode.server.close()
```
## Client only
If you aready have a running instance of opencode, you can create a client instance to connect to it:
```javascript
import { createOpencodeClient } from "@opencode-ai/sdk"
const client = createOpencodeClient({
baseUrl: "http://localhost:4096",
})
```
#### Options

View file

@ -1,12 +1,12 @@
#!/usr/bin/env bun
import { $ } from "bun"
import { createOpencodeClient, createOpencodeServer } from "@opencode-ai/sdk"
import { createOpencode } from "@opencode-ai/sdk"
if (process.versions.bun !== "1.2.21") {
throw new Error("This script requires bun@1.2.21")
}
let notes = []
const notes = [] as string[]
console.log("=== publishing ===\n")
@ -14,11 +14,13 @@ const snapshot = process.env["OPENCODE_SNAPSHOT"] === "true"
const version = await (async () => {
if (snapshot) return `0.0.0-${new Date().toISOString().slice(0, 16).replace(/[-:T]/g, "")}`
if (process.env["OPENCODE_VERSION"]) return process.env["OPENCODE_VERSION"]
const [major, minor, patch] = (await $`gh release list --limit 1 --json tagName --jq '.[0].tagName'`.text())
.trim()
.replace(/^v/, "")
.split(".")
.map((x) => Number(x) || 0)
const npmVersion = await fetch("https://registry.npmjs.org/opencode-ai/latest")
.then((res) => {
if (!res.ok) throw new Error(res.statusText)
return res.json()
})
.then((data: any) => data.version)
const [major, minor, patch] = npmVersion.split(".").map((x: string) => Number(x) || 0)
const t = process.env["OPENCODE_BUMP"]?.toLowerCase()
if (t === "major") return `${major + 1}.0.0`
if (t === "minor") return `${major}.${minor + 1}.0`
@ -28,18 +30,17 @@ process.env["OPENCODE_VERSION"] = version
console.log("version:", version)
if (!snapshot) {
const previous = await fetch("https://api.github.com/repos/sst/opencode/releases/latest")
const previous = await fetch("https://registry.npmjs.org/opencode-ai/latest")
.then((res) => {
if (!res.ok) throw new Error(res.statusText)
return res.json()
})
.then((data) => data.tag_name)
.then((data: any) => data.version)
const server = await createOpencodeServer()
const client = createOpencodeClient({ baseUrl: server.url })
const session = await client.session.create()
const opencode = await createOpencode()
const session = await opencode.client.session.create()
console.log("generating changelog since " + previous)
const raw = await client.session
const raw = await opencode.client.session
.prompt({
path: {
id: session.data!.id,
@ -85,7 +86,7 @@ if (!snapshot) {
}
}
console.log(notes)
server.close()
opencode.server.close()
}
const pkgjsons = await Array.fromAsync(

View file

@ -2,7 +2,7 @@
"name": "opencode",
"displayName": "opencode",
"description": "opencode for VS Code",
"version": "0.14.1",
"version": "0.14.3",
"publisher": "sst-dev",
"repository": {
"type": "git",