76 lines · 2.3 KB · TypeScript
RawDownload
import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";import { Schema } from "effect";import { PolicyId, ScopeId, ToolPolicyActionSchema } from "@executor-js/sdk"; import { InternalError } from "../observability"; // ---------------------------------------------------------------------------// Params// --------------------------------------------------------------------------- const ScopeParams = { scopeId: ScopeId };const PolicyParams = { scopeId: ScopeId, policyId: PolicyId }; // ---------------------------------------------------------------------------// Response / payload schemas// --------------------------------------------------------------------------- const ToolPolicyResponse = Schema.Struct({  id: PolicyId,  scopeId: ScopeId,  pattern: Schema.String,  action: ToolPolicyActionSchema,  position: Schema.String,  createdAt: Schema.Number,  updatedAt: Schema.Number,}); const CreateToolPolicyPayload = Schema.Struct({  targetScope: ScopeId,  pattern: Schema.String,  action: ToolPolicyActionSchema,  position: Schema.optional(Schema.String),}); const UpdateToolPolicyPayload = Schema.Struct({  targetScope: ScopeId,  pattern: Schema.optional(Schema.String),  action: Schema.optional(ToolPolicyActionSchema),  position: Schema.optional(Schema.String),}); // ---------------------------------------------------------------------------// Group// --------------------------------------------------------------------------- export const PoliciesApi = HttpApiGroup.make("policies")  .add(    HttpApiEndpoint.get("list", "/scopes/:scopeId/policies", {      params: ScopeParams,      success: Schema.Array(ToolPolicyResponse),      error: InternalError,    }),  )  .add(    HttpApiEndpoint.post("create", "/scopes/:scopeId/policies", {      params: ScopeParams,      payload: CreateToolPolicyPayload,      success: ToolPolicyResponse,      error: InternalError,    }),  )  .add(    HttpApiEndpoint.patch("update", "/scopes/:scopeId/policies/:policyId", {      params: PolicyParams,      payload: UpdateToolPolicyPayload,      success: ToolPolicyResponse,      error: InternalError,    }),  )  .add(    HttpApiEndpoint.delete("remove", "/scopes/:scopeId/policies/:policyId", {      params: PolicyParams,      success: Schema.Struct({ removed: Schema.Boolean }),      error: InternalError,    }),  );