@almadar/core 7.15.1 → 7.17.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-B-92HhgX.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-B-92HhgX.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-p4gl4sp1.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, 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
@@ -635,6 +635,11 @@ var TraitReferenceSchema = z.object({
635
635
  }
636
636
  );
637
637
  var TraitScopeSchema = z.enum(["instance", "collection"]);
638
+ var SourceBehaviorMetadataSchema = z.object({
639
+ behavior: z.string().min(1),
640
+ alias: z.string().min(1),
641
+ originalName: z.string().min(1)
642
+ });
638
643
  var TraitSchema = z.object({
639
644
  name: z.string().min(1),
640
645
  description: z.string().optional(),
@@ -650,7 +655,9 @@ var TraitSchema = z.object({
650
655
  emits: z.array(TraitEventContractSchema).optional(),
651
656
  listens: z.array(TraitEventListenerSchema).optional(),
652
657
  ui: z.record(z.unknown()).optional(),
653
- config: DeclaredTraitConfigSchema.optional()
658
+ config: DeclaredTraitConfigSchema.optional(),
659
+ sourceBehavior: SourceBehaviorMetadataSchema.optional(),
660
+ sourceEntityDefinition: EntitySchema.optional()
654
661
  });
655
662
  var TraitRefSchema = z.union([
656
663
  z.string().min(1),
@@ -2686,6 +2693,7 @@ function parseEntity(text) {
2686
2693
  const tokens = lexer.tokenize();
2687
2694
  let pos = 0;
2688
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 };
2689
2697
  const advance = () => tokens[pos++];
2690
2698
  const isAtEnd = () => current().type === "EOF" /* EOF */;
2691
2699
  const skip = (type) => {
@@ -2767,6 +2775,21 @@ function parseEntity(text) {
2767
2775
  }
2768
2776
  function parseSection(entity2) {
2769
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
+ }
2770
2793
  if (token.type === "INDENT" /* INDENT */) {
2771
2794
  advance();
2772
2795
  parseIndentedFields(entity2);
@@ -3000,36 +3023,71 @@ function parseEntity(text) {
3000
3023
  };
3001
3024
  const parts = [];
3002
3025
  while (!isAtEnd() && current().type !== "NEWLINE" /* NEWLINE */) {
3003
- parts.push(current().value);
3026
+ const tok = current();
3027
+ parts.push(tok.type === "STRING" /* STRING */ ? `"${tok.value}"` : tok.value);
3004
3028
  advance();
3005
3029
  }
3006
3030
  const content = parts.join(" ").trim();
3007
- if (content.includes("|")) {
3008
- field.fieldType = "enum";
3009
- field.enumValues = content.split("|").map((v) => v.trim()).filter((v) => v);
3010
- return field;
3011
- }
3012
- const segments = content.split(",").map((s) => s.trim().toLowerCase());
3013
- for (const segment of segments) {
3014
- if (segment === "text") field.fieldType = "text";
3015
- else if (segment === "long text") field.fieldType = "long text";
3016
- else if (segment === "number") field.fieldType = "number";
3017
- else if (segment === "currency") field.fieldType = "currency";
3018
- else if (segment === "date") field.fieldType = "date";
3019
- else if (segment === "timestamp") field.fieldType = "timestamp";
3020
- else if (segment === "datetime") field.fieldType = "datetime";
3021
- else if (segment === "yes/no" || segment === "boolean") field.fieldType = "yes/no";
3022
- else if (segment === "list") field.fieldType = "list";
3023
- else if (segment === "object") field.fieldType = "object";
3024
- else if (segment === "required") field.required = true;
3025
- else if (segment === "unique") field.unique = true;
3026
- else if (segment === "auto") field.auto = true;
3027
- else if (segment.startsWith("default ")) {
3028
- 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());
3029
3054
  }
3030
3055
  }
3031
3056
  return field;
3032
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
+ }
3033
3091
  function parseRelationship(entity2, relType) {
3034
3092
  if (current().type !== "IDENTIFIER" /* IDENTIFIER */) {
3035
3093
  return;
@@ -3100,27 +3158,32 @@ function formatEntityToDomain(entity) {
3100
3158
  return lines.join("\n");
3101
3159
  }
3102
3160
  function formatEntityToSchema(entity) {
3103
- const fields = entity.fields.map((field) => ({
3104
- name: field.name,
3105
- type: mapFieldTypeToSchema(field.fieldType),
3106
- required: field.required || void 0,
3107
- unique: field.unique || void 0,
3108
- auto: field.auto || void 0,
3109
- values: field.enumValues,
3110
- // OrbitalSchema uses 'values' not 'enumValues'
3111
- default: field.default
3112
- }));
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
+ });
3113
3181
  for (const rel of entity.relationships) {
3114
3182
  if (rel.relationshipType === "belongs_to") {
3115
3183
  const fieldName = rel.alias ? toCamelCase(rel.alias) + "Id" : toCamelCase(rel.targetEntity) + "Id";
3116
3184
  fields.push({
3117
3185
  name: fieldName,
3118
3186
  type: "relation",
3119
- required: void 0,
3120
- unique: void 0,
3121
- auto: void 0,
3122
- values: void 0,
3123
- default: void 0,
3124
3187
  relation: {
3125
3188
  entity: rel.targetEntity,
3126
3189
  type: "many-to-one"
@@ -3128,13 +3191,15 @@ function formatEntityToSchema(entity) {
3128
3191
  });
3129
3192
  }
3130
3193
  }
3131
- return {
3194
+ const out = {
3132
3195
  name: entity.name,
3133
3196
  collection: toKebabCase(entity.name) + "s",
3134
- fields: fields.filter((f) => Object.keys(f).length > 0),
3135
- states: entity.states,
3136
- initialState: entity.initialState
3197
+ fields: fields.filter((f) => Object.keys(f).length > 0)
3137
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;
3138
3203
  }
3139
3204
  function toCamelCase(text) {
3140
3205
  return text.toLowerCase().split(/\s+/).map(
@@ -3157,14 +3222,6 @@ function startsWithVowel(text) {
3157
3222
  }
3158
3223
  return /^[aeiou]/i.test(text);
3159
3224
  }
3160
- function parseValue(text) {
3161
- text = text.trim();
3162
- if (text.toLowerCase() === "true") return true;
3163
- if (text.toLowerCase() === "false") return false;
3164
- const num = parseFloat(text);
3165
- if (!isNaN(num)) return num;
3166
- return text.replace(/^["']|["']$/g, "");
3167
- }
3168
3225
  function formatFieldType(field) {
3169
3226
  const parts = [];
3170
3227
  if (field.enumValues && field.enumValues.length > 0) {
@@ -3764,7 +3821,7 @@ function parseFieldCheck(text, ctx) {
3764
3821
  type: "field_check",
3765
3822
  field,
3766
3823
  check: "equals",
3767
- value: parseValue2(value)
3824
+ value: parseValue(value)
3768
3825
  };
3769
3826
  }
3770
3827
  }
@@ -3787,7 +3844,7 @@ function parseComparison(text, ctx) {
3787
3844
  type: "comparison",
3788
3845
  field,
3789
3846
  operator: "!=",
3790
- value: parseValue2(isNotMatch[2])
3847
+ value: parseValue(isNotMatch[2])
3791
3848
  };
3792
3849
  }
3793
3850
  }
@@ -3800,7 +3857,7 @@ function parseComparison(text, ctx) {
3800
3857
  type: "comparison",
3801
3858
  field,
3802
3859
  operator,
3803
- value: parseValue2(match[2])
3860
+ value: parseValue(match[2])
3804
3861
  };
3805
3862
  }
3806
3863
  }
@@ -3824,7 +3881,7 @@ function parseFieldReference(text, ctx) {
3824
3881
  fieldName
3825
3882
  };
3826
3883
  }
3827
- function parseValue2(text) {
3884
+ function parseValue(text) {
3828
3885
  text = text.trim();
3829
3886
  if (text.startsWith('"') && text.endsWith('"') || text.startsWith("'") && text.endsWith("'")) {
3830
3887
  return text.slice(1, -1);
@@ -4107,37 +4164,37 @@ function parseComparison2(text, ctx) {
4107
4164
  const atLeastMatch = text.match(/^(.+?)\s+is\s+at\s+least\s+(.+)$/i);
4108
4165
  if (atLeastMatch) {
4109
4166
  const field = parseFieldRef(atLeastMatch[1]);
4110
- const value = parseValue3(atLeastMatch[2]);
4167
+ const value = parseValue2(atLeastMatch[2]);
4111
4168
  return [">=", field, value];
4112
4169
  }
4113
4170
  const atMostMatch = text.match(/^(.+?)\s+is\s+at\s+most\s+(.+)$/i);
4114
4171
  if (atMostMatch) {
4115
4172
  const field = parseFieldRef(atMostMatch[1]);
4116
- const value = parseValue3(atMostMatch[2]);
4173
+ const value = parseValue2(atMostMatch[2]);
4117
4174
  return ["<=", field, value];
4118
4175
  }
4119
4176
  const greaterThanMatch = text.match(/^(.+?)\s+is\s+greater\s+than\s+(.+)$/i);
4120
4177
  if (greaterThanMatch) {
4121
4178
  const field = parseFieldRef(greaterThanMatch[1]);
4122
- const value = parseValue3(greaterThanMatch[2]);
4179
+ const value = parseValue2(greaterThanMatch[2]);
4123
4180
  return [">", field, value];
4124
4181
  }
4125
4182
  const lessThanMatch = text.match(/^(.+?)\s+is\s+less\s+than\s+(.+)$/i);
4126
4183
  if (lessThanMatch) {
4127
4184
  const field = parseFieldRef(lessThanMatch[1]);
4128
- const value = parseValue3(lessThanMatch[2]);
4185
+ const value = parseValue2(lessThanMatch[2]);
4129
4186
  return ["<", field, value];
4130
4187
  }
4131
4188
  const isNotMatch = text.match(/^(.+?)\s+is\s+not\s+(.+)$/i);
4132
4189
  if (isNotMatch) {
4133
4190
  const field = parseFieldRef(isNotMatch[1]);
4134
- const value = parseValue3(isNotMatch[2]);
4191
+ const value = parseValue2(isNotMatch[2]);
4135
4192
  return ["!=", field, value];
4136
4193
  }
4137
4194
  const isMatch = text.match(/^(.+?)\s+is\s+(.+)$/i);
4138
4195
  if (isMatch) {
4139
4196
  const field = parseFieldRef(isMatch[1]);
4140
- const value = parseValue3(isMatch[2]);
4197
+ const value = parseValue2(isMatch[2]);
4141
4198
  return ["=", field, value];
4142
4199
  }
4143
4200
  const opPatterns = [
@@ -4152,7 +4209,7 @@ function parseComparison2(text, ctx) {
4152
4209
  const match = text.match(pattern);
4153
4210
  if (match) {
4154
4211
  const left = parseFieldRef(match[1]);
4155
- const right = parseValue3(match[2]);
4212
+ const right = parseValue2(match[2]);
4156
4213
  return [op, left, right];
4157
4214
  }
4158
4215
  }
@@ -4313,7 +4370,7 @@ function parseFieldRef(text, ctx) {
4313
4370
  const fieldName = toCamelCase3(text);
4314
4371
  return `@entity.${fieldName}`;
4315
4372
  }
4316
- function parseValue3(text) {
4373
+ function parseValue2(text) {
4317
4374
  text = text.trim();
4318
4375
  if (text.startsWith('"') && text.endsWith('"') || text.startsWith("'") && text.endsWith("'")) {
4319
4376
  return text.slice(1, -1);
@@ -4361,7 +4418,7 @@ function parseEffectValue(text, ctx) {
4361
4418
  if (text.includes(".") || text.toLowerCase().startsWith("incoming ") || text.match(/^\w+'s\s+/) || /^[a-z]/.test(text)) {
4362
4419
  return parseFieldRef(text);
4363
4420
  }
4364
- return parseValue3(text);
4421
+ return parseValue2(text);
4365
4422
  }
4366
4423
  function processBindingsInObject(obj) {
4367
4424
  if (obj === null || obj === void 0) {
@@ -4619,6 +4676,18 @@ function parseBehavior(text, entityName) {
4619
4676
  }
4620
4677
  return true;
4621
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
+ }
4622
4691
  if (token.type === "STATES" /* STATES */) {
4623
4692
  advance();
4624
4693
  skip("COLON" /* COLON */);
@@ -5110,6 +5179,9 @@ function formatBehaviorToSchema(behavior) {
5110
5179
  name: behavior.name.replace(/\s+/g, ""),
5111
5180
  description: behavior.name
5112
5181
  };
5182
+ if (behavior.scope !== void 0) {
5183
+ trait.scope = behavior.scope;
5184
+ }
5113
5185
  if (behavior.states.length > 0) {
5114
5186
  trait.stateMachine = {
5115
5187
  states: behavior.states.map((state, index) => ({
@@ -5124,21 +5196,30 @@ function formatBehaviorToSchema(behavior) {
5124
5196
  event: t.event
5125
5197
  };
5126
5198
  if (t.guards.length > 0) {
5127
- const guardExprs = t.guards.map((g) => {
5128
- if (g.raw) {
5129
- 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 {
5130
5205
  }
5131
- return parseDomainGuard(formatGuardToCondition(g), behavior.entityName);
5132
- });
5133
- 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];
5134
5209
  }
5135
5210
  if (t.effects.length > 0) {
5136
- transition.effects = t.effects.map((e) => {
5211
+ const effectExprs = [];
5212
+ for (const e of t.effects) {
5137
5213
  if (e.config && "_rawSExpr" in e.config && Array.isArray(e.config._rawSExpr)) {
5138
- return e.config._rawSExpr;
5214
+ effectExprs.push(e.config._rawSExpr);
5215
+ continue;
5139
5216
  }
5140
- return parseDomainEffect(e.description, behavior.entityName);
5141
- });
5217
+ try {
5218
+ effectExprs.push(parseDomainEffect(e.description, behavior.entityName));
5219
+ } catch {
5220
+ }
5221
+ }
5222
+ if (effectExprs.length > 0) transition.effects = effectExprs;
5142
5223
  }
5143
5224
  return transition;
5144
5225
  })
@@ -5259,11 +5340,13 @@ function schemaEntityToDomainEntity(entity) {
5259
5340
  unique: field.unique || false,
5260
5341
  auto: field.auto || false
5261
5342
  };
5262
- if (fieldType === "enum") {
5263
- const enumValues = field.enumValues || field.values;
5264
- if (enumValues && enumValues.length > 0) {
5265
- domainField.enumValues = enumValues;
5266
- }
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) };
5267
5350
  }
5268
5351
  if (field.default !== void 0) {
5269
5352
  domainField.default = field.default;
@@ -5272,6 +5355,7 @@ function schemaEntityToDomainEntity(entity) {
5272
5355
  }
5273
5356
  const states = entity.states;
5274
5357
  const initialState = entity.initialState;
5358
+ const persistence = entity.persistence;
5275
5359
  return {
5276
5360
  type: "entity",
5277
5361
  name,
@@ -5279,13 +5363,17 @@ function schemaEntityToDomainEntity(entity) {
5279
5363
  fields,
5280
5364
  relationships,
5281
5365
  states,
5282
- initialState
5366
+ initialState,
5367
+ persistence
5283
5368
  };
5284
5369
  }
5285
5370
  function formatEntityText(entity) {
5286
5371
  const lines = [];
5287
5372
  const article = startsWithVowel2(entity.name) ? "An" : "A";
5288
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
+ }
5289
5377
  if (entity.fields.length > 0) {
5290
5378
  lines.push("");
5291
5379
  lines.push("It has:");
@@ -5332,6 +5420,8 @@ function formatFieldType2(field) {
5332
5420
  const parts = [];
5333
5421
  if (field.enumValues && field.enumValues.length > 0) {
5334
5422
  parts.push(field.enumValues.join(" | "));
5423
+ } else if (field.fieldType === "list" && field.items) {
5424
+ parts.push(`list of ${field.items.type}`);
5335
5425
  } else {
5336
5426
  parts.push(field.fieldType);
5337
5427
  }
@@ -5339,11 +5429,17 @@ function formatFieldType2(field) {
5339
5429
  if (field.unique) parts.push("unique");
5340
5430
  if (field.auto) parts.push("auto");
5341
5431
  if (field.default !== void 0) {
5342
- const defaultStr = typeof field.default === "string" ? `"${field.default}"` : String(field.default);
5343
- parts.push(`default ${defaultStr}`);
5432
+ parts.push(`default ${formatDefaultValue(field.default)}`);
5344
5433
  }
5345
5434
  return parts.join(", ");
5346
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
+ }
5347
5443
  function toSpaceSeparated3(text) {
5348
5444
  return text.replace(/([a-z])([A-Z])/g, "$1 $2").toLowerCase();
5349
5445
  }
@@ -6337,6 +6433,7 @@ function schemaTraitToDomainBehavior(trait, entityName) {
6337
6433
  effects
6338
6434
  });
6339
6435
  }
6436
+ const scope = trait.scope;
6340
6437
  return {
6341
6438
  type: "behavior",
6342
6439
  name: formatBehaviorName(name),
@@ -6345,13 +6442,18 @@ function schemaTraitToDomainBehavior(trait, entityName) {
6345
6442
  initialState,
6346
6443
  transitions,
6347
6444
  ticks,
6348
- rules: []
6445
+ rules: [],
6446
+ scope
6349
6447
  };
6350
6448
  }
6351
6449
  function formatBehaviorText(behavior) {
6352
6450
  const lines = [];
6353
6451
  lines.push(behavior.name);
6354
6452
  lines.push("");
6453
+ if (behavior.scope !== void 0 && behavior.scope !== "instance") {
6454
+ lines.push(`Scope: ${behavior.scope}`);
6455
+ lines.push("");
6456
+ }
6355
6457
  if (behavior.states.length > 0) {
6356
6458
  lines.push(`States: ${behavior.states.join(", ")}`);
6357
6459
  lines.push("");
@@ -6662,7 +6764,7 @@ function parseSchemaCondition(condition, defaultEntityName) {
6662
6764
  type: "comparison",
6663
6765
  field: fieldRef,
6664
6766
  operator: comparisonMatch[2],
6665
- value: parseValue4(comparisonMatch[3])
6767
+ value: parseValue3(comparisonMatch[3])
6666
6768
  };
6667
6769
  }
6668
6770
  }
@@ -6690,7 +6792,7 @@ function parseFieldReference2(text, defaultEntityName) {
6690
6792
  }
6691
6793
  return null;
6692
6794
  }
6693
- function parseValue4(text) {
6795
+ function parseValue3(text) {
6694
6796
  text = text.trim();
6695
6797
  if (text.startsWith('"') && text.endsWith('"') || text.startsWith("'") && text.endsWith("'")) {
6696
6798
  return text.slice(1, -1);
@@ -7064,7 +7166,7 @@ function convertDomainToSchema(domainText, baseSchema) {
7064
7166
  const entity = {
7065
7167
  name: entityRecord.name,
7066
7168
  fields: entityRecord.fields || [],
7067
- persistence: "persistent"
7169
+ persistence: entityRecord.persistence ?? "persistent"
7068
7170
  };
7069
7171
  parsedEntities.push({
7070
7172
  name: result.data.name,