posecode-parser
Advanced tools
| /** Closed vocabulary for document-level Posecode protocol declarations. */ | ||
| export declare const MOVEMENT_KINDS: readonly ["exercise", "stretch", "posture"]; | ||
| export type MovementKind = (typeof MOVEMENT_KINDS)[number]; | ||
| export declare const RIG_NAMES: readonly ["humanoid"]; | ||
| export type RigName = (typeof RIG_NAMES)[number]; | ||
| export declare const START_POSE_NAMES: readonly ["neutral", "standing", "first-position", "plank", "supine", "prone", "seated"]; | ||
| export type StartPoseName = (typeof START_POSE_NAMES)[number]; | ||
| export declare const PROP_TYPES: readonly ["chair", "wall", "bar", "box", "dip-bars"]; | ||
| export type PropType = (typeof PROP_TYPES)[number]; | ||
| /** World-anchor names supplied by each built-in prop. Sided grip aliases are included. */ | ||
| export declare const PROP_ANCHORS: Readonly<Record<PropType, readonly string[]>>; | ||
| export declare function isMovementKind(value: string): value is MovementKind; | ||
| export declare function isRigName(value: string): value is RigName; | ||
| export declare function isStartPoseName(value: string): value is StartPoseName; | ||
| export declare function isPropType(value: string): value is PropType; | ||
| /** The prop type that owns an anchor, or null when the word is not a prop anchor. */ | ||
| export declare function propForAnchor(anchor: string): PropType | null; | ||
| /** All anchor names made available by the props declared in one document. */ | ||
| export declare function anchorsForProps(props: readonly string[]): Set<string>; |
| /** Closed vocabulary for document-level Posecode protocol declarations. */ | ||
| export const MOVEMENT_KINDS = ["exercise", "stretch", "posture"]; | ||
| export const RIG_NAMES = ["humanoid"]; | ||
| export const START_POSE_NAMES = [ | ||
| "neutral", | ||
| "standing", | ||
| "first-position", | ||
| "plank", | ||
| "supine", | ||
| "prone", | ||
| "seated", | ||
| ]; | ||
| export const PROP_TYPES = ["chair", "wall", "bar", "box", "dip-bars"]; | ||
| /** World-anchor names supplied by each built-in prop. Sided grip aliases are included. */ | ||
| export const PROP_ANCHORS = { | ||
| chair: ["seat"], | ||
| wall: ["wall"], | ||
| bar: ["bar", "bar_left", "bar_right"], | ||
| box: ["box"], | ||
| "dip-bars": ["bars", "bars_left", "bars_right"], | ||
| }; | ||
| export function isMovementKind(value) { | ||
| return MOVEMENT_KINDS.includes(value); | ||
| } | ||
| export function isRigName(value) { | ||
| return RIG_NAMES.includes(value); | ||
| } | ||
| export function isStartPoseName(value) { | ||
| return START_POSE_NAMES.includes(value); | ||
| } | ||
| export function isPropType(value) { | ||
| return PROP_TYPES.includes(value); | ||
| } | ||
| /** The prop type that owns an anchor, or null when the word is not a prop anchor. */ | ||
| export function propForAnchor(anchor) { | ||
| for (const type of PROP_TYPES) { | ||
| if (PROP_ANCHORS[type].includes(anchor)) | ||
| return type; | ||
| } | ||
| return null; | ||
| } | ||
| /** All anchor names made available by the props declared in one document. */ | ||
| export function anchorsForProps(props) { | ||
| const anchors = new Set(); | ||
| for (const value of props) { | ||
| if (!isPropType(value)) | ||
| continue; | ||
| for (const anchor of PROP_ANCHORS[value]) | ||
| anchors.add(anchor); | ||
| } | ||
| return anchors; | ||
| } | ||
| //# sourceMappingURL=protocol.js.map |
| {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC;AAG1E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,UAAU,CAAU,CAAC;AAG/C,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,SAAS;IACT,UAAU;IACV,gBAAgB;IAChB,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;CACA,CAAC;AAGX,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAU,CAAC;AAG/E,0FAA0F;AAC1F,MAAM,CAAC,MAAM,YAAY,GAAkD;IACzE,KAAK,EAAE,CAAC,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,GAAG,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC;IACrC,GAAG,EAAE,CAAC,KAAK,CAAC;IACZ,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC;CAChD,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAQ,cAAoC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAQ,SAA+B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAQ,gBAAsC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAQ,UAAgC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IACvD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,eAAe,CAAC,KAAwB;IACtD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,SAAS;QACjC,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"} |
+5
| Posecode Parser | ||
| Copyright 2026 Posecode contributors | ||
| This product includes software developed by Posecode contributors. | ||
| Third-party dependency notices remain available in their respective distributions. |
+1
-1
@@ -6,3 +6,3 @@ /** | ||
| * maps semantic actions to rotation axes (with left/right mirroring), and | ||
| * clamps every angle into its safe Range of Motion (§5.1). All inputs are | ||
| * clamps every angle into the configured rig bounds (§5.1). All inputs are | ||
| * treated as immutable: a fresh IR is built and returned. | ||
@@ -9,0 +9,0 @@ */ |
+291
-16
@@ -6,13 +6,27 @@ /** | ||
| * maps semantic actions to rotation axes (with left/right mirroring), and | ||
| * clamps every angle into its safe Range of Motion (§5.1). All inputs are | ||
| * clamps every angle into the configured rig bounds (§5.1). All inputs are | ||
| * treated as immutable: a fresh IR is built and returned. | ||
| */ | ||
| import { POSECODE_VERSION } from "./types.js"; | ||
| import { actionAxis, boneType, expandEffector, expandJoint, flexionSign, isGroundLockEffector, isLeft, } from "./joints.js"; | ||
| import { clampAngle, romFor } from "./rom.js"; | ||
| import { BONES, actionAxis, boneType, expandEffector, expandJoint, flexionSign, isGroundLockEffector, isLeft, } from "./joints.js"; | ||
| import { actionsForJoint, clampAngle, romFor } from "./rom.js"; | ||
| import { anchorsForProps, propForAnchor } from "./protocol.js"; | ||
| const ZERO = { x: 0, y: 0, z: 0 }; | ||
| const AXES = ["x", "y", "z"]; | ||
| const BODY_TARGETS = new Set(BONES); | ||
| export function resolve(ast) { | ||
| const warnings = []; | ||
| const errors = []; | ||
| const phases = ast.steps.map((step) => resolveStep(step, warnings, errors)); | ||
| const declaredAnchors = anchorsForProps(ast.props); | ||
| const semanticState = initialSemanticState(ast.startPose); | ||
| const phases = []; | ||
| // Resolve in document order so cross-joint mechanics can be checked against | ||
| // the pose carried from preceding phases. This matters for a hinge authored | ||
| // after a deep hip flexion (and vice versa), not only when both share a step. | ||
| for (const step of ast.steps) { | ||
| const phase = resolveStep(step, declaredAnchors, warnings, errors); | ||
| enforceHipHingeLimit(step, phase, semanticState, warnings); | ||
| applyPhaseToState(semanticState, phase); | ||
| phases.push(phase); | ||
| } | ||
| const ir = { | ||
@@ -31,3 +45,31 @@ version: POSECODE_VERSION, | ||
| } | ||
| function resolveStep(step, warnings, errors) { | ||
| function resolveStep(step, declaredAnchors, warnings, errors) { | ||
| // `ground-lock`, `pin`, and `grip` each solve the floating root. Combining | ||
| // those solver families in one phase makes the later pass invalidate the | ||
| // earlier contact (for example, a knee pin sliding a ground-locked foot). | ||
| // Express multi-point support with one root anchor plus per-limb `reach`s. | ||
| if (step.groundLock.length > 0 && step.pins.length > 0) { | ||
| errors.push({ | ||
| line: step.pins[0].line, | ||
| message: "`pin` cannot be combined with `ground-lock` in one step; use one primary pin plus `reach` for additional contacts", | ||
| }); | ||
| } | ||
| if (step.groundLock.length > 0 && step.grips.length > 0) { | ||
| errors.push({ | ||
| line: step.grips[0].line, | ||
| message: "`grip` cannot be combined with `ground-lock` in one step; use one root-support family per step", | ||
| }); | ||
| } | ||
| if (step.pins.length > 0 && step.grips.length > 0) { | ||
| errors.push({ | ||
| line: step.grips[0].line, | ||
| message: "`grip` cannot be combined with `pin` in one step; use the grip as the primary support plus `reach` for additional contacts", | ||
| }); | ||
| } | ||
| if (step.pins.length > 1) { | ||
| errors.push({ | ||
| line: step.pins[1].line, | ||
| message: "a step may declare only one primary `pin`; use a grouped effector or per-limb `reach` constraints for additional contacts", | ||
| }); | ||
| } | ||
| // Accumulate per-bone Euler so multiple action lines on the same joint merge. | ||
@@ -43,4 +85,8 @@ const byBone = new Map(); | ||
| if (target.action === "hold") { | ||
| for (const bone of bones) | ||
| ensure(byBone, bone); | ||
| for (const bone of bones) { | ||
| const authored = ensure(byBone, bone); | ||
| authored.euler = { ...ZERO }; | ||
| for (const axis of AXES) | ||
| authored.axes.add(axis); | ||
| } | ||
| continue; | ||
@@ -60,2 +106,12 @@ } | ||
| } | ||
| const unsupported = bones.filter((bone) => romFor(bone, target.action) === null); | ||
| if (unsupported.length > 0) { | ||
| const allowed = actionsForJoint(target.joint); | ||
| errors.push({ | ||
| line: target.line, | ||
| message: `action "${target.action}" is not supported for ${target.joint}; ` + | ||
| `expected one of ${[...allowed, "hold"].join(", ")}`, | ||
| }); | ||
| continue; | ||
| } | ||
| for (const bone of bones) { | ||
@@ -80,9 +136,11 @@ const clamped = clampAngle(bone, target.action, target.degrees); | ||
| const sign = aa.sign * flexFlip * mirror; | ||
| const euler = ensure(byBone, bone); | ||
| euler[aa.axis] = sign * clamped; | ||
| const authored = ensure(byBone, bone); | ||
| authored.euler[aa.axis] = sign * clamped; | ||
| authored.axes.add(aa.axis); | ||
| } | ||
| } | ||
| const targets = [...byBone.entries()].map(([boneId, euler]) => ({ | ||
| const targets = [...byBone.entries()].map(([boneId, authored]) => ({ | ||
| boneId, | ||
| euler, | ||
| euler: authored.euler, | ||
| axes: AXES.filter((axis) => authored.axes.has(axis)), | ||
| })); | ||
@@ -110,2 +168,19 @@ const groundLock = []; | ||
| } | ||
| if (sides.includes("pelvis")) { | ||
| errors.push({ | ||
| line: r.line, | ||
| message: 'reach effector "pelvis" is unsupported; use `pin: pelvis <anchor>`', | ||
| }); | ||
| continue; | ||
| } | ||
| if (!validateReachTarget(r.target, r.line, declaredAnchors, errors)) { | ||
| continue; | ||
| } | ||
| if (sides.some((effector) => contactBoneId(effector) === r.target)) { | ||
| errors.push({ | ||
| line: r.line, | ||
| message: `reach effector "${r.effector}" cannot target its own joint "${r.target}"`, | ||
| }); | ||
| continue; | ||
| } | ||
| for (const effector of sides) | ||
@@ -121,2 +196,5 @@ reaches.push({ effector, target: r.target }); | ||
| } | ||
| if (!validatePinAnchor(p.anchor, p.line, declaredAnchors, errors)) { | ||
| continue; | ||
| } | ||
| for (const effector of sides) | ||
@@ -135,2 +213,27 @@ pins.push({ effector, anchor: p.anchor }); | ||
| } | ||
| if (sides.some((effector) => !effector.startsWith("hand_"))) { | ||
| errors.push({ | ||
| line: g.line, | ||
| message: `grip effector "${g.effector}" must resolve to a hand`, | ||
| }); | ||
| continue; | ||
| } | ||
| if (!validateGripAnchor(g.anchor, g.line, declaredAnchors, errors)) { | ||
| continue; | ||
| } | ||
| const writtenSide = /_(left|right)$/.exec(g.anchor)?.[1]; | ||
| if (writtenSide && sides.length > 1) { | ||
| errors.push({ | ||
| line: g.line, | ||
| message: `grouped grip effector "${g.effector}" requires a bare anchor such as "${g.anchor.replace(/_(left|right)$/, "")}"`, | ||
| }); | ||
| continue; | ||
| } | ||
| if (writtenSide && sides[0] && !sides[0].endsWith(`_${writtenSide}`)) { | ||
| errors.push({ | ||
| line: g.line, | ||
| message: `grip anchor "${g.anchor}" does not match effector "${sides[0]}"`, | ||
| }); | ||
| continue; | ||
| } | ||
| for (const effector of sides) { | ||
@@ -162,2 +265,174 @@ grips.push({ effector, anchor: sideAnchor(g.anchor, effector) }); | ||
| } | ||
| /** Reach accepts the floor, body landmarks, and declared prop anchors. */ | ||
| function validateReachTarget(value, line, declaredAnchors, errors) { | ||
| if (value === "floor" || BODY_TARGETS.has(value) || declaredAnchors.has(value)) { | ||
| return true; | ||
| } | ||
| const prop = propForAnchor(value); | ||
| errors.push({ | ||
| line, | ||
| message: prop | ||
| ? `reach target "${value}" requires declared prop "${prop}"` | ||
| : `unknown reach target: "${value}"`, | ||
| }); | ||
| return false; | ||
| } | ||
| /** Pins are world/root anchors. A body landmark moves with the root and cannot anchor it. */ | ||
| function validatePinAnchor(value, line, declaredAnchors, errors) { | ||
| if (value === "floor" || declaredAnchors.has(value)) | ||
| return true; | ||
| if (BODY_TARGETS.has(value)) { | ||
| errors.push({ | ||
| line, | ||
| message: `pin anchor "${value}" is body-relative and moves with the root; use floor or a declared prop anchor`, | ||
| }); | ||
| return false; | ||
| } | ||
| const prop = propForAnchor(value); | ||
| errors.push({ | ||
| line, | ||
| message: prop | ||
| ? `pin anchor "${value}" requires declared prop "${prop}"` | ||
| : `unknown pin anchor: "${value}"`, | ||
| }); | ||
| return false; | ||
| } | ||
| /** Grips only have contact frames on the built-in overhead bar and dip rails. */ | ||
| function validateGripAnchor(value, line, declaredAnchors, errors) { | ||
| const prop = propForAnchor(value); | ||
| if (prop !== "bar" && prop !== "dip-bars") { | ||
| errors.push({ | ||
| line, | ||
| message: `grip anchor "${value}" must be an overhead-bar or dip-rail anchor`, | ||
| }); | ||
| return false; | ||
| } | ||
| if (!declaredAnchors.has(value)) { | ||
| errors.push({ line, message: `grip anchor "${value}" requires declared prop "${prop}"` }); | ||
| return false; | ||
| } | ||
| return true; | ||
| } | ||
| function contactBoneId(effector) { | ||
| return effector | ||
| .replace(/^hand_/, "wrist_") | ||
| .replace(/^fist_/, "wrist_") | ||
| .replace(/^foot_/, "ankle_"); | ||
| } | ||
| /** | ||
| * Keep the renderer's coupled local hip angle inside the flexion ceiling. | ||
| * Runtime local hip X is `semantic hip X - pelvis hinge X`; independently-safe | ||
| * authored values can therefore add to an impossible angle (110° + 50°). | ||
| */ | ||
| function enforceHipHingeLimit(step, phase, previous, warnings) { | ||
| const candidate = cloneState(previous); | ||
| applyPhaseToState(candidate, phase); | ||
| let pelvisX = candidate.get("pelvis")?.x ?? 0; | ||
| const hips = ["hip_left", "hip_right"]; | ||
| const pelvisSource = sourceForAxis(step, "pelvis", "x"); | ||
| let pelvisWarning = null; | ||
| const clampPelvisTo = (safeValue) => { | ||
| if (!pelvisSource || pelvisX <= safeValue) | ||
| return; | ||
| const requestedPelvisX = pelvisX; | ||
| const clamped = Math.max(0, safeValue); | ||
| setPhaseAxis(phase, "pelvis", "x", clamped); | ||
| ensureState(candidate, "pelvis").x = clamped; | ||
| pelvisX = clamped; | ||
| if (pelvisWarning) { | ||
| pelvisWarning.clamped = clamped; | ||
| pelvisWarning.limit = { min: 0, max: clamped }; | ||
| return; | ||
| } | ||
| pelvisWarning = { | ||
| line: pelvisSource.line, | ||
| phase: step.name, | ||
| joint: "pelvis", | ||
| action: pelvisSource.action, | ||
| requested: pelvisSource.degrees ?? requestedPelvisX, | ||
| clamped, | ||
| limit: { min: 0, max: clamped }, | ||
| }; | ||
| warnings.push(pelvisWarning); | ||
| }; | ||
| // When a newly-authored hinge meets a hip carried from an earlier phase, | ||
| // the hinge must yield first. Doing this before clamping same-step hips | ||
| // avoids needless left/right asymmetry in mixed carried/authored poses. | ||
| const carriedHipLimits = hips | ||
| .filter((hip) => sourceForAxis(step, hip, "x") === null) | ||
| .map((hip) => (candidate.get(hip)?.x ?? 0) + COMBINED_HIP_FLEX_MAX); | ||
| if (carriedHipLimits.length > 0) { | ||
| clampPelvisTo(Math.min(120, ...carriedHipLimits)); | ||
| } | ||
| for (const hip of hips) { | ||
| const hipX = candidate.get(hip)?.x ?? 0; | ||
| if (hipX - pelvisX >= -COMBINED_HIP_FLEX_MAX) | ||
| continue; | ||
| const source = sourceForAxis(step, hip, "x"); | ||
| if (!source) | ||
| continue; | ||
| const safeHipX = pelvisX - COMBINED_HIP_FLEX_MAX; | ||
| setPhaseAxis(phase, hip, "x", safeHipX); | ||
| ensureState(candidate, hip).x = safeHipX; | ||
| const maxDegrees = Math.max(0, COMBINED_HIP_FLEX_MAX - pelvisX); | ||
| warnings.push({ | ||
| line: source.line, | ||
| phase: step.name, | ||
| joint: hip, | ||
| action: source.action, | ||
| requested: source.degrees ?? Math.abs(hipX), | ||
| clamped: maxDegrees, | ||
| limit: { min: 0, max: maxDegrees }, | ||
| }); | ||
| } | ||
| // If the hips were carried from a previous phase, the newly-authored hinge | ||
| // is the channel that must yield. Use the most restrictive side. | ||
| const safePelvisX = Math.min(120, ...hips.map((hip) => (candidate.get(hip)?.x ?? 0) + COMBINED_HIP_FLEX_MAX)); | ||
| clampPelvisTo(safePelvisX); | ||
| } | ||
| const COMBINED_HIP_FLEX_MAX = 135; | ||
| function sourceForAxis(step, bone, axis) { | ||
| for (let i = step.targets.length - 1; i >= 0; i--) { | ||
| const target = step.targets[i]; | ||
| if (!expandJoint(target.joint).includes(bone)) | ||
| continue; | ||
| if (target.action === "hold" || actionAxis(target.action)?.axis === axis) | ||
| return target; | ||
| } | ||
| return null; | ||
| } | ||
| function setPhaseAxis(phase, bone, axis, value) { | ||
| const target = phase.targets.find((entry) => entry.boneId === bone); | ||
| if (!target) | ||
| return; | ||
| target.euler[axis] = value; | ||
| if (target.axes && !target.axes.includes(axis)) | ||
| target.axes.push(axis); | ||
| } | ||
| function initialSemanticState(startPose) { | ||
| const state = new Map(); | ||
| if (startPose === "seated") { | ||
| state.set("hip_left", { x: -90, y: 0, z: 0 }); | ||
| state.set("hip_right", { x: -90, y: 0, z: 0 }); | ||
| } | ||
| return state; | ||
| } | ||
| function applyPhaseToState(state, phase) { | ||
| for (const target of phase.targets) { | ||
| const current = ensureState(state, target.boneId); | ||
| for (const axis of target.axes ?? AXES) | ||
| current[axis] = target.euler[axis]; | ||
| } | ||
| } | ||
| function cloneState(state) { | ||
| return new Map([...state].map(([bone, euler]) => [bone, { ...euler }])); | ||
| } | ||
| function ensureState(map, bone) { | ||
| let euler = map.get(bone); | ||
| if (!euler) { | ||
| euler = { ...ZERO }; | ||
| map.set(bone, euler); | ||
| } | ||
| return euler; | ||
| } | ||
| /** Max travel offset from the load spot, metres, in any single axis. */ | ||
@@ -184,9 +459,9 @@ const TRAVEL_MAX = 3; | ||
| function ensure(map, bone) { | ||
| let euler = map.get(bone); | ||
| if (!euler) { | ||
| euler = { ...ZERO }; | ||
| map.set(bone, euler); | ||
| let authored = map.get(bone); | ||
| if (!authored) { | ||
| authored = { euler: { ...ZERO }, axes: new Set() }; | ||
| map.set(bone, authored); | ||
| } | ||
| return euler; | ||
| return authored; | ||
| } | ||
| //# sourceMappingURL=clamp.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"clamp.js","sourceRoot":"","sources":["../src/clamp.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EACL,UAAU,EACV,QAAQ,EACR,cAAc,EACd,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,MAAM,GACP,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAQ9C,MAAM,IAAI,GAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAE5C,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,MAAM,MAAM,GAAY,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC7C,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CACpC,CAAC;IAEF,MAAM,EAAE,GAAe;QACrB,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM;KACP,CAAC;IAEF,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,WAAW,CAClB,IAAa,EACb,QAAmB,EACnB,MAAoB;IAEpB,8EAA8E;IAC9E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE3C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,mBAAmB,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;YAChF,SAAS;QACX,CAAC;QAED,4CAA4C;QAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7B,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC/C,SAAS;QACX,CAAC;QAED,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,oBAAoB,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;YAClF,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO,EAAE,WAAW,MAAM,CAAC,MAAM,qBAAqB;aACvD,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAE,CAAC;gBAC3C,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,IAAI,CAAC,IAAI;oBAChB,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,SAAS,EAAE,MAAM,CAAC,OAAO;oBACzB,OAAO;oBACP,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;YACD,MAAM,QAAQ,GACZ,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;gBACpD,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC,CAAC;YACR,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACnC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC;QAClC,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAkB,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,MAAM;QACN,KAAK;KACN,CAAC,CAAC,CAAC;IAEJ,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI;gBACtC,OAAO,EAAE,kCAAkC,QAAQ,GAAG;aACvD,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,2DAA2D;IAC3D,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,4BAA4B,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;YAClF,SAAS;QACX,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,0BAA0B,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;YAChF,SAAS;QACX,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,2EAA2E;IAC3E,6EAA6E;IAC7E,8EAA8E;IAC9E,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,2BAA2B,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;YACjF,SAAS;QACX,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;QACxB,CAAC,CAAC;YACE,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;YACnD,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;SACpD;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAyB;QACtC,OAAO;QACP,UAAU;QACV,OAAO;QACP,IAAI;QACJ,KAAK;QACL,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvC,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB,SAAS,QAAQ,CAAC,CAAS,EAAE,GAAW,EAAE,GAAW;IACnD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,MAAc,EAAE,QAAgB;IAClD,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,GAAG,MAAM,OAAO,CAAC;IACxD,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,GAAG,MAAM,QAAQ,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CAAC,GAA0B,EAAE,IAAY;IACtD,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"} | ||
| {"version":3,"file":"clamp.js","sourceRoot":"","sources":["../src/clamp.ts"],"names":[],"mappings":"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"} |
+3
-2
@@ -12,4 +12,5 @@ /** | ||
| export { POSECODE_VERSION } from "./types.js"; | ||
| export { BONES, JOINT_GROUP_NAMES, JOINT_NAMES, ACTION_NAMES, EFFECTOR_NAMES, GROUND_LOCK_EFFECTOR_NAMES, expandJoint, expandEffector, isGroundLockEffector, actionAxis, boneType, } from "./joints.js"; | ||
| export { romFor, clampAngle, eulerRomFor, type RomLimit, type EulerRom } from "./rom.js"; | ||
| export { BONES, JOINT_GROUP_NAMES, JOINT_NAMES, ACTION_NAMES, EFFECTOR_NAMES, REACH_EFFECTOR_NAMES, PIN_EFFECTOR_NAMES, GRIP_EFFECTOR_NAMES, GROUND_LOCK_EFFECTOR_NAMES, expandJoint, expandEffector, isGroundLockEffector, actionAxis, boneType, } from "./joints.js"; | ||
| export { romFor, clampAngle, eulerRomFor, isActionAllowed, actionsForJoint, isLegacyAxialAction, type RomLimit, type EulerRom, } from "./rom.js"; | ||
| export { EASINGS, MODES, LEGACY_MODE_ALIASES, normalizeMode } from "./schema.js"; | ||
| export { MOVEMENT_KINDS, RIG_NAMES, START_POSE_NAMES, PROP_TYPES, PROP_ANCHORS, isMovementKind, isRigName, isStartPoseName, isPropType, propForAnchor, anchorsForProps, type MovementKind, type RigName, type StartPoseName, type PropType, } from "./protocol.js"; |
+3
-2
@@ -28,5 +28,6 @@ /** | ||
| export { POSECODE_VERSION } from "./types.js"; | ||
| export { BONES, JOINT_GROUP_NAMES, JOINT_NAMES, ACTION_NAMES, EFFECTOR_NAMES, GROUND_LOCK_EFFECTOR_NAMES, expandJoint, expandEffector, isGroundLockEffector, actionAxis, boneType, } from "./joints.js"; | ||
| export { romFor, clampAngle, eulerRomFor } from "./rom.js"; | ||
| export { BONES, JOINT_GROUP_NAMES, JOINT_NAMES, ACTION_NAMES, EFFECTOR_NAMES, REACH_EFFECTOR_NAMES, PIN_EFFECTOR_NAMES, GRIP_EFFECTOR_NAMES, GROUND_LOCK_EFFECTOR_NAMES, expandJoint, expandEffector, isGroundLockEffector, actionAxis, boneType, } from "./joints.js"; | ||
| export { romFor, clampAngle, eulerRomFor, isActionAllowed, actionsForJoint, isLegacyAxialAction, } from "./rom.js"; | ||
| export { EASINGS, MODES, LEGACY_MODE_ALIASES, normalizeMode } from "./schema.js"; | ||
| export { MOVEMENT_KINDS, RIG_NAMES, START_POSE_NAMES, PROP_TYPES, PROP_ANCHORS, isMovementKind, isRigName, isStartPoseName, isPropType, propForAnchor, anchorsForProps, } from "./protocol.js"; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,MAAM,UAAU,KAAK,CAAC,MAAc;IAClC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,YAAY,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACtC,CAAC;AAiBD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACL,KAAK,EACL,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,0BAA0B,EAC1B,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,QAAQ,GACT,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAgC,MAAM,UAAU,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,MAAM,UAAU,KAAK,CAAC,MAAc;IAClC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,YAAY,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACtC,CAAC;AAiBD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACL,KAAK,EACL,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,EAC1B,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,QAAQ,GACT,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,MAAM,EACN,UAAU,EACV,WAAW,EACX,eAAe,EACf,eAAe,EACf,mBAAmB,GAGpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EACL,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,cAAc,EACd,SAAS,EACT,eAAe,EACf,UAAU,EACV,aAAa,EACb,eAAe,GAKhB,MAAM,eAAe,CAAC"} |
+4
-0
@@ -29,2 +29,6 @@ /** | ||
| export declare const EFFECTOR_NAMES: string[]; | ||
| /** Capability-specific contact vocabularies exposed to validators/editors. */ | ||
| export declare const REACH_EFFECTOR_NAMES: string[]; | ||
| export declare const PIN_EFFECTOR_NAMES: string[]; | ||
| export declare const GRIP_EFFECTOR_NAMES: readonly ["hands", "hand_left", "hand_right"]; | ||
| /** | ||
@@ -31,0 +35,0 @@ * Contacts accepted by `ground-lock:`. Ground locking has historically |
+25
-2
@@ -64,2 +64,5 @@ /** | ||
| elbows: ["elbow_left", "elbow_right"], | ||
| // Anatomical authoring alias: forearm axial rotation lives on the elbow | ||
| // bone in the rig, but `forearms: pronate 80` is clearer to authors. | ||
| forearms: ["elbow_left", "elbow_right"], | ||
| wrists: ["wrist_left", "wrist_right"], | ||
@@ -94,4 +97,10 @@ hips: ["hip_left", "hip_right"], | ||
| "hand_right", | ||
| // Closed-fist floor contacts use the wrist chain for positioning, but retain | ||
| // their semantic contact surface for the renderer's orientation solver. | ||
| "fist_left", | ||
| "fist_right", | ||
| "elbow_left", | ||
| "elbow_right", | ||
| "knee_left", | ||
| "knee_right", | ||
| "foot_left", | ||
@@ -106,3 +115,5 @@ "foot_right", | ||
| hands: ["hand_left", "hand_right"], | ||
| fists: ["fist_left", "fist_right"], | ||
| forearms: ["elbow_left", "elbow_right"], | ||
| knees: ["knee_left", "knee_right"], | ||
| feet: ["foot_left", "foot_right"], | ||
@@ -112,2 +123,6 @@ }; | ||
| export const EFFECTOR_NAMES = [...Object.keys(EFFECTOR_GROUPS), ...EFFECTOR_SIDES]; | ||
| /** Capability-specific contact vocabularies exposed to validators/editors. */ | ||
| export const REACH_EFFECTOR_NAMES = EFFECTOR_NAMES.filter((name) => name !== "pelvis"); | ||
| export const PIN_EFFECTOR_NAMES = [...EFFECTOR_NAMES]; | ||
| export const GRIP_EFFECTOR_NAMES = ["hands", "hand_left", "hand_right"]; | ||
| /** | ||
@@ -162,4 +177,12 @@ * Contacts accepted by `ground-lock:`. Ground locking has historically | ||
| "rotate-out": { axis: "y", sign: -1 }, | ||
| supinate: { axis: "y", sign: 1 }, | ||
| pronate: { axis: "y", sign: -1 }, | ||
| // Axial rotation must use world-independent anatomical directions. Internal | ||
| // and external rotation make sense for paired ball-and-socket joints, but | ||
| // are ambiguous on the spine/cervical chain. Facing +Z, +Y turns the torso | ||
| // toward the person's left (+X), and -Y turns it right (-X). | ||
| "twist-left": { axis: "y", sign: 1 }, | ||
| "twist-right": { axis: "y", sign: -1 }, | ||
| // From the palm-forward driver rest, pronation turns each palm toward its | ||
| // own thigh. The left-side mirror in clamp.ts supplies the opposite sign. | ||
| supinate: { axis: "y", sign: -1 }, | ||
| pronate: { axis: "y", sign: 1 }, | ||
| // The foot points FORWARD (+Z): lifting the toes toward the shin | ||
@@ -166,0 +189,0 @@ // (dorsiflexion) is a -X rotation, pointing them is +X. |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"joints.js","sourceRoot":"","sources":["../src/joints.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"joints.js","sourceRoot":"","sources":["../src/joints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,gFAAgF;AAChF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,eAAe;IACf,gBAAgB;IAChB,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,aAAa;IACb,UAAU;IACV,WAAW;IACX,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,aAAa;IAEb,mEAAmE;IACnE,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,WAAW;IACX,YAAY;IACZ,aAAa;IACb,aAAa;IACb,cAAc;IACd,YAAY;IACZ,aAAa;CACL,CAAC;AAIX,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,KAAK,CAAC,CAAC;AAExC,4DAA4D;AAC5D,MAAM,YAAY,GAAa;IAC7B,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,WAAW;IACX,YAAY;CACb,CAAC;AACF,MAAM,aAAa,GAAa;IAC9B,aAAa;IACb,aAAa;IACb,cAAc;IACd,YAAY;IACZ,aAAa;CACd,CAAC;AAEF,MAAM,MAAM,GAA6B;IACvC,SAAS,EAAE,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC9C,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;IACrC,wEAAwE;IACxE,qEAAqE;IACrE,QAAQ,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;IACvC,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;IACrC,IAAI,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;IAC/B,KAAK,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IAClC,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;IACrC,wDAAwD;IACxD,YAAY,EAAE,YAAY;IAC1B,aAAa,EAAE,aAAa;IAC5B,OAAO,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC;CAC7C,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAErD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,KAAK,CAAC,CAAC;AAE5D;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,KAAK;QAAE,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;IAC7B,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,kFAAkF;AAClF,MAAM,cAAc,GAAG;IACrB,WAAW;IACX,YAAY;IACZ,6EAA6E;IAC7E,wEAAwE;IACxE,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,2EAA2E;IAC3E,0EAA0E;IAC1E,QAAQ;CACA,CAAC;AAEX,yEAAyE;AACzE,MAAM,eAAe,GAA6B;IAChD,KAAK,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IAClC,KAAK,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IAClC,QAAQ,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;IACvC,KAAK,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IAClC,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;CAClC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,GAAG,cAAc,CAAC,CAAC;AAEnF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AACvF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;AAEjF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,OAAO;IACP,WAAW;IACX,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,aAAa;IACb,MAAM;IACN,WAAW;IACX,YAAY;IACZ,MAAM;CACE,CAAC;AAEX,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAS,0BAA0B,CAAC,CAAC;AAE7E,sEAAsE;AACtE,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AACD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS,cAAc,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,KAAK;QAAE,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;IAC7B,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,EAAE,CAAC;AACZ,CAAC;AAQD,MAAM,OAAO,GAA+B;IAC1C,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;IAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;IAC/B,0EAA0E;IAC1E,yEAAyE;IACzE,4EAA4E;IAC5E,yEAAyE;IACzE,yEAAyE;IACzE,qDAAqD;IACrD,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;IAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;IAC9B,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;IACnC,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;IACrC,4EAA4E;IAC5E,0EAA0E;IAC1E,2EAA2E;IAC3E,6DAA6D;IAC7D,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;IACpC,aAAa,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;IACtC,0EAA0E;IAC1E,0EAA0E;IAC1E,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;IACjC,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;IAC/B,iEAAiE;IACjE,wDAAwD;IACxD,SAAS,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;IAClC,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;IACnC,0EAA0E;IAC1E,0EAA0E;IAC1E,4EAA4E;IAC5E,iEAAiE;IACjE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;CAC9B,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEjD,+EAA+E;AAC/E,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;AACjC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,YAAY,GAA2B;IAC3C,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,OAAO,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,MAAM,CAAC,MAAc;IACnC,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC"} |
+143
-26
@@ -11,3 +11,5 @@ /** | ||
| import { GROUND_LOCK_EFFECTOR_NAMES } from "./joints.js"; | ||
| import { MOVEMENT_KINDS, PROP_TYPES, RIG_NAMES, START_POSE_NAMES, isMovementKind, isPropType, isRigName, isStartPoseName, } from "./protocol.js"; | ||
| const GROUND_LOCK_EFFECTORS = new Set(GROUND_LOCK_EFFECTOR_NAMES); | ||
| const TOP_LEVEL_HEADS = new Set(["rig", "prop", "clip", "pose", "repeat", "step"]); | ||
| function word(tok) { | ||
@@ -34,3 +36,7 @@ return tok && tok.type === "word" ? tok.value : null; | ||
| const ht = header.tokens; | ||
| if (word(ht[0]) !== "posecode" || ht[1]?.type !== "word" || ht[2]?.type !== "str") { | ||
| if (header.indent !== 0 || | ||
| ht.length !== 3 || | ||
| word(ht[0]) !== "posecode" || | ||
| ht[1]?.type !== "word" || | ||
| ht[2]?.type !== "str") { | ||
| return { | ||
@@ -46,2 +52,11 @@ ast: null, | ||
| } | ||
| if (!isMovementKind(ht[1].value)) { | ||
| return { | ||
| ast: null, | ||
| errors: [{ | ||
| line: header.line, | ||
| message: `unknown movement kind "${ht[1].value}"; expected one of ${MOVEMENT_KINDS.join(", ")}`, | ||
| }], | ||
| }; | ||
| } | ||
| const doc = { | ||
@@ -57,2 +72,5 @@ kind: ht[1].value, | ||
| let invalidStepIndent = null; | ||
| let topLevelIndent = null; | ||
| let currentStepIndent = null; | ||
| let currentChildIndent = null; | ||
| for (let i = 1; i < lines.length; i++) { | ||
@@ -70,7 +88,64 @@ const ln = lines[i]; | ||
| const t = ln.tokens; | ||
| // Indentation is syntax, not presentation. All document declarations share | ||
| // one indentation level beneath the header, and all children of a step | ||
| // share one deeper level. Without this gate an unindented joint silently | ||
| // attached to the preceding step, while an indented `repeat` or `rig` | ||
| // mutated the whole document from inside that step. | ||
| if (head && TOP_LEVEL_HEADS.has(head)) { | ||
| if (ln.indent <= header.indent) { | ||
| errors.push({ line: ln.line, message: `top-level \`${head}\` must be indented beneath the posecode header` }); | ||
| current = null; | ||
| currentStepIndent = null; | ||
| currentChildIndent = null; | ||
| if (head === "step") | ||
| invalidStepIndent = ln.indent; | ||
| continue; | ||
| } | ||
| if (topLevelIndent === null) | ||
| topLevelIndent = ln.indent; | ||
| if (ln.indent !== topLevelIndent) { | ||
| errors.push({ line: ln.line, message: `top-level \`${head}\` must use the document indentation level (${topLevelIndent} spaces)` }); | ||
| current = null; | ||
| currentStepIndent = null; | ||
| currentChildIndent = null; | ||
| if (head === "step") | ||
| invalidStepIndent = ln.indent; | ||
| continue; | ||
| } | ||
| if (head !== "step") { | ||
| current = null; | ||
| currentStepIndent = null; | ||
| currentChildIndent = null; | ||
| } | ||
| } | ||
| else { | ||
| if (!current || currentStepIndent === null) { | ||
| const err = parseStepChild(ln, null); | ||
| if (err) | ||
| errors.push(err); | ||
| continue; | ||
| } | ||
| if (ln.indent <= currentStepIndent) { | ||
| errors.push({ line: ln.line, message: "step children must be indented beneath their `step` header" }); | ||
| continue; | ||
| } | ||
| if (currentChildIndent === null) | ||
| currentChildIndent = ln.indent; | ||
| if (ln.indent !== currentChildIndent) { | ||
| errors.push({ line: ln.line, message: `step children must use one indentation level (${currentChildIndent} spaces)` }); | ||
| continue; | ||
| } | ||
| } | ||
| switch (head) { | ||
| case "rig": { | ||
| const r = word(t[1]); | ||
| if (!r) | ||
| errors.push({ line: ln.line, message: "rig requires a name" }); | ||
| if (t.length !== 2 || !r) { | ||
| errors.push({ line: ln.line, message: "expected `rig humanoid`" }); | ||
| } | ||
| else if (!isRigName(r)) { | ||
| errors.push({ | ||
| line: ln.line, | ||
| message: `unknown rig "${r}"; expected one of ${RIG_NAMES.join(", ")}`, | ||
| }); | ||
| } | ||
| else | ||
@@ -81,6 +156,13 @@ doc.rig = r; | ||
| case "prop": { | ||
| // `prop <type>`: a scene object (chair | wall | bar), repeatable. | ||
| // `prop <type>`: a built-in scene object, repeatable. | ||
| const p = word(t[1]); | ||
| if (!p) | ||
| errors.push({ line: ln.line, message: "prop requires a type" }); | ||
| if (t.length !== 2 || !p) { | ||
| errors.push({ line: ln.line, message: "expected `prop <type>`" }); | ||
| } | ||
| else if (!isPropType(p)) { | ||
| errors.push({ | ||
| line: ln.line, | ||
| message: `unknown prop "${p}"; expected one of ${PROP_TYPES.join(", ")}`, | ||
| }); | ||
| } | ||
| else | ||
@@ -93,3 +175,3 @@ doc.props.push(p); | ||
| // (retargeted) instead of / blended with the procedural phases. | ||
| if (t[1]?.type === "str") | ||
| if (t.length === 2 && t[1]?.type === "str") | ||
| doc.clip = t[1].value; | ||
@@ -102,5 +184,12 @@ else | ||
| // `pose start = <name>` | ||
| const name = t.length > 0 ? t[t.length - 1] : undefined; | ||
| if (word(t[1]) === "start" && name && name.type === "word") { | ||
| doc.startPose = name.value; | ||
| const name = word(t[3]); | ||
| if (t.length === 4 && word(t[1]) === "start" && t[2]?.type === "eq" && name) { | ||
| if (!isStartPoseName(name)) { | ||
| errors.push({ | ||
| line: ln.line, | ||
| message: `unknown start pose "${name}"; expected one of ${START_POSE_NAMES.join(", ")}`, | ||
| }); | ||
| break; | ||
| } | ||
| doc.startPose = name; | ||
| } | ||
@@ -113,6 +202,7 @@ else { | ||
| case "repeat": { | ||
| if (t[1]?.type === "num") | ||
| doc.repeat = Math.max(1, Math.round(Number(t[1].value))); | ||
| const count = t[1]?.type === "num" ? Number(t[1].value) : NaN; | ||
| if (t.length === 2 && Number.isInteger(count) && count >= 1) | ||
| doc.repeat = count; | ||
| else | ||
| errors.push({ line: ln.line, message: "repeat requires a count" }); | ||
| errors.push({ line: ln.line, message: "repeat requires a positive integer count" }); | ||
| break; | ||
@@ -132,3 +222,4 @@ } | ||
| resolved.mode === null || | ||
| colon?.type !== "colon") { | ||
| colon?.type !== "colon" || | ||
| t.length !== 5) { | ||
| errors.push({ | ||
@@ -141,2 +232,4 @@ line: ln.line, | ||
| current = null; | ||
| currentStepIndent = null; | ||
| currentChildIndent = null; | ||
| invalidStepIndent = ln.indent; | ||
@@ -157,2 +250,4 @@ break; | ||
| doc.steps.push(current); | ||
| currentStepIndent = ln.indent; | ||
| currentChildIndent = null; | ||
| break; | ||
@@ -179,4 +274,5 @@ } | ||
| return { line: ln.line, message: "`cue` outside of a step" }; | ||
| if (t[1]?.type !== "str") | ||
| return { line: ln.line, message: "`cue` requires a quoted string" }; | ||
| if (t.length !== 2 || t[1]?.type !== "str") { | ||
| return { line: ln.line, message: "`cue` requires exactly one quoted string" }; | ||
| } | ||
| current.cue = t[1].value; | ||
@@ -191,2 +287,5 @@ return null; | ||
| } | ||
| if (t.slice(2).some((tok) => tok.type !== "word" && tok.type !== "comma")) { | ||
| return { line: ln.line, message: "expected `ground-lock: <effectors>`" }; | ||
| } | ||
| const words = t.slice(2).filter((tok) => tok.type === "word").map((tok) => tok.value); | ||
@@ -199,3 +298,3 @@ const effectors = []; | ||
| const next = words[i + 1]; | ||
| if ((value === "left" || value === "right") && next) { | ||
| if (value === "left" || value === "right") { | ||
| const base = next === "hand" ? "hand" : next === "foot" ? "foot" : | ||
@@ -208,2 +307,3 @@ next === "forearm" || next === "elbow" ? "elbow" : null; | ||
| } | ||
| return { line: ln.line, message: `unknown ground-lock effector: "${value}${next ? ` ${next}` : ""}"` }; | ||
| } | ||
@@ -228,3 +328,3 @@ if (!GROUND_LOCK_EFFECTORS.has(value)) { | ||
| const target = t[3]?.type === "word" ? t[3].value : null; | ||
| if (t[1]?.type !== "colon" || !effector || !target) { | ||
| if (t.length !== 4 || t[1]?.type !== "colon" || !effector || !target) { | ||
| return { line: ln.line, message: "expected `reach: <effector> <target>`" }; | ||
@@ -241,3 +341,3 @@ } | ||
| const anchor = t[3]?.type === "word" ? t[3].value : null; | ||
| if (t[1]?.type !== "colon" || !effector || !anchor) { | ||
| if (t.length !== 4 || t[1]?.type !== "colon" || !effector || !anchor) { | ||
| return { line: ln.line, message: "expected `pin: <effector> <anchor>`" }; | ||
@@ -256,3 +356,3 @@ } | ||
| const anchor = t[3]?.type === "word" ? t[3].value : null; | ||
| if (t[1]?.type !== "colon" || !effector || !anchor) { | ||
| if (t.length !== 4 || t[1]?.type !== "colon" || !effector || !anchor) { | ||
| return { line: ln.line, message: "expected `grip: <effector> <anchor>`" }; | ||
@@ -268,3 +368,3 @@ } | ||
| return { line: ln.line, message: "`turn` outside of a step" }; | ||
| if (t[1]?.type !== "colon" || t[2]?.type !== "num") { | ||
| if (t.length !== 3 || t[1]?.type !== "colon" || t[2]?.type !== "num") { | ||
| return { line: ln.line, message: "expected `turn: <degrees>`" }; | ||
@@ -280,3 +380,6 @@ } | ||
| return { line: ln.line, message: "`travel` outside of a step" }; | ||
| if (t[1]?.type !== "colon" || t[2]?.type !== "num" || t[3]?.type !== "num") { | ||
| if (t.length !== 4 || | ||
| t[1]?.type !== "colon" || | ||
| t[2]?.type !== "num" || | ||
| t[3]?.type !== "num") { | ||
| return { line: ln.line, message: "expected `travel: <x> <z>`" }; | ||
@@ -287,3 +390,3 @@ } | ||
| } | ||
| // Joint target: `<joint>: <action> [<degrees>]` | ||
| // Joint target: `<joint>: <action> <degrees>` or `<joint>: hold neutral`. | ||
| if (!current) { | ||
@@ -293,9 +396,23 @@ return { line: ln.line, message: "joint target outside of a step" }; | ||
| if (head === null || t[1]?.type !== "colon" || t[2]?.type !== "word") { | ||
| return { line: ln.line, message: "expected `<joint>: <action> [<degrees>]`" }; | ||
| return { line: ln.line, message: "expected `<joint>: <action> <degrees>`" }; | ||
| } | ||
| const action = t[2].value; | ||
| if (action === "hold") { | ||
| if (t.length !== 4 || word(t[3]) !== "neutral") { | ||
| return { | ||
| line: ln.line, | ||
| message: "expected `<joint>: hold neutral` (no trailing angle)", | ||
| }; | ||
| } | ||
| current.targets.push({ joint: head, action, degrees: null, line: ln.line }); | ||
| return null; | ||
| } | ||
| const degTok = t[3]; | ||
| if (t.length !== 4 || degTok?.type !== "num") { | ||
| return { line: ln.line, message: "expected `<joint>: <action> <degrees>`" }; | ||
| } | ||
| current.targets.push({ | ||
| joint: head, | ||
| action: t[2].value, | ||
| degrees: degTok && degTok.type === "num" ? Number(degTok.value) : null, | ||
| action, | ||
| degrees: Number(degTok.value), | ||
| line: ln.line, | ||
@@ -302,0 +419,0 @@ }); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"} |
+17
-6
| /** | ||
| * Range-of-Motion (ROM) hard limits per joint type and action, in degrees. | ||
| * Configured Range-of-Motion (ROM) limits per joint type and action, in degrees. | ||
| * | ||
| * Values follow the maximum healthy limits in the project research | ||
| * (CDC / clinical normative data), §5.1 Tables 1 & 2. The clamp pass treats | ||
| * Values are implementation bounds informed by the project's cited references; | ||
| * they are not a clinical assessment or a guarantee that a complete motion is | ||
| * safe for a particular person. The clamp pass treats | ||
| * `max` as a HARD ceiling: e.g. a requested knee flexion of 200° is clamped to | ||
| * 144°, so the renderer can never produce an anatomically impossible joint. | ||
| * 144°, preventing that authored channel from exceeding its configured bound. | ||
| * | ||
@@ -19,2 +20,12 @@ * `min` is the floor of the achievable angle for that action direction (0 for | ||
| export declare function romFor(boneId: string, action: string): RomLimit | null; | ||
| /** True when an anatomical action is defined for this concrete bone. */ | ||
| export declare function isActionAllowed(boneId: string, action: string): boolean; | ||
| /** | ||
| * Actions valid for every bone represented by a DSL joint/group name. The | ||
| * intersection makes completions for heterogeneous groups such as `fingers` | ||
| * safe: thumb-only abduction is not offered for all fingers at once. | ||
| */ | ||
| export declare function actionsForJoint(joint: string): string[]; | ||
| /** True for the accepted-but-deprecated ambiguous axial rotation spelling. */ | ||
| export declare function isLegacyAxialAction(boneId: string, action: string): boolean; | ||
| /** Signed per-axis rotation range, degrees, in a bone's LOCAL Euler frame. */ | ||
@@ -28,4 +39,4 @@ export type EulerRom = Record<Axis, RomLimit>; | ||
| * `{min: 0, max: 0}`, locking them (a knee is a pure hinge). This is what lets | ||
| * the IK solver honour the same hard limits as authored angles: any solved | ||
| * joint rotation clamped into this box is inside the healthy ROM. | ||
| * the IK solver honour the same configured limits as authored angles: any | ||
| * solved joint rotation clamped into this box is inside that ROM box. | ||
| * | ||
@@ -32,0 +43,0 @@ * Returns null for bones without ROM data (e.g. `head`). |
+53
-7
| /** | ||
| * Range-of-Motion (ROM) hard limits per joint type and action, in degrees. | ||
| * Configured Range-of-Motion (ROM) limits per joint type and action, in degrees. | ||
| * | ||
| * Values follow the maximum healthy limits in the project research | ||
| * (CDC / clinical normative data), §5.1 Tables 1 & 2. The clamp pass treats | ||
| * Values are implementation bounds informed by the project's cited references; | ||
| * they are not a clinical assessment or a guarantee that a complete motion is | ||
| * safe for a particular person. The clamp pass treats | ||
| * `max` as a HARD ceiling: e.g. a requested knee flexion of 200° is clamped to | ||
| * 144°, so the renderer can never produce an anatomically impossible joint. | ||
| * 144°, preventing that authored channel from exceeding its configured bound. | ||
| * | ||
@@ -32,2 +33,5 @@ * `min` is the floor of the achievable angle for that action direction (0 for | ||
| extend: { min: 0, max: 70 }, | ||
| // Radial/ulnar deviation expressed in the DSL's midline-relative terms. | ||
| abduct: { min: 0, max: 20 }, | ||
| adduct: { min: 0, max: 30 }, | ||
| }, | ||
@@ -66,2 +70,4 @@ // --- Lower extremity (research Table 2) --- | ||
| "rotate-out": { min: 0, max: 45 }, | ||
| "twist-left": { min: 0, max: 45 }, | ||
| "twist-right": { min: 0, max: 45 }, | ||
| }, | ||
@@ -73,2 +79,4 @@ chest: { | ||
| "rotate-out": { min: 0, max: 35 }, | ||
| "twist-left": { min: 0, max: 35 }, | ||
| "twist-right": { min: 0, max: 35 }, | ||
| }, | ||
@@ -82,3 +90,18 @@ neck: { | ||
| "rotate-out": { min: 0, max: 80 }, | ||
| "twist-left": { min: 0, max: 80 }, | ||
| "twist-right": { min: 0, max: 80 }, | ||
| }, | ||
| // The head control is the upper-cervical share of motion, not a second full | ||
| // neck. Conservative limits prevent neck+head targets from silently doubling | ||
| // the complete cervical range. | ||
| head: { | ||
| flex: { min: 0, max: 25 }, | ||
| extend: { min: 0, max: 25 }, | ||
| abduct: { min: 0, max: 20 }, | ||
| adduct: { min: 0, max: 20 }, | ||
| "rotate-in": { min: 0, max: 40 }, | ||
| "rotate-out": { min: 0, max: 40 }, | ||
| "twist-left": { min: 0, max: 40 }, | ||
| "twist-right": { min: 0, max: 40 }, | ||
| }, | ||
| // --- Hand / fingers (single-DOF curl per finger) --- | ||
@@ -96,3 +119,3 @@ index: { flex: { min: 0, max: 100 }, extend: { min: 0, max: 20 } }, | ||
| }; | ||
| import { actionAxis, boneType, flexionSign, isLeft } from "./joints.js"; | ||
| import { ACTION_NAMES, actionAxis, boneType, expandJoint, flexionSign, isLeft, } from "./joints.js"; | ||
| /** Look up the ROM limit for a bone + action, or null if undefined. */ | ||
@@ -105,3 +128,26 @@ export function romFor(boneId, action) { | ||
| } | ||
| /** True when an anatomical action is defined for this concrete bone. */ | ||
| export function isActionAllowed(boneId, action) { | ||
| return romFor(boneId, action) !== null; | ||
| } | ||
| /** | ||
| * Actions valid for every bone represented by a DSL joint/group name. The | ||
| * intersection makes completions for heterogeneous groups such as `fingers` | ||
| * safe: thumb-only abduction is not offered for all fingers at once. | ||
| */ | ||
| export function actionsForJoint(joint) { | ||
| const bones = expandJoint(joint); | ||
| if (bones.length === 0) | ||
| return []; | ||
| const axial = bones.every((bone) => AXIAL_TYPES.has(boneType(bone))); | ||
| return ACTION_NAMES.filter((action) => (!axial || (action !== "rotate-in" && action !== "rotate-out")) && | ||
| bones.every((bone) => isActionAllowed(bone, action))); | ||
| } | ||
| const AXIAL_TYPES = new Set(["spine", "chest", "neck", "head"]); | ||
| /** True for the accepted-but-deprecated ambiguous axial rotation spelling. */ | ||
| export function isLegacyAxialAction(boneId, action) { | ||
| return AXIAL_TYPES.has(boneType(boneId)) && | ||
| (action === "rotate-in" || action === "rotate-out"); | ||
| } | ||
| /** | ||
| * The full ROM of a bone expressed as a signed Euler box in the renderer's | ||
@@ -112,4 +158,4 @@ * local frame: the same frame `clamp.ts` resolves authored actions into | ||
| * `{min: 0, max: 0}`, locking them (a knee is a pure hinge). This is what lets | ||
| * the IK solver honour the same hard limits as authored angles: any solved | ||
| * joint rotation clamped into this box is inside the healthy ROM. | ||
| * the IK solver honour the same configured limits as authored angles: any | ||
| * solved joint rotation clamped into this box is inside that ROM box. | ||
| * | ||
@@ -116,0 +162,0 @@ * Returns null for bones without ROM data (e.g. `head`). |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"rom.js","sourceRoot":"","sources":["../src/rom.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"rom.js","sourceRoot":"","sources":["../src/rom.ts"],"names":[],"mappings":"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"} |
+6
-5
@@ -10,2 +10,3 @@ /** | ||
| import { z } from "zod"; | ||
| import { MOVEMENT_KINDS, PROP_TYPES, RIG_NAMES, START_POSE_NAMES, } from "./protocol.js"; | ||
| export const MODES = ["flow", "settle", "drive", "snap", "linear"]; | ||
@@ -64,9 +65,9 @@ /** Deprecated easing names → canonical mode. Kept so existing docs never break. */ | ||
| const docSchema = z.object({ | ||
| kind: z.string().min(1), | ||
| kind: z.enum(MOVEMENT_KINDS), | ||
| name: z.string().min(1), | ||
| rig: z.string().min(1), | ||
| startPose: z.string().optional(), | ||
| props: z.array(z.string()), | ||
| rig: z.enum(RIG_NAMES), | ||
| startPose: z.enum(START_POSE_NAMES).optional(), | ||
| props: z.array(z.enum(PROP_TYPES)), | ||
| repeat: z.number().int().positive(), | ||
| steps: z.array(stepSchema), | ||
| steps: z.array(stepSchema).min(1, "a Posecode document requires at least one step"), | ||
| }); | ||
@@ -73,0 +74,0 @@ /** |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAC;AAE5E,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAA+B;IAC7D,SAAS,EAAE,OAAO;IAClB,UAAU,EAAE,QAAQ;IACpB,aAAa,EAAE,QAAQ;IACvB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAU,CAAC;AAEjF,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAK,KAA2B,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO,EAAE,IAAI,EAAE,GAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACpD,CAAC;IACD,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACvC,oFAAoF;IACpF,IAAI,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,QAAQ,EAAE,CAAC;IAC5D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACrB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACnC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;CAC3B,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAE9B,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,IAAmB;IACpD,8DAA8D;IAC9D,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACvD,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"} | ||
| {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"} |
+10
-3
@@ -25,2 +25,8 @@ /** | ||
| euler: EulerDeg; | ||
| /** | ||
| * Euler channels explicitly authored by this target. Renderers merge only | ||
| * these channels into the carried pose; omitted channels retain their prior | ||
| * value. Absent on legacy/manually-built IR, where all channels are applied. | ||
| */ | ||
| axes?: Axis[]; | ||
| } | ||
@@ -38,5 +44,6 @@ /** | ||
| * A contact pin: translate the whole figure so `effector` sits on a fixed | ||
| * `anchor` (a prop anchor, a landmark, or `floor`). Unlike a reach (which moves | ||
| * the limb to a target) a pin moves the BODY, so the figure can hang from a bar, | ||
| * rise onto a box, or lower into a dip while the contact stays put. | ||
| * world `anchor` (a declared prop anchor or `floor`). Unlike a reach (which | ||
| * moves the limb to a target) a pin moves the BODY, so a body landmark cannot | ||
| * serve as its anchor: that landmark would move with the same root. Pins let the | ||
| * figure hang from a bar, rise onto a box, or keep one floor support fixed. | ||
| */ | ||
@@ -43,0 +50,0 @@ export interface PinTarget { |
+4
-2
| { | ||
| "name": "posecode-parser", | ||
| "version": "0.2.2", | ||
| "version": "0.3.0", | ||
| "description": "Parse the .posecode kinematic motion DSL into a validated, ROM-clamped intermediate representation.", | ||
@@ -45,3 +45,5 @@ "license": "Apache-2.0", | ||
| "dist", | ||
| "README.md" | ||
| "README.md", | ||
| "LICENSE", | ||
| "NOTICE" | ||
| ], | ||
@@ -48,0 +50,0 @@ "publishConfig": { |
+4
-3
@@ -59,5 +59,6 @@ # posecode-parser | ||
| `parse()` never throws: malformed or out-of-range documents come back as | ||
| structured `errors`/`warnings` instead. Every joint angle in `ir` is hard-clamped | ||
| to a healthy range of motion, so a hallucinated `knee: flex 200` renders at its | ||
| safe ceiling with a warning, never an anatomically impossible joint. | ||
| structured `errors`/`warnings` instead. Every joint angle in `ir` is clamped to | ||
| Posecode's configured range-of-motion bounds, so a hallucinated | ||
| `knee: flex 200` renders at the configured 144° ceiling with a warning. These | ||
| rig constraints are not a clinical safety assessment of the full movement. | ||
@@ -64,0 +65,0 @@ ## License |
Unidentified License
LicenseSomething that seems like a license was found, but its contents could not be matched with a known license.
155335
40.09%34
13.33%2044
37.46%67
1.52%1
Infinity%80
-20%