@almadar/core 7.22.0 → 7.24.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/domain-language/index.d.ts +70 -3
- package/dist/domain-language/index.js +162 -1
- package/dist/domain-language/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +162 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { A as AGENT_DOMAIN_CATEGORIES, a as ALLOWED_CUSTOM_COMPONENTS, b as Agen
|
|
|
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, CallSiteDiff, ComparisonCondition, ComparisonOperator, DomainBehavior, DomainChunk, DomainDocument, DomainEffect, DomainEntity, DomainField, DomainFieldDefault, DomainFieldItems, DomainFieldType, DomainGuard, DomainMutation, DomainPage, DomainPageAction, DomainPageSection, DomainRelationship, DomainTick, DomainToSchemaResult, DomainTransition, EFFECT_REGISTRY, EffectMapping, EffectType, FIELD_TYPE_REGISTRY, FactoryCallSite, FactoryCallSiteParams, FactoryEntitySignature, FactoryPageSignature, FactoryParamValue, FactorySignature, FactorySignatureCatalog, FactorySignatureEntityField, FactoryTraitSignature, FieldCheckCondition, FieldReference, FieldTypeMapping, GUARD_REGISTRY, GuardCondition, GuardMapping, KEYWORDS, Lexer, LogicalCondition, LogicalOperator, MULTI_WORD_KEYWORDS, MappingStore, MergeResult, ParseError, ParseResult, PresentationNavItem, PresentationOverlay, RelationshipType, SchemaFieldType, SchemaToDomainResult, SectionMapping, SourceLocation, SourceRange, Token, TokenType, TranslationBinding, TranslationResult, TranslationWarning, UserCheckCondition, applyMutation, applySectionUpdate, computeSchemaHash, convertDomainToSchema, convertEntitiesToDomain, convertPagesToDomain, convertSchemaToDomain, convertTraitsToDomain, createMappingStore, deleteSection, detectChanges, diffFactoryCalls, 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, translateDomainToParams, updateMappingRange, updateSchemaHash, upsertMapping, validateDomainChunk } from './domain-language/index.js';
|
|
6
|
+
export { ASTNode, CallSiteDiff, ComparisonCondition, ComparisonOperator, DomainBehavior, DomainChunk, DomainDocument, DomainEffect, DomainEntity, DomainField, DomainFieldDefault, DomainFieldItems, DomainFieldType, DomainGuard, DomainMutation, DomainPage, DomainPageAction, DomainPageSection, DomainRelationship, DomainRuleOverlayEntry, DomainTick, DomainToSchemaResult, DomainTransition, EFFECT_REGISTRY, EffectMapping, EffectType, FIELD_TYPE_REGISTRY, FactoryCallSite, FactoryCallSiteParams, FactoryEntitySignature, FactoryPageSignature, FactoryParamValue, FactorySignature, FactorySignatureCatalog, FactorySignatureEntityField, FactoryTraitSignature, FieldCheckCondition, FieldReference, FieldTypeMapping, GUARD_REGISTRY, GuardCondition, GuardMapping, KEYWORDS, Lexer, LogicalCondition, LogicalOperator, MULTI_WORD_KEYWORDS, MappingStore, MergeResult, OwnershipOverlayEntry, ParseError, ParseResult, PresentationNavItem, PresentationOverlay, RelationshipType, RuleOverlay, SchemaFieldType, SchemaToDomainResult, SectionMapping, SourceLocation, SourceRange, Token, TokenType, TraitOverlay, TraitOverlayEntry, TraitOverlayListener, TranslationBinding, TranslationResult, TranslationWarning, UserCheckCondition, applyMutation, applySectionUpdate, computeSchemaHash, convertDomainToSchema, convertEntitiesToDomain, convertPagesToDomain, convertSchemaToDomain, convertTraitsToDomain, createMappingStore, deleteSection, detectChanges, diffFactoryCalls, 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, translateDomainToParams, updateMappingRange, updateSchemaHash, upsertMapping, validateDomainChunk } from './domain-language/index.js';
|
|
7
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-CHAMivlZ.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';
|
package/dist/index.js
CHANGED
|
@@ -7705,7 +7705,7 @@ var UI_SLOTS2 = [
|
|
|
7705
7705
|
];
|
|
7706
7706
|
|
|
7707
7707
|
// src/domain-language/sync/translate-domain-to-params.ts
|
|
7708
|
-
function translateDomainToParams(binding, signature, presentation) {
|
|
7708
|
+
function translateDomainToParams(binding, signature, presentation, ruleOverlay, traitOverlay, catalog) {
|
|
7709
7709
|
const warnings = [];
|
|
7710
7710
|
const params = {};
|
|
7711
7711
|
applyEntityName(binding.entity, signature, params);
|
|
@@ -7713,6 +7713,8 @@ function translateDomainToParams(binding, signature, presentation) {
|
|
|
7713
7713
|
applyPersistence(binding.entity, signature, params, warnings);
|
|
7714
7714
|
applyPagePaths(binding.pages ?? [], signature, params, warnings);
|
|
7715
7715
|
applyPresentation(presentation, signature, params, warnings);
|
|
7716
|
+
applyTraitOverlay(traitOverlay, signature, params, warnings);
|
|
7717
|
+
applyRuleOverlay(ruleOverlay, signature, binding, catalog, params, warnings);
|
|
7716
7718
|
return {
|
|
7717
7719
|
callSite: {
|
|
7718
7720
|
organism: signature.organism,
|
|
@@ -7801,6 +7803,165 @@ function applyPresentation(overlay, signature, params, warnings) {
|
|
|
7801
7803
|
}
|
|
7802
7804
|
};
|
|
7803
7805
|
}
|
|
7806
|
+
function applyTraitOverlay(overlay, signature, params, warnings) {
|
|
7807
|
+
if (!overlay) return;
|
|
7808
|
+
const traitsByName = new Map(signature.traits.map((t) => [t.name, t]));
|
|
7809
|
+
for (const [traitName, entry] of Object.entries(overlay)) {
|
|
7810
|
+
const trait = traitsByName.get(traitName);
|
|
7811
|
+
if (!trait) {
|
|
7812
|
+
warnings.push({
|
|
7813
|
+
field: `traitOverlay.${traitName}`,
|
|
7814
|
+
reason: `factory signature has no trait named "${traitName}"`
|
|
7815
|
+
});
|
|
7816
|
+
continue;
|
|
7817
|
+
}
|
|
7818
|
+
mergeTraitOverride(traitName, entry, trait, params, warnings);
|
|
7819
|
+
}
|
|
7820
|
+
}
|
|
7821
|
+
function mergeTraitOverride(traitName, entry, trait, params, warnings) {
|
|
7822
|
+
const advertised = new Set(trait.overridableConfigKeys);
|
|
7823
|
+
const existing = params.traitOverrides?.[traitName] ?? {};
|
|
7824
|
+
const existingConfig = existing.config ?? {};
|
|
7825
|
+
const mergedConfig = { ...existingConfig };
|
|
7826
|
+
if (entry.config) {
|
|
7827
|
+
for (const [k, v] of Object.entries(entry.config)) {
|
|
7828
|
+
if (!advertised.has(k)) {
|
|
7829
|
+
warnings.push({
|
|
7830
|
+
field: `traitOverlay.${traitName}.config.${k}`,
|
|
7831
|
+
reason: `trait does not advertise config key "${k}" (overridableConfigKeys: [${trait.overridableConfigKeys.join(", ")}])`
|
|
7832
|
+
});
|
|
7833
|
+
continue;
|
|
7834
|
+
}
|
|
7835
|
+
mergedConfig[k] = v;
|
|
7836
|
+
}
|
|
7837
|
+
}
|
|
7838
|
+
const next = {
|
|
7839
|
+
...existing,
|
|
7840
|
+
...Object.keys(mergedConfig).length > 0 ? { config: mergedConfig } : {}
|
|
7841
|
+
};
|
|
7842
|
+
params.traitOverrides = {
|
|
7843
|
+
...params.traitOverrides,
|
|
7844
|
+
[traitName]: next
|
|
7845
|
+
};
|
|
7846
|
+
}
|
|
7847
|
+
function applyRuleOverlay(overlay, signature, binding, catalog, params, warnings) {
|
|
7848
|
+
if (!overlay) return;
|
|
7849
|
+
for (const rule of overlay.rules) {
|
|
7850
|
+
if (!ruleAppliesToBinding(rule, binding)) continue;
|
|
7851
|
+
if (!catalog) {
|
|
7852
|
+
warnings.push({
|
|
7853
|
+
field: `ruleOverlay.rules.${rule.id}`,
|
|
7854
|
+
reason: "rule overlay supplied without a catalog \u2014 capability lookup requires one"
|
|
7855
|
+
});
|
|
7856
|
+
continue;
|
|
7857
|
+
}
|
|
7858
|
+
const match = findTraitByCapability(catalog, rule.capability);
|
|
7859
|
+
if (!match) {
|
|
7860
|
+
warnings.push({
|
|
7861
|
+
field: `ruleOverlay.rules.${rule.id}`,
|
|
7862
|
+
reason: `no trait in the catalog advertises capability "${rule.capability}"`
|
|
7863
|
+
});
|
|
7864
|
+
continue;
|
|
7865
|
+
}
|
|
7866
|
+
appendRuleExtraTrait(rule, match, binding, params);
|
|
7867
|
+
if (rule.config) {
|
|
7868
|
+
threadRuleConfig(rule, match.trait, params, warnings);
|
|
7869
|
+
}
|
|
7870
|
+
}
|
|
7871
|
+
if (overlay.ownership) {
|
|
7872
|
+
for (const entry of overlay.ownership) {
|
|
7873
|
+
if (entry.entity !== binding.entity.name) continue;
|
|
7874
|
+
applyOwnership(entry, params, signature, catalog, warnings);
|
|
7875
|
+
}
|
|
7876
|
+
}
|
|
7877
|
+
}
|
|
7878
|
+
function ruleAppliesToBinding(rule, binding) {
|
|
7879
|
+
if (rule.appliesTo.length === 0) return true;
|
|
7880
|
+
return rule.appliesTo.includes(binding.entity.name);
|
|
7881
|
+
}
|
|
7882
|
+
function findTraitByCapability(catalog, capability) {
|
|
7883
|
+
for (const sig of catalog) {
|
|
7884
|
+
for (const trait of sig.traits) {
|
|
7885
|
+
if (trait.capabilities.includes(capability)) {
|
|
7886
|
+
return { signature: sig, trait };
|
|
7887
|
+
}
|
|
7888
|
+
}
|
|
7889
|
+
}
|
|
7890
|
+
return void 0;
|
|
7891
|
+
}
|
|
7892
|
+
function appendRuleExtraTrait(rule, match, binding, params) {
|
|
7893
|
+
const fromPath = `std/behaviors/${match.signature.organism}`;
|
|
7894
|
+
const alias = organismToAlias(match.signature.organism);
|
|
7895
|
+
const ref2 = {
|
|
7896
|
+
from: fromPath,
|
|
7897
|
+
ref: `${alias}.traits.${match.trait.name}`,
|
|
7898
|
+
linkedEntity: binding.entity.name
|
|
7899
|
+
};
|
|
7900
|
+
const existing = params.extraTraits ?? [];
|
|
7901
|
+
params.extraTraits = [...existing, ref2];
|
|
7902
|
+
}
|
|
7903
|
+
function organismToAlias(organism) {
|
|
7904
|
+
const trimmed = organism.startsWith("std-") ? organism.slice(4) : organism;
|
|
7905
|
+
return trimmed.split("-").filter((s) => s.length > 0).map((s) => s.charAt(0).toUpperCase() + s.slice(1)).join("");
|
|
7906
|
+
}
|
|
7907
|
+
function threadRuleConfig(rule, trait, params, warnings) {
|
|
7908
|
+
if (!rule.config) return;
|
|
7909
|
+
const advertised = new Set(trait.overridableConfigKeys);
|
|
7910
|
+
const existing = params.traitOverrides?.[trait.name] ?? {};
|
|
7911
|
+
const existingConfig = existing.config ?? {};
|
|
7912
|
+
const merged = { ...existingConfig };
|
|
7913
|
+
for (const [k, v] of Object.entries(rule.config)) {
|
|
7914
|
+
if (!advertised.has(k)) {
|
|
7915
|
+
warnings.push({
|
|
7916
|
+
field: `ruleOverlay.rules.${rule.id}.config.${k}`,
|
|
7917
|
+
reason: `trait "${trait.name}" does not advertise config key "${k}"`
|
|
7918
|
+
});
|
|
7919
|
+
continue;
|
|
7920
|
+
}
|
|
7921
|
+
merged[k] = v;
|
|
7922
|
+
}
|
|
7923
|
+
if (Object.keys(merged).length > 0) {
|
|
7924
|
+
params.traitOverrides = {
|
|
7925
|
+
...params.traitOverrides,
|
|
7926
|
+
[trait.name]: { ...existing, config: merged }
|
|
7927
|
+
};
|
|
7928
|
+
}
|
|
7929
|
+
}
|
|
7930
|
+
function applyOwnership(entry, params, signature, catalog, warnings) {
|
|
7931
|
+
const local = signature.traits.find(
|
|
7932
|
+
(t) => t.overridableConfigKeys.includes("ownerField")
|
|
7933
|
+
);
|
|
7934
|
+
if (local) {
|
|
7935
|
+
writeOwnerField(local.name, entry.ownerField, params);
|
|
7936
|
+
return;
|
|
7937
|
+
}
|
|
7938
|
+
if (catalog) {
|
|
7939
|
+
for (const sig of catalog) {
|
|
7940
|
+
const trait = sig.traits.find(
|
|
7941
|
+
(t) => t.overridableConfigKeys.includes("ownerField")
|
|
7942
|
+
);
|
|
7943
|
+
if (trait) {
|
|
7944
|
+
writeOwnerField(trait.name, entry.ownerField, params);
|
|
7945
|
+
return;
|
|
7946
|
+
}
|
|
7947
|
+
}
|
|
7948
|
+
}
|
|
7949
|
+
warnings.push({
|
|
7950
|
+
field: `ruleOverlay.ownership.${entry.entity}`,
|
|
7951
|
+
reason: "no trait in the bound signature or catalog advertises an `ownerField` config knob"
|
|
7952
|
+
});
|
|
7953
|
+
}
|
|
7954
|
+
function writeOwnerField(traitName, ownerField, params) {
|
|
7955
|
+
const existing = params.traitOverrides?.[traitName] ?? {};
|
|
7956
|
+
const existingConfig = existing.config ?? {};
|
|
7957
|
+
params.traitOverrides = {
|
|
7958
|
+
...params.traitOverrides,
|
|
7959
|
+
[traitName]: {
|
|
7960
|
+
...existing,
|
|
7961
|
+
config: { ...existingConfig, ownerField }
|
|
7962
|
+
}
|
|
7963
|
+
};
|
|
7964
|
+
}
|
|
7804
7965
|
function lowerField(f) {
|
|
7805
7966
|
const schemaType = DOMAIN_TO_SCHEMA_FIELD_TYPE[f.fieldType];
|
|
7806
7967
|
if (!schemaType) return void 0;
|