summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-06-18 16:13:09 -0400
committerDax Raad <[email protected]>2025-06-18 16:13:33 -0400
commit658067186a9c558d51f1a58f44cf40bd473954fd (patch)
tree21cd70cb2cf0730235d136b1f44575463f650b8d
parentac777b77cfbab686a8f924293626df5781af56e9 (diff)
downloadopencode-658067186a9c558d51f1a58f44cf40bd473954fd.tar.gz
opencode-658067186a9c558d51f1a58f44cf40bd473954fd.zip
ignore: share page stuff
-rw-r--r--packages/opencode/package.json5
-rw-r--r--packages/opencode/src/session/index.ts16
-rw-r--r--packages/opencode/src/share/share.ts9
-rw-r--r--packages/web/src/components/Share.tsx2
4 files changed, 21 insertions, 11 deletions
diff --git a/packages/opencode/package.json b/packages/opencode/package.json
index 41ce3b4d4..0895476b4 100644
--- a/packages/opencode/package.json
+++ b/packages/opencode/package.json
@@ -9,10 +9,7 @@
"dev": "bun run ./src/index.ts"
},
"exports": {
- "./*": [
- "./src/*.ts",
- "./src/*/index.ts"
- ]
+ "./*": "./src/*.ts"
},
"devDependencies": {
"@tsconfig/bun": "1.0.7",
diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts
index 2672d93db..962b1e574 100644
--- a/packages/opencode/src/session/index.ts
+++ b/packages/opencode/src/session/index.ts
@@ -42,7 +42,6 @@ export namespace Session {
parentID: Identifier.schema("session").optional(),
share: z
.object({
- secret: z.string(),
url: z.string(),
})
.optional(),
@@ -58,6 +57,12 @@ export namespace Session {
})
export type Info = z.output<typeof Info>
+ export const ShareInfo = z.object({
+ secret: z.string(),
+ url: z.string(),
+ })
+ export type ShareInfo = z.output<typeof ShareInfo>
+
export const Event = {
Updated: Bus.event(
"session.updated",
@@ -132,13 +137,20 @@ export namespace Session {
return read as Info
}
+ export async function getShare(id: string) {
+ return Storage.readJSON<ShareInfo>("session/share/" + id)
+ }
+
export async function share(id: string) {
const session = await get(id)
if (session.share) return session.share
const share = await Share.create(id)
await update(id, (draft) => {
- draft.share = share
+ draft.share = {
+ url: share.url,
+ }
})
+ await Storage.writeJSON<ShareInfo>("session/share/" + id, share)
for (const msg of await messages(id)) {
await Share.sync("session/message/" + id + "/" + msg.id, msg)
}
diff --git a/packages/opencode/src/share/share.ts b/packages/opencode/src/share/share.ts
index 877ac0aaf..8605644c3 100644
--- a/packages/opencode/src/share/share.ts
+++ b/packages/opencode/src/share/share.ts
@@ -19,10 +19,11 @@ export namespace Share {
export async function sync(key: string, content: any) {
const [root, ...splits] = key.split("/")
if (root !== "session") return
- const [, sessionID] = splits
- const session = await Session.get(sessionID)
- if (!session.share) return
- const { secret } = session.share
+ const [sub, sessionID] = splits
+ if (sub === "share") return
+ const share = await Session.getShare(sessionID).catch(() => {})
+ if (!share) return
+ const { secret } = share
pending.set(key, content)
queue = queue
.then(async () => {
diff --git a/packages/web/src/components/Share.tsx b/packages/web/src/components/Share.tsx
index 2fafe5f94..9089cf2bc 100644
--- a/packages/web/src/components/Share.tsx
+++ b/packages/web/src/components/Share.tsx
@@ -37,7 +37,7 @@ import CodeBlock from "./CodeBlock"
import MarkdownView from "./MarkdownView"
import styles from "./share.module.css"
import { type Message } from "opencode/session/message"
-import { type Session } from "opencode/session"
+import { type Session } from "opencode/session/index"
const MIN_DURATION = 2