feat: Add Be and tbd skill, also added Roadmap file

This commit is contained in:
2026-05-10 16:32:12 -04:00
parent 3500ade13f
commit 0bb8885802
29587 changed files with 10611695 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
/**
* @description Enum of animation states
* @typedef AnimationState
* @prop INVALID
* @prop PLAYING
* @prop STOPPED
* @prop STOPPING
* @prop CANCELLED
* @prop PAUSED
* @prop RESUMED
* @prop STARTED
* @prop REJECTED
*/
/**
* @interface AnimationInstanceEvents
* @description Typed Events for an `AnimationInstance`.
* @prop {Event<Object>} general Emits when any other event occurs. Passes in an object with
* a `name` property, which is the event name, and a `payload`
* property, which is the payload of the event.
* @prop {Event<Object>} audio Emits when animation encounters an audio event. Passes in an
* object with a `file` property.
* @prop {Event<Object>} pixi Emits when animation encounters a pixi event. Passes in an
* object with a `file` property.
* @prop {Event<void>} holdSafe Emits when the animation encounters a "HOLD_SAFE" event.
* @prop {Event<void>} stopped Emits when the animation stops. Usually use the resolution of `play`
* to determine when this happens.
* @prop {Event<void>} started Emits when the animation starts.
* @prop {Event<void>} cancelled Emits when the animation is canceled by a higher priority system.
* @prop {Event<void>} rejected Emits when the animation is is rejected since a higher priority
* animation is currently playing.
*/
/**
* Handle to an animation instance. Can only be played *once*.
* @class AnimationInstance
*/
/**
* Set of animation event emitters.
* @type {AnimationInstanceEvents}
* @name AnimationInstance#events
*/
/**
* Current state of the animation.
* @type {AnimationState}
* @name AnimationInstance#state
*/
/**
* Set of dofs this animation acts on.
* @type {DOFSet}
* @name AnimationInstance#dofs
*/
/**
* Plays this animation on the robot.
* @param {string} [requestor='Behavior'] The system making the animation request.
* @returns {Promise<PlayStatus>} Resolves when the animation is finished playing or is canceled.
* @method AnimationInstance#play
*/
/**
* Stops this animation if it is running.
* @returns {Promise<void>} Resolves when the animation is stopped.
* @method AnimationInstance#stop
*/
/**
* Pauses this animation if it is running.
* @returns {Promise<void>} Resolves when the animation is paused.
* @method AnimationInstance#pause
*/
/**
* Resumes this animation if it is paused.
* @returns {Promise<void>} Resolves when the animation is resumed.
* @method AnimationInstance#resume
*/
/**
* Removes all event listensers and
* @method AnimationInstance#destroy
*/

View File

@@ -0,0 +1,45 @@
/**
* A representation of a set of Degrees of Freedom (DOFs).
* @class DOFSet
*/
/**
* Creates a new DOFSet containing all the DOFs of this
* DOFSet, plus all the DOFs of the set passed in. Duplicates
* are included only once (union of the sets).
* @method DOFSet#plus
* @param {DOFSet|string} otherSet - Set to add: either the name of the set or the actual DOFSet.
* @returns {DOFSet} Union of this and `otherSet`.
*/
/**
* Creates a new DOFSet containing all the DOFs of this
* DOFSet that are not present in `otherSet`.
* @method DOFSet#minus
* @param {DOFSet|string} otherSet - Set to subtract: either the name of the set or the actual DOFSet.
* @returns {DOFSet} DOFSet containing DOFs of this set that are not in the argument set.
*/
/**
* Get the DOFs from this set as an array of strings.
* @method DOFSet#getDOFs
* @returns {string[]}
*/
/**
* Check if this DOFSet contains a particular DOF.
* @method DOFSet#hasDOF
* @param {string} dofName - DOF name to test for membership in this set.
* @returns {boolean} `true` if this DOFSet has this dof.
*/
/**
* @interface DOFSets
* @prop {DOFSet} ALL
* @prop {DOFSet} BASE
* @prop {DOFSet} BODY
* @prop {DOFSet} EYE
* @prop {DOFSet} LED
* @prop {DOFSet} OVERLAY
* @prop {DOFSet} SCREEN
*/

View File

@@ -0,0 +1,152 @@
/**
* @description
* Jibo's Expression Client
* @namespace jibo.expression
*/
/**
* @interface ExpressionEvents
* @description Typed Events for expression module (`jibo.expression.events`)
* @prop {Event<DOFEventData>} dofs
* @prop {Event<KinematicFeatures>} kinematics
*/
/**
* Results returned when await face is resolved.
* @interface DOFEventData
* @prop {number[]} timestamp
* @prop {Object} dofValues Associative array of dof names to values.
* @prop {Object} metadata Any metadata associated with display values.
*/
/**
* A set of event emitters that capture high frequency updates from the expression service
* @type {ExpressionEvents}
* @name jibo.expression#events
*/
/**
* A convienent assortment of DOF sets for playing animations.
* @type {DOFSets}
* @name jibo.expression#dofs
*/
/**
* The most current `KinematicFeatures` received by the expression client.
* @type {KinematicFeatures}
* @name jibo.expression#features
*/
/**
* The Jibo runtime.
* This should not be a part of the external API.
* @private
*/
/**
* Creates an animation object on the expression server. If no `cacheName` is added, this animation will
* persist on the server forever. Returns a `Promise` that resolves to an `AnimationInstance`.
* @param {AnimationOptions} options Options to specify.
* @returns {Promise<AnimationInstance>} Resolves to an `AnimationInstance`.
* @method jibo.expression#createAnimation
*/
/**
* Creates and immediately plays an animation on the expression server.
* Returns a `Promise` that resolves to an `AnimationInstance`.
* Event handlers for `stopped`, `cancelled`, `rejected`, and other animation events must be registered to the
* `AnimationInstance` immediately (in-stack) upon promise resolution, or else they may be missed.
* @param {AnimationOptions} options Options to specify.
* @param {string} [requestor='Behavior'] The system making the animation request.
* @returns {Promise<AnimationInstance>} Resolves to an `AnimationInstance`.
* @method jibo.expression#createAndPlayAnimation
*/
/**
* Destroys caches saved in the expression service.
* @param {(string|string[])} cacheNames A cache name or array of cacheNames to destroy.
* @returns {Promise<void>}
* @method jibo.expression#destroyCaches
*/
/**
* @description Move Jibo's face to look at a target.
* @method jibo.expression#acquireTarget
* @param {AcquireOptions} options Options to specify.
* @returns {Promise<AcquireHandle>}
*/
/**
* Sets the mode of attention.
* @param {AttentionMode} mode Mode to set.
* @returns {Promise<void>}
* @method jibo.expression#setAttentionMode
*/
/**
* Sets the mode governing the attention system's behavior for a bounded time period.
* Returns a promise to an `AttentionHandle` which MUST have `release()` called on it when
* the caller is finished with the mode.
*
* Modes are maintained in a stack: the most recent call to `pushMode` will always win, and when
* a handle is released, it will drop down to mode of the highest non-released mode.
*
* Mode stack is fully cleared when `setMode` is called, and that mode becomes the base mode
* for when a stack is fully released.
*
* @method jibo.expression#pushAttentionMode
* @param {AttentionMode} mode - The new attention system mode: `IDLE`, `ENGAGED`, `SPEAKING`, `OFF`, etc.
* @return {Promise<AttentionHandle>} The handle for this mode request. MUST call `release()` on this handle when finished.
*/
/**
* Gets the current mode of the attention system.
* @method jibo.expression#getAttentionMode
* @returns {AttentionMode} The current attention system mode.
*/
/**
* Sets the color of the LED.
* @param {number[]} color An array or RGB values with range of `[0,1]`.
* @method jibo.expression#setLEDColor
* @returns {Promise<void>}
*/
/**
* Asynchronously waits for a face to appear.
* Returns a promise that resolves to a cancelable handle with a promise that will resolve when a face is detected or timeout is reached.
* Faces that are already in view "count" - so, the command may resolve quickly if people are already present.
* @method jibo.expression#awaitFace
* @param {AwaitFaceOptions} options - Options to specify.
* @return {Promise<AwaitFaceHandle>} A promise that resolves to a cancelable command handle.
*/
/**
* Centers the robot in an upright position.
* @param {CenterOptions} [options] Options to specify.
* @method jibo.expression#centerRobot
* @returns {Promise<void>} Resolves when done centering.
*/
/**
* Cleans up the currently animated state, centering the robot and releasing ownership for the next use site.
* @param {CleanupOptions} [options] Cleanup options.
* @method jibo.expression#cleanup
* @returns {Promise<void>} Resolves when the cleanup command is sent to the expression system.
*/
/**
* Fully indexes the robot.
* @returns {Promise<IndexRobotResult>} Resolves when done indexing.
* @method jibo.expression#indexRobot
*/
/**
* Makes Jibo perform a procedural blink.
* @returns {Promise<void>} Resolves when the expression system receives the blink command.
* @method jibo.expression#blink
*/
/**
* Allow or disallow the expression service to move into a final pose when shutting down.
*/

View File

@@ -0,0 +1,10 @@
/**
* @description A handle that resolves when a target is aquired.
* @class AcquireHandle
*/
/**
* Cancel the acquire target request
* @method AcquireHandle#cancel
* @returns {Promise<void>}
*/

View File

@@ -0,0 +1,10 @@
/**
* Releasable handle for attention mode stack.
* @class AttentionHandle
*/
/**
* @description When called, releases this attention mode and set the previous mode from the stack.
* @method AttentionHandle#release
* @returns {Promise<void>}
*/

View File

@@ -0,0 +1,16 @@
/**
* Cancelable handle for awaiting for a face.
* @class AwaitFaceHandle
*/
/**
* A promise that resolves when a face is found.
* @name AwaitFaceHandle#promise
* @type {Promise<AwaitFaceResult>}
*/
/**
* Cancel the await face request.
* @method AwaitFaceHandle#cancel
* @returns {Promise<void>}
*/

View File

@@ -0,0 +1,5 @@
/**
* Set of attention modes to pass to the attention APIs.
* @type {AttentionMode}
* @name jibo.expression#AttentionMode
*/