@wearesage/schema
Version:
A flexible schema definition and validation system for TypeScript with multi-database support
68 lines (60 loc) • 1.49 kB
text/typescript
import { Affordance } from '../entities/Affordance';
import { Space } from '../entities/Space';
import { User } from '../entities/User';
import type { EntityContext } from '@wearesage/schema';
export interface ExecutionContext {
user: EntityContext['user'];
space: Space;
requestId?: string;
metadata?: Record<string, any>;
}
export interface ActionResult {
success: boolean;
error?: string;
data?: any;
affordanceId: string;
createdSpaces?: Space[];
modifiedSpaces?: Space[];
nextAffordances?: string[];
context?: Record<string, any>;
}
export interface ActionHandler {
execute(
affordance: Affordance,
parameters: Record<string, any>,
context: ExecutionContext
): Promise<ActionResult>;
}
export interface PreconditionResult {
valid: boolean;
reason?: string;
details?: Record<string, any>;
}
export interface ParameterValidationResult {
valid: boolean;
errors: string[];
sanitizedParams?: Record<string, any>;
}
export interface ContextData {
events?: any[];
childSpaces?: Space[];
parentSpaces?: Space[];
relatedSpaces?: Space[];
metadata?: Record<string, any>;
customData?: any;
}
export interface ContextRule {
id: string;
name: string;
conditions: any;
injectionRules: any;
filters?: any;
priority: number;
isActive: boolean;
}
export interface AffordanceDiscoveryOptions {
includeDisabled?: boolean;
filterByPermissions?: boolean;
evaluatePreconditions?: boolean;
maxResults?: number;
}