import type { AgentEnvConfig } from "./secrets.js"; import type { RoutineVariable } from "./routine.js"; import type { IssueCommentAuthorType } from "../constants.js"; import type { IssueCommentMetadata, IssueCommentPresentation } from "./issue.js"; export interface CompanyPortabilityInclude { company: boolean; agents: boolean; projects: boolean; issues: boolean; skills: boolean; } export interface CompanyPortabilityEnvInput { key: string; description: string | null; agentSlug: string | null; projectSlug: string | null; kind: "secret" | "plain"; requirement: "required" | "optional"; defaultValue: string | null; portability: "portable" | "system_dependent"; } export type CompanyPortabilityFileEntry = string | { encoding: "base64"; data: string; contentType?: string | null; }; export interface CompanyPortabilityCompanyManifestEntry { path: string; name: string; description: string | null; brandColor: string | null; logoPath: string | null; attachmentMaxBytes: number | null; requireBoardApprovalForNewAgents: boolean; feedbackDataSharingEnabled: boolean; feedbackDataSharingConsentAt: string | null; feedbackDataSharingConsentByUserId: string | null; feedbackDataSharingTermsVersion: string | null; } export interface CompanyPortabilitySidebarOrder { agents: string[]; projects: string[]; } export interface CompanyPortabilityProjectManifestEntry { slug: string; name: string; path: string; description: string | null; ownerAgentSlug: string | null; leadAgentSlug: string | null; targetDate: string | null; color: string | null; icon: string | null; status: string | null; env: AgentEnvConfig | null; executionWorkspacePolicy: Record | null; workspaces: CompanyPortabilityProjectWorkspaceManifestEntry[]; metadata: Record | null; } export interface CompanyPortabilityProjectWorkspaceManifestEntry { key: string; name: string; sourceType: string | null; repoUrl: string | null; repoRef: string | null; defaultRef: string | null; visibility: string | null; setupCommand: string | null; cleanupCommand: string | null; metadata: Record | null; isPrimary: boolean; } export interface CompanyPortabilityIssueRoutineTriggerManifestEntry { kind: string; label: string | null; enabled: boolean; cronExpression: string | null; timezone: string | null; signingMode: string | null; replayWindowSec: number | null; } export interface CompanyPortabilityIssueRoutineManifestEntry { concurrencyPolicy: string | null; catchUpPolicy: string | null; variables?: RoutineVariable[] | null; triggers: CompanyPortabilityIssueRoutineTriggerManifestEntry[]; } export interface CompanyPortabilityIssueCommentManifestEntry { body: string; authorType: IssueCommentAuthorType; authorAgentSlug: string | null; authorUserId: string | null; presentation: IssueCommentPresentation | null; metadata: IssueCommentMetadata | null; createdAt: string | null; } export interface CompanyPortabilityIssueManifestEntry { slug: string; identifier: string | null; title: string; path: string; projectSlug: string | null; projectWorkspaceKey: string | null; assigneeAgentSlug: string | null; description: string | null; recurring: boolean; routine: CompanyPortabilityIssueRoutineManifestEntry | null; legacyRecurrence: Record | null; status: string | null; priority: string | null; labelIds: string[]; billingCode: string | null; executionWorkspaceSettings: Record | null; assigneeAdapterOverrides: Record | null; comments: CompanyPortabilityIssueCommentManifestEntry[]; metadata: Record | null; } export interface CompanyPortabilityAgentManifestEntry { slug: string; name: string; path: string; skills: string[]; role: string; title: string | null; icon: string | null; capabilities: string | null; reportsToSlug: string | null; reportsToExistingAgentId: string | null; reportsToExistingAgentSlug: string | null; adapterType: string; adapterConfig: Record; runtimeConfig: Record; permissions: Record; budgetMonthlyCents: number; metadata: Record | null; } export interface CompanyPortabilitySkillManifestEntry { key: string; slug: string; name: string; path: string; description: string | null; sourceType: string; sourceLocator: string | null; sourceRef: string | null; trustLevel: string | null; compatibility: string | null; metadata: Record | null; fileInventory: Array<{ path: string; kind: string; }>; } export interface CompanyPortabilityManifest { schemaVersion: number; generatedAt: string; source: { companyId: string; companyName: string; } | null; includes: CompanyPortabilityInclude; company: CompanyPortabilityCompanyManifestEntry | null; sidebar: CompanyPortabilitySidebarOrder | null; agents: CompanyPortabilityAgentManifestEntry[]; skills: CompanyPortabilitySkillManifestEntry[]; projects: CompanyPortabilityProjectManifestEntry[]; issues: CompanyPortabilityIssueManifestEntry[]; envInputs: CompanyPortabilityEnvInput[]; } export interface CompanyPortabilityExportResult { rootPath: string; manifest: CompanyPortabilityManifest; files: Record; warnings: string[]; paperclipExtensionPath: string; } export interface CompanyPortabilityExportPreviewFile { path: string; kind: "company" | "agent" | "skill" | "project" | "issue" | "extension" | "readme" | "other"; } export interface CompanyPortabilityExportPreviewResult { rootPath: string; manifest: CompanyPortabilityManifest; files: Record; fileInventory: CompanyPortabilityExportPreviewFile[]; counts: { files: number; agents: number; skills: number; projects: number; issues: number; }; warnings: string[]; paperclipExtensionPath: string; } export type CompanyPortabilitySource = { type: "inline"; rootPath?: string | null; files: Record; } | { type: "github"; url: string; }; export type CompanyPortabilityImportTarget = { mode: "new_company"; newCompanyName?: string | null; } | { mode: "existing_company"; companyId: string; }; export type CompanyPortabilityAgentSelection = "all" | string[]; export type CompanyPortabilityCollisionStrategy = "rename" | "skip" | "replace"; export interface CompanyPortabilityPreviewRequest { source: CompanyPortabilitySource; include?: Partial; target: CompanyPortabilityImportTarget; agents?: CompanyPortabilityAgentSelection; collisionStrategy?: CompanyPortabilityCollisionStrategy; nameOverrides?: Record; selectedFiles?: string[]; } export interface CompanyPortabilityPreviewAgentPlan { slug: string; action: "create" | "update" | "skip"; plannedName: string; existingAgentId: string | null; reason: string | null; } export interface CompanyPortabilityPreviewProjectPlan { slug: string; action: "create" | "update" | "skip"; plannedName: string; existingProjectId: string | null; reason: string | null; } export interface CompanyPortabilityPreviewIssuePlan { slug: string; action: "create" | "skip"; plannedTitle: string; reason: string | null; } export interface CompanyPortabilityPreviewResult { include: CompanyPortabilityInclude; targetCompanyId: string | null; targetCompanyName: string | null; collisionStrategy: CompanyPortabilityCollisionStrategy; selectedAgentSlugs: string[]; plan: { companyAction: "none" | "create" | "update"; agentPlans: CompanyPortabilityPreviewAgentPlan[]; projectPlans: CompanyPortabilityPreviewProjectPlan[]; issuePlans: CompanyPortabilityPreviewIssuePlan[]; }; manifest: CompanyPortabilityManifest; files: Record; envInputs: CompanyPortabilityEnvInput[]; warnings: string[]; errors: string[]; } export interface CompanyPortabilityAdapterOverride { adapterType: string; adapterConfig?: Record; } export interface CompanyPortabilityImportRequest extends CompanyPortabilityPreviewRequest { adapterOverrides?: Record; secretValues?: Record; } export interface CompanyPortabilityImportResult { company: { id: string; name: string; action: "created" | "updated" | "unchanged"; }; agents: { slug: string; id: string | null; action: "created" | "updated" | "skipped"; name: string; reason: string | null; }[]; projects: { slug: string; id: string | null; action: "created" | "updated" | "skipped"; name: string; reason: string | null; }[]; envInputs: CompanyPortabilityEnvInput[]; warnings: string[]; } export interface CompanyPortabilityExportRequest { include?: Partial; agents?: string[]; skills?: string[]; projects?: string[]; issues?: string[]; projectIssues?: string[]; selectedFiles?: string[]; expandReferencedSkills?: boolean; sidebarOrder?: Partial; } //# sourceMappingURL=company-portability.d.ts.map