@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.
- package/CHANGELOG.md +12 -0
- package/README.md +189 -219
- package/README.zh.md +270 -0
- package/agents/bash-executor/index.mjs +347 -0
- package/agents/clear/ai/intent.md +142 -0
- package/agents/clear/choose-contents.mjs +13 -65
- package/agents/clear/clear-auth-tokens.mjs +17 -21
- package/agents/clear/clear-deployment-config.mjs +33 -24
- package/agents/clear/index.yaml +1 -9
- package/agents/content-checker/ai/intent.md +209 -0
- package/agents/content-checker/clean-invalid-docs.mjs +254 -0
- package/agents/content-checker/index.mjs +191 -0
- package/agents/content-checker/validate-content.mjs +983 -0
- package/agents/generate-images/generate-image.yaml +75 -0
- package/agents/generate-images/generate-summary.mjs +213 -0
- package/agents/generate-images/index.yaml +39 -0
- package/agents/generate-images/prepare-generation.mjs +286 -0
- package/agents/generate-images/prepare-image-generation.mjs +130 -0
- package/{prompts/detail/diagram/generate-image-system.md → agents/generate-images/prompts/system.md} +22 -56
- package/agents/generate-images/prompts/user.md +85 -0
- package/agents/generate-images/save-image-result.mjs +247 -0
- package/agents/generate-images/scan-image-slots.mjs +247 -0
- package/agents/localize/index.yaml +19 -42
- package/{prompts/translate → agents/localize/prompts}/translate-document.md +0 -139
- package/agents/localize/translate-documents/generate-summary.mjs +163 -0
- package/agents/localize/translate-documents/load-glossary.mjs +52 -0
- package/agents/localize/translate-documents/prepare-translation.mjs +249 -0
- package/agents/localize/translate-documents/save-translation.mjs +171 -0
- package/agents/localize/translate-documents/translate-document-to-language.mjs +209 -0
- package/agents/localize/translate-documents/translate-document.yaml +23 -0
- package/agents/localize/translate-documents/translate-to-languages.yaml +10 -0
- package/agents/localize/translate-images/check-image-translation.mjs +225 -0
- package/agents/localize/translate-images/detect-text/detect-and-update-shared.mjs +148 -0
- package/agents/localize/translate-images/detect-text/detect-image-text.yaml +44 -0
- package/agents/localize/translate-images/detect-text/detect-images-text.yaml +21 -0
- package/agents/localize/translate-images/detect-text/prompts/detect-image-text-system.md +43 -0
- package/agents/localize/translate-images/detect-text/prompts/detect-image-text-user.md +14 -0
- package/agents/localize/translate-images/detect-text/save-text-detection.mjs +105 -0
- package/agents/localize/translate-images/prepare-image-input.mjs +124 -0
- package/agents/localize/translate-images/save-image-translation.mjs +172 -0
- package/agents/localize/translate-images/scan-doc-images.mjs +165 -0
- package/agents/localize/translate-images/translate-doc-images.yaml +24 -0
- package/agents/localize/{translate-diagram.yaml → translate-images/translate-image.yaml} +25 -14
- package/agents/publish/ai/intent.md +182 -0
- package/agents/publish/check.mjs +107 -0
- package/agents/publish/index.yaml +9 -14
- package/agents/publish/publish-docs.mjs +81 -61
- package/agents/publish/translate-meta.mjs +79 -58
- package/agents/save-document/index.mjs +260 -0
- package/agents/structure-checker/index.mjs +307 -0
- package/agents/structure-checker/validate-structure.mjs +477 -0
- package/agents/update-image/analyze-feedback.yaml +37 -0
- package/agents/update-image/index.yaml +78 -0
- package/agents/update-image/load-existing-image.mjs +211 -0
- package/agents/update-image/prompts/analyze-feedback-system.md +43 -0
- package/agents/update-image/prompts/analyze-feedback-user.md +15 -0
- package/aigne.yaml +26 -139
- package/package.json +16 -48
- package/scripts/README.md +90 -0
- package/scripts/install.sh +86 -0
- package/scripts/uninstall.sh +52 -0
- package/skills/doc-smith/SKILL.md +285 -0
- package/skills/doc-smith/ai/intent/sources-improve.md +290 -0
- package/skills/doc-smith/references/changeset-guide.md +171 -0
- package/skills/doc-smith/references/document-content-guide.md +214 -0
- package/skills/doc-smith/references/document-structure-schema.md +138 -0
- package/skills/doc-smith/references/patch-guide.md +96 -0
- package/skills/doc-smith/references/structure-confirmation-guide.md +133 -0
- package/skills/doc-smith/references/structure-planning-guide.md +149 -0
- package/skills/doc-smith/references/update-workflow.md +108 -0
- package/skills/doc-smith/references/user-intent-guide.md +175 -0
- package/skills/doc-smith/references/workspace-initialization.md +376 -0
- package/skills/doc-smith-docs-detail/SKILL.md +356 -0
- package/skills/doc-smith-docs-detail/ai/intent.md +271 -0
- package/skills-entry/doc-smith/ai/intent.md +260 -0
- package/skills-entry/doc-smith/index.mjs +66 -0
- package/skills-entry/doc-smith/prompt.md +57 -0
- package/skills-entry/doc-smith/utils.mjs +27 -0
- package/skills-entry/doc-smith-docs-detail/batch.yaml +56 -0
- package/skills-entry/doc-smith-docs-detail/index.mjs +95 -0
- package/skills-entry/doc-smith-docs-detail/prompt.md +64 -0
- package/utils/afs-factory.mjs +183 -0
- package/utils/agent-constants.mjs +97 -0
- package/utils/{auth-utils.mjs → auth.mjs} +6 -9
- package/{agents/utils/update-branding.mjs → utils/branding.mjs} +3 -4
- package/utils/config.mjs +261 -0
- package/utils/constants.mjs +32 -0
- package/utils/deploy.mjs +3 -3
- package/utils/docs-converter.mjs +454 -0
- package/utils/docs.mjs +212 -0
- package/utils/document-paths.mjs +172 -0
- package/utils/files.mjs +74 -0
- package/utils/git.mjs +65 -0
- package/utils/{blocklet.mjs → http.mjs} +18 -0
- package/utils/image-slots.mjs +57 -0
- package/utils/image-utils.mjs +114 -0
- package/utils/project.mjs +95 -0
- package/utils/sources-path-resolver.mjs +76 -0
- package/utils/{upload-files.mjs → upload.mjs} +3 -3
- package/utils/workspace.mjs +371 -0
- package/agents/chat/chat-system.md +0 -38
- package/agents/chat/index.mjs +0 -59
- package/agents/chat/skills/generate-document.yaml +0 -15
- package/agents/chat/skills/list-documents.mjs +0 -15
- package/agents/chat/skills/update-document.yaml +0 -24
- package/agents/clear/clear-document-config.mjs +0 -36
- package/agents/clear/clear-document-structure.mjs +0 -102
- package/agents/clear/clear-generated-docs.mjs +0 -142
- package/agents/clear/clear-media-description.mjs +0 -129
- package/agents/create/aggregate-document-structure.mjs +0 -21
- package/agents/create/analyze-diagram-type-llm.yaml +0 -159
- package/agents/create/analyze-diagram-type.mjs +0 -455
- package/agents/create/check-document-structure.yaml +0 -30
- package/agents/create/check-need-generate-structure.mjs +0 -138
- package/agents/create/document-structure-tools/add-document.mjs +0 -85
- package/agents/create/document-structure-tools/delete-document.mjs +0 -116
- package/agents/create/document-structure-tools/move-document.mjs +0 -109
- package/agents/create/document-structure-tools/update-document.mjs +0 -84
- package/agents/create/generate-diagram-image.yaml +0 -91
- package/agents/create/generate-structure.yaml +0 -106
- package/agents/create/index.yaml +0 -45
- package/agents/create/refine-document-structure.yaml +0 -12
- package/agents/create/replace-d2-with-image.mjs +0 -610
- package/agents/create/update-document-structure.yaml +0 -54
- package/agents/create/user-add-document/add-documents-to-structure.mjs +0 -90
- package/agents/create/user-add-document/find-documents-to-add-links.yaml +0 -47
- package/agents/create/user-add-document/index.yaml +0 -46
- package/agents/create/user-add-document/prepare-documents-to-translate.mjs +0 -22
- package/agents/create/user-add-document/print-add-document-summary.mjs +0 -63
- package/agents/create/user-add-document/review-documents-with-new-links.mjs +0 -110
- package/agents/create/user-remove-document/find-documents-with-invalid-links.mjs +0 -78
- package/agents/create/user-remove-document/index.yaml +0 -40
- package/agents/create/user-remove-document/prepare-documents-to-translate.mjs +0 -22
- package/agents/create/user-remove-document/print-remove-document-summary.mjs +0 -53
- package/agents/create/user-remove-document/remove-documents-from-structure.mjs +0 -99
- package/agents/create/user-remove-document/review-documents-with-invalid-links.mjs +0 -115
- package/agents/create/user-review-document-structure.mjs +0 -139
- package/agents/create/utils/init-current-content.mjs +0 -34
- package/agents/create/utils/merge-document-structures.mjs +0 -36
- package/agents/evaluate/code-snippet.mjs +0 -97
- package/agents/evaluate/document-structure.yaml +0 -67
- package/agents/evaluate/document.yaml +0 -82
- package/agents/evaluate/generate-report.mjs +0 -85
- package/agents/evaluate/index.yaml +0 -46
- package/agents/history/index.yaml +0 -6
- package/agents/history/view.mjs +0 -78
- package/agents/init/check.mjs +0 -16
- package/agents/init/index.mjs +0 -643
- package/agents/init/validate.mjs +0 -16
- package/agents/localize/choose-language.mjs +0 -107
- package/agents/localize/record-translation-history.mjs +0 -23
- package/agents/localize/save-doc-translation-or-skip.mjs +0 -18
- package/agents/localize/set-review-content.mjs +0 -58
- package/agents/localize/translate-document-wrapper.mjs +0 -34
- package/agents/localize/translate-document.yaml +0 -24
- package/agents/localize/translate-multilingual.yaml +0 -57
- package/agents/localize/translate-or-skip-diagram.mjs +0 -52
- package/agents/media/batch-generate-media-description.yaml +0 -46
- package/agents/media/generate-media-description.yaml +0 -50
- package/agents/media/load-media-description.mjs +0 -454
- package/agents/prefs/index.mjs +0 -203
- package/agents/schema/document-structure-item.yaml +0 -26
- package/agents/schema/document-structure-refine-item.yaml +0 -23
- package/agents/schema/document-structure.yaml +0 -29
- package/agents/update/batch-generate-document.yaml +0 -27
- package/agents/update/batch-update-document.yaml +0 -7
- package/agents/update/check-diagram-flag.mjs +0 -116
- package/agents/update/check-document.mjs +0 -162
- package/agents/update/check-generate-diagram.mjs +0 -106
- package/agents/update/check-update-is-single.mjs +0 -53
- package/agents/update/document-tools/update-document-content.mjs +0 -303
- package/agents/update/generate-diagram.yaml +0 -80
- package/agents/update/generate-document.yaml +0 -70
- package/agents/update/handle-document-update.yaml +0 -103
- package/agents/update/index.yaml +0 -69
- package/agents/update/pre-check-generate-diagram.yaml +0 -44
- package/agents/update/save-and-translate-document.mjs +0 -80
- package/agents/update/update-document-detail.yaml +0 -71
- package/agents/update/update-single/update-single-document-detail.mjs +0 -322
- package/agents/update/update-single-document.yaml +0 -7
- package/agents/update/user-review-document.mjs +0 -272
- package/agents/utils/action-success.mjs +0 -16
- package/agents/utils/analyze-document-feedback-intent.yaml +0 -32
- package/agents/utils/analyze-feedback-intent.mjs +0 -253
- package/agents/utils/analyze-structure-feedback-intent.yaml +0 -29
- package/agents/utils/check-detail-result.mjs +0 -51
- package/agents/utils/check-feedback-refiner.mjs +0 -81
- package/agents/utils/choose-docs.mjs +0 -251
- package/agents/utils/document-icon-generate.yaml +0 -52
- package/agents/utils/document-title-streamline.yaml +0 -48
- package/agents/utils/ensure-document-icons.mjs +0 -129
- package/agents/utils/exit.mjs +0 -6
- package/agents/utils/feedback-refiner.yaml +0 -50
- package/agents/utils/find-item-by-path.mjs +0 -114
- package/agents/utils/find-user-preferences-by-path.mjs +0 -37
- package/agents/utils/format-document-structure.mjs +0 -35
- package/agents/utils/generate-document-or-skip.mjs +0 -41
- package/agents/utils/handle-diagram-operations.mjs +0 -263
- package/agents/utils/load-all-document-content.mjs +0 -30
- package/agents/utils/load-document-all-content.mjs +0 -96
- package/agents/utils/load-sources.mjs +0 -405
- package/agents/utils/map-reasoning-effort-level.mjs +0 -15
- package/agents/utils/post-generate.mjs +0 -133
- package/agents/utils/read-current-document-content.mjs +0 -46
- package/agents/utils/save-doc-translation.mjs +0 -30
- package/agents/utils/save-doc.mjs +0 -54
- package/agents/utils/save-output.mjs +0 -26
- package/agents/utils/save-sidebar.mjs +0 -38
- package/agents/utils/skip-if-content-exists.mjs +0 -27
- package/agents/utils/streamline-document-titles-if-needed.mjs +0 -88
- package/agents/utils/transform-detail-data-sources.mjs +0 -45
- package/assets/report-template/report.html +0 -198
- package/docs-mcp/analyze-content-relevance.yaml +0 -50
- package/docs-mcp/analyze-docs-relevance.yaml +0 -59
- package/docs-mcp/docs-search.yaml +0 -42
- package/docs-mcp/get-docs-detail.mjs +0 -41
- package/docs-mcp/get-docs-structure.mjs +0 -16
- package/docs-mcp/read-doc-content.mjs +0 -119
- package/prompts/common/document/content-rules-core.md +0 -20
- package/prompts/common/document/markdown-syntax-rules.md +0 -65
- package/prompts/common/document/media-file-list-usage-rules.md +0 -18
- package/prompts/common/document/openapi-usage-rules.md +0 -189
- package/prompts/common/document/role-and-personality.md +0 -16
- package/prompts/common/document/user-preferences.md +0 -9
- package/prompts/common/document-structure/conflict-resolution-guidance.md +0 -16
- package/prompts/common/document-structure/document-icon-generate.md +0 -116
- package/prompts/common/document-structure/document-structure-rules.md +0 -43
- package/prompts/common/document-structure/document-title-streamline.md +0 -86
- package/prompts/common/document-structure/glossary.md +0 -7
- package/prompts/common/document-structure/intj-traits.md +0 -5
- package/prompts/common/document-structure/openapi-usage-rules.md +0 -28
- package/prompts/common/document-structure/output-constraints.md +0 -18
- package/prompts/common/document-structure/user-locale-rules.md +0 -10
- package/prompts/common/document-structure/user-preferences.md +0 -9
- package/prompts/detail/custom/admonition-usage-rules.md +0 -94
- package/prompts/detail/custom/code-block-usage-rules.md +0 -163
- package/prompts/detail/custom/custom-components/x-card-usage-rules.md +0 -63
- package/prompts/detail/custom/custom-components/x-cards-usage-rules.md +0 -83
- package/prompts/detail/custom/custom-components/x-field-desc-usage-rules.md +0 -120
- package/prompts/detail/custom/custom-components/x-field-group-usage-rules.md +0 -80
- package/prompts/detail/custom/custom-components/x-field-usage-rules.md +0 -189
- package/prompts/detail/custom/custom-components-usage-rules.md +0 -18
- package/prompts/detail/diagram/generate-image-user.md +0 -81
- package/prompts/detail/diagram/guide.md +0 -29
- package/prompts/detail/diagram/official-examples.md +0 -712
- package/prompts/detail/diagram/pre-check.md +0 -23
- package/prompts/detail/diagram/role-and-personality.md +0 -2
- package/prompts/detail/diagram/rules.md +0 -46
- package/prompts/detail/diagram/system-prompt.md +0 -1139
- package/prompts/detail/diagram/user-prompt.md +0 -43
- package/prompts/detail/generate/detail-example.md +0 -457
- package/prompts/detail/generate/document-rules.md +0 -45
- package/prompts/detail/generate/system-prompt.md +0 -61
- package/prompts/detail/generate/user-prompt.md +0 -99
- package/prompts/detail/jsx/rules.md +0 -6
- package/prompts/detail/update/system-prompt.md +0 -121
- package/prompts/detail/update/user-prompt.md +0 -41
- package/prompts/evaluate/document-structure.md +0 -93
- package/prompts/evaluate/document.md +0 -149
- package/prompts/media/media-description/system-prompt.md +0 -43
- package/prompts/media/media-description/user-prompt.md +0 -17
- package/prompts/structure/check-document-structure.md +0 -93
- package/prompts/structure/document-rules.md +0 -21
- package/prompts/structure/find-documents-to-add-links.md +0 -52
- package/prompts/structure/generate/system-prompt.md +0 -13
- package/prompts/structure/generate/user-prompt.md +0 -137
- package/prompts/structure/review/structure-review-system.md +0 -81
- package/prompts/structure/structure-example.md +0 -89
- package/prompts/structure/structure-getting-started.md +0 -10
- package/prompts/structure/update/system-prompt.md +0 -93
- package/prompts/structure/update/user-prompt.md +0 -43
- package/prompts/translate/admonition.md +0 -20
- package/prompts/translate/code-block.md +0 -33
- package/prompts/utils/analyze-document-feedback-intent.md +0 -54
- package/prompts/utils/analyze-structure-feedback-intent.md +0 -43
- package/prompts/utils/feedback-refiner.md +0 -105
- package/types/document-schema.mjs +0 -55
- package/types/document-structure-schema.mjs +0 -261
- package/utils/check-document-has-diagram.mjs +0 -95
- package/utils/conflict-detector.mjs +0 -149
- package/utils/constants/index.mjs +0 -620
- package/utils/constants/linter.mjs +0 -102
- package/utils/d2-utils.mjs +0 -205
- package/utils/debug.mjs +0 -3
- package/utils/delete-diagram-images.mjs +0 -99
- package/utils/diagram-version-utils.mjs +0 -14
- package/utils/docs-finder-utils.mjs +0 -548
- package/utils/evaluate/report-utils.mjs +0 -132
- package/utils/extract-api.mjs +0 -32
- package/utils/file-utils.mjs +0 -960
- package/utils/history-utils.mjs +0 -203
- package/utils/icon-map.mjs +0 -26
- package/utils/image-compress.mjs +0 -154
- package/utils/kroki-utils.mjs +0 -173
- package/utils/linter/index.mjs +0 -50
- package/utils/load-config.mjs +0 -78
- package/utils/markdown/index.mjs +0 -26
- package/utils/markdown-checker.mjs +0 -694
- package/utils/mermaid-validator.mjs +0 -140
- package/utils/mermaid-worker-pool.mjs +0 -250
- package/utils/mermaid-worker.mjs +0 -233
- package/utils/openapi/index.mjs +0 -28
- package/utils/preferences-utils.mjs +0 -175
- package/utils/request.mjs +0 -10
- package/utils/sync-diagram-to-translations.mjs +0 -272
- package/utils/translate-diagram-images.mjs +0 -807
- package/utils/utils.mjs +0 -1354
- /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
|