@almadar/core 7.16.0 → 7.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- import { bh as OrbitalSchema, ci as State, b6 as OrbitalDefinition } from './schema-DJzXvJHi.js';
2
- export { A as AGENT_DOMAIN_CATEGORIES, a as ALLOWED_CUSTOM_COMPONENTS, b as AgentDomainCategory, c as AgentDomainCategorySchema, d as AgentEffect, e as AllowedCustomComponent, f as AnimationDef, g as AnimationDefInput, h as AnimationDefSchema, i as AssetMap, j as AssetMapInput, k as AssetMapSchema, l as AssetMapping, m as AssetMappingInput, n as AssetMappingSchema, o as AtomicEffect, C as CallServiceConfig, p as CallServiceEffect, q as CheckpointLoadEffect, r as CheckpointSaveEffect, s as ComputedEventContract, t as ComputedEventContractSchema, u as ComputedEventListener, v as ComputedEventListenerSchema, w as ConfigFieldDeclaration, x as ConfigFieldDeclarationSchema, y as CustomPatternDefinition, z as CustomPatternDefinitionInput, B as CustomPatternDefinitionSchema, D as CustomPatternMap, E as CustomPatternMapInput, F as CustomPatternMapSchema, G as DeclaredTraitConfig, H as DeclaredTraitConfigSchema, I as DerefEffect, J as DesignPreferences, K as DesignPreferencesInput, L as DesignPreferencesSchema, M as DesignTokens, N as DesignTokensInput, O as DesignTokensSchema, P as DespawnEffect, Q as DoEffect, R as DomainCategory, S as DomainCategorySchema, T as DomainContext, U as DomainContextInput, V as DomainContextSchema, W as DomainVocabulary, X as DomainVocabularySchema, Y as ENTITY_ROLES, Z as Effect, _ as EffectInput, $ as EffectSchema, a0 as EmitConfig, a1 as EmitEffect, a2 as Entity, a3 as EntityCall, a4 as EntityCallSchema, a5 as EntityData, a6 as EntityField, a7 as EntityFieldInput, a8 as EntityFieldSchema, a9 as EntityPersistence, aa as EntityPersistenceSchema, ab as EntityRef, ac as EntityRefSchema, ad as EntityRefStringSchema, ae as EntityRole, af as EntityRoleSchema, ag as EntityRow, ah as EntitySchema, ai as EntitySemanticRole, aj as EntitySemanticRoleSchema, ak as EvaluateConfig, al as EvaluateEffect, am as Event, an as EventInput, ao as EventListener, ap as EventListenerSchema, aq as EventPayloadField, ar as EventPayloadFieldSchema, as as EventSchema, at as EventScope, au as EventScopeSchema, av as EventSemanticRole, aw as EventSemanticRoleSchema, ax as EventSource, ay as EventSourceSchema, az as FetchEffect, aA as FetchOptions, aB as FetchResult, aC as Field, aD as FieldFormat, aE as FieldFormatSchema, aF as FieldSchema, aG as FieldType, aH as FieldTypeSchema, aI as FieldValue, aJ as ForwardConfig, aK as ForwardEffect, b2 as FullOrbitalUnit, aL as GAME_TYPES, aM as GameSubCategory, aN as GameSubCategorySchema, aO as GameType, aP as GameTypeSchema, aQ as Guard, aR as GuardInput, aS as GuardSchema, aT as ListenSource, aU as ListenSourceSchema, aV as LogEffect, aW as McpServiceDef, aX as McpServiceDefSchema, aY as NavigateEffect, aZ as NnConfig, a_ as NnLayer, a$ as NodeClassification, b0 as NodeClassificationSchema, b1 as NotifyEffect, b2 as Orbital, b3 as OrbitalConfig, b4 as OrbitalConfigInput, b5 as OrbitalConfigSchema, b7 as OrbitalDefinitionSchema, b8 as OrbitalEntity, b9 as OrbitalEntityInput, ba as OrbitalEntitySchema, bb as OrbitalInput, bc as OrbitalPage, bd as OrbitalPageInput, be as OrbitalPageSchema, bf as OrbitalPageStrictInput, bg as OrbitalPageStrictSchema, bj as OrbitalSchemaInput, bk as OrbitalSchemaSchema, bl as OrbitalSchemaWithTraits, bm as OrbitalTraitRef, bn as OrbitalTraitRefSchema, bo as OrbitalUnit, bp as OrbitalUnitSchema, bi as OrbitalZodSchema, bq as OsEffect, br as Page, bs as PageRef, bt as PageRefObject, bu as PageRefObjectSchema, bv as PageRefSchema, bw as PageRefStringSchema, bx as PageSchema, by as PageTraitRef, bz as PageTraitRefSchema, bA as PayloadField, bB as PayloadFieldSchema, bC as PersistData, bD as PersistEffect, bE as PersistEmitConfig, bF as PresentationType, bG as RefEffect, bH as RelatedLink, bI as RelatedLinkSchema, bJ as RelationConfig, bK as RelationConfigSchema, bL as RenderItemLambda, bM as RenderUIConfig, bN as RenderUIEffect, bO as RenderUINode, bP as RequiredField, bQ as RequiredFieldSchema, bR as ResolvedAsset, bS as ResolvedAssetInput, bT as ResolvedAssetSchema, bU as ResolvedPatternProps, bV as RestAuthConfig, bW as RestAuthConfigSchema, bX as RestServiceDef, bY as RestServiceDefSchema, bZ as SERVICE_TYPES, b_ as SemanticAssetRef, b$ as SemanticAssetRefInput, c0 as SemanticAssetRefSchema, c1 as ServiceDefinition, c2 as ServiceDefinitionSchema, c3 as ServiceParams, c4 as ServiceParamsValue, c5 as ServiceRef, c6 as ServiceRefObject, c7 as ServiceRefObjectSchema, c8 as ServiceRefSchema, c9 as ServiceRefStringSchema, ca as ServiceType, cb as ServiceTypeSchema, cc as SetEffect, cd as SocketEvents, ce as SocketEventsSchema, cf as SocketServiceDef, cg as SocketServiceDefSchema, ch as SpawnEffect, cj as StateInput, ck as StateMachine, cl as StateMachineInput, cm as StateMachineSchema, cn as StateSchema, co as StateSemanticRole, cp as StateSemanticRoleSchema, cq as SuggestedGuard, cr as SuggestedGuardSchema, cs as SwapEffect, ct as ThemeDefinition, cu as ThemeDefinitionSchema, cv as ThemeRef, cw as ThemeRefSchema, cx as ThemeRefStringSchema, cy as ThemeTokens, cz as ThemeTokensSchema, cA as ThemeVariant, cB as ThemeVariantSchema, cC as TrainConfig, cD as TrainEffect, cE as Trait, cF as TraitCategory, cG as TraitCategorySchema, cH as TraitConfig, cI as TraitConfigObject, cJ as TraitConfigSchema, cK as TraitConfigValue, cL as TraitConfigValueSchema, cM as TraitDataEntity, cN as TraitDataEntitySchema, cO as TraitEntityField, cP as TraitEntityFieldSchema, cQ as TraitEventContract, cR as TraitEventContractSchema, cS as TraitEventListener, cT as TraitEventListenerSchema, cU as TraitInput, cV as TraitRef, cW as TraitRefSchema, cX as TraitReference, cY as TraitReferenceInput, cZ as TraitReferenceSchema, c_ as TraitSchema, c$ as TraitTick, d0 as TraitTickSchema, d1 as TraitUIBinding, d2 as Transition, d3 as TransitionInput, d4 as TransitionSchema, d5 as TypedEffect, d6 as UISlot, d7 as UISlotSchema, d8 as UI_SLOTS, d9 as UXHints, da as UXHintsSchema, db as UseDeclaration, dc as UseDeclarationSchema, dd as UserPersona, de as UserPersonaInput, df as UserPersonaSchema, dg as VISUAL_STYLES, dh as ViewType, di as ViewTypeSchema, dj as VisualStyle, dk as VisualStyleSchema, dl as WatchEffect, dm as WatchOptions, dn as atomic, dp as callService, dq as createAssetKey, dr as deref, ds as deriveCollection, dt as despawn, du as doEffects, dv as emit, dw as findService, dx as getDefaultAnimationsForRole, dy as getServiceNames, dz as getTraitConfig, dA as getTraitName, dB as hasService, dC as isCircuitEvent, dD as isEffect, dE as isEntityCall, dF as isEntityReference, dG as isEntityReferenceAny, dH as isImportedTraitRef, dI as isInlineTrait, dJ as isMcpService, dK as isOrbitalDefinition, dL as isPageReference, dM as isPageReferenceObject, dN as isPageReferenceString, dO as isRestService, dP as isRuntimeEntity, dQ as isSExprEffect, dR as isServiceReference, dS as isServiceReferenceObject, dT as isSingletonEntity, dU as isSocketService, dV as isThemeReference, dW as navigate, dX as normalizeTraitRef, dY as notify, dZ as parseAssetKey, d_ as parseEntityRef, d$ as parseImportedTraitRef, e0 as parseOrbitalSchema, e1 as parsePageRef, e2 as parseServiceRef, e3 as persist, e4 as ref, e5 as renderUI, e6 as safeParseOrbitalSchema, e7 as set, e8 as spawn, e9 as swap, ea as validateAssetAnimations, eb as watch } from './schema-DJzXvJHi.js';
1
+ import { bh as OrbitalSchema, ci as State, b6 as OrbitalDefinition } from './schema-WX5fN1Ra.js';
2
+ export { A as AGENT_DOMAIN_CATEGORIES, a as ALLOWED_CUSTOM_COMPONENTS, b as AgentDomainCategory, c as AgentDomainCategorySchema, d as AgentEffect, e as AllowedCustomComponent, f as AnimationDef, g as AnimationDefInput, h as AnimationDefSchema, i as AssetMap, j as AssetMapInput, k as AssetMapSchema, l as AssetMapping, m as AssetMappingInput, n as AssetMappingSchema, o as AtomicEffect, C as CallServiceConfig, p as CallServiceEffect, q as CheckpointLoadEffect, r as CheckpointSaveEffect, s as ComputedEventContract, t as ComputedEventContractSchema, u as ComputedEventListener, v as ComputedEventListenerSchema, w as ConfigFieldDeclaration, x as ConfigFieldDeclarationSchema, y as CustomPatternDefinition, z as CustomPatternDefinitionInput, B as CustomPatternDefinitionSchema, D as CustomPatternMap, E as CustomPatternMapInput, F as CustomPatternMapSchema, G as DeclaredTraitConfig, H as DeclaredTraitConfigSchema, I as DerefEffect, J as DesignPreferences, K as DesignPreferencesInput, L as DesignPreferencesSchema, M as DesignTokens, N as DesignTokensInput, O as DesignTokensSchema, P as DespawnEffect, Q as DoEffect, R as DomainCategory, S as DomainCategorySchema, T as DomainContext, U as DomainContextInput, V as DomainContextSchema, W as DomainVocabulary, X as DomainVocabularySchema, Y as ENTITY_ROLES, Z as Effect, _ as EffectInput, $ as EffectSchema, a0 as EmitConfig, a1 as EmitEffect, a2 as Entity, a3 as EntityCall, a4 as EntityCallSchema, a5 as EntityData, a6 as EntityField, a7 as EntityFieldInput, a8 as EntityFieldSchema, a9 as EntityPersistence, aa as EntityPersistenceSchema, ab as EntityRef, ac as EntityRefSchema, ad as EntityRefStringSchema, ae as EntityRole, af as EntityRoleSchema, ag as EntityRow, ah as EntitySchema, ai as EntitySemanticRole, aj as EntitySemanticRoleSchema, ak as EvaluateConfig, al as EvaluateEffect, am as Event, an as EventInput, ao as EventListener, ap as EventListenerSchema, aq as EventPayloadField, ar as EventPayloadFieldSchema, as as EventSchema, at as EventScope, au as EventScopeSchema, av as EventSemanticRole, aw as EventSemanticRoleSchema, ax as EventSource, ay as EventSourceSchema, az as FetchEffect, aA as FetchOptions, aB as FetchResult, aC as Field, aD as FieldFormat, aE as FieldFormatSchema, aF as FieldSchema, aG as FieldType, aH as FieldTypeSchema, aI as FieldValue, aJ as ForwardConfig, aK as ForwardEffect, b2 as FullOrbitalUnit, aL as GAME_TYPES, aM as GameSubCategory, aN as GameSubCategorySchema, aO as GameType, aP as GameTypeSchema, aQ as Guard, aR as GuardInput, aS as GuardSchema, aT as ListenSource, aU as ListenSourceSchema, aV as LogEffect, aW as McpServiceDef, aX as McpServiceDefSchema, aY as NavigateEffect, aZ as NnConfig, a_ as NnLayer, a$ as NodeClassification, b0 as NodeClassificationSchema, b1 as NotifyEffect, b2 as Orbital, b3 as OrbitalConfig, b4 as OrbitalConfigInput, b5 as OrbitalConfigSchema, b7 as OrbitalDefinitionSchema, b8 as OrbitalEntity, b9 as OrbitalEntityInput, ba as OrbitalEntitySchema, bb as OrbitalInput, bc as OrbitalPage, bd as OrbitalPageInput, be as OrbitalPageSchema, bf as OrbitalPageStrictInput, bg as OrbitalPageStrictSchema, bj as OrbitalSchemaInput, bk as OrbitalSchemaSchema, bl as OrbitalSchemaWithTraits, bm as OrbitalTraitRef, bn as OrbitalTraitRefSchema, bo as OrbitalUnit, bp as OrbitalUnitSchema, bi as OrbitalZodSchema, bq as OsEffect, br as Page, bs as PageRef, bt as PageRefObject, bu as PageRefObjectSchema, bv as PageRefSchema, bw as PageRefStringSchema, bx as PageSchema, by as PageTraitRef, bz as PageTraitRefSchema, bA as PayloadField, bB as PayloadFieldSchema, bC as PersistData, bD as PersistEffect, bE as PersistEmitConfig, bF as PresentationType, bG as RefEffect, bH as RelatedLink, bI as RelatedLinkSchema, bJ as RelationConfig, bK as RelationConfigSchema, bL as RenderItemLambda, bM as RenderUIConfig, bN as RenderUIEffect, bO as RenderUINode, bP as RequiredField, bQ as RequiredFieldSchema, bR as ResolvedAsset, bS as ResolvedAssetInput, bT as ResolvedAssetSchema, bU as ResolvedPatternProps, bV as RestAuthConfig, bW as RestAuthConfigSchema, bX as RestServiceDef, bY as RestServiceDefSchema, bZ as SERVICE_TYPES, b_ as SemanticAssetRef, b$ as SemanticAssetRefInput, c0 as SemanticAssetRefSchema, c1 as ServiceDefinition, c2 as ServiceDefinitionSchema, c3 as ServiceParams, c4 as ServiceParamsValue, c5 as ServiceRef, c6 as ServiceRefObject, c7 as ServiceRefObjectSchema, c8 as ServiceRefSchema, c9 as ServiceRefStringSchema, ca as ServiceType, cb as ServiceTypeSchema, cc as SetEffect, cd as SocketEvents, ce as SocketEventsSchema, cf as SocketServiceDef, cg as SocketServiceDefSchema, ch as SpawnEffect, cj as StateInput, ck as StateMachine, cl as StateMachineInput, cm as StateMachineSchema, cn as StateSchema, co as StateSemanticRole, cp as StateSemanticRoleSchema, cq as SuggestedGuard, cr as SuggestedGuardSchema, cs as SwapEffect, ct as ThemeDefinition, cu as ThemeDefinitionSchema, cv as ThemeRef, cw as ThemeRefSchema, cx as ThemeRefStringSchema, cy as ThemeTokens, cz as ThemeTokensSchema, cA as ThemeVariant, cB as ThemeVariantSchema, cC as TrainConfig, cD as TrainEffect, cE as Trait, cF as TraitCategory, cG as TraitCategorySchema, cH as TraitConfig, cI as TraitConfigObject, cJ as TraitConfigSchema, cK as TraitConfigValue, cL as TraitConfigValueSchema, cM as TraitDataEntity, cN as TraitDataEntitySchema, cO as TraitEntityField, cP as TraitEntityFieldSchema, cQ as TraitEventContract, cR as TraitEventContractSchema, cS as TraitEventListener, cT as TraitEventListenerSchema, cU as TraitInput, cV as TraitRef, cW as TraitRefSchema, cX as TraitReference, cY as TraitReferenceInput, cZ as TraitReferenceSchema, c_ as TraitSchema, c$ as TraitScope, d0 as TraitTick, d1 as TraitTickSchema, d2 as TraitUIBinding, d3 as Transition, d4 as TransitionInput, d5 as TransitionSchema, d6 as TypedEffect, d7 as UISlot, d8 as UISlotSchema, d9 as UI_SLOTS, da as UXHints, db as UXHintsSchema, dc as UseDeclaration, dd as UseDeclarationSchema, de as UserPersona, df as UserPersonaInput, dg as UserPersonaSchema, dh as VISUAL_STYLES, di as ViewType, dj as ViewTypeSchema, dk as VisualStyle, dl as VisualStyleSchema, dm as WatchEffect, dn as WatchOptions, dp as atomic, dq as callService, dr as createAssetKey, ds as deref, dt as deriveCollection, du as despawn, dv as doEffects, dw as emit, dx as findService, dy as getDefaultAnimationsForRole, dz as getServiceNames, dA as getTraitConfig, dB as getTraitName, dC as hasService, dD as isCircuitEvent, dE as isEffect, dF as isEntityCall, dG as isEntityReference, dH as isEntityReferenceAny, dI as isImportedTraitRef, dJ as isInlineTrait, dK as isMcpService, dL as isOrbitalDefinition, dM as isPageReference, dN as isPageReferenceObject, dO as isPageReferenceString, dP as isRestService, dQ as isRuntimeEntity, dR as isSExprEffect, dS as isServiceReference, dT as isServiceReferenceObject, dU as isSingletonEntity, dV as isSocketService, dW as isThemeReference, dX as navigate, dY as normalizeTraitRef, dZ as notify, d_ as parseAssetKey, d$ as parseEntityRef, e0 as parseImportedTraitRef, e1 as parseOrbitalSchema, e2 as parsePageRef, e3 as parseServiceRef, e4 as persist, e5 as ref, e6 as renderUI, e7 as safeParseOrbitalSchema, e8 as set, e9 as spawn, ea as swap, eb as validateAssetAnimations, ec as watch } from './schema-WX5fN1Ra.js';
3
3
  export { C as CORE_BINDINGS, a as CoreBinding, E as EvalContext, b as EventPayload, c as EventPayloadValue, d as Expression, e as ExpressionInput, f as ExpressionSchema, L as LogMeta, P as ParsedBinding, S as SExpr, g as SExprAtom, h as SExprAtomSchema, i as SExprInput, j as SExprSchema, k as collectBindings, l as getArgs, m as getOperator, n as isBinding, o as isSExpr, p as isSExprAtom, q as isSExprCall, r as isValidBinding, s as parseBinding, t as sexpr, w as walkSExpr } from './expression-BVRFm0sV.js';
4
4
  import { ResolvedIR, ResolvedEntity, ResolvedPage, ResolvedTrait, ChangesetValue, SchemaChange, CategorizedRemovals, PageContentReduction, SemanticSchemaChange } from './types/index.js';
5
5
  export { AgentCodeSearchResult, AgentCompactResult, AgentCompactStrategy, AgentContext, AgentGenerateOptions, AgentMemoryCategory, AgentMemoryRecord, AppSummary, AssetLoadStatus, BINDING_CONTEXT_RULES, BINDING_DOCS, BINDING_ROOTS, BindingContext, BindingRoot, BindingSchema, BridgeHealth, BusEvent, BusEventListener, BusEventSource, ChangeAuthor, ChangeSetDocument, ChangeSummary, CheckStatus, ContextExtensions, CreateFlow, DEFAULT_INTERACTION_MODELS, DeleteFlow, EditFlow, EffectTrace, EventEmit, EventKey, EventListen, EventLogEntry, GitHubLink, HistoryMeta, InteractionModel, InteractionModelInput, InteractionModelSchema, LazyService, ListInteraction, OrbitalVerificationAPI, PatternTypeSchema, PersistActionName, ResolvedEntityBinding, ResolvedField, ResolvedNavigation, ResolvedPattern, ResolvedSection, ResolvedSectionEvent, ResolvedTraitBinding, ResolvedTraitDataEntity, ResolvedTraitEvent, ResolvedTraitGuard, ResolvedTraitListener, ResolvedTraitState, ResolvedTraitTick, ResolvedTraitTransition, ResolvedTraitUIBinding, SaveOptions, SaveResult, SemanticChangeKind, ServerResponseTrace, ServiceAction, ServiceActionName, ServiceContract, ServiceEvents, SnapshotDocument, StatsView, StoreContract, StoreFilter, StoreFilterOp, TraitFieldRef, TraitFieldRefSchema, TraitStateSnapshot, TransitionFrom, TransitionTrace, Unsubscribe, ValidationDocument, ValidationIssue, ValidationMeta, ValidationResults, VerificationCheck, VerificationSnapshot, VerificationSummary, ViewFlow, createEmptyResolvedPage, createEmptyResolvedTrait, createLazyService, createResolvedField, createTypedEventBus, getAllPatternTypes, getBindingExamples, getInteractionModelForDomain, inferTsType, isResolvedIR, isTraitFieldRef, toBindingRoot, validateBindingInContext } from './types/index.js';
6
- export { ASTNode, ComparisonCondition, ComparisonOperator, DomainBehavior, DomainChunk, DomainDocument, DomainEffect, DomainEntity, DomainField, DomainFieldType, DomainGuard, DomainPage, DomainPageAction, DomainPageSection, DomainRelationship, DomainTick, DomainToSchemaResult, DomainTransition, EFFECT_REGISTRY, EffectMapping, EffectType, FIELD_TYPE_REGISTRY, FieldCheckCondition, FieldReference, FieldTypeMapping, GUARD_REGISTRY, GuardCondition, GuardMapping, KEYWORDS, Lexer, LogicalCondition, LogicalOperator, MULTI_WORD_KEYWORDS, MappingStore, MergeResult, ParseError, ParseResult, RelationshipType, SchemaToDomainResult, SectionMapping, SourceLocation, SourceRange, Token, TokenType, UserCheckCondition, applySectionUpdate, computeSchemaHash, convertDomainToSchema, convertEntitiesToDomain, convertPagesToDomain, convertSchemaToDomain, convertTraitsToDomain, createMappingStore, deleteSection, detectChanges, domainKeywordToSchemaType, findMapping, findMappingByPath, findMappingsByType, formatBehaviorToDomain, formatBehaviorToSchema, formatDomainGuardToSchema, formatEntityToDomain, formatEntityToSchema, formatGuardConditionToDomain, formatGuardToDomain, formatGuardToSchema, formatMergeSummary, formatPageToDomain, formatPageToSchema, formatSchemaEntityToDomain, formatSchemaGuardToDomain, formatSchemaPageToDomain, formatSchemaTraitToDomain, generateDomainLanguageReference, generateSectionId, getEffectMapping, getFieldTypeMapping, getGuardMapping, getRegisteredEffects, getRegisteredFieldTypes, getRegisteredGuards, getRegistryStats, getSchemaPath, hasSchemaChanged, isEffectRegistered, isFieldTypeRegistered, isGuardRegistered, mergeDomainChunks, parseBehavior, parseDomainEffect, parseDomainEffects, parseDomainGuard, parseEntity, parseGuard, parsePage, parseSectionId, removeMapping, resolveConflict, schemaEntityToDomainEntity, schemaPageToDomainPage, schemaTraitToDomainBehavior, schemaTypeToDomainKeyword, tokenize, updateMappingRange, updateSchemaHash, upsertMapping, validateDomainChunk } from './domain-language/index.js';
7
- export { C as ComposeBehaviorsInput, a as ComposeBehaviorsResult, E as EventWiringEntry, L as LayoutStrategy, b as applyEventWiring, c as composeBehaviors, d as detectLayoutStrategy } from './compose-behaviors-D2vPjRpX.js';
6
+ export { ASTNode, ComparisonCondition, ComparisonOperator, DomainBehavior, DomainChunk, DomainDocument, DomainEffect, DomainEntity, DomainField, DomainFieldDefault, DomainFieldItems, DomainFieldType, DomainGuard, DomainPage, DomainPageAction, DomainPageSection, DomainRelationship, DomainTick, DomainToSchemaResult, DomainTransition, EFFECT_REGISTRY, EffectMapping, EffectType, FIELD_TYPE_REGISTRY, FactoryEntitySignature, FactoryPageSignature, FactorySignature, FactorySignatureCatalog, FactorySignatureEntityField, FactoryTraitKind, FactoryTraitSignature, FieldCheckCondition, FieldReference, FieldTypeMapping, GUARD_REGISTRY, GuardCondition, GuardMapping, KEYWORDS, Lexer, LogicalCondition, LogicalOperator, MULTI_WORD_KEYWORDS, MappingStore, MergeResult, ParseError, ParseResult, RelationshipType, SchemaToDomainResult, SectionMapping, SourceLocation, SourceRange, Token, TokenType, UserCheckCondition, applySectionUpdate, computeSchemaHash, convertDomainToSchema, convertEntitiesToDomain, convertPagesToDomain, convertSchemaToDomain, convertTraitsToDomain, createMappingStore, deleteSection, detectChanges, domainKeywordToSchemaType, findMapping, findMappingByPath, findMappingsByType, formatBehaviorToDomain, formatBehaviorToSchema, formatDomainGuardToSchema, formatEntityToDomain, formatEntityToSchema, formatGuardConditionToDomain, formatGuardToDomain, formatGuardToSchema, formatMergeSummary, formatPageToDomain, formatPageToSchema, formatSchemaEntityToDomain, formatSchemaGuardToDomain, formatSchemaPageToDomain, formatSchemaTraitToDomain, generateDomainLanguageReference, generateSectionId, getEffectMapping, getFieldTypeMapping, getGuardMapping, getRegisteredEffects, getRegisteredFieldTypes, getRegisteredGuards, getRegistryStats, getSchemaPath, hasSchemaChanged, isEffectRegistered, isFieldTypeRegistered, isGuardRegistered, mergeDomainChunks, parseBehavior, parseDomainEffect, parseDomainEffects, parseDomainGuard, parseEntity, parseGuard, parsePage, parseSectionId, removeMapping, resolveConflict, schemaEntityToDomainEntity, schemaPageToDomainPage, schemaTraitToDomainBehavior, schemaTypeToDomainKeyword, tokenize, updateMappingRange, updateSchemaHash, upsertMapping, validateDomainChunk } from './domain-language/index.js';
7
+ export { C as ComposeBehaviorsInput, a as ComposeBehaviorsResult, E as EventWiringEntry, L as LayoutStrategy, b as applyEventWiring, c as composeBehaviors, d as detectLayoutStrategy } from './compose-behaviors-DWMFJEz3.js';
8
8
  export { PATTERN_TYPES, PatternConfig, PatternType, isValidPatternType } from '@almadar/patterns';
9
9
  export { BFSNode, BFSPathNode, EdgeWalkTransition, GraphTransition, GuardPayload, ReplayStep, ReplayTransition, StateEdge, WalkStep, buildEdgeCoveringWalk, buildGuardPayloads, buildReplayPaths, buildStateGraph, collectReachableStates, extractPayloadFieldRef, walkStatePairs } from './state-machine/index.js';
10
10
  import 'zod';
package/dist/index.js CHANGED
@@ -2693,6 +2693,7 @@ function parseEntity(text) {
2693
2693
  const tokens = lexer.tokenize();
2694
2694
  let pos = 0;
2695
2695
  const current = () => tokens[pos] || { type: "EOF" /* EOF */, value: "", line: 0, column: 0, offset: 0 };
2696
+ const peek = (offset = 0) => tokens[pos + offset] || { type: "EOF" /* EOF */, value: "", line: 0, column: 0, offset: 0 };
2696
2697
  const advance = () => tokens[pos++];
2697
2698
  const isAtEnd = () => current().type === "EOF" /* EOF */;
2698
2699
  const skip = (type) => {
@@ -2774,6 +2775,21 @@ function parseEntity(text) {
2774
2775
  }
2775
2776
  function parseSection(entity2) {
2776
2777
  const token = current();
2778
+ if (token.type === "IDENTIFIER" /* IDENTIFIER */ && peek(1).type === "COLON" /* COLON */) {
2779
+ const propName = token.value.toLowerCase();
2780
+ if (propName === "persistence") {
2781
+ advance();
2782
+ advance();
2783
+ if (current().type === "IDENTIFIER" /* IDENTIFIER */) {
2784
+ const val = current().value.toLowerCase();
2785
+ if (val === "persistent" || val === "runtime" || val === "singleton" || val === "instance" || val === "local") {
2786
+ entity2.persistence = val;
2787
+ advance();
2788
+ }
2789
+ }
2790
+ return true;
2791
+ }
2792
+ }
2777
2793
  if (token.type === "INDENT" /* INDENT */) {
2778
2794
  advance();
2779
2795
  parseIndentedFields(entity2);
@@ -3007,36 +3023,71 @@ function parseEntity(text) {
3007
3023
  };
3008
3024
  const parts = [];
3009
3025
  while (!isAtEnd() && current().type !== "NEWLINE" /* NEWLINE */) {
3010
- parts.push(current().value);
3026
+ const tok = current();
3027
+ parts.push(tok.type === "STRING" /* STRING */ ? `"${tok.value}"` : tok.value);
3011
3028
  advance();
3012
3029
  }
3013
3030
  const content = parts.join(" ").trim();
3014
- if (content.includes("|")) {
3015
- field.fieldType = "enum";
3016
- field.enumValues = content.split("|").map((v) => v.trim()).filter((v) => v);
3017
- return field;
3018
- }
3019
- const segments = content.split(",").map((s) => s.trim().toLowerCase());
3020
- for (const segment of segments) {
3021
- if (segment === "text") field.fieldType = "text";
3022
- else if (segment === "long text") field.fieldType = "long text";
3023
- else if (segment === "number") field.fieldType = "number";
3024
- else if (segment === "currency") field.fieldType = "currency";
3025
- else if (segment === "date") field.fieldType = "date";
3026
- else if (segment === "timestamp") field.fieldType = "timestamp";
3027
- else if (segment === "datetime") field.fieldType = "datetime";
3028
- else if (segment === "yes/no" || segment === "boolean") field.fieldType = "yes/no";
3029
- else if (segment === "list") field.fieldType = "list";
3030
- else if (segment === "object") field.fieldType = "object";
3031
- else if (segment === "required") field.required = true;
3032
- else if (segment === "unique") field.unique = true;
3033
- else if (segment === "auto") field.auto = true;
3034
- else if (segment.startsWith("default ")) {
3035
- field.default = parseValue(segment.slice(8));
3031
+ const segments = content.split(",").map((s) => s.trim());
3032
+ if (segments.length === 0) return field;
3033
+ const typeSpec = segments[0];
3034
+ if (typeSpec.includes("|")) {
3035
+ field.fieldType = "text";
3036
+ field.enumValues = typeSpec.split("|").map((v) => v.trim()).filter((v) => v.length > 0);
3037
+ } else {
3038
+ const lower = typeSpec.toLowerCase();
3039
+ if (lower.startsWith("list of ")) {
3040
+ field.fieldType = "list";
3041
+ field.items = { type: parseDomainFieldType(lower.slice("list of ".length).trim()) };
3042
+ } else {
3043
+ field.fieldType = parseDomainFieldType(lower);
3044
+ }
3045
+ }
3046
+ for (let i = 1; i < segments.length; i++) {
3047
+ const segment = segments[i];
3048
+ const lower = segment.toLowerCase();
3049
+ if (lower === "required") field.required = true;
3050
+ else if (lower === "unique") field.unique = true;
3051
+ else if (lower === "auto") field.auto = true;
3052
+ else if (lower.startsWith("default ")) {
3053
+ field.default = parseDefaultLiteral(segment.slice("default ".length).trim());
3036
3054
  }
3037
3055
  }
3038
3056
  return field;
3039
3057
  }
3058
+ function parseDomainFieldType(keyword) {
3059
+ if (keyword === "long text") return "long text";
3060
+ if (keyword === "text" || keyword === "string") return "text";
3061
+ if (keyword === "number" || keyword === "integer") return "number";
3062
+ if (keyword === "currency") return "currency";
3063
+ if (keyword === "date") return "date";
3064
+ if (keyword === "timestamp") return "timestamp";
3065
+ if (keyword === "datetime") return "datetime";
3066
+ if (keyword === "yes/no" || keyword === "boolean") return "yes/no";
3067
+ if (keyword === "list" || keyword === "array") return "list";
3068
+ if (keyword === "object") return "object";
3069
+ if (keyword === "enum") return "enum";
3070
+ if (keyword === "relation") return "relation";
3071
+ return "text";
3072
+ }
3073
+ function parseDefaultLiteral(text2) {
3074
+ const trimmed = text2.trim();
3075
+ if (trimmed.startsWith('"') && trimmed.endsWith('"') || trimmed.startsWith("'") && trimmed.endsWith("'")) {
3076
+ return trimmed.slice(1, -1);
3077
+ }
3078
+ if (trimmed.startsWith("[") && trimmed.endsWith("]") || trimmed.startsWith("{") && trimmed.endsWith("}")) {
3079
+ try {
3080
+ return JSON.parse(trimmed);
3081
+ } catch {
3082
+ }
3083
+ }
3084
+ if (trimmed.toLowerCase() === "true") return true;
3085
+ if (trimmed.toLowerCase() === "false") return false;
3086
+ if (trimmed.toLowerCase() === "null") return null;
3087
+ const num = Number(trimmed);
3088
+ if (!Number.isNaN(num) && trimmed !== "") return num;
3089
+ return trimmed;
3090
+ }
3040
3091
  function parseRelationship(entity2, relType) {
3041
3092
  if (current().type !== "IDENTIFIER" /* IDENTIFIER */) {
3042
3093
  return;
@@ -3107,27 +3158,32 @@ function formatEntityToDomain(entity) {
3107
3158
  return lines.join("\n");
3108
3159
  }
3109
3160
  function formatEntityToSchema(entity) {
3110
- const fields = entity.fields.map((field) => ({
3111
- name: field.name,
3112
- type: mapFieldTypeToSchema(field.fieldType),
3113
- required: field.required || void 0,
3114
- unique: field.unique || void 0,
3115
- auto: field.auto || void 0,
3116
- values: field.enumValues,
3117
- // OrbitalSchema uses 'values' not 'enumValues'
3118
- default: field.default
3119
- }));
3161
+ const fields = entity.fields.map((field) => {
3162
+ const schemaType = field.enumValues && field.enumValues.length > 0 ? mapFieldTypeToSchema(field.fieldType === "enum" ? "text" : field.fieldType) : mapFieldTypeToSchema(field.fieldType);
3163
+ const out2 = {
3164
+ name: field.name,
3165
+ type: schemaType
3166
+ };
3167
+ if (field.required) out2.required = true;
3168
+ if (field.unique) out2.unique = true;
3169
+ if (field.auto) out2.auto = true;
3170
+ if (field.enumValues && field.enumValues.length > 0) {
3171
+ out2.values = field.enumValues;
3172
+ }
3173
+ if (field.items) {
3174
+ out2.items = { type: mapFieldTypeToSchema(field.items.type) };
3175
+ }
3176
+ if (field.default !== void 0) {
3177
+ out2.default = field.default;
3178
+ }
3179
+ return out2;
3180
+ });
3120
3181
  for (const rel of entity.relationships) {
3121
3182
  if (rel.relationshipType === "belongs_to") {
3122
3183
  const fieldName = rel.alias ? toCamelCase(rel.alias) + "Id" : toCamelCase(rel.targetEntity) + "Id";
3123
3184
  fields.push({
3124
3185
  name: fieldName,
3125
3186
  type: "relation",
3126
- required: void 0,
3127
- unique: void 0,
3128
- auto: void 0,
3129
- values: void 0,
3130
- default: void 0,
3131
3187
  relation: {
3132
3188
  entity: rel.targetEntity,
3133
3189
  type: "many-to-one"
@@ -3135,13 +3191,15 @@ function formatEntityToSchema(entity) {
3135
3191
  });
3136
3192
  }
3137
3193
  }
3138
- return {
3194
+ const out = {
3139
3195
  name: entity.name,
3140
3196
  collection: toKebabCase(entity.name) + "s",
3141
- fields: fields.filter((f) => Object.keys(f).length > 0),
3142
- states: entity.states,
3143
- initialState: entity.initialState
3197
+ fields: fields.filter((f) => Object.keys(f).length > 0)
3144
3198
  };
3199
+ if (entity.states && entity.states.length > 0) out.states = entity.states;
3200
+ if (entity.initialState !== void 0) out.initialState = entity.initialState;
3201
+ if (entity.persistence !== void 0) out.persistence = entity.persistence;
3202
+ return out;
3145
3203
  }
3146
3204
  function toCamelCase(text) {
3147
3205
  return text.toLowerCase().split(/\s+/).map(
@@ -3164,14 +3222,6 @@ function startsWithVowel(text) {
3164
3222
  }
3165
3223
  return /^[aeiou]/i.test(text);
3166
3224
  }
3167
- function parseValue(text) {
3168
- text = text.trim();
3169
- if (text.toLowerCase() === "true") return true;
3170
- if (text.toLowerCase() === "false") return false;
3171
- const num = parseFloat(text);
3172
- if (!isNaN(num)) return num;
3173
- return text.replace(/^["']|["']$/g, "");
3174
- }
3175
3225
  function formatFieldType(field) {
3176
3226
  const parts = [];
3177
3227
  if (field.enumValues && field.enumValues.length > 0) {
@@ -3771,7 +3821,7 @@ function parseFieldCheck(text, ctx) {
3771
3821
  type: "field_check",
3772
3822
  field,
3773
3823
  check: "equals",
3774
- value: parseValue2(value)
3824
+ value: parseValue(value)
3775
3825
  };
3776
3826
  }
3777
3827
  }
@@ -3794,7 +3844,7 @@ function parseComparison(text, ctx) {
3794
3844
  type: "comparison",
3795
3845
  field,
3796
3846
  operator: "!=",
3797
- value: parseValue2(isNotMatch[2])
3847
+ value: parseValue(isNotMatch[2])
3798
3848
  };
3799
3849
  }
3800
3850
  }
@@ -3807,7 +3857,7 @@ function parseComparison(text, ctx) {
3807
3857
  type: "comparison",
3808
3858
  field,
3809
3859
  operator,
3810
- value: parseValue2(match[2])
3860
+ value: parseValue(match[2])
3811
3861
  };
3812
3862
  }
3813
3863
  }
@@ -3831,7 +3881,7 @@ function parseFieldReference(text, ctx) {
3831
3881
  fieldName
3832
3882
  };
3833
3883
  }
3834
- function parseValue2(text) {
3884
+ function parseValue(text) {
3835
3885
  text = text.trim();
3836
3886
  if (text.startsWith('"') && text.endsWith('"') || text.startsWith("'") && text.endsWith("'")) {
3837
3887
  return text.slice(1, -1);
@@ -4114,37 +4164,37 @@ function parseComparison2(text, ctx) {
4114
4164
  const atLeastMatch = text.match(/^(.+?)\s+is\s+at\s+least\s+(.+)$/i);
4115
4165
  if (atLeastMatch) {
4116
4166
  const field = parseFieldRef(atLeastMatch[1]);
4117
- const value = parseValue3(atLeastMatch[2]);
4167
+ const value = parseValue2(atLeastMatch[2]);
4118
4168
  return [">=", field, value];
4119
4169
  }
4120
4170
  const atMostMatch = text.match(/^(.+?)\s+is\s+at\s+most\s+(.+)$/i);
4121
4171
  if (atMostMatch) {
4122
4172
  const field = parseFieldRef(atMostMatch[1]);
4123
- const value = parseValue3(atMostMatch[2]);
4173
+ const value = parseValue2(atMostMatch[2]);
4124
4174
  return ["<=", field, value];
4125
4175
  }
4126
4176
  const greaterThanMatch = text.match(/^(.+?)\s+is\s+greater\s+than\s+(.+)$/i);
4127
4177
  if (greaterThanMatch) {
4128
4178
  const field = parseFieldRef(greaterThanMatch[1]);
4129
- const value = parseValue3(greaterThanMatch[2]);
4179
+ const value = parseValue2(greaterThanMatch[2]);
4130
4180
  return [">", field, value];
4131
4181
  }
4132
4182
  const lessThanMatch = text.match(/^(.+?)\s+is\s+less\s+than\s+(.+)$/i);
4133
4183
  if (lessThanMatch) {
4134
4184
  const field = parseFieldRef(lessThanMatch[1]);
4135
- const value = parseValue3(lessThanMatch[2]);
4185
+ const value = parseValue2(lessThanMatch[2]);
4136
4186
  return ["<", field, value];
4137
4187
  }
4138
4188
  const isNotMatch = text.match(/^(.+?)\s+is\s+not\s+(.+)$/i);
4139
4189
  if (isNotMatch) {
4140
4190
  const field = parseFieldRef(isNotMatch[1]);
4141
- const value = parseValue3(isNotMatch[2]);
4191
+ const value = parseValue2(isNotMatch[2]);
4142
4192
  return ["!=", field, value];
4143
4193
  }
4144
4194
  const isMatch = text.match(/^(.+?)\s+is\s+(.+)$/i);
4145
4195
  if (isMatch) {
4146
4196
  const field = parseFieldRef(isMatch[1]);
4147
- const value = parseValue3(isMatch[2]);
4197
+ const value = parseValue2(isMatch[2]);
4148
4198
  return ["=", field, value];
4149
4199
  }
4150
4200
  const opPatterns = [
@@ -4159,7 +4209,7 @@ function parseComparison2(text, ctx) {
4159
4209
  const match = text.match(pattern);
4160
4210
  if (match) {
4161
4211
  const left = parseFieldRef(match[1]);
4162
- const right = parseValue3(match[2]);
4212
+ const right = parseValue2(match[2]);
4163
4213
  return [op, left, right];
4164
4214
  }
4165
4215
  }
@@ -4320,7 +4370,7 @@ function parseFieldRef(text, ctx) {
4320
4370
  const fieldName = toCamelCase3(text);
4321
4371
  return `@entity.${fieldName}`;
4322
4372
  }
4323
- function parseValue3(text) {
4373
+ function parseValue2(text) {
4324
4374
  text = text.trim();
4325
4375
  if (text.startsWith('"') && text.endsWith('"') || text.startsWith("'") && text.endsWith("'")) {
4326
4376
  return text.slice(1, -1);
@@ -4368,7 +4418,7 @@ function parseEffectValue(text, ctx) {
4368
4418
  if (text.includes(".") || text.toLowerCase().startsWith("incoming ") || text.match(/^\w+'s\s+/) || /^[a-z]/.test(text)) {
4369
4419
  return parseFieldRef(text);
4370
4420
  }
4371
- return parseValue3(text);
4421
+ return parseValue2(text);
4372
4422
  }
4373
4423
  function processBindingsInObject(obj) {
4374
4424
  if (obj === null || obj === void 0) {
@@ -4626,6 +4676,18 @@ function parseBehavior(text, entityName) {
4626
4676
  }
4627
4677
  return true;
4628
4678
  }
4679
+ if (token.type === "IDENTIFIER" /* IDENTIFIER */ && token.value.toLowerCase() === "scope") {
4680
+ advance();
4681
+ skip("COLON" /* COLON */);
4682
+ if (current().type === "IDENTIFIER" /* IDENTIFIER */) {
4683
+ const val = current().value.toLowerCase();
4684
+ if (val === "instance" || val === "collection") {
4685
+ behavior2.scope = val;
4686
+ advance();
4687
+ }
4688
+ }
4689
+ return true;
4690
+ }
4629
4691
  if (token.type === "STATES" /* STATES */) {
4630
4692
  advance();
4631
4693
  skip("COLON" /* COLON */);
@@ -5117,6 +5179,9 @@ function formatBehaviorToSchema(behavior) {
5117
5179
  name: behavior.name.replace(/\s+/g, ""),
5118
5180
  description: behavior.name
5119
5181
  };
5182
+ if (behavior.scope !== void 0) {
5183
+ trait.scope = behavior.scope;
5184
+ }
5120
5185
  if (behavior.states.length > 0) {
5121
5186
  trait.stateMachine = {
5122
5187
  states: behavior.states.map((state, index) => ({
@@ -5131,21 +5196,30 @@ function formatBehaviorToSchema(behavior) {
5131
5196
  event: t.event
5132
5197
  };
5133
5198
  if (t.guards.length > 0) {
5134
- const guardExprs = t.guards.map((g) => {
5135
- if (g.raw) {
5136
- return parseDomainGuard(g.raw, behavior.entityName);
5199
+ const guardExprs = [];
5200
+ for (const g of t.guards) {
5201
+ const raw = g.raw ?? formatGuardToCondition(g);
5202
+ try {
5203
+ guardExprs.push(parseDomainGuard(raw, behavior.entityName));
5204
+ } catch {
5137
5205
  }
5138
- return parseDomainGuard(formatGuardToCondition(g), behavior.entityName);
5139
- });
5140
- transition.guard = guardExprs.length === 1 ? guardExprs[0] : ["and", ...guardExprs];
5206
+ }
5207
+ if (guardExprs.length === 1) transition.guard = guardExprs[0];
5208
+ else if (guardExprs.length > 1) transition.guard = ["and", ...guardExprs];
5141
5209
  }
5142
5210
  if (t.effects.length > 0) {
5143
- transition.effects = t.effects.map((e) => {
5211
+ const effectExprs = [];
5212
+ for (const e of t.effects) {
5144
5213
  if (e.config && "_rawSExpr" in e.config && Array.isArray(e.config._rawSExpr)) {
5145
- return e.config._rawSExpr;
5214
+ effectExprs.push(e.config._rawSExpr);
5215
+ continue;
5146
5216
  }
5147
- return parseDomainEffect(e.description, behavior.entityName);
5148
- });
5217
+ try {
5218
+ effectExprs.push(parseDomainEffect(e.description, behavior.entityName));
5219
+ } catch {
5220
+ }
5221
+ }
5222
+ if (effectExprs.length > 0) transition.effects = effectExprs;
5149
5223
  }
5150
5224
  return transition;
5151
5225
  })
@@ -5266,11 +5340,13 @@ function schemaEntityToDomainEntity(entity) {
5266
5340
  unique: field.unique || false,
5267
5341
  auto: field.auto || false
5268
5342
  };
5269
- if (fieldType === "enum") {
5270
- const enumValues = field.enumValues || field.values;
5271
- if (enumValues && enumValues.length > 0) {
5272
- domainField.enumValues = enumValues;
5273
- }
5343
+ const enumValues = field.enumValues ?? field.values;
5344
+ if (enumValues && enumValues.length > 0) {
5345
+ domainField.enumValues = enumValues;
5346
+ }
5347
+ const items = field.items;
5348
+ if (items && typeof items.type === "string") {
5349
+ domainField.items = { type: mapSchemaTypeToDomain(items.type) };
5274
5350
  }
5275
5351
  if (field.default !== void 0) {
5276
5352
  domainField.default = field.default;
@@ -5279,6 +5355,7 @@ function schemaEntityToDomainEntity(entity) {
5279
5355
  }
5280
5356
  const states = entity.states;
5281
5357
  const initialState = entity.initialState;
5358
+ const persistence = entity.persistence;
5282
5359
  return {
5283
5360
  type: "entity",
5284
5361
  name,
@@ -5286,13 +5363,17 @@ function schemaEntityToDomainEntity(entity) {
5286
5363
  fields,
5287
5364
  relationships,
5288
5365
  states,
5289
- initialState
5366
+ initialState,
5367
+ persistence
5290
5368
  };
5291
5369
  }
5292
5370
  function formatEntityText(entity) {
5293
5371
  const lines = [];
5294
5372
  const article = startsWithVowel2(entity.name) ? "An" : "A";
5295
5373
  lines.push(`${article} ${entity.name} is ${entity.description}`);
5374
+ if (entity.persistence !== void 0 && entity.persistence !== "persistent") {
5375
+ lines.push(`Persistence: ${entity.persistence}`);
5376
+ }
5296
5377
  if (entity.fields.length > 0) {
5297
5378
  lines.push("");
5298
5379
  lines.push("It has:");
@@ -5339,6 +5420,8 @@ function formatFieldType2(field) {
5339
5420
  const parts = [];
5340
5421
  if (field.enumValues && field.enumValues.length > 0) {
5341
5422
  parts.push(field.enumValues.join(" | "));
5423
+ } else if (field.fieldType === "list" && field.items) {
5424
+ parts.push(`list of ${field.items.type}`);
5342
5425
  } else {
5343
5426
  parts.push(field.fieldType);
5344
5427
  }
@@ -5346,11 +5429,17 @@ function formatFieldType2(field) {
5346
5429
  if (field.unique) parts.push("unique");
5347
5430
  if (field.auto) parts.push("auto");
5348
5431
  if (field.default !== void 0) {
5349
- const defaultStr = typeof field.default === "string" ? `"${field.default}"` : String(field.default);
5350
- parts.push(`default ${defaultStr}`);
5432
+ parts.push(`default ${formatDefaultValue(field.default)}`);
5351
5433
  }
5352
5434
  return parts.join(", ");
5353
5435
  }
5436
+ function formatDefaultValue(value) {
5437
+ if (typeof value === "string") return `"${value}"`;
5438
+ if (value === null || typeof value === "number" || typeof value === "boolean") {
5439
+ return String(value);
5440
+ }
5441
+ return JSON.stringify(value);
5442
+ }
5354
5443
  function toSpaceSeparated3(text) {
5355
5444
  return text.replace(/([a-z])([A-Z])/g, "$1 $2").toLowerCase();
5356
5445
  }
@@ -6344,6 +6433,7 @@ function schemaTraitToDomainBehavior(trait, entityName) {
6344
6433
  effects
6345
6434
  });
6346
6435
  }
6436
+ const scope = trait.scope;
6347
6437
  return {
6348
6438
  type: "behavior",
6349
6439
  name: formatBehaviorName(name),
@@ -6352,13 +6442,18 @@ function schemaTraitToDomainBehavior(trait, entityName) {
6352
6442
  initialState,
6353
6443
  transitions,
6354
6444
  ticks,
6355
- rules: []
6445
+ rules: [],
6446
+ scope
6356
6447
  };
6357
6448
  }
6358
6449
  function formatBehaviorText(behavior) {
6359
6450
  const lines = [];
6360
6451
  lines.push(behavior.name);
6361
6452
  lines.push("");
6453
+ if (behavior.scope !== void 0 && behavior.scope !== "instance") {
6454
+ lines.push(`Scope: ${behavior.scope}`);
6455
+ lines.push("");
6456
+ }
6362
6457
  if (behavior.states.length > 0) {
6363
6458
  lines.push(`States: ${behavior.states.join(", ")}`);
6364
6459
  lines.push("");
@@ -6669,7 +6764,7 @@ function parseSchemaCondition(condition, defaultEntityName) {
6669
6764
  type: "comparison",
6670
6765
  field: fieldRef,
6671
6766
  operator: comparisonMatch[2],
6672
- value: parseValue4(comparisonMatch[3])
6767
+ value: parseValue3(comparisonMatch[3])
6673
6768
  };
6674
6769
  }
6675
6770
  }
@@ -6697,7 +6792,7 @@ function parseFieldReference2(text, defaultEntityName) {
6697
6792
  }
6698
6793
  return null;
6699
6794
  }
6700
- function parseValue4(text) {
6795
+ function parseValue3(text) {
6701
6796
  text = text.trim();
6702
6797
  if (text.startsWith('"') && text.endsWith('"') || text.startsWith("'") && text.endsWith("'")) {
6703
6798
  return text.slice(1, -1);
@@ -7071,7 +7166,7 @@ function convertDomainToSchema(domainText, baseSchema) {
7071
7166
  const entity = {
7072
7167
  name: entityRecord.name,
7073
7168
  fields: entityRecord.fields || [],
7074
- persistence: "persistent"
7169
+ persistence: entityRecord.persistence ?? "persistent"
7075
7170
  };
7076
7171
  parsedEntities.push({
7077
7172
  name: result.data.name,