@aigne/doc-smith 0.9.10 → 0.9.11-beta

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 (308) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +189 -219
  3. package/README.zh.md +270 -0
  4. package/agents/bash-executor/index.mjs +347 -0
  5. package/agents/clear/ai/intent.md +142 -0
  6. package/agents/clear/choose-contents.mjs +13 -65
  7. package/agents/clear/clear-auth-tokens.mjs +17 -21
  8. package/agents/clear/clear-deployment-config.mjs +33 -24
  9. package/agents/clear/index.yaml +1 -9
  10. package/agents/content-checker/ai/intent.md +209 -0
  11. package/agents/content-checker/clean-invalid-docs.mjs +254 -0
  12. package/agents/content-checker/index.mjs +191 -0
  13. package/agents/content-checker/validate-content.mjs +983 -0
  14. package/agents/generate-images/generate-image.yaml +75 -0
  15. package/agents/generate-images/generate-summary.mjs +213 -0
  16. package/agents/generate-images/index.yaml +39 -0
  17. package/agents/generate-images/prepare-generation.mjs +286 -0
  18. package/agents/generate-images/prepare-image-generation.mjs +130 -0
  19. package/{prompts/detail/diagram/generate-image-system.md → agents/generate-images/prompts/system.md} +22 -56
  20. package/agents/generate-images/prompts/user.md +85 -0
  21. package/agents/generate-images/save-image-result.mjs +247 -0
  22. package/agents/generate-images/scan-image-slots.mjs +247 -0
  23. package/agents/localize/index.yaml +19 -42
  24. package/{prompts/translate → agents/localize/prompts}/translate-document.md +0 -139
  25. package/agents/localize/translate-documents/generate-summary.mjs +163 -0
  26. package/agents/localize/translate-documents/load-glossary.mjs +52 -0
  27. package/agents/localize/translate-documents/prepare-translation.mjs +249 -0
  28. package/agents/localize/translate-documents/save-translation.mjs +171 -0
  29. package/agents/localize/translate-documents/translate-document-to-language.mjs +209 -0
  30. package/agents/localize/translate-documents/translate-document.yaml +23 -0
  31. package/agents/localize/translate-documents/translate-to-languages.yaml +10 -0
  32. package/agents/localize/translate-images/check-image-translation.mjs +225 -0
  33. package/agents/localize/translate-images/detect-text/detect-and-update-shared.mjs +148 -0
  34. package/agents/localize/translate-images/detect-text/detect-image-text.yaml +44 -0
  35. package/agents/localize/translate-images/detect-text/detect-images-text.yaml +21 -0
  36. package/agents/localize/translate-images/detect-text/prompts/detect-image-text-system.md +43 -0
  37. package/agents/localize/translate-images/detect-text/prompts/detect-image-text-user.md +14 -0
  38. package/agents/localize/translate-images/detect-text/save-text-detection.mjs +105 -0
  39. package/agents/localize/translate-images/prepare-image-input.mjs +124 -0
  40. package/agents/localize/translate-images/save-image-translation.mjs +172 -0
  41. package/agents/localize/translate-images/scan-doc-images.mjs +165 -0
  42. package/agents/localize/translate-images/translate-doc-images.yaml +24 -0
  43. package/agents/localize/{translate-diagram.yaml → translate-images/translate-image.yaml} +25 -14
  44. package/agents/publish/ai/intent.md +182 -0
  45. package/agents/publish/check.mjs +107 -0
  46. package/agents/publish/index.yaml +9 -14
  47. package/agents/publish/publish-docs.mjs +81 -61
  48. package/agents/publish/translate-meta.mjs +79 -58
  49. package/agents/save-document/index.mjs +260 -0
  50. package/agents/structure-checker/index.mjs +307 -0
  51. package/agents/structure-checker/validate-structure.mjs +477 -0
  52. package/agents/update-image/analyze-feedback.yaml +37 -0
  53. package/agents/update-image/index.yaml +78 -0
  54. package/agents/update-image/load-existing-image.mjs +211 -0
  55. package/agents/update-image/prompts/analyze-feedback-system.md +43 -0
  56. package/agents/update-image/prompts/analyze-feedback-user.md +15 -0
  57. package/aigne.yaml +26 -139
  58. package/package.json +16 -48
  59. package/scripts/README.md +90 -0
  60. package/scripts/install.sh +86 -0
  61. package/scripts/uninstall.sh +52 -0
  62. package/skills/doc-smith/SKILL.md +285 -0
  63. package/skills/doc-smith/ai/intent/sources-improve.md +290 -0
  64. package/skills/doc-smith/references/changeset-guide.md +171 -0
  65. package/skills/doc-smith/references/document-content-guide.md +214 -0
  66. package/skills/doc-smith/references/document-structure-schema.md +138 -0
  67. package/skills/doc-smith/references/patch-guide.md +96 -0
  68. package/skills/doc-smith/references/structure-confirmation-guide.md +133 -0
  69. package/skills/doc-smith/references/structure-planning-guide.md +149 -0
  70. package/skills/doc-smith/references/update-workflow.md +108 -0
  71. package/skills/doc-smith/references/user-intent-guide.md +175 -0
  72. package/skills/doc-smith/references/workspace-initialization.md +376 -0
  73. package/skills/doc-smith-docs-detail/SKILL.md +356 -0
  74. package/skills/doc-smith-docs-detail/ai/intent.md +271 -0
  75. package/skills-entry/doc-smith/ai/intent.md +260 -0
  76. package/skills-entry/doc-smith/index.mjs +66 -0
  77. package/skills-entry/doc-smith/prompt.md +57 -0
  78. package/skills-entry/doc-smith/utils.mjs +27 -0
  79. package/skills-entry/doc-smith-docs-detail/batch.yaml +56 -0
  80. package/skills-entry/doc-smith-docs-detail/index.mjs +95 -0
  81. package/skills-entry/doc-smith-docs-detail/prompt.md +64 -0
  82. package/utils/afs-factory.mjs +183 -0
  83. package/utils/agent-constants.mjs +97 -0
  84. package/utils/{auth-utils.mjs → auth.mjs} +6 -9
  85. package/{agents/utils/update-branding.mjs → utils/branding.mjs} +3 -4
  86. package/utils/config.mjs +261 -0
  87. package/utils/constants.mjs +32 -0
  88. package/utils/deploy.mjs +3 -3
  89. package/utils/docs-converter.mjs +454 -0
  90. package/utils/docs.mjs +212 -0
  91. package/utils/document-paths.mjs +172 -0
  92. package/utils/files.mjs +74 -0
  93. package/utils/git.mjs +65 -0
  94. package/utils/{blocklet.mjs → http.mjs} +18 -0
  95. package/utils/image-slots.mjs +57 -0
  96. package/utils/image-utils.mjs +114 -0
  97. package/utils/project.mjs +95 -0
  98. package/utils/sources-path-resolver.mjs +76 -0
  99. package/utils/{upload-files.mjs → upload.mjs} +3 -3
  100. package/utils/workspace.mjs +371 -0
  101. package/agents/chat/chat-system.md +0 -38
  102. package/agents/chat/index.mjs +0 -59
  103. package/agents/chat/skills/generate-document.yaml +0 -15
  104. package/agents/chat/skills/list-documents.mjs +0 -15
  105. package/agents/chat/skills/update-document.yaml +0 -24
  106. package/agents/clear/clear-document-config.mjs +0 -36
  107. package/agents/clear/clear-document-structure.mjs +0 -102
  108. package/agents/clear/clear-generated-docs.mjs +0 -142
  109. package/agents/clear/clear-media-description.mjs +0 -129
  110. package/agents/create/aggregate-document-structure.mjs +0 -21
  111. package/agents/create/analyze-diagram-type-llm.yaml +0 -159
  112. package/agents/create/analyze-diagram-type.mjs +0 -455
  113. package/agents/create/check-document-structure.yaml +0 -30
  114. package/agents/create/check-need-generate-structure.mjs +0 -138
  115. package/agents/create/document-structure-tools/add-document.mjs +0 -85
  116. package/agents/create/document-structure-tools/delete-document.mjs +0 -116
  117. package/agents/create/document-structure-tools/move-document.mjs +0 -109
  118. package/agents/create/document-structure-tools/update-document.mjs +0 -84
  119. package/agents/create/generate-diagram-image.yaml +0 -91
  120. package/agents/create/generate-structure.yaml +0 -106
  121. package/agents/create/index.yaml +0 -45
  122. package/agents/create/refine-document-structure.yaml +0 -12
  123. package/agents/create/replace-d2-with-image.mjs +0 -610
  124. package/agents/create/update-document-structure.yaml +0 -54
  125. package/agents/create/user-add-document/add-documents-to-structure.mjs +0 -90
  126. package/agents/create/user-add-document/find-documents-to-add-links.yaml +0 -47
  127. package/agents/create/user-add-document/index.yaml +0 -46
  128. package/agents/create/user-add-document/prepare-documents-to-translate.mjs +0 -22
  129. package/agents/create/user-add-document/print-add-document-summary.mjs +0 -63
  130. package/agents/create/user-add-document/review-documents-with-new-links.mjs +0 -110
  131. package/agents/create/user-remove-document/find-documents-with-invalid-links.mjs +0 -78
  132. package/agents/create/user-remove-document/index.yaml +0 -40
  133. package/agents/create/user-remove-document/prepare-documents-to-translate.mjs +0 -22
  134. package/agents/create/user-remove-document/print-remove-document-summary.mjs +0 -53
  135. package/agents/create/user-remove-document/remove-documents-from-structure.mjs +0 -99
  136. package/agents/create/user-remove-document/review-documents-with-invalid-links.mjs +0 -115
  137. package/agents/create/user-review-document-structure.mjs +0 -139
  138. package/agents/create/utils/init-current-content.mjs +0 -34
  139. package/agents/create/utils/merge-document-structures.mjs +0 -36
  140. package/agents/evaluate/code-snippet.mjs +0 -97
  141. package/agents/evaluate/document-structure.yaml +0 -67
  142. package/agents/evaluate/document.yaml +0 -82
  143. package/agents/evaluate/generate-report.mjs +0 -85
  144. package/agents/evaluate/index.yaml +0 -46
  145. package/agents/history/index.yaml +0 -6
  146. package/agents/history/view.mjs +0 -78
  147. package/agents/init/check.mjs +0 -16
  148. package/agents/init/index.mjs +0 -643
  149. package/agents/init/validate.mjs +0 -16
  150. package/agents/localize/choose-language.mjs +0 -107
  151. package/agents/localize/record-translation-history.mjs +0 -23
  152. package/agents/localize/save-doc-translation-or-skip.mjs +0 -18
  153. package/agents/localize/set-review-content.mjs +0 -58
  154. package/agents/localize/translate-document-wrapper.mjs +0 -34
  155. package/agents/localize/translate-document.yaml +0 -24
  156. package/agents/localize/translate-multilingual.yaml +0 -57
  157. package/agents/localize/translate-or-skip-diagram.mjs +0 -52
  158. package/agents/media/batch-generate-media-description.yaml +0 -46
  159. package/agents/media/generate-media-description.yaml +0 -50
  160. package/agents/media/load-media-description.mjs +0 -454
  161. package/agents/prefs/index.mjs +0 -203
  162. package/agents/schema/document-structure-item.yaml +0 -26
  163. package/agents/schema/document-structure-refine-item.yaml +0 -23
  164. package/agents/schema/document-structure.yaml +0 -29
  165. package/agents/update/batch-generate-document.yaml +0 -27
  166. package/agents/update/batch-update-document.yaml +0 -7
  167. package/agents/update/check-diagram-flag.mjs +0 -116
  168. package/agents/update/check-document.mjs +0 -162
  169. package/agents/update/check-generate-diagram.mjs +0 -106
  170. package/agents/update/check-update-is-single.mjs +0 -53
  171. package/agents/update/document-tools/update-document-content.mjs +0 -303
  172. package/agents/update/generate-diagram.yaml +0 -80
  173. package/agents/update/generate-document.yaml +0 -70
  174. package/agents/update/handle-document-update.yaml +0 -103
  175. package/agents/update/index.yaml +0 -69
  176. package/agents/update/pre-check-generate-diagram.yaml +0 -44
  177. package/agents/update/save-and-translate-document.mjs +0 -80
  178. package/agents/update/update-document-detail.yaml +0 -71
  179. package/agents/update/update-single/update-single-document-detail.mjs +0 -322
  180. package/agents/update/update-single-document.yaml +0 -7
  181. package/agents/update/user-review-document.mjs +0 -272
  182. package/agents/utils/action-success.mjs +0 -16
  183. package/agents/utils/analyze-document-feedback-intent.yaml +0 -32
  184. package/agents/utils/analyze-feedback-intent.mjs +0 -253
  185. package/agents/utils/analyze-structure-feedback-intent.yaml +0 -29
  186. package/agents/utils/check-detail-result.mjs +0 -51
  187. package/agents/utils/check-feedback-refiner.mjs +0 -81
  188. package/agents/utils/choose-docs.mjs +0 -251
  189. package/agents/utils/document-icon-generate.yaml +0 -52
  190. package/agents/utils/document-title-streamline.yaml +0 -48
  191. package/agents/utils/ensure-document-icons.mjs +0 -129
  192. package/agents/utils/exit.mjs +0 -6
  193. package/agents/utils/feedback-refiner.yaml +0 -50
  194. package/agents/utils/find-item-by-path.mjs +0 -114
  195. package/agents/utils/find-user-preferences-by-path.mjs +0 -37
  196. package/agents/utils/format-document-structure.mjs +0 -35
  197. package/agents/utils/generate-document-or-skip.mjs +0 -41
  198. package/agents/utils/handle-diagram-operations.mjs +0 -263
  199. package/agents/utils/load-all-document-content.mjs +0 -30
  200. package/agents/utils/load-document-all-content.mjs +0 -96
  201. package/agents/utils/load-sources.mjs +0 -405
  202. package/agents/utils/map-reasoning-effort-level.mjs +0 -15
  203. package/agents/utils/post-generate.mjs +0 -133
  204. package/agents/utils/read-current-document-content.mjs +0 -46
  205. package/agents/utils/save-doc-translation.mjs +0 -30
  206. package/agents/utils/save-doc.mjs +0 -54
  207. package/agents/utils/save-output.mjs +0 -26
  208. package/agents/utils/save-sidebar.mjs +0 -38
  209. package/agents/utils/skip-if-content-exists.mjs +0 -27
  210. package/agents/utils/streamline-document-titles-if-needed.mjs +0 -88
  211. package/agents/utils/transform-detail-data-sources.mjs +0 -45
  212. package/assets/report-template/report.html +0 -198
  213. package/docs-mcp/analyze-content-relevance.yaml +0 -50
  214. package/docs-mcp/analyze-docs-relevance.yaml +0 -59
  215. package/docs-mcp/docs-search.yaml +0 -42
  216. package/docs-mcp/get-docs-detail.mjs +0 -41
  217. package/docs-mcp/get-docs-structure.mjs +0 -16
  218. package/docs-mcp/read-doc-content.mjs +0 -119
  219. package/prompts/common/document/content-rules-core.md +0 -20
  220. package/prompts/common/document/markdown-syntax-rules.md +0 -65
  221. package/prompts/common/document/media-file-list-usage-rules.md +0 -18
  222. package/prompts/common/document/openapi-usage-rules.md +0 -189
  223. package/prompts/common/document/role-and-personality.md +0 -16
  224. package/prompts/common/document/user-preferences.md +0 -9
  225. package/prompts/common/document-structure/conflict-resolution-guidance.md +0 -16
  226. package/prompts/common/document-structure/document-icon-generate.md +0 -116
  227. package/prompts/common/document-structure/document-structure-rules.md +0 -43
  228. package/prompts/common/document-structure/document-title-streamline.md +0 -86
  229. package/prompts/common/document-structure/glossary.md +0 -7
  230. package/prompts/common/document-structure/intj-traits.md +0 -5
  231. package/prompts/common/document-structure/openapi-usage-rules.md +0 -28
  232. package/prompts/common/document-structure/output-constraints.md +0 -18
  233. package/prompts/common/document-structure/user-locale-rules.md +0 -10
  234. package/prompts/common/document-structure/user-preferences.md +0 -9
  235. package/prompts/detail/custom/admonition-usage-rules.md +0 -94
  236. package/prompts/detail/custom/code-block-usage-rules.md +0 -163
  237. package/prompts/detail/custom/custom-components/x-card-usage-rules.md +0 -63
  238. package/prompts/detail/custom/custom-components/x-cards-usage-rules.md +0 -83
  239. package/prompts/detail/custom/custom-components/x-field-desc-usage-rules.md +0 -120
  240. package/prompts/detail/custom/custom-components/x-field-group-usage-rules.md +0 -80
  241. package/prompts/detail/custom/custom-components/x-field-usage-rules.md +0 -189
  242. package/prompts/detail/custom/custom-components-usage-rules.md +0 -18
  243. package/prompts/detail/diagram/generate-image-user.md +0 -81
  244. package/prompts/detail/diagram/guide.md +0 -29
  245. package/prompts/detail/diagram/official-examples.md +0 -712
  246. package/prompts/detail/diagram/pre-check.md +0 -23
  247. package/prompts/detail/diagram/role-and-personality.md +0 -2
  248. package/prompts/detail/diagram/rules.md +0 -46
  249. package/prompts/detail/diagram/system-prompt.md +0 -1139
  250. package/prompts/detail/diagram/user-prompt.md +0 -43
  251. package/prompts/detail/generate/detail-example.md +0 -457
  252. package/prompts/detail/generate/document-rules.md +0 -45
  253. package/prompts/detail/generate/system-prompt.md +0 -61
  254. package/prompts/detail/generate/user-prompt.md +0 -99
  255. package/prompts/detail/jsx/rules.md +0 -6
  256. package/prompts/detail/update/system-prompt.md +0 -121
  257. package/prompts/detail/update/user-prompt.md +0 -41
  258. package/prompts/evaluate/document-structure.md +0 -93
  259. package/prompts/evaluate/document.md +0 -149
  260. package/prompts/media/media-description/system-prompt.md +0 -43
  261. package/prompts/media/media-description/user-prompt.md +0 -17
  262. package/prompts/structure/check-document-structure.md +0 -93
  263. package/prompts/structure/document-rules.md +0 -21
  264. package/prompts/structure/find-documents-to-add-links.md +0 -52
  265. package/prompts/structure/generate/system-prompt.md +0 -13
  266. package/prompts/structure/generate/user-prompt.md +0 -137
  267. package/prompts/structure/review/structure-review-system.md +0 -81
  268. package/prompts/structure/structure-example.md +0 -89
  269. package/prompts/structure/structure-getting-started.md +0 -10
  270. package/prompts/structure/update/system-prompt.md +0 -93
  271. package/prompts/structure/update/user-prompt.md +0 -43
  272. package/prompts/translate/admonition.md +0 -20
  273. package/prompts/translate/code-block.md +0 -33
  274. package/prompts/utils/analyze-document-feedback-intent.md +0 -54
  275. package/prompts/utils/analyze-structure-feedback-intent.md +0 -43
  276. package/prompts/utils/feedback-refiner.md +0 -105
  277. package/types/document-schema.mjs +0 -55
  278. package/types/document-structure-schema.mjs +0 -261
  279. package/utils/check-document-has-diagram.mjs +0 -95
  280. package/utils/conflict-detector.mjs +0 -149
  281. package/utils/constants/index.mjs +0 -620
  282. package/utils/constants/linter.mjs +0 -102
  283. package/utils/d2-utils.mjs +0 -205
  284. package/utils/debug.mjs +0 -3
  285. package/utils/delete-diagram-images.mjs +0 -99
  286. package/utils/diagram-version-utils.mjs +0 -14
  287. package/utils/docs-finder-utils.mjs +0 -548
  288. package/utils/evaluate/report-utils.mjs +0 -132
  289. package/utils/extract-api.mjs +0 -32
  290. package/utils/file-utils.mjs +0 -960
  291. package/utils/history-utils.mjs +0 -203
  292. package/utils/icon-map.mjs +0 -26
  293. package/utils/image-compress.mjs +0 -154
  294. package/utils/kroki-utils.mjs +0 -173
  295. package/utils/linter/index.mjs +0 -50
  296. package/utils/load-config.mjs +0 -78
  297. package/utils/markdown/index.mjs +0 -26
  298. package/utils/markdown-checker.mjs +0 -694
  299. package/utils/mermaid-validator.mjs +0 -140
  300. package/utils/mermaid-worker-pool.mjs +0 -250
  301. package/utils/mermaid-worker.mjs +0 -233
  302. package/utils/openapi/index.mjs +0 -28
  303. package/utils/preferences-utils.mjs +0 -175
  304. package/utils/request.mjs +0 -10
  305. package/utils/sync-diagram-to-translations.mjs +0 -272
  306. package/utils/translate-diagram-images.mjs +0 -807
  307. package/utils/utils.mjs +0 -1354
  308. /package/{prompts/translate → agents/localize/prompts}/glossary.md +0 -0
@@ -1,23 +0,0 @@
1
- type: object
2
- description: Document structure item representing a node in the document hierarchy
3
- properties:
4
- id:
5
- type: string
6
- description: Unique identifier for the document structure item
7
- title:
8
- type: string
9
- description:
10
- type: string
11
- path:
12
- type: string
13
- description: Path in URL format, cannot be empty, cannot contain spaces or special characters, must start with /, no need to include language level, e.g., /zh/about should return /about
14
- parentPath:
15
- type: string
16
- description: Parent node path, if null indicates it is a top-level node
17
- icon:
18
- type: string
19
- description: Iconify icon name, e.g., lucide:book, lucide:rocket, lucide:* etc.
20
- required:
21
- - title
22
- - description
23
- - path
@@ -1,29 +0,0 @@
1
- type: array
2
- items:
3
- type: object
4
- properties:
5
- title:
6
- type: string
7
- description:
8
- type: string
9
- path:
10
- type: string
11
- description: Path in URL format, cannot be empty, cannot contain spaces or special characters, must start with /, no need to include language level, e.g., /zh/about should return /about
12
- parentId:
13
- type:
14
- - string
15
- - "null"
16
- description: Parent node path, if null indicates it is a top-level node
17
- sourceIds:
18
- type: array
19
- description: Associated sourceId from `<data_sources>` for subsequent translation and content generation, must come from sourceId in `<data_sources>`, cannot have fake ids, **cannot be empty**
20
- items:
21
- type: string
22
- icon:
23
- type: string
24
- description: Lucide icon name for root-level documents (just support lucide:icon-name, not support other icon collections)
25
- required:
26
- - title
27
- - description
28
- - path
29
- - sourceIds
@@ -1,27 +0,0 @@
1
- type: team
2
- name: batchGenerateDocument
3
- description: Batch generate document details
4
- skills:
5
- - ./check-document.mjs
6
- input_schema:
7
- type: object
8
- properties:
9
- detailDataSource:
10
- type: string
11
- description: Context for documentation structure generation, used to assist generate documentation structure
12
- documentStructure: ../schema/document-structure.yaml
13
- translates:
14
- type: array
15
- items:
16
- type: object
17
- properties:
18
- language:
19
- type: string
20
- description: List of languages to translate documents to
21
- modifiedFiles:
22
- type: array
23
- items: { type: string }
24
- description: Array of modified files since last generation
25
- iterate_on: documentStructure
26
- concurrency: 5
27
- mode: sequential
@@ -1,7 +0,0 @@
1
-
2
- type: team
3
- name: batchUpdateDocument
4
- skills:
5
- - ../update/handle-document-update.yaml
6
- iterate_on: selectedDocs
7
- concurrency: 5
@@ -1,116 +0,0 @@
1
- /**
2
- * Check if --diagram or --diagram-all flag is set via command line arguments or environment variable
3
- * Returns the flag values and passes through all input
4
- *
5
- * --diagram: Filter to show only documents with diagrams, let user select
6
- * --diagram-all: Auto-select all documents with diagrams, no user selection
7
- */
8
- export default function checkDiagramFlag(input) {
9
- let shouldUpdateDiagrams = false;
10
- let shouldAutoSelectDiagrams = false;
11
-
12
- // Priority order: command line args > input params > environment variables
13
- // Check command line arguments first (highest priority)
14
- if (process.argv) {
15
- // Check for --diagram-all or -da (exact match)
16
- const hasDiagramAllFlag = process.argv.some((arg) => arg === "--diagram-all" || arg === "-da");
17
-
18
- const hasDiagramFlag = process.argv.some((arg) => arg === "--diagram" || arg === "-d");
19
-
20
- if (hasDiagramAllFlag) {
21
- shouldUpdateDiagrams = true;
22
- shouldAutoSelectDiagrams = true;
23
- // Return early if CLI arg found (highest priority)
24
- return {
25
- ...input,
26
- shouldUpdateDiagrams,
27
- shouldAutoSelectDiagrams,
28
- };
29
- } else if (hasDiagramFlag) {
30
- shouldUpdateDiagrams = true;
31
- shouldAutoSelectDiagrams = false;
32
- // Return early if CLI arg found (highest priority)
33
- return {
34
- ...input,
35
- shouldUpdateDiagrams,
36
- shouldAutoSelectDiagrams,
37
- };
38
- }
39
- }
40
-
41
- // Check input parameter (second priority - CLI framework might parse --diagram-all as separate parameter)
42
- if (input["diagram-all"] === true || input["diagram-all"] === "true") {
43
- shouldUpdateDiagrams = true;
44
- shouldAutoSelectDiagrams = true;
45
- // Return early if input param found (second priority)
46
- return {
47
- ...input,
48
- shouldUpdateDiagrams,
49
- shouldAutoSelectDiagrams,
50
- };
51
- } else if (input.diagram === true || input.diagram === "true") {
52
- shouldUpdateDiagrams = true;
53
- shouldAutoSelectDiagrams = false;
54
- // Return early if input param found (second priority)
55
- return {
56
- ...input,
57
- shouldUpdateDiagrams,
58
- shouldAutoSelectDiagrams,
59
- };
60
- }
61
-
62
- // Check environment variable (lowest priority)
63
- if (
64
- process.env.DOC_SMITH_UPDATE_DIAGRAMS === "all" ||
65
- process.env.DOC_SMITH_UPDATE_DIAGRAMS_ALL === "true" ||
66
- process.env.DOC_SMITH_UPDATE_DIAGRAMS_ALL === "1"
67
- ) {
68
- shouldUpdateDiagrams = true;
69
- shouldAutoSelectDiagrams = true;
70
- } else if (
71
- process.env.DOC_SMITH_UPDATE_DIAGRAMS === "true" ||
72
- process.env.DOC_SMITH_UPDATE_DIAGRAMS === "1"
73
- ) {
74
- shouldUpdateDiagrams = true;
75
- shouldAutoSelectDiagrams = false;
76
- }
77
-
78
- // Return all input plus the flags
79
- return {
80
- ...input,
81
- shouldUpdateDiagrams,
82
- shouldAutoSelectDiagrams,
83
- };
84
- }
85
-
86
- checkDiagramFlag.input_schema = {
87
- type: "object",
88
- properties: {
89
- diagram: {
90
- type: ["boolean", "string"],
91
- description:
92
- "Flag to trigger diagram update: true for user selection (can also use --diagram CLI arg)",
93
- },
94
- "diagram-all": {
95
- type: ["boolean", "string"],
96
- description:
97
- "Flag to auto-select all documents with diagrams (can also use --diagram-all CLI arg)",
98
- },
99
- },
100
- };
101
-
102
- checkDiagramFlag.output_schema = {
103
- type: "object",
104
- properties: {
105
- shouldUpdateDiagrams: {
106
- type: "boolean",
107
- description: "Whether to filter and update diagrams",
108
- },
109
- shouldAutoSelectDiagrams: {
110
- type: "boolean",
111
- description:
112
- "Whether to auto-select all documents with diagrams (true for --diagram-all, false for --diagram)",
113
- },
114
- },
115
- required: ["shouldUpdateDiagrams", "shouldAutoSelectDiagrams"],
116
- };
@@ -1,162 +0,0 @@
1
- import { access, readFile } from "node:fs/promises";
2
- import { dirname, join } from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- import { TeamAgent } from "@aigne/core";
5
- import fs from "fs-extra";
6
- import pMap from "p-map";
7
-
8
- import { getFileName } from "../../utils/utils.mjs";
9
- import checkDetailResult from "../utils/check-detail-result.mjs";
10
-
11
- // Get current script directory
12
- const __dirname = dirname(fileURLToPath(import.meta.url));
13
-
14
- export default async function checkDocument(
15
- {
16
- path,
17
- docsDir,
18
- sourceIds,
19
- originalDocumentStructure,
20
- documentStructure,
21
- modifiedFiles,
22
- forceRegenerate,
23
- locale,
24
- translates = [],
25
- ...rest
26
- },
27
- options,
28
- ) {
29
- // Check if the detail file already exists
30
- const fileFullName = getFileName(path, locale);
31
- const filePath = join(docsDir, fileFullName);
32
- let detailGenerated = true;
33
- let fileContent = null;
34
- try {
35
- await access(filePath);
36
- // If file exists, read its content for validation
37
- fileContent = await readFile(filePath, "utf8");
38
- } catch {
39
- detailGenerated = false;
40
- }
41
-
42
- // Check if sourceIds have changed by comparing with original documentation structure
43
- let sourceIdsChanged = false;
44
- if (originalDocumentStructure && sourceIds) {
45
- // Find the original node in the documentation structure
46
- const originalNode = originalDocumentStructure.find((node) => node.path === path);
47
-
48
- if (originalNode?.sourceIds) {
49
- const originalSourceIds = originalNode.sourceIds;
50
- const currentSourceIds = sourceIds;
51
-
52
- // Compare arrays (order doesn't matter, but content does)
53
- if (originalSourceIds.length !== currentSourceIds.length) {
54
- sourceIdsChanged = true;
55
- } else {
56
- // Check if any sourceId is different
57
- const originalSet = new Set(originalSourceIds);
58
- const currentSet = new Set(currentSourceIds);
59
-
60
- if (originalSet.size !== currentSet.size) {
61
- sourceIdsChanged = true;
62
- } else {
63
- // Check if any element is different
64
- for (const sourceId of originalSourceIds) {
65
- if (!currentSet.has(sourceId)) {
66
- sourceIdsChanged = true;
67
- break;
68
- }
69
- }
70
- }
71
- }
72
- }
73
- }
74
-
75
- // If file exists, check content validation
76
- let contentValidationFailed = false;
77
- let validationResult = {};
78
- if (detailGenerated && fileContent && documentStructure) {
79
- validationResult = await checkDetailResult({
80
- documentStructure,
81
- reviewContent: fileContent,
82
- docsDir,
83
- });
84
-
85
- if (!validationResult.isApproved) {
86
- contentValidationFailed = true;
87
- }
88
- }
89
- const translateList = Array.isArray(translates) ? translates : [];
90
- const languages = translateList.map((x) => x.language);
91
- const lackLanguages = new Set(languages);
92
- const skills = [];
93
-
94
- // If file exists, sourceIds haven't changed, source files haven't changed, and content validation passes, no need to regenerate
95
- if (detailGenerated && !sourceIdsChanged && !contentValidationFailed && !forceRegenerate) {
96
- await pMap(
97
- languages,
98
- async (x) => {
99
- const languageFileName = getFileName(path, x);
100
- const languageFilePath = join(docsDir, languageFileName);
101
- if (await fs.exists(languageFilePath)) {
102
- lackLanguages.delete(x);
103
- }
104
- },
105
- { concurrency: 5 },
106
- );
107
- if (lackLanguages.size === 0) {
108
- return {
109
- path,
110
- docsDir,
111
- ...rest,
112
- detailGenerated: true,
113
- };
114
- }
115
- // translations during generation don't need feedback, content is satisfactory
116
- rest.content = fileContent;
117
- } else {
118
- skills.push(options.context.agents["handleDocumentUpdate"]);
119
- }
120
-
121
- skills.push(options.context.agents["translateMultilingual"]);
122
-
123
- const teamAgent = TeamAgent.from({
124
- name: "generateDocument",
125
- skills,
126
- });
127
- let openAPISpec = null;
128
-
129
- if (options.context?.userContext?.openAPISpec?.sourceId) {
130
- const matchingDocument = originalDocumentStructure.find((item) => {
131
- if (item.path === path) {
132
- return item.sourceIds.find((x) => x === options.context.userContext.openAPISpec.sourceId);
133
- }
134
- return false;
135
- });
136
- if (matchingDocument) {
137
- openAPISpec = options.context.userContext.openAPISpec;
138
- }
139
- }
140
-
141
- const result = await options.context.invoke(teamAgent, {
142
- ...rest,
143
- translates: translateList.filter((x) => lackLanguages.has(x.language)),
144
- locale,
145
- docsDir,
146
- path,
147
- sourceIds,
148
- originalDocumentStructure,
149
- documentStructure,
150
- detailFeedback: contentValidationFailed ? validationResult.detailFeedback : "",
151
- openAPISpec,
152
- });
153
-
154
- return {
155
- path,
156
- docsDir,
157
- ...rest,
158
- result,
159
- };
160
- }
161
-
162
- checkDocument.taskTitle = "Check if '{{ title }}' needs generate or update";
@@ -1,106 +0,0 @@
1
- import { hasDiagramContent } from "../../utils/check-document-has-diagram.mjs";
2
-
3
- const DEFAULT_DIAGRAMMING_EFFORT = 5;
4
- const MIN_DIAGRAMMING_EFFORT = 0;
5
- const MAX_DIAGRAMMING_EFFORT = 10;
6
-
7
- export default async function checkGenerateDiagram(
8
- {
9
- documentContent,
10
- locale,
11
- feedback,
12
- detailFeedback,
13
- originalContent,
14
- diagramming,
15
- path,
16
- docsDir,
17
- shouldUpdateDiagrams,
18
- },
19
- options,
20
- ) {
21
- let content = documentContent;
22
- let skipGenerateDiagram = false;
23
-
24
- // If --diagram flag is set and document already has d2 code blocks,
25
- // skip preCheck and directly replace existing diagrams
26
- // This is because when using --diagram/--diagram-all, the user explicitly wants to update diagrams,
27
- // so we should skip the "do we need to generate diagram" check and directly proceed to replacement
28
- const hasExistingDiagrams = originalContent && hasDiagramContent(originalContent);
29
-
30
- // Skip preCheck if:
31
- // 1. Using --diagram/--diagram-all flag (shouldUpdateDiagrams === true) AND
32
- // 2. Document already has d2 code blocks (hasExistingDiagrams === true)
33
- // This means user explicitly wants to update existing diagrams, no need to check if diagram is needed
34
- const shouldSkipPreCheck = shouldUpdateDiagrams === true && hasExistingDiagrams;
35
-
36
- let preCheckResult = { details: [], content: null };
37
- if (!shouldSkipPreCheck) {
38
- const preCheckAgent = options.context?.agents?.["preCheckGenerateDiagram"];
39
-
40
- preCheckResult = await options.context.invoke(preCheckAgent, {
41
- documentContent,
42
- feedback,
43
- detailFeedback,
44
- previousGenerationContent: originalContent,
45
- });
46
- }
47
-
48
- const totalScore = (preCheckResult.details || []).reduce((acc, curr) => acc + curr.score, 0);
49
- if (![false, "false", "", undefined, null].includes(preCheckResult.content)) {
50
- content = preCheckResult.content;
51
- }
52
-
53
- let diagrammingEffort = diagramming?.effort
54
- ? Number(diagramming?.effort)
55
- : DEFAULT_DIAGRAMMING_EFFORT;
56
-
57
- if (Number.isNaN(diagrammingEffort)) {
58
- diagrammingEffort = DEFAULT_DIAGRAMMING_EFFORT;
59
- } else {
60
- diagrammingEffort = Math.min(
61
- Math.max(MIN_DIAGRAMMING_EFFORT, diagrammingEffort),
62
- MAX_DIAGRAMMING_EFFORT,
63
- );
64
- }
65
-
66
- // If we skipped preCheck because document has existing diagrams and --diagram flag is set,
67
- // we should NOT skip generating diagram (we need to replace existing ones)
68
- if (shouldSkipPreCheck) {
69
- skipGenerateDiagram = false;
70
- } else if (totalScore <= diagrammingEffort) {
71
- skipGenerateDiagram = true;
72
- }
73
-
74
- if (skipGenerateDiagram) {
75
- content = documentContent;
76
- } else {
77
- try {
78
- const generateAgent = options.context?.agents?.["generateDiagram"];
79
- const result = await options.context.invoke(generateAgent, {
80
- documentContent: content,
81
- locale,
82
- diagramming: diagramming || {},
83
- feedback: feedback || "",
84
- originalContent: originalContent || documentContent,
85
- path,
86
- docsDir,
87
- });
88
-
89
- // generateDiagram now returns { content } with image already inserted
90
- // The image replaces DIAGRAM_PLACEHOLDER or D2 code blocks
91
- if (result?.content) {
92
- content = result.content;
93
- } else {
94
- // Fallback: if no content returned, use original document content
95
- content = documentContent;
96
- }
97
- } catch (error) {
98
- skipGenerateDiagram = true;
99
- console.log(`⚠️ Skip generate any diagram: ${error.message}`);
100
- // On error, return original document content
101
- content = documentContent;
102
- }
103
- }
104
-
105
- return { content };
106
- }
@@ -1,53 +0,0 @@
1
- export default async function checkUpdateIsSingle({ selectedDocs, ...rest }, options) {
2
- if (!selectedDocs || !Array.isArray(selectedDocs)) {
3
- throw new Error("A list of documents to update must be provided.");
4
- }
5
-
6
- if (selectedDocs.length === 0) {
7
- throw new Error("You must select at least one document to update.");
8
- }
9
-
10
- let targetAgent;
11
- let agentName;
12
-
13
- if (selectedDocs.length === 1 && !rest.reset) {
14
- // Single doc update without reset
15
- agentName = "updateSingleDocument";
16
- targetAgent = options.context.agents["updateSingleDocument"];
17
- } else {
18
- agentName = "batchUpdateDocument";
19
- targetAgent = options.context.agents["batchUpdateDocument"];
20
- }
21
-
22
- if (!targetAgent) {
23
- throw new Error(`Sorry, I can't seem to find the "${agentName}" agent.`);
24
- }
25
-
26
- try {
27
- const result = await options.context.invoke(targetAgent, {
28
- selectedDocs,
29
- ...rest,
30
- });
31
-
32
- // For batch updates, preserve selectedDocs and other context for save-and-translate-document
33
- // batchUpdateDocument returns an array of results, but save-and-translate-document needs selectedDocs
34
- if (agentName === "batchUpdateDocument") {
35
- return {
36
- ...rest,
37
- selectedDocs, // Preserve selectedDocs for save-and-translate-document.mjs
38
- result, // Include the batch update results
39
- };
40
- }
41
-
42
- // For single document updates, return result as-is
43
- return result;
44
- } catch (error) {
45
- console.error(
46
- `Sorry, I encountered an error while trying to run the ${agentName} agent:`,
47
- error.message,
48
- );
49
- throw error;
50
- }
51
- }
52
-
53
- checkUpdateIsSingle.taskTitle = "Check document count and route to appropriate update agent";