Files
AgentCompany/AgentCompany-New/src/shared/domain.ts
T

447 lines
9.4 KiB
TypeScript

export const TASK_STATUS = {
BACKLOG: "backlog",
IN_PROGRESS: "in_progress",
REVIEW: "review",
DONE: "done",
} as const;
export const APPROVAL_STATE = {
PENDING: "pending",
APPROVED: "approved",
DECLINED: "declined",
} as const;
export const RISK_LEVEL = {
LOW: "low",
MEDIUM: "medium",
HIGH: "high",
} as const;
export const TASK_PRIORITY = {
LOW: "low",
NORMAL: "normal",
HIGH: "high",
} as const;
export const PROVIDER_AUTH_TYPE = {
API_KEY: "api_key",
OAUTH_PKCE: "oauth_pkce",
ACCOUNT_SUBSCRIPTION: "account_subscription",
CLOUD: "cloud",
} as const;
export const SOCIAL_PLATFORM = {
X: "x",
LINKEDIN: "linkedin",
YOUTUBE: "youtube",
INSTAGRAM: "instagram",
} as const;
export const PROVIDER_REQUEST_STATE = {
PENDING: "pending",
SUCCEEDED: "succeeded",
FAILED: "failed",
} as const;
export type ValueOf<T> = T[keyof T];
export type TaskStatus = ValueOf<typeof TASK_STATUS>;
export type ApprovalState = ValueOf<typeof APPROVAL_STATE>;
export type RiskLevel = ValueOf<typeof RISK_LEVEL>;
export type TaskPriority = ValueOf<typeof TASK_PRIORITY>;
export type ProviderAuthType = ValueOf<typeof PROVIDER_AUTH_TYPE>;
export type SocialPlatform = ValueOf<typeof SOCIAL_PLATFORM>;
export type ProviderRequestState = ValueOf<typeof PROVIDER_REQUEST_STATE>;
export interface OrganizationRecord {
id: string;
name: string;
mission: string;
goal: string;
description: string;
executionMode: string;
autoApproveHires: boolean;
reviewDeliverables: boolean;
createdAt: string;
}
export interface EmployeeRecord {
id: string;
orgId: string;
displayName: string;
role: string;
createdAt: string;
}
export interface AgentRecord {
id: string;
orgId: string;
name: string;
role: string;
department: string;
modelProviderId: string | null;
modelId: string | null;
budgetCents: number;
managerAgentId: string | null;
title: string;
roleLevel: string;
modelStrategy: string;
workspaceId: string | null;
heartbeatEnabled: boolean;
heartbeatIntervalSec: number;
lifecycle: string;
createdAt: string;
}
export interface TaskRecord {
id: string;
orgId: string;
title: string;
description: string;
status: TaskStatus;
assigneeAgentId: string | null;
risk: RiskLevel;
projectId: string | null;
goalId: string | null;
workspaceId: string | null;
priority: TaskPriority;
requiresFilesystem: boolean;
createdAt: string;
updatedAt: string;
}
export interface WorkspaceRecord {
id: string;
orgId: string;
name: string;
localPath: string;
repoUrl: string;
repoRef: string;
projectId: string | null;
isPrimary: boolean;
createdAt: string;
updatedAt: string;
}
export interface GoalRecord {
id: string;
orgId: string;
title: string;
description: string;
status: string;
ownerAgentId: string | null;
createdAt: string;
updatedAt: string;
}
export interface ProjectRecord {
id: string;
orgId: string;
goalId: string | null;
name: string;
description: string;
leadAgentId: string | null;
status: string;
createdAt: string;
updatedAt: string;
}
export interface TaskRunRecord {
id: string;
orgId: string;
taskId: string;
agentId: string | null;
providerId: string | null;
trigger: string;
state: string;
createdAt: string;
startedAt: string | null;
completedAt: string | null;
errorMessage: string | null;
}
export interface ApprovalRecord {
id: string;
orgId: string;
kind: string;
title: string;
details: string;
risk: RiskLevel;
requestedByType: "employee" | "agent" | "system";
requestedById: string | null;
state: ApprovalState;
decidedByEmployeeId: string | null;
createdAt: string;
decidedAt: string | null;
}
export interface ChatSpaceRecord {
id: string;
orgId: string;
spaceType: string;
name: string;
topic: string;
visibility: string;
createdAt: string;
}
export interface ChatMessageRecord {
id: string;
orgId: string;
spaceId: string;
threadId: string | null;
senderType: "employee" | "agent" | "board" | "system";
senderId: string | null;
bodyMd: string;
createdAt: string;
editedAt: string | null;
deletedAt: string | null;
}
export interface ChatThreadRecord {
id: string;
orgId: string;
spaceId: string;
rootMessageId: string | null;
title: string;
state: string;
createdAt: string;
updatedAt: string;
}
export interface ChatAttachmentRecord {
messageId: string;
fileId: string;
transferType: string;
checksum: string;
previewKey: string | null;
}
export interface ChatPresenceRecord {
principalType: string;
principalId: string;
status: string;
statusText: string;
lastSeenAt: string;
}
export interface ChatReadStateRecord {
orgId: string;
employeeId: string;
spaceId: string;
lastReadMessageId: string | null;
lastReadAt: string;
}
export interface FileObjectRecord {
id: string;
orgId: string;
name: string;
kind: string;
sizeBytes: number;
sha256: string;
storagePath: string;
ownerType: "employee" | "agent" | "system";
ownerId: string | null;
spaceId: string | null;
pinned: boolean;
createdAt: string;
updatedAt: string | null;
}
export interface ScheduledPostRecord {
id: string;
orgId: string;
socialAccountId: string;
bodyMd: string;
scheduledFor: string;
state: "draft" | "scheduled" | "published" | "cancelled";
approvalId: string | null;
createdByEmployeeId: string | null;
createdAt: string;
updatedAt: string;
}
export interface ProviderRecord {
id: string;
orgId: string;
providerKey: string;
label: string;
authType: ProviderAuthType;
model: string | null;
credentialId: string | null;
enabled: boolean;
authState: string;
healthState: string;
lastCheckedAt: string | null;
lastError: string | null;
createdAt: string;
}
export interface ProviderCatalogModel {
id: string;
name: string;
}
export interface ProviderCatalogEntry {
key: string;
label: string;
authType: ProviderAuthType;
defaultModel: string | null;
capabilityTags: string[];
signInUrl: string | null;
credentialHelp: string;
models: ProviderCatalogModel[];
}
export interface ProviderRequestRecord {
id: string;
orgId: string;
providerId: string;
providerKey: string;
model: string;
promptSha256: string;
responseText: string | null;
rawResponseJson: string | null;
state: ProviderRequestState;
errorMessage: string | null;
createdAt: string;
completedAt: string | null;
}
export interface SkillDefinitionRecord {
id: string;
orgId: string;
slug: string;
name: string;
ownerType: string;
status: string;
createdAt: string;
}
export interface SkillRevisionRecord {
id: string;
skillId: string;
versionSemver: string;
manifestJson: string;
sourceType: string;
sourceRef: string;
publishedAt: string;
immutableChecksum: string;
}
export interface SkillBindingRecord {
id: string;
orgId: string;
agentId: string;
skillId: string;
pinnedRevisionId: string;
bindingMode: string;
priority: number;
enabled: boolean;
}
export interface SkillRuntimeSnapshotRecord {
id: string;
agentId: string;
runId: string;
compiledPrompt: string;
toolsManifest: string;
sourceRevisionIds: string;
createdAt: string;
}
export interface SocialAccountRecord {
id: string;
orgId: string;
platform: SocialPlatform;
handle: string;
displayName: string;
authorizedEmployeeId: string | null;
createdAt: string;
}
export interface SocialAccountGrantRecord {
id: string;
orgId: string;
socialAccountId: string;
employeeId: string;
role: string;
scopeJson: string;
createdAt: string;
}
export interface BrowserActionRecord {
id: string;
orgId: string;
socialAccountId: string;
actionType: string;
policyDecision: string;
evidenceFileId: string | null;
createdAt: string;
}
export interface AuditEventRecord {
id: string;
orgId: string;
entityType: string;
entityId: string;
actorType: string;
actorId: string | null;
action: string;
payloadJson: string;
createdAt: string;
}
export interface PolicyRuleRecord {
id: string;
orgId: string;
subjectType: string;
subjectId: string | null;
action: string;
effect: string;
riskCeiling: RiskLevel;
createdAt: string;
}
export interface MigrationReportRecord {
id: string;
orgId: string;
sourceRef: string;
reportJson: string;
createdAt: string;
}
export interface AppSnapshot {
activeOrgId: string | null;
organizations: OrganizationRecord[];
employees: EmployeeRecord[];
agents: AgentRecord[];
tasks: TaskRecord[];
workspaces: WorkspaceRecord[];
goals: GoalRecord[];
projects: ProjectRecord[];
taskRuns: TaskRunRecord[];
approvals: ApprovalRecord[];
chatSpaces: ChatSpaceRecord[];
chatMessages: ChatMessageRecord[];
chatThreads: ChatThreadRecord[];
chatAttachments: ChatAttachmentRecord[];
chatPresence: ChatPresenceRecord[];
chatReadStates: ChatReadStateRecord[];
files: FileObjectRecord[];
scheduledPosts: ScheduledPostRecord[];
providers: ProviderRecord[];
providerCatalog: ProviderCatalogEntry[];
providerRequests: ProviderRequestRecord[];
skillDefinitions: SkillDefinitionRecord[];
skillRevisions: SkillRevisionRecord[];
skillBindings: SkillBindingRecord[];
skillRuntimeSnapshots: SkillRuntimeSnapshotRecord[];
socialAccounts: SocialAccountRecord[];
socialAccountGrants: SocialAccountGrantRecord[];
browserActions: BrowserActionRecord[];
policyRules: PolicyRuleRecord[];
migrationReports: MigrationReportRecord[];
auditEvents: AuditEventRecord[];
}