mirror of
https://github.com/sst/opencode.git
synced 2025-08-31 02:07:24 +00:00
re-export shell $ for plugin
This commit is contained in:
parent
5536b14347
commit
b824809605
4 changed files with 144 additions and 7 deletions
10
bun.lock
10
bun.lock
|
@ -10,7 +10,7 @@
|
||||||
},
|
},
|
||||||
"packages/function": {
|
"packages/function": {
|
||||||
"name": "@opencode/function",
|
"name": "@opencode/function",
|
||||||
"version": "0.3.128",
|
"version": "0.3.129",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ai-sdk/anthropic": "2.0.0",
|
"@ai-sdk/anthropic": "2.0.0",
|
||||||
"@ai-sdk/openai": "2.0.2",
|
"@ai-sdk/openai": "2.0.2",
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
},
|
},
|
||||||
"packages/opencode": {
|
"packages/opencode": {
|
||||||
"name": "opencode",
|
"name": "opencode",
|
||||||
"version": "0.3.128",
|
"version": "0.3.129",
|
||||||
"bin": {
|
"bin": {
|
||||||
"opencode": "./bin/opencode",
|
"opencode": "./bin/opencode",
|
||||||
},
|
},
|
||||||
|
@ -83,7 +83,7 @@
|
||||||
},
|
},
|
||||||
"packages/plugin": {
|
"packages/plugin": {
|
||||||
"name": "@opencode-ai/plugin",
|
"name": "@opencode-ai/plugin",
|
||||||
"version": "0.3.128",
|
"version": "0.3.129",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@opencode-ai/sdk": "workspace:*",
|
"@opencode-ai/sdk": "workspace:*",
|
||||||
},
|
},
|
||||||
|
@ -95,7 +95,7 @@
|
||||||
},
|
},
|
||||||
"packages/sdk/js": {
|
"packages/sdk/js": {
|
||||||
"name": "@opencode-ai/sdk",
|
"name": "@opencode-ai/sdk",
|
||||||
"version": "0.3.128",
|
"version": "0.3.129",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@hey-api/openapi-ts": "0.80.1",
|
"@hey-api/openapi-ts": "0.80.1",
|
||||||
"@tsconfig/node22": "catalog:",
|
"@tsconfig/node22": "catalog:",
|
||||||
|
@ -104,7 +104,7 @@
|
||||||
},
|
},
|
||||||
"packages/web": {
|
"packages/web": {
|
||||||
"name": "@opencode/web",
|
"name": "@opencode/web",
|
||||||
"version": "0.3.128",
|
"version": "0.3.129",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astrojs/cloudflare": "^12.5.4",
|
"@astrojs/cloudflare": "^12.5.4",
|
||||||
"@astrojs/markdown-remark": "6.3.1",
|
"@astrojs/markdown-remark": "6.3.1",
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import type { Event, createOpencodeClient, App, Model, Provider, Permission, UserMessage, Part } from "@opencode-ai/sdk"
|
import type { Event, createOpencodeClient, App, Model, Provider, Permission, UserMessage, Part } from "@opencode-ai/sdk"
|
||||||
import { $ } from "bun"
|
import type { BunShell } from "./shell"
|
||||||
|
|
||||||
export type PluginInput = {
|
export type PluginInput = {
|
||||||
client: ReturnType<typeof createOpencodeClient>
|
client: ReturnType<typeof createOpencodeClient>
|
||||||
app: App
|
app: App
|
||||||
$: $
|
$: BunShell
|
||||||
}
|
}
|
||||||
export type Plugin = (input: PluginInput) => Promise<Hooks>
|
export type Plugin = (input: PluginInput) => Promise<Hooks>
|
||||||
|
|
||||||
|
|
136
packages/plugin/src/shell.ts
Normal file
136
packages/plugin/src/shell.ts
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
export type ShellFunction = (input: Uint8Array) => Uint8Array
|
||||||
|
|
||||||
|
export type ShellExpression =
|
||||||
|
| { toString(): string }
|
||||||
|
| Array<ShellExpression>
|
||||||
|
| string
|
||||||
|
| { raw: string }
|
||||||
|
| ReadableStream
|
||||||
|
|
||||||
|
export interface BunShell {
|
||||||
|
(strings: TemplateStringsArray, ...expressions: ShellExpression[]): BunShellPromise
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Perform bash-like brace expansion on the given pattern.
|
||||||
|
* @param pattern - Brace pattern to expand
|
||||||
|
*/
|
||||||
|
braces(pattern: string): string[]
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Escape strings for input into shell commands.
|
||||||
|
*/
|
||||||
|
escape(input: string): string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change the default environment variables for shells created by this instance.
|
||||||
|
*/
|
||||||
|
env(newEnv?: Record<string, string | undefined>): BunShell
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default working directory to use for shells created by this instance.
|
||||||
|
*/
|
||||||
|
cwd(newCwd?: string): BunShell
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure the shell to not throw an exception on non-zero exit codes.
|
||||||
|
*/
|
||||||
|
nothrow(): BunShell
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure whether or not the shell should throw an exception on non-zero exit codes.
|
||||||
|
*/
|
||||||
|
throws(shouldThrow: boolean): BunShell
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface BunShellPromise extends Promise<BunShellOutput> {
|
||||||
|
readonly stdin: WritableStream
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change the current working directory of the shell.
|
||||||
|
*/
|
||||||
|
cwd(newCwd: string): this
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set environment variables for the shell.
|
||||||
|
*/
|
||||||
|
env(newEnv: Record<string, string> | undefined): this
|
||||||
|
|
||||||
|
/**
|
||||||
|
* By default, the shell will write to the current process's stdout and stderr, as well as buffering that output.
|
||||||
|
* This configures the shell to only buffer the output.
|
||||||
|
*/
|
||||||
|
quiet(): this
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read from stdout as a string, line by line
|
||||||
|
* Automatically calls quiet() to disable echoing to stdout.
|
||||||
|
*/
|
||||||
|
lines(): AsyncIterable<string>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read from stdout as a string.
|
||||||
|
* Automatically calls quiet() to disable echoing to stdout.
|
||||||
|
*/
|
||||||
|
text(encoding?: BufferEncoding): Promise<string>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read from stdout as a JSON object
|
||||||
|
* Automatically calls quiet()
|
||||||
|
*/
|
||||||
|
json(): Promise<any>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read from stdout as an ArrayBuffer
|
||||||
|
* Automatically calls quiet()
|
||||||
|
*/
|
||||||
|
arrayBuffer(): Promise<ArrayBuffer>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read from stdout as a Blob
|
||||||
|
* Automatically calls quiet()
|
||||||
|
*/
|
||||||
|
blob(): Promise<Blob>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure the shell to not throw an exception on non-zero exit codes.
|
||||||
|
*/
|
||||||
|
nothrow(): this
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure whether or not the shell should throw an exception on non-zero exit codes.
|
||||||
|
*/
|
||||||
|
throws(shouldThrow: boolean): this
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface BunShellOutput {
|
||||||
|
readonly stdout: Buffer
|
||||||
|
readonly stderr: Buffer
|
||||||
|
readonly exitCode: number
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read from stdout as a string
|
||||||
|
*/
|
||||||
|
text(encoding?: BufferEncoding): string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read from stdout as a JSON object
|
||||||
|
*/
|
||||||
|
json(): any
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read from stdout as an ArrayBuffer
|
||||||
|
*/
|
||||||
|
arrayBuffer(): ArrayBuffer
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read from stdout as an Uint8Array
|
||||||
|
*/
|
||||||
|
bytes(): Uint8Array
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read from stdout as a Blob
|
||||||
|
*/
|
||||||
|
blob(): Blob
|
||||||
|
}
|
||||||
|
|
||||||
|
export type BunShellError = Error & BunShellOutput
|
|
@ -27,6 +27,7 @@ for (const file of pkgjsons) {
|
||||||
console.log("updated:", file)
|
console.log("updated:", file)
|
||||||
await Bun.file(file).write(pkg)
|
await Bun.file(file).write(pkg)
|
||||||
}
|
}
|
||||||
|
await $`bun install`
|
||||||
|
|
||||||
console.log("\n=== opencode ===\n")
|
console.log("\n=== opencode ===\n")
|
||||||
await import(`../packages/opencode/script/publish.ts`)
|
await import(`../packages/opencode/script/publish.ts`)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue