Add operations controls and SLO drills
This commit is contained in:
1 parent
7116ae2a7b
commit
bc14a2fbcb
23 files changed
+873
-5
No files matched your search
@@ -277,6 +277,17 @@ export interface SetFilePinnedInput {
|
||||
pinned: boolean;
|
||||
}
|
||||
|
||||
export interface SetFeatureFlagInput {
|
||||
orgId: string;
|
||||
flagId: string;
|
||||
enabled: boolean;
|
||||
}
|
||||
|
||||
export interface RunChaosDrillInput {
|
||||
orgId: string;
|
||||
drillId: string;
|
||||
}
|
||||
|
||||
export interface BootstrapOnboardingInput {
|
||||
companyName: string;
|
||||
companyDescription: string;
|
||||
|
||||
@@ -26,11 +26,13 @@ import type {
|
||||
LaunchProviderSignInInput,
|
||||
LaunchSocialLoginInput,
|
||||
ResolveAgentSkillsInput,
|
||||
RunChaosDrillInput,
|
||||
SaveProviderCredentialInput,
|
||||
SearchInput,
|
||||
SendMessageInput,
|
||||
SetActiveOrganizationInput,
|
||||
SetFilePinnedInput,
|
||||
SetFeatureFlagInput,
|
||||
SetLegalHoldStateInput,
|
||||
SetRetentionFreezeStateInput,
|
||||
SetScheduledPostStateInput,
|
||||
@@ -75,6 +77,8 @@ export interface DesktopApi {
|
||||
importFile(input: ImportFileInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
setFilePinned(input: SetFilePinnedInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
createMigrationReport(input: CreateMigrationReportInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
setFeatureFlag(input: SetFeatureFlagInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
runChaosDrill(input: RunChaosDrillInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
createComplianceExport(input: CreateComplianceExportInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
createLegalHold(input: CreateLegalHoldInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
setLegalHoldState(input: SetLegalHoldStateInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
|
||||
@@ -2,11 +2,13 @@ import type { BoardInterventionRecord as BoardInterventionRecordModel, ChatThrea
|
||||
import type { ComplianceExportRecord, LegalHoldRecord, RetentionFreezeRecord } from "./compliance-domain";
|
||||
import type { AccessDecisionRecord, EmployeeIdentityRecord, RoleGrantRecord, ServiceIdentityRecord } from "./identity-domain";
|
||||
import type { ApprovalAssignmentRecord, ApprovalRoutingRuleRecord, HiringPolicyRecord, OrgDepartmentRecord } from "./org-governance-domain";
|
||||
import type { ChaosDrillRecord, ChaosDrillRunRecord, FeatureFlagRecord, OperationalEventRecord, SloTargetRecord } from "./operations-domain";
|
||||
import type { ProviderDataPolicy, ProviderExecutionMode } from "./provider-policy-domain";
|
||||
export { BOARD_INTERVENTION_ACTION, BOARD_INTERVENTION_MODE, CHAT_THREAD_BOARD_STATE, type BoardInterventionAction, type BoardInterventionMode, type BoardInterventionRecord, type ChatThreadBoardState } from "./board-domain";
|
||||
export { COMPLIANCE_EXPORT_STATE, COMPLIANCE_EXPORT_TYPE, type ComplianceExportRecord, type ComplianceExportState, type ComplianceExportType, type ComplianceSubjectType, type LegalHoldEntityType, type LegalHoldRecord, type RetentionFreezeRecord, type RetentionFreezeScopeType } from "./compliance-domain";
|
||||
export { ACCESS_DECISION, IDENTITY_SOURCE, ROLE_KEY, type AccessDecision, type AccessDecisionRecord, type EmployeeIdentityRecord, type IdentitySource, type PrincipalType, type RoleGrantRecord, type RoleKey, type ServiceIdentityRecord } from "./identity-domain";
|
||||
export { ROUTE_TO_TYPE, type ApprovalAssignmentRecord, type ApprovalRoutingRuleRecord, type HiringPolicyRecord, type OrgDepartmentRecord, type RouteToType } from "./org-governance-domain";
|
||||
export { CHAOS_DRILL_SCENARIO, CHAOS_DRILL_STATE, FEATURE_FLAG_KEY, SLO_SIGNAL_KEY, type ChaosDrillRecord, type ChaosDrillRunRecord, type ChaosDrillScenario, type ChaosDrillState, type FeatureFlagKey, type FeatureFlagRecord, type OperationalEventRecord, type SloSignalKey, type SloTargetRecord } from "./operations-domain";
|
||||
export { PROVIDER_DATA_POLICY, PROVIDER_EXECUTION_MODE, type ProviderDataPolicy, type ProviderExecutionMode } from "./provider-policy-domain";
|
||||
export { SEARCH_ENTITY_TYPES, type SearchEntityType, type SearchResultRecord } from "./search-domain";
|
||||
export const TASK_STATUS = { BACKLOG: "backlog", IN_PROGRESS: "in_progress", REVIEW: "review", DONE: "done" } as const;
|
||||
@@ -471,5 +473,6 @@ export interface AppSnapshot {
|
||||
complianceExports: ComplianceExportRecord[]; legalHolds: LegalHoldRecord[]; retentionFreezes: RetentionFreezeRecord[];
|
||||
employeeIdentities: EmployeeIdentityRecord[]; serviceIdentities: ServiceIdentityRecord[]; roleGrants: RoleGrantRecord[]; accessDecisions: AccessDecisionRecord[];
|
||||
orgDepartments: OrgDepartmentRecord[]; hiringPolicies: HiringPolicyRecord[]; approvalRoutingRules: ApprovalRoutingRuleRecord[]; approvalAssignments: ApprovalAssignmentRecord[];
|
||||
featureFlags: FeatureFlagRecord[]; sloTargets: SloTargetRecord[]; operationalEvents: OperationalEventRecord[]; chaosDrills: ChaosDrillRecord[]; chaosDrillRuns: ChaosDrillRunRecord[];
|
||||
auditEvents: AuditEventRecord[];
|
||||
}
|
||||
@@ -30,6 +30,8 @@ export const IPC_CHANNELS = {
|
||||
importFile: "agentcompany:import-file",
|
||||
setFilePinned: "agentcompany:set-file-pinned",
|
||||
createMigrationReport: "agentcompany:create-migration-report",
|
||||
setFeatureFlag: "agentcompany:set-feature-flag",
|
||||
runChaosDrill: "agentcompany:run-chaos-drill",
|
||||
createComplianceExport: "agentcompany:create-compliance-export",
|
||||
createLegalHold: "agentcompany:create-legal-hold",
|
||||
setLegalHoldState: "agentcompany:set-legal-hold-state",
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
type ValueOf<T> = T[keyof T];
|
||||
|
||||
export const FEATURE_FLAG_KEY = {
|
||||
PROVIDER_BACKGROUND_EXECUTION: "provider_background_execution",
|
||||
SOCIAL_PUBLISH_APPROVAL: "social_publish_approval",
|
||||
BOARD_INTERVENTION: "board_intervention",
|
||||
CHAOS_DRILLS: "chaos_drills",
|
||||
} as const;
|
||||
|
||||
export const SLO_SIGNAL_KEY = {
|
||||
PROVIDER_REQUEST_SUCCESS: "provider_request_success",
|
||||
APPROVAL_ROUTE_COVERAGE: "approval_route_coverage",
|
||||
BROWSER_SESSION_BOUNDARY: "browser_session_boundary",
|
||||
SKILL_RESOLVE_SUCCESS: "skill_resolve_success",
|
||||
MIGRATION_VALIDATION_SUCCESS: "migration_validation_success",
|
||||
} as const;
|
||||
|
||||
export const CHAOS_DRILL_SCENARIO = {
|
||||
PROVIDER_OUTAGE_POLICY_GATE: "provider_outage_policy_gate",
|
||||
APPROVAL_BACKLOG_GATE: "approval_backlog_gate",
|
||||
BROWSER_SESSION_BOUNDARY: "browser_session_boundary",
|
||||
MIGRATION_ROLLBACK_PACK: "migration_rollback_pack",
|
||||
} as const;
|
||||
|
||||
export const CHAOS_DRILL_STATE = { PASSED: "passed", FAILED: "failed" } as const;
|
||||
|
||||
export type FeatureFlagKey = ValueOf<typeof FEATURE_FLAG_KEY>;
|
||||
export type SloSignalKey = ValueOf<typeof SLO_SIGNAL_KEY>;
|
||||
export type ChaosDrillScenario = ValueOf<typeof CHAOS_DRILL_SCENARIO>;
|
||||
export type ChaosDrillState = ValueOf<typeof CHAOS_DRILL_STATE>;
|
||||
|
||||
export interface FeatureFlagRecord {
|
||||
id: string; orgId: string; key: FeatureFlagKey; label: string; enabled: boolean; createdAt: string; updatedAt: string;
|
||||
}
|
||||
|
||||
export interface SloTargetRecord {
|
||||
id: string; orgId: string; signalKey: SloSignalKey; label: string; targetBasisPoints: number; windowMinutes: number; createdAt: string; updatedAt: string;
|
||||
}
|
||||
|
||||
export interface OperationalEventRecord {
|
||||
id: string; orgId: string; signalKey: SloSignalKey; source: string; success: boolean; durationMs: number | null; detailJson: string; createdAt: string;
|
||||
}
|
||||
|
||||
export interface ChaosDrillRecord {
|
||||
id: string; orgId: string; key: string; label: string; scenarioKey: ChaosDrillScenario; enabled: boolean; createdAt: string; updatedAt: string;
|
||||
}
|
||||
|
||||
export interface ChaosDrillRunRecord {
|
||||
id: string; orgId: string; drillId: string; state: ChaosDrillState; resultJson: string; startedAt: string; completedAt: string;
|
||||
}
|
||||
Reference in new issue
Block a user