@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,23 +0,0 @@
|
|
|
1
|
-
type: object
|
|
2
|
-
description: Document structure item representing a node in the document hierarchy
|
|
3
|
-
properties:
|
|
4
|
-
id:
|
|
5
|
-
type: string
|
|
6
|
-
description: Unique identifier for the document structure item
|
|
7
|
-
title:
|
|
8
|
-
type: string
|
|
9
|
-
description:
|
|
10
|
-
type: string
|
|
11
|
-
path:
|
|
12
|
-
type: string
|
|
13
|
-
description: Path in URL format, cannot be empty, cannot contain spaces or special characters, must start with /, no need to include language level, e.g., /zh/about should return /about
|
|
14
|
-
parentPath:
|
|
15
|
-
type: string
|
|
16
|
-
description: Parent node path, if null indicates it is a top-level node
|
|
17
|
-
icon:
|
|
18
|
-
type: string
|
|
19
|
-
description: Iconify icon name, e.g., lucide:book, lucide:rocket, lucide:* etc.
|
|
20
|
-
required:
|
|
21
|
-
- title
|
|
22
|
-
- description
|
|
23
|
-
- path
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
type: array
|
|
2
|
-
items:
|
|
3
|
-
type: object
|
|
4
|
-
properties:
|
|
5
|
-
title:
|
|
6
|
-
type: string
|
|
7
|
-
description:
|
|
8
|
-
type: string
|
|
9
|
-
path:
|
|
10
|
-
type: string
|
|
11
|
-
description: Path in URL format, cannot be empty, cannot contain spaces or special characters, must start with /, no need to include language level, e.g., /zh/about should return /about
|
|
12
|
-
parentId:
|
|
13
|
-
type:
|
|
14
|
-
- string
|
|
15
|
-
- "null"
|
|
16
|
-
description: Parent node path, if null indicates it is a top-level node
|
|
17
|
-
sourceIds:
|
|
18
|
-
type: array
|
|
19
|
-
description: Associated sourceId from `<data_sources>` for subsequent translation and content generation, must come from sourceId in `<data_sources>`, cannot have fake ids, **cannot be empty**
|
|
20
|
-
items:
|
|
21
|
-
type: string
|
|
22
|
-
icon:
|
|
23
|
-
type: string
|
|
24
|
-
description: Lucide icon name for root-level documents (just support lucide:icon-name, not support other icon collections)
|
|
25
|
-
required:
|
|
26
|
-
- title
|
|
27
|
-
- description
|
|
28
|
-
- path
|
|
29
|
-
- sourceIds
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
type: team
|
|
2
|
-
name: batchGenerateDocument
|
|
3
|
-
description: Batch generate document details
|
|
4
|
-
skills:
|
|
5
|
-
- ./check-document.mjs
|
|
6
|
-
input_schema:
|
|
7
|
-
type: object
|
|
8
|
-
properties:
|
|
9
|
-
detailDataSource:
|
|
10
|
-
type: string
|
|
11
|
-
description: Context for documentation structure generation, used to assist generate documentation structure
|
|
12
|
-
documentStructure: ../schema/document-structure.yaml
|
|
13
|
-
translates:
|
|
14
|
-
type: array
|
|
15
|
-
items:
|
|
16
|
-
type: object
|
|
17
|
-
properties:
|
|
18
|
-
language:
|
|
19
|
-
type: string
|
|
20
|
-
description: List of languages to translate documents to
|
|
21
|
-
modifiedFiles:
|
|
22
|
-
type: array
|
|
23
|
-
items: { type: string }
|
|
24
|
-
description: Array of modified files since last generation
|
|
25
|
-
iterate_on: documentStructure
|
|
26
|
-
concurrency: 5
|
|
27
|
-
mode: sequential
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Check if --diagram or --diagram-all flag is set via command line arguments or environment variable
|
|
3
|
-
* Returns the flag values and passes through all input
|
|
4
|
-
*
|
|
5
|
-
* --diagram: Filter to show only documents with diagrams, let user select
|
|
6
|
-
* --diagram-all: Auto-select all documents with diagrams, no user selection
|
|
7
|
-
*/
|
|
8
|
-
export default function checkDiagramFlag(input) {
|
|
9
|
-
let shouldUpdateDiagrams = false;
|
|
10
|
-
let shouldAutoSelectDiagrams = false;
|
|
11
|
-
|
|
12
|
-
// Priority order: command line args > input params > environment variables
|
|
13
|
-
// Check command line arguments first (highest priority)
|
|
14
|
-
if (process.argv) {
|
|
15
|
-
// Check for --diagram-all or -da (exact match)
|
|
16
|
-
const hasDiagramAllFlag = process.argv.some((arg) => arg === "--diagram-all" || arg === "-da");
|
|
17
|
-
|
|
18
|
-
const hasDiagramFlag = process.argv.some((arg) => arg === "--diagram" || arg === "-d");
|
|
19
|
-
|
|
20
|
-
if (hasDiagramAllFlag) {
|
|
21
|
-
shouldUpdateDiagrams = true;
|
|
22
|
-
shouldAutoSelectDiagrams = true;
|
|
23
|
-
// Return early if CLI arg found (highest priority)
|
|
24
|
-
return {
|
|
25
|
-
...input,
|
|
26
|
-
shouldUpdateDiagrams,
|
|
27
|
-
shouldAutoSelectDiagrams,
|
|
28
|
-
};
|
|
29
|
-
} else if (hasDiagramFlag) {
|
|
30
|
-
shouldUpdateDiagrams = true;
|
|
31
|
-
shouldAutoSelectDiagrams = false;
|
|
32
|
-
// Return early if CLI arg found (highest priority)
|
|
33
|
-
return {
|
|
34
|
-
...input,
|
|
35
|
-
shouldUpdateDiagrams,
|
|
36
|
-
shouldAutoSelectDiagrams,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// Check input parameter (second priority - CLI framework might parse --diagram-all as separate parameter)
|
|
42
|
-
if (input["diagram-all"] === true || input["diagram-all"] === "true") {
|
|
43
|
-
shouldUpdateDiagrams = true;
|
|
44
|
-
shouldAutoSelectDiagrams = true;
|
|
45
|
-
// Return early if input param found (second priority)
|
|
46
|
-
return {
|
|
47
|
-
...input,
|
|
48
|
-
shouldUpdateDiagrams,
|
|
49
|
-
shouldAutoSelectDiagrams,
|
|
50
|
-
};
|
|
51
|
-
} else if (input.diagram === true || input.diagram === "true") {
|
|
52
|
-
shouldUpdateDiagrams = true;
|
|
53
|
-
shouldAutoSelectDiagrams = false;
|
|
54
|
-
// Return early if input param found (second priority)
|
|
55
|
-
return {
|
|
56
|
-
...input,
|
|
57
|
-
shouldUpdateDiagrams,
|
|
58
|
-
shouldAutoSelectDiagrams,
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// Check environment variable (lowest priority)
|
|
63
|
-
if (
|
|
64
|
-
process.env.DOC_SMITH_UPDATE_DIAGRAMS === "all" ||
|
|
65
|
-
process.env.DOC_SMITH_UPDATE_DIAGRAMS_ALL === "true" ||
|
|
66
|
-
process.env.DOC_SMITH_UPDATE_DIAGRAMS_ALL === "1"
|
|
67
|
-
) {
|
|
68
|
-
shouldUpdateDiagrams = true;
|
|
69
|
-
shouldAutoSelectDiagrams = true;
|
|
70
|
-
} else if (
|
|
71
|
-
process.env.DOC_SMITH_UPDATE_DIAGRAMS === "true" ||
|
|
72
|
-
process.env.DOC_SMITH_UPDATE_DIAGRAMS === "1"
|
|
73
|
-
) {
|
|
74
|
-
shouldUpdateDiagrams = true;
|
|
75
|
-
shouldAutoSelectDiagrams = false;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Return all input plus the flags
|
|
79
|
-
return {
|
|
80
|
-
...input,
|
|
81
|
-
shouldUpdateDiagrams,
|
|
82
|
-
shouldAutoSelectDiagrams,
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
checkDiagramFlag.input_schema = {
|
|
87
|
-
type: "object",
|
|
88
|
-
properties: {
|
|
89
|
-
diagram: {
|
|
90
|
-
type: ["boolean", "string"],
|
|
91
|
-
description:
|
|
92
|
-
"Flag to trigger diagram update: true for user selection (can also use --diagram CLI arg)",
|
|
93
|
-
},
|
|
94
|
-
"diagram-all": {
|
|
95
|
-
type: ["boolean", "string"],
|
|
96
|
-
description:
|
|
97
|
-
"Flag to auto-select all documents with diagrams (can also use --diagram-all CLI arg)",
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
checkDiagramFlag.output_schema = {
|
|
103
|
-
type: "object",
|
|
104
|
-
properties: {
|
|
105
|
-
shouldUpdateDiagrams: {
|
|
106
|
-
type: "boolean",
|
|
107
|
-
description: "Whether to filter and update diagrams",
|
|
108
|
-
},
|
|
109
|
-
shouldAutoSelectDiagrams: {
|
|
110
|
-
type: "boolean",
|
|
111
|
-
description:
|
|
112
|
-
"Whether to auto-select all documents with diagrams (true for --diagram-all, false for --diagram)",
|
|
113
|
-
},
|
|
114
|
-
},
|
|
115
|
-
required: ["shouldUpdateDiagrams", "shouldAutoSelectDiagrams"],
|
|
116
|
-
};
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import { access, readFile } from "node:fs/promises";
|
|
2
|
-
import { dirname, join } from "node:path";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { TeamAgent } from "@aigne/core";
|
|
5
|
-
import fs from "fs-extra";
|
|
6
|
-
import pMap from "p-map";
|
|
7
|
-
|
|
8
|
-
import { getFileName } from "../../utils/utils.mjs";
|
|
9
|
-
import checkDetailResult from "../utils/check-detail-result.mjs";
|
|
10
|
-
|
|
11
|
-
// Get current script directory
|
|
12
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
13
|
-
|
|
14
|
-
export default async function checkDocument(
|
|
15
|
-
{
|
|
16
|
-
path,
|
|
17
|
-
docsDir,
|
|
18
|
-
sourceIds,
|
|
19
|
-
originalDocumentStructure,
|
|
20
|
-
documentStructure,
|
|
21
|
-
modifiedFiles,
|
|
22
|
-
forceRegenerate,
|
|
23
|
-
locale,
|
|
24
|
-
translates = [],
|
|
25
|
-
...rest
|
|
26
|
-
},
|
|
27
|
-
options,
|
|
28
|
-
) {
|
|
29
|
-
// Check if the detail file already exists
|
|
30
|
-
const fileFullName = getFileName(path, locale);
|
|
31
|
-
const filePath = join(docsDir, fileFullName);
|
|
32
|
-
let detailGenerated = true;
|
|
33
|
-
let fileContent = null;
|
|
34
|
-
try {
|
|
35
|
-
await access(filePath);
|
|
36
|
-
// If file exists, read its content for validation
|
|
37
|
-
fileContent = await readFile(filePath, "utf8");
|
|
38
|
-
} catch {
|
|
39
|
-
detailGenerated = false;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Check if sourceIds have changed by comparing with original documentation structure
|
|
43
|
-
let sourceIdsChanged = false;
|
|
44
|
-
if (originalDocumentStructure && sourceIds) {
|
|
45
|
-
// Find the original node in the documentation structure
|
|
46
|
-
const originalNode = originalDocumentStructure.find((node) => node.path === path);
|
|
47
|
-
|
|
48
|
-
if (originalNode?.sourceIds) {
|
|
49
|
-
const originalSourceIds = originalNode.sourceIds;
|
|
50
|
-
const currentSourceIds = sourceIds;
|
|
51
|
-
|
|
52
|
-
// Compare arrays (order doesn't matter, but content does)
|
|
53
|
-
if (originalSourceIds.length !== currentSourceIds.length) {
|
|
54
|
-
sourceIdsChanged = true;
|
|
55
|
-
} else {
|
|
56
|
-
// Check if any sourceId is different
|
|
57
|
-
const originalSet = new Set(originalSourceIds);
|
|
58
|
-
const currentSet = new Set(currentSourceIds);
|
|
59
|
-
|
|
60
|
-
if (originalSet.size !== currentSet.size) {
|
|
61
|
-
sourceIdsChanged = true;
|
|
62
|
-
} else {
|
|
63
|
-
// Check if any element is different
|
|
64
|
-
for (const sourceId of originalSourceIds) {
|
|
65
|
-
if (!currentSet.has(sourceId)) {
|
|
66
|
-
sourceIdsChanged = true;
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// If file exists, check content validation
|
|
76
|
-
let contentValidationFailed = false;
|
|
77
|
-
let validationResult = {};
|
|
78
|
-
if (detailGenerated && fileContent && documentStructure) {
|
|
79
|
-
validationResult = await checkDetailResult({
|
|
80
|
-
documentStructure,
|
|
81
|
-
reviewContent: fileContent,
|
|
82
|
-
docsDir,
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
if (!validationResult.isApproved) {
|
|
86
|
-
contentValidationFailed = true;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
const translateList = Array.isArray(translates) ? translates : [];
|
|
90
|
-
const languages = translateList.map((x) => x.language);
|
|
91
|
-
const lackLanguages = new Set(languages);
|
|
92
|
-
const skills = [];
|
|
93
|
-
|
|
94
|
-
// If file exists, sourceIds haven't changed, source files haven't changed, and content validation passes, no need to regenerate
|
|
95
|
-
if (detailGenerated && !sourceIdsChanged && !contentValidationFailed && !forceRegenerate) {
|
|
96
|
-
await pMap(
|
|
97
|
-
languages,
|
|
98
|
-
async (x) => {
|
|
99
|
-
const languageFileName = getFileName(path, x);
|
|
100
|
-
const languageFilePath = join(docsDir, languageFileName);
|
|
101
|
-
if (await fs.exists(languageFilePath)) {
|
|
102
|
-
lackLanguages.delete(x);
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
{ concurrency: 5 },
|
|
106
|
-
);
|
|
107
|
-
if (lackLanguages.size === 0) {
|
|
108
|
-
return {
|
|
109
|
-
path,
|
|
110
|
-
docsDir,
|
|
111
|
-
...rest,
|
|
112
|
-
detailGenerated: true,
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
// translations during generation don't need feedback, content is satisfactory
|
|
116
|
-
rest.content = fileContent;
|
|
117
|
-
} else {
|
|
118
|
-
skills.push(options.context.agents["handleDocumentUpdate"]);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
skills.push(options.context.agents["translateMultilingual"]);
|
|
122
|
-
|
|
123
|
-
const teamAgent = TeamAgent.from({
|
|
124
|
-
name: "generateDocument",
|
|
125
|
-
skills,
|
|
126
|
-
});
|
|
127
|
-
let openAPISpec = null;
|
|
128
|
-
|
|
129
|
-
if (options.context?.userContext?.openAPISpec?.sourceId) {
|
|
130
|
-
const matchingDocument = originalDocumentStructure.find((item) => {
|
|
131
|
-
if (item.path === path) {
|
|
132
|
-
return item.sourceIds.find((x) => x === options.context.userContext.openAPISpec.sourceId);
|
|
133
|
-
}
|
|
134
|
-
return false;
|
|
135
|
-
});
|
|
136
|
-
if (matchingDocument) {
|
|
137
|
-
openAPISpec = options.context.userContext.openAPISpec;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
const result = await options.context.invoke(teamAgent, {
|
|
142
|
-
...rest,
|
|
143
|
-
translates: translateList.filter((x) => lackLanguages.has(x.language)),
|
|
144
|
-
locale,
|
|
145
|
-
docsDir,
|
|
146
|
-
path,
|
|
147
|
-
sourceIds,
|
|
148
|
-
originalDocumentStructure,
|
|
149
|
-
documentStructure,
|
|
150
|
-
detailFeedback: contentValidationFailed ? validationResult.detailFeedback : "",
|
|
151
|
-
openAPISpec,
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
return {
|
|
155
|
-
path,
|
|
156
|
-
docsDir,
|
|
157
|
-
...rest,
|
|
158
|
-
result,
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
checkDocument.taskTitle = "Check if '{{ title }}' needs generate or update";
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { hasDiagramContent } from "../../utils/check-document-has-diagram.mjs";
|
|
2
|
-
|
|
3
|
-
const DEFAULT_DIAGRAMMING_EFFORT = 5;
|
|
4
|
-
const MIN_DIAGRAMMING_EFFORT = 0;
|
|
5
|
-
const MAX_DIAGRAMMING_EFFORT = 10;
|
|
6
|
-
|
|
7
|
-
export default async function checkGenerateDiagram(
|
|
8
|
-
{
|
|
9
|
-
documentContent,
|
|
10
|
-
locale,
|
|
11
|
-
feedback,
|
|
12
|
-
detailFeedback,
|
|
13
|
-
originalContent,
|
|
14
|
-
diagramming,
|
|
15
|
-
path,
|
|
16
|
-
docsDir,
|
|
17
|
-
shouldUpdateDiagrams,
|
|
18
|
-
},
|
|
19
|
-
options,
|
|
20
|
-
) {
|
|
21
|
-
let content = documentContent;
|
|
22
|
-
let skipGenerateDiagram = false;
|
|
23
|
-
|
|
24
|
-
// If --diagram flag is set and document already has d2 code blocks,
|
|
25
|
-
// skip preCheck and directly replace existing diagrams
|
|
26
|
-
// This is because when using --diagram/--diagram-all, the user explicitly wants to update diagrams,
|
|
27
|
-
// so we should skip the "do we need to generate diagram" check and directly proceed to replacement
|
|
28
|
-
const hasExistingDiagrams = originalContent && hasDiagramContent(originalContent);
|
|
29
|
-
|
|
30
|
-
// Skip preCheck if:
|
|
31
|
-
// 1. Using --diagram/--diagram-all flag (shouldUpdateDiagrams === true) AND
|
|
32
|
-
// 2. Document already has d2 code blocks (hasExistingDiagrams === true)
|
|
33
|
-
// This means user explicitly wants to update existing diagrams, no need to check if diagram is needed
|
|
34
|
-
const shouldSkipPreCheck = shouldUpdateDiagrams === true && hasExistingDiagrams;
|
|
35
|
-
|
|
36
|
-
let preCheckResult = { details: [], content: null };
|
|
37
|
-
if (!shouldSkipPreCheck) {
|
|
38
|
-
const preCheckAgent = options.context?.agents?.["preCheckGenerateDiagram"];
|
|
39
|
-
|
|
40
|
-
preCheckResult = await options.context.invoke(preCheckAgent, {
|
|
41
|
-
documentContent,
|
|
42
|
-
feedback,
|
|
43
|
-
detailFeedback,
|
|
44
|
-
previousGenerationContent: originalContent,
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const totalScore = (preCheckResult.details || []).reduce((acc, curr) => acc + curr.score, 0);
|
|
49
|
-
if (![false, "false", "", undefined, null].includes(preCheckResult.content)) {
|
|
50
|
-
content = preCheckResult.content;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
let diagrammingEffort = diagramming?.effort
|
|
54
|
-
? Number(diagramming?.effort)
|
|
55
|
-
: DEFAULT_DIAGRAMMING_EFFORT;
|
|
56
|
-
|
|
57
|
-
if (Number.isNaN(diagrammingEffort)) {
|
|
58
|
-
diagrammingEffort = DEFAULT_DIAGRAMMING_EFFORT;
|
|
59
|
-
} else {
|
|
60
|
-
diagrammingEffort = Math.min(
|
|
61
|
-
Math.max(MIN_DIAGRAMMING_EFFORT, diagrammingEffort),
|
|
62
|
-
MAX_DIAGRAMMING_EFFORT,
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// If we skipped preCheck because document has existing diagrams and --diagram flag is set,
|
|
67
|
-
// we should NOT skip generating diagram (we need to replace existing ones)
|
|
68
|
-
if (shouldSkipPreCheck) {
|
|
69
|
-
skipGenerateDiagram = false;
|
|
70
|
-
} else if (totalScore <= diagrammingEffort) {
|
|
71
|
-
skipGenerateDiagram = true;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
if (skipGenerateDiagram) {
|
|
75
|
-
content = documentContent;
|
|
76
|
-
} else {
|
|
77
|
-
try {
|
|
78
|
-
const generateAgent = options.context?.agents?.["generateDiagram"];
|
|
79
|
-
const result = await options.context.invoke(generateAgent, {
|
|
80
|
-
documentContent: content,
|
|
81
|
-
locale,
|
|
82
|
-
diagramming: diagramming || {},
|
|
83
|
-
feedback: feedback || "",
|
|
84
|
-
originalContent: originalContent || documentContent,
|
|
85
|
-
path,
|
|
86
|
-
docsDir,
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
// generateDiagram now returns { content } with image already inserted
|
|
90
|
-
// The image replaces DIAGRAM_PLACEHOLDER or D2 code blocks
|
|
91
|
-
if (result?.content) {
|
|
92
|
-
content = result.content;
|
|
93
|
-
} else {
|
|
94
|
-
// Fallback: if no content returned, use original document content
|
|
95
|
-
content = documentContent;
|
|
96
|
-
}
|
|
97
|
-
} catch (error) {
|
|
98
|
-
skipGenerateDiagram = true;
|
|
99
|
-
console.log(`⚠️ Skip generate any diagram: ${error.message}`);
|
|
100
|
-
// On error, return original document content
|
|
101
|
-
content = documentContent;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return { content };
|
|
106
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
export default async function checkUpdateIsSingle({ selectedDocs, ...rest }, options) {
|
|
2
|
-
if (!selectedDocs || !Array.isArray(selectedDocs)) {
|
|
3
|
-
throw new Error("A list of documents to update must be provided.");
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
if (selectedDocs.length === 0) {
|
|
7
|
-
throw new Error("You must select at least one document to update.");
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
let targetAgent;
|
|
11
|
-
let agentName;
|
|
12
|
-
|
|
13
|
-
if (selectedDocs.length === 1 && !rest.reset) {
|
|
14
|
-
// Single doc update without reset
|
|
15
|
-
agentName = "updateSingleDocument";
|
|
16
|
-
targetAgent = options.context.agents["updateSingleDocument"];
|
|
17
|
-
} else {
|
|
18
|
-
agentName = "batchUpdateDocument";
|
|
19
|
-
targetAgent = options.context.agents["batchUpdateDocument"];
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
if (!targetAgent) {
|
|
23
|
-
throw new Error(`Sorry, I can't seem to find the "${agentName}" agent.`);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
try {
|
|
27
|
-
const result = await options.context.invoke(targetAgent, {
|
|
28
|
-
selectedDocs,
|
|
29
|
-
...rest,
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
// For batch updates, preserve selectedDocs and other context for save-and-translate-document
|
|
33
|
-
// batchUpdateDocument returns an array of results, but save-and-translate-document needs selectedDocs
|
|
34
|
-
if (agentName === "batchUpdateDocument") {
|
|
35
|
-
return {
|
|
36
|
-
...rest,
|
|
37
|
-
selectedDocs, // Preserve selectedDocs for save-and-translate-document.mjs
|
|
38
|
-
result, // Include the batch update results
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// For single document updates, return result as-is
|
|
43
|
-
return result;
|
|
44
|
-
} catch (error) {
|
|
45
|
-
console.error(
|
|
46
|
-
`Sorry, I encountered an error while trying to run the ${agentName} agent:`,
|
|
47
|
-
error.message,
|
|
48
|
-
);
|
|
49
|
-
throw error;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
checkUpdateIsSingle.taskTitle = "Check document count and route to appropriate update agent";
|