ai-prompt-guide-mcp 1.0.0
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/LICENSE +21 -0
- package/README.md +271 -0
- package/dist/__tests__/config-loading.test.d.ts +5 -0
- package/dist/__tests__/config-loading.test.d.ts.map +1 -0
- package/dist/__tests__/config-loading.test.js +127 -0
- package/dist/__tests__/config-loading.test.js.map +1 -0
- package/dist/__tests__/config-logging.test.d.ts +5 -0
- package/dist/__tests__/config-logging.test.d.ts.map +1 -0
- package/dist/__tests__/config-logging.test.js +146 -0
- package/dist/__tests__/config-logging.test.js.map +1 -0
- package/dist/__tests__/config-path-resolution.test.d.ts +5 -0
- package/dist/__tests__/config-path-resolution.test.d.ts.map +1 -0
- package/dist/__tests__/config-path-resolution.test.js +88 -0
- package/dist/__tests__/config-path-resolution.test.js.map +1 -0
- package/dist/__tests__/config-path-validation.test.d.ts +6 -0
- package/dist/__tests__/config-path-validation.test.d.ts.map +1 -0
- package/dist/__tests__/config-path-validation.test.js +203 -0
- package/dist/__tests__/config-path-validation.test.js.map +1 -0
- package/dist/__tests__/config-precedence.test.d.ts +5 -0
- package/dist/__tests__/config-precedence.test.d.ts.map +1 -0
- package/dist/__tests__/config-precedence.test.js +200 -0
- package/dist/__tests__/config-precedence.test.js.map +1 -0
- package/dist/__tests__/config-types.test.d.ts +5 -0
- package/dist/__tests__/config-types.test.d.ts.map +1 -0
- package/dist/__tests__/config-types.test.js +189 -0
- package/dist/__tests__/config-types.test.js.map +1 -0
- package/dist/__tests__/config.test.d.ts +5 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +229 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/config.d.ts +87 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +498 -0
- package/dist/config.js.map +1 -0
- package/dist/constants/defaults.d.ts +78 -0
- package/dist/constants/defaults.d.ts.map +1 -0
- package/dist/constants/defaults.js +78 -0
- package/dist/constants/defaults.js.map +1 -0
- package/dist/document-cache.d.ts +485 -0
- package/dist/document-cache.d.ts.map +1 -0
- package/dist/document-cache.hierarchical.test.d.ts +2 -0
- package/dist/document-cache.hierarchical.test.d.ts.map +1 -0
- package/dist/document-cache.hierarchical.test.js +243 -0
- package/dist/document-cache.hierarchical.test.js.map +1 -0
- package/dist/document-cache.js +965 -0
- package/dist/document-cache.js.map +1 -0
- package/dist/document-cache.test.d.ts +8 -0
- package/dist/document-cache.test.d.ts.map +1 -0
- package/dist/document-cache.test.js +624 -0
- package/dist/document-cache.test.js.map +1 -0
- package/dist/document-manager.d.ts +252 -0
- package/dist/document-manager.d.ts.map +1 -0
- package/dist/document-manager.js +760 -0
- package/dist/document-manager.js.map +1 -0
- package/dist/document-manager.race-condition.test.d.ts +8 -0
- package/dist/document-manager.race-condition.test.d.ts.map +1 -0
- package/dist/document-manager.race-condition.test.js +139 -0
- package/dist/document-manager.race-condition.test.js.map +1 -0
- package/dist/fingerprint-index.d.ts +177 -0
- package/dist/fingerprint-index.d.ts.map +1 -0
- package/dist/fingerprint-index.js +374 -0
- package/dist/fingerprint-index.js.map +1 -0
- package/dist/fingerprint-index.test.d.ts +15 -0
- package/dist/fingerprint-index.test.d.ts.map +1 -0
- package/dist/fingerprint-index.test.js +482 -0
- package/dist/fingerprint-index.test.js.map +1 -0
- package/dist/fsio.d.ts +76 -0
- package/dist/fsio.d.ts.map +1 -0
- package/dist/fsio.js +506 -0
- package/dist/fsio.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown-tools.test.d.ts +5 -0
- package/dist/markdown-tools.test.d.ts.map +1 -0
- package/dist/markdown-tools.test.js +200 -0
- package/dist/markdown-tools.test.js.map +1 -0
- package/dist/parse.d.ts +19 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +144 -0
- package/dist/parse.js.map +1 -0
- package/dist/prompts/__tests__/prompt-loader.test.d.ts +5 -0
- package/dist/prompts/__tests__/prompt-loader.test.d.ts.map +1 -0
- package/dist/prompts/__tests__/prompt-loader.test.js +300 -0
- package/dist/prompts/__tests__/prompt-loader.test.js.map +1 -0
- package/dist/prompts/prompt-loader.d.ts +58 -0
- package/dist/prompts/prompt-loader.d.ts.map +1 -0
- package/dist/prompts/prompt-loader.js +215 -0
- package/dist/prompts/prompt-loader.js.map +1 -0
- package/dist/prompts/prompt-validator.d.ts +30 -0
- package/dist/prompts/prompt-validator.d.ts.map +1 -0
- package/dist/prompts/prompt-validator.js +65 -0
- package/dist/prompts/prompt-validator.js.map +1 -0
- package/dist/prompts/types.d.ts +46 -0
- package/dist/prompts/types.d.ts.map +1 -0
- package/dist/prompts/types.js +14 -0
- package/dist/prompts/types.js.map +1 -0
- package/dist/prompts/workflow-prompts.d.ts +42 -0
- package/dist/prompts/workflow-prompts.d.ts.map +1 -0
- package/dist/prompts/workflow-prompts.js +61 -0
- package/dist/prompts/workflow-prompts.js.map +1 -0
- package/dist/sections.d.ts +67 -0
- package/dist/sections.d.ts.map +1 -0
- package/dist/sections.hierarchical.test.d.ts +8 -0
- package/dist/sections.hierarchical.test.d.ts.map +1 -0
- package/dist/sections.hierarchical.test.js +397 -0
- package/dist/sections.hierarchical.test.js.map +1 -0
- package/dist/sections.js +1229 -0
- package/dist/sections.js.map +1 -0
- package/dist/server/default-dependencies.d.ts +134 -0
- package/dist/server/default-dependencies.d.ts.map +1 -0
- package/dist/server/default-dependencies.js +176 -0
- package/dist/server/default-dependencies.js.map +1 -0
- package/dist/server/dependencies.d.ts +161 -0
- package/dist/server/dependencies.d.ts.map +1 -0
- package/dist/server/dependencies.js +50 -0
- package/dist/server/dependencies.js.map +1 -0
- package/dist/server/index.d.ts +10 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +9 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/middleware/error-handling.d.ts +52 -0
- package/dist/server/middleware/error-handling.d.ts.map +1 -0
- package/dist/server/middleware/error-handling.js +76 -0
- package/dist/server/middleware/error-handling.js.map +1 -0
- package/dist/server/middleware/index.d.ts +7 -0
- package/dist/server/middleware/index.d.ts.map +1 -0
- package/dist/server/middleware/index.js +7 -0
- package/dist/server/middleware/index.js.map +1 -0
- package/dist/server/middleware/logging.d.ts +29 -0
- package/dist/server/middleware/logging.d.ts.map +1 -0
- package/dist/server/middleware/logging.js +49 -0
- package/dist/server/middleware/logging.js.map +1 -0
- package/dist/server/middleware/session-management.d.ts +38 -0
- package/dist/server/middleware/session-management.d.ts.map +1 -0
- package/dist/server/middleware/session-management.js +66 -0
- package/dist/server/middleware/session-management.js.map +1 -0
- package/dist/server/request-handlers/index.d.ts +5 -0
- package/dist/server/request-handlers/index.d.ts.map +1 -0
- package/dist/server/request-handlers/index.js +5 -0
- package/dist/server/request-handlers/index.js.map +1 -0
- package/dist/server/request-handlers/prompt-handlers.d.ts +13 -0
- package/dist/server/request-handlers/prompt-handlers.d.ts.map +1 -0
- package/dist/server/request-handlers/prompt-handlers.js +80 -0
- package/dist/server/request-handlers/prompt-handlers.js.map +1 -0
- package/dist/server/request-handlers/tool-handlers.d.ts +11 -0
- package/dist/server/request-handlers/tool-handlers.d.ts.map +1 -0
- package/dist/server/request-handlers/tool-handlers.js +85 -0
- package/dist/server/request-handlers/tool-handlers.js.map +1 -0
- package/dist/server/server-factory.d.ts +68 -0
- package/dist/server/server-factory.d.ts.map +1 -0
- package/dist/server/server-factory.js +135 -0
- package/dist/server/server-factory.js.map +1 -0
- package/dist/server/transport/stdio-transport.d.ts +9 -0
- package/dist/server/transport/stdio-transport.d.ts.map +1 -0
- package/dist/server/transport/stdio-transport.js +11 -0
- package/dist/server/transport/stdio-transport.js.map +1 -0
- package/dist/session/index.d.ts +5 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +7 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/session-store.d.ts +74 -0
- package/dist/session/session-store.d.ts.map +1 -0
- package/dist/session/session-store.js +150 -0
- package/dist/session/session-store.js.map +1 -0
- package/dist/session/types.d.ts +96 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +9 -0
- package/dist/session/types.js.map +1 -0
- package/dist/shared/__tests__/addressing-system.batch-cache.test.d.ts +12 -0
- package/dist/shared/__tests__/addressing-system.batch-cache.test.d.ts.map +1 -0
- package/dist/shared/__tests__/addressing-system.batch-cache.test.js +306 -0
- package/dist/shared/__tests__/addressing-system.batch-cache.test.js.map +1 -0
- package/dist/shared/__tests__/addressing-system.hierarchical.test.d.ts +6 -0
- package/dist/shared/__tests__/addressing-system.hierarchical.test.d.ts.map +1 -0
- package/dist/shared/__tests__/addressing-system.hierarchical.test.js +205 -0
- package/dist/shared/__tests__/addressing-system.hierarchical.test.js.map +1 -0
- package/dist/shared/__tests__/addressing-system.lru.test.d.ts +6 -0
- package/dist/shared/__tests__/addressing-system.lru.test.d.ts.map +1 -0
- package/dist/shared/__tests__/addressing-system.lru.test.js +159 -0
- package/dist/shared/__tests__/addressing-system.lru.test.js.map +1 -0
- package/dist/shared/__tests__/addressing-system.relative-paths.test.d.ts +14 -0
- package/dist/shared/__tests__/addressing-system.relative-paths.test.d.ts.map +1 -0
- package/dist/shared/__tests__/addressing-system.relative-paths.test.js +249 -0
- package/dist/shared/__tests__/addressing-system.relative-paths.test.js.map +1 -0
- package/dist/shared/__tests__/document-analysis-enhanced.test.d.ts +9 -0
- package/dist/shared/__tests__/document-analysis-enhanced.test.d.ts.map +1 -0
- package/dist/shared/__tests__/document-analysis-enhanced.test.js +419 -0
- package/dist/shared/__tests__/document-analysis-enhanced.test.js.map +1 -0
- package/dist/shared/__tests__/document-analysis.test.d.ts +8 -0
- package/dist/shared/__tests__/document-analysis.test.d.ts.map +1 -0
- package/dist/shared/__tests__/document-analysis.test.js +904 -0
- package/dist/shared/__tests__/document-analysis.test.js.map +1 -0
- package/dist/shared/__tests__/keyword-utils-integration.test.d.ts +9 -0
- package/dist/shared/__tests__/keyword-utils-integration.test.d.ts.map +1 -0
- package/dist/shared/__tests__/keyword-utils-integration.test.js +317 -0
- package/dist/shared/__tests__/keyword-utils-integration.test.js.map +1 -0
- package/dist/shared/__tests__/link-utils.test.d.ts +5 -0
- package/dist/shared/__tests__/link-utils.test.d.ts.map +1 -0
- package/dist/shared/__tests__/link-utils.test.js +560 -0
- package/dist/shared/__tests__/link-utils.test.js.map +1 -0
- package/dist/shared/__tests__/link-validation.test.d.ts +5 -0
- package/dist/shared/__tests__/link-validation.test.d.ts.map +1 -0
- package/dist/shared/__tests__/link-validation.test.js +473 -0
- package/dist/shared/__tests__/link-validation.test.js.map +1 -0
- package/dist/shared/__tests__/reference-extractor.test.d.ts +8 -0
- package/dist/shared/__tests__/reference-extractor.test.d.ts.map +1 -0
- package/dist/shared/__tests__/reference-extractor.test.js +260 -0
- package/dist/shared/__tests__/reference-extractor.test.js.map +1 -0
- package/dist/shared/__tests__/reference-loader.test.d.ts +8 -0
- package/dist/shared/__tests__/reference-loader.test.d.ts.map +1 -0
- package/dist/shared/__tests__/reference-loader.test.js +622 -0
- package/dist/shared/__tests__/reference-loader.test.js.map +1 -0
- package/dist/shared/__tests__/section-operations.append.test.d.ts +8 -0
- package/dist/shared/__tests__/section-operations.append.test.d.ts.map +1 -0
- package/dist/shared/__tests__/section-operations.append.test.js +150 -0
- package/dist/shared/__tests__/section-operations.append.test.js.map +1 -0
- package/dist/shared/__tests__/section-operations.test.d.ts +7 -0
- package/dist/shared/__tests__/section-operations.test.d.ts.map +1 -0
- package/dist/shared/__tests__/section-operations.test.js +118 -0
- package/dist/shared/__tests__/section-operations.test.js.map +1 -0
- package/dist/shared/__tests__/slug-utils.test.d.ts +5 -0
- package/dist/shared/__tests__/slug-utils.test.d.ts.map +1 -0
- package/dist/shared/__tests__/slug-utils.test.js +542 -0
- package/dist/shared/__tests__/slug-utils.test.js.map +1 -0
- package/dist/shared/__tests__/task-operations.test.d.ts +9 -0
- package/dist/shared/__tests__/task-operations.test.d.ts.map +1 -0
- package/dist/shared/__tests__/task-operations.test.js +257 -0
- package/dist/shared/__tests__/task-operations.test.js.map +1 -0
- package/dist/shared/__tests__/task-validation.test.d.ts +6 -0
- package/dist/shared/__tests__/task-validation.test.d.ts.map +1 -0
- package/dist/shared/__tests__/task-validation.test.js +129 -0
- package/dist/shared/__tests__/task-validation.test.js.map +1 -0
- package/dist/shared/__tests__/task-view-utilities.test.d.ts +5 -0
- package/dist/shared/__tests__/task-view-utilities.test.d.ts.map +1 -0
- package/dist/shared/__tests__/task-view-utilities.test.js +312 -0
- package/dist/shared/__tests__/task-view-utilities.test.js.map +1 -0
- package/dist/shared/__tests__/tool-integration.array-validation.test.d.ts +7 -0
- package/dist/shared/__tests__/tool-integration.array-validation.test.d.ts.map +1 -0
- package/dist/shared/__tests__/tool-integration.array-validation.test.js +169 -0
- package/dist/shared/__tests__/tool-integration.array-validation.test.js.map +1 -0
- package/dist/shared/__tests__/tool-integration.hierarchical.test.d.ts +7 -0
- package/dist/shared/__tests__/tool-integration.hierarchical.test.d.ts.map +1 -0
- package/dist/shared/__tests__/tool-integration.hierarchical.test.js +204 -0
- package/dist/shared/__tests__/tool-integration.hierarchical.test.js.map +1 -0
- package/dist/shared/__tests__/workflow-prompt-utilities.test.d.ts +8 -0
- package/dist/shared/__tests__/workflow-prompt-utilities.test.d.ts.map +1 -0
- package/dist/shared/__tests__/workflow-prompt-utilities.test.js +722 -0
- package/dist/shared/__tests__/workflow-prompt-utilities.test.js.map +1 -0
- package/dist/shared/addressing-system.d.ts +799 -0
- package/dist/shared/addressing-system.d.ts.map +1 -0
- package/dist/shared/addressing-system.js +1074 -0
- package/dist/shared/addressing-system.js.map +1 -0
- package/dist/shared/document-analysis/__tests__/keyword-utils.test.d.ts +8 -0
- package/dist/shared/document-analysis/__tests__/keyword-utils.test.d.ts.map +1 -0
- package/dist/shared/document-analysis/__tests__/keyword-utils.test.js +601 -0
- package/dist/shared/document-analysis/__tests__/keyword-utils.test.js.map +1 -0
- package/dist/shared/document-analysis/index.d.ts +67 -0
- package/dist/shared/document-analysis/index.d.ts.map +1 -0
- package/dist/shared/document-analysis/index.js +166 -0
- package/dist/shared/document-analysis/index.js.map +1 -0
- package/dist/shared/document-analysis/keyword-utils.d.ts +405 -0
- package/dist/shared/document-analysis/keyword-utils.d.ts.map +1 -0
- package/dist/shared/document-analysis/keyword-utils.js +1147 -0
- package/dist/shared/document-analysis/keyword-utils.js.map +1 -0
- package/dist/shared/document-analysis/reference-validation.d.ts +27 -0
- package/dist/shared/document-analysis/reference-validation.d.ts.map +1 -0
- package/dist/shared/document-analysis/reference-validation.js +173 -0
- package/dist/shared/document-analysis/reference-validation.js.map +1 -0
- package/dist/shared/document-analysis/related-docs.d.ts +27 -0
- package/dist/shared/document-analysis/related-docs.d.ts.map +1 -0
- package/dist/shared/document-analysis/related-docs.js +459 -0
- package/dist/shared/document-analysis/related-docs.js.map +1 -0
- package/dist/shared/document-analysis/types.d.ts +89 -0
- package/dist/shared/document-analysis/types.d.ts.map +1 -0
- package/dist/shared/document-analysis/types.js +41 -0
- package/dist/shared/document-analysis/types.js.map +1 -0
- package/dist/shared/document-analysis.d.ts +15 -0
- package/dist/shared/document-analysis.d.ts.map +1 -0
- package/dist/shared/document-analysis.js +16 -0
- package/dist/shared/document-analysis.js.map +1 -0
- package/dist/shared/document-manager-factory.d.ts +32 -0
- package/dist/shared/document-manager-factory.d.ts.map +1 -0
- package/dist/shared/document-manager-factory.js +75 -0
- package/dist/shared/document-manager-factory.js.map +1 -0
- package/dist/shared/index.d.ts +5 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +7 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/link-analysis.d.ts +84 -0
- package/dist/shared/link-analysis.d.ts.map +1 -0
- package/dist/shared/link-analysis.js +213 -0
- package/dist/shared/link-analysis.js.map +1 -0
- package/dist/shared/link-context.d.ts +23 -0
- package/dist/shared/link-context.d.ts.map +1 -0
- package/dist/shared/link-context.js +172 -0
- package/dist/shared/link-context.js.map +1 -0
- package/dist/shared/link-utils.d.ts +33 -0
- package/dist/shared/link-utils.d.ts.map +1 -0
- package/dist/shared/link-utils.js +301 -0
- package/dist/shared/link-utils.js.map +1 -0
- package/dist/shared/link-validation.d.ts +79 -0
- package/dist/shared/link-validation.d.ts.map +1 -0
- package/dist/shared/link-validation.js +340 -0
- package/dist/shared/link-validation.js.map +1 -0
- package/dist/shared/namespace-analysis.d.ts +10 -0
- package/dist/shared/namespace-analysis.d.ts.map +1 -0
- package/dist/shared/namespace-analysis.js +100 -0
- package/dist/shared/namespace-analysis.js.map +1 -0
- package/dist/shared/namespace-constants.d.ts +69 -0
- package/dist/shared/namespace-constants.d.ts.map +1 -0
- package/dist/shared/namespace-constants.js +97 -0
- package/dist/shared/namespace-constants.js.map +1 -0
- package/dist/shared/path-utilities.d.ts +13 -0
- package/dist/shared/path-utilities.d.ts.map +1 -0
- package/dist/shared/path-utilities.js +39 -0
- package/dist/shared/path-utilities.js.map +1 -0
- package/dist/shared/reference-extractor.d.ts +121 -0
- package/dist/shared/reference-extractor.d.ts.map +1 -0
- package/dist/shared/reference-extractor.js +195 -0
- package/dist/shared/reference-extractor.js.map +1 -0
- package/dist/shared/reference-loader.d.ts +163 -0
- package/dist/shared/reference-loader.d.ts.map +1 -0
- package/dist/shared/reference-loader.js +265 -0
- package/dist/shared/reference-loader.js.map +1 -0
- package/dist/shared/section-operations.d.ts +14 -0
- package/dist/shared/section-operations.d.ts.map +1 -0
- package/dist/shared/section-operations.js +115 -0
- package/dist/shared/section-operations.js.map +1 -0
- package/dist/shared/slug-utils.d.ts +109 -0
- package/dist/shared/slug-utils.d.ts.map +1 -0
- package/dist/shared/slug-utils.js +302 -0
- package/dist/shared/slug-utils.js.map +1 -0
- package/dist/shared/task-operations.d.ts +152 -0
- package/dist/shared/task-operations.d.ts.map +1 -0
- package/dist/shared/task-operations.js +416 -0
- package/dist/shared/task-operations.js.map +1 -0
- package/dist/shared/task-utilities.d.ts +63 -0
- package/dist/shared/task-utilities.d.ts.map +1 -0
- package/dist/shared/task-utilities.js +86 -0
- package/dist/shared/task-utilities.js.map +1 -0
- package/dist/shared/task-validation.d.ts +50 -0
- package/dist/shared/task-validation.d.ts.map +1 -0
- package/dist/shared/task-validation.js +97 -0
- package/dist/shared/task-validation.js.map +1 -0
- package/dist/shared/task-view-utilities.d.ts +109 -0
- package/dist/shared/task-view-utilities.d.ts.map +1 -0
- package/dist/shared/task-view-utilities.js +255 -0
- package/dist/shared/task-view-utilities.js.map +1 -0
- package/dist/shared/utilities.d.ts +14 -0
- package/dist/shared/utilities.d.ts.map +1 -0
- package/dist/shared/utilities.js +23 -0
- package/dist/shared/utilities.js.map +1 -0
- package/dist/shared/utilities.test.d.ts +5 -0
- package/dist/shared/utilities.test.d.ts.map +1 -0
- package/dist/shared/utilities.test.js +422 -0
- package/dist/shared/utilities.test.js.map +1 -0
- package/dist/shared/validation-utils.d.ts +57 -0
- package/dist/shared/validation-utils.d.ts.map +1 -0
- package/dist/shared/validation-utils.js +63 -0
- package/dist/shared/validation-utils.js.map +1 -0
- package/dist/shared/workflow-prompt-utilities.d.ts +64 -0
- package/dist/shared/workflow-prompt-utilities.d.ts.map +1 -0
- package/dist/shared/workflow-prompt-utilities.js +163 -0
- package/dist/shared/workflow-prompt-utilities.js.map +1 -0
- package/dist/slug.d.ts +9 -0
- package/dist/slug.d.ts.map +1 -0
- package/dist/slug.js +40 -0
- package/dist/slug.js.map +1 -0
- package/dist/template-loader.d.ts +6 -0
- package/dist/template-loader.d.ts.map +1 -0
- package/dist/template-loader.js +8 -0
- package/dist/template-loader.js.map +1 -0
- package/dist/tools/__tests__/create-document-self-reference.test.d.ts +2 -0
- package/dist/tools/__tests__/create-document-self-reference.test.d.ts.map +1 -0
- package/dist/tools/__tests__/create-document-self-reference.test.js +124 -0
- package/dist/tools/__tests__/create-document-self-reference.test.js.map +1 -0
- package/dist/tools/__tests__/create-document-workflow-regression.test.d.ts +16 -0
- package/dist/tools/__tests__/create-document-workflow-regression.test.d.ts.map +1 -0
- package/dist/tools/__tests__/create-document-workflow-regression.test.js +655 -0
- package/dist/tools/__tests__/create-document-workflow-regression.test.js.map +1 -0
- package/dist/tools/__tests__/create-document.test.d.ts +2 -0
- package/dist/tools/__tests__/create-document.test.d.ts.map +1 -0
- package/dist/tools/__tests__/create-document.test.js +255 -0
- package/dist/tools/__tests__/create-document.test.js.map +1 -0
- package/dist/tools/__tests__/delete-document.test.d.ts +7 -0
- package/dist/tools/__tests__/delete-document.test.d.ts.map +1 -0
- package/dist/tools/__tests__/delete-document.test.js +311 -0
- package/dist/tools/__tests__/delete-document.test.js.map +1 -0
- package/dist/tools/__tests__/edit-document.test.d.ts +2 -0
- package/dist/tools/__tests__/edit-document.test.d.ts.map +1 -0
- package/dist/tools/__tests__/edit-document.test.js +644 -0
- package/dist/tools/__tests__/edit-document.test.js.map +1 -0
- package/dist/tools/__tests__/error-scenarios.test.d.ts +5 -0
- package/dist/tools/__tests__/error-scenarios.test.d.ts.map +1 -0
- package/dist/tools/__tests__/error-scenarios.test.js +105 -0
- package/dist/tools/__tests__/error-scenarios.test.js.map +1 -0
- package/dist/tools/__tests__/mocks/document-manager.mock.d.ts +99 -0
- package/dist/tools/__tests__/mocks/document-manager.mock.d.ts.map +1 -0
- package/dist/tools/__tests__/mocks/document-manager.mock.js +457 -0
- package/dist/tools/__tests__/mocks/document-manager.mock.js.map +1 -0
- package/dist/tools/__tests__/mocks/filesystem.mock.d.ts +103 -0
- package/dist/tools/__tests__/mocks/filesystem.mock.d.ts.map +1 -0
- package/dist/tools/__tests__/mocks/filesystem.mock.js +247 -0
- package/dist/tools/__tests__/mocks/filesystem.mock.js.map +1 -0
- package/dist/tools/__tests__/move-document.test.d.ts +12 -0
- package/dist/tools/__tests__/move-document.test.d.ts.map +1 -0
- package/dist/tools/__tests__/move-document.test.js +214 -0
- package/dist/tools/__tests__/move-document.test.js.map +1 -0
- package/dist/tools/__tests__/move.test.d.ts +13 -0
- package/dist/tools/__tests__/move.test.d.ts.map +1 -0
- package/dist/tools/__tests__/move.test.js +939 -0
- package/dist/tools/__tests__/move.test.js.map +1 -0
- package/dist/tools/__tests__/section.integration.improved.test.d.ts +5 -0
- package/dist/tools/__tests__/section.integration.improved.test.d.ts.map +1 -0
- package/dist/tools/__tests__/section.integration.improved.test.js +199 -0
- package/dist/tools/__tests__/section.integration.improved.test.js.map +1 -0
- package/dist/tools/__tests__/section.integration.test.d.ts +5 -0
- package/dist/tools/__tests__/section.integration.test.d.ts.map +1 -0
- package/dist/tools/__tests__/section.integration.test.js +637 -0
- package/dist/tools/__tests__/section.integration.test.js.map +1 -0
- package/dist/tools/__tests__/setup/test-environment.d.ts +111 -0
- package/dist/tools/__tests__/setup/test-environment.d.ts.map +1 -0
- package/dist/tools/__tests__/setup/test-environment.js +322 -0
- package/dist/tools/__tests__/setup/test-environment.js.map +1 -0
- package/dist/tools/__tests__/suggestion-generator.test.d.ts +8 -0
- package/dist/tools/__tests__/suggestion-generator.test.d.ts.map +1 -0
- package/dist/tools/__tests__/suggestion-generator.test.js +508 -0
- package/dist/tools/__tests__/suggestion-generator.test.js.map +1 -0
- package/dist/tools/__tests__/task-consistency.test.d.ts +11 -0
- package/dist/tools/__tests__/task-consistency.test.d.ts.map +1 -0
- package/dist/tools/__tests__/task-consistency.test.js +93 -0
- package/dist/tools/__tests__/task-consistency.test.js.map +1 -0
- package/dist/tools/__tests__/task-status-parsing.test.d.ts +15 -0
- package/dist/tools/__tests__/task-status-parsing.test.d.ts.map +1 -0
- package/dist/tools/__tests__/task-status-parsing.test.js +126 -0
- package/dist/tools/__tests__/task-status-parsing.test.js.map +1 -0
- package/dist/tools/__tests__/view-section-boundary.test.d.ts +2 -0
- package/dist/tools/__tests__/view-section-boundary.test.d.ts.map +1 -0
- package/dist/tools/__tests__/view-section-boundary.test.js +132 -0
- package/dist/tools/__tests__/view-section-boundary.test.js.map +1 -0
- package/dist/tools/__tests__/write-operations-integration.test.d.ts +8 -0
- package/dist/tools/__tests__/write-operations-integration.test.d.ts.map +1 -0
- package/dist/tools/__tests__/write-operations-integration.test.js +136 -0
- package/dist/tools/__tests__/write-operations-integration.test.js.map +1 -0
- package/dist/tools/browse/content-analyzer.d.ts +27 -0
- package/dist/tools/browse/content-analyzer.d.ts.map +1 -0
- package/dist/tools/browse/content-analyzer.js +150 -0
- package/dist/tools/browse/content-analyzer.js.map +1 -0
- package/dist/tools/browse/dependency-analyzer.d.ts +63 -0
- package/dist/tools/browse/dependency-analyzer.d.ts.map +1 -0
- package/dist/tools/browse/dependency-analyzer.js +261 -0
- package/dist/tools/browse/dependency-analyzer.js.map +1 -0
- package/dist/tools/browse/folder-navigator.d.ts +35 -0
- package/dist/tools/browse/folder-navigator.d.ts.map +1 -0
- package/dist/tools/browse/folder-navigator.js +154 -0
- package/dist/tools/browse/folder-navigator.js.map +1 -0
- package/dist/tools/browse/index.d.ts +10 -0
- package/dist/tools/browse/index.d.ts.map +1 -0
- package/dist/tools/browse/index.js +14 -0
- package/dist/tools/browse/index.js.map +1 -0
- package/dist/tools/browse/relationship-classifier.d.ts +9 -0
- package/dist/tools/browse/relationship-classifier.d.ts.map +1 -0
- package/dist/tools/browse/relationship-classifier.js +38 -0
- package/dist/tools/browse/relationship-classifier.js.map +1 -0
- package/dist/tools/browse/search-engine.d.ts +69 -0
- package/dist/tools/browse/search-engine.d.ts.map +1 -0
- package/dist/tools/browse/search-engine.js +197 -0
- package/dist/tools/browse/search-engine.js.map +1 -0
- package/dist/tools/create/__tests__/file-creator.test.d.ts +6 -0
- package/dist/tools/create/__tests__/file-creator.test.d.ts.map +1 -0
- package/dist/tools/create/__tests__/file-creator.test.js +138 -0
- package/dist/tools/create/__tests__/file-creator.test.js.map +1 -0
- package/dist/tools/create/__tests__/template-processor.test.d.ts +6 -0
- package/dist/tools/create/__tests__/template-processor.test.d.ts.map +1 -0
- package/dist/tools/create/__tests__/template-processor.test.js +130 -0
- package/dist/tools/create/__tests__/template-processor.test.js.map +1 -0
- package/dist/tools/create/file-creator.d.ts +35 -0
- package/dist/tools/create/file-creator.d.ts.map +1 -0
- package/dist/tools/create/file-creator.js +103 -0
- package/dist/tools/create/file-creator.js.map +1 -0
- package/dist/tools/create/index.d.ts +6 -0
- package/dist/tools/create/index.d.ts.map +1 -0
- package/dist/tools/create/index.js +7 -0
- package/dist/tools/create/index.js.map +1 -0
- package/dist/tools/create/pipeline.d.ts +39 -0
- package/dist/tools/create/pipeline.d.ts.map +1 -0
- package/dist/tools/create/pipeline.js +112 -0
- package/dist/tools/create/pipeline.js.map +1 -0
- package/dist/tools/create/suggestion-generator.d.ts +47 -0
- package/dist/tools/create/suggestion-generator.d.ts.map +1 -0
- package/dist/tools/create/suggestion-generator.js +51 -0
- package/dist/tools/create/suggestion-generator.js.map +1 -0
- package/dist/tools/create/template-processor.d.ts +27 -0
- package/dist/tools/create/template-processor.d.ts.map +1 -0
- package/dist/tools/create/template-processor.js +74 -0
- package/dist/tools/create/template-processor.js.map +1 -0
- package/dist/tools/create/validation-processor.d.ts +48 -0
- package/dist/tools/create/validation-processor.d.ts.map +1 -0
- package/dist/tools/create/validation-processor.js +107 -0
- package/dist/tools/create/validation-processor.js.map +1 -0
- package/dist/tools/executor.d.ts +19 -0
- package/dist/tools/executor.d.ts.map +1 -0
- package/dist/tools/executor.js +53 -0
- package/dist/tools/executor.js.map +1 -0
- package/dist/tools/implementations/__tests__/browse-documents.test.d.ts +8 -0
- package/dist/tools/implementations/__tests__/browse-documents.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/browse-documents.test.js +319 -0
- package/dist/tools/implementations/__tests__/browse-documents.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/complete-coordinator-task.test.d.ts +7 -0
- package/dist/tools/implementations/__tests__/complete-coordinator-task.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/complete-coordinator-task.test.js +440 -0
- package/dist/tools/implementations/__tests__/complete-coordinator-task.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/complete-subagent-task.test.d.ts +14 -0
- package/dist/tools/implementations/__tests__/complete-subagent-task.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/complete-subagent-task.test.js +851 -0
- package/dist/tools/implementations/__tests__/complete-subagent-task.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/complete-task-notes.test.d.ts +6 -0
- package/dist/tools/implementations/__tests__/complete-task-notes.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/complete-task-notes.test.js +157 -0
- package/dist/tools/implementations/__tests__/complete-task-notes.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/complete-task.test.d.ts +14 -0
- package/dist/tools/implementations/__tests__/complete-task.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/complete-task.test.js +867 -0
- package/dist/tools/implementations/__tests__/complete-task.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/continue-task.test.d.ts +11 -0
- package/dist/tools/implementations/__tests__/continue-task.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/continue-task.test.js +845 -0
- package/dist/tools/implementations/__tests__/continue-task.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/coordinator-task.test.d.ts +7 -0
- package/dist/tools/implementations/__tests__/coordinator-task.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/coordinator-task.test.js +495 -0
- package/dist/tools/implementations/__tests__/coordinator-task.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/get-guide.test.d.ts +8 -0
- package/dist/tools/implementations/__tests__/get-guide.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/get-guide.test.js +242 -0
- package/dist/tools/implementations/__tests__/get-guide.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/get-workflow.test.d.ts +8 -0
- package/dist/tools/implementations/__tests__/get-workflow.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/get-workflow.test.js +232 -0
- package/dist/tools/implementations/__tests__/get-workflow.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/search-documents.test.d.ts +8 -0
- package/dist/tools/implementations/__tests__/search-documents.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/search-documents.test.js +336 -0
- package/dist/tools/implementations/__tests__/search-documents.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/start-coordinator-task.test.d.ts +7 -0
- package/dist/tools/implementations/__tests__/start-coordinator-task.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/start-coordinator-task.test.js +177 -0
- package/dist/tools/implementations/__tests__/start-coordinator-task.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/start-subagent-task.test.d.ts +11 -0
- package/dist/tools/implementations/__tests__/start-subagent-task.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/start-subagent-task.test.js +846 -0
- package/dist/tools/implementations/__tests__/start-subagent-task.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/start-task.test.d.ts +11 -0
- package/dist/tools/implementations/__tests__/start-task.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/start-task.test.js +828 -0
- package/dist/tools/implementations/__tests__/start-task.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/subagent-task-batch-operations.test.d.ts +8 -0
- package/dist/tools/implementations/__tests__/subagent-task-batch-operations.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/subagent-task-batch-operations.test.js +199 -0
- package/dist/tools/implementations/__tests__/subagent-task-batch-operations.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/subagent-task.test.d.ts +7 -0
- package/dist/tools/implementations/__tests__/subagent-task.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/subagent-task.test.js +720 -0
- package/dist/tools/implementations/__tests__/subagent-task.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/task-batch-operations.test.d.ts +8 -0
- package/dist/tools/implementations/__tests__/task-batch-operations.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/task-batch-operations.test.js +200 -0
- package/dist/tools/implementations/__tests__/task-batch-operations.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/task.test.d.ts +7 -0
- package/dist/tools/implementations/__tests__/task.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/task.test.js +578 -0
- package/dist/tools/implementations/__tests__/task.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/view-coordinator-task.test.d.ts +13 -0
- package/dist/tools/implementations/__tests__/view-coordinator-task.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/view-coordinator-task.test.js +1404 -0
- package/dist/tools/implementations/__tests__/view-coordinator-task.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/view-document.linked-context.test.d.ts +8 -0
- package/dist/tools/implementations/__tests__/view-document.linked-context.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/view-document.linked-context.test.js +235 -0
- package/dist/tools/implementations/__tests__/view-document.linked-context.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/view-document.simplification.test.d.ts +9 -0
- package/dist/tools/implementations/__tests__/view-document.simplification.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/view-document.simplification.test.js +160 -0
- package/dist/tools/implementations/__tests__/view-document.simplification.test.js.map +1 -0
- package/dist/tools/implementations/__tests__/view-task.test.d.ts +12 -0
- package/dist/tools/implementations/__tests__/view-task.test.d.ts.map +1 -0
- package/dist/tools/implementations/__tests__/view-task.test.js +1158 -0
- package/dist/tools/implementations/__tests__/view-task.test.js.map +1 -0
- package/dist/tools/implementations/browse-documents.d.ts +36 -0
- package/dist/tools/implementations/browse-documents.d.ts.map +1 -0
- package/dist/tools/implementations/browse-documents.js +123 -0
- package/dist/tools/implementations/browse-documents.js.map +1 -0
- package/dist/tools/implementations/complete-coordinator-task.d.ts +53 -0
- package/dist/tools/implementations/complete-coordinator-task.d.ts.map +1 -0
- package/dist/tools/implementations/complete-coordinator-task.js +159 -0
- package/dist/tools/implementations/complete-coordinator-task.js.map +1 -0
- package/dist/tools/implementations/complete-subagent-task.d.ts +47 -0
- package/dist/tools/implementations/complete-subagent-task.d.ts.map +1 -0
- package/dist/tools/implementations/complete-subagent-task.js +141 -0
- package/dist/tools/implementations/complete-subagent-task.js.map +1 -0
- package/dist/tools/implementations/complete-task.d.ts +32 -0
- package/dist/tools/implementations/complete-task.d.ts.map +1 -0
- package/dist/tools/implementations/complete-task.hierarchical.test.d.ts +8 -0
- package/dist/tools/implementations/complete-task.hierarchical.test.d.ts.map +1 -0
- package/dist/tools/implementations/complete-task.hierarchical.test.js +363 -0
- package/dist/tools/implementations/complete-task.hierarchical.test.js.map +1 -0
- package/dist/tools/implementations/complete-task.js +122 -0
- package/dist/tools/implementations/complete-task.js.map +1 -0
- package/dist/tools/implementations/continue-task.d.ts +48 -0
- package/dist/tools/implementations/continue-task.d.ts.map +1 -0
- package/dist/tools/implementations/continue-task.js +167 -0
- package/dist/tools/implementations/continue-task.js.map +1 -0
- package/dist/tools/implementations/coordinator-task.d.ts +72 -0
- package/dist/tools/implementations/coordinator-task.d.ts.map +1 -0
- package/dist/tools/implementations/coordinator-task.js +169 -0
- package/dist/tools/implementations/coordinator-task.js.map +1 -0
- package/dist/tools/implementations/create-document.d.ts +12 -0
- package/dist/tools/implementations/create-document.d.ts.map +1 -0
- package/dist/tools/implementations/create-document.js +15 -0
- package/dist/tools/implementations/create-document.js.map +1 -0
- package/dist/tools/implementations/delete-document.d.ts +16 -0
- package/dist/tools/implementations/delete-document.d.ts.map +1 -0
- package/dist/tools/implementations/delete-document.js +70 -0
- package/dist/tools/implementations/delete-document.js.map +1 -0
- package/dist/tools/implementations/edit-document.d.ts +8 -0
- package/dist/tools/implementations/edit-document.d.ts.map +1 -0
- package/dist/tools/implementations/edit-document.js +118 -0
- package/dist/tools/implementations/edit-document.js.map +1 -0
- package/dist/tools/implementations/get-guide.d.ts +13 -0
- package/dist/tools/implementations/get-guide.d.ts.map +1 -0
- package/dist/tools/implementations/get-guide.js +64 -0
- package/dist/tools/implementations/get-guide.js.map +1 -0
- package/dist/tools/implementations/get-workflow.d.ts +12 -0
- package/dist/tools/implementations/get-workflow.d.ts.map +1 -0
- package/dist/tools/implementations/get-workflow.js +71 -0
- package/dist/tools/implementations/get-workflow.js.map +1 -0
- package/dist/tools/implementations/index.d.ts +24 -0
- package/dist/tools/implementations/index.d.ts.map +1 -0
- package/dist/tools/implementations/index.js +24 -0
- package/dist/tools/implementations/index.js.map +1 -0
- package/dist/tools/implementations/manage-document.d.ts +8 -0
- package/dist/tools/implementations/manage-document.d.ts.map +1 -0
- package/dist/tools/implementations/manage-document.js +180 -0
- package/dist/tools/implementations/manage-document.js.map +1 -0
- package/dist/tools/implementations/move-document.d.ts +12 -0
- package/dist/tools/implementations/move-document.d.ts.map +1 -0
- package/dist/tools/implementations/move-document.js +72 -0
- package/dist/tools/implementations/move-document.js.map +1 -0
- package/dist/tools/implementations/move.d.ts +24 -0
- package/dist/tools/implementations/move.d.ts.map +1 -0
- package/dist/tools/implementations/move.js +167 -0
- package/dist/tools/implementations/move.js.map +1 -0
- package/dist/tools/implementations/search-documents.d.ts +39 -0
- package/dist/tools/implementations/search-documents.d.ts.map +1 -0
- package/dist/tools/implementations/search-documents.js +246 -0
- package/dist/tools/implementations/search-documents.js.map +1 -0
- package/dist/tools/implementations/section.d.ts +42 -0
- package/dist/tools/implementations/section.d.ts.map +1 -0
- package/dist/tools/implementations/section.hierarchical.test.d.ts +8 -0
- package/dist/tools/implementations/section.hierarchical.test.d.ts.map +1 -0
- package/dist/tools/implementations/section.hierarchical.test.js +299 -0
- package/dist/tools/implementations/section.hierarchical.test.js.map +1 -0
- package/dist/tools/implementations/section.js +244 -0
- package/dist/tools/implementations/section.js.map +1 -0
- package/dist/tools/implementations/section.test.d.ts +5 -0
- package/dist/tools/implementations/section.test.d.ts.map +1 -0
- package/dist/tools/implementations/section.test.js +371 -0
- package/dist/tools/implementations/section.test.js.map +1 -0
- package/dist/tools/implementations/start-coordinator-task.d.ts +44 -0
- package/dist/tools/implementations/start-coordinator-task.d.ts.map +1 -0
- package/dist/tools/implementations/start-coordinator-task.js +125 -0
- package/dist/tools/implementations/start-coordinator-task.js.map +1 -0
- package/dist/tools/implementations/start-subagent-task.d.ts +53 -0
- package/dist/tools/implementations/start-subagent-task.d.ts.map +1 -0
- package/dist/tools/implementations/start-subagent-task.js +179 -0
- package/dist/tools/implementations/start-subagent-task.js.map +1 -0
- package/dist/tools/implementations/start-task.d.ts +48 -0
- package/dist/tools/implementations/start-task.d.ts.map +1 -0
- package/dist/tools/implementations/start-task.js +216 -0
- package/dist/tools/implementations/start-task.js.map +1 -0
- package/dist/tools/implementations/subagent-task.d.ts +98 -0
- package/dist/tools/implementations/subagent-task.d.ts.map +1 -0
- package/dist/tools/implementations/subagent-task.js +277 -0
- package/dist/tools/implementations/subagent-task.js.map +1 -0
- package/dist/tools/implementations/task.d.ts +97 -0
- package/dist/tools/implementations/task.d.ts.map +1 -0
- package/dist/tools/implementations/task.hierarchical.test.d.ts +8 -0
- package/dist/tools/implementations/task.hierarchical.test.d.ts.map +1 -0
- package/dist/tools/implementations/task.hierarchical.test.js +333 -0
- package/dist/tools/implementations/task.hierarchical.test.js.map +1 -0
- package/dist/tools/implementations/task.js +235 -0
- package/dist/tools/implementations/task.js.map +1 -0
- package/dist/tools/implementations/view-coordinator-task.d.ts +61 -0
- package/dist/tools/implementations/view-coordinator-task.d.ts.map +1 -0
- package/dist/tools/implementations/view-coordinator-task.js +295 -0
- package/dist/tools/implementations/view-coordinator-task.js.map +1 -0
- package/dist/tools/implementations/view-document.d.ts +84 -0
- package/dist/tools/implementations/view-document.d.ts.map +1 -0
- package/dist/tools/implementations/view-document.js +287 -0
- package/dist/tools/implementations/view-document.js.map +1 -0
- package/dist/tools/implementations/view-section.d.ts +28 -0
- package/dist/tools/implementations/view-section.d.ts.map +1 -0
- package/dist/tools/implementations/view-section.hierarchical.test.d.ts +8 -0
- package/dist/tools/implementations/view-section.hierarchical.test.d.ts.map +1 -0
- package/dist/tools/implementations/view-section.hierarchical.test.js +318 -0
- package/dist/tools/implementations/view-section.hierarchical.test.js.map +1 -0
- package/dist/tools/implementations/view-section.js +167 -0
- package/dist/tools/implementations/view-section.js.map +1 -0
- package/dist/tools/implementations/view-subagent-task.d.ts +46 -0
- package/dist/tools/implementations/view-subagent-task.d.ts.map +1 -0
- package/dist/tools/implementations/view-subagent-task.js +283 -0
- package/dist/tools/implementations/view-subagent-task.js.map +1 -0
- package/dist/tools/implementations/view-task.d.ts +43 -0
- package/dist/tools/implementations/view-task.d.ts.map +1 -0
- package/dist/tools/implementations/view-task.hierarchical.test.d.ts +8 -0
- package/dist/tools/implementations/view-task.hierarchical.test.d.ts.map +1 -0
- package/dist/tools/implementations/view-task.hierarchical.test.js +420 -0
- package/dist/tools/implementations/view-task.hierarchical.test.js.map +1 -0
- package/dist/tools/implementations/view-task.js +280 -0
- package/dist/tools/implementations/view-task.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/registry.d.ts +10 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +132 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/schemas/__tests__/get-guide-schemas.test.d.ts +8 -0
- package/dist/tools/schemas/__tests__/get-guide-schemas.test.d.ts.map +1 -0
- package/dist/tools/schemas/__tests__/get-guide-schemas.test.js +216 -0
- package/dist/tools/schemas/__tests__/get-guide-schemas.test.js.map +1 -0
- package/dist/tools/schemas/__tests__/get-workflow-schemas.test.d.ts +8 -0
- package/dist/tools/schemas/__tests__/get-workflow-schemas.test.d.ts.map +1 -0
- package/dist/tools/schemas/__tests__/get-workflow-schemas.test.js +229 -0
- package/dist/tools/schemas/__tests__/get-workflow-schemas.test.js.map +1 -0
- package/dist/tools/schemas/browse-documents-schemas.d.ts +47 -0
- package/dist/tools/schemas/browse-documents-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/browse-documents-schemas.js +48 -0
- package/dist/tools/schemas/browse-documents-schemas.js.map +1 -0
- package/dist/tools/schemas/complete-coordinator-task-schemas.d.ts +41 -0
- package/dist/tools/schemas/complete-coordinator-task-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/complete-coordinator-task-schemas.js +42 -0
- package/dist/tools/schemas/complete-coordinator-task-schemas.js.map +1 -0
- package/dist/tools/schemas/complete-subagent-task-schemas.d.ts +38 -0
- package/dist/tools/schemas/complete-subagent-task-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/complete-subagent-task-schemas.js +41 -0
- package/dist/tools/schemas/complete-subagent-task-schemas.js.map +1 -0
- package/dist/tools/schemas/complete-task-schemas.d.ts +33 -0
- package/dist/tools/schemas/complete-task-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/complete-task-schemas.js +36 -0
- package/dist/tools/schemas/complete-task-schemas.js.map +1 -0
- package/dist/tools/schemas/continue-task-schemas.d.ts +27 -0
- package/dist/tools/schemas/continue-task-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/continue-task-schemas.js +28 -0
- package/dist/tools/schemas/continue-task-schemas.js.map +1 -0
- package/dist/tools/schemas/coordinator-task-schemas.d.ts +87 -0
- package/dist/tools/schemas/coordinator-task-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/coordinator-task-schemas.js +80 -0
- package/dist/tools/schemas/coordinator-task-schemas.js.map +1 -0
- package/dist/tools/schemas/create-document-schemas.d.ts +61 -0
- package/dist/tools/schemas/create-document-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/create-document-schemas.js +143 -0
- package/dist/tools/schemas/create-document-schemas.js.map +1 -0
- package/dist/tools/schemas/delete-document-schemas.d.ts +24 -0
- package/dist/tools/schemas/delete-document-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/delete-document-schemas.js +25 -0
- package/dist/tools/schemas/delete-document-schemas.js.map +1 -0
- package/dist/tools/schemas/edit-document-schemas.d.ts +27 -0
- package/dist/tools/schemas/edit-document-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/edit-document-schemas.js +28 -0
- package/dist/tools/schemas/edit-document-schemas.js.map +1 -0
- package/dist/tools/schemas/get-guide-schemas.d.ts +35 -0
- package/dist/tools/schemas/get-guide-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/get-guide-schemas.js +66 -0
- package/dist/tools/schemas/get-guide-schemas.js.map +1 -0
- package/dist/tools/schemas/get-workflow-schemas.d.ts +35 -0
- package/dist/tools/schemas/get-workflow-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/get-workflow-schemas.js +67 -0
- package/dist/tools/schemas/get-workflow-schemas.js.map +1 -0
- package/dist/tools/schemas/manage-document-schemas.d.ts +59 -0
- package/dist/tools/schemas/manage-document-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/manage-document-schemas.js +83 -0
- package/dist/tools/schemas/manage-document-schemas.js.map +1 -0
- package/dist/tools/schemas/move-document-schemas.d.ts +25 -0
- package/dist/tools/schemas/move-document-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/move-document-schemas.js +26 -0
- package/dist/tools/schemas/move-document-schemas.js.map +1 -0
- package/dist/tools/schemas/move-schemas.d.ts +43 -0
- package/dist/tools/schemas/move-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/move-schemas.js +43 -0
- package/dist/tools/schemas/move-schemas.js.map +1 -0
- package/dist/tools/schemas/search-documents-schemas.d.ts +77 -0
- package/dist/tools/schemas/search-documents-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/search-documents-schemas.js +78 -0
- package/dist/tools/schemas/search-documents-schemas.js.map +1 -0
- package/dist/tools/schemas/section-schemas.d.ts +361 -0
- package/dist/tools/schemas/section-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/section-schemas.js +182 -0
- package/dist/tools/schemas/section-schemas.js.map +1 -0
- package/dist/tools/schemas/start-coordinator-task-schemas.d.ts +30 -0
- package/dist/tools/schemas/start-coordinator-task-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/start-coordinator-task-schemas.js +31 -0
- package/dist/tools/schemas/start-coordinator-task-schemas.js.map +1 -0
- package/dist/tools/schemas/start-subagent-task-schemas.d.ts +29 -0
- package/dist/tools/schemas/start-subagent-task-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/start-subagent-task-schemas.js +40 -0
- package/dist/tools/schemas/start-subagent-task-schemas.js.map +1 -0
- package/dist/tools/schemas/start-task-schemas.d.ts +23 -0
- package/dist/tools/schemas/start-task-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/start-task-schemas.js +39 -0
- package/dist/tools/schemas/start-task-schemas.js.map +1 -0
- package/dist/tools/schemas/subagent-task-schemas.d.ts +93 -0
- package/dist/tools/schemas/subagent-task-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/subagent-task-schemas.js +81 -0
- package/dist/tools/schemas/subagent-task-schemas.js.map +1 -0
- package/dist/tools/schemas/task-schemas.d.ts +88 -0
- package/dist/tools/schemas/task-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/task-schemas.js +80 -0
- package/dist/tools/schemas/task-schemas.js.map +1 -0
- package/dist/tools/schemas/view-coordinator-task-schemas.d.ts +27 -0
- package/dist/tools/schemas/view-coordinator-task-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/view-coordinator-task-schemas.js +46 -0
- package/dist/tools/schemas/view-coordinator-task-schemas.js.map +1 -0
- package/dist/tools/schemas/view-document-schemas.d.ts +152 -0
- package/dist/tools/schemas/view-document-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/view-document-schemas.js +70 -0
- package/dist/tools/schemas/view-document-schemas.js.map +1 -0
- package/dist/tools/schemas/view-section-schemas.d.ts +31 -0
- package/dist/tools/schemas/view-section-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/view-section-schemas.js +56 -0
- package/dist/tools/schemas/view-section-schemas.js.map +1 -0
- package/dist/tools/schemas/view-subagent-task-schemas.d.ts +31 -0
- package/dist/tools/schemas/view-subagent-task-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/view-subagent-task-schemas.js +65 -0
- package/dist/tools/schemas/view-subagent-task-schemas.js.map +1 -0
- package/dist/tools/schemas/view-task-schemas.d.ts +31 -0
- package/dist/tools/schemas/view-task-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/view-task-schemas.js +62 -0
- package/dist/tools/schemas/view-task-schemas.js.map +1 -0
- package/dist/tools/types.d.ts +98 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +9 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools-manager.d.ts +8 -0
- package/dist/tools-manager.d.ts.map +1 -0
- package/dist/tools-manager.js +9 -0
- package/dist/tools-manager.js.map +1 -0
- package/dist/types/core.d.ts +71 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +5 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/linking.d.ts +97 -0
- package/dist/types/linking.d.ts.map +1 -0
- package/dist/types/linking.js +5 -0
- package/dist/types/linking.js.map +1 -0
- package/dist/utils/__tests__/path-handler.archive.test.d.ts +8 -0
- package/dist/utils/__tests__/path-handler.archive.test.d.ts.map +1 -0
- package/dist/utils/__tests__/path-handler.archive.test.js +163 -0
- package/dist/utils/__tests__/path-handler.archive.test.js.map +1 -0
- package/dist/utils/error-formatter.d.ts +32 -0
- package/dist/utils/error-formatter.d.ts.map +1 -0
- package/dist/utils/error-formatter.js +79 -0
- package/dist/utils/error-formatter.js.map +1 -0
- package/dist/utils/logger.d.ts +21 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +154 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/path-handler.d.ts +52 -0
- package/dist/utils/path-handler.d.ts.map +1 -0
- package/dist/utils/path-handler.js +129 -0
- package/dist/utils/path-handler.js.map +1 -0
- package/dist/utils/security-audit-logger.d.ts +64 -0
- package/dist/utils/security-audit-logger.d.ts.map +1 -0
- package/dist/utils/security-audit-logger.js +56 -0
- package/dist/utils/security-audit-logger.js.map +1 -0
- package/dist/utils/virtual-path-resolver.d.ts +126 -0
- package/dist/utils/virtual-path-resolver.d.ts.map +1 -0
- package/dist/utils/virtual-path-resolver.js +171 -0
- package/dist/utils/virtual-path-resolver.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,655 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comprehensive regression tests for create-document workflow Stage 2.5
|
|
3
|
+
*
|
|
4
|
+
* Tests the complete enhanced document discovery system including:
|
|
5
|
+
* - Multi-factor relevance scoring
|
|
6
|
+
* - Enhanced keyword extraction with frontmatter support
|
|
7
|
+
* - Structured broken reference detection
|
|
8
|
+
* - Factor-based explanation generation
|
|
9
|
+
* - Fingerprint-based performance optimization
|
|
10
|
+
* - Integration between all enhanced components
|
|
11
|
+
*
|
|
12
|
+
* This test suite ensures that the Stage 1-4 enhancements work correctly
|
|
13
|
+
* in the complete create-document workflow, providing regression protection.
|
|
14
|
+
*/
|
|
15
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
16
|
+
import { promises as fs } from 'node:fs';
|
|
17
|
+
import path from 'node:path';
|
|
18
|
+
import os from 'node:os';
|
|
19
|
+
import { processSuggestions } from '../create/suggestion-generator.js';
|
|
20
|
+
// Mock the utilities module
|
|
21
|
+
vi.mock('../../shared/utilities.js', () => ({
|
|
22
|
+
getDocumentManager: vi.fn(),
|
|
23
|
+
analyzeDocumentSuggestions: vi.fn(),
|
|
24
|
+
analyzeNamespacePatterns: vi.fn()
|
|
25
|
+
}));
|
|
26
|
+
import { getDocumentManager, analyzeDocumentSuggestions, analyzeNamespacePatterns } from '../../shared/utilities.js';
|
|
27
|
+
// Type the mocked functions
|
|
28
|
+
const mockGetDocumentManager = getDocumentManager;
|
|
29
|
+
const mockAnalyzeDocumentSuggestions = analyzeDocumentSuggestions;
|
|
30
|
+
const mockAnalyzeNamespacePatterns = analyzeNamespacePatterns;
|
|
31
|
+
// Test data builders for realistic scenarios
|
|
32
|
+
const createMockFingerprint = (overrides = {}) => ({
|
|
33
|
+
keywords: ['test', 'document', 'content'],
|
|
34
|
+
lastModified: new Date('2023-12-01T10:00:00Z'),
|
|
35
|
+
contentHash: 'test-hash',
|
|
36
|
+
namespace: 'test',
|
|
37
|
+
...overrides
|
|
38
|
+
});
|
|
39
|
+
const createMockDocumentManager = () => {
|
|
40
|
+
const mockManager = {
|
|
41
|
+
listDocuments: vi.fn(),
|
|
42
|
+
getDocument: vi.fn(),
|
|
43
|
+
getDocumentContent: vi.fn(),
|
|
44
|
+
getSectionContent: vi.fn(),
|
|
45
|
+
addDocument: vi.fn(),
|
|
46
|
+
updateDocument: vi.fn(),
|
|
47
|
+
deleteDocument: vi.fn(),
|
|
48
|
+
archiveDocument: vi.fn(),
|
|
49
|
+
createSection: vi.fn(),
|
|
50
|
+
updateSection: vi.fn(),
|
|
51
|
+
deleteSection: vi.fn(),
|
|
52
|
+
moveDocument: vi.fn(),
|
|
53
|
+
renameDocument: vi.fn(),
|
|
54
|
+
// Enhanced methods for fingerprint support
|
|
55
|
+
listDocumentFingerprints: vi.fn()
|
|
56
|
+
};
|
|
57
|
+
return mockManager;
|
|
58
|
+
};
|
|
59
|
+
describe('Create Document Workflow Stage 2.5 - Regression Tests', () => {
|
|
60
|
+
let tempDir;
|
|
61
|
+
let mockManager;
|
|
62
|
+
beforeEach(async () => {
|
|
63
|
+
// Create temporary directory for test files
|
|
64
|
+
tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'create-document-workflow-regression-test-'));
|
|
65
|
+
// Configure MCP_WORKSPACE_PATH for fsio PathHandler to use temp directory
|
|
66
|
+
process.env['MCP_WORKSPACE_PATH'] = tempDir;
|
|
67
|
+
mockManager = createMockDocumentManager();
|
|
68
|
+
vi.clearAllMocks();
|
|
69
|
+
// Default successful mocks
|
|
70
|
+
mockGetDocumentManager.mockResolvedValue(mockManager);
|
|
71
|
+
mockAnalyzeNamespacePatterns.mockResolvedValue({
|
|
72
|
+
common_sections: ['Overview', 'Getting Started'],
|
|
73
|
+
frequent_links: ['/api/auth.md'],
|
|
74
|
+
typical_tasks: ['Setup authentication']
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
afterEach(async () => {
|
|
78
|
+
// Clean up temporary directory and all its contents
|
|
79
|
+
try {
|
|
80
|
+
await fs.rm(tempDir, { recursive: true, force: true });
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// Ignore if directory doesn't exist
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
describe('Enhanced Multi-Factor Relevance Scoring', () => {
|
|
87
|
+
it('should return suggestions with factor-based explanations', async () => {
|
|
88
|
+
const enhancedSuggestions = {
|
|
89
|
+
related_documents: [
|
|
90
|
+
{
|
|
91
|
+
path: '/api/auth/oauth.md',
|
|
92
|
+
title: 'OAuth 2.0 Implementation',
|
|
93
|
+
namespace: 'api/auth',
|
|
94
|
+
reason: 'Strong keyword overlap with same namespace structure',
|
|
95
|
+
relevance: 0.95
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
path: '/api/auth/jwt.md',
|
|
99
|
+
title: 'JWT Token Management',
|
|
100
|
+
namespace: 'api/auth',
|
|
101
|
+
reason: 'Good keyword overlap with related namespace structure',
|
|
102
|
+
relevance: 0.73
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
path: '/guides/security.md',
|
|
106
|
+
title: 'Security Best Practices',
|
|
107
|
+
namespace: 'guides',
|
|
108
|
+
reason: 'Shared keywords with recent updates',
|
|
109
|
+
relevance: 0.47
|
|
110
|
+
}
|
|
111
|
+
],
|
|
112
|
+
broken_references: []
|
|
113
|
+
};
|
|
114
|
+
mockAnalyzeDocumentSuggestions.mockResolvedValue(enhancedSuggestions);
|
|
115
|
+
const result = await processSuggestions('api/auth', 'OAuth 2.0 Client Authentication', '---\nkeywords: [oauth, authentication, jwt, api, security]\n---\n\nImplementation guide for OAuth 2.0 client authentication flow with JWT tokens.');
|
|
116
|
+
expect(result.stage).toBe('smart_suggestions');
|
|
117
|
+
const smartResult = result;
|
|
118
|
+
// Verify enhanced factor-based explanations
|
|
119
|
+
expect(smartResult.suggestions.related_documents).toHaveLength(3);
|
|
120
|
+
const oauthDoc = smartResult.suggestions.related_documents[0];
|
|
121
|
+
expect(oauthDoc).toEqual(expect.objectContaining({
|
|
122
|
+
path: '/api/auth/oauth.md',
|
|
123
|
+
title: 'OAuth 2.0 Implementation',
|
|
124
|
+
namespace: 'api/auth',
|
|
125
|
+
reason: 'Strong keyword overlap with same namespace structure',
|
|
126
|
+
relevance: 0.95
|
|
127
|
+
}));
|
|
128
|
+
// Verify factor-based reasons explain actual contributing factors
|
|
129
|
+
expect(oauthDoc?.reason).toMatch(/keyword overlap/);
|
|
130
|
+
expect(oauthDoc?.reason).toMatch(/namespace/);
|
|
131
|
+
const jwtDoc = smartResult.suggestions.related_documents[1];
|
|
132
|
+
expect(jwtDoc?.reason).toMatch(/keyword overlap/);
|
|
133
|
+
expect(jwtDoc?.reason).toMatch(/namespace/);
|
|
134
|
+
const securityDoc = smartResult.suggestions.related_documents[2];
|
|
135
|
+
expect(securityDoc?.reason).toMatch(/keywords/);
|
|
136
|
+
expect(securityDoc?.reason).toMatch(/recent/);
|
|
137
|
+
});
|
|
138
|
+
it('should handle enhanced keyword extraction from frontmatter', async () => {
|
|
139
|
+
const frontmatterEnhancedSuggestions = {
|
|
140
|
+
related_documents: [
|
|
141
|
+
{
|
|
142
|
+
path: '/api/auth.md',
|
|
143
|
+
title: 'Authentication API',
|
|
144
|
+
namespace: 'api',
|
|
145
|
+
reason: 'Explicit keyword matches in api namespace',
|
|
146
|
+
relevance: 0.88
|
|
147
|
+
}
|
|
148
|
+
],
|
|
149
|
+
broken_references: []
|
|
150
|
+
};
|
|
151
|
+
mockAnalyzeDocumentSuggestions.mockResolvedValue(frontmatterEnhancedSuggestions);
|
|
152
|
+
const result = await processSuggestions('api/guides', 'User Authentication Guide', '---\nkeywords: [authentication, users, api, security, login]\ndescription: Complete guide for user authentication\n---\n\n# User Authentication\n\nThis guide covers **important** authentication concepts.');
|
|
153
|
+
const smartResult = result;
|
|
154
|
+
// Verify frontmatter keywords are recognized
|
|
155
|
+
const authDoc = smartResult.suggestions.related_documents[0];
|
|
156
|
+
expect(authDoc?.reason).toMatch(/explicit keyword matches/i);
|
|
157
|
+
expect(authDoc?.relevance).toBeGreaterThan(0.8); // High relevance from explicit keywords
|
|
158
|
+
});
|
|
159
|
+
it('should demonstrate namespace affinity scoring', async () => {
|
|
160
|
+
const namespaceAffinitySuggestions = {
|
|
161
|
+
related_documents: [
|
|
162
|
+
{
|
|
163
|
+
path: '/specs/auth-api.md',
|
|
164
|
+
title: 'Authentication API Specification',
|
|
165
|
+
namespace: 'specs',
|
|
166
|
+
reason: 'Good keyword overlap with same namespace',
|
|
167
|
+
relevance: 0.82
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
path: '/specs/setup.md',
|
|
171
|
+
title: 'API Setup Guide',
|
|
172
|
+
namespace: 'specs',
|
|
173
|
+
reason: 'Shared keywords with same namespace structure',
|
|
174
|
+
relevance: 0.78
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
path: '/reviews/auth.md',
|
|
178
|
+
title: 'Authentication Review',
|
|
179
|
+
namespace: 'reviews',
|
|
180
|
+
reason: 'Shared keywords',
|
|
181
|
+
relevance: 0.35
|
|
182
|
+
}
|
|
183
|
+
],
|
|
184
|
+
broken_references: []
|
|
185
|
+
};
|
|
186
|
+
mockAnalyzeDocumentSuggestions.mockResolvedValue(namespaceAffinitySuggestions);
|
|
187
|
+
const result = await processSuggestions('specs', 'Authentication Implementation', 'Guide for implementing authentication in API applications');
|
|
188
|
+
const smartResult = result;
|
|
189
|
+
// Verify namespace affinity is reflected in relevance and explanations
|
|
190
|
+
const specDoc1 = smartResult.suggestions.related_documents.find(d => d.path === '/specs/auth-api.md');
|
|
191
|
+
const specDoc2 = smartResult.suggestions.related_documents.find(d => d.path === '/specs/setup.md');
|
|
192
|
+
const reviewDoc = smartResult.suggestions.related_documents.find(d => d.namespace === 'reviews');
|
|
193
|
+
// Same namespace documents should have higher relevance
|
|
194
|
+
expect(specDoc1?.relevance).toBeGreaterThan(reviewDoc?.relevance ?? 0);
|
|
195
|
+
expect(specDoc2?.relevance).toBeGreaterThan(reviewDoc?.relevance ?? 0);
|
|
196
|
+
// Explanations should reflect namespace relationships
|
|
197
|
+
expect(specDoc1?.reason).toMatch(/same namespace|namespace/);
|
|
198
|
+
expect(specDoc2?.reason).toMatch(/same namespace|namespace structure/);
|
|
199
|
+
expect(reviewDoc?.reason).not.toMatch(/same namespace/); // Different namespace
|
|
200
|
+
});
|
|
201
|
+
it('should demonstrate recency boost in scoring', async () => {
|
|
202
|
+
const recentUpdatesSuggestions = {
|
|
203
|
+
related_documents: [
|
|
204
|
+
{
|
|
205
|
+
path: '/guides/latest-auth.md',
|
|
206
|
+
title: 'Latest Authentication Methods',
|
|
207
|
+
namespace: 'guides',
|
|
208
|
+
reason: 'Shared keywords with recent updates',
|
|
209
|
+
relevance: 0.65
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
path: '/guides/old-auth.md',
|
|
213
|
+
title: 'Authentication Overview',
|
|
214
|
+
namespace: 'guides',
|
|
215
|
+
reason: 'Shared keywords',
|
|
216
|
+
relevance: 0.52
|
|
217
|
+
}
|
|
218
|
+
],
|
|
219
|
+
broken_references: []
|
|
220
|
+
};
|
|
221
|
+
mockAnalyzeDocumentSuggestions.mockResolvedValue(recentUpdatesSuggestions);
|
|
222
|
+
const result = await processSuggestions('guides', 'Modern Authentication', 'Overview of modern authentication approaches');
|
|
223
|
+
const smartResult = result;
|
|
224
|
+
// Verify recency boost is reflected
|
|
225
|
+
const recentDoc = smartResult.suggestions.related_documents.find(d => d.path === '/guides/latest-auth.md');
|
|
226
|
+
const oldDoc = smartResult.suggestions.related_documents.find(d => d.path === '/guides/old-auth.md');
|
|
227
|
+
expect(recentDoc?.relevance).toBeGreaterThan(oldDoc?.relevance ?? 0);
|
|
228
|
+
expect(recentDoc?.reason).toMatch(/recent/);
|
|
229
|
+
expect(oldDoc?.reason).not.toMatch(/recent/);
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
describe('Structured Broken Reference Detection', () => {
|
|
233
|
+
it('should detect and classify all types of broken references', async () => {
|
|
234
|
+
const comprehensiveBrokenRefs = {
|
|
235
|
+
related_documents: [],
|
|
236
|
+
broken_references: [
|
|
237
|
+
// Missing document type
|
|
238
|
+
{
|
|
239
|
+
reference: '@/missing/document.md',
|
|
240
|
+
type: 'missing_document',
|
|
241
|
+
documentPath: '/missing/document.md',
|
|
242
|
+
reason: 'Document not found: /missing/document.md'
|
|
243
|
+
},
|
|
244
|
+
// Missing document with section
|
|
245
|
+
{
|
|
246
|
+
reference: '@/missing/doc.md#section',
|
|
247
|
+
type: 'missing_document',
|
|
248
|
+
documentPath: '/missing/doc.md',
|
|
249
|
+
sectionSlug: 'section',
|
|
250
|
+
reason: 'Document not found: /missing/doc.md'
|
|
251
|
+
},
|
|
252
|
+
// Missing section in existing document
|
|
253
|
+
{
|
|
254
|
+
reference: '@/api/auth.md#nonexistent-section',
|
|
255
|
+
type: 'missing_section',
|
|
256
|
+
documentPath: '/api/auth.md',
|
|
257
|
+
sectionSlug: 'nonexistent-section',
|
|
258
|
+
reason: "Section 'nonexistent-section' not found in document /api/auth.md"
|
|
259
|
+
},
|
|
260
|
+
// Malformed reference
|
|
261
|
+
{
|
|
262
|
+
reference: '@malformed-ref',
|
|
263
|
+
type: 'malformed',
|
|
264
|
+
reason: 'Failed to parse reference: Invalid reference format'
|
|
265
|
+
},
|
|
266
|
+
// Relative reference converted to absolute
|
|
267
|
+
{
|
|
268
|
+
reference: '@relative-doc',
|
|
269
|
+
type: 'missing_document',
|
|
270
|
+
documentPath: '/relative-doc.md',
|
|
271
|
+
reason: 'Document not found: /relative-doc.md'
|
|
272
|
+
}
|
|
273
|
+
]
|
|
274
|
+
};
|
|
275
|
+
mockAnalyzeDocumentSuggestions.mockResolvedValue(comprehensiveBrokenRefs);
|
|
276
|
+
const result = await processSuggestions('api', 'Reference Test Document', 'Document with various reference types: @/missing/document.md @/api/auth.md#nonexistent-section @malformed-ref @relative-doc');
|
|
277
|
+
const smartResult = result;
|
|
278
|
+
expect(smartResult.suggestions.broken_references).toHaveLength(5);
|
|
279
|
+
// Verify missing document type
|
|
280
|
+
const missingDocRefs = smartResult.suggestions.broken_references.filter(ref => ref.type === 'missing_document');
|
|
281
|
+
expect(missingDocRefs).toHaveLength(3);
|
|
282
|
+
for (const ref of missingDocRefs) {
|
|
283
|
+
expect(ref.documentPath).toBeDefined();
|
|
284
|
+
expect(ref.reason).toContain('Document not found');
|
|
285
|
+
}
|
|
286
|
+
// Verify missing section type
|
|
287
|
+
const missingSectionRefs = smartResult.suggestions.broken_references.filter(ref => ref.type === 'missing_section');
|
|
288
|
+
expect(missingSectionRefs).toHaveLength(1);
|
|
289
|
+
const missingSectionRef = missingSectionRefs[0];
|
|
290
|
+
expect(missingSectionRef?.documentPath).toBe('/api/auth.md');
|
|
291
|
+
expect(missingSectionRef?.sectionSlug).toBe('nonexistent-section');
|
|
292
|
+
expect(missingSectionRef?.reason).toContain("Section 'nonexistent-section' not found");
|
|
293
|
+
// Verify malformed type
|
|
294
|
+
const malformedRefs = smartResult.suggestions.broken_references.filter(ref => ref.type === 'malformed');
|
|
295
|
+
expect(malformedRefs).toHaveLength(1);
|
|
296
|
+
const malformedRef = malformedRefs[0];
|
|
297
|
+
expect(malformedRef?.reason).toContain('Failed to parse reference');
|
|
298
|
+
expect(malformedRef?.documentPath).toBeUndefined(); // Malformed refs may not have valid paths
|
|
299
|
+
// Verify all references have required fields
|
|
300
|
+
for (const ref of smartResult.suggestions.broken_references) {
|
|
301
|
+
expect(ref.reference).toBeDefined();
|
|
302
|
+
expect(ref.type).toBeOneOf(['missing_document', 'missing_section', 'malformed']);
|
|
303
|
+
expect(ref.reason).toBeDefined();
|
|
304
|
+
expect(typeof ref.reason).toBe('string');
|
|
305
|
+
expect(ref.reason.length).toBeGreaterThan(0);
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
it('should handle complex broken reference scenarios with shared reference system', async () => {
|
|
309
|
+
const complexBrokenRefs = {
|
|
310
|
+
related_documents: [],
|
|
311
|
+
broken_references: [
|
|
312
|
+
{
|
|
313
|
+
reference: '@/api/v1/deprecated.md',
|
|
314
|
+
type: 'missing_document',
|
|
315
|
+
documentPath: '/api/v1/deprecated.md',
|
|
316
|
+
reason: 'Document not found: /api/v1/deprecated.md'
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
reference: '@/config/settings.md#database',
|
|
320
|
+
type: 'missing_section',
|
|
321
|
+
documentPath: '/config/settings.md',
|
|
322
|
+
sectionSlug: 'database',
|
|
323
|
+
reason: "Section 'database' not found in document /config/settings.md"
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
reference: '@invalid-format-[test]',
|
|
327
|
+
type: 'malformed',
|
|
328
|
+
reason: 'Failed to parse reference: Invalid reference format'
|
|
329
|
+
}
|
|
330
|
+
]
|
|
331
|
+
};
|
|
332
|
+
mockAnalyzeDocumentSuggestions.mockResolvedValue(complexBrokenRefs);
|
|
333
|
+
const result = await processSuggestions('api', 'Migration Guide', 'Migration guide with references: @/api/v1/deprecated.md @/config/settings.md#database @invalid-format-[test]');
|
|
334
|
+
const smartResult = result;
|
|
335
|
+
// Verify comprehensive broken reference handling
|
|
336
|
+
expect(smartResult.suggestions.broken_references).toHaveLength(3);
|
|
337
|
+
// Check specific reference by path
|
|
338
|
+
const deprecatedRef = smartResult.suggestions.broken_references.find(ref => ref.reference === '@/api/v1/deprecated.md');
|
|
339
|
+
expect(deprecatedRef).toEqual(expect.objectContaining({
|
|
340
|
+
reference: '@/api/v1/deprecated.md',
|
|
341
|
+
type: 'missing_document',
|
|
342
|
+
documentPath: '/api/v1/deprecated.md',
|
|
343
|
+
reason: 'Document not found: /api/v1/deprecated.md'
|
|
344
|
+
}));
|
|
345
|
+
// Check section-specific reference
|
|
346
|
+
const sectionRef = smartResult.suggestions.broken_references.find(ref => ref.reference === '@/config/settings.md#database');
|
|
347
|
+
expect(sectionRef).toEqual(expect.objectContaining({
|
|
348
|
+
reference: '@/config/settings.md#database',
|
|
349
|
+
type: 'missing_section',
|
|
350
|
+
documentPath: '/config/settings.md',
|
|
351
|
+
sectionSlug: 'database',
|
|
352
|
+
reason: "Section 'database' not found in document /config/settings.md"
|
|
353
|
+
}));
|
|
354
|
+
// Check malformed reference
|
|
355
|
+
const malformedRef = smartResult.suggestions.broken_references.find(ref => ref.reference === '@invalid-format-[test]');
|
|
356
|
+
expect(malformedRef?.type).toBe('malformed');
|
|
357
|
+
});
|
|
358
|
+
});
|
|
359
|
+
describe('Integration and Performance Regression Tests', () => {
|
|
360
|
+
it('should handle fingerprint-based optimization without degrading results', async () => {
|
|
361
|
+
// Mock manager with fingerprint support
|
|
362
|
+
const mockManagerWithFingerprints = createMockDocumentManager();
|
|
363
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
364
|
+
mockManagerWithFingerprints.listDocumentFingerprints = vi.fn().mockResolvedValue([
|
|
365
|
+
createMockFingerprint({
|
|
366
|
+
keywords: ['authentication', 'oauth', 'api'],
|
|
367
|
+
namespace: 'api/auth',
|
|
368
|
+
contentHash: 'fingerprint1'
|
|
369
|
+
}),
|
|
370
|
+
createMockFingerprint({
|
|
371
|
+
keywords: ['security', 'auth', 'tokens'],
|
|
372
|
+
namespace: 'security',
|
|
373
|
+
contentHash: 'fingerprint2'
|
|
374
|
+
})
|
|
375
|
+
]);
|
|
376
|
+
mockGetDocumentManager.mockResolvedValue(mockManagerWithFingerprints);
|
|
377
|
+
const fingerprintOptimizedSuggestions = {
|
|
378
|
+
related_documents: [
|
|
379
|
+
{
|
|
380
|
+
path: '/api/auth/oauth.md',
|
|
381
|
+
title: 'OAuth Implementation',
|
|
382
|
+
namespace: 'api/auth',
|
|
383
|
+
reason: 'Strong keyword overlap with same namespace structure (fingerprint-optimized)',
|
|
384
|
+
relevance: 0.91
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
path: '/security/tokens.md',
|
|
388
|
+
title: 'Token Security',
|
|
389
|
+
namespace: 'security',
|
|
390
|
+
reason: 'Good keyword overlap',
|
|
391
|
+
relevance: 0.67
|
|
392
|
+
}
|
|
393
|
+
],
|
|
394
|
+
broken_references: []
|
|
395
|
+
};
|
|
396
|
+
mockAnalyzeDocumentSuggestions.mockResolvedValue(fingerprintOptimizedSuggestions);
|
|
397
|
+
const startTime = Date.now();
|
|
398
|
+
const result = await processSuggestions('api/auth', 'OAuth Authentication', '---\nkeywords: [oauth, authentication, api, security]\n---\n\nOAuth 2.0 authentication implementation');
|
|
399
|
+
const duration = Date.now() - startTime;
|
|
400
|
+
const smartResult = result;
|
|
401
|
+
// Verify results are not degraded by optimization
|
|
402
|
+
expect(smartResult.suggestions.related_documents).toHaveLength(2);
|
|
403
|
+
expect(smartResult.suggestions.related_documents[0]?.relevance).toBeGreaterThan(0.9);
|
|
404
|
+
// Verify performance characteristics (should complete quickly)
|
|
405
|
+
expect(duration).toBeLessThan(100); // Should complete in reasonable time
|
|
406
|
+
// Note: In this test, we're mocking the analyzeDocumentSuggestions function,
|
|
407
|
+
// so the actual fingerprint optimization happens inside that mocked function.
|
|
408
|
+
// The test verifies the results are as expected from fingerprint optimization.
|
|
409
|
+
// The actual fingerprint method calls would be tested in the document-analysis tests.
|
|
410
|
+
});
|
|
411
|
+
it('should gracefully fall back when fingerprint optimization fails', async () => {
|
|
412
|
+
// Mock manager with failing fingerprint support
|
|
413
|
+
const mockManagerWithFailingFingerprints = createMockDocumentManager();
|
|
414
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
415
|
+
mockManagerWithFailingFingerprints.listDocumentFingerprints = vi.fn().mockRejectedValue(new Error('Fingerprint system unavailable'));
|
|
416
|
+
mockGetDocumentManager.mockResolvedValue(mockManagerWithFailingFingerprints);
|
|
417
|
+
const fallbackSuggestions = {
|
|
418
|
+
related_documents: [
|
|
419
|
+
{
|
|
420
|
+
path: '/api/auth.md',
|
|
421
|
+
title: 'Authentication API',
|
|
422
|
+
namespace: 'api',
|
|
423
|
+
reason: 'Related documentation in api (fallback analysis)',
|
|
424
|
+
relevance: 0.75
|
|
425
|
+
}
|
|
426
|
+
],
|
|
427
|
+
broken_references: []
|
|
428
|
+
};
|
|
429
|
+
mockAnalyzeDocumentSuggestions.mockResolvedValue(fallbackSuggestions);
|
|
430
|
+
const result = await processSuggestions('api', 'API Authentication', 'Authentication guide for API applications');
|
|
431
|
+
const smartResult = result;
|
|
432
|
+
// Verify graceful fallback
|
|
433
|
+
expect(smartResult.suggestions.related_documents).toHaveLength(1);
|
|
434
|
+
expect(smartResult.suggestions.related_documents[0]?.reason).toContain('fallback');
|
|
435
|
+
expect(result.stage).toBe('smart_suggestions'); // Should still complete successfully
|
|
436
|
+
});
|
|
437
|
+
it('should maintain backward compatibility with existing create-document behavior', async () => {
|
|
438
|
+
// Test with minimal/basic suggestions that would come from original implementation
|
|
439
|
+
const basicCompatibilitySuggestions = {
|
|
440
|
+
related_documents: [
|
|
441
|
+
{
|
|
442
|
+
path: '/api/docs.md',
|
|
443
|
+
title: 'API Documentation',
|
|
444
|
+
namespace: 'api',
|
|
445
|
+
reason: 'Related documentation in api',
|
|
446
|
+
relevance: 0.6
|
|
447
|
+
}
|
|
448
|
+
],
|
|
449
|
+
broken_references: []
|
|
450
|
+
};
|
|
451
|
+
mockAnalyzeDocumentSuggestions.mockResolvedValue(basicCompatibilitySuggestions);
|
|
452
|
+
const result = await processSuggestions('api', 'Simple API Guide', 'Basic API documentation');
|
|
453
|
+
// Verify basic compatibility structure
|
|
454
|
+
expect(result.stage).toBe('smart_suggestions');
|
|
455
|
+
const smartResult = result;
|
|
456
|
+
expect(smartResult.suggestions).toHaveProperty('related_documents');
|
|
457
|
+
expect(smartResult.suggestions).toHaveProperty('broken_references');
|
|
458
|
+
expect(smartResult.namespace_patterns).toHaveProperty('common_sections');
|
|
459
|
+
expect(smartResult.next_step).toContain("create: true");
|
|
460
|
+
expect(smartResult.example).toEqual({
|
|
461
|
+
namespace: 'api',
|
|
462
|
+
title: 'Simple API Guide',
|
|
463
|
+
overview: 'Basic API documentation',
|
|
464
|
+
create: true
|
|
465
|
+
});
|
|
466
|
+
// Should work with simple suggestions
|
|
467
|
+
expect(smartResult.suggestions.related_documents[0]).toEqual(expect.objectContaining({
|
|
468
|
+
path: '/api/docs.md',
|
|
469
|
+
title: 'API Documentation',
|
|
470
|
+
namespace: 'api',
|
|
471
|
+
reason: 'Related documentation in api',
|
|
472
|
+
relevance: 0.6
|
|
473
|
+
}));
|
|
474
|
+
});
|
|
475
|
+
it('should handle concurrent suggestion analysis efficiently', async () => {
|
|
476
|
+
const mockSuggestions = {
|
|
477
|
+
related_documents: [
|
|
478
|
+
{
|
|
479
|
+
path: '/test/doc.md',
|
|
480
|
+
title: 'Test Document',
|
|
481
|
+
namespace: 'test',
|
|
482
|
+
reason: 'Test documentation',
|
|
483
|
+
relevance: 0.5
|
|
484
|
+
}
|
|
485
|
+
],
|
|
486
|
+
broken_references: []
|
|
487
|
+
};
|
|
488
|
+
mockAnalyzeDocumentSuggestions.mockResolvedValue(mockSuggestions);
|
|
489
|
+
// Simulate multiple parallel calls to test concurrency
|
|
490
|
+
const promises = Array.from({ length: 3 }, (_, i) => processSuggestions(`namespace-${i}`, `Document ${i}`, `Overview for document ${i}`));
|
|
491
|
+
const startTime = Date.now();
|
|
492
|
+
const results = await Promise.all(promises);
|
|
493
|
+
const duration = Date.now() - startTime;
|
|
494
|
+
// All should complete successfully
|
|
495
|
+
expect(results).toHaveLength(3);
|
|
496
|
+
results.forEach((result, i) => {
|
|
497
|
+
expect(result.stage).toBe('smart_suggestions');
|
|
498
|
+
const smartResult = result;
|
|
499
|
+
expect(smartResult.example.namespace).toBe(`namespace-${i}`);
|
|
500
|
+
});
|
|
501
|
+
// Should handle concurrency efficiently
|
|
502
|
+
expect(duration).toBeLessThan(500); // Reasonable time for 3 parallel operations
|
|
503
|
+
// Verify all analysis calls were made
|
|
504
|
+
expect(mockAnalyzeDocumentSuggestions).toHaveBeenCalledTimes(3);
|
|
505
|
+
});
|
|
506
|
+
});
|
|
507
|
+
describe('Real-World Integration Scenarios', () => {
|
|
508
|
+
it('should handle comprehensive real-world scenario with all enhancements', async () => {
|
|
509
|
+
const comprehensiveScenario = {
|
|
510
|
+
related_documents: [
|
|
511
|
+
{
|
|
512
|
+
path: '/api/auth/oauth2.md',
|
|
513
|
+
title: 'OAuth 2.0 Complete Guide',
|
|
514
|
+
namespace: 'api/auth',
|
|
515
|
+
reason: 'Explicit keyword matches with same namespace structure and recent updates',
|
|
516
|
+
relevance: 0.97
|
|
517
|
+
},
|
|
518
|
+
{
|
|
519
|
+
path: '/api/auth/jwt-tokens.md',
|
|
520
|
+
title: 'JWT Token Management',
|
|
521
|
+
namespace: 'api/auth',
|
|
522
|
+
reason: 'Strong keyword overlap with same namespace structure',
|
|
523
|
+
relevance: 0.89
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
path: '/api/specs/auth-endpoints.md',
|
|
527
|
+
title: 'Authentication API Endpoints',
|
|
528
|
+
namespace: 'api/specs',
|
|
529
|
+
reason: 'Good keyword overlap with related namespace structure',
|
|
530
|
+
relevance: 0.81
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
path: '/security/best-practices.md',
|
|
534
|
+
title: 'Authentication Security',
|
|
535
|
+
namespace: 'security',
|
|
536
|
+
reason: 'Shared keywords with recent updates',
|
|
537
|
+
relevance: 0.58
|
|
538
|
+
},
|
|
539
|
+
{
|
|
540
|
+
path: '/frontend/auth-integration.md',
|
|
541
|
+
title: 'Frontend Auth Integration',
|
|
542
|
+
namespace: 'frontend',
|
|
543
|
+
reason: 'Cross-referenced documentation with shared keywords',
|
|
544
|
+
relevance: 0.67
|
|
545
|
+
}
|
|
546
|
+
],
|
|
547
|
+
broken_references: [
|
|
548
|
+
{
|
|
549
|
+
reference: '@/api/auth/deprecated-flow.md',
|
|
550
|
+
type: 'missing_document',
|
|
551
|
+
documentPath: '/api/auth/deprecated-flow.md',
|
|
552
|
+
reason: 'Document not found: /api/auth/deprecated-flow.md'
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
reference: '@/config/oauth-settings.md#client-config',
|
|
556
|
+
type: 'missing_section',
|
|
557
|
+
documentPath: '/config/oauth-settings.md',
|
|
558
|
+
sectionSlug: 'client-config',
|
|
559
|
+
reason: "Section 'client-config' not found in document /config/oauth-settings.md"
|
|
560
|
+
}
|
|
561
|
+
]
|
|
562
|
+
};
|
|
563
|
+
mockAnalyzeDocumentSuggestions.mockResolvedValue(comprehensiveScenario);
|
|
564
|
+
const result = await processSuggestions('api/auth', 'OAuth 2.0 Client Implementation', '---\nkeywords: [oauth2, authentication, client, jwt, security, api]\ndescription: Complete implementation guide\n---\n\n# OAuth 2.0 Client Implementation\n\nThis guide covers **OAuth 2.0** client implementation with **JWT tokens**.\n\nSee @/api/auth/deprecated-flow.md for old approach and @/config/oauth-settings.md#client-config for configuration.');
|
|
565
|
+
const smartResult = result;
|
|
566
|
+
// Verify comprehensive suggestions
|
|
567
|
+
expect(smartResult.suggestions.related_documents).toHaveLength(5);
|
|
568
|
+
expect(smartResult.suggestions.broken_references).toHaveLength(2);
|
|
569
|
+
// Verify high-relevance documents with factor explanations
|
|
570
|
+
const oauthDoc = smartResult.suggestions.related_documents.find(d => d.path === '/api/auth/oauth2.md');
|
|
571
|
+
expect(oauthDoc?.relevance).toBeGreaterThan(0.95);
|
|
572
|
+
expect(oauthDoc?.reason).toMatch(/explicit keyword matches/i);
|
|
573
|
+
expect(oauthDoc?.reason).toMatch(/same namespace/i);
|
|
574
|
+
expect(oauthDoc?.reason).toMatch(/recent/i);
|
|
575
|
+
// Verify namespace affinity progression
|
|
576
|
+
const sameNamespace = smartResult.suggestions.related_documents.filter(d => d.namespace === 'api/auth');
|
|
577
|
+
const relatedNamespace = smartResult.suggestions.related_documents.filter(d => d.namespace === 'api/specs');
|
|
578
|
+
const differentNamespace = smartResult.suggestions.related_documents.filter(d => d.namespace === 'security');
|
|
579
|
+
expect(sameNamespace.every(d => d.relevance > 0.8)).toBe(true);
|
|
580
|
+
expect(relatedNamespace.every(d => d.relevance > 0.7)).toBe(true);
|
|
581
|
+
expect(differentNamespace.every(d => d.relevance < 0.7)).toBe(true);
|
|
582
|
+
// Verify structured broken references
|
|
583
|
+
const missingDoc = smartResult.suggestions.broken_references.find(r => r.type === 'missing_document');
|
|
584
|
+
const missingSection = smartResult.suggestions.broken_references.find(r => r.type === 'missing_section');
|
|
585
|
+
expect(missingDoc?.documentPath).toBe('/api/auth/deprecated-flow.md');
|
|
586
|
+
expect(missingSection?.documentPath).toBe('/config/oauth-settings.md');
|
|
587
|
+
expect(missingSection?.sectionSlug).toBe('client-config');
|
|
588
|
+
// Verify cross-referenced documentation scoring
|
|
589
|
+
const frontendDoc = smartResult.suggestions.related_documents.find(d => d.namespace === 'frontend');
|
|
590
|
+
expect(frontendDoc?.reason).toMatch(/cross-referenced/i);
|
|
591
|
+
});
|
|
592
|
+
it('should handle edge cases and degraded scenarios gracefully', async () => {
|
|
593
|
+
const edgeCaseScenarios = {
|
|
594
|
+
related_documents: [
|
|
595
|
+
{
|
|
596
|
+
path: '/edge/minimal.md',
|
|
597
|
+
title: 'Minimal Document',
|
|
598
|
+
namespace: 'edge',
|
|
599
|
+
reason: 'Related documentation in edge',
|
|
600
|
+
relevance: 0.21 // Just above threshold
|
|
601
|
+
}
|
|
602
|
+
],
|
|
603
|
+
broken_references: [
|
|
604
|
+
{
|
|
605
|
+
reference: '@incomplete-ref',
|
|
606
|
+
type: 'malformed',
|
|
607
|
+
reason: 'Failed to parse reference: Incomplete reference format'
|
|
608
|
+
}
|
|
609
|
+
]
|
|
610
|
+
};
|
|
611
|
+
mockAnalyzeDocumentSuggestions.mockResolvedValue(edgeCaseScenarios);
|
|
612
|
+
const result = await processSuggestions('edge', 'Edge Case Test', 'Document with minimal content and @incomplete-ref');
|
|
613
|
+
const smartResult = result;
|
|
614
|
+
// Should handle minimal results gracefully
|
|
615
|
+
expect(smartResult.suggestions.related_documents).toHaveLength(1);
|
|
616
|
+
expect(smartResult.suggestions.broken_references).toHaveLength(1);
|
|
617
|
+
expect(smartResult.stage).toBe('smart_suggestions');
|
|
618
|
+
// Should provide valid recovery guidance
|
|
619
|
+
expect(smartResult.next_step).toContain("create: true");
|
|
620
|
+
expect(smartResult.example).toEqual({
|
|
621
|
+
namespace: 'edge',
|
|
622
|
+
title: 'Edge Case Test',
|
|
623
|
+
overview: 'Document with minimal content and @incomplete-ref',
|
|
624
|
+
create: true
|
|
625
|
+
});
|
|
626
|
+
});
|
|
627
|
+
});
|
|
628
|
+
describe('Error Handling and Recovery', () => {
|
|
629
|
+
it('should handle analysis failures with partial results', async () => {
|
|
630
|
+
// Simulate partial failure scenario
|
|
631
|
+
mockAnalyzeDocumentSuggestions.mockRejectedValue(new Error('Analysis failed'));
|
|
632
|
+
const result = await processSuggestions('test', 'Test Document', 'Test content');
|
|
633
|
+
// Should return error fallback with recovery guidance
|
|
634
|
+
expect(result.stage).toBe('error_fallback');
|
|
635
|
+
const errorResult = result;
|
|
636
|
+
expect(errorResult.error).toBe('Failed to analyze suggestions');
|
|
637
|
+
expect(errorResult.details).toContain('Analysis failed');
|
|
638
|
+
expect(errorResult.recovery_steps).toContain("Call again with 'create: true' to skip suggestions and create the document");
|
|
639
|
+
expect(errorResult.example).toEqual({
|
|
640
|
+
namespace: 'test',
|
|
641
|
+
title: 'Test Document',
|
|
642
|
+
overview: 'Test content',
|
|
643
|
+
create: true
|
|
644
|
+
});
|
|
645
|
+
});
|
|
646
|
+
it('should provide helpful guidance when document manager fails', async () => {
|
|
647
|
+
mockGetDocumentManager.mockRejectedValue(new Error('Document manager initialization failed'));
|
|
648
|
+
const result = await processSuggestions('test', 'Test Document', 'Test content');
|
|
649
|
+
const errorResult = result;
|
|
650
|
+
expect(errorResult.details).toContain('Document manager initialization failed');
|
|
651
|
+
expect(errorResult.help).toContain('You can still proceed with document creation');
|
|
652
|
+
});
|
|
653
|
+
});
|
|
654
|
+
});
|
|
655
|
+
//# sourceMappingURL=create-document-workflow-regression.test.js.map
|