Files
UHD_Media_Tool/packages/domain/src/slot/index.ts
T
rootandClaude Opus 5.5 e994a7bcfa feat(domain): rule groups — MP rule-string parser/serializer, builtin keywords, chain evaluation wired into slot
- rules/: RuleExpr tree, '>' layers with ! & | and parens, position-aware errors
  (unknown atom with suggestions, unsupported music atoms, parens, empty layer)
- builtin keyword table aligned with MP BUILTIN_RULE_SET; field-based judgement
  where parsed fields exist, MP regex otherwise; custom atoms (MP 7 fields)
- chain evaluation: hard excludes, ladder pri 100-k, groups AND-ed, pri from last
  laddered group, readable per-atom trace
- slot: SlotSpec.rules, rule.hard_exclude / rule.no_layer_matched violations,
  pri basis switches to priority when a rule ladder is present
- differential: 66 rule chains x 32 torrents vs MP python path (parse 64/64,
  pri 2090/2112, 22 registered mp_bug)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-28 14:50:43 +08:00

58 lines
1.1 KiB
TypeScript

export {
checkDistinctAssets,
type MovieAssetFact,
movieCompletion,
type UnitAssetFact,
type UnitCompletion,
unitCompletion,
} from "./completion.ts";
export {
type EpisodeTotalInput,
type EpisodeTotalResult,
type EpisodeTotalSource,
resolveEpisodeTotal,
} from "./episode-total.ts";
export {
checkHardConditions,
compareRank,
currentPri,
DEFAULT_SOURCE_TIERS,
describeViolation,
effectiveLadder,
evaluateCandidate,
improvableUnits,
priorityLadder,
qualityTier,
type RankedEvaluation,
RESOLUTION_RANK,
rankForSlot,
ruleChainOf,
softRank,
unitCountOf,
validateKeywordPattern,
} from "./evaluate.ts";
export {
computeUnitGaps,
episodeKey,
inRange,
parseUnitKey,
type SeasonProgress,
type SeasonProgressInput,
seasonProgress,
seasonWildcard,
type UnitGapInput,
type UnitGaps,
type UnitRange,
unitsOverlap,
} from "./gaps.ts";
export { busyStatus, type PlanStage, stageAfter, transitionWithInflight } from "./inflight.ts";
export {
canTransition,
type SlotEvent,
type SlotState,
type SlotStatus,
SlotTransitionError,
transition,
} from "./state.ts";
export * from "./types.ts";