@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,107 +0,0 @@
1
- import { SUPPORTED_LANGUAGES } from "../../utils/constants/index.mjs";
2
- import { loadConfigFromFile, saveValueToConfig } from "../../utils/utils.mjs";
3
-
4
- /**
5
- * Interactively selects languages for translation.
6
- * @param {Object} params
7
- * @param {Array<string>} [params.langs] - Pre-selected languages.
8
- * @param {string} params.locale - The primary language code.
9
- * @param {Object} options - Options object with prompts.
10
- * @returns {Promise<Object>} The selected languages.
11
- */
12
- export default async function chooseLanguage({ langs, locale, selectedDocs }, options) {
13
- let selectedLanguages = [];
14
-
15
- // Load existing config to get current translation languages
16
- const existingConfig = await loadConfigFromFile();
17
- const currentTranslateLanguages = existingConfig?.translateLanguages || [];
18
-
19
- // Get primary language from config or parameter
20
- const primaryLanguage = locale || existingConfig?.locale || "en";
21
-
22
- // Filter out the primary language from available choices (like init.mjs)
23
- const availableTranslationLanguages = SUPPORTED_LANGUAGES.filter(
24
- (lang) => lang.code !== primaryLanguage,
25
- );
26
-
27
- // If languages are provided as a parameter, validate them
28
- if (langs && Array.isArray(langs) && langs.length > 0) {
29
- const validLanguages = langs.filter((lang) =>
30
- availableTranslationLanguages.some((availableLang) => availableLang.code === lang),
31
- );
32
-
33
- if (validLanguages.length > 0) {
34
- selectedLanguages = validLanguages;
35
- } else {
36
- console.log(`⚠️ Invalid languages provided: ${langs.join(", ")}`);
37
- console.log(
38
- `Available languages: ${availableTranslationLanguages.map((l) => l.code).join(", ")}`,
39
- );
40
- }
41
- }
42
-
43
- // If no valid languages were provided, let user select from available languages
44
- if (selectedLanguages.length === 0) {
45
- // Create choices from available translation languages with labels
46
- const choices = availableTranslationLanguages.map((lang) => ({
47
- name: `${lang.label} - ${lang.sample}`,
48
- value: lang.code,
49
- checked: currentTranslateLanguages.includes(lang.code), // Default to previously selected languages
50
- }));
51
-
52
- selectedLanguages = await options.prompts.checkbox({
53
- message: "Please select the languages you'd like to translate to:",
54
- choices: choices,
55
- validate: (answer) => {
56
- if (answer.length === 0) {
57
- return "You must select at least one language.";
58
- }
59
- return true;
60
- },
61
- });
62
- }
63
-
64
- if (selectedLanguages.length === 0) {
65
- throw new Error("You must select at least one language to continue.");
66
- }
67
-
68
- // Find new languages that need to be added
69
- const newLanguages = selectedLanguages.filter(
70
- (lang) => !currentTranslateLanguages.includes(lang),
71
- );
72
-
73
- if (newLanguages.length > 0) {
74
- // Add new languages to existing ones
75
- const updatedTranslateLanguages = [...currentTranslateLanguages, ...newLanguages];
76
- await saveValueToConfig("translateLanguages", updatedTranslateLanguages);
77
- }
78
-
79
- // Convert selectedLanguages to translates format
80
- const translates = selectedLanguages.map((lang) => ({ language: lang }));
81
-
82
- return {
83
- selectedLanguages,
84
- selectedDocs,
85
- translates,
86
- };
87
- }
88
-
89
- chooseLanguage.input_schema = {
90
- type: "object",
91
- properties: {
92
- langs: {
93
- type: "array",
94
- items: {
95
- type: "string",
96
- },
97
- description: "A list of pre-selected languages for translation.",
98
- },
99
-
100
- locale: {
101
- type: "string",
102
- description:
103
- "The primary language code, which will be excluded from the translation options.",
104
- },
105
- },
106
- required: [],
107
- };
@@ -1,23 +0,0 @@
1
- import { recordUpdate } from "../../utils/history-utils.mjs";
2
-
3
- export default function recordTranslationHistory({ selectedPaths, feedback }) {
4
- // Skip if no feedback provided
5
- if (!feedback?.trim()) {
6
- return {};
7
- }
8
-
9
- if (!Array.isArray(selectedPaths) || selectedPaths.length === 0) {
10
- return {};
11
- }
12
-
13
- // Record translation history for this document
14
- recordUpdate({
15
- operation: "translation_update",
16
- feedback: feedback.trim(),
17
- docPaths: selectedPaths,
18
- });
19
-
20
- return {};
21
- }
22
-
23
- recordTranslationHistory.task_render_mode = "hide";
@@ -1,18 +0,0 @@
1
- /**
2
- * Save translated document
3
- * Always saves the translation content, regardless of --diagram flag.
4
- * In --diagram mode, the translation content may only have updated diagram images,
5
- * but it still needs to be saved to persist the image changes.
6
- */
7
- export default async function saveDocTranslationOrSkip(input, options) {
8
- // Always save translation content, whether it's a full translation or just diagram image updates
9
- // The translation content (from set-review-content.mjs) already contains the updated diagram images
10
- const saveDocTranslationAgent = options.context?.agents?.["saveDocTranslation"];
11
- if (saveDocTranslationAgent) {
12
- return await options.context.invoke(saveDocTranslationAgent, input);
13
- }
14
-
15
- return {};
16
- }
17
-
18
- saveDocTranslationOrSkip.task_render_mode = "hide";
@@ -1,58 +0,0 @@
1
- import { debug } from "../../utils/debug.mjs";
2
- import { d2CodeBlockRegex, diagramImageFullRegex } from "../../utils/d2-utils.mjs";
3
-
4
- /**
5
- * Replace cached diagram images in translated document and set reviewContent
6
- * This step runs after translate-document-wrapper.mjs to:
7
- * 1. Insert cached image translations into the translated document
8
- * 2. Set reviewContent from the final translation
9
- * Note: Each document has at most one diagram image
10
- */
11
- export default async function setReviewContent(input) {
12
- let translation = input.translation || "";
13
- const cachedImages = input.cachedDiagramImages || null;
14
-
15
- // Replace cached diagram image if any (each document has at most one image)
16
- if (cachedImages && cachedImages.length > 0) {
17
- try {
18
- const cachedImage = cachedImages[0]; // Only one image per document
19
-
20
- // Find existing image in translated content
21
- // Note: Translation process may copy content from main document, so we always need to
22
- // replace with cached image to ensure the final document uses the correct language-specific image
23
- const imageMatch = translation.match(diagramImageFullRegex);
24
-
25
- if (imageMatch) {
26
- translation = translation.replace(diagramImageFullRegex, cachedImage.translatedMarkdown);
27
- debug(`✅ Replaced diagram image in translation with language-specific image`);
28
- } else {
29
- const d2Match = translation.match(d2CodeBlockRegex);
30
- if (d2Match) {
31
- translation = translation.replace(d2CodeBlockRegex, cachedImage.translatedMarkdown);
32
- debug(`✅ Replaced D2 code block in translation with language-specific image`);
33
- } else {
34
- // No existing image, insert at the position from main document
35
- const insertIndex = Math.min(cachedImage.mainImageIndex, translation.length);
36
- translation =
37
- translation.slice(0, insertIndex) +
38
- "\n\n" +
39
- cachedImage.translatedMarkdown +
40
- "\n\n" +
41
- translation.slice(insertIndex);
42
- debug(`✅ Inserted diagram image at index ${insertIndex}`);
43
- }
44
- }
45
- } catch (error) {
46
- debug(`⚠️ Failed to replace cached diagram image: ${error.message}`);
47
- // Continue with original translation if replacement fails
48
- }
49
- }
50
-
51
- return {
52
- ...input,
53
- translation,
54
- reviewContent: translation || input.content || "",
55
- };
56
- }
57
-
58
- setReviewContent.task_render_mode = "hide";
@@ -1,34 +0,0 @@
1
- /**
2
- * Conditionally call translateDocument agent
3
- * If translation is already set and approved (--diagram mode with existing translation), skip calling translateDocument
4
- * Otherwise, call translateDocument agent normally (including --diagram mode when translation doesn't exist)
5
- */
6
- export default async function translateDocumentWrapper(input, options) {
7
- // If translation is already set and approved, skip document translation
8
- // This happens in --diagram mode when translation document exists (translate-diagram-images.mjs sets isApproved: true)
9
- // In --diagram mode when translation doesn't exist, translate-diagram-images.mjs sets isApproved: false to allow translation
10
- if (input.translation !== undefined && input.translation !== null && input.isApproved === true) {
11
- return input;
12
- }
13
-
14
- // Otherwise, call translateDocument agent (YAML-defined AI agent)
15
- const translateAgent = options.context?.agents?.["translateDocument"];
16
- if (!translateAgent) {
17
- throw new Error("translateDocument agent not found");
18
- }
19
-
20
- try {
21
- const result = await options.context.invoke(translateAgent, input);
22
- return {
23
- ...input,
24
- ...result,
25
- translation: result?.translation || result,
26
- // Preserve shouldTranslateDiagramsOnly flag
27
- shouldTranslateDiagramsOnly: input.shouldTranslateDiagramsOnly,
28
- };
29
- } catch (error) {
30
- throw new Error(`Failed to invoke translateDocument agent: ${error.message}`);
31
- }
32
- }
33
-
34
- translateDocumentWrapper.task_render_mode = "hide";
@@ -1,24 +0,0 @@
1
- name: translateDocument
2
- description: Translate content to another language
3
- instructions:
4
- url: ../../prompts/translate/translate-document.md
5
- task_render_mode: collapse
6
- input_schema:
7
- type: object
8
- properties:
9
- language:
10
- type: string
11
- description: Target language (e.g., 'zh' for Chinese, 'ja' for Japanese)
12
- content:
13
- type: string
14
- description: Text content to translate
15
- glossary:
16
- type: string
17
- description: Glossary for consistent terminology
18
- feedback:
19
- type: string
20
- description: Tell us how to improve the translation style
21
- required:
22
- - language
23
- - content
24
- output_key: translation
@@ -1,57 +0,0 @@
1
- type: team
2
- name: translateMultilingual
3
- description: Batch translate documents to multiple languages. Use --diagram to translate only diagram images without translating document content.
4
- skills:
5
- # Step 1: Check --diagram flag and determine if we should translate diagrams only
6
- - url: ./translate-or-skip-diagram.mjs
7
- # Translate document content (only if translation is not already set)
8
- - type: team
9
- task_render_mode: collapse
10
- name: translate
11
- skills:
12
- - url: ../utils/find-user-preferences-by-path.mjs
13
- default_input:
14
- scope: translation
15
- # Step 2: Cache diagram images for translation (before document translation)
16
- # Checks --diagram flag and timestamps to determine if images need translation
17
- - url: ../../utils/translate-diagram-images.mjs
18
- # Step 3: Translate document content
19
- - url: ./translate-document-wrapper.mjs
20
- # Step 4: Replace cached diagram images and set review content
21
- - url: ./set-review-content.mjs
22
- reflection:
23
- reviewer: ../utils/check-detail-result.mjs
24
- is_approved: isApproved
25
- max_iterations: 5
26
- return_last_on_max_iterations: true
27
- task_title: Translate '{{ title }}' to '{{ language }}'
28
- - url: ./save-doc-translation-or-skip.mjs
29
- input_schema:
30
- type: object
31
- properties:
32
- translates:
33
- type: array
34
- items:
35
- type: object
36
- properties:
37
- language:
38
- type: string
39
- content:
40
- type: string
41
- diagram:
42
- type: boolean
43
- description: Translate only diagram images without translating document content
44
- output_schema:
45
- type: object
46
- properties:
47
- translates:
48
- type: array
49
- items:
50
- type: object
51
- properties:
52
- language:
53
- type: string
54
- translation:
55
- type: string
56
- iterate_on: translates
57
- concurrency: 3
@@ -1,52 +0,0 @@
1
- import { debug } from "../../utils/debug.mjs";
2
-
3
- /**
4
- * Check --diagram flag and conditionally translate document
5
- * If --diagram is set, skip document translation and only translate images
6
- * Otherwise, proceed with normal document translation
7
- */
8
- export default async function translateOrSkipDiagram(input) {
9
- // Check if --diagram flag is set
10
- let shouldTranslateDiagramsOnly = false;
11
-
12
- if (process.argv) {
13
- const hasDiagramFlag = process.argv.some((arg) => arg === "--diagram" || arg === "-d");
14
- if (hasDiagramFlag) {
15
- shouldTranslateDiagramsOnly = true;
16
- }
17
- }
18
-
19
- if (input.diagram === true || input.diagram === "true") {
20
- shouldTranslateDiagramsOnly = true;
21
- }
22
-
23
- if (
24
- process.env.DOC_SMITH_TRANSLATE_DIAGRAMS_ONLY === "true" ||
25
- process.env.DOC_SMITH_TRANSLATE_DIAGRAMS_ONLY === "1"
26
- ) {
27
- shouldTranslateDiagramsOnly = true;
28
- }
29
-
30
- // If --diagram flag is set, skip document translation
31
- if (shouldTranslateDiagramsOnly) {
32
- debug("⏭️ --diagram flag set: skipping document translation, only translating images");
33
- // Set translation to content to skip actual translation
34
- // Also set isApproved to true to skip reflection check
35
- return {
36
- ...input,
37
- shouldTranslateDiagramsOnly: true,
38
- translation: input.content || "",
39
- reviewContent: input.content || "",
40
- isApproved: true, // Skip reflection check
41
- };
42
- }
43
-
44
- // Otherwise, proceed with normal translation
45
- // Don't call translateDocument here - let translate-document-wrapper.mjs handle it
46
- return {
47
- ...input,
48
- shouldTranslateDiagramsOnly: false,
49
- };
50
- }
51
-
52
- translateOrSkipDiagram.task_render_mode = "hide";
@@ -1,46 +0,0 @@
1
- type: team
2
- name: batchGenerateMediaDescription
3
- description: Batch generate media (image/video) descriptions with concurrency
4
- skills:
5
- - url: ./generate-media-description.yaml
6
- task_render_mode: collapse
7
- task_title: Generate Media Description
8
- input_schema:
9
- type: object
10
- properties:
11
- mediaToDescribe:
12
- type: array
13
- items:
14
- type: object
15
- properties:
16
- name:
17
- type: string
18
- width:
19
- type: number
20
- height:
21
- type: number
22
- hash:
23
- type: string
24
- path:
25
- type: string
26
- type:
27
- type: string
28
- svgContent:
29
- type: string
30
- mediaFile:
31
- type: array
32
- items:
33
- type: object
34
- properties:
35
- type:
36
- type: string
37
- path:
38
- type: string
39
- filename:
40
- type: string
41
- mimeType:
42
- type: string
43
- description: Array of media files (images/videos) that need descriptions
44
- iterate_on: mediaToDescribe
45
- concurrency: 5
46
- mode: sequential
@@ -1,50 +0,0 @@
1
- name: generateMediaDescription
2
- description: Generate description for a single media file (image/video)
3
- model: gemini-2.5-flash
4
- modalities: ["text", "image"]
5
- instructions:
6
- - role: system
7
- url: ../../prompts/media/media-description/system-prompt.md
8
- - role: user
9
- url: ../../prompts/media/media-description/user-prompt.md
10
- input_file_key: mediaFile
11
- include_input_in_output: true
12
- input_schema:
13
- type: object
14
- properties:
15
- name:
16
- type: string
17
- description: Media file name
18
- width:
19
- type: number
20
- description: Media width in pixels
21
- height:
22
- type: number
23
- description: Media height in pixels
24
- hash:
25
- type: string
26
- path:
27
- type: string
28
- description: Media path
29
- type:
30
- type: string
31
- description: Media type (image/video)
32
- svgContent:
33
- type: string
34
- description: SVG content
35
- mediaFile:
36
- type: array
37
- items:
38
- type: object
39
- properties:
40
- type:
41
- type: string
42
- path:
43
- type: string
44
- filename:
45
- type: string
46
- mimeType:
47
- type: string
48
- required:
49
- - name
50
- output_key: description