Skip to content

feat: remove legacy lucy-clip model ID (and lucy-clip-latest, lucy-pro-v2v) - #223

Merged
AdirAmsalem merged 2 commits into
mainfrom
conductor/add-model-everywhere-1
Oct 14, 2026
Merged

AdirAmsalem merged 2 commits into
mainfrom
conductor/add-model-everywhere-1

Conversation

@AdirAmsalem

@AdirAmsalem AdirAmsalem commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Description

Removes the legacy Lucy Clip model from the SDK: the canonical lucy-clip, the server-resolved lucy-clip-latest alias, and the deprecated lucy-pro-v2v alias (which resolved to lucy-clip). New video-to-video work should use lucy-latest (currently Lucy 2.5) or lucy-2.5.

Same shape as #205 (retired lucy-vton-2 / lucy-vton-3).

Changes

File Change
src/shared/model.ts drops the three ids from CANONICAL_MODEL_NAMES, CANONICAL_VIDEO_MODEL_NAMES, the videoModels union, modelAliases, modelInputSchemas and the video registry; deletes the clip-only videoEditSchema (internal, unused now)
src/process/types.ts removes the lucy-pro-v2v / lucy-clip branch of ModelSpecificInputs and the internal VideoEditInputs; lucy-latest now gets VideoEdit2Inputs docs instead of the generic video docs, which described the 5-second clip limit
src/queue/client.ts, src/create-client.ts, src/tokens/client.ts, README.md JSDoc and README samples use lucy-latest
AGENTS.md model lists and the -latest alias note no longer mention lucy-clip
examples/ express-api, hono-edge, sdk-core video examples use lucy-latest
tests/unit.test.ts queue/token tests that used lucy-pro-v2v as a generic video model use lucy-latest; alias and deprecation tests use lucy-restyle-v2v; listModels() count 23 → 20; drops the lucy-clip and lucy-clip-latest assertions
tests/e2e.test.ts drops the lucy-clip-latest job (lucy-latest is already covered)
packages/proxy tests pass-through job paths use /v1/jobs/lucy-latest

Verification

Command Result
pnpm --filter @decartai/sdk typecheck pass
pnpm --filter @decartai/sdk test 384 passed (15 files)
pnpm --filter @decartai/sdk build pass
pnpm --filter @decartai/sdk test:package pass
pnpm --filter @decartai/sdk format:check 86 files, clean
pnpm --filter @decartai/proxy test 36 passed
tsc --noEmit in examples/{express-api,hono-edge,sdk-core} pass; against this build the previous models.video("lucy-clip") calls fail to type-check, as intended
grep -rniE 'lucy-clip|lucy_clip|pro-v2v' over packages/ and examples/ no matches

The live e2e was not run locally because no DECART_API_KEY was available.

Compatibility

models.video("lucy-clip" | "lucy-clip-latest" | "lucy-pro-v2v") no longer type-checks or resolves, and the three names drop out of the VideoModels and CanonicalModel unions. Use lucy-latest or lucy-2.5; their input shape (prompt, data, optional reference_image) covers what lucy-clip accepted. No other model's ids, geometry or types change.

Also in this PR

fix(types): ModelSpecificInputs only listed the canonical and deprecated names, so lucy-restyle-latest and lucy-image-latest fell through to the generic fallbacks.

  • lucy-restyle-latest inherited prompt: string from the generic video docs, which made prompt required. A reference-image-only restyle (queue.submit({ model: models.video("lucy-restyle-latest"), reference_image, data })) failed to type-check, although the same call on lucy-restyle-2 compiles. It now maps to VideoRestyleInputs.
  • lucy-image-latest now maps to ImageEditingInputs instead of the text-to-image docs.
  • The generic VideoModelInputs docs no longer say output is limited to 5 seconds; that limit was lucy-clip's.

Checked by compiling that queue.submit call against src/ before (TS2345, missing prompt) and after (clean). The repo has no type-level test harness (tsc covers src/ only), so no test was added. typecheck, 384 unit tests, build, test:package and format:check pass.


Note

Medium Risk
This is a breaking SDK API change for anyone still targeting the removed model IDs; runtime behavior for other models is unchanged aside from docs and example defaults.

Overview
Removes the legacy Lucy Clip video model from @decartai/sdk: canonical lucy-clip, alias lucy-clip-latest, and deprecated lucy-pro-v2v (which mapped to clip). The model registry, Zod unions, modelInputSchemas, and the clip-specific videoEditSchema are deleted; listModels() drops from 23 to 20 entries.

lucy-latest is now the documented default for short video-to-video / queue examples (README, JSDoc, express/hono examples, sdk-core samples). Its inputs are typed with VideoEdit2Inputs (same as Lucy 2.x) instead of the old clip docs that mentioned a 5-second output cap.

Breaking for callers still using models.video("lucy-clip" | "lucy-clip-latest" | "lucy-pro-v2v") — those IDs no longer type-check or resolve. Migration path: lucy-latest or lucy-2.5. Tests and proxy fixtures were updated to hit /v1/jobs/lucy-latest; e2e drops the lucy-clip-latest case.

Reviewed by Cursor Bugbot for commit bd87ec8. Bugbot is set up for automated code reviews on this repo. Configure here.

…o-v2v)

- Remove `lucy-clip`, the server-resolved `lucy-clip-latest` alias and the
  deprecated `lucy-pro-v2v` alias (-> lucy-clip) from the canonical enums,
  zod unions, `modelAliases`, `modelInputSchemas`, the video registry and
  `ModelSpecificInputs`. The clip-only `videoEditSchema` / `VideoEditInputs`
  (internal, not exported) go with them.
- `lucy-latest` now maps to `VideoEdit2Inputs` in `ModelSpecificInputs`
  (it is server-resolved to lucy-2.5) instead of the generic video docs.
- Examples, README and JSDoc samples use `lucy-latest`; queue/token/proxy
  tests that used lucy-pro-v2v as a generic video model use `lucy-latest`;
  deprecated-alias tests use `lucy-restyle-v2v`.
- `listModels()` now returns 20 entries.
@pkg-pr-new

pkg-pr-new Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@decartai/sdk@223

commit: bd87ec8

…l's input docs

`ModelSpecificInputs` only listed the canonical and deprecated names, so the
two `-latest` aliases fell through to the generic fallbacks. For
`lucy-restyle-latest` that fallback declares `prompt: string`, which made
`prompt` required and rejected a reference-image-only restyle
(`queue.submit({ model: models.video("lucy-restyle-latest"), reference_image, data })`)
that `lucy-restyle-2` accepts. `lucy-image-latest` showed the
text-to-image docs instead of the image-editing ones.

Also drops the "limited to 5 seconds" note from the generic
`VideoModelInputs` docs; that limit belonged to lucy-clip.
@AdirAmsalem
AdirAmsalem merged commit d9b2084 into main Oct 14, 2026
5 checks passed
@AdirAmsalem
AdirAmsalem deleted the conductor/add-model-everywhere-1 branch October 14, 2026 06:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant