Feat/cli skill sync - #165
Merged
Merged
Conversation
…/finetune/deploy - Add `bl deploy pause` and `bl deploy resume` (console domain, first console-auth commands in deploy group) via modelInstance start/stop APIs - Add core deploy/lifecycle.ts with input-wrapped console gateway calls - Switch all dataset/finetune/deploy commands to JSON-only output, removing text formatting logic - Expose usage/charge_type in finetune get, model_name/expire_time in finetune checkpoints with near-expiry warning - Update deploy delete hint to suggest `bl deploy pause`
- Rename for clarity: finetune --model → --base-model (create/price/ capability/list); deploy create --model → --model-name, --name → --display-name - Add `finetune price` (console domain) for pre-training cost estimate (sft/dpo/cpt) - Add actual training cost (fee.ts) enriched into finetune get/watch from catalog price × reported usage
…ulation - Add finetune video create subcommand (wan2.7/2.5/2.2 i2v + kf2v) - Align video hyperparams with official docs (n_epochs=50, per-model batch_size/max_pixels) - Add --last-frame flag to video generate for kf2v (image2video endpoint) - Fix wan2.1-2.6 i2v input format (img_url instead of media[]) - Add training_cost field to finetune get/watch (catalog ft price, API-key domain only) - Add --aigc-* flags to deploy create (optional, for video LoRA prompt config)
…an-out Previously, fan-out skipped any existing real directory not recorded in the lock file, treating it as user content. This left stale skill copies installed by other tools (e.g. npx skills add) permanently out of date. Now: if the directory contains a SKILL.md, it is recognized as a skill artifact and replaced with a symlink to the canonical dir. Directories without SKILL.md are still preserved (user content safety boundary).
finetune video create passed a fixed modality "video" to the profile validator without probing the data for last_frame_path. This caused a false KF2V_DATA_MISMATCH error when training kf2v models (wan2.2-kf2v-*) with datasets that correctly contain last_frame_path. Add sub-variant detection symmetric to the existing image-i2i upgrade: when a local file is provided, detectModality() inspects the first record and upgrades "video" → "video-kf2v" if last_frame_path is present.
- Support content array format [{text/image/video}] alongside legacy string
- Add tool role support with tool_calls structure and tool_call_id validation
- Add thinking tag placement check (only in last assistant message)
- Add OpenAI migration guards: warn on unsupported name/weight fields
- Add loss_weight range validation (0.0–1.0)
- Fix size limits: SFT/DPO 200MB, CPT 300MB, media ZIP 2GB
- Enforce data.jsonl at ZIP root (reject nested wrapping folders)
- Add ZIP filename constraints: charset [a-zA-Z0-9_-], length ≤120, uniqueness
- Add .tif to accepted image extensions
- Add DPO_LAST_MSG_NOT_USER warning when messages don't end with user role
- CPT profile now uses dedicated 300MB cap instead of shared default
- Expand unit tests from 19 to 45 covering all new validation paths
Reviewed against the official text-tuning data rules; fixes two confirmed mismatches and fills enforcement gaps: - thinking: exempt assistant messages carrying tool_calls from the THINK_TAG_NOT_LAST check — the spec's tool+thinking combo example puts <think> on a non-last assistant and was previously false-flagged - DPO support matrix: reject image/video content items, tools, tool_calls and role:tool (DPO_UNSUPPORTED_ELEMENT); also scan chosen/rejected - DPO: messages not ending with user upgraded warning -> error - OpenAI migration: name/weight upgraded warning -> error (spec: must not carry); drop dead record-level name branch - tool_call_id: unmatched tool response upgraded warning -> error (one-to-one per spec); new TOOL_CALL_NO_RESPONSE warning for orphan calls - loss_weight: validate range at message level too; warn when placed on anything but the last assistant message (LOSS_WEIGHT_PLACEMENT) - video params: fps/sample_fps must be within [0.1, 10] (INVALID_VIDEO_FPS); mode-mismatched params warned (VIDEO_PARAM_MODE_MISMATCH); video_start/video_end type-checked - zip: skip macOS packaging metadata (__MACOSX/, .DS_Store, ._*) in filename constraints and image counting to stop false failures on Finder-created archives Tests 45 -> 59 covering every new/changed rule, including a replica of the spec's official tool+thinking example.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.