✨ feat: 灵台引擎脾神(hj_transform)确定性 Markdown 解析器(WP-15)

- C ABI 新增 hj_transform_version / hj_transform_markdown(契约登记同步);HjBuffer 真实实现(头部+紧随数据)
- v1 解析(hunjing-markdown-v1):fenced code/mermaid 提取、独占行 $$ 块级数学、未闭合结构保持源码态、其余归并 markdown block;canonical JSON 键序确定、UTF-8 校验、1MiB/256 block/64KiB 行硬限额
- 引擎内部设施抽取(engine_internal.h:last_error/句柄表/buffer 共享)
- doctest 12 个用例(含 1 万次随机鲁棒性冒烟,固定种子可复现);libFuzzer 目标(-DHJ_BUILD_FUZZER,Apple clang 无 fuzzer 运行时,正式跑在 Linux CI)
- nm 验证 9 个导出符号全部 hj_*
This commit is contained in:
chenxin committed 2026-09-10 11:01:45 +08:00
1 parent d3c8df79a8
commit 127191c889
10 files changed
+565 -26

No files matched your search

+11
View File
@@ -65,6 +65,17 @@ HJ_API size_t hj_buffer_len(const HjBuffer *buffer);
// 线程局部的最近一次错误消息(UTF-8、脱敏、不含正文与密钥);下一次调用覆盖。
HJ_API const char *hj_last_error(void);
// ===== 脾神(hj_transform):Markdown → canonical ContentBlock 确定性解析 =====
// 返回当前 parser version(稳定标识,随实现演进递增)。
HJ_API const char *hj_transform_version(void);
// 将 Markdown 规范化为 canonical ContentBlock JSON(键序确定、UTF-8)。
// 输出经 HjBuffer 返回,由 hj_buffer_free 释放;blocks 不含 id(由宿主生成)。
// 限额与非法 UTF-8 分别返回 HJ_ERR_LIMIT_EXCEEDED / HJ_ERR_INVALID_ARGUMENT。
HJ_API HjStatus hj_transform_markdown(
HjEngine *engine, const char *input, size_t input_len, HjBuffer **out);
#ifdef __cplusplus
} // extern "C"
#endif