@aigne/doc-smith 0.8.12-beta.7 → 0.8.12-beta.9

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 (284) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/agents/clear/choose-contents.mjs +14 -1
  3. package/agents/clear/clear-media-description.mjs +129 -0
  4. package/agents/clear/index.yaml +3 -1
  5. package/agents/evaluate/code-snippet.mjs +28 -24
  6. package/agents/evaluate/document-structure.yaml +0 -4
  7. package/agents/evaluate/document.yaml +1 -5
  8. package/agents/generate/index.yaml +1 -0
  9. package/agents/init/index.mjs +10 -0
  10. package/agents/media/batch-generate-media-description.yaml +44 -0
  11. package/agents/media/generate-media-description.yaml +47 -0
  12. package/agents/media/load-media-description.mjs +238 -0
  13. package/agents/publish/index.yaml +4 -0
  14. package/agents/publish/publish-docs.mjs +77 -5
  15. package/agents/publish/translate-meta.mjs +103 -0
  16. package/agents/update/generate-document.yaml +30 -28
  17. package/agents/update/index.yaml +1 -0
  18. package/agents/update/update-document-detail.yaml +3 -1
  19. package/agents/utils/load-sources.mjs +103 -53
  20. package/agents/utils/update-branding.mjs +69 -0
  21. package/aigne.yaml +6 -0
  22. package/assets/report-template/report.html +34 -34
  23. package/package.json +17 -2
  24. package/prompts/common/document/role-and-personality.md +3 -1
  25. package/prompts/detail/d2-diagram/guide.md +7 -1
  26. package/prompts/detail/d2-diagram/user-prompt.md +3 -0
  27. package/prompts/detail/generate/system-prompt.md +6 -7
  28. package/prompts/detail/generate/user-prompt.md +12 -3
  29. package/prompts/detail/update/user-prompt.md +0 -2
  30. package/prompts/evaluate/document-structure.md +6 -7
  31. package/prompts/evaluate/document.md +16 -25
  32. package/prompts/media/media-description/system-prompt.md +35 -0
  33. package/prompts/media/media-description/user-prompt.md +8 -0
  34. package/prompts/structure/update/user-prompt.md +0 -4
  35. package/utils/constants/index.mjs +0 -107
  36. package/utils/file-utils.mjs +86 -0
  37. package/utils/markdown-checker.mjs +0 -20
  38. package/utils/request.mjs +7 -0
  39. package/utils/upload-files.mjs +231 -0
  40. package/utils/utils.mjs +11 -1
  41. package/.aigne/doc-smith/config.yaml +0 -77
  42. package/.aigne/doc-smith/history.yaml +0 -37
  43. package/.aigne/doc-smith/output/structure-plan.json +0 -162
  44. package/.aigne/doc-smith/preferences.yml +0 -97
  45. package/.aigne/doc-smith/upload-cache.yaml +0 -1893
  46. package/.github/PULL_REQUEST_TEMPLATE.md +0 -28
  47. package/.github/workflows/ci.yml +0 -54
  48. package/.github/workflows/create-release-pr.yaml +0 -21
  49. package/.github/workflows/publish-docs.yml +0 -65
  50. package/.github/workflows/release.yml +0 -49
  51. package/.github/workflows/reviewer.yml +0 -54
  52. package/.release-please-manifest.json +0 -3
  53. package/RELEASE.md +0 -9
  54. package/assets/screenshots/doc-complete-setup.png +0 -0
  55. package/assets/screenshots/doc-generate-docs.png +0 -0
  56. package/assets/screenshots/doc-generate.png +0 -0
  57. package/assets/screenshots/doc-generated-successfully.png +0 -0
  58. package/assets/screenshots/doc-publish.png +0 -0
  59. package/assets/screenshots/doc-regenerate.png +0 -0
  60. package/assets/screenshots/doc-translate-langs.png +0 -0
  61. package/assets/screenshots/doc-translate.png +0 -0
  62. package/assets/screenshots/doc-update.png +0 -0
  63. package/biome.json +0 -73
  64. package/codecov.yml +0 -15
  65. package/docs/_sidebar.md +0 -15
  66. package/docs/configuration-initial-setup.ja.md +0 -179
  67. package/docs/configuration-initial-setup.md +0 -179
  68. package/docs/configuration-initial-setup.zh-TW.md +0 -179
  69. package/docs/configuration-initial-setup.zh.md +0 -179
  70. package/docs/configuration-managing-preferences.ja.md +0 -100
  71. package/docs/configuration-managing-preferences.md +0 -100
  72. package/docs/configuration-managing-preferences.zh-TW.md +0 -100
  73. package/docs/configuration-managing-preferences.zh.md +0 -100
  74. package/docs/configuration.ja.md +0 -96
  75. package/docs/configuration.md +0 -96
  76. package/docs/configuration.zh-TW.md +0 -96
  77. package/docs/configuration.zh.md +0 -96
  78. package/docs/getting-started.ja.md +0 -88
  79. package/docs/getting-started.md +0 -88
  80. package/docs/getting-started.zh-TW.md +0 -88
  81. package/docs/getting-started.zh.md +0 -88
  82. package/docs/guides-cleaning-up.ja.md +0 -51
  83. package/docs/guides-cleaning-up.md +0 -51
  84. package/docs/guides-cleaning-up.zh-TW.md +0 -51
  85. package/docs/guides-cleaning-up.zh.md +0 -51
  86. package/docs/guides-evaluating-documents.ja.md +0 -66
  87. package/docs/guides-evaluating-documents.md +0 -66
  88. package/docs/guides-evaluating-documents.zh-TW.md +0 -66
  89. package/docs/guides-evaluating-documents.zh.md +0 -66
  90. package/docs/guides-generating-documentation.ja.md +0 -151
  91. package/docs/guides-generating-documentation.md +0 -151
  92. package/docs/guides-generating-documentation.zh-TW.md +0 -151
  93. package/docs/guides-generating-documentation.zh.md +0 -151
  94. package/docs/guides-interactive-chat.ja.md +0 -85
  95. package/docs/guides-interactive-chat.md +0 -85
  96. package/docs/guides-interactive-chat.zh-TW.md +0 -85
  97. package/docs/guides-interactive-chat.zh.md +0 -85
  98. package/docs/guides-managing-history.ja.md +0 -48
  99. package/docs/guides-managing-history.md +0 -48
  100. package/docs/guides-managing-history.zh-TW.md +0 -48
  101. package/docs/guides-managing-history.zh.md +0 -48
  102. package/docs/guides-publishing-your-docs.ja.md +0 -78
  103. package/docs/guides-publishing-your-docs.md +0 -78
  104. package/docs/guides-publishing-your-docs.zh-TW.md +0 -78
  105. package/docs/guides-publishing-your-docs.zh.md +0 -78
  106. package/docs/guides-translating-documentation.ja.md +0 -95
  107. package/docs/guides-translating-documentation.md +0 -95
  108. package/docs/guides-translating-documentation.zh-TW.md +0 -95
  109. package/docs/guides-translating-documentation.zh.md +0 -95
  110. package/docs/guides-updating-documentation.ja.md +0 -77
  111. package/docs/guides-updating-documentation.md +0 -77
  112. package/docs/guides-updating-documentation.zh-TW.md +0 -77
  113. package/docs/guides-updating-documentation.zh.md +0 -77
  114. package/docs/guides.ja.md +0 -32
  115. package/docs/guides.md +0 -32
  116. package/docs/guides.zh-TW.md +0 -32
  117. package/docs/guides.zh.md +0 -32
  118. package/docs/overview.ja.md +0 -61
  119. package/docs/overview.md +0 -61
  120. package/docs/overview.zh-TW.md +0 -61
  121. package/docs/overview.zh.md +0 -61
  122. package/docs/release-notes.ja.md +0 -255
  123. package/docs/release-notes.md +0 -255
  124. package/docs/release-notes.zh-TW.md +0 -255
  125. package/docs/release-notes.zh.md +0 -255
  126. package/media.md +0 -19
  127. package/prompts/common/afs/afs-tools-usage.md +0 -5
  128. package/prompts/common/afs/use-afs-instruction.md +0 -1
  129. package/release-please-config.json +0 -14
  130. package/tests/agents/chat/chat.test.mjs +0 -46
  131. package/tests/agents/clear/choose-contents.test.mjs +0 -284
  132. package/tests/agents/clear/clear-auth-tokens.test.mjs +0 -268
  133. package/tests/agents/clear/clear-document-config.test.mjs +0 -167
  134. package/tests/agents/clear/clear-document-structure.test.mjs +0 -380
  135. package/tests/agents/clear/clear-generated-docs.test.mjs +0 -222
  136. package/tests/agents/evaluate/code-snippet.test.mjs +0 -163
  137. package/tests/agents/evaluate/fixtures/api-services.md +0 -87
  138. package/tests/agents/evaluate/fixtures/js-sdk.md +0 -94
  139. package/tests/agents/evaluate/generate-report.test.mjs +0 -312
  140. package/tests/agents/generate/check-document-structure.test.mjs +0 -45
  141. package/tests/agents/generate/check-need-generate-structure.test.mjs +0 -279
  142. package/tests/agents/generate/document-structure-tools/add-document.test.mjs +0 -449
  143. package/tests/agents/generate/document-structure-tools/delete-document.test.mjs +0 -410
  144. package/tests/agents/generate/document-structure-tools/generate-sub-structure.test.mjs +0 -277
  145. package/tests/agents/generate/document-structure-tools/move-document.test.mjs +0 -476
  146. package/tests/agents/generate/document-structure-tools/update-document.test.mjs +0 -548
  147. package/tests/agents/generate/generate-structure.test.mjs +0 -45
  148. package/tests/agents/generate/user-review-document-structure.test.mjs +0 -319
  149. package/tests/agents/history/view.test.mjs +0 -97
  150. package/tests/agents/init/init.test.mjs +0 -1657
  151. package/tests/agents/prefs/prefs.test.mjs +0 -431
  152. package/tests/agents/publish/publish-docs.test.mjs +0 -787
  153. package/tests/agents/translate/choose-language.test.mjs +0 -311
  154. package/tests/agents/translate/translate-document.test.mjs +0 -51
  155. package/tests/agents/update/check-document.test.mjs +0 -463
  156. package/tests/agents/update/check-update-is-single.test.mjs +0 -300
  157. package/tests/agents/update/document-tools/update-document-content.test.mjs +0 -329
  158. package/tests/agents/update/generate-document.test.mjs +0 -51
  159. package/tests/agents/update/save-and-translate-document.test.mjs +0 -369
  160. package/tests/agents/update/user-review-document.test.mjs +0 -582
  161. package/tests/agents/utils/action-success.test.mjs +0 -54
  162. package/tests/agents/utils/check-detail-result.test.mjs +0 -743
  163. package/tests/agents/utils/check-feedback-refiner.test.mjs +0 -478
  164. package/tests/agents/utils/choose-docs.test.mjs +0 -406
  165. package/tests/agents/utils/exit.test.mjs +0 -70
  166. package/tests/agents/utils/feedback-refiner.test.mjs +0 -51
  167. package/tests/agents/utils/find-item-by-path.test.mjs +0 -517
  168. package/tests/agents/utils/find-user-preferences-by-path.test.mjs +0 -382
  169. package/tests/agents/utils/format-document-structure.test.mjs +0 -364
  170. package/tests/agents/utils/fs.test.mjs +0 -267
  171. package/tests/agents/utils/load-sources.test.mjs +0 -1470
  172. package/tests/agents/utils/save-docs.test.mjs +0 -109
  173. package/tests/agents/utils/save-output.test.mjs +0 -315
  174. package/tests/agents/utils/save-single-doc.test.mjs +0 -364
  175. package/tests/agents/utils/transform-detail-datasources.test.mjs +0 -320
  176. package/tests/utils/auth-utils.test.mjs +0 -596
  177. package/tests/utils/blocklet.test.mjs +0 -336
  178. package/tests/utils/conflict-detector.test.mjs +0 -355
  179. package/tests/utils/constants.test.mjs +0 -295
  180. package/tests/utils/d2-utils.test.mjs +0 -437
  181. package/tests/utils/deploy.test.mjs +0 -399
  182. package/tests/utils/docs-finder-utils.test.mjs +0 -650
  183. package/tests/utils/file-utils.test.mjs +0 -521
  184. package/tests/utils/history-utils.test.mjs +0 -206
  185. package/tests/utils/kroki-utils.test.mjs +0 -646
  186. package/tests/utils/linter/fixtures/css/keyword-error.css +0 -1
  187. package/tests/utils/linter/fixtures/css/missing-semicolon.css +0 -1
  188. package/tests/utils/linter/fixtures/css/syntax-error.css +0 -1
  189. package/tests/utils/linter/fixtures/css/undeclare-variable.css +0 -1
  190. package/tests/utils/linter/fixtures/css/unused-variable.css +0 -2
  191. package/tests/utils/linter/fixtures/css/valid-code.css +0 -1
  192. package/tests/utils/linter/fixtures/dockerfile/keyword-error.dockerfile +0 -1
  193. package/tests/utils/linter/fixtures/dockerfile/missing-semicolon.dockerfile +0 -2
  194. package/tests/utils/linter/fixtures/dockerfile/syntax-error.dockerfile +0 -2
  195. package/tests/utils/linter/fixtures/dockerfile/undeclare-variable.dockerfile +0 -1
  196. package/tests/utils/linter/fixtures/dockerfile/unused-variable.dockerfile +0 -1
  197. package/tests/utils/linter/fixtures/dockerfile/valid-code.dockerfile +0 -2
  198. package/tests/utils/linter/fixtures/go/keyword-error.go +0 -5
  199. package/tests/utils/linter/fixtures/go/missing-semicolon.go +0 -5
  200. package/tests/utils/linter/fixtures/go/syntax-error.go +0 -6
  201. package/tests/utils/linter/fixtures/go/undeclare-variable.go +0 -5
  202. package/tests/utils/linter/fixtures/go/unused-variable.go +0 -5
  203. package/tests/utils/linter/fixtures/go/valid-code.go +0 -7
  204. package/tests/utils/linter/fixtures/js/keyword-error.js +0 -3
  205. package/tests/utils/linter/fixtures/js/missing-semicolon.js +0 -6
  206. package/tests/utils/linter/fixtures/js/syntax-error.js +0 -4
  207. package/tests/utils/linter/fixtures/js/undeclare-variable.js +0 -3
  208. package/tests/utils/linter/fixtures/js/unused-variable.js +0 -7
  209. package/tests/utils/linter/fixtures/js/valid-code.js +0 -15
  210. package/tests/utils/linter/fixtures/json/keyword-error.json +0 -1
  211. package/tests/utils/linter/fixtures/json/missing-semicolon.json +0 -1
  212. package/tests/utils/linter/fixtures/json/syntax-error.json +0 -1
  213. package/tests/utils/linter/fixtures/json/undeclare-variable.json +0 -1
  214. package/tests/utils/linter/fixtures/json/unused-variable.json +0 -1
  215. package/tests/utils/linter/fixtures/json/valid-code.json +0 -1
  216. package/tests/utils/linter/fixtures/jsx/keyword-error.jsx +0 -5
  217. package/tests/utils/linter/fixtures/jsx/missing-semicolon.jsx +0 -5
  218. package/tests/utils/linter/fixtures/jsx/syntax-error.jsx +0 -5
  219. package/tests/utils/linter/fixtures/jsx/undeclare-variable.jsx +0 -5
  220. package/tests/utils/linter/fixtures/jsx/unused-variable.jsx +0 -4
  221. package/tests/utils/linter/fixtures/jsx/valid-code.jsx +0 -5
  222. package/tests/utils/linter/fixtures/python/keyword-error.py +0 -3
  223. package/tests/utils/linter/fixtures/python/missing-semicolon.py +0 -2
  224. package/tests/utils/linter/fixtures/python/syntax-error.py +0 -3
  225. package/tests/utils/linter/fixtures/python/undeclare-variable.py +0 -3
  226. package/tests/utils/linter/fixtures/python/unused-variable.py +0 -6
  227. package/tests/utils/linter/fixtures/python/valid-code.py +0 -12
  228. package/tests/utils/linter/fixtures/ruby/keyword-error.rb +0 -2
  229. package/tests/utils/linter/fixtures/ruby/missing-semicolon.rb +0 -1
  230. package/tests/utils/linter/fixtures/ruby/syntax-error.rb +0 -2
  231. package/tests/utils/linter/fixtures/ruby/undeclare-variable.rb +0 -1
  232. package/tests/utils/linter/fixtures/ruby/unused-variable.rb +0 -2
  233. package/tests/utils/linter/fixtures/ruby/valid-code.rb +0 -1
  234. package/tests/utils/linter/fixtures/sass/keyword-error.sass +0 -2
  235. package/tests/utils/linter/fixtures/sass/missing-semicolon.sass +0 -3
  236. package/tests/utils/linter/fixtures/sass/syntax-error.sass +0 -3
  237. package/tests/utils/linter/fixtures/sass/undeclare-variable.sass +0 -2
  238. package/tests/utils/linter/fixtures/sass/unused-variable.sass +0 -4
  239. package/tests/utils/linter/fixtures/sass/valid-code.sass +0 -2
  240. package/tests/utils/linter/fixtures/scss/keyword-error.scss +0 -1
  241. package/tests/utils/linter/fixtures/scss/missing-semicolon.scss +0 -1
  242. package/tests/utils/linter/fixtures/scss/syntax-error.scss +0 -1
  243. package/tests/utils/linter/fixtures/scss/undeclare-variable.scss +0 -1
  244. package/tests/utils/linter/fixtures/scss/unused-variable.scss +0 -2
  245. package/tests/utils/linter/fixtures/scss/valid-code.scss +0 -1
  246. package/tests/utils/linter/fixtures/shell/keyword-error.sh +0 -5
  247. package/tests/utils/linter/fixtures/shell/missing-semicolon.sh +0 -3
  248. package/tests/utils/linter/fixtures/shell/syntax-error.sh +0 -4
  249. package/tests/utils/linter/fixtures/shell/undeclare-variable.sh +0 -3
  250. package/tests/utils/linter/fixtures/shell/unused-variable.sh +0 -4
  251. package/tests/utils/linter/fixtures/shell/valid-code.sh +0 -3
  252. package/tests/utils/linter/fixtures/ts/keyword-error.ts +0 -1
  253. package/tests/utils/linter/fixtures/ts/missing-semicolon.ts +0 -1
  254. package/tests/utils/linter/fixtures/ts/syntax-error.ts +0 -1
  255. package/tests/utils/linter/fixtures/ts/undeclare-variable.ts +0 -1
  256. package/tests/utils/linter/fixtures/ts/unused-variable.ts +0 -3
  257. package/tests/utils/linter/fixtures/ts/valid-code.ts +0 -3
  258. package/tests/utils/linter/fixtures/tsx/keyword-error.tsx +0 -5
  259. package/tests/utils/linter/fixtures/tsx/missing-semicolon.tsx +0 -5
  260. package/tests/utils/linter/fixtures/tsx/syntax-error.tsx +0 -5
  261. package/tests/utils/linter/fixtures/tsx/undeclare-variable.tsx +0 -6
  262. package/tests/utils/linter/fixtures/tsx/unused-variable.tsx +0 -6
  263. package/tests/utils/linter/fixtures/tsx/valid-code.tsx +0 -5
  264. package/tests/utils/linter/fixtures/vue/keyword-error.vue +0 -6
  265. package/tests/utils/linter/fixtures/vue/missing-semicolon.vue +0 -6
  266. package/tests/utils/linter/fixtures/vue/syntax-error.vue +0 -6
  267. package/tests/utils/linter/fixtures/vue/undeclare-variable.vue +0 -6
  268. package/tests/utils/linter/fixtures/vue/unused-variable.vue +0 -7
  269. package/tests/utils/linter/fixtures/vue/valid-code.vue +0 -6
  270. package/tests/utils/linter/fixtures/yaml/keyword-error.yml +0 -1
  271. package/tests/utils/linter/fixtures/yaml/missing-semicolon.yml +0 -2
  272. package/tests/utils/linter/fixtures/yaml/syntax-error.yml +0 -1
  273. package/tests/utils/linter/fixtures/yaml/undeclare-variable.yml +0 -1
  274. package/tests/utils/linter/fixtures/yaml/unused-variable.yml +0 -2
  275. package/tests/utils/linter/fixtures/yaml/valid-code.yml +0 -3
  276. package/tests/utils/linter/index.test.mjs +0 -440
  277. package/tests/utils/linter/scan-results.mjs +0 -42
  278. package/tests/utils/load-config.test.mjs +0 -141
  279. package/tests/utils/markdown/index.test.mjs +0 -478
  280. package/tests/utils/mermaid-validator.test.mjs +0 -541
  281. package/tests/utils/mock-chat-model.mjs +0 -12
  282. package/tests/utils/preferences-utils.test.mjs +0 -465
  283. package/tests/utils/save-value-to-config.test.mjs +0 -483
  284. package/tests/utils/utils.test.mjs +0 -941
@@ -1,255 +0,0 @@
1
- # 发行说明
2
-
3
- 本文档总结了该工具每个版本的新功能、改进和错误修复。所有变更均按时间倒序排列。
4
-
5
- ## 版本 0.8.12-beta.3 (2025-10-09)
6
-
7
- ### 错误修复
8
-
9
- - 解决了发布到云端时错误地要求管理员权限的问题。
10
-
11
- ## 版本 0.8.12-beta.2 (2025-10-09)
12
-
13
- ### 错误修复
14
-
15
- - 修正了更新文档时文件路径的错误。
16
- - 修复了可能导致文档生成和更新失败的问题。
17
-
18
- ## 版本 0.8.12-beta.1 (2025-10-08)
19
-
20
- ### 新功能
21
-
22
- - 引入了历史记录跟踪功能,允许您查看文档的过往变更。
23
- - 在文档更新过程中,翻译现在是一个可选步骤,提供了更大的灵活性。
24
-
25
- ### 改进
26
-
27
- - 优化了文档生成和更新流程,以提高可靠性。
28
-
29
- ## 版本 0.8.12-beta (2025-10-07)
30
-
31
- ### 错误修复
32
-
33
- - 内部文件读取工具现在可以正确支持相对路径。
34
-
35
- ## 版本 0.8.11 (2025-10-05)
36
-
37
- 此版本包含常规维护和稳定性改进。
38
-
39
- ## 版本 0.8.11-beta.7 (2025-10-03)
40
-
41
- ### 新功能
42
-
43
- - 增强了文档生成器和更新器,以获得更好的性能。
44
- - 通过使用共享上下文,提高了文档结构分析和内容优化的速度。
45
-
46
- ### 错误修复
47
-
48
- - 更新了内部文档并优化了自定义组件的提示,以提高准确性。
49
-
50
- ## 版本 0.8.11-beta.5 (2025-10-01)
51
-
52
- ### 新功能
53
-
54
- - 新增了对发布时的用户角色要求和自定义规则配置的支持。
55
- - 将 D2 图表生成功能分离为一个独立的工具,以实现更专注的功能。
56
-
57
- ## 版本 0.8.11-beta.4 (2025-09-30)
58
-
59
- ### 新功能
60
-
61
- - 为使用选择输入的 Agent 添加了“仅检查”选项。
62
-
63
- ### 错误修复
64
-
65
- - 改进了文档选择实用程序中的错误处理。
66
- - 调整了翻译提示;现在代码块内的注释可以被正确翻译。
67
-
68
- ## 版本 0.8.11-beta.3 (2025-09-29)
69
-
70
- ### 错误修复
71
-
72
- - 为评估 Agent 添加了命令行入口。
73
-
74
- ## 版本 0.8.11-beta.2 (2025-09-27)
75
-
76
- ### 错误修复
77
-
78
- - 解决了依赖冲突,以确保更平稳的运行。
79
-
80
- ## 版本 0.8.11-beta.1 (2025-09-27)
81
-
82
- ### 新功能
83
-
84
- - 引入了文档评估功能,以生成质量报告。
85
- - 通过改进的工具增强了文档和结构的更新流程。
86
- - 改进了发布过程中的供应商处理和调试能力。
87
-
88
- ### 错误修复
89
-
90
- - 修复了组件描述被当作属性而非文本处理的问题,从而改进了自定义组件的渲染。
91
-
92
- ## 版本 0.8.10 (2025-09-20)
93
-
94
- 此版本包含常规维护和稳定性改进。
95
-
96
- ## 版本 0.8.10-beta.3 (2025-09-19)
97
-
98
- ### 错误修复
99
-
100
- - 添加了与企业部署相关的链接。
101
- - 优化了文档审查提示的文案。
102
-
103
- ## 版本 0.8.10-beta.2 (2025-09-18)
104
-
105
- ### 错误修复
106
-
107
- - 改进了文档结构审查的提示和显示。
108
- - 更新了字段元素的使用规则,以确保正确渲染。
109
-
110
- ## 版本 0.8.10-beta.1 (2025-09-18)
111
-
112
- ### 新功能
113
-
114
- - 新增了在生成前审查文档结构的工作流。
115
-
116
- ### 错误修复
117
-
118
- - 提高了用户界面中英文文本的一致性和清晰度。
119
- - 更新了 DocSmith 徽标。
120
-
121
- ## 版本 0.8.9 (2025-09-15)
122
-
123
- ### 错误修复
124
-
125
- - 更新了 D2 图表的主题颜色,以获得更好的视觉一致性。
126
-
127
- ## 版本 0.8.8 (2025-09-13)
128
-
129
- ### 错误修复
130
-
131
- - 优化了问询反馈的文案,使其更清晰、更有帮助。
132
-
133
- ## 版本 0.8.7 (2025-09-12)
134
-
135
- ### 新功能
136
-
137
- - 新增了使用 `<x-field>` 自定义组件定义 API 参数的支持。
138
-
139
- ## 版本 0.8.6 (2025-09-11)
140
-
141
- ### 新功能
142
-
143
- - 成功发布后,现在默认显示 URL。
144
-
145
- ### 错误修复
146
-
147
- - 确保在部署过程中正确保存日志,以防止数据丢失。
148
-
149
- ## 版本 0.8.5 (2025-09-10)
150
-
151
- ### 新功能
152
-
153
- - 新增了对将文档发布到企业空间的支持。
154
-
155
- ## 版本 0.8.4 (2025-09-09)
156
-
157
- ### 错误修复
158
-
159
- - Markdown 代码块现在被解析为自定义的 `<x-code>` 元素,并支持标题和图标等增强属性。
160
- - 将 D2 图表的背景设置为透明,以便更好地与不同主题集成。
161
-
162
- ## 版本 0.8.3 (2025-09-05)
163
-
164
- ### 错误修复
165
-
166
- - 为本地图片添加了自动尺寸检测功能,以确保其正确显示。
167
-
168
- ## 版本 0.8.1 (2025-09-03)
169
-
170
- ### 新功能
171
-
172
- - 通过更全面的示例调整了 D2 图表生成,以提高输出质量。
173
-
174
- ## 版本 0.8.0 (2025-09-03)
175
-
176
- ### 新功能
177
-
178
- - 更新了自定义组件的指南,增加了新的格式限制。
179
-
180
- ## 版本 0.7.1 (2025-08-31)
181
-
182
- ### 错误修复
183
-
184
- - 修复了使用 Tab 键进行路径选择时无法正常工作的错误。
185
-
186
- ## 版本 0.7.0 (2025-08-30)
187
-
188
- ### 新功能
189
-
190
- - 新增了用于生成和管理文档的交互式聊天模式。
191
- - 在文档生成和发布工作流中引入了对 D2 图表的支持。
192
- - 启用了对自定义组件和更强大的配置处理的支持。
193
-
194
- ## 版本 0.6.0 (2025-08-27)
195
-
196
- ### 新功能
197
-
198
- - 实现了在发布文档前对媒体进行处理的完整支持。
199
-
200
- ## 版本 0.5.0 (2025-08-26)
201
-
202
- ### 新功能
203
-
204
- - 用户反馈现在可以作为持久化偏好保存,供未来会话使用。
205
-
206
- ### 错误修复
207
-
208
- - 优化了初始设置过程中提问的文本。
209
-
210
- ## 版本 0.4.4 (2025-08-22)
211
-
212
- ### 错误修复
213
-
214
- - 新增了在发布过程中分配看板 ID 的支持。
215
-
216
- ## 版本 0.4.1 (2025-08-21)
217
-
218
- ### 错误修复
219
-
220
- - 新增了对更新看板信息的支持。
221
-
222
- ## 版本 0.4.0 (2025-08-20)
223
-
224
- ### 新功能
225
-
226
- - 引入了用于翻译文档的新命令 `translate`。
227
-
228
- ## 版本 0.3.0 (2025-08-19)
229
-
230
- ### 新功能
231
-
232
- - 优化了在文档生成期间收集上下文的工作流。
233
-
234
- ### 错误修复
235
-
236
- - 优化了为运行自托管 Discuss Kit 实例的用户提供的帮助文本。
237
-
238
- ## 版本 0.2.11 (2025-08-15)
239
-
240
- ### 错误修复
241
-
242
- - 更换了默认语言模型以提高生成质量。
243
-
244
- ## 版本 0.2.5 (2025-08-08)
245
-
246
- ### 错误修复
247
-
248
- - 优化了命令行界面流程,以提供更流畅的用户体验。
249
-
250
- ## 版本 0.2.0 (2025-08-05)
251
-
252
- ### 新功能
253
-
254
- - 现在,当运行命令时,如果配置缺失,工具将自动初始化配置。
255
- - 新增了 `update` 命令,用于在源文件发生更改时刷新文档。
package/media.md DELETED
@@ -1,19 +0,0 @@
1
- # 提供在文档中可使用的媒体素材
2
-
3
- ![运行 generate 命令,智能执行初始化](./assets/screenshots/doc-generate.png)
4
-
5
- ![回答问题完成项目设置](./assets/screenshots/doc-complete-setup.png)
6
-
7
- ![执行结构规划和生成文档](./assets/screenshots/doc-generate-docs.png)
8
-
9
- ![文档生成成功](./assets/screenshots/doc-generated-successfully.png)
10
-
11
- ![智能检测,只重新生成需要的文档](./assets/screenshots/doc-regenerate.png)
12
-
13
- ![交互式选择需要更新文档](./assets/screenshots/doc-update.png)
14
-
15
- ![发布文档到官方平台或自部署平台](./assets/screenshots/doc-publish.png)
16
-
17
- ![选择需要翻译的文档](./assets/screenshots/doc-translate.png)
18
-
19
- ![选择需要翻译的语言](./assets/screenshots/doc-translate-langs.png)
@@ -1,5 +0,0 @@
1
- <afs-tool-usage>
2
- When to use Tools:
3
- - During document generation, if the given context is missing or lacks referenced content, use afs_list/afs_search/afs_read to obtain more context
4
- - Code examples in generated documents must use APIs and packages defined in the input data sources. Do not generate non-existent code out of thin air. Use afs_list/afs_search/afs_read to query related code or references
5
- </afs-tool-usage>
@@ -1 +0,0 @@
1
- Use AFS tools to list/search/read files to obtain more context or references. Ensure all content is accurate, relevant, and well-structured.
@@ -1,14 +0,0 @@
1
- {
2
- "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3
- "release-type": "node",
4
- "prerelease": true,
5
- "versioning": "prerelease",
6
- "packages": {
7
- ".": {
8
- "bump-minor-pre-major": true,
9
- "bump-patch-for-minor-pre-major": true,
10
- "include-component-in-tag": false,
11
- "prerelease-type": "beta"
12
- }
13
- }
14
- }
@@ -1,46 +0,0 @@
1
- import { afterAll, beforeAll, describe, expect, test } from "bun:test";
2
- import { join } from "node:path";
3
- import { AIAgent } from "@aigne/core";
4
- import { loadAgent } from "@aigne/core/loader/index.js";
5
- import { loadModel } from "../../utils/mock-chat-model.mjs";
6
-
7
- describe("chat Agent", () => {
8
- beforeAll(() => {
9
- process.env.AIGNE_OBSERVABILITY_DISABLED = "true";
10
- });
11
-
12
- afterAll(() => {
13
- delete process.env.AIGNE_OBSERVABILITY_DISABLED;
14
- });
15
- test("should load agent correctly with proper configuration", async () => {
16
- const agent = await loadAgent(join(import.meta.dirname, "../../../agents/chat/index.yaml"), {
17
- model: loadModel,
18
- });
19
-
20
- expect(agent).toBeDefined();
21
-
22
- // Verify agent exists and is correct type
23
- expect(agent).toBeDefined();
24
- expect(agent).toBeInstanceOf(AIAgent);
25
- expect(agent.name).toBe("chat");
26
- });
27
-
28
- test("should have instructions loaded correctly", async () => {
29
- const agent = await loadAgent(join(import.meta.dirname, "../../../agents/chat/index.yaml"), {
30
- model: loadModel,
31
- });
32
-
33
- expect(agent).toBeDefined();
34
-
35
- // Verify instructions are loaded
36
- expect(agent.instructions).toBeDefined();
37
- const instructions = await agent.instructions.build({});
38
- expect(instructions.messages).toBeDefined();
39
- expect(instructions.messages.length).toBeGreaterThan(0);
40
-
41
- // The instructions should contain content from the inline instructions
42
- const systemMessage = instructions.messages.find((m) => m.role === "system");
43
- expect(systemMessage).toBeDefined();
44
- expect(systemMessage.content).toContain("document generation assistant");
45
- });
46
- });
@@ -1,284 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test";
2
- import chooseContents from "../../../agents/clear/choose-contents.mjs";
3
-
4
- describe("choose-contents", () => {
5
- let mockOptions;
6
- let mockContext;
7
- let mockClearAgents;
8
-
9
- beforeEach(() => {
10
- // Create mock clear agents
11
- mockClearAgents = {
12
- clearGeneratedDocs: mock(async () => ({
13
- message: "Generated docs cleared",
14
- cleared: true,
15
- path: "/test/docs",
16
- })),
17
- clearDocumentStructure: mock(async () => ({
18
- message: "Documentation Structure cleared",
19
- cleared: true,
20
- path: "/test/structure.json",
21
- })),
22
- clearDocumentConfig: mock(async () => ({
23
- message: "Document config cleared",
24
- cleared: true,
25
- path: "/test/config.yaml",
26
- suggestions: ["Run `aigne doc init` to generate a fresh configuration file."],
27
- })),
28
- clearAuthTokens: mock(async () => ({
29
- message: "Auth tokens cleared",
30
- clearedCount: 2,
31
- clearedSites: ["example.com", "test.com"],
32
- })),
33
- };
34
-
35
- mockContext = {
36
- agents: mockClearAgents,
37
- invoke: mock(async (agent, input) => {
38
- return await agent(input);
39
- }),
40
- };
41
-
42
- mockOptions = {
43
- prompts: {
44
- checkbox: mock(async () => ["generatedDocs", "documentConfig"]),
45
- },
46
- context: mockContext,
47
- };
48
-
49
- // Clear mock call history
50
- mockOptions.prompts.checkbox.mockClear();
51
- mockContext.invoke.mockClear();
52
- Object.values(mockClearAgents).forEach((agent) => {
53
- agent.mockClear();
54
- });
55
- });
56
-
57
- afterEach(() => {
58
- // Note: Not using mock.restore() to avoid affecting other tests
59
- });
60
-
61
- test("should process provided targets correctly", async () => {
62
- const result = await chooseContents(
63
- { targets: ["generatedDocs", "documentConfig"] },
64
- mockOptions,
65
- );
66
-
67
- expect(mockContext.invoke).toHaveBeenCalledTimes(2);
68
- expect(mockClearAgents.clearGeneratedDocs).toHaveBeenCalled();
69
- expect(mockClearAgents.clearDocumentConfig).toHaveBeenCalled();
70
- expect(result.message).toContain("Cleanup completed successfully!");
71
- });
72
-
73
- test("should normalize target names case-insensitively", async () => {
74
- const result = await chooseContents(
75
- { targets: ["GeneratedDocs", "DOCUMENTCONFIG"] },
76
- mockOptions,
77
- );
78
-
79
- expect(mockContext.invoke).toHaveBeenCalledTimes(2);
80
- expect(mockClearAgents.clearGeneratedDocs).toHaveBeenCalled();
81
- expect(mockClearAgents.clearDocumentConfig).toHaveBeenCalled();
82
- expect(result.message).toContain("Cleanup completed successfully!");
83
- });
84
-
85
- test("should prompt user when no targets provided", async () => {
86
- mockOptions.prompts.checkbox.mockResolvedValue(["generatedDocs"]);
87
-
88
- await chooseContents({ docsDir: "/test/docs", workDir: "/test" }, mockOptions);
89
-
90
- expect(mockOptions.prompts.checkbox).toHaveBeenCalledWith({
91
- message: "Select items to clear:",
92
- choices: expect.arrayContaining([
93
- expect.objectContaining({
94
- name: "generated documents",
95
- value: "generatedDocs",
96
- }),
97
- ]),
98
- validate: expect.any(Function),
99
- });
100
- expect(mockClearAgents.clearGeneratedDocs).toHaveBeenCalled();
101
- });
102
-
103
- test("should handle empty selection from prompts", async () => {
104
- mockOptions.prompts.checkbox.mockResolvedValue([]);
105
-
106
- const result = await chooseContents({ docsDir: "/test/docs", workDir: "/test" }, mockOptions);
107
-
108
- expect(result.message).toBe("No items selected to clear.");
109
- expect(mockContext.invoke).not.toHaveBeenCalled();
110
- });
111
-
112
- test("should return available options when no prompts available", async () => {
113
- const optionsWithoutPrompts = { context: mockContext };
114
-
115
- const result = await chooseContents(
116
- { docsDir: "/test/docs", workDir: "/test" },
117
- optionsWithoutPrompts,
118
- );
119
-
120
- expect(result.message).toBe(
121
- "Available options to clear: generatedDocs, documentStructure, documentConfig, authTokens, deploymentConfig",
122
- );
123
- expect(result.availableTargets).toEqual([
124
- "generatedDocs",
125
- "documentStructure",
126
- "documentConfig",
127
- "authTokens",
128
- "deploymentConfig",
129
- ]);
130
- });
131
-
132
- test("should handle agent errors gracefully", async () => {
133
- mockClearAgents.clearGeneratedDocs.mockResolvedValue({
134
- error: true,
135
- message: "Failed to clear docs",
136
- });
137
-
138
- const result = await chooseContents({ targets: ["generatedDocs"] }, mockOptions);
139
-
140
- expect(result.message).toContain("Cleanup finished with some issues.");
141
- expect(result.message).toContain("Failed to clear docs");
142
- });
143
-
144
- test("should collect suggestions from agents", async () => {
145
- const result = await chooseContents({ targets: ["documentConfig"] }, mockOptions);
146
-
147
- expect(result.message).toContain(
148
- "Run `aigne doc init` to generate a fresh configuration file.",
149
- );
150
- });
151
-
152
- test("should handle all valid targets", async () => {
153
- const result = await chooseContents(
154
- { targets: ["generatedDocs", "documentStructure", "documentConfig", "authTokens"] },
155
- mockOptions,
156
- );
157
-
158
- expect(mockContext.invoke).toHaveBeenCalledTimes(4);
159
- expect(result.message).toContain("Cleanup completed successfully!");
160
- });
161
-
162
- test("should have correct input schema", () => {
163
- expect(chooseContents.input_schema).toBeDefined();
164
- expect(chooseContents.input_schema.type).toBe("object");
165
- expect(chooseContents.input_schema.properties.targets.type).toBe("array");
166
- });
167
-
168
- test("should have correct task metadata", () => {
169
- expect(chooseContents.taskTitle).toBe("Choose contents to clear");
170
- expect(chooseContents.description).toBe(
171
- "Choose contents to clear and execute the appropriate clearing operations",
172
- );
173
- });
174
-
175
- test("should handle unknown targets by filtering them out", async () => {
176
- // Test that unknown targets are filtered out and valid ones are processed
177
- // Mix unknown targets with valid ones
178
- const result = await chooseContents(
179
- { targets: ["unknownTarget1", "generatedDocs", "invalidTarget", "documentConfig"] },
180
- mockOptions,
181
- );
182
-
183
- // Should process only the valid targets and succeed
184
- expect(result.message).toContain("Cleanup completed successfully!");
185
- expect(mockContext.invoke).toHaveBeenCalledTimes(2); // Only valid targets processed
186
- expect(mockClearAgents.clearGeneratedDocs).toHaveBeenCalled();
187
- expect(mockClearAgents.clearDocumentConfig).toHaveBeenCalled();
188
- });
189
-
190
- test("should handle missing clear agent in context", async () => {
191
- const optionsWithoutAgent = {
192
- context: {
193
- agents: {},
194
- invoke: mockContext.invoke,
195
- },
196
- };
197
-
198
- const result = await chooseContents({ targets: ["generatedDocs"] }, optionsWithoutAgent);
199
-
200
- expect(result.message).toContain("Cleanup finished with some issues.");
201
- expect(result.message).toContain("Clear agent 'clearGeneratedDocs' not found in context");
202
- });
203
-
204
- test("should handle agent execution errors", async () => {
205
- const errorContext = {
206
- agents: mockClearAgents,
207
- invoke: mock(async () => {
208
- throw new Error("Agent execution failed");
209
- }),
210
- };
211
-
212
- const optionsWithError = {
213
- context: errorContext,
214
- };
215
-
216
- const result = await chooseContents({ targets: ["generatedDocs"] }, optionsWithError);
217
-
218
- expect(result.message).toContain("Cleanup finished with some issues.");
219
- expect(result.message).toContain("Failed to clear generated documents: Agent execution failed");
220
- });
221
-
222
- test("should handle duplicate targets", async () => {
223
- await chooseContents(
224
- { targets: ["generatedDocs", "generatedDocs", "documentConfig"] },
225
- mockOptions,
226
- );
227
-
228
- // Should only invoke each agent once due to deduplication
229
- expect(mockContext.invoke).toHaveBeenCalledTimes(2);
230
- expect(mockClearAgents.clearGeneratedDocs).toHaveBeenCalledTimes(1);
231
- expect(mockClearAgents.clearDocumentConfig).toHaveBeenCalledTimes(1);
232
- });
233
-
234
- test("should handle empty and whitespace targets", async () => {
235
- await chooseContents({ targets: ["", " ", "generatedDocs", null, undefined] }, mockOptions);
236
-
237
- // Should only process the valid target
238
- expect(mockContext.invoke).toHaveBeenCalledTimes(1);
239
- expect(mockClearAgents.clearGeneratedDocs).toHaveBeenCalled();
240
- });
241
-
242
- test("should add default suggestion when config is cleared", async () => {
243
- // Mock clearDocumentConfig to return cleared: true but no suggestions
244
- mockClearAgents.clearDocumentConfig.mockResolvedValue({
245
- message: "Document config cleared",
246
- cleared: true,
247
- path: "/test/config.yaml",
248
- });
249
-
250
- const result = await chooseContents({ targets: ["documentConfig"] }, mockOptions);
251
-
252
- expect(result.message).toContain(
253
- "Run `aigne doc init` to generate a fresh configuration file.",
254
- );
255
- });
256
-
257
- test("should not duplicate default suggestion when already present", async () => {
258
- // Mock clearDocumentConfig to return the default suggestion
259
- mockClearAgents.clearDocumentConfig.mockResolvedValue({
260
- message: "Document config cleared",
261
- cleared: true,
262
- path: "/test/config.yaml",
263
- suggestions: ["Run `aigne doc init` to generate a fresh configuration file."],
264
- });
265
-
266
- const result = await chooseContents({ targets: ["documentConfig"] }, mockOptions);
267
-
268
- // Should only appear once in the message
269
- const suggestionCount = (result.message.match(/Run `aigne doc init`/g) || []).length;
270
- expect(suggestionCount).toBe(1);
271
- });
272
-
273
- test("should handle agents that return no cleared status", async () => {
274
- mockClearAgents.clearGeneratedDocs.mockResolvedValue({
275
- message: "No docs to clear",
276
- // No cleared property
277
- });
278
-
279
- const result = await chooseContents({ targets: ["generatedDocs"] }, mockOptions);
280
-
281
- expect(result.message).toContain("Cleanup completed successfully!");
282
- expect(result.message).toContain("No docs to clear");
283
- });
284
- });