summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorTommy D. Rossi <[email protected]>2026-04-12 00:14:30 +0200
committerGitHub <[email protected]>2026-04-11 17:14:30 -0500
commitd62ec7776ea90097dd292a5660c1db602fe0aa3e (patch)
tree2ccb8f6a18d3f961ae0b8e14bc159c72633a4f62 /packages
parentcb1e5d9e41b451dbf44ee565d61c6bd426f9175a (diff)
downloadopencode-d62ec7776ea90097dd292a5660c1db602fe0aa3e.tar.gz
opencode-d62ec7776ea90097dd292a5660c1db602fe0aa3e.zip
feat: allow session permission updates (#22070)
Diffstat (limited to 'packages')
-rw-r--r--packages/opencode/src/server/instance/session.ts8
-rw-r--r--packages/opencode/src/session/index.ts5
-rw-r--r--packages/sdk/js/src/v2/gen/sdk.gen.ts2
-rw-r--r--packages/sdk/js/src/v2/gen/types.gen.ts1
4 files changed, 16 insertions, 0 deletions
diff --git a/packages/opencode/src/server/instance/session.ts b/packages/opencode/src/server/instance/session.ts
index a2a15d59e..016fb3ee1 100644
--- a/packages/opencode/src/server/instance/session.ts
+++ b/packages/opencode/src/server/instance/session.ts
@@ -273,6 +273,7 @@ export const SessionRoutes = lazy(() =>
"json",
z.object({
title: z.string().optional(),
+ permission: Permission.Ruleset.optional(),
time: z
.object({
archived: z.number().optional(),
@@ -283,10 +284,17 @@ export const SessionRoutes = lazy(() =>
async (c) => {
const sessionID = c.req.valid("param").sessionID
const updates = c.req.valid("json")
+ const current = await Session.get(sessionID)
if (updates.title !== undefined) {
await Session.setTitle({ sessionID, title: updates.title })
}
+ if (updates.permission !== undefined) {
+ await Session.setPermission({
+ sessionID,
+ permission: Permission.merge(current.permission ?? [], updates.permission),
+ })
+ }
if (updates.time?.archived !== undefined) {
await Session.setArchived({ sessionID, time: updates.time.archived })
}
diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts
index d7bf99637..70deb95a4 100644
--- a/packages/opencode/src/session/index.ts
+++ b/packages/opencode/src/session/index.ts
@@ -708,6 +708,11 @@ export namespace Session {
runPromise((svc) => svc.setArchived(input)),
)
+ export const setPermission = fn(
+ z.object({ sessionID: SessionID.zod, permission: Permission.Ruleset }),
+ (input) => runPromise((svc) => svc.setPermission(input)),
+ )
+
export const setRevert = fn(
z.object({ sessionID: SessionID.zod, revert: Info.shape.revert, summary: Info.shape.summary }),
(input) =>
diff --git a/packages/sdk/js/src/v2/gen/sdk.gen.ts b/packages/sdk/js/src/v2/gen/sdk.gen.ts
index d06a504d6..7fba60fce 100644
--- a/packages/sdk/js/src/v2/gen/sdk.gen.ts
+++ b/packages/sdk/js/src/v2/gen/sdk.gen.ts
@@ -1725,6 +1725,7 @@ export class Session2 extends HeyApiClient {
directory?: string
workspace?: string
title?: string
+ permission?: PermissionRuleset
time?: {
archived?: number
}
@@ -1740,6 +1741,7 @@ export class Session2 extends HeyApiClient {
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
{ in: "body", key: "title" },
+ { in: "body", key: "permission" },
{ in: "body", key: "time" },
],
},
diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts
index de45b1599..f2b32a159 100644
--- a/packages/sdk/js/src/v2/gen/types.gen.ts
+++ b/packages/sdk/js/src/v2/gen/types.gen.ts
@@ -3266,6 +3266,7 @@ export type SessionGetResponse = SessionGetResponses[keyof SessionGetResponses]
export type SessionUpdateData = {
body?: {
title?: string
+ permission?: PermissionRuleset
time?: {
archived?: number
}