mirror of
https://github.com/anomalyco/opencode.git
synced 2026-03-03 13:13:52 +00:00
Compare commits
13 Commits
vscode-v0.
...
github-v1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b4c7042c17 | ||
|
|
6965787b33 | ||
|
|
ce064b8b0e | ||
|
|
0fc546fc6b | ||
|
|
77ac9e5ec2 | ||
|
|
af2c0b3695 | ||
|
|
811b22367d | ||
|
|
933d50e25a | ||
|
|
800bee2722 | ||
|
|
5b4fb96c2e | ||
|
|
1d20bf343d | ||
|
|
79d9bf57f7 | ||
|
|
7b63db6a13 |
11
.github/workflows/publish-github-action.yml
vendored
11
.github/workflows/publish-github-action.yml
vendored
@@ -2,6 +2,10 @@ name: publish-github-action
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
tags:
|
||||
- "github-v*.*.*"
|
||||
- "!github-v1"
|
||||
|
||||
concurrency: ${{ github.workflow }}-${{ github.ref }}
|
||||
|
||||
@@ -18,12 +22,9 @@ jobs:
|
||||
|
||||
- run: git fetch --force --tags
|
||||
|
||||
- uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.2.17
|
||||
|
||||
- name: Publish
|
||||
run: |
|
||||
git config --global user.email "opencode@sst.dev"
|
||||
git config --global user.name "opencode"
|
||||
./scripts/publish-github-action.ts
|
||||
./script/publish
|
||||
working-directory: ./sdks/github
|
||||
|
||||
10
.github/workflows/publish-vscode.yml
vendored
10
.github/workflows/publish-vscode.yml
vendored
@@ -24,9 +24,13 @@ jobs:
|
||||
bun-version: 1.2.17
|
||||
|
||||
- run: git fetch --force --tags
|
||||
- run: bun install
|
||||
- run: bun install -g @vscode/vsce
|
||||
|
||||
- name: Publish
|
||||
run: ./script/publish
|
||||
working-directory: ./packages/opencode
|
||||
run: |
|
||||
bun install
|
||||
./script/publish
|
||||
working-directory: ./sdks/vscode
|
||||
env:
|
||||
VSCE_PAT: ${{ secrets.VSCE_PAT }}
|
||||
OPENVSX_TOKEN: ${{ secrets.OPENVSX_TOKEN }}
|
||||
|
||||
4
.github/workflows/publish.yml
vendored
4
.github/workflows/publish.yml
vendored
@@ -6,7 +6,9 @@ on:
|
||||
branches:
|
||||
- dev
|
||||
tags:
|
||||
- "v*.*.*"
|
||||
- "*"
|
||||
- "!vscode-v*"
|
||||
- "!github-v*"
|
||||
|
||||
concurrency: ${{ github.workflow }}-${{ github.ref }}
|
||||
|
||||
|
||||
@@ -84,40 +84,22 @@ export const InstallGithubCommand = cmd({
|
||||
let provider = await prompts.select({
|
||||
message: "Select provider",
|
||||
maxItems: 8,
|
||||
options: [
|
||||
...pipe(
|
||||
providers,
|
||||
values(),
|
||||
sortBy(
|
||||
(x) => priority[x.id] ?? 99,
|
||||
(x) => x.name ?? x.id,
|
||||
),
|
||||
map((x) => ({
|
||||
label: x.name,
|
||||
value: x.id,
|
||||
hint: priority[x.id] === 0 ? "recommended" : undefined,
|
||||
})),
|
||||
options: pipe(
|
||||
providers,
|
||||
values(),
|
||||
sortBy(
|
||||
(x) => priority[x.id] ?? 99,
|
||||
(x) => x.name ?? x.id,
|
||||
),
|
||||
{
|
||||
value: "other",
|
||||
label: "Other",
|
||||
},
|
||||
],
|
||||
map((x) => ({
|
||||
label: x.name,
|
||||
value: x.id,
|
||||
hint: priority[x.id] === 0 ? "recommended" : undefined,
|
||||
})),
|
||||
),
|
||||
})
|
||||
|
||||
if (prompts.isCancel(provider)) throw new UI.CancelledError()
|
||||
if (provider === "other") {
|
||||
provider = await prompts.text({
|
||||
message: "Enter provider id",
|
||||
validate: (x) => (x.match(/^[a-z-]+$/) ? undefined : "a-z and hyphens only"),
|
||||
})
|
||||
if (prompts.isCancel(provider)) throw new UI.CancelledError()
|
||||
provider = provider.replace(/^@ai-sdk\//, "")
|
||||
if (prompts.isCancel(provider)) throw new UI.CancelledError()
|
||||
prompts.log.warn(
|
||||
`This only stores a credential for ${provider} - you will need configure it in opencode.json, check the docs for examples.`,
|
||||
)
|
||||
}
|
||||
|
||||
return provider
|
||||
}
|
||||
@@ -211,7 +193,11 @@ on:
|
||||
|
||||
jobs:
|
||||
opencode:
|
||||
if: startsWith(github.event.comment.body, 'hey opencode')
|
||||
if: |
|
||||
startsWith(github.event.comment.body, 'opencode') ||
|
||||
startsWith(github.event.comment.body, 'hi opencode') ||
|
||||
startsWith(github.event.comment.body, 'hey opencode') ||
|
||||
contains(github.event.comment.body, '@opencode-agent')
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
|
||||
@@ -54,7 +54,9 @@ func main() {
|
||||
option.WithBaseURL(url),
|
||||
)
|
||||
|
||||
apiHandler := util.NewAPILogHandler(httpClient, "tui", slog.LevelDebug)
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
apiHandler := util.NewAPILogHandler(ctx, httpClient, "tui", slog.LevelDebug)
|
||||
logger := slog.New(apiHandler)
|
||||
slog.SetDefault(logger)
|
||||
|
||||
@@ -68,8 +70,6 @@ func main() {
|
||||
}()
|
||||
|
||||
// Create main context for the application
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
app_, err := app.New(ctx, version, appInfo, modes, httpClient, model, prompt, mode)
|
||||
if err != nil {
|
||||
|
||||
@@ -585,6 +585,8 @@ func (a appModel) openFile(filepath string) (tea.Model, tea.Cmd) {
|
||||
}
|
||||
|
||||
func (a appModel) home() string {
|
||||
measure := util.Measure("home.View")
|
||||
defer measure()
|
||||
t := theme.CurrentTheme()
|
||||
effectiveWidth := a.width - 4
|
||||
baseStyle := styles.NewStyle().Background(t.Background())
|
||||
|
||||
@@ -15,16 +15,32 @@ type APILogHandler struct {
|
||||
attrs []slog.Attr
|
||||
groups []string
|
||||
mu sync.Mutex
|
||||
queue chan opencode.AppLogParams
|
||||
}
|
||||
|
||||
func NewAPILogHandler(client *opencode.Client, service string, level slog.Level) *APILogHandler {
|
||||
return &APILogHandler{
|
||||
func NewAPILogHandler(ctx context.Context, client *opencode.Client, service string, level slog.Level) *APILogHandler {
|
||||
result := &APILogHandler{
|
||||
client: client,
|
||||
service: service,
|
||||
level: level,
|
||||
attrs: make([]slog.Attr, 0),
|
||||
groups: make([]string, 0),
|
||||
queue: make(chan opencode.AppLogParams, 100_000),
|
||||
}
|
||||
go func() {
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
case params := <-result.queue:
|
||||
_, err := client.App.Log(context.Background(), params)
|
||||
if err != nil {
|
||||
slog.Error("Failed to log to API", "error", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}()
|
||||
return result
|
||||
}
|
||||
|
||||
func (h *APILogHandler) Enabled(_ context.Context, level slog.Level) bool {
|
||||
@@ -69,13 +85,7 @@ func (h *APILogHandler) Handle(ctx context.Context, r slog.Record) error {
|
||||
params.Extra = opencode.F(extra)
|
||||
}
|
||||
|
||||
go func() {
|
||||
_, err := h.client.App.Log(context.Background(), params)
|
||||
if err != nil {
|
||||
// Fallback: we can't log the error using slog as it would create a loop
|
||||
// TODO: fallback file?
|
||||
}
|
||||
}()
|
||||
h.queue <- params
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
#!/usr/bin/env bun
|
||||
|
||||
import { $ } from "bun"
|
||||
|
||||
try {
|
||||
await $`git tag -d github-v1`
|
||||
await $`git push origin :refs/tags/github-v1`
|
||||
} catch (e: any) {
|
||||
if (e instanceof $.ShellError && e.stderr.toString().match(/tag \S+ not found/)) {
|
||||
console.log("tag not found, continuing...")
|
||||
} else {
|
||||
throw e
|
||||
}
|
||||
}
|
||||
await $`git tag -a github-v1 -m "Update github-v1 to latest"`
|
||||
await $`git push origin github-v1`
|
||||
15
sdks/github/script/publish
Executable file
15
sdks/github/script/publish
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Get the latest Git tag
|
||||
latest_tag=$(git tag --sort=committerdate | grep -E '^github-v[0-9]+\.[0-9]+\.[0-9]+$' | tail -1)
|
||||
if [ -z "$latest_tag" ]; then
|
||||
echo "No tags found"
|
||||
exit 1
|
||||
fi
|
||||
echo "Latest tag: $latest_tag"
|
||||
|
||||
# Update github-v1 to latest
|
||||
git tag -d github-v1
|
||||
git push origin :refs/tags/github-v1
|
||||
git tag -a github-v1 $latest_tag -m "Update github-v1 to $latest_tag"
|
||||
git push origin github-v1
|
||||
41
sdks/github/script/release
Executable file
41
sdks/github/script/release
Executable file
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Parse command line arguments
|
||||
minor=false
|
||||
while [ "$#" -gt 0 ]; do
|
||||
case "$1" in
|
||||
--minor) minor=true; shift 1;;
|
||||
*) echo "Unknown parameter: $1"; exit 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Get the latest Git tag
|
||||
git fetch --force --tags
|
||||
latest_tag=$(git tag --sort=committerdate | grep -E '^github-v[0-9]+\.[0-9]+\.[0-9]+$' | tail -1)
|
||||
if [ -z "$latest_tag" ]; then
|
||||
echo "No tags found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Latest tag: $latest_tag"
|
||||
|
||||
# Split the tag into major, minor, and patch numbers
|
||||
IFS='.' read -ra VERSION <<< "$latest_tag"
|
||||
|
||||
if [ "$minor" = true ]; then
|
||||
# Increment the minor version and reset patch to 0
|
||||
minor_number=${VERSION[1]}
|
||||
let "minor_number++"
|
||||
new_version="${VERSION[0]}.$minor_number.0"
|
||||
else
|
||||
# Increment the patch version
|
||||
patch_number=${VERSION[2]}
|
||||
let "patch_number++"
|
||||
new_version="${VERSION[0]}.${VERSION[1]}.$patch_number"
|
||||
fi
|
||||
|
||||
echo "New version: $new_version"
|
||||
|
||||
# Tag
|
||||
git tag $new_version
|
||||
git push --tags
|
||||
@@ -1,16 +0,0 @@
|
||||
#!/usr/bin/env bun
|
||||
|
||||
import { $ } from "bun"
|
||||
|
||||
try {
|
||||
await $`git tag -d github-v1`
|
||||
await $`git push origin :refs/tags/github-v1`
|
||||
} catch (e: any) {
|
||||
if (e instanceof $.ShellError && e.stderr.toString().match(/tag \S+ not found/)) {
|
||||
console.log("tag not found, continuing...")
|
||||
} else {
|
||||
throw e
|
||||
}
|
||||
}
|
||||
await $`git tag -a github-v1 -m "Update github-v1 to latest"`
|
||||
await $`git push origin github-v1`
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "opencode-agent",
|
||||
"displayName": "opencode for VS Code",
|
||||
"name": "opencode",
|
||||
"displayName": "opencode",
|
||||
"description": "opencode for VS Code",
|
||||
"version": "0.0.0",
|
||||
"publisher": "sst-dev",
|
||||
@@ -15,7 +15,7 @@
|
||||
"theme": "dark"
|
||||
},
|
||||
"engines": {
|
||||
"vscode": "^1.102.0"
|
||||
"vscode": "^1.94.0"
|
||||
},
|
||||
"categories": [
|
||||
"Other"
|
||||
|
||||
@@ -14,4 +14,7 @@ echo "Latest version: $version"
|
||||
vsce package --no-git-tag-version --no-update-package-json --no-dependencies --skip-license -o dist/opencode.vsix $version
|
||||
|
||||
# publish-marketplace
|
||||
vsce publish --packagePath dist/opencode.vsix
|
||||
vsce publish --packagePath dist/opencode.vsix
|
||||
|
||||
# publish-openvsx
|
||||
npx ovsx publish dist/opencode.vsix -p $OPENVSX_TOKEN
|
||||
Reference in New Issue
Block a user