Repository navigation
feat: add lucy-vton-3.6 (realtime + batch) at 720p - #217
Conversation
Mirrors DecartAI/sdk#217. The model has been served in production since api#3660; api#4423 moved its realtime route onto the production lucy-realtime pool. This only makes it reachable through the typed SDK surface. - 1280x720 on both surfaces, fps 30 realtime / 20 video. - No supported_speeds: lucy-vton-3.6's ModelConfig declares no speed_tiers, so FAST_REALTIME_MODELS is deliberately unchanged. - lucy-vton-latest still resolves to lucy-vton-3.5; 3.6 is opt-in by name.
commit: |
Registers lucy-vton-3.6 on the realtime and video surfaces. The model is
already served in production; this change only makes it reachable through the
typed SDK surface.
- 1280x720 on both surfaces, fps {ideal:30,max:30} realtime / 20 video.
- No supportedSpeeds: lucy-vton-3.6 is not offered on the fast tier.
- lucy-vton-latest still resolves to lucy-vton-3.5, so its registry entries and
alias comments are untouched. 3.6 is opt-in by explicit name.
- lucy-vton-3.5 is unchanged; this is purely additive.
Also adds an "Adding a Model" runbook to AGENTS.md, since 3.5 had to be landed
twice after the first attempt advertised a resolution that did not match how
the model was served.
45551e3 to
61eb319
Compare
Mirrors DecartAI/sdk#217. The model is already served in production; this only makes it reachable through the typed SDK surface. - 1280x720 on both surfaces, fps 30 realtime / 20 video. - No supported_speeds: lucy-vton-3.6 is not offered on the fast tier, so FAST_REALTIME_MODELS is deliberately unchanged. - lucy-vton-latest still resolves to lucy-vton-3.5; 3.6 is opt-in by name.
Mirrors DecartAI/sdk#217. The model is already served in production; this only makes it reachable through the typed SDK surface. - 1280x720 on both surfaces, fps 30 realtime / 20 video. - No supportedSpeeds: lucy-vton-3.6 is not offered on the fast tier, so the fastModels set in ModelConfigTests is deliberately unchanged. - lucy-vton-latest still resolves to lucy-vton-3.5; 3.6 is opt-in by name. Both `allCases` overrides are hand-maintained, so they are updated explicitly; the two factory switches have no `default:` arm, so the compiler enforces them.
Mirrors DecartAI/sdk#217. The model is already served in production; this only makes it reachable through the typed SDK surface. - 1280x720 on both surfaces, fps 30 realtime / 20 video. - No supportedSpeeds: lucy-vton-3.6 is not offered on the fast tier, so the fast-capability pin in RealtimeModelsTest is deliberately unchanged. - lucy-vton-latest still resolves to lucy-vton-3.5; 3.6 is opt-in by name.
Mirrors DecartAI/sdk#217. The model is already served in production; this only makes it reachable through the typed SDK surface. - 1280x720 at 30 fps. - No fastSpeed: lucy-vton-3.6 is not offered on the fast tier, so the withFast set in test_models.cpp is deliberately unchanged. - lucy-vton-latest still resolves to lucy-vton-3.5; 3.6 is opt-in by name. kRealtime's std::array size literal goes 7 -> 8.
| * - `"lucy-2.1"` - Lucy 2.1 realtime video editing | ||
| * - `"lucy-2.5"` - Lucy 2.5 realtime video editing | ||
| * - `"lucy-vton-3.5"` - Lucy virtual try-on 3.5 (latest) | ||
| * - `"lucy-vton-3.5"` - Lucy virtual try-on 3.5 (what `"lucy-vton-latest"` resolves to) |
There was a problem hiding this comment.
i'd drop those so it wont run out of sync
There was a problem hiding this comment.
Done — dropped the parentheticals from both JSDoc lists, so they just name the models now.
Same reasoning as your docs note: the alias target is a moving server-side thing, and restating it next to each model is a line that silently goes stale when the alias moves. Also dropped the // No supportedSpeeds: ... comment on the 3.6 registry entry — the field being absent is the statement.
Applied the same comment removal to the python, Swift, Kotlin and C++ PRs so the five registries stay identical.
There was a problem hiding this comment.
lol thi agent go wild and start close the loop + comment by itself @AdirAmsalem
ANyway - done :)
Per review: the JSDoc option lists carried alias-resolution and opt-in notes that have to be re-edited every time the alias moves, and the registry entry explained the absence of a field that is simply absent. Both are state that can go stale without anything catching it.
…ce (#218) ## Description This repo is public, and four comments carried internal vocabulary: an internal service codename in three of them, and a pair of internal tracker ids in the fourth. None of it is needed to understand the code. | File | Change | | --- | --- | | `src/realtime/config-realtime.ts` | session-limit refusal comment now says "the server" | | `tests/realtime.unit.test.ts` | same wording in the test name and its comment | | `tests/e2e-realtime.test.ts` | `image_ref` prologue comment now says "the server" | | `tests/e2e.test.ts` | tracker ids dropped from the garment-fixture note; the explanation is kept | Found while reviewing #217 for the same problem. These are pre-existing and unrelated to that change, so they are split out here to merge independently. Sibling scrubs for the same class of issue: DecartAI/decart-ios#48 and DecartAI/decart-android#33. ## Verification - `pnpm --filter @decartai/sdk test` — 374 passed - `pnpm --filter @decartai/sdk format:check` — clean - Grep for the removed terms across the repo returns no hits Comments and one test name only; no behavior change. The renamed test is local to its file.
* feat: add lucy-vton-3.6 (realtime + batch) at 720p Mirrors DecartAI/sdk#217. The model is already served in production; this only makes it reachable through the typed SDK surface. - 1280x720 on both surfaces, fps 30 realtime / 20 video. - No supported_speeds: lucy-vton-3.6 is not offered on the fast tier, so FAST_REALTIME_MODELS is deliberately unchanged. - lucy-vton-latest still resolves to lucy-vton-3.5; 3.6 is opt-in by name. * chore: drop the comment explaining an absent field Per review: supported_speeds is simply not set for lucy-vton-3.6, so a comment saying so is state that can go stale without anything catching it.
* feat: add lucy-vton-3.6 (realtime + batch) at 720p Mirrors DecartAI/sdk#217. The model is already served in production; this only makes it reachable through the typed SDK surface. - 1280x720 on both surfaces, fps 30 realtime / 20 video. - No supportedSpeeds: lucy-vton-3.6 is not offered on the fast tier, so the fast-capability pin in RealtimeModelsTest is deliberately unchanged. - lucy-vton-latest still resolves to lucy-vton-3.5; 3.6 is opt-in by name. * chore: drop the comment explaining an absent field Per review on the JS SDK: supportedSpeeds is simply not set for lucy-vton-3.6, so a comment saying so is state that can go stale without anything catching it.
* feat: add lucy-vton-3.6 realtime model at 720p Mirrors DecartAI/sdk#217. The model is already served in production; this only makes it reachable through the typed SDK surface. - 1280x720 at 30 fps. - No fastSpeed: lucy-vton-3.6 is not offered on the fast tier, so the withFast set in test_models.cpp is deliberately unchanged. - lucy-vton-latest still resolves to lucy-vton-3.5; 3.6 is opt-in by name. kRealtime's std::array size literal goes 7 -> 8. * chore: drop the comment explaining an absent field Per review on the JS SDK: fastSpeed is simply not set for lucy-vton-3.6, so a comment saying so is state that can go stale without anything catching it.
* feat: add lucy-vton-3.6 (realtime + batch) at 720p Mirrors DecartAI/sdk#217. The model is already served in production; this only makes it reachable through the typed SDK surface. - 1280x720 on both surfaces, fps 30 realtime / 20 video. - No supportedSpeeds: lucy-vton-3.6 is not offered on the fast tier, so the fastModels set in ModelConfigTests is deliberately unchanged. - lucy-vton-latest still resolves to lucy-vton-3.5; 3.6 is opt-in by name. Both `allCases` overrides are hand-maintained, so they are updated explicitly; the two factory switches have no `default:` arm, so the compiler enforces them. * chore: drop the comment explaining an absent field Per review on the JS SDK: supportedSpeeds is simply not set for lucy-vton-3.6, so a comment saying so is state that can go stale without anything catching it.
Description
Registers
lucy-vton-3.6on the realtime and video surfaces. The model is already served in production — this change only makes it reachable through the typed SDK surface.Three things worth stating explicitly:
lucy-vton-lateststill resolves tolucy-vton-3.5. 3.6 is opt-in by explicit name. Bothlucy-vton-latestregistry entries and their comments are untouched.supportedSpeeds, and the fast-mode prose inREADME.md,src/realtime/client.tsand the playground speed dropdown is unchanged.lucy-vton-3.5is unchanged. Purely additive, so the publicRealTimeModels/VideoModels/CanonicalModelunions only widen.1280x720on both surfaces, fps{ideal: 30, max: 30}realtime and20video, matching what the API serves.Usage
Changes
src/shared/model.tsmodelInputSchemas, realtime + video registry entries, 2 JSDoc option listssrc/process/types.tslucy-vton-3.6into theVideoEdit2Inputsbranch ofModelSpecificInputsAGENTS.mdindex.htmlLucy VTON 3.6in the Canonical optgroup; custom-model placeholder moved offlucy-vton-3.6(it now names a real model, so it no longer demonstrates an unregistered one)tests/*listModels()21 → 23, per-surface registry tests, e2e coverageThe new unit tests assert
supportedSpeedsisundefinedon 3.6. The existingfastRealtimeModelsarray and its "does not set supportedSpeeds on any other model or surface" assertion are deliberately left at 4 entries — that pair is what catches a mistaken fast-tier entry.Why the runbook
This is the third VTON rollout across the same SDK repos with no written procedure, and one of them had to be reverted everywhere.
AGENTS.mdnow records the nine registration sites inmodel.ts, what each registry value must be confirmed against, the-latestalias rule, and whysupportedSpeedsmust match what the service actually offers (it is a billing claim, not a hint — an unsupported tier is rejected at connect time).Verification
pnpm --filter @decartai/sdk typecheckpnpm --filter @decartai/sdk testpnpm --filter @decartai/sdk buildpnpm --filter @decartai/sdk test:packagepnpm --filter @decartai/sdk format:checkLive tests (
tests/e2e.test.ts -t "lucy-vton-3.6",tests/e2e-realtime.test.ts) needDECART_API_KEYand run in CI on the org key.Compatibility
Source-compatible and additive. No existing model id, alias, geometry or capability changes.
listModels()returns 23 instead of 21.Follow-ups
Mirrored PRs in
decart-python,decart-ios,decart-androidanddecart-cpp, then the platform registry and docs — the latter is gated on this package being published.Note
Low Risk
Additive model registry and type union widening only; no changes to existing models, aliases, or fast-tier behavior for 3.5/latest.
Overview
Registers
lucy-vton-3.6on the typed SDK for realtime (/v1/stream) and queue video (/v1/generate+/v1/jobs), at 1280×720, so callers can usemodels.realtime("lucy-vton-3.6")andmodels.video("lucy-vton-3.6")without custom model overrides.lucy-vton-latestis unchanged (still 3.5); 3.6 is opt-in by explicit name.The realtime registry omits
supportedSpeedsfor 3.6 (unlike 3.5), reflecting that the fast tier is not offered. Process typings map 3.6 toVideoEdit2Inputslike other VTON/edit models.AGENTS.mdgains an Adding a Model runbook (registry sites, API verification,-latestaliases, release checklist). The playgroundindex.htmladds a canonical Lucy VTON 3.6 option. Unit and e2e tests cover registry metadata,listModels()count (21 → 23), and live queue/realtime paths.Reviewed by Cursor Bugbot for commit 983334b. Bugbot is set up for automated code reviews on this repo. Configure here.