42e8d11552
deploy-www / deploy (push) Has been cancelled
publish / version (push) Has been cancelled
publish / build-cli (push) Has been cancelled
publish / build-node-cli (map[host:blacksmith-4vcpu-ubuntu-2404 target:linux-x64]) (push) Has been cancelled
publish / build-node-cli (map[host:blacksmith-4vcpu-ubuntu-2404-arm target:linux-arm64]) (push) Has been cancelled
publish / build-node-cli (map[host:blacksmith-4vcpu-windows-2025 target:windows-arm64]) (push) Has been cancelled
publish / build-node-cli (map[host:blacksmith-4vcpu-windows-2025 target:windows-x64]) (push) Has been cancelled
publish / build-node-cli (map[host:macos-26 target:darwin-arm64]) (push) Has been cancelled
publish / sign-cli-windows (push) Has been cancelled
publish / build-electron (map[bun_install_flags:--os=darwin --cpu=arm64 host:macos-26 platform_flag:--mac --arm64 target:aarch64-apple-darwin]) (push) Has been cancelled
publish / build-electron (map[bun_install_flags:--os=darwin --cpu=x64 host:macos-26-intel platform_flag:--mac --x64 target:x86_64-apple-darwin]) (push) Has been cancelled
publish / build-electron (map[host:blacksmith-4vcpu-ubuntu-2404 platform_flag:--linux target:x86_64-unknown-linux-gnu]) (push) Has been cancelled
publish / build-electron (map[host:blacksmith-4vcpu-ubuntu-2404-arm platform_flag:--linux --arm64 target:aarch64-unknown-linux-gnu]) (push) Has been cancelled
publish / build-electron (map[host:blacksmith-4vcpu-windows-2025 platform_flag:--win target:x86_64-pc-windows-msvc]) (push) Has been cancelled
publish / build-electron (map[host:windows-2025 platform_flag:--win --arm64 target:aarch64-pc-windows-msvc]) (push) Has been cancelled
publish / publish (push) Has been cancelled
typecheck / typecheck (push) Has been cancelled
65 lines
2.1 KiB
TypeScript
65 lines
2.1 KiB
TypeScript
import { FileDiff } from "@opencode-ai/schema/file-diff"
|
|
import { Location } from "@opencode-ai/schema/location"
|
|
import { NonNegativeInt } from "@opencode-ai/schema/schema"
|
|
import { Vcs } from "@opencode-ai/schema/vcs"
|
|
import { Schema } from "effect"
|
|
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
|
|
import { LocationQuery, locationQueryOpenApi } from "./location.js"
|
|
|
|
const DiffQuery = Schema.Struct({
|
|
...LocationQuery.fields,
|
|
mode: Vcs.Mode,
|
|
context: Schema.NumberFromString.pipe(Schema.decodeTo(NonNegativeInt), Schema.optional),
|
|
})
|
|
|
|
export const VcsGroup = HttpApiGroup.make("server.vcs")
|
|
.add(
|
|
HttpApiEndpoint.get("vcs.get", "/api/vcs", {
|
|
query: LocationQuery,
|
|
success: Location.response(Vcs.Info),
|
|
})
|
|
.annotateMerge(locationQueryOpenApi)
|
|
.annotateMerge(
|
|
OpenApi.annotations({
|
|
identifier: "v2.vcs.get",
|
|
summary: "VCS info",
|
|
description: "Get current and default branch information for the requested location.",
|
|
}),
|
|
),
|
|
)
|
|
.add(
|
|
HttpApiEndpoint.get("vcs.status", "/api/vcs/status", {
|
|
query: LocationQuery,
|
|
success: Location.response(Schema.Array(Vcs.FileStatus)),
|
|
})
|
|
.annotateMerge(locationQueryOpenApi)
|
|
.annotateMerge(
|
|
OpenApi.annotations({
|
|
identifier: "v2.vcs.status",
|
|
summary: "VCS status",
|
|
description: "List uncommitted working-copy changes relative to the requested location.",
|
|
}),
|
|
),
|
|
)
|
|
.add(
|
|
HttpApiEndpoint.get("vcs.diff", "/api/vcs/diff", {
|
|
query: DiffQuery,
|
|
success: Location.response(Schema.Array(FileDiff.Info)),
|
|
})
|
|
.annotateMerge(locationQueryOpenApi)
|
|
.annotateMerge(
|
|
OpenApi.annotations({
|
|
identifier: "v2.vcs.diff",
|
|
summary: "VCS diff",
|
|
description:
|
|
"Diff the working copy against HEAD (mode git) or the default-branch merge base (mode branch) for the requested location.",
|
|
}),
|
|
),
|
|
)
|
|
.annotateMerge(
|
|
OpenApi.annotations({
|
|
title: "vcs",
|
|
description: "Location-scoped version control routes.",
|
|
}),
|
|
)
|