Repository navigation
Published to npm on 2026-10-17 06:11 UTC.
0.8.0 — the One family, 2026-10-15
- Add the opt-in
onecharacter family: fourteen fun shapes (star,heart,
flower,cloud,droplet,squircle,diamond,clover,gumdrop,
hexagon,egg,blob,peanut,bean) in eighteen contrast- and
colour-vision-gated agent colours (color), pluscharcoal(Digital One, the
black circle), every head with one bar for an eye drawn only from agent-eye
geometry with its own eye styleagent-eye-v1. The shapes, their eye
placements, pivots, temperaments, default colours and never lists, and the
palette are generated from the pinned Ones' library (shapes.jsonsha256
894f801c…1767,palette.json76fa2016…c991), never edited by hand. A DID
selects a shape and a colour when no look is stored (oneLookForDid,
oneShapeForDid,oneColorForDid);nextOneLook(held, { group })fills a
team with the next free shape in its own colour, then free colours in team
order, then the least held, in another group first;getOneShapes,
getOneColors,ONE_SHAPE_ORDER,ONE_DIGITAL,isOneShape,isOneColor,
isOneKindandisOneColorAllowedexpose the library. The eleven never pairs
(a shape in a colour that reads as a sign) are refused in options, stored
appearance, identity documents, the light entry, the CLI and the HTTP API,
never changed;CharacterAppearancegainscolorfor the One family only, and
a stored colour needs its shape. Autos stays the default; every existing
family, kind, colour, stored profile and DID seed renders exactly as in 0.7.3. - Draw Digital One as the black circle
#141b16on every surface: the eye cut
out to the surface on light; a chalk eye and a chalk rim at 44 % (1 CSS px
inside the edge, 2 px from 96 px, never a device pixel) on dark. No agent is a
circle and no agent is black. Each agent colour is one value on light and dark
surfaces, with no dark tones; the line comes from the disc (paper on the six
deep colours, ink on the twelve bright ones, at 4.5:1 or more) and a keyline in
the colour's own hue is drawn on light surfaces only, exactly where the disc
alone falls under 3:1, as an exact inset of the outline, never a clip. The
shape's temperament paces its moves; the body squashes and hops about the
shape's pivot; the eye is placed and limited by the library, holds a wide eye
level in an agent shape, and stays at least ten units inside every shape in
every frame of every move; no One shows a smile or mouth line at 24 px or
smaller. - List eye styles per family in the catalog (
live-v1on the two-eyed families,
agent-eye-v1on One) and refuse a style that belongs to another family in
options, stored appearance, identity documents, the HTTP API and OpenAPI. - Map the shared status timeline to One faces and moves: working reads along,
reasoning glances up and ponders, typing taps, attention looks at the viewer,
success smiles with a happy squint (40 px and up) or nods, paused dozes (a lid
and slumped body at 64 px and up), error goes dizzy, speaking talks with an
opaque mouth line under a full smile from an optional voice level. Idle with no
content direction is the warm face, so needs-you is the only face that looks
straight out. A blink at the viewer shuts tilted, never as a level bar. Every
move withdraws a visible smile line before it moves the eye. - Render One heads from 16 px (every other family keeps 32 px) in the SDK,
animator, player, CLI and HTTP API, with the plan's size tiers. - Render a decorative still glyph for servers, images and reduced motion, with
no element identifiers: Digital One's eye is cut out of its disc with the
even-odd rule. Stills carrydata-one-shapeanddata-one-colorfor
forced-colours styles and keep finish, eye placement and accessories in the
descriptor without drawing them. - Run live One heads on one shared, sleeping animation-frame ticker per window
with one IntersectionObserver and one ResizeObserver: nothing moves at rest or
out of view, one head per list and three per window move at once, ongoing work
moves for at most five seconds in lists (cadence: 'brief', each cluster
measured first) or in clusters in headers (cadence: 'repeat'), and reduced
motion holds every face still. Repaints never advance a move, so a head is
never stranded as moving.follow: truelets an eye follow a fine pointer
without counting as a move; a head takes over a still One rendered in its
element. The animator exposesframe.onefor DOM-free renderers. - Add the light entry
@openagentid/sdk/one(renderOne,mountOne, the shape
and colour helpers) and@openagentid/sdk/browser/one, the live runtime alone
at 18.9 KB gzipped, which never hashes a DID, with blank heads for ready-made
agents (drawn in the shape they will get) and their First blink.npm run size
enforces 20 KB for it (the circles-only runtime was 15.1 KB; the shape library
and palette add 3.7 KB that no code change removes, above the One app's 16 KB
script budget, which is to be revisited) and 65 KB for the all-family browser
bundle, now minified like the One runtime: 53.6 KB with the shape library
(63.1 KB unminified in 0.7.3). - Add
typing,attention,pausedandofflinestatuses for every family,
theme: 'light' | 'dark'andlabelrendering options, and--themein the
CLI. The HTTP API acceptstheme(neverlabel); OpenAPI 0.8.0 documents the
family, its kinds and colours, its eye style, sizes, statuses and theme. - Port agent-eye's pure geometry and motion to TypeScript with its provenance:
the master (sha256 83cc379a…bba4), written by JR and contributed by its copyright
holder L1fe Labs, Inc. under Apache-2.0 OR MIT, is a byte-identical test
fixture; the port is compared with it and its containment check runs over
every held face and every frame of every move, from every face and when a move
cuts a smile or talk short. - Compatibility: SDK 0.7.3 and earlier reject identity documents whose
avatarSkinuses skinoneor eye styleagent-eye-v1(IDENTITY_RESOLVE_FAILED).
Keep One looks ({ shape, color }) in the application's own agent records
until every reader upgrades. - Pin create-openagent 0.6.0 to SDK 0.8.0; its family picker lists One, and the
public onboarding verifier checks the One family in the generated starter. - One heads take gestures from their host:
play(gesture, { viewer? })on the
light entry's player playslookAtYou,nod,smile,wave,shrugor
popInand returns to the held face, for arrivals (which take a motion slot,
and wait up to 1.5 s for a head that is not yet in view) and a hero's tap ladder
(viewer: true, at once). Nothing plays under reduced motion or out of view,
and a head that needs the viewer only looks at them or nods. - Typing repeats in headers and heroes like every ongoing state, one cluster every
six to ten seconds, instead of back to back. - One mover per group now holds without exception. A dropped move no longer
glides to the held face beside the head that kept it waiting: it switches
straight to it, one held face per group at a time. A cadence cut short keeps
its slot while it settles. The viewer's own acts (a tap, a new colour, First
blink) still skip the window's cap but wait for their group, so agents added
together blink open one at a time. The next move in a group starts a beat
(about 100 ms) after the last one ends, never in the same frame. - The palette gates are the library's: every line at 4.5:1 or more on its disc,
every disc or keyline at 3:1 or more on the four light surfaces and every disc
at 3:1 or more on the six dark surfaces of the One app and website, and every
colour at least CIEDE2000 25 from Digital One, 18 from One Humanoid's amber,
12 from its glow and from the needs-you green, 10 from danger, from Google's
logo, Material, 2014–15 and 2015 logo colours and from every other agent
colour. The smallest colour-vision distance among Digital One and the first
five colours is 17.4; the first eight and twelve keep 10.7 and 4.9. The HTTP API
and OpenAPI 0.8.0 acceptcolorand returnoneColoron One descriptors; the
CLI takes--color; the public onboarding verifier renders the shapes live.
The hosted demo (services/character-api/demo.*) names the One kinds as
people see them (Square, Drop, Digital One) and adds a colour control that
offers only the colours the shape in use allows, passed to the player, the
query and the body; its service test covers the kinds, the colours and the
refusals over HTTP.
Packages in this release
| Package | Version | |
|---|---|---|
@openagentid/sdk |
0.8.0 | published 2026-10-17 06:11 UTC |
@openagentid/sdk-testing |
0.1.3 | published 2026-10-17 06:10 UTC |
@openagentid/http |
0.2.1 | published 2026-10-17 06:11 UTC |
@openagentid/mcp |
0.2.1 | published 2026-10-17 06:16 UTC |
@openagentid/claude-agent |
0.2.1 | published 2026-10-17 06:11 UTC |
@openagentid/scim |
0.2.1 | published 2026-10-17 06:11 UTC |
@openagentid/oidc |
0.2.0 | unchanged |
@openagentid/crypto-wasm |
0.1.2 | unchanged |
create-openagent |
0.6.0 | published 2026-10-17 06:11 UTC |
Source and verification
This tag points at fc1a6a4, the merge of #21 on main. npm records it as gitHead. Every source embedded in the SDK tarball's sourcemaps, and each package's manifest, README, CHANGELOG and licenses, match this commit byte for byte. These versions were published by hand before the release workflow existed, so they carry no provenance attestation. The attached tarballs are the files npm serves (their sha512 equals npm's integrity):
gh release download v0.8.0 --repo OpenAgentID/openagent-sdk
shasum -a 256 -c SHA256SUMS