@laitszkin/apollo-toolkit 4.1.4 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/bin/apollo-toolkit.ts +4 -0
  3. package/dist/bin/apollo-toolkit.js +4 -0
  4. package/package.json +3 -2
  5. package/packages/cli/dist/help-text-builder.d.ts +23 -0
  6. package/packages/cli/dist/help-text-builder.js +166 -0
  7. package/packages/cli/dist/index.d.ts +6 -17
  8. package/packages/cli/dist/index.js +52 -246
  9. package/packages/cli/dist/installer.d.ts +1 -0
  10. package/packages/cli/dist/installer.js +20 -7
  11. package/packages/cli/dist/parsers/install-parser.d.ts +15 -0
  12. package/packages/cli/dist/parsers/install-parser.js +87 -0
  13. package/packages/cli/dist/parsers/parser-utils.d.ts +9 -0
  14. package/packages/cli/dist/parsers/parser-utils.js +16 -0
  15. package/packages/cli/dist/parsers/tool-parser.d.ts +16 -0
  16. package/packages/cli/dist/parsers/tool-parser.js +58 -0
  17. package/packages/cli/dist/parsers/types.d.ts +50 -0
  18. package/packages/cli/dist/parsers/types.js +1 -0
  19. package/packages/cli/dist/parsers/uninstall-parser.d.ts +15 -0
  20. package/packages/cli/dist/parsers/uninstall-parser.js +67 -0
  21. package/packages/cli/dist/tool-registration.d.ts +2 -0
  22. package/packages/cli/dist/tool-registration.js +2 -0
  23. package/packages/cli/dist/tsconfig.tsbuildinfo +1 -1
  24. package/packages/cli/dist/types.d.ts +3 -1
  25. package/packages/cli/dist/updater.js +11 -5
  26. package/packages/cli/help-text-builder.ts +180 -0
  27. package/packages/cli/index.ts +59 -251
  28. package/packages/cli/installer.ts +19 -7
  29. package/packages/cli/package.json +14 -4
  30. package/packages/cli/parsers/install-parser.ts +94 -0
  31. package/packages/cli/parsers/parser-utils.ts +17 -0
  32. package/packages/cli/parsers/tool-parser.ts +65 -0
  33. package/packages/cli/parsers/types.ts +56 -0
  34. package/packages/cli/parsers/uninstall-parser.ts +75 -0
  35. package/packages/cli/tool-registration.ts +3 -0
  36. package/packages/cli/types.ts +6 -1
  37. package/packages/cli/updater.ts +11 -5
  38. package/packages/tool-registry/dist/registry.js +3 -4
  39. package/packages/tool-registry/dist/tsconfig.tsbuildinfo +1 -1
  40. package/packages/tool-registry/dist/types.d.ts +2 -9
  41. package/packages/tool-registry/package.json +11 -4
  42. package/packages/tool-registry/registry.ts +3 -4
  43. package/packages/tool-registry/tsconfig.json +6 -2
  44. package/packages/tool-registry/types.ts +3 -9
  45. package/packages/tool-utils/app-error.ts +97 -0
  46. package/packages/tool-utils/dist/app-error.d.ts +49 -0
  47. package/packages/tool-utils/dist/app-error.js +80 -0
  48. package/packages/tool-utils/dist/index.d.ts +5 -0
  49. package/packages/tool-utils/dist/index.js +3 -0
  50. package/packages/tool-utils/dist/platform-adapter.d.ts +48 -0
  51. package/packages/tool-utils/dist/platform-adapter.js +73 -0
  52. package/packages/tool-utils/dist/schema.d.ts +68 -0
  53. package/packages/tool-utils/dist/schema.js +67 -0
  54. package/packages/tool-utils/dist/tsconfig.tsbuildinfo +1 -1
  55. package/packages/tool-utils/index.ts +12 -0
  56. package/packages/tool-utils/package.json +11 -4
  57. package/packages/tool-utils/platform-adapter.ts +112 -0
  58. package/packages/tool-utils/schema.ts +122 -0
  59. package/packages/tools/architecture/dist/index.d.ts +13 -0
  60. package/packages/tools/architecture/dist/index.js +55 -57
  61. package/packages/tools/architecture/dist/index.test.js +17 -4
  62. package/packages/tools/architecture/dist/tsconfig.tsbuildinfo +1 -1
  63. package/packages/tools/architecture/index.test.ts +27 -14
  64. package/packages/tools/architecture/index.ts +85 -88
  65. package/packages/tools/architecture/package.json +11 -4
  66. package/packages/tools/codegraph/dist/index.js +12 -22
  67. package/packages/tools/codegraph/dist/tsconfig.tsbuildinfo +1 -1
  68. package/packages/tools/codegraph/index.ts +13 -22
  69. package/packages/tools/codegraph/package.json +11 -4
  70. package/packages/tools/create-review-report/dist/index.d.ts +1 -2
  71. package/packages/tools/create-review-report/dist/index.js +46 -77
  72. package/packages/tools/create-review-report/dist/tsconfig.tsbuildinfo +1 -1
  73. package/packages/tools/create-review-report/index.ts +52 -81
  74. package/packages/tools/create-review-report/package.json +11 -4
  75. package/packages/tools/create-specs/dist/index.d.ts +1 -2
  76. package/packages/tools/create-specs/dist/index.js +70 -123
  77. package/packages/tools/create-specs/dist/tsconfig.tsbuildinfo +1 -1
  78. package/packages/tools/create-specs/index.ts +82 -128
  79. package/packages/tools/create-specs/package.json +11 -4
  80. package/packages/tools/docs-to-voice/dist/index.d.ts +1 -2
  81. package/packages/tools/docs-to-voice/dist/index.js +116 -219
  82. package/packages/tools/docs-to-voice/dist/tsconfig.tsbuildinfo +1 -1
  83. package/packages/tools/docs-to-voice/index.ts +265 -385
  84. package/packages/tools/docs-to-voice/package.json +11 -4
  85. package/packages/tools/enforce-video-aspect-ratio/dist/index.d.ts +1 -2
  86. package/packages/tools/enforce-video-aspect-ratio/dist/index.js +77 -154
  87. package/packages/tools/enforce-video-aspect-ratio/dist/tsconfig.tsbuildinfo +1 -1
  88. package/packages/tools/enforce-video-aspect-ratio/index.ts +87 -172
  89. package/packages/tools/enforce-video-aspect-ratio/package.json +11 -4
  90. package/packages/tools/eval/dist/index.js +7 -0
  91. package/packages/tools/eval/dist/tsconfig.tsbuildinfo +1 -1
  92. package/packages/tools/eval/index.ts +8 -0
  93. package/packages/tools/eval/package.json +11 -4
  94. package/packages/tools/extract-conversations/dist/index.d.ts +1 -2
  95. package/packages/tools/extract-conversations/dist/index.js +31 -29
  96. package/packages/tools/extract-conversations/dist/tsconfig.tsbuildinfo +1 -1
  97. package/packages/tools/extract-conversations/index.ts +37 -30
  98. package/packages/tools/extract-conversations/package.json +11 -4
  99. package/packages/tools/extract-pdf-text/dist/index.d.ts +1 -2
  100. package/packages/tools/extract-pdf-text/dist/index.js +44 -65
  101. package/packages/tools/extract-pdf-text/dist/tsconfig.tsbuildinfo +1 -1
  102. package/packages/tools/extract-pdf-text/index.ts +55 -74
  103. package/packages/tools/extract-pdf-text/package.json +11 -4
  104. package/packages/tools/filter-logs/dist/index.js +60 -84
  105. package/packages/tools/filter-logs/dist/tsconfig.tsbuildinfo +1 -1
  106. package/packages/tools/filter-logs/index.ts +67 -97
  107. package/packages/tools/filter-logs/package.json +11 -4
  108. package/packages/tools/find-github-issues/dist/index.d.ts +10 -0
  109. package/packages/tools/find-github-issues/dist/index.js +34 -5
  110. package/packages/tools/find-github-issues/dist/tsconfig.tsbuildinfo +1 -1
  111. package/packages/tools/find-github-issues/index.ts +37 -5
  112. package/packages/tools/find-github-issues/package.json +11 -4
  113. package/packages/tools/generate-storyboard-images/dist/index.d.ts +1 -2
  114. package/packages/tools/generate-storyboard-images/dist/index.js +98 -173
  115. package/packages/tools/generate-storyboard-images/dist/tsconfig.tsbuildinfo +1 -1
  116. package/packages/tools/generate-storyboard-images/index.ts +100 -188
  117. package/packages/tools/generate-storyboard-images/package.json +11 -4
  118. package/packages/tools/open-github-issue/dist/index.d.ts +13 -0
  119. package/packages/tools/open-github-issue/dist/index.js +67 -68
  120. package/packages/tools/open-github-issue/dist/tsconfig.tsbuildinfo +1 -1
  121. package/packages/tools/open-github-issue/index.ts +71 -72
  122. package/packages/tools/open-github-issue/package.json +11 -4
  123. package/packages/tools/read-github-issue/dist/index.d.ts +16 -1
  124. package/packages/tools/read-github-issue/dist/index.js +32 -40
  125. package/packages/tools/read-github-issue/dist/tsconfig.tsbuildinfo +1 -1
  126. package/packages/tools/read-github-issue/index.ts +32 -45
  127. package/packages/tools/read-github-issue/package.json +11 -4
  128. package/packages/tools/render-error-book/dist/index.d.ts +1 -2
  129. package/packages/tools/render-error-book/dist/index.js +74 -95
  130. package/packages/tools/render-error-book/dist/tsconfig.tsbuildinfo +1 -1
  131. package/packages/tools/render-error-book/index.ts +88 -103
  132. package/packages/tools/render-error-book/package.json +11 -4
  133. package/packages/tools/render-katex/dist/index.d.ts +1 -2
  134. package/packages/tools/render-katex/dist/index.js +70 -157
  135. package/packages/tools/render-katex/dist/tsconfig.tsbuildinfo +1 -1
  136. package/packages/tools/render-katex/index.ts +138 -222
  137. package/packages/tools/render-katex/package.json +11 -4
  138. package/packages/tools/review-threads/dist/index.d.ts +12 -0
  139. package/packages/tools/review-threads/dist/index.js +83 -86
  140. package/packages/tools/review-threads/dist/tsconfig.tsbuildinfo +1 -1
  141. package/packages/tools/review-threads/index.ts +90 -84
  142. package/packages/tools/review-threads/package.json +11 -4
  143. package/packages/tools/search-logs/dist/index.js +100 -136
  144. package/packages/tools/search-logs/dist/tsconfig.tsbuildinfo +1 -1
  145. package/packages/tools/search-logs/index.ts +113 -145
  146. package/packages/tools/search-logs/package.json +11 -4
  147. package/packages/tools/sync-memory-index/dist/index.js +34 -28
  148. package/packages/tools/sync-memory-index/dist/tsconfig.tsbuildinfo +1 -1
  149. package/packages/tools/sync-memory-index/index.ts +37 -28
  150. package/packages/tools/sync-memory-index/package.json +11 -4
  151. package/packages/tools/validate-openai-agent-config/dist/index.js +13 -7
  152. package/packages/tools/validate-openai-agent-config/dist/tsconfig.tsbuildinfo +1 -1
  153. package/packages/tools/validate-openai-agent-config/index.ts +13 -7
  154. package/packages/tools/validate-openai-agent-config/package.json +11 -4
  155. package/packages/tools/validate-skill-frontmatter/dist/index.js +12 -6
  156. package/packages/tools/validate-skill-frontmatter/dist/tsconfig.tsbuildinfo +1 -1
  157. package/packages/tools/validate-skill-frontmatter/index.ts +12 -6
  158. package/packages/tools/validate-skill-frontmatter/package.json +11 -4
  159. package/packages/tui/dist/index.d.ts +2 -1
  160. package/packages/tui/dist/index.js +1 -0
  161. package/packages/tui/dist/stdio-adapter.d.ts +36 -0
  162. package/packages/tui/dist/stdio-adapter.js +69 -0
  163. package/packages/tui/dist/terminal.js +3 -1
  164. package/packages/tui/dist/tsconfig.tsbuildinfo +1 -1
  165. package/packages/tui/dist/types.d.ts +17 -0
  166. package/packages/tui/index.ts +2 -1
  167. package/packages/tui/package.json +14 -6
  168. package/packages/tui/stdio-adapter.ts +85 -0
  169. package/packages/tui/terminal.ts +3 -1
  170. package/packages/tui/tsconfig.json +5 -2
  171. package/packages/tui/types.ts +19 -0
  172. package/resources/project-architecture/assets/architecture.css +2 -1
  173. package/resources/project-architecture/atlas/atlas.history.log +1 -0
  174. package/resources/project-architecture/atlas/atlas.history.undo.json +13 -2
  175. package/resources/project-architecture/atlas/atlas.history.undo.stack.json +610 -0
  176. package/resources/project-architecture/atlas/atlas.index.yaml +81 -5
  177. package/resources/project-architecture/atlas/features/cli-dispatch.yaml +43 -0
  178. package/resources/project-architecture/atlas/features/terminal-ui.yaml +29 -0
  179. package/resources/project-architecture/atlas/features/tool-registry.yaml +22 -0
  180. package/resources/project-architecture/atlas/features/tool-utils.yaml +22 -0
  181. package/resources/project-architecture/features/cli-dispatch/arg-parser.html +40 -0
  182. package/resources/project-architecture/features/cli-dispatch/help-builder.html +40 -0
  183. package/resources/project-architecture/features/cli-dispatch/index.html +64 -0
  184. package/resources/project-architecture/features/cli-dispatch/installer-core.html +40 -0
  185. package/resources/project-architecture/features/cli-dispatch/tool-discovery.html +40 -0
  186. package/resources/project-architecture/features/cli-dispatch/update-checker.html +40 -0
  187. package/resources/project-architecture/features/terminal-ui/banner-display.html +40 -0
  188. package/resources/project-architecture/features/terminal-ui/index.html +50 -0
  189. package/resources/project-architecture/features/terminal-ui/interactive-prompts.html +40 -0
  190. package/resources/project-architecture/features/terminal-ui/terminal-detection.html +40 -0
  191. package/resources/project-architecture/features/tool-registry/formatter.html +40 -0
  192. package/resources/project-architecture/features/tool-registry/index.html +43 -0
  193. package/resources/project-architecture/features/tool-registry/registry-core.html +40 -0
  194. package/resources/project-architecture/features/tool-utils/index.html +43 -0
  195. package/resources/project-architecture/features/tool-utils/log-utils.html +40 -0
  196. package/resources/project-architecture/features/tool-utils/skill-discovery.html +40 -0
  197. package/resources/project-architecture/index.html +365 -121
  198. package/scripts/rewrite-imports.mjs +2 -2
  199. package/scripts/test.sh +144 -8
  200. package/skills/design/SKILL.md +57 -64
  201. package/skills/design/assets/templates/DESIGN.md +12 -0
  202. package/skills/design/references/code-smells.md +94 -0
  203. package/skills/design/references/module-boundary-adjustment.md +126 -0
  204. package/skills/design/references/module-internal-restructuring.md +132 -0
  205. package/skills/design/references/module-internal-simplification.md +164 -0
@@ -15625,5 +15625,615 @@
15625
15625
  }
15626
15626
  ]
15627
15627
  }
15628
+ },
15629
+ {
15630
+ "base": {
15631
+ "meta": {
15632
+ "title": "Project architecture (+ codegraph integration overlay)",
15633
+ "summary": "完整 C4 架構圖:eval 評測系統 (8 features) + codegraph 程式碼分析 (1 feature, 3 submodules)。 外部 actor: Judge Model API, GitHub Actions CI, Developer, Skill Files, @colbymchenry/codegraph (npm), @laitszkin/tool-registry, @laitszkin/tui。 Eval 管線包含完整資料流: CLI → Executor → Scorer → Reporter → CI Gate。\n",
15634
+ "updatedAt": "2026-06-03T13:18:57.448Z"
15635
+ },
15636
+ "actors": [
15637
+ {
15638
+ "id": "judge-model-api",
15639
+ "label": "Judge Model API"
15640
+ },
15641
+ {
15642
+ "id": "github-actions",
15643
+ "label": "GitHub Actions CI"
15644
+ },
15645
+ {
15646
+ "id": "user-dev",
15647
+ "label": "Developer"
15648
+ },
15649
+ {
15650
+ "id": "skill-files",
15651
+ "label": "Skill Files (SKILL.md, scripts/, references/, assets/)"
15652
+ },
15653
+ {
15654
+ "id": "codegraph-npm",
15655
+ "label": "@colbymchenry/codegraph npm package"
15656
+ },
15657
+ {
15658
+ "id": "tool-registry",
15659
+ "label": "Tool Registry (@laitszkin/tool-registry)"
15660
+ },
15661
+ {
15662
+ "id": "tui-lib",
15663
+ "label": "TUI Library (@laitszkin/tui)"
15664
+ }
15665
+ ],
15666
+ "features": [
15667
+ {
15668
+ "slug": "codegraph",
15669
+ "title": "CodeGraph Integration",
15670
+ "story": "Provide LLM agents with deterministic code structure data through apltk CLI. Replaces manual grep/Read discovery with tree-sitter parsed knowledge graph queries.\n",
15671
+ "dependsOn": [
15672
+ "eval-cli"
15673
+ ],
15674
+ "submodules": [
15675
+ {
15676
+ "slug": "cg-lifecycle",
15677
+ "kind": "service",
15678
+ "role": "Manage CodeGraph index lifecycle — init, sync, status, search",
15679
+ "functions": [
15680
+ {
15681
+ "name": "init",
15682
+ "in": "projectRoot: string",
15683
+ "out": "CodeGraph instance",
15684
+ "side": "io",
15685
+ "purpose": "Initialize .codegraph/ directory and optionally run full index"
15686
+ },
15687
+ {
15688
+ "name": "sync",
15689
+ "in": "projectRoot: string",
15690
+ "out": "SyncResult",
15691
+ "side": "io",
15692
+ "purpose": "Incremental update of existing index"
15693
+ },
15694
+ {
15695
+ "name": "status",
15696
+ "in": "projectRoot: string",
15697
+ "out": "GraphStats",
15698
+ "side": "pure",
15699
+ "purpose": "Query index statistics"
15700
+ },
15701
+ {
15702
+ "name": "search",
15703
+ "in": "query: string",
15704
+ "out": "SearchResult[]",
15705
+ "side": "pure",
15706
+ "purpose": "Full-text symbol search via FTS5"
15707
+ }
15708
+ ],
15709
+ "variables": [],
15710
+ "dataflow": [],
15711
+ "errors": []
15712
+ },
15713
+ {
15714
+ "slug": "cg-discovery",
15715
+ "kind": "service",
15716
+ "role": "Explore and survey code structure — explore, survey, list-apis",
15717
+ "functions": [
15718
+ {
15719
+ "name": "explore",
15720
+ "in": "query: string",
15721
+ "out": "Context (source grouped by file + relationship map)",
15722
+ "side": "pure",
15723
+ "purpose": "Get full context for symbols matching a query"
15724
+ },
15725
+ {
15726
+ "name": "survey",
15727
+ "in": "dirPath: string",
15728
+ "out": "SurveyReport (submodule suggestions + edge suggestions)",
15729
+ "side": "pure",
15730
+ "purpose": "Survey a directory and produce atlas-compatible structure report"
15731
+ },
15732
+ {
15733
+ "name": "listApis",
15734
+ "in": "featureSlug: string",
15735
+ "out": "APIDirectory (public functions + params + callers)",
15736
+ "side": "pure",
15737
+ "purpose": "List public API surface of a feature area"
15738
+ }
15739
+ ],
15740
+ "variables": [],
15741
+ "dataflow": [],
15742
+ "errors": []
15743
+ },
15744
+ {
15745
+ "slug": "cg-validation",
15746
+ "kind": "service",
15747
+ "role": "Verify architecture proposals and batch-apply atlas mutations",
15748
+ "functions": [
15749
+ {
15750
+ "name": "verify",
15751
+ "in": "specOverlayPath: string",
15752
+ "out": "VerifyReport (passed/failed items)",
15753
+ "side": "pure",
15754
+ "purpose": "Validate that spec overlay references match actual code"
15755
+ },
15756
+ {
15757
+ "name": "applyBatch",
15758
+ "in": "proposalYaml: string",
15759
+ "out": "ApplyResult",
15760
+ "side": "io",
15761
+ "purpose": "Execute multiple atlas mutations from a single YAML file"
15762
+ },
15763
+ {
15764
+ "name": "generateTemplate",
15765
+ "in": "specMdPath: string",
15766
+ "out": "proposalYaml path",
15767
+ "side": "io",
15768
+ "purpose": "Generate empty proposal skeleton from SPEC.md"
15769
+ }
15770
+ ],
15771
+ "variables": [],
15772
+ "dataflow": [],
15773
+ "errors": []
15774
+ }
15775
+ ],
15776
+ "edges": [
15777
+ {
15778
+ "id": "cg-fe-001",
15779
+ "from": "cg-lifecycle",
15780
+ "to": "cg-discovery",
15781
+ "kind": "data-row",
15782
+ "label": "survey/list-apis 依賴已索引的資料庫"
15783
+ },
15784
+ {
15785
+ "id": "cg-fe-002",
15786
+ "from": "cg-discovery",
15787
+ "to": "cg-validation",
15788
+ "kind": "data-row",
15789
+ "label": "verify 使用 discovery 的搜尋能力"
15790
+ },
15791
+ {
15792
+ "id": "cg-fe-003",
15793
+ "from": "cg-validation",
15794
+ "to": "cg-lifecycle",
15795
+ "kind": "data-row",
15796
+ "label": "apply 非索引操作,不需 lifecycle — 但 template 可搭配 list-apis"
15797
+ }
15798
+ ]
15799
+ },
15800
+ {
15801
+ "slug": "eval-optimizer",
15802
+ "title": "優化引擎",
15803
+ "story": "從評分結果提取問題、去重、生成FIND/REPLACE格式的優化diff",
15804
+ "dependsOn": [],
15805
+ "submodules": [
15806
+ {
15807
+ "slug": "issue-extractor",
15808
+ "kind": "service",
15809
+ "role": "從score.json提取問題、分類統計",
15810
+ "functions": [
15811
+ {
15812
+ "name": "extractIssues",
15813
+ "in": "scores",
15814
+ "out": "RawIssue[]",
15815
+ "side": "pure",
15816
+ "purpose": "從 score.json 提取問題與分類統計"
15817
+ },
15818
+ {
15819
+ "name": "generateOptimizationPlan",
15820
+ "in": "issues",
15821
+ "out": "OptimizationPlan",
15822
+ "side": "pure",
15823
+ "purpose": "從去重後問題生成 FIND/REPLACE 優化 diff"
15824
+ }
15825
+ ],
15826
+ "variables": [],
15827
+ "dataflow": [],
15828
+ "errors": []
15829
+ },
15830
+ {
15831
+ "slug": "dedup-engine",
15832
+ "kind": "service",
15833
+ "role": "Jaccard+Judge語意去重",
15834
+ "functions": [
15835
+ {
15836
+ "name": "deduplicateIssues",
15837
+ "in": "issues",
15838
+ "out": "DedupedIssue[]",
15839
+ "side": "pure",
15840
+ "purpose": "Jaccard+Judge 語意去重"
15841
+ }
15842
+ ],
15843
+ "variables": [],
15844
+ "dataflow": [],
15845
+ "errors": []
15846
+ },
15847
+ {
15848
+ "slug": "diff-generator",
15849
+ "kind": "service",
15850
+ "role": "FIND/REPLACE diff生成與備份/復原",
15851
+ "functions": [],
15852
+ "variables": [],
15853
+ "dataflow": [],
15854
+ "errors": []
15855
+ }
15856
+ ],
15857
+ "edges": []
15858
+ },
15859
+ {
15860
+ "slug": "eval-cli",
15861
+ "title": "CLI命令",
15862
+ "story": "註冊apltk eval命令,參數解析、模式選擇、進度顯示",
15863
+ "dependsOn": [],
15864
+ "submodules": [
15865
+ {
15866
+ "slug": "cli-handler",
15867
+ "kind": "service",
15868
+ "role": "ToolDefinition註冊、參數解析、流程編排",
15869
+ "functions": [
15870
+ {
15871
+ "name": "evalHandler",
15872
+ "in": "argv, context",
15873
+ "out": "exitCode",
15874
+ "side": "pure",
15875
+ "purpose": "CLI 入口:解析參數、調度評測流程"
15876
+ },
15877
+ {
15878
+ "name": "parseArgs",
15879
+ "in": "argv",
15880
+ "out": "ParsedArgs",
15881
+ "side": "pure",
15882
+ "purpose": "解析 CLI 參數與模式選擇"
15883
+ },
15884
+ {
15885
+ "name": "tool",
15886
+ "in": "ToolDefinition",
15887
+ "out": "void",
15888
+ "side": "pure",
15889
+ "purpose": "向 tool-registry 註冊 eval 命令"
15890
+ }
15891
+ ],
15892
+ "variables": [],
15893
+ "dataflow": [],
15894
+ "errors": []
15895
+ },
15896
+ {
15897
+ "slug": "progress-display",
15898
+ "kind": "ui",
15899
+ "role": "終端機進度指示",
15900
+ "functions": [],
15901
+ "variables": [],
15902
+ "dataflow": [],
15903
+ "errors": []
15904
+ }
15905
+ ],
15906
+ "edges": []
15907
+ },
15908
+ {
15909
+ "slug": "eval-ci-gate",
15910
+ "title": "PR閘門",
15911
+ "story": "GitHub Actions整合:檢測技能檔案變更、觸發評測、回報結果",
15912
+ "dependsOn": [],
15913
+ "submodules": [
15914
+ {
15915
+ "slug": "workflow-trigger",
15916
+ "kind": "service",
15917
+ "role": "GitHub Actions workflow on PR skill file change",
15918
+ "functions": [
15919
+ {
15920
+ "name": "detectSkillChanges",
15921
+ "in": "prFiles",
15922
+ "out": "string[]",
15923
+ "side": "pure",
15924
+ "purpose": "檢測 PR 中技能檔案變更"
15925
+ }
15926
+ ],
15927
+ "variables": [],
15928
+ "dataflow": [],
15929
+ "errors": []
15930
+ },
15931
+ {
15932
+ "slug": "pr-reporter",
15933
+ "kind": "service",
15934
+ "role": "PR評論回報評測結果",
15935
+ "functions": [],
15936
+ "variables": [],
15937
+ "dataflow": [],
15938
+ "errors": []
15939
+ }
15940
+ ],
15941
+ "edges": []
15942
+ },
15943
+ {
15944
+ "slug": "eval-isolation",
15945
+ "title": "上下文隔離與工具模擬",
15946
+ "story": "工具調用攔截層:讀取真實執行、寫入mock回傳;確保評分上下文獨立",
15947
+ "dependsOn": [],
15948
+ "submodules": [
15949
+ {
15950
+ "slug": "tool-dispatcher",
15951
+ "kind": "service",
15952
+ "role": "工具調用攔截系統:讀取工具在workspace內真實執行、寫入工具模擬回傳、路徑穿越防護",
15953
+ "functions": [
15954
+ {
15955
+ "name": "buildSystemPrompt",
15956
+ "in": "question",
15957
+ "out": "string",
15958
+ "side": "pure",
15959
+ "purpose": "建立隔離環境的 system prompt"
15960
+ }
15961
+ ],
15962
+ "variables": [],
15963
+ "dataflow": [],
15964
+ "errors": []
15965
+ }
15966
+ ],
15967
+ "edges": []
15968
+ },
15969
+ {
15970
+ "slug": "eval-question",
15971
+ "title": "評測題庫",
15972
+ "story": "管理評測題庫的載入、驗證、抽樣與LLM變體生成",
15973
+ "dependsOn": [],
15974
+ "submodules": [
15975
+ {
15976
+ "slug": "question-loader",
15977
+ "kind": "service",
15978
+ "role": "題目載入與JSON Schema驗證",
15979
+ "functions": [
15980
+ {
15981
+ "name": "loadQuestions",
15982
+ "in": "specDir",
15983
+ "out": "Question[]",
15984
+ "side": "pure",
15985
+ "purpose": "載入題目並進行 JSON Schema 驗證"
15986
+ }
15987
+ ],
15988
+ "variables": [],
15989
+ "dataflow": [],
15990
+ "errors": []
15991
+ },
15992
+ {
15993
+ "slug": "variant-generator",
15994
+ "kind": "service",
15995
+ "role": "LLM變體生成,保留評分標準",
15996
+ "functions": [
15997
+ {
15998
+ "name": "generateVariants",
15999
+ "in": "questions, count",
16000
+ "out": "Question[]",
16001
+ "side": "io",
16002
+ "purpose": "LLM 變體生成,保留評分標準"
16003
+ }
16004
+ ],
16005
+ "variables": [],
16006
+ "dataflow": [],
16007
+ "errors": []
16008
+ }
16009
+ ],
16010
+ "edges": []
16011
+ },
16012
+ {
16013
+ "slug": "eval-executor",
16014
+ "title": "評測執行器",
16015
+ "story": "在隔離環境中執行技能,記錄工具調用軌跡為JSONL",
16016
+ "dependsOn": [],
16017
+ "submodules": [
16018
+ {
16019
+ "slug": "trace-recorder",
16020
+ "kind": "service",
16021
+ "role": "多輪tool-use loop軌跡記錄:tool_call/tool_result事件序列、JSONL行號標記、.done完成標記",
16022
+ "functions": [
16023
+ {
16024
+ "name": "runSingleTest",
16025
+ "in": "question, skillDir",
16026
+ "out": "TraceEvent[]",
16027
+ "side": "pure",
16028
+ "purpose": "執行單一技能測試,記錄 tool call 軌跡"
16029
+ }
16030
+ ],
16031
+ "variables": [],
16032
+ "dataflow": [],
16033
+ "errors": []
16034
+ },
16035
+ {
16036
+ "slug": "exec-api-client",
16037
+ "kind": "api",
16038
+ "role": "Exec Model HTTP client with retry",
16039
+ "functions": [
16040
+ {
16041
+ "name": "withRetry",
16042
+ "in": "fn, options",
16043
+ "out": "Result",
16044
+ "side": "io",
16045
+ "purpose": "HTTP client with retry for exec model"
16046
+ }
16047
+ ],
16048
+ "variables": [],
16049
+ "dataflow": [],
16050
+ "errors": []
16051
+ }
16052
+ ],
16053
+ "edges": []
16054
+ },
16055
+ {
16056
+ "slug": "eval-scorer",
16057
+ "title": "評分引擎",
16058
+ "story": "調用LLM評分模型從三維度打分,產出結構化評分JSON",
16059
+ "dependsOn": [],
16060
+ "submodules": [
16061
+ {
16062
+ "slug": "judge-prompt-builder",
16063
+ "kind": "service",
16064
+ "role": "評分提示詞構建:trace事件摘要含JSONL行號(L{N})引用、三維度評分指示",
16065
+ "functions": [
16066
+ {
16067
+ "name": "buildJudgePrompt",
16068
+ "in": "trace, scoreCriteria",
16069
+ "out": "string",
16070
+ "side": "pure",
16071
+ "purpose": "將 trace 事件摘要轉為評分提示詞"
16072
+ }
16073
+ ],
16074
+ "variables": [],
16075
+ "dataflow": [],
16076
+ "errors": []
16077
+ },
16078
+ {
16079
+ "slug": "judge-api-client",
16080
+ "kind": "api",
16081
+ "role": "Judge Model HTTP client with parse fallback",
16082
+ "functions": [
16083
+ {
16084
+ "name": "callJudgeModel",
16085
+ "in": "prompt, options",
16086
+ "out": "ScoreResult",
16087
+ "side": "io",
16088
+ "purpose": "呼叫 Judge Model API 進行評分"
16089
+ }
16090
+ ],
16091
+ "variables": [],
16092
+ "dataflow": [],
16093
+ "errors": []
16094
+ }
16095
+ ],
16096
+ "edges": []
16097
+ },
16098
+ {
16099
+ "slug": "eval-reporter",
16100
+ "title": "評測報告",
16101
+ "story": "彙總評分結果產出結構化Markdown報告",
16102
+ "dependsOn": [],
16103
+ "submodules": [
16104
+ {
16105
+ "slug": "report-composer",
16106
+ "kind": "service",
16107
+ "role": "Markdown報告組合與渲染",
16108
+ "functions": [
16109
+ {
16110
+ "name": "generateReport",
16111
+ "in": "scores",
16112
+ "out": "string",
16113
+ "side": "pure",
16114
+ "purpose": "彙總評分結果產出結構化 Markdown 報告"
16115
+ }
16116
+ ],
16117
+ "variables": [],
16118
+ "dataflow": [],
16119
+ "errors": []
16120
+ }
16121
+ ],
16122
+ "edges": []
16123
+ }
16124
+ ],
16125
+ "edges": [
16126
+ {
16127
+ "id": "cg-e-001",
16128
+ "from": {
16129
+ "feature": "codegraph",
16130
+ "submodule": "cg-lifecycle"
16131
+ },
16132
+ "to": {
16133
+ "feature": "codegraph",
16134
+ "submodule": "cg-discovery"
16135
+ },
16136
+ "kind": "data-row",
16137
+ "label": "survey/list-apis 依賴已索引的資料庫"
16138
+ },
16139
+ {
16140
+ "id": "cg-e-002",
16141
+ "from": {
16142
+ "feature": "codegraph",
16143
+ "submodule": "cg-discovery"
16144
+ },
16145
+ "to": {
16146
+ "feature": "codegraph",
16147
+ "submodule": "cg-validation"
16148
+ },
16149
+ "kind": "data-row",
16150
+ "label": "verify 使用 discovery 的搜尋能力"
16151
+ },
16152
+ {
16153
+ "id": "cg-e-003",
16154
+ "from": {
16155
+ "feature": "codegraph",
16156
+ "submodule": "cg-lifecycle"
16157
+ },
16158
+ "to": {
16159
+ "feature": "eval-cli"
16160
+ },
16161
+ "kind": "call",
16162
+ "label": "codegraph init --index 與 eval-cli 共用 CLI 工具基礎架構"
16163
+ },
16164
+ {
16165
+ "id": "eval-cli-exec",
16166
+ "from": {
16167
+ "feature": "eval-cli",
16168
+ "submodule": "cli-handler"
16169
+ },
16170
+ "to": {
16171
+ "feature": "eval-executor",
16172
+ "submodule": "trace-recorder"
16173
+ },
16174
+ "kind": "call",
16175
+ "label": "evalHandler 觸發 runSingleTest"
16176
+ },
16177
+ {
16178
+ "id": "eval-exec-iso",
16179
+ "from": {
16180
+ "feature": "eval-executor",
16181
+ "submodule": "trace-recorder"
16182
+ },
16183
+ "to": {
16184
+ "feature": "eval-isolation",
16185
+ "submodule": "tool-dispatcher"
16186
+ },
16187
+ "kind": "call",
16188
+ "label": "執行隔離環境中的工具調用"
16189
+ },
16190
+ {
16191
+ "id": "eval-exec-scorer",
16192
+ "from": {
16193
+ "feature": "eval-executor",
16194
+ "submodule": "trace-recorder"
16195
+ },
16196
+ "to": {
16197
+ "feature": "eval-scorer",
16198
+ "submodule": "judge-prompt-builder"
16199
+ },
16200
+ "kind": "data-row",
16201
+ "label": "trace events 送入評分"
16202
+ },
16203
+ {
16204
+ "id": "eval-scorer-reporter",
16205
+ "from": {
16206
+ "feature": "eval-scorer"
16207
+ },
16208
+ "to": {
16209
+ "feature": "eval-reporter"
16210
+ },
16211
+ "kind": "data-row",
16212
+ "label": "ScoreResult 送入報告組合"
16213
+ },
16214
+ {
16215
+ "id": "eval-exec-optimizer",
16216
+ "from": {
16217
+ "feature": "eval-executor"
16218
+ },
16219
+ "to": {
16220
+ "feature": "eval-optimizer"
16221
+ },
16222
+ "kind": "data-row",
16223
+ "label": "執行結果觸發優化"
16224
+ },
16225
+ {
16226
+ "id": "eval-cli-ci",
16227
+ "from": {
16228
+ "feature": "eval-cli"
16229
+ },
16230
+ "to": {
16231
+ "feature": "eval-ci-gate"
16232
+ },
16233
+ "kind": "call",
16234
+ "label": "CI 模式下觸發 PR 回報"
16235
+ }
16236
+ ]
16237
+ }
15628
16238
  }
15629
16239
  ]