@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,26 +0,0 @@
|
|
|
1
|
-
import { promises as fs } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
|
|
4
|
-
export default async function saveOutput({ savePath, fileName, saveKey, ...rest }) {
|
|
5
|
-
if (!(saveKey in rest)) {
|
|
6
|
-
console.warn(`saveKey "${saveKey}" not found in input, skip saving.`);
|
|
7
|
-
return {
|
|
8
|
-
saveOutputStatus: false,
|
|
9
|
-
saveOutputPath: null,
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const value = rest[saveKey];
|
|
14
|
-
const content =
|
|
15
|
-
typeof value === "object" && value !== null ? JSON.stringify(value, null, 2) : String(value);
|
|
16
|
-
await fs.mkdir(savePath, { recursive: true });
|
|
17
|
-
const filePath = join(savePath, fileName);
|
|
18
|
-
await fs.writeFile(filePath, content, "utf8");
|
|
19
|
-
|
|
20
|
-
return {
|
|
21
|
-
saveOutputStatus: true,
|
|
22
|
-
saveOutputPath: filePath,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
saveOutput.task_render_mode = "hide";
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
2
|
-
import fs from "fs-extra";
|
|
3
|
-
import { buildDocumentTree } from "../../utils/docs-finder-utils.mjs";
|
|
4
|
-
|
|
5
|
-
export default async function saveSidebar({ documentStructure, docsDir }) {
|
|
6
|
-
// Generate _sidebar.md
|
|
7
|
-
try {
|
|
8
|
-
const sidebar = generateSidebar(documentStructure);
|
|
9
|
-
const sidebarPath = join(docsDir, "_sidebar.md");
|
|
10
|
-
|
|
11
|
-
await fs.ensureDir(docsDir);
|
|
12
|
-
await fs.writeFile(sidebarPath, sidebar, "utf8");
|
|
13
|
-
} catch (err) {
|
|
14
|
-
console.error("Failed to save _sidebar.md:", err.message);
|
|
15
|
-
}
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// Recursively generate sidebar text, the link path is the flattened file name
|
|
20
|
-
function walk(nodes, indent = "") {
|
|
21
|
-
let out = "";
|
|
22
|
-
for (const node of nodes) {
|
|
23
|
-
const relPath = node.path.replace(/^\//, "");
|
|
24
|
-
const flatFile = `${relPath.split("/").join("-")}.md`;
|
|
25
|
-
const realIndent = node.parentId === null ? "" : indent;
|
|
26
|
-
out += `${realIndent}* [${node.title}](/${flatFile})\n`;
|
|
27
|
-
|
|
28
|
-
if (node.children && node.children.length > 0) {
|
|
29
|
-
out += walk(node.children, `${indent} `);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return out;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function generateSidebar(documentStructure) {
|
|
36
|
-
const { rootNodes } = buildDocumentTree(documentStructure);
|
|
37
|
-
return walk(rootNodes).replace(/\n+$/, "");
|
|
38
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Determine whether to skip document generation when the document already exists.
|
|
3
|
-
* If intentType is diagram-related *and* content is already present, mark that
|
|
4
|
-
* generation should be skipped so downstream agents can short-circuit.
|
|
5
|
-
*/
|
|
6
|
-
export default async function skipIfContentExists(input) {
|
|
7
|
-
const { intentType, content } = input;
|
|
8
|
-
|
|
9
|
-
const isDiagramIntent =
|
|
10
|
-
intentType && ["addDiagram", "updateDiagram", "deleteDiagram"].includes(intentType);
|
|
11
|
-
const shouldSkipGeneration = Boolean(isDiagramIntent && content);
|
|
12
|
-
|
|
13
|
-
return {
|
|
14
|
-
...input,
|
|
15
|
-
skipGenerateDocument: shouldSkipGeneration,
|
|
16
|
-
// Ensure downstream steps have content available when skipping
|
|
17
|
-
...(shouldSkipGeneration
|
|
18
|
-
? {
|
|
19
|
-
content,
|
|
20
|
-
documentContent: content,
|
|
21
|
-
originalContent: content,
|
|
22
|
-
}
|
|
23
|
-
: {}),
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
skipIfContentExists.task_render_mode = "hide";
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Check if a string contains character-based language characters (Chinese, Japanese, Korean, etc.)
|
|
3
|
-
* @param {string} str - String to check
|
|
4
|
-
* @returns {boolean} - True if string contains character-based language characters
|
|
5
|
-
*/
|
|
6
|
-
function isCharacterBasedLanguage(str) {
|
|
7
|
-
if (!str) return false;
|
|
8
|
-
// Check for Chinese, Japanese, Korean, and other character-based languages
|
|
9
|
-
// Chinese: \u4e00-\u9fff (CJK Unified Ideographs)
|
|
10
|
-
// Japanese: \u3040-\u309f (Hiragana), \u30a0-\u30ff (Katakana)
|
|
11
|
-
// Korean: \uac00-\ud7a3 (Hangul Syllables)
|
|
12
|
-
// Thai: \u0e00-\u0e7f
|
|
13
|
-
// Arabic: \u0600-\u06ff
|
|
14
|
-
const characterBasedPattern =
|
|
15
|
-
/[\u4e00-\u9fff\u3040-\u309f\u30a0-\u30ff\uac00-\ud7a3\u0e00-\u0e7f\u0600-\u06ff]/;
|
|
16
|
-
return characterBasedPattern.test(str);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Get character limit based on language type
|
|
21
|
-
* @param {string} title - Title to check
|
|
22
|
-
* @returns {number} - Character limit (24 for English, 12 for character-based languages)
|
|
23
|
-
*/
|
|
24
|
-
function getCharacterLimit(title) {
|
|
25
|
-
return isCharacterBasedLanguage(title) ? 12 : 24;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Streamline document titles if they exceed length limits
|
|
30
|
-
* Reusable function for streamlining document titles in various contexts
|
|
31
|
-
* @param {Object} params
|
|
32
|
-
* @param {Array<{title: string, path: string}>} params.documentStructure - Document structure array
|
|
33
|
-
* @param {Object} options - Agent options with context
|
|
34
|
-
* @returns {Promise<void>} - Modifies documentStructure in place
|
|
35
|
-
*/
|
|
36
|
-
export default async function streamlineDocumentTitlesIfNeeded({ documentStructure }, options) {
|
|
37
|
-
if (!documentStructure || !Array.isArray(documentStructure)) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// Filter items that need streamlining based on character count and language type
|
|
42
|
-
// English: > 24 characters, Character-based languages (Chinese, Japanese, etc.): > 12 characters
|
|
43
|
-
const itemsNeedingStreamline = documentStructure.filter((item) => {
|
|
44
|
-
if (!item.title) return false;
|
|
45
|
-
const limit = getCharacterLimit(item.title);
|
|
46
|
-
return item.title.length > limit;
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
if (itemsNeedingStreamline.length === 0) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const documentList = itemsNeedingStreamline.map((item) => ({
|
|
54
|
-
path: item.path,
|
|
55
|
-
title: item.title,
|
|
56
|
-
}));
|
|
57
|
-
|
|
58
|
-
const streamlineAgent = options?.context?.agents?.["documentTitleStreamline"];
|
|
59
|
-
if (!streamlineAgent) {
|
|
60
|
-
console.warn("⚠️ documentTitleStreamline agent not found. Skipping title streamlining.");
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
try {
|
|
65
|
-
const streamlineResult = await options.context.invoke(streamlineAgent, {
|
|
66
|
-
documentList,
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
// Update the document items with streamlined titles using path as the key
|
|
70
|
-
if (streamlineResult.documentList && Array.isArray(streamlineResult.documentList)) {
|
|
71
|
-
const streamlineMap = new Map(streamlineResult.documentList.map((item) => [item.path, item]));
|
|
72
|
-
|
|
73
|
-
for (const item of documentStructure) {
|
|
74
|
-
const streamlined = streamlineMap.get(item.path);
|
|
75
|
-
if (streamlined) {
|
|
76
|
-
item.title = streamlined.title;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
} catch (error) {
|
|
81
|
-
console.warn("⚠️ Failed to streamline document titles:", error.message);
|
|
82
|
-
console.warn("Continuing with original titles.");
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
streamlineDocumentTitlesIfNeeded.taskTitle = "Streamline document titles if needed";
|
|
87
|
-
streamlineDocumentTitlesIfNeeded.description =
|
|
88
|
-
"Shorten document titles that exceed length limits to make sidebar navigation less crowded";
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import { isRemoteFile } from "../../utils/file-utils.mjs";
|
|
3
|
-
import { normalizePath, toRelativePath } from "../../utils/utils.mjs";
|
|
4
|
-
|
|
5
|
-
export default function transformDetailDataSource({ sourceIds }, options = {}) {
|
|
6
|
-
// Read file content for each sourceId, ignoring failures
|
|
7
|
-
let openAPISpec;
|
|
8
|
-
const remoteFileList = options?.context?.userContext?.remoteFileList || [];
|
|
9
|
-
const contents = (sourceIds || [])
|
|
10
|
-
.filter((id) => {
|
|
11
|
-
const openApiSourceId = options?.context?.userContext?.openAPISpec?.sourceId;
|
|
12
|
-
if (openApiSourceId !== undefined && openApiSourceId === id) {
|
|
13
|
-
openAPISpec = options.context.userContext.openAPISpec;
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
return true;
|
|
17
|
-
})
|
|
18
|
-
.map((id) => {
|
|
19
|
-
try {
|
|
20
|
-
if (isRemoteFile(id)) {
|
|
21
|
-
const findFile = remoteFileList.find((f) => f.sourceId === id);
|
|
22
|
-
if (findFile) {
|
|
23
|
-
return `// sourceId: ${id}\n${findFile.content}\n`;
|
|
24
|
-
}
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const normalizedId = normalizePath(id);
|
|
29
|
-
const content = fs.readFileSync(normalizedId, "utf8");
|
|
30
|
-
const relativeId = toRelativePath(id);
|
|
31
|
-
return `// sourceId: ${relativeId}\n${content}\n`;
|
|
32
|
-
} catch {
|
|
33
|
-
// Ignore files that cannot be read
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
})
|
|
37
|
-
.filter(Boolean);
|
|
38
|
-
|
|
39
|
-
return {
|
|
40
|
-
detailDataSource: contents.join(""),
|
|
41
|
-
openAPISpec,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
transformDetailDataSource.task_render_mode = "hide";
|