feat: add private project access

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
DottaandPaperclip committed 2026-08-01 22:54:01 +00:00
1 parent df05b1a968
commit c761282d76
29 files changed
+1197 -29

No files matched your search

+5
View File
@@ -739,11 +739,14 @@ export type {
AdapterEnvironmentTestResult,
AssetImage,
Project,
ProjectAccessMember,
ProjectAccessSubjectType,
ProjectBudgetSummary,
ProjectCodebase,
ProjectCodebaseOrigin,
ProjectGoalRef,
ProjectManagedByPlugin,
ProjectVisibility,
ProjectWorkspace,
CompanySearchCountType,
CompanySearchExtractIssueResult,
@@ -1571,10 +1574,12 @@ export {
type UpdateAgentPermissions,
createProjectSchema,
updateProjectSchema,
addProjectAccessMemberSchema,
createProjectWorkspaceSchema,
updateProjectWorkspaceSchema,
type CreateProject,
type UpdateProject,
type AddProjectAccessMember,
type CreateProjectWorkspace,
type UpdateProjectWorkspace,
projectExecutionWorkspacePolicySchema,
+12 -1
View File
@@ -287,7 +287,18 @@ export type {
DocumentTextRange,
UpdateDocumentAnnotationThreadRequest,
} from "./document-annotation.js";
export type { Project, ProjectBudgetSummary, ProjectCodebase, ProjectCodebaseOrigin, ProjectGoalRef, ProjectManagedByPlugin, ProjectWorkspace } from "./project.js";
export type {
Project,
ProjectAccessMember,
ProjectAccessSubjectType,
ProjectBudgetSummary,
ProjectCodebase,
ProjectCodebaseOrigin,
ProjectGoalRef,
ProjectManagedByPlugin,
ProjectVisibility,
ProjectWorkspace,
} from "./project.js";
export type {
CompanySearchCountType,
CompanySearchExtractIssueResult,
+17
View File
@@ -8,6 +8,19 @@ import type { AgentEnvConfig } from "./secrets.js";
export type ProjectWorkspaceSourceType = "local_path" | "git_repo" | "remote_managed" | "non_git_path";
export type ProjectWorkspaceVisibility = "default" | "advanced";
export type ProjectVisibility = "open" | "private";
export type ProjectAccessSubjectType = "user" | "agent";
export interface ProjectAccessMember {
id: string;
companyId: string;
projectId: string;
subjectType: ProjectAccessSubjectType;
subjectId: string;
subjectDisplayName: string | null;
subjectAvatarUrl: string | null;
createdAt: Date;
}
export interface ProjectGoalRef {
id: string;
@@ -85,6 +98,10 @@ export interface Project {
goals: ProjectGoalRef[];
name: string;
description: string | null;
/** Omitted by older servers/fixtures; clients must treat omission as open. */
visibility?: ProjectVisibility;
/** Present only for the lazily-created per-user "My private tasks" project. */
personalOwnerUserId?: string | null;
status: ProjectStatus;
leadAgentId: string | null;
targetDate: string | null;
+2
View File
@@ -363,12 +363,14 @@ export {
export {
createProjectSchema,
updateProjectSchema,
addProjectAccessMemberSchema,
createProjectWorkspaceSchema,
updateProjectWorkspaceSchema,
projectExecutionWorkspacePolicySchema,
projectWorkspaceRuntimeConfigSchema,
type CreateProject,
type UpdateProject,
type AddProjectAccessMember,
type CreateProjectWorkspace,
type UpdateProjectWorkspace,
type ProjectExecutionWorkspacePolicy,
@@ -103,6 +103,7 @@ const projectFields = {
goalIds: z.array(z.string().uuid()).optional(),
name: z.string().min(1),
description: z.string().optional().nullable(),
visibility: z.enum(["open", "private"]).optional().default("open"),
status: z.enum(PROJECT_STATUSES).optional().default("backlog"),
leadAgentId: z.string().uuid().optional().nullable(),
targetDate: z.string().optional().nullable(),
@@ -124,4 +125,11 @@ export const updateProjectSchema = z.object(projectFields).partial();
export type UpdateProject = z.infer<typeof updateProjectSchema>;
export const addProjectAccessMemberSchema = z.object({
subjectType: z.enum(["user", "agent"]),
subjectId: z.string().min(1),
});
export type AddProjectAccessMember = z.infer<typeof addProjectAccessMemberSchema>;
export type ProjectExecutionWorkspacePolicy = z.infer<typeof projectExecutionWorkspacePolicySchema>;