summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-06-20 15:22:41 -0400
committerDax Raad <[email protected]>2025-06-20 15:22:41 -0400
commit61160dc22039a2b37b2afb4b876ec684f7be1913 (patch)
tree62959f6b90bd132dae107032f49ee068f1861259
parent98734ff28cf3d706d97ac87cf1e57fb69a62c43a (diff)
downloadopencode-61160dc22039a2b37b2afb4b876ec684f7be1913.tar.gz
opencode-61160dc22039a2b37b2afb4b876ec684f7be1913.zip
docs: readme
-rw-r--r--README.md24
-rw-r--r--packages/opencode/src/server/server.ts28
-rw-r--r--packages/opencode/src/session/index.ts8
-rw-r--r--packages/opencode/src/share/share.ts7
-rw-r--r--packages/opencode/src/storage/storage.ts5
5 files changed, 48 insertions, 24 deletions
diff --git a/README.md b/README.md
index 9c726c8c3..4e29b92b4 100644
--- a/README.md
+++ b/README.md
@@ -52,30 +52,6 @@ $ bun run packages/opencode/src/index.ts
### FAQ
-#### How do I use this with OpenRouter?
-
-OpenRouter is not in the Models.dev database yet, but you can configure it manually.
-
-```json title="opencode.json"
-{
- "$schema": "https://opencode.ai/config.json",
- "provider": {
- "openrouter": {
- "npm": "@openrouter/ai-sdk-provider",
- "name": "OpenRouter",
- "options": {},
- "models": {
- "anthropic/claude-3.5-sonnet": {
- "name": "Claude 3.5 Sonnet"
- }
- }
- }
- }
-}
-```
-
-And then to configure an api key you can do `opencode auth login` and select "Other -> 'openrouter'"
-
#### How is this different than Claude Code?
It's very similar to Claude Code in terms of capability. Here are the key differences:
diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts
index c7fd13a38..fcc88cb8d 100644
--- a/packages/opencode/src/server/server.ts
+++ b/packages/opencode/src/server/server.ts
@@ -291,6 +291,34 @@ export namespace Server {
},
)
.post(
+ "/session_unshare",
+ describeRoute({
+ description: "Unshare the session",
+ responses: {
+ 200: {
+ description: "Successfully unshared session",
+ content: {
+ "application/json": {
+ schema: resolver(Session.Info),
+ },
+ },
+ },
+ },
+ }),
+ zValidator(
+ "json",
+ z.object({
+ sessionID: z.string(),
+ }),
+ ),
+ async (c) => {
+ const body = c.req.valid("json")
+ await Session.unshare(body.sessionID)
+ const session = await Session.get(body.sessionID)
+ return c.json(session)
+ },
+ )
+ .post(
"/session_messages",
describeRoute({
description: "Get messages for a session",
diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts
index b796c3135..db427cb7a 100644
--- a/packages/opencode/src/session/index.ts
+++ b/packages/opencode/src/session/index.ts
@@ -159,6 +159,14 @@ export namespace Session {
return share
}
+ export async function unshare(id: string) {
+ await Storage.remove("session/share/" + id)
+ await update(id, (draft) => {
+ draft.share = undefined
+ })
+ await Share.remove(id)
+ }
+
export async function update(id: string, editor: (session: Info) => void) {
const { sessions } = state()
const session = await get(id)
diff --git a/packages/opencode/src/share/share.ts b/packages/opencode/src/share/share.ts
index d47abd885..f5faee6ed 100644
--- a/packages/opencode/src/share/share.ts
+++ b/packages/opencode/src/share/share.ts
@@ -70,4 +70,11 @@ export namespace Share {
.then((x) => x.json())
.then((x) => x as { url: string; secret: string })
}
+
+ export async function remove(id: string) {
+ return fetch(`${URL}/share_delete`, {
+ method: "POST",
+ body: JSON.stringify({ id }),
+ }).then((x) => x.json())
+ }
}
diff --git a/packages/opencode/src/storage/storage.ts b/packages/opencode/src/storage/storage.ts
index 5dc3de85f..aea032cd4 100644
--- a/packages/opencode/src/storage/storage.ts
+++ b/packages/opencode/src/storage/storage.ts
@@ -24,6 +24,11 @@ export namespace Storage {
}
})
+ export async function remove(key: string) {
+ const target = path.join(state().dir, key + ".json")
+ await fs.unlink(target).catch(() => {})
+ }
+
export async function readJSON<T>(key: string) {
return Bun.file(path.join(state().dir, key + ".json")).json() as Promise<T>
}