UNPKG

agentlang

Version:

The easiest way to build the most reliable AI agents - enterprise-grade teams of AI agents that collaborate with each other and humans

1,655 lines (1,324 loc) 76.4 kB
/****************************************************************************** * This file was generated by langium-cli 3.5.2. * DO NOT EDIT MANUALLY! ******************************************************************************/ /* eslint-disable */ import * as langium from 'langium'; export const AgentlangTerminals = { ID: /(([_a-zA-Z][\w_]*)(\/([_a-zA-Z][\w_]*))?)/, STRING: /("(((\\([\s\S]))|((?!(((\\|")|\r)|\n))[\s\S]*?))|(\r?\n))*")/, INT: /-?[0-9]+/, WS: /\s+/, ML_COMMENT: /\/\*[\s\S]*?\*\//, SL_COMMENT: /\/\/[^\n\r]*/, }; export type AgentlangTerminalNames = keyof typeof AgentlangTerminals; export type AgentlangKeywordNames = | "!=" | "(" | ")" | "*" | "+" | "," | "-" | "-->" | "." | "/" | ":" | ";" | "<" | "<=" | "<>" | "=" | "==" | ">" | ">=" | "?" | "@" | "@actions" | "@after" | "@as" | "@async" | "@before" | "@catch" | "@distinct" | "@enum" | "@expr" | "@from" | "@full_join" | "@inner_join" | "@into" | "@join" | "@left_join" | "@meta" | "@oneof" | "@public" | "@rbac" | "@ref" | "@right_join" | "@then" | "@upsert" | "@with_unique" | "[" | "]" | "agent" | "agentlang/retry" | "allow" | "and" | "attempts" | "await" | "backoff" | "between" | "case" | "commitTransaction" | "contains" | "create" | "decision" | "delete" | "directive" | "else" | "entity" | "error" | "event" | "extends" | "false" | "flow" | "for" | "glossaryEntry" | "if" | "import" | "in" | "like" | "module" | "not" | "not_found" | "onSubscription" | "or" | "purge" | "query" | "read" | "record" | "relationship" | "resolver" | "return" | "roles" | "rollbackTransaction" | "scenario" | "startTransaction" | "subscribe" | "true" | "update" | "upsert" | "where" | "workflow" | "{" | "}"; export type AgentlangTokenNames = AgentlangTerminalNames | AgentlangKeywordNames; export type AttributeValueExpression = Expr; export const AttributeValueExpression = 'AttributeValueExpression'; export function isAttributeValueExpression(item: unknown): item is AttributeValueExpression { return reflection.isInstance(item, AttributeValueExpression); } export type Boolean = 'false' | 'true'; export function isBoolean(item: unknown): item is Boolean { return item === 'true' || item === 'false'; } export type Decimal = number; export function isDecimal(item: unknown): item is Decimal { return typeof item === 'number'; } export type Definition = AgentDefinition | DecisionDefinition | DirectiveDefinition | FlowDefinition | GlossaryEntryDefinition | PublicAgentDefinition | PublicWorkflowDefinition | RelationshipDefinition | ResolverDefinition | RetryDefinition | ScenarioDefinition | SchemaDefinition | StandaloneStatement | WorkflowDefinition; export const Definition = 'Definition'; export function isDefinition(item: unknown): item is Definition { return reflection.isInstance(item, Definition); } export type Expr = BinExpr | PrimExpr; export const Expr = 'Expr'; export function isExpr(item: unknown): item is Expr { return reflection.isInstance(item, Expr); } export type FlowStepSpec = CrudMap; export const FlowStepSpec = 'FlowStepSpec'; export function isFlowStepSpec(item: unknown): item is FlowStepSpec { return reflection.isInstance(item, FlowStepSpec); } export type GenericName = string; export function isGenericName(item: unknown): item is GenericName { return (typeof item === 'string' && (/(([_a-zA-Z][\w_]*)(\/([_a-zA-Z][\w_]*))?)/.test(item) || /("(((\\([\s\S]))|((?!(((\\|")|\r)|\n))[\s\S]*?))|(\r?\n))*")/.test(item))); } export type JoinType = '@full_join' | '@inner_join' | '@join' | '@left_join' | '@right_join'; export function isJoinType(item: unknown): item is JoinType { return item === '@join' || item === '@inner_join' || item === '@left_join' || item === '@right_join' || item === '@full_join'; } export type PrimExpr = Group | Literal | NegExpr | NotExpr; export const PrimExpr = 'PrimExpr'; export function isPrimExpr(item: unknown): item is PrimExpr { return reflection.isInstance(item, PrimExpr); } export type QualifiedName = Ref | string; export function isQualifiedName(item: unknown): item is QualifiedName { return isRef(item) || (typeof item === 'string' && (/(([_a-zA-Z][\w_]*)(\/([_a-zA-Z][\w_]*))?)/.test(item))); } export type QueryId = string; export function isQueryId(item: unknown): item is QueryId { return typeof item === 'string'; } export type Ref = string; export function isRef(item: unknown): item is Ref { return typeof item === 'string'; } export type SchemaDefinition = EntityDefinition | EventDefinition | PublicEventDefinition | RecordDefinition; export const SchemaDefinition = 'SchemaDefinition'; export function isSchemaDefinition(item: unknown): item is SchemaDefinition { return reflection.isInstance(item, SchemaDefinition); } export type SqlComparisonOpr = '!=' | '<' | '<=' | '<>' | '=' | '>' | '>=' | 'between' | 'in' | 'like'; export function isSqlComparisonOpr(item: unknown): item is SqlComparisonOpr { return item === '=' || item === '<>' || item === '!=' || item === '<' || item === '<=' || item === '>' || item === '>=' || item === 'in' || item === 'like' || item === 'between'; } export type TaggedId = string; export function isTaggedId(item: unknown): item is TaggedId { return typeof item === 'string'; } export type WorkflowHeaderPrefix = 'create' | 'delete' | 'update'; export function isWorkflowHeaderPrefix(item: unknown): item is WorkflowHeaderPrefix { return item === 'create' || item === 'update' || item === 'delete'; } export type WorkflowHeaderTag = '@after' | '@before'; export function isWorkflowHeaderTag(item: unknown): item is WorkflowHeaderTag { return item === '@after' || item === '@before'; } export interface ActionEntry extends langium.AstNode { readonly $container: EntityActionsDefinitions; readonly $type: 'ActionEntry'; event: string; name: string; } export const ActionEntry = 'ActionEntry'; export function isActionEntry(item: unknown): item is ActionEntry { return reflection.isInstance(item, ActionEntry); } export interface AfterTriggerDefinition extends langium.AstNode { readonly $container: PrePostTriggerDefinition; readonly $type: 'AfterTriggerDefinition'; triggers: TriggerDefinition; } export const AfterTriggerDefinition = 'AfterTriggerDefinition'; export function isAfterTriggerDefinition(item: unknown): item is AfterTriggerDefinition { return reflection.isInstance(item, AfterTriggerDefinition); } export interface AgentDefinition extends langium.AstNode { readonly $container: ModuleDefinition | PublicAgentDefinition; readonly $type: 'AgentDefinition'; body?: GenericDefBody; name: GenericName; } export const AgentDefinition = 'AgentDefinition'; export function isAgentDefinition(item: unknown): item is AgentDefinition { return reflection.isInstance(item, AgentDefinition); } export interface AgentXtraAttribute extends langium.AstNode { readonly $container: AgentXtraSpec; readonly $type: 'AgentXtraAttribute' | 'Ref'; name: string; value: string; } export const AgentXtraAttribute = 'AgentXtraAttribute'; export function isAgentXtraAttribute(item: unknown): item is AgentXtraAttribute { return reflection.isInstance(item, AgentXtraAttribute); } export interface AgentXtraSpec extends langium.AstNode { readonly $container: GlossaryEntryDefinition; readonly $type: 'AgentXtraSpec'; attributes: Array<AgentXtraAttribute>; } export const AgentXtraSpec = 'AgentXtraSpec'; export function isAgentXtraSpec(item: unknown): item is AgentXtraSpec { return reflection.isInstance(item, AgentXtraSpec); } export interface AliasSpec extends langium.AstNode { readonly $container: RuntimeHint; readonly $type: 'AliasSpec'; alias?: string; aliases: Array<string>; } export const AliasSpec = 'AliasSpec'; export function isAliasSpec(item: unknown): item is AliasSpec { return reflection.isInstance(item, AliasSpec); } export interface ArrayLiteral extends langium.AstNode { readonly $container: Literal; readonly $type: 'ArrayLiteral'; vals: Array<Statement>; } export const ArrayLiteral = 'ArrayLiteral'; export function isArrayLiteral(item: unknown): item is ArrayLiteral { return reflection.isInstance(item, ArrayLiteral); } export interface AsyncFnCall extends langium.AstNode { readonly $container: Literal; readonly $type: 'AsyncFnCall'; fnCall: FnCall; } export const AsyncFnCall = 'AsyncFnCall'; export function isAsyncFnCall(item: unknown): item is AsyncFnCall { return reflection.isInstance(item, AsyncFnCall); } export interface AttributeDefinition extends langium.AstNode { readonly $container: RecordSchemaDefinition; readonly $type: 'AttributeDefinition'; arrayType?: QualifiedName; enumSpec?: EnumSpec; expr?: Expr; name: string; oneOfSpec?: OneOfSpec; properties: Array<PropertyDefinition>; refSpec?: RefSpec; type?: QualifiedName; } export const AttributeDefinition = 'AttributeDefinition'; export function isAttributeDefinition(item: unknown): item is AttributeDefinition { return reflection.isInstance(item, AttributeDefinition); } export interface BackoffSpec extends langium.AstNode { readonly $container: RetryDefinition; readonly $type: 'BackoffSpec'; attributes: Array<SetAttribute>; } export const BackoffSpec = 'BackoffSpec'; export function isBackoffSpec(item: unknown): item is BackoffSpec { return reflection.isInstance(item, BackoffSpec); } export interface BeforeTriggerDefinition extends langium.AstNode { readonly $container: PrePostTriggerDefinition; readonly $type: 'BeforeTriggerDefinition'; triggers: TriggerDefinition; } export const BeforeTriggerDefinition = 'BeforeTriggerDefinition'; export function isBeforeTriggerDefinition(item: unknown): item is BeforeTriggerDefinition { return reflection.isInstance(item, BeforeTriggerDefinition); } export interface BinExpr extends langium.AstNode { readonly $container: AttributeDefinition | BinExpr | CaseEntry | FnCall | Group | If | MapEntry | NegExpr | NotExpr | Pattern | SetAttribute; readonly $type: 'BinExpr'; e1: Expr | PrimExpr; e2: Expr | PrimExpr; op: '!=' | '*' | '+' | '-' | '/' | '<' | '<=' | '<>' | '==' | '>' | '>=' | 'and' | 'in' | 'like' | 'or'; } export const BinExpr = 'BinExpr'; export function isBinExpr(item: unknown): item is BinExpr { return reflection.isInstance(item, BinExpr); } export interface CaseEntry extends langium.AstNode { readonly $container: DecisionDefBody; readonly $type: 'CaseEntry'; cond: Expr; statements: Array<Statement>; } export const CaseEntry = 'CaseEntry'; export function isCaseEntry(item: unknown): item is CaseEntry { return reflection.isInstance(item, CaseEntry); } export interface CatchSpec extends langium.AstNode { readonly $container: RuntimeHint; readonly $type: 'CatchSpec'; handlers: Array<Handler>; } export const CatchSpec = 'CatchSpec'; export function isCatchSpec(item: unknown): item is CatchSpec { return reflection.isInstance(item, CatchSpec); } export interface CompositeUniqueDefinition extends langium.AstNode { readonly $container: RecordExtraDefinition; readonly $type: 'CompositeUniqueDefinition'; attrs: Array<string>; } export const CompositeUniqueDefinition = 'CompositeUniqueDefinition'; export function isCompositeUniqueDefinition(item: unknown): item is CompositeUniqueDefinition { return reflection.isInstance(item, CompositeUniqueDefinition); } export interface ConditionalFlowStep extends langium.AstNode { readonly $container: FlowEntry; readonly $type: 'ConditionalFlowStep'; expr: string; next: FlowStepSpec; } export const ConditionalFlowStep = 'ConditionalFlowStep'; export function isConditionalFlowStep(item: unknown): item is ConditionalFlowStep { return reflection.isInstance(item, ConditionalFlowStep); } export interface CrudMap extends langium.AstNode { readonly $container: ConditionalFlowStep | FlowEntry | Pattern; readonly $type: 'CrudMap'; body?: CrudMapBody; distinct: Array<'@distinct'>; into?: SelectIntoSpec; join?: JoinSpec; name: QualifiedName | QueryId; relationships: Array<RelationshipPattern>; source?: Literal; upsert: Array<'@upsert'>; } export const CrudMap = 'CrudMap'; export function isCrudMap(item: unknown): item is CrudMap { return reflection.isInstance(item, CrudMap); } export interface CrudMapBody extends langium.AstNode { readonly $container: CrudMap; readonly $type: 'CrudMapBody'; attributes: Array<SetAttribute>; properties: Array<PropertyDefinition>; } export const CrudMapBody = 'CrudMapBody'; export function isCrudMapBody(item: unknown): item is CrudMapBody { return reflection.isInstance(item, CrudMapBody); } export interface DecisionDefBody extends langium.AstNode { readonly $container: DecisionDefinition; readonly $type: 'DecisionDefBody'; cases: Array<CaseEntry>; } export const DecisionDefBody = 'DecisionDefBody'; export function isDecisionDefBody(item: unknown): item is DecisionDefBody { return reflection.isInstance(item, DecisionDefBody); } export interface DecisionDefinition extends langium.AstNode { readonly $container: ModuleDefinition; readonly $type: 'DecisionDefinition'; body?: DecisionDefBody; name: GenericName; } export const DecisionDefinition = 'DecisionDefinition'; export function isDecisionDefinition(item: unknown): item is DecisionDefinition { return reflection.isInstance(item, DecisionDefinition); } export interface Delete extends langium.AstNode { readonly $container: Pattern; readonly $type: 'Delete'; pattern: Pattern; } export const Delete = 'Delete'; export function isDelete(item: unknown): item is Delete { return reflection.isInstance(item, Delete); } export interface DirectiveDefinition extends langium.AstNode { readonly $container: ModuleDefinition; readonly $type: 'DirectiveDefinition'; body?: MapLiteral; dir?: If; name: Ref; } export const DirectiveDefinition = 'DirectiveDefinition'; export function isDirectiveDefinition(item: unknown): item is DirectiveDefinition { return reflection.isInstance(item, DirectiveDefinition); } export interface Else extends langium.AstNode { readonly $container: If; readonly $type: 'Else'; statements: Array<Statement>; } export const Else = 'Else'; export function isElse(item: unknown): item is Else { return reflection.isInstance(item, Else); } export interface EntityActionsDefinitions extends langium.AstNode { readonly $container: RecordExtraDefinition; readonly $type: 'EntityActionsDefinitions'; entries: Array<ActionEntry>; } export const EntityActionsDefinitions = 'EntityActionsDefinitions'; export function isEntityActionsDefinitions(item: unknown): item is EntityActionsDefinitions { return reflection.isInstance(item, EntityActionsDefinitions); } export interface EntityDefinition extends langium.AstNode { readonly $container: ModuleDefinition; readonly $type: 'EntityDefinition'; extends?: ExtendsClause; name: QualifiedName; schema: RecordSchemaDefinition; } export const EntityDefinition = 'EntityDefinition'; export function isEntityDefinition(item: unknown): item is EntityDefinition { return reflection.isInstance(item, EntityDefinition); } export interface EnumSpec extends langium.AstNode { readonly $container: AttributeDefinition; readonly $type: 'EnumSpec'; type?: QualifiedName; values: Array<string>; } export const EnumSpec = 'EnumSpec'; export function isEnumSpec(item: unknown): item is EnumSpec { return reflection.isInstance(item, EnumSpec); } export interface EventDefinition extends langium.AstNode { readonly $container: ModuleDefinition | PublicEventDefinition; readonly $type: 'EventDefinition'; extends?: ExtendsClause; name: QualifiedName; schema: RecordSchemaDefinition; } export const EventDefinition = 'EventDefinition'; export function isEventDefinition(item: unknown): item is EventDefinition { return reflection.isInstance(item, EventDefinition); } export interface ExtendsClause extends langium.AstNode { readonly $container: EntityDefinition | EventDefinition | RecordDefinition; readonly $type: 'ExtendsClause'; parentName: QualifiedName; } export const ExtendsClause = 'ExtendsClause'; export function isExtendsClause(item: unknown): item is ExtendsClause { return reflection.isInstance(item, ExtendsClause); } export interface FlowDefBody extends langium.AstNode { readonly $container: FlowDefinition; readonly $type: 'FlowDefBody'; entries: Array<FlowEntry>; } export const FlowDefBody = 'FlowDefBody'; export function isFlowDefBody(item: unknown): item is FlowDefBody { return reflection.isInstance(item, FlowDefBody); } export interface FlowDefinition extends langium.AstNode { readonly $container: ModuleDefinition; readonly $type: 'FlowDefinition'; body?: FlowDefBody; name: GenericName; } export const FlowDefinition = 'FlowDefinition'; export function isFlowDefinition(item: unknown): item is FlowDefinition { return reflection.isInstance(item, FlowDefinition); } export interface FlowEntry extends langium.AstNode { readonly $container: FlowDefBody; readonly $type: 'FlowEntry'; cond?: ConditionalFlowStep; next?: FlowStepSpec; root: GenericName; } export const FlowEntry = 'FlowEntry'; export function isFlowEntry(item: unknown): item is FlowEntry { return reflection.isInstance(item, FlowEntry); } export interface FnCall extends langium.AstNode { readonly $container: AsyncFnCall | Literal; readonly $type: 'FnCall'; args: Array<Expr>; name: Ref | string; } export const FnCall = 'FnCall'; export function isFnCall(item: unknown): item is FnCall { return reflection.isInstance(item, FnCall); } export interface ForEach extends langium.AstNode { readonly $container: Pattern; readonly $type: 'ForEach'; src: Pattern; statements: Array<Statement>; var: string; } export const ForEach = 'ForEach'; export function isForEach(item: unknown): item is ForEach { return reflection.isInstance(item, ForEach); } export interface FullTextSearch extends langium.AstNode { readonly $container: Pattern; readonly $type: 'FullTextSearch'; name: QueryId; options?: MapLiteral; query: Literal; } export const FullTextSearch = 'FullTextSearch'; export function isFullTextSearch(item: unknown): item is FullTextSearch { return reflection.isInstance(item, FullTextSearch); } export interface GenericDefBody extends langium.AstNode { readonly $container: AgentDefinition; readonly $type: 'GenericDefBody'; attributes: Array<GenericPropertyDef>; } export const GenericDefBody = 'GenericDefBody'; export function isGenericDefBody(item: unknown): item is GenericDefBody { return reflection.isInstance(item, GenericDefBody); } export interface GenericPropertyDef extends langium.AstNode { readonly $container: GenericDefBody; readonly $type: 'GenericPropertyDef'; name: string; value: Literal; } export const GenericPropertyDef = 'GenericPropertyDef'; export function isGenericPropertyDef(item: unknown): item is GenericPropertyDef { return reflection.isInstance(item, GenericPropertyDef); } export interface GlossaryEntryDefinition extends langium.AstNode { readonly $container: ModuleDefinition; readonly $type: 'GlossaryEntryDefinition'; body?: MapLiteral; glos?: AgentXtraSpec; name: Ref; } export const GlossaryEntryDefinition = 'GlossaryEntryDefinition'; export function isGlossaryEntryDefinition(item: unknown): item is GlossaryEntryDefinition { return reflection.isInstance(item, GlossaryEntryDefinition); } export interface Group extends langium.AstNode { readonly $container: AttributeDefinition | BinExpr | CaseEntry | FnCall | Group | If | MapEntry | NegExpr | NotExpr | Pattern | SetAttribute; readonly $type: 'Group'; ge: Expr; } export const Group = 'Group'; export function isGroup(item: unknown): item is Group { return reflection.isInstance(item, Group); } export interface Handler extends langium.AstNode { readonly $container: CatchSpec; readonly $type: 'Handler'; except: 'error' | 'not_found'; stmt: Statement; } export const Handler = 'Handler'; export function isHandler(item: unknown): item is Handler { return reflection.isInstance(item, Handler); } export interface If extends langium.AstNode { readonly $container: DirectiveDefinition | Pattern | ScenarioDefinition; readonly $type: 'If'; cond: Expr; else?: Else; statements: Array<Statement>; } export const If = 'If'; export function isIf(item: unknown): item is If { return reflection.isInstance(item, If); } export interface Import extends langium.AstNode { readonly $container: ModuleDefinition; readonly $type: 'Import'; name: string; path: string; } export const Import = 'Import'; export function isImport(item: unknown): item is Import { return reflection.isInstance(item, Import); } export interface JoinSpec extends langium.AstNode { readonly $container: CrudMap; readonly $type: 'JoinSpec'; lhs: QueryId; name: QualifiedName; op?: SqlComparisonOpr; rhs: Ref; type: JoinType; } export const JoinSpec = 'JoinSpec'; export function isJoinSpec(item: unknown): item is JoinSpec { return reflection.isInstance(item, JoinSpec); } export interface KvPair extends langium.AstNode { readonly $container: KvPairs; readonly $type: 'KvPair'; key?: string; value: Literal; } export const KvPair = 'KvPair'; export function isKvPair(item: unknown): item is KvPair { return reflection.isInstance(item, KvPair); } export interface KvPairs extends langium.AstNode { readonly $container: PropertyDefinition; readonly $type: 'KvPairs'; pairs: Array<KvPair>; } export const KvPairs = 'KvPairs'; export function isKvPairs(item: unknown): item is KvPairs { return reflection.isInstance(item, KvPairs); } export interface Literal extends langium.AstNode { readonly $container: AttributeDefinition | BinExpr | CaseEntry | CrudMap | FnCall | FullTextSearch | GenericPropertyDef | Group | If | KvPair | MapEntry | NegExpr | NotExpr | Pattern | SetAttribute; readonly $type: 'Literal'; array?: ArrayLiteral; asyncFnCall?: AsyncFnCall; bool?: Boolean; fnCall?: FnCall; id?: string; map?: MapLiteral; num?: Decimal; ref?: Ref; str?: string; } export const Literal = 'Literal'; export function isLiteral(item: unknown): item is Literal { return reflection.isInstance(item, Literal); } export interface MapEntry extends langium.AstNode { readonly $container: MapLiteral; readonly $type: 'MapEntry'; key: MapKey; value: Expr; } export const MapEntry = 'MapEntry'; export function isMapEntry(item: unknown): item is MapEntry { return reflection.isInstance(item, MapEntry); } export interface MapKey extends langium.AstNode { readonly $container: MapEntry; readonly $type: 'MapKey'; bool?: Boolean; num?: Decimal; str?: string; } export const MapKey = 'MapKey'; export function isMapKey(item: unknown): item is MapKey { return reflection.isInstance(item, MapKey); } export interface MapLiteral extends langium.AstNode { readonly $container: DirectiveDefinition | FullTextSearch | GlossaryEntryDefinition | Literal | MetaDefinition | ScenarioDefinition; readonly $type: 'MapLiteral'; entries: Array<MapEntry>; } export const MapLiteral = 'MapLiteral'; export function isMapLiteral(item: unknown): item is MapLiteral { return reflection.isInstance(item, MapLiteral); } export interface MetaDefinition extends langium.AstNode { readonly $container: RecordExtraDefinition; readonly $type: 'MetaDefinition'; spec: MapLiteral; } export const MetaDefinition = 'MetaDefinition'; export function isMetaDefinition(item: unknown): item is MetaDefinition { return reflection.isInstance(item, MetaDefinition); } export interface ModuleDefinition extends langium.AstNode { readonly $type: 'ModuleDefinition'; defs: Array<Definition>; imports: Array<Import>; name: QualifiedName; } export const ModuleDefinition = 'ModuleDefinition'; export function isModuleDefinition(item: unknown): item is ModuleDefinition { return reflection.isInstance(item, ModuleDefinition); } export interface NegExpr extends langium.AstNode { readonly $container: AttributeDefinition | BinExpr | CaseEntry | FnCall | Group | If | MapEntry | NegExpr | NotExpr | Pattern | SetAttribute; readonly $type: 'NegExpr'; ne: Expr; } export const NegExpr = 'NegExpr'; export function isNegExpr(item: unknown): item is NegExpr { return reflection.isInstance(item, NegExpr); } export interface NodeDefinition extends langium.AstNode { readonly $container: RelNodes; readonly $type: 'NodeDefinition'; alias?: string; name: QualifiedName; } export const NodeDefinition = 'NodeDefinition'; export function isNodeDefinition(item: unknown): item is NodeDefinition { return reflection.isInstance(item, NodeDefinition); } export interface NotExpr extends langium.AstNode { readonly $container: AttributeDefinition | BinExpr | CaseEntry | FnCall | Group | If | MapEntry | NegExpr | NotExpr | Pattern | SetAttribute; readonly $type: 'NotExpr'; ne: Expr; } export const NotExpr = 'NotExpr'; export function isNotExpr(item: unknown): item is NotExpr { return reflection.isInstance(item, NotExpr); } export interface OneOfSpec extends langium.AstNode { readonly $container: AttributeDefinition; readonly $type: 'OneOfSpec'; ref: Ref; } export const OneOfSpec = 'OneOfSpec'; export function isOneOfSpec(item: unknown): item is OneOfSpec { return reflection.isInstance(item, OneOfSpec); } export interface Pattern extends langium.AstNode { readonly $container: Delete | ForEach | Purge | RelationshipPattern | Return | Statement; readonly $type: 'Pattern'; crudMap?: CrudMap; delete?: Delete; expr?: Expr; forEach?: ForEach; fullTextSearch?: FullTextSearch; if?: If; purge?: Purge; return?: Return; } export const Pattern = 'Pattern'; export function isPattern(item: unknown): item is Pattern { return reflection.isInstance(item, Pattern); } export interface PrePostTriggerDefinition extends langium.AstNode { readonly $container: RecordExtraDefinition; readonly $type: 'PrePostTriggerDefinition'; after?: AfterTriggerDefinition; before?: BeforeTriggerDefinition; } export const PrePostTriggerDefinition = 'PrePostTriggerDefinition'; export function isPrePostTriggerDefinition(item: unknown): item is PrePostTriggerDefinition { return reflection.isInstance(item, PrePostTriggerDefinition); } export interface PropertyDefinition extends langium.AstNode { readonly $container: AttributeDefinition | CrudMapBody | RelationshipDefinition; readonly $type: 'PropertyDefinition'; name: TaggedId; value?: KvPairs; } export const PropertyDefinition = 'PropertyDefinition'; export function isPropertyDefinition(item: unknown): item is PropertyDefinition { return reflection.isInstance(item, PropertyDefinition); } export interface PublicAgentDefinition extends langium.AstNode { readonly $container: ModuleDefinition; readonly $type: 'PublicAgentDefinition'; def: AgentDefinition; } export const PublicAgentDefinition = 'PublicAgentDefinition'; export function isPublicAgentDefinition(item: unknown): item is PublicAgentDefinition { return reflection.isInstance(item, PublicAgentDefinition); } export interface PublicEventDefinition extends langium.AstNode { readonly $container: ModuleDefinition; readonly $type: 'PublicEventDefinition'; def: EventDefinition; } export const PublicEventDefinition = 'PublicEventDefinition'; export function isPublicEventDefinition(item: unknown): item is PublicEventDefinition { return reflection.isInstance(item, PublicEventDefinition); } export interface PublicWorkflowDefinition extends langium.AstNode { readonly $container: ModuleDefinition; readonly $type: 'PublicWorkflowDefinition'; def: WorkflowDefinition; } export const PublicWorkflowDefinition = 'PublicWorkflowDefinition'; export function isPublicWorkflowDefinition(item: unknown): item is PublicWorkflowDefinition { return reflection.isInstance(item, PublicWorkflowDefinition); } export interface Purge extends langium.AstNode { readonly $container: Pattern; readonly $type: 'Purge'; pattern: Pattern; } export const Purge = 'Purge'; export function isPurge(item: unknown): item is Purge { return reflection.isInstance(item, Purge); } export interface RbacAllowSpec extends langium.AstNode { readonly $container: RbacSpecEntry; readonly $type: 'RbacAllowSpec'; oprs: Array<RbacOpr>; } export const RbacAllowSpec = 'RbacAllowSpec'; export function isRbacAllowSpec(item: unknown): item is RbacAllowSpec { return reflection.isInstance(item, RbacAllowSpec); } export interface RbacExpressionSpec extends langium.AstNode { readonly $container: RbacSpecEntry; readonly $type: 'RbacExpressionSpec'; lhs: Ref; rhs: Ref; } export const RbacExpressionSpec = 'RbacExpressionSpec'; export function isRbacExpressionSpec(item: unknown): item is RbacExpressionSpec { return reflection.isInstance(item, RbacExpressionSpec); } export interface RbacOpr extends langium.AstNode { readonly $container: RbacAllowSpec; readonly $type: 'RbacOpr'; value: 'create' | 'delete' | 'read' | 'update'; } export const RbacOpr = 'RbacOpr'; export function isRbacOpr(item: unknown): item is RbacOpr { return reflection.isInstance(item, RbacOpr); } export interface RbacRolesSpec extends langium.AstNode { readonly $container: RbacSpecEntry; readonly $type: 'RbacRolesSpec'; roles: Array<'*' | string>; } export const RbacRolesSpec = 'RbacRolesSpec'; export function isRbacRolesSpec(item: unknown): item is RbacRolesSpec { return reflection.isInstance(item, RbacRolesSpec); } export interface RbacSpecDefinition extends langium.AstNode { readonly $container: RecordExtraDefinition; readonly $type: 'RbacSpecDefinition'; specEntries: Array<RbacSpecEntries>; } export const RbacSpecDefinition = 'RbacSpecDefinition'; export function isRbacSpecDefinition(item: unknown): item is RbacSpecDefinition { return reflection.isInstance(item, RbacSpecDefinition); } export interface RbacSpecEntries extends langium.AstNode { readonly $container: RbacSpecDefinition; readonly $type: 'RbacSpecEntries'; entries: Array<RbacSpecEntry>; } export const RbacSpecEntries = 'RbacSpecEntries'; export function isRbacSpecEntries(item: unknown): item is RbacSpecEntries { return reflection.isInstance(item, RbacSpecEntries); } export interface RbacSpecEntry extends langium.AstNode { readonly $container: RbacSpecEntries; readonly $type: 'RbacSpecEntry'; allow?: RbacAllowSpec; expr?: RbacExpressionSpec; role?: RbacRolesSpec; } export const RbacSpecEntry = 'RbacSpecEntry'; export function isRbacSpecEntry(item: unknown): item is RbacSpecEntry { return reflection.isInstance(item, RbacSpecEntry); } export interface RecordDefinition extends langium.AstNode { readonly $container: ModuleDefinition; readonly $type: 'RecordDefinition'; extends?: ExtendsClause; name: QualifiedName; schema: RecordSchemaDefinition; } export const RecordDefinition = 'RecordDefinition'; export function isRecordDefinition(item: unknown): item is RecordDefinition { return reflection.isInstance(item, RecordDefinition); } export interface RecordExtraDefinition extends langium.AstNode { readonly $container: RecordSchemaDefinition; readonly $type: 'RecordExtraDefinition'; actions?: EntityActionsDefinitions; meta?: MetaDefinition; prePost?: PrePostTriggerDefinition; rbacSpec?: RbacSpecDefinition; uq?: CompositeUniqueDefinition; } export const RecordExtraDefinition = 'RecordExtraDefinition'; export function isRecordExtraDefinition(item: unknown): item is RecordExtraDefinition { return reflection.isInstance(item, RecordExtraDefinition); } export interface RecordSchemaDefinition extends langium.AstNode { readonly $container: EntityDefinition | EventDefinition | RecordDefinition | RelationshipDefinition; readonly $type: 'RecordSchemaDefinition'; attributes: Array<AttributeDefinition>; extras: Array<RecordExtraDefinition>; } export const RecordSchemaDefinition = 'RecordSchemaDefinition'; export function isRecordSchemaDefinition(item: unknown): item is RecordSchemaDefinition { return reflection.isInstance(item, RecordSchemaDefinition); } export interface RefSpec extends langium.AstNode { readonly $container: AttributeDefinition; readonly $type: 'RefSpec'; ref: QualifiedName; type?: QualifiedName; } export const RefSpec = 'RefSpec'; export function isRefSpec(item: unknown): item is RefSpec { return reflection.isInstance(item, RefSpec); } export interface RelationshipDefinition extends langium.AstNode { readonly $container: ModuleDefinition; readonly $type: 'RelationshipDefinition'; name: QualifiedName; nodes: RelNodes; properties: Array<PropertyDefinition>; schema?: RecordSchemaDefinition; type: 'between' | 'contains'; } export const RelationshipDefinition = 'RelationshipDefinition'; export function isRelationshipDefinition(item: unknown): item is RelationshipDefinition { return reflection.isInstance(item, RelationshipDefinition); } export interface RelationshipPattern extends langium.AstNode { readonly $container: CrudMap; readonly $type: 'RelationshipPattern'; name: QualifiedName; pattern: Pattern; } export const RelationshipPattern = 'RelationshipPattern'; export function isRelationshipPattern(item: unknown): item is RelationshipPattern { return reflection.isInstance(item, RelationshipPattern); } export interface RelNodes extends langium.AstNode { readonly $container: RelationshipDefinition; readonly $type: 'RelNodes'; node1: NodeDefinition; node2: NodeDefinition; } export const RelNodes = 'RelNodes'; export function isRelNodes(item: unknown): item is RelNodes { return reflection.isInstance(item, RelNodes); } export interface ResolverDefinition extends langium.AstNode { readonly $container: ModuleDefinition; readonly $type: 'ResolverDefinition'; methods: Array<ResolverMethodSpec>; name: GenericName; paths: Array<GenericName>; } export const ResolverDefinition = 'ResolverDefinition'; export function isResolverDefinition(item: unknown): item is ResolverDefinition { return reflection.isInstance(item, ResolverDefinition); } export interface ResolverFnName extends langium.AstNode { readonly $container: ResolverMethodSpec; readonly $type: 'ResolverFnName'; name: Ref | string; } export const ResolverFnName = 'ResolverFnName'; export function isResolverFnName(item: unknown): item is ResolverFnName { return reflection.isInstance(item, ResolverFnName); } export interface ResolverMethodName extends langium.AstNode { readonly $container: ResolverMethodSpec; readonly $type: 'ResolverMethodName'; name: 'commitTransaction' | 'create' | 'delete' | 'onSubscription' | 'query' | 'rollbackTransaction' | 'startTransaction' | 'subscribe' | 'update' | 'upsert'; } export const ResolverMethodName = 'ResolverMethodName'; export function isResolverMethodName(item: unknown): item is ResolverMethodName { return reflection.isInstance(item, ResolverMethodName); } export interface ResolverMethodSpec extends langium.AstNode { readonly $container: ResolverDefinition; readonly $type: 'ResolverMethodSpec'; fn: ResolverFnName; key: ResolverMethodName; } export const ResolverMethodSpec = 'ResolverMethodSpec'; export function isResolverMethodSpec(item: unknown): item is ResolverMethodSpec { return reflection.isInstance(item, ResolverMethodSpec); } export interface RetryDefinition extends langium.AstNode { readonly $container: ModuleDefinition; readonly $type: 'RetryDefinition'; attempts?: Decimal; backoff?: BackoffSpec; name: string; } export const RetryDefinition = 'RetryDefinition'; export function isRetryDefinition(item: unknown): item is RetryDefinition { return reflection.isInstance(item, RetryDefinition); } export interface Return extends langium.AstNode { readonly $container: Pattern; readonly $type: 'Return'; pattern: Pattern; } export const Return = 'Return'; export function isReturn(item: unknown): item is Return { return reflection.isInstance(item, Return); } export interface RuntimeHint extends langium.AstNode { readonly $container: Statement; readonly $type: 'RuntimeHint'; aliasSpec?: AliasSpec; catchSpec?: CatchSpec; thenSpec?: ThenSpec; } export const RuntimeHint = 'RuntimeHint'; export function isRuntimeHint(item: unknown): item is RuntimeHint { return reflection.isInstance(item, RuntimeHint); } export interface ScenarioDefinition extends langium.AstNode { readonly $container: ModuleDefinition; readonly $type: 'ScenarioDefinition'; body?: MapLiteral; name: Ref; scn?: If; } export const ScenarioDefinition = 'ScenarioDefinition'; export function isScenarioDefinition(item: unknown): item is ScenarioDefinition { return reflection.isInstance(item, ScenarioDefinition); } export interface SelectIntoEntry extends langium.AstNode { readonly $container: SelectIntoSpec; readonly $type: 'SelectIntoEntry'; alias: string; attribute: Ref; } export const SelectIntoEntry = 'SelectIntoEntry'; export function isSelectIntoEntry(item: unknown): item is SelectIntoEntry { return reflection.isInstance(item, SelectIntoEntry); } export interface SelectIntoSpec extends langium.AstNode { readonly $container: CrudMap; readonly $type: 'SelectIntoSpec'; entries: Array<SelectIntoEntry>; } export const SelectIntoSpec = 'SelectIntoSpec'; export function isSelectIntoSpec(item: unknown): item is SelectIntoSpec { return reflection.isInstance(item, SelectIntoSpec); } export interface SetAttribute extends langium.AstNode { readonly $container: BackoffSpec | CrudMapBody; readonly $type: 'SetAttribute'; name: QueryId; op?: SqlComparisonOpr; value: AttributeValueExpression; } export const SetAttribute = 'SetAttribute'; export function isSetAttribute(item: unknown): item is SetAttribute { return reflection.isInstance(item, SetAttribute); } export interface StandaloneStatement extends langium.AstNode { readonly $container: ModuleDefinition; readonly $type: 'StandaloneStatement'; stmt: Statement; } export const StandaloneStatement = 'StandaloneStatement'; export function isStandaloneStatement(item: unknown): item is StandaloneStatement { return reflection.isInstance(item, StandaloneStatement); } export interface Statement extends langium.AstNode { readonly $container: ArrayLiteral | CaseEntry | Else | ForEach | Handler | If | StandaloneStatement | ThenSpec | WorkflowDefinition; readonly $type: 'Statement'; hints: Array<RuntimeHint>; pattern: Pattern; } export const Statement = 'Statement'; export function isStatement(item: unknown): item is Statement { return reflection.isInstance(item, Statement); } export interface ThenSpec extends langium.AstNode { readonly $container: RuntimeHint; readonly $type: 'ThenSpec'; statements: Array<Statement>; } export const ThenSpec = 'ThenSpec'; export function isThenSpec(item: unknown): item is ThenSpec { return reflection.isInstance(item, ThenSpec); } export interface TriggerDefinition extends langium.AstNode { readonly $container: AfterTriggerDefinition | BeforeTriggerDefinition; readonly $type: 'TriggerDefinition'; entries: Array<TriggerEntry>; } export const TriggerDefinition = 'TriggerDefinition'; export function isTriggerDefinition(item: unknown): item is TriggerDefinition { return reflection.isInstance(item, TriggerDefinition); } export interface TriggerEntry extends langium.AstNode { readonly $container: TriggerDefinition; readonly $type: 'TriggerEntry'; async?: '@async'; event: string; on: 'create' | 'delete' | 'update'; } export const TriggerEntry = 'TriggerEntry'; export function isTriggerEntry(item: unknown): item is TriggerEntry { return reflection.isInstance(item, TriggerEntry); } export interface WorkflowDefinition extends langium.AstNode { readonly $container: ModuleDefinition | PublicWorkflowDefinition; readonly $type: 'WorkflowDefinition'; header?: WorkflowHeader; name?: string; statements: Array<Statement>; } export const WorkflowDefinition = 'WorkflowDefinition'; export function isWorkflowDefinition(item: unknown): item is WorkflowDefinition { return reflection.isInstance(item, WorkflowDefinition); } export interface WorkflowHeader extends langium.AstNode { readonly $container: WorkflowDefinition; readonly $type: 'WorkflowHeader'; name: QualifiedName; prefix: WorkflowHeaderPrefix; tag: WorkflowHeaderTag; } export const WorkflowHeader = 'WorkflowHeader'; export function isWorkflowHeader(item: unknown): item is WorkflowHeader { return reflection.isInstance(item, WorkflowHeader); } export type AgentlangAstType = { ActionEntry: ActionEntry AfterTriggerDefinition: AfterTriggerDefinition AgentDefinition: AgentDefinition AgentXtraAttribute: AgentXtraAttribute AgentXtraSpec: AgentXtraSpec AliasSpec: AliasSpec ArrayLiteral: ArrayLiteral AsyncFnCall: AsyncFnCall AttributeDefinition: AttributeDefinition AttributeValueExpression: AttributeValueExpression BackoffSpec: BackoffSpec BeforeTriggerDefinition: BeforeTriggerDefinition BinExpr: BinExpr CaseEntry: CaseEntry CatchSpec: CatchSpec CompositeUniqueDefinition: CompositeUniqueDefinition ConditionalFlowStep: ConditionalFlowStep CrudMap: CrudMap CrudMapBody: CrudMapBody DecisionDefBody: DecisionDefBody DecisionDefinition: DecisionDefinition Definition: Definition Delete: Delete DirectiveDefinition: DirectiveDefinition Else: Else EntityActionsDefinitions: EntityActionsDefinitions EntityDefinition: EntityDefinition EnumSpec: EnumSpec EventDefinition: EventDefinition Expr: Expr ExtendsClause: ExtendsClause FlowDefBody: FlowDefBody FlowDefinition: FlowDefinition FlowEntry: FlowEntry FlowStepSpec: FlowStepSpec FnCall: FnCall ForEach: ForEach FullTextSearch: FullTextSearch GenericDefBody: GenericDefBody GenericPropertyDef: GenericPropertyDef GlossaryEntryDefinition: GlossaryEntryDefinition Group: Group Handler: Handler If: If Import: Import JoinSpec: JoinSpec KvPair: KvPair KvPairs: KvPairs Literal: Literal MapEntry: MapEntry MapKey: MapKey MapLiteral: MapLiteral MetaDefinition: MetaDefinition ModuleDefinition: ModuleDefinition NegExpr: NegExpr NodeDefinition: NodeDefinition NotExpr: NotExpr OneOfSpec: OneOfSpec Pattern: Pattern PrePostTriggerDefinition: PrePostTriggerDefinition PrimExpr: PrimExpr PropertyDefinition: PropertyDefinition PublicAgentDefinition: PublicAgentDefinition PublicEventDefinition: PublicEventDefinition PublicWorkflowDefinition: PublicWorkflowDefinition Purge: Purge RbacAllowSpec: RbacAllowSpec RbacExpressionSpec: RbacExpressionSpec RbacOpr: RbacOpr RbacRolesSpec: RbacRolesSpec RbacSpecDefinition: RbacSpecDefinition RbacSpecEntries: RbacSpecEntries RbacSpecEntry: RbacSpecEntry RecordDefinition: RecordDefinition RecordExtraDefinition: RecordExtraDefinition RecordSchemaDefinition: RecordSchemaDefinition RefSpec: RefSpec RelNodes: RelNodes RelationshipDefinition: RelationshipDefinition RelationshipPattern: RelationshipPattern ResolverDefinition: ResolverDefinition ResolverFnName: ResolverFnName ResolverMethodName: ResolverMethodName ResolverMethodSpec: ResolverMethodSpec RetryDefinition: RetryDefinition Return: Return RuntimeHint: RuntimeHint ScenarioDefinition: ScenarioDefinition SchemaDefinition: SchemaDefinition SelectIntoEntry: SelectIntoEntry SelectIntoSpec: SelectIntoSpec SetAttribute: SetAttribute StandaloneStatement: StandaloneStatement Statement: Statement ThenSpec: ThenSpec TriggerDefinition: TriggerDefinition TriggerEntry: TriggerEntry WorkflowDefinition: WorkflowDefinition WorkflowHeader: WorkflowHeader } export class AgentlangAstReflection extends langium.AbstractAstReflection { getAllTypes(): string[] { return [ActionEntry, AfterTriggerDefinition, AgentDefinition, AgentXtraAttribute, AgentXtraSpec, AliasSpec, ArrayLiteral, AsyncFnCall, AttributeDefinition, AttributeValueExpression, BackoffSpec, BeforeTriggerDefinition, BinExpr, CaseEntry, CatchSpec, CompositeUniqueDefinition, ConditionalFlowStep, CrudMap, CrudMapBody, DecisionDefBody, DecisionDefinition, Definition, Delete, DirectiveDefinition, Else, EntityActionsDefinitions, EntityDefinition, EnumSpec, EventDefinition, Expr, ExtendsClause, FlowDefBody, FlowDefinition, FlowEntry, FlowStepSpec, FnCall, ForEach, FullTextSearch, GenericDefBody, GenericPropertyDef, GlossaryEntryDefinition, Group, Handler, If, Import, JoinSpec, KvPair, KvPairs, Literal, MapEntry, MapKey, MapLiteral, MetaDefinition, ModuleDefinition, NegExpr, NodeDefinition, NotExpr, OneOfSpec, Pattern, PrePostTriggerDefinition, PrimExpr, PropertyDefinition, PublicAgentDefinition, PublicEventDefinition, PublicWorkflowDefinition, Purge, RbacAllowSpec, RbacExpressionSpec, RbacOpr, RbacRolesSpec, RbacSpecDefinition, RbacSpecEntries, RbacSpecEntry, RecordDefinition, RecordExtraDefinition, RecordSchemaDefinition, RefSpec, RelNodes, RelationshipDefinition, RelationshipPattern, ResolverDefinition, ResolverFnName, ResolverMethodName, ResolverMethodSpec, RetryDefinition, Return, RuntimeHint, ScenarioDefinition, SchemaDefinition, SelectIntoEntry, SelectIntoSpec, SetAttribute, StandaloneStatement, Statement, ThenSpec, TriggerDefinition, TriggerEntry, WorkflowDefinition, WorkflowHeader]; } protected override computeIsSubtype(subtype: string, supertype: string): boolean { switch (subtype) { case AgentDefinition: case DecisionDefinition: case DirectiveDefinition: case FlowDefinition: case GlossaryEntryDefinition: case PublicAgentDefinition: case PublicWorkflowDefinition: case RelationshipDefinition: case ResolverDefinition: case RetryDefinition: case ScenarioDefinition: case SchemaDefinition: case StandaloneStatement: case WorkflowDefinition: { return this.isSubtype(Definition, supertype); } case BinExpr: case PrimExpr: { return this.isSubtype(Expr, supertype); } case CrudMap: { return this.isSubtype(FlowStepSpec, supertype); } case EntityDefinition: case EventDefinition: case PublicEventDefinition: case RecordDefinition: { return this.isSubtype(SchemaDefinition, supertype); } case Expr: { return this.isSubtype(AttributeValueExpression, supertype); } case Group: case Literal: case NegExpr: case NotExpr: { return this.isSubtype(PrimExpr, supertype); } default: { return false; } } } getReferenceType(refInfo: langium.ReferenceInfo): string { const referenceId = `${refInfo.container.$type}:${refInfo.property}`; switch (referenceId) { default: { throw new Error(`${referenceId} is not a valid reference id.`); } } } getTypeMetaData(type: string): langium.TypeMetaData { switch (type) { case ActionEntry: { return { name: ActionEntry, properties: [ { name: 'event' }, { name: 'name' } ] }; } case AfterTriggerDefinition: { return { name: AfterTriggerDefinition, properties: [ { name: 'triggers' } ] }; } case AgentDefinition: { return { name: AgentDefinition, properties: [ { name: 'body' }, { name: 'name' } ] }; } case AgentXtraAttribute: { return {