chore: audit public exports — #274

Closed
opened 2026-05-16 06:35:36 +00:00 by xiaoju · 2 comments
Owner

背景

Bundle 全部自包含后(#270),审计各 package 的 public API,识别未被其他 package import 的符号。

未被使用 ≠ 应该删除。这些是收敛候选,需逐个判断:

  • 是否为外部 bundle 作者需要的公共 API
  • 是否只在包内部使用
  • 是否为冗余 re-export

统计

总 export 外部使用 未使用 使用率
37 25 12 68%

未被外部 import 的符号(候选)

备注

该包从 全量 re-export 了所有类型。建议只 re-export 实际被下游通过 runtime 路径使用的符号,其余让用户直接从 protocol 引。

操作

逐个检查上述符号,决定:

  1. 保留 — 属于公共 API 契约,外部 bundle 作者可能需要
  2. 内部化 — 从 移除 re-export,保留在包内部使用
  3. 删除 — 确认为死代码
## 背景 Bundle 全部自包含后(#270),审计各 package 的 public API,识别未被其他 package import 的符号。 未被使用 ≠ 应该删除。这些是收敛候选,需逐个判断: - 是否为外部 bundle 作者需要的公共 API - 是否只在包内部使用 - 是否为冗余 re-export ## 统计 | 总 export | 外部使用 | 未使用 | 使用率 | |----------|---------|--------|-------| | 37 | 25 | 12 | 68% | ## 未被外部 import 的符号(候选) - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] ## 备注 该包从 全量 re-export 了所有类型。建议只 re-export 实际被下游通过 runtime 路径使用的符号,其余让用户直接从 protocol 引。 ## 操作 逐个检查上述符号,决定: 1. **保留** — 属于公共 API 契约,外部 bundle 作者可能需要 2. **内部化** — 从 移除 re-export,保留在包内部使用 3. **删除** — 确认为死代码
Author
Owner

\u53ef\u8fbe\u6027\u5206\u6790 \u2014 @uncaged/workflow-runtime\n\n### \u5305\u804c\u8d23\n\nBundle \u7ec4\u88c5\u5668\u3002 \u6838\u5fc3\u51fd\u6570\u53ea\u6709\u4e00\u4e2a\uff1acreateWorkflow\uff0c\u628a WorkflowDefinition + AdapterFn \u7ec4\u88c5\u6210 WorkflowFn\u3002\n\n### \u53d7\u4f17\n\nBundle \u4f5c\u8005 \u2014 \u8fd9\u662f bundle \u4f5c\u8005\u7684\u4e3b\u5165\u53e3\u5305\u3002\n\n### \u5f53\u524d\u95ee\u9898\n\n\u4ece protocol \u5168\u91cf re-export \u4e86\u6240\u6709\u7c7b\u578b\uff0837 \u4e2a export \u4e2d\u5927\u90e8\u5206\u662f re-export\uff09\u3002\u8fd9\u6a21\u7cca\u4e86 runtime \u81ea\u8eab\u7684\u804c\u8d23\u3002\n\n### \u53ef\u8fbe\u6027\u5224\u5b9a\n\n**\u2705 runtime \u81ea\u8eab\u5fc5\u987b export \u7684\uff1a**\n- createWorkflow \u2014 \u552f\u4e00\u7684\u6838\u5fc3\u51fd\u6570\n- buildThreadContext \u2014 \u5982\u679c bundle \u4f5c\u8005\u9700\u8981\u624b\u52a8\u6784\u5efa ThreadContext \u5219\u4fdd\u7559\uff0c\u5426\u5219\u5185\u90e8\u5316\n\n**\u5173\u4e8e re-export\uff1a**\n\nruntime \u4f5c\u4e3a bundle \u4f5c\u8005\u7684 fa\u00e7ade\uff0c\u53ef\u4ee5 re-export bundle \u4f5c\u8005\u9ad8\u9891\u4f7f\u7528\u7684\u7c7b\u578b\uff0c\u4f46\u5e94\u8be5\u662f curated subset\uff0c\u4e0d\u662f\u5168\u91cf\u8f6c\u53d1\u3002\n\n\u5efa\u8bae re-export \u7684\u5b50\u96c6\uff08\u4ec5 bundle \u4f5c\u8005\u5199 workflow \u65f6\u5fc5\u987b\u7528\u5230\u7684\uff09\uff1a\n- \u7c7b\u578b\uff1aWorkflowDefinition, RoleDefinition, RoleFn, ThreadContext, RoleStep, RoleResult, RoleMeta, ModeratorTable, ModeratorCondition, ModeratorContext, AdapterFn, WorkflowFn\n- \u5e38\u91cf\uff1aSTART, END, FALLBACK\n- \u5de5\u5177\uff1aok, err, Result\n\n**\u274c \u4e0d\u5e94\u4ece runtime re-export \u7684\uff08\u5f53\u524d unused \u7684 12 \u4e2a\uff09\uff1a**\n- AdapterBinding, ModeratorTransition, RoleFn(\u672a\u901a\u8fc7 runtime \u8def\u5f84\u4f7f\u7528), StartStep, WorkflowDescriptor, WorkflowGraph, WorkflowGraphEdge, WorkflowRoleDescriptor, WorkflowRoleSchema\n- \u8fd9\u4e9b\u8981\u4e48\u662f\u5185\u90e8\u7c7b\u578b\uff0c\u8981\u4e48\u5e94\u4ece protocol \u76f4\u63a5\u5f15\n\nbuildThreadContext \u2014 \u68c0\u67e5\u662f\u5426\u6709 bundle \u4f5c\u8005\u4f7f\u7528\u573a\u666f\uff0c\u5426\u5219\u5185\u90e8\u5316\u3002\n\n\u2014 \u5c0f\u6a58 \ud83c\udf4a\uff08NEKO Team\uff09

## \u53ef\u8fbe\u6027\u5206\u6790 \u2014 `@uncaged/workflow-runtime`\n\n### \u5305\u804c\u8d23\n\n**Bundle \u7ec4\u88c5\u5668\u3002** \u6838\u5fc3\u51fd\u6570\u53ea\u6709\u4e00\u4e2a\uff1a`createWorkflow`\uff0c\u628a `WorkflowDefinition` + `AdapterFn` \u7ec4\u88c5\u6210 `WorkflowFn`\u3002\n\n### \u53d7\u4f17\n\n**Bundle \u4f5c\u8005** \u2014 \u8fd9\u662f bundle \u4f5c\u8005\u7684\u4e3b\u5165\u53e3\u5305\u3002\n\n### \u5f53\u524d\u95ee\u9898\n\n\u4ece protocol \u5168\u91cf re-export \u4e86\u6240\u6709\u7c7b\u578b\uff0837 \u4e2a export \u4e2d\u5927\u90e8\u5206\u662f re-export\uff09\u3002\u8fd9\u6a21\u7cca\u4e86 runtime \u81ea\u8eab\u7684\u804c\u8d23\u3002\n\n### \u53ef\u8fbe\u6027\u5224\u5b9a\n\n**\u2705 runtime \u81ea\u8eab\u5fc5\u987b export \u7684\uff1a**\n- `createWorkflow` \u2014 \u552f\u4e00\u7684\u6838\u5fc3\u51fd\u6570\n- `buildThreadContext` \u2014 \u5982\u679c bundle \u4f5c\u8005\u9700\u8981\u624b\u52a8\u6784\u5efa ThreadContext \u5219\u4fdd\u7559\uff0c\u5426\u5219\u5185\u90e8\u5316\n\n**\u5173\u4e8e re-export\uff1a**\n\nruntime \u4f5c\u4e3a bundle \u4f5c\u8005\u7684 fa\u00e7ade\uff0c\u53ef\u4ee5 re-export bundle \u4f5c\u8005\u9ad8\u9891\u4f7f\u7528\u7684\u7c7b\u578b\uff0c\u4f46\u5e94\u8be5\u662f **curated subset**\uff0c\u4e0d\u662f\u5168\u91cf\u8f6c\u53d1\u3002\n\n\u5efa\u8bae re-export \u7684\u5b50\u96c6\uff08\u4ec5 bundle \u4f5c\u8005\u5199 workflow \u65f6\u5fc5\u987b\u7528\u5230\u7684\uff09\uff1a\n- \u7c7b\u578b\uff1a`WorkflowDefinition`, `RoleDefinition`, `RoleFn`, `ThreadContext`, `RoleStep`, `RoleResult`, `RoleMeta`, `ModeratorTable`, `ModeratorCondition`, `ModeratorContext`, `AdapterFn`, `WorkflowFn`\n- \u5e38\u91cf\uff1a`START`, `END`, `FALLBACK`\n- \u5de5\u5177\uff1a`ok`, `err`, `Result`\n\n**\u274c \u4e0d\u5e94\u4ece runtime re-export \u7684\uff08\u5f53\u524d unused \u7684 12 \u4e2a\uff09\uff1a**\n- `AdapterBinding`, `ModeratorTransition`, `RoleFn`(\u672a\u901a\u8fc7 runtime \u8def\u5f84\u4f7f\u7528), `StartStep`, `WorkflowDescriptor`, `WorkflowGraph`, `WorkflowGraphEdge`, `WorkflowRoleDescriptor`, `WorkflowRoleSchema`\n- \u8fd9\u4e9b\u8981\u4e48\u662f\u5185\u90e8\u7c7b\u578b\uff0c\u8981\u4e48\u5e94\u4ece protocol \u76f4\u63a5\u5f15\n\n`buildThreadContext` \u2014 \u68c0\u67e5\u662f\u5426\u6709 bundle \u4f5c\u8005\u4f7f\u7528\u573a\u666f\uff0c\u5426\u5219\u5185\u90e8\u5316\u3002\n\n\u2014 \u5c0f\u6a58 \ud83c\udf4a\uff08NEKO Team\uff09
Owner

Completed in PR #283 + #284.

Completed in PR #283 + #284.
xiaomo changed title from chore: audit public exports \u2014 `@uncaged/workflow-runtime` to chore: audit public exports — 2026-05-16 10:34:13 +00:00
Sign in to join this conversation.
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/workflow#274