mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-08-04 14:57:42 +00:00
Three findings from the self-review's completeness pass. A skill whose STORED SKILL.md already carried a malformed flag became unsavable. `validateBodyDerivedColumns` ran on every body-carrying update, and the skill editor resubmits the whole file on every save, so a body containing `user-invocable: yes` rejected edits to unrelated fields — the user could not even fix the description. Those documents exist precisely because pre-fix import returned 201 for that value, and `yes`/`no`/`on`/`off` read as booleans in YAML 1.1, so it is an ordinary authoring shape. The stored-body scan is now taken before validation and a flag that was already malformed no longer blocks the save; a value this edit introduces is still rejected. The end-to-end spec never ran in CI: `test:ci` ignores `\.*integration\.`, and the named integration scripts are scoped to cache, s3 and agents, so the only test asserting the issue's reproduction against a real `createSkill` was skipped everywhere. Renamed to `import.db.spec.ts`, matching the several packages/api specs that already boot MongoMemoryServer in the default run. Parity between the two frontmatter readers was asserted only in a commit message. `parity.db.spec.ts` now feeds 23 shapes through both the upload path and the inline-body path and requires identical columns, with the two known asymmetries pinned as their own cases: tab indentation, which only the YAML parser rejects, and duplicate keys differing in case, which the file leaves ambiguous. Neither can release a restriction. Skill validation failures now carry `message`, as the import handler already did. The client falls back to a generic string when it is absent, so a rejected flag line was previously undiagnosable from the UI. |
||
|---|---|---|
| .. | ||
| api | ||
| client | ||
| data-provider | ||
| data-schemas | ||