@opencode/server 0.0.0-dev-19448 → 0.0.0-dev-19449
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/api.d.ts
CHANGED
|
@@ -305,6 +305,15 @@ export declare const Api: import("@opencode/protocol/api").Api<LocationMiddlewar
|
|
|
305
305
|
};
|
|
306
306
|
}>, never, never>;
|
|
307
307
|
readonly metadata: import("effect/Schema").decodeTo<import("effect/Schema").optional<import("effect/Schema").toType<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Codec<import("effect/Schema").Json, import("effect/Schema").Json, never, never>>>>, import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Codec<import("effect/Schema").Json, import("effect/Schema").Json, never, never>>>, never, never>;
|
|
308
|
+
readonly permissions: import("effect/Schema").decodeTo<import("effect/Schema").optional<import("effect/Schema").toType<import("effect/Schema").$Array<import("effect/Schema").Struct<{
|
|
309
|
+
readonly action: import("effect/Schema").String;
|
|
310
|
+
readonly resource: import("effect/Schema").String;
|
|
311
|
+
readonly effect: import("effect/Schema").Literals<readonly ["allow", "deny", "ask"]>;
|
|
312
|
+
}>>>>, import("effect/Schema").optionalKey<import("effect/Schema").$Array<import("effect/Schema").Struct<{
|
|
313
|
+
readonly action: import("effect/Schema").String;
|
|
314
|
+
readonly resource: import("effect/Schema").String;
|
|
315
|
+
readonly effect: import("effect/Schema").Literals<readonly ["allow", "deny", "ask"]>;
|
|
316
|
+
}>>>, never, never>;
|
|
308
317
|
readonly version: import("effect/Schema").String;
|
|
309
318
|
readonly sessionID: import("effect/Schema").brand<import("effect/Schema").String, "SessionID"> & {
|
|
310
319
|
create: () => string & import("effect/Brand").Brand<"SessionID">;
|
|
@@ -389,6 +398,15 @@ export declare const Api: import("@opencode/protocol/api").Api<LocationMiddlewar
|
|
|
389
398
|
};
|
|
390
399
|
}>, never, never>;
|
|
391
400
|
readonly metadata: import("effect/Schema").decodeTo<import("effect/Schema").optional<import("effect/Schema").toType<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Codec<import("effect/Schema").Json, import("effect/Schema").Json, never, never>>>>, import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Codec<import("effect/Schema").Json, import("effect/Schema").Json, never, never>>>, never, never>;
|
|
401
|
+
readonly permissions: import("effect/Schema").decodeTo<import("effect/Schema").optional<import("effect/Schema").toType<import("effect/Schema").$Array<import("effect/Schema").Struct<{
|
|
402
|
+
readonly action: import("effect/Schema").String;
|
|
403
|
+
readonly resource: import("effect/Schema").String;
|
|
404
|
+
readonly effect: import("effect/Schema").Literals<readonly ["allow", "deny", "ask"]>;
|
|
405
|
+
}>>>>, import("effect/Schema").optionalKey<import("effect/Schema").$Array<import("effect/Schema").Struct<{
|
|
406
|
+
readonly action: import("effect/Schema").String;
|
|
407
|
+
readonly resource: import("effect/Schema").String;
|
|
408
|
+
readonly effect: import("effect/Schema").Literals<readonly ["allow", "deny", "ask"]>;
|
|
409
|
+
}>>>, never, never>;
|
|
392
410
|
readonly version: import("effect/Schema").String;
|
|
393
411
|
readonly sessionID: import("effect/Schema").brand<import("effect/Schema").String, "SessionID"> & {
|
|
394
412
|
create: () => string & import("effect/Brand").Brand<"SessionID">;
|
|
@@ -765,6 +783,66 @@ export declare const Api: import("@opencode/protocol/api").Api<LocationMiddlewar
|
|
|
765
783
|
descending: (id?: string) => string & import("effect/Brand").Brand<"SessionID">;
|
|
766
784
|
};
|
|
767
785
|
}>;
|
|
786
|
+
}, import("effect/Schema").Struct<{
|
|
787
|
+
readonly id: import("effect/Schema").brand<import("effect/Schema").String, "Event.ID"> & {
|
|
788
|
+
create: () => string & import("effect/Brand").Brand<"Event.ID">;
|
|
789
|
+
};
|
|
790
|
+
readonly created: import("effect/Schema").Finite;
|
|
791
|
+
readonly metadata: import("effect/Schema").decodeTo<import("effect/Schema").optional<import("effect/Schema").toType<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>>, import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>, never, never>;
|
|
792
|
+
readonly type: import("effect/Schema").Literal<"session.permissions.updated">;
|
|
793
|
+
readonly durable: import("effect/Schema").Struct<{
|
|
794
|
+
readonly aggregateID: import("effect/Schema").String;
|
|
795
|
+
readonly seq: import("effect/Schema").brand<import("effect/Schema").Int, "Event.Seq">;
|
|
796
|
+
readonly version: import("effect/Schema").decodeTo<import("effect/Schema").toType<import("effect/Schema").brand<import("effect/Schema").Int, "Event.Version">>, import("effect/Schema").Literal<number>, never, never>;
|
|
797
|
+
}>;
|
|
798
|
+
readonly location: import("effect/Schema").decodeTo<import("effect/Schema").optional<import("effect/Schema").toType<import("effect/Schema").Struct<{
|
|
799
|
+
readonly directory: import("effect/Schema").brand<import("effect/Schema").String, "AbsolutePath">;
|
|
800
|
+
readonly workspaceID: import("effect/Schema").decodeTo<import("effect/Schema").optional<import("effect/Schema").toType<import("effect/Schema").brand<import("effect/Schema").String, "Workspace.ID"> & {
|
|
801
|
+
ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
|
|
802
|
+
create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
|
|
803
|
+
}>>, import("effect/Schema").optionalKey<import("effect/Schema").brand<import("effect/Schema").String, "Workspace.ID"> & {
|
|
804
|
+
ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
|
|
805
|
+
create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
|
|
806
|
+
}>, never, never>;
|
|
807
|
+
}>>>, import("effect/Schema").optionalKey<import("effect/Schema").Struct<{
|
|
808
|
+
readonly directory: import("effect/Schema").brand<import("effect/Schema").String, "AbsolutePath">;
|
|
809
|
+
readonly workspaceID: import("effect/Schema").decodeTo<import("effect/Schema").optional<import("effect/Schema").toType<import("effect/Schema").brand<import("effect/Schema").String, "Workspace.ID"> & {
|
|
810
|
+
ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
|
|
811
|
+
create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
|
|
812
|
+
}>>, import("effect/Schema").optionalKey<import("effect/Schema").brand<import("effect/Schema").String, "Workspace.ID"> & {
|
|
813
|
+
ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
|
|
814
|
+
create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
|
|
815
|
+
}>, never, never>;
|
|
816
|
+
}>>, never, never>;
|
|
817
|
+
readonly data: import("effect/Schema").Struct<{
|
|
818
|
+
readonly permissions: import("effect/Schema").$Array<import("effect/Schema").Struct<{
|
|
819
|
+
readonly action: import("effect/Schema").String;
|
|
820
|
+
readonly resource: import("effect/Schema").String;
|
|
821
|
+
readonly effect: import("effect/Schema").Literals<readonly ["allow", "deny", "ask"]>;
|
|
822
|
+
}>>;
|
|
823
|
+
readonly sessionID: import("effect/Schema").brand<import("effect/Schema").String, "SessionID"> & {
|
|
824
|
+
create: () => string & import("effect/Brand").Brand<"SessionID">;
|
|
825
|
+
descending: (id?: string) => string & import("effect/Brand").Brand<"SessionID">;
|
|
826
|
+
};
|
|
827
|
+
}>;
|
|
828
|
+
}> & {
|
|
829
|
+
type: "session.permissions.updated";
|
|
830
|
+
durability: "durable";
|
|
831
|
+
durable: {
|
|
832
|
+
readonly version: number;
|
|
833
|
+
readonly aggregate: string;
|
|
834
|
+
};
|
|
835
|
+
data: import("effect/Schema").Struct<{
|
|
836
|
+
readonly permissions: import("effect/Schema").$Array<import("effect/Schema").Struct<{
|
|
837
|
+
readonly action: import("effect/Schema").String;
|
|
838
|
+
readonly resource: import("effect/Schema").String;
|
|
839
|
+
readonly effect: import("effect/Schema").Literals<readonly ["allow", "deny", "ask"]>;
|
|
840
|
+
}>>;
|
|
841
|
+
readonly sessionID: import("effect/Schema").brand<import("effect/Schema").String, "SessionID"> & {
|
|
842
|
+
create: () => string & import("effect/Brand").Brand<"SessionID">;
|
|
843
|
+
descending: (id?: string) => string & import("effect/Brand").Brand<"SessionID">;
|
|
844
|
+
};
|
|
845
|
+
}>;
|
|
768
846
|
}, import("effect/Schema").Struct<{
|
|
769
847
|
readonly id: import("effect/Schema").brand<import("effect/Schema").String, "Event.ID"> & {
|
|
770
848
|
create: () => string & import("effect/Brand").Brand<"Event.ID">;
|
|
@@ -6554,6 +6632,11 @@ export declare const Api: import("@opencode/protocol/api").Api<LocationMiddlewar
|
|
|
6554
6632
|
readonly providerID: string & import("effect/Brand").Brand<"Provider.ID">;
|
|
6555
6633
|
readonly variant?: (string & import("effect/Brand").Brand<"Model.VariantID">) | undefined;
|
|
6556
6634
|
} | undefined;
|
|
6635
|
+
readonly permissions?: readonly {
|
|
6636
|
+
readonly action: string;
|
|
6637
|
+
readonly resource: string;
|
|
6638
|
+
readonly effect: "allow" | "deny" | "ask";
|
|
6639
|
+
}[] | undefined;
|
|
6557
6640
|
readonly agent?: (string & import("effect/Brand").Brand<"Agent.ID">) | undefined;
|
|
6558
6641
|
readonly subpath?: (string & import("effect/Brand").Brand<"RelativePath">) | undefined;
|
|
6559
6642
|
readonly parentID?: (string & import("effect/Brand").Brand<"SessionID">) | undefined;
|
|
@@ -6667,6 +6750,30 @@ export declare const Api: import("@opencode/protocol/api").Api<LocationMiddlewar
|
|
|
6667
6750
|
readonly metadata?: {
|
|
6668
6751
|
readonly [x: string]: unknown;
|
|
6669
6752
|
} | undefined;
|
|
6753
|
+
} | {
|
|
6754
|
+
readonly id: string & import("effect/Brand").Brand<"Event.ID">;
|
|
6755
|
+
readonly data: {
|
|
6756
|
+
readonly permissions: readonly {
|
|
6757
|
+
readonly action: string;
|
|
6758
|
+
readonly resource: string;
|
|
6759
|
+
readonly effect: "allow" | "deny" | "ask";
|
|
6760
|
+
}[];
|
|
6761
|
+
readonly sessionID: string & import("effect/Brand").Brand<"SessionID">;
|
|
6762
|
+
};
|
|
6763
|
+
readonly durable: {
|
|
6764
|
+
readonly aggregateID: string;
|
|
6765
|
+
readonly seq: number & import("effect/Brand").Brand<"Event.Seq">;
|
|
6766
|
+
readonly version: number & import("effect/Brand").Brand<"Event.Version">;
|
|
6767
|
+
};
|
|
6768
|
+
readonly type: "session.permissions.updated";
|
|
6769
|
+
readonly created: number;
|
|
6770
|
+
readonly location?: {
|
|
6771
|
+
readonly directory: string & import("effect/Brand").Brand<"AbsolutePath">;
|
|
6772
|
+
readonly workspaceID?: (string & import("effect/Brand").Brand<"Workspace.ID">) | undefined;
|
|
6773
|
+
} | undefined;
|
|
6774
|
+
readonly metadata?: {
|
|
6775
|
+
readonly [x: string]: unknown;
|
|
6776
|
+
} | undefined;
|
|
6670
6777
|
} | {
|
|
6671
6778
|
readonly id: string & import("effect/Brand").Brand<"Event.ID">;
|
|
6672
6779
|
readonly data: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Instance } from "@opencode/core/instance/service";
|
|
2
2
|
import { PermissionSaved } from "@opencode/core/permission/saved";
|
|
3
3
|
import { Session } from "@opencode/core/session";
|
|
4
|
-
export declare const PermissionHandler: import("effect/Layer").Layer<import("effect/unstable/httpapi/HttpApiGroup").Service<"server", "server.permission">, never,
|
|
4
|
+
export declare const PermissionHandler: import("effect/Layer").Layer<import("effect/unstable/httpapi/HttpApiGroup").Service<"server", "server.permission">, never, import("@opencode/protocol/middleware/schema-error").SchemaErrorMiddleware | import("@opencode/protocol/middleware/authorization").Authorization | Session.Service | Instance.Service | import("../location").LocationMiddleware | import("../middleware/session-location").SessionLocationMiddleware | import("effect/unstable/http/HttpRouter").Request<"Requires", PermissionSaved.Service>>;
|
|
@@ -43,6 +43,9 @@ export const PermissionHandler = HttpApiBuilder.group(Api, "server.permission",
|
|
|
43
43
|
})).handle("session.permission.reply", Effect.fn(function* (ctx) {
|
|
44
44
|
yield* (yield* requireOwnedRequest(ctx.params.sessionID, ctx.params.requestID)).permission.reply({ requestID: ctx.params.requestID, reply: ctx.payload.reply, message: ctx.payload.message }).pipe(Effect.catchTag("Permission.NotFoundError", () => missingRequest(ctx.params.requestID)));
|
|
45
45
|
return HttpApiSchema.NoContent.make();
|
|
46
|
+
})).handle("session.permission.rules", Effect.fn(function* (ctx) {
|
|
47
|
+
yield* sessions.setPermissions({ sessionID: ctx.params.sessionID, permissions: ctx.payload.permissions }).pipe(Effect.catchTag("Session.NotFoundError", missingSession));
|
|
48
|
+
return HttpApiSchema.NoContent.make();
|
|
46
49
|
})).handle("permission.saved.list", Effect.fn(function* (ctx) {
|
|
47
50
|
const location = yield* Location.Service;
|
|
48
51
|
return {
|
package/dist/handlers/session.js
CHANGED
|
@@ -77,6 +77,7 @@ export const SessionHandler = HttpApiBuilder.group(Api, "server.session", (handl
|
|
|
77
77
|
agent: ctx.payload.agent,
|
|
78
78
|
model: ctx.payload.model,
|
|
79
79
|
metadata: ctx.payload.metadata,
|
|
80
|
+
permissions: ctx.payload.permissions,
|
|
80
81
|
location: ctx.payload.location ?? { directory: AbsolutePath.make(process.cwd()) }
|
|
81
82
|
}).pipe(Effect.orDie)
|
|
82
83
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@opencode/server",
|
|
4
|
-
"version": "0.0.0-dev-
|
|
4
|
+
"version": "0.0.0-dev-19449",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -30,17 +30,17 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@effect/platform-node": "4.0.0-rc.112",
|
|
32
32
|
"@effect/platform-node-shared": "4.0.0-rc.112",
|
|
33
|
-
"@opencode/core": "0.0.0-dev-
|
|
34
|
-
"@opencode/protocol": "0.0.0-dev-
|
|
35
|
-
"@opencode/schema": "0.0.0-dev-
|
|
36
|
-
"@opencode/simulation": "0.0.0-dev-
|
|
37
|
-
"@opencode/util": "0.0.0-dev-
|
|
33
|
+
"@opencode/core": "0.0.0-dev-19449",
|
|
34
|
+
"@opencode/protocol": "0.0.0-dev-19449",
|
|
35
|
+
"@opencode/schema": "0.0.0-dev-19449",
|
|
36
|
+
"@opencode/simulation": "0.0.0-dev-19449",
|
|
37
|
+
"@opencode/util": "0.0.0-dev-19449",
|
|
38
38
|
"drizzle-orm": "1.0.0-rc.5-169397b",
|
|
39
39
|
"effect": "4.0.0-rc.112"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@opencode/client": "0.0.0-dev-
|
|
43
|
-
"@opencode/plugin": "0.0.0-dev-
|
|
42
|
+
"@opencode/client": "0.0.0-dev-19449",
|
|
43
|
+
"@opencode/plugin": "0.0.0-dev-19449",
|
|
44
44
|
"@tsconfig/bun": "1.0.9",
|
|
45
45
|
"@types/bun": "1.4.0",
|
|
46
46
|
"@typescript/native-preview": "7.0.0-dev.20251207.1"
|