summaryrefslogtreecommitdiffhomepage
path: root/packages/plugin/src/example-workspace.ts
diff options
context:
space:
mode:
authorJames Long <[email protected]>2026-04-13 13:33:13 -0400
committerGitHub <[email protected]>2026-04-13 13:33:13 -0400
commitbf50d1c028e973ccc0beffdf568fca417b62f020 (patch)
treecfbbaf0c18554bd442bb0058246480d4c79fe2e6 /packages/plugin/src/example-workspace.ts
parentb8801dbd22e561e3ddaf83744726d8d98744f255 (diff)
downloadopencode-bf50d1c028e973ccc0beffdf568fca417b62f020.tar.gz
opencode-bf50d1c028e973ccc0beffdf568fca417b62f020.zip
feat(core): expose workspace adaptors to plugins (#21927)
Diffstat (limited to 'packages/plugin/src/example-workspace.ts')
-rw-r--r--packages/plugin/src/example-workspace.ts34
1 files changed, 34 insertions, 0 deletions
diff --git a/packages/plugin/src/example-workspace.ts b/packages/plugin/src/example-workspace.ts
new file mode 100644
index 000000000..925328450
--- /dev/null
+++ b/packages/plugin/src/example-workspace.ts
@@ -0,0 +1,34 @@
+import type { Plugin } from "@opencode-ai/plugin"
+import { mkdir, rm } from "node:fs/promises"
+
+export const FolderWorkspacePlugin: Plugin = async ({ experimental_workspace }) => {
+ experimental_workspace.register("folder", {
+ name: "Folder",
+ description: "Create a blank folder",
+ configure(config) {
+ const rand = "" + Math.random()
+
+ return {
+ ...config,
+ directory: `/tmp/folder/folder-${rand}`,
+ }
+ },
+ async create(config) {
+ if (!config.directory) return
+ await mkdir(config.directory, { recursive: true })
+ },
+ async remove(config) {
+ await rm(config.directory!, { recursive: true, force: true })
+ },
+ target(config) {
+ return {
+ type: "local",
+ directory: config.directory!,
+ }
+ },
+ })
+
+ return {}
+}
+
+export default FolderWorkspacePlugin