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,624 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DocumentCache - Section Content Access Tests
|
|
3
|
+
*
|
|
4
|
+
* Tests the simplified section content access pattern with slugIndex validation.
|
|
5
|
+
* Verifies that section content caching has been completely removed.
|
|
6
|
+
*/
|
|
7
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
8
|
+
import { DocumentCache, AccessContext } from './document-cache.js';
|
|
9
|
+
import { promises as fs } from 'node:fs';
|
|
10
|
+
import path from 'node:path';
|
|
11
|
+
import os from 'node:os';
|
|
12
|
+
describe('DocumentCache - Section Content Access', () => {
|
|
13
|
+
let cache;
|
|
14
|
+
let tempDir;
|
|
15
|
+
let testDocPath;
|
|
16
|
+
beforeEach(async () => {
|
|
17
|
+
// Create temp directory for test documents
|
|
18
|
+
tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'doc-cache-test-'));
|
|
19
|
+
cache = new DocumentCache(tempDir, { enableWatching: false });
|
|
20
|
+
// Create test document with sections
|
|
21
|
+
testDocPath = path.join(tempDir, 'test-doc.md');
|
|
22
|
+
const testContent = `# Test Document
|
|
23
|
+
|
|
24
|
+
## Introduction
|
|
25
|
+
This is the introduction section.
|
|
26
|
+
|
|
27
|
+
## Features
|
|
28
|
+
This section describes features.
|
|
29
|
+
|
|
30
|
+
### Advanced Features
|
|
31
|
+
Nested section content.
|
|
32
|
+
|
|
33
|
+
## Conclusion
|
|
34
|
+
Final thoughts.
|
|
35
|
+
`;
|
|
36
|
+
await fs.writeFile(testDocPath, testContent, 'utf8');
|
|
37
|
+
});
|
|
38
|
+
afterEach(async () => {
|
|
39
|
+
// Cleanup
|
|
40
|
+
await cache.destroy();
|
|
41
|
+
await fs.rm(tempDir, { recursive: true, force: true });
|
|
42
|
+
});
|
|
43
|
+
describe('getSectionContent with slugIndex validation', () => {
|
|
44
|
+
it('should retrieve section content using flat slug', async () => {
|
|
45
|
+
const content = await cache.getSectionContent('/test-doc.md', 'introduction');
|
|
46
|
+
expect(content).toBeTruthy();
|
|
47
|
+
expect(content).toContain('This is the introduction section');
|
|
48
|
+
});
|
|
49
|
+
it('should retrieve nested section content', async () => {
|
|
50
|
+
const content = await cache.getSectionContent('/test-doc.md', 'advanced-features');
|
|
51
|
+
expect(content).toBeTruthy();
|
|
52
|
+
expect(content).toContain('Nested section content');
|
|
53
|
+
});
|
|
54
|
+
it('should return null for invalid flat slug', async () => {
|
|
55
|
+
const content = await cache.getSectionContent('/test-doc.md', 'nonexistent');
|
|
56
|
+
expect(content).toBeNull();
|
|
57
|
+
});
|
|
58
|
+
it('should handle hierarchical slug lookup', async () => {
|
|
59
|
+
// This requires findTargetHierarchicalHeading to work
|
|
60
|
+
const content = await cache.getSectionContent('/test-doc.md', 'features/advanced-features');
|
|
61
|
+
// Should fall back to hierarchical search
|
|
62
|
+
expect(content).toBeTruthy();
|
|
63
|
+
expect(content).toContain('Nested section content');
|
|
64
|
+
});
|
|
65
|
+
it('should return null for invalid hierarchical slug', async () => {
|
|
66
|
+
const content = await cache.getSectionContent('/test-doc.md', 'invalid/path');
|
|
67
|
+
expect(content).toBeNull();
|
|
68
|
+
});
|
|
69
|
+
it('should return null for non-existent document', async () => {
|
|
70
|
+
const content = await cache.getSectionContent('/nonexistent.md', 'introduction');
|
|
71
|
+
expect(content).toBeNull();
|
|
72
|
+
});
|
|
73
|
+
it('should validate with slugIndex before attempting hierarchical lookup', async () => {
|
|
74
|
+
// Test that slugIndex validation happens first (performance optimization)
|
|
75
|
+
const content = await cache.getSectionContent('/test-doc.md', 'features');
|
|
76
|
+
expect(content).toBeTruthy();
|
|
77
|
+
expect(content).toContain('This section describes features');
|
|
78
|
+
});
|
|
79
|
+
it('should NOT cache section content between calls', async () => {
|
|
80
|
+
// First access
|
|
81
|
+
const content1 = await cache.getSectionContent('/test-doc.md', 'introduction');
|
|
82
|
+
expect(content1).toBeTruthy();
|
|
83
|
+
// Modify the document
|
|
84
|
+
const newContent = `# Test Document
|
|
85
|
+
|
|
86
|
+
## Introduction
|
|
87
|
+
MODIFIED CONTENT
|
|
88
|
+
|
|
89
|
+
## Features
|
|
90
|
+
This section describes features.
|
|
91
|
+
`;
|
|
92
|
+
await fs.writeFile(testDocPath, newContent, 'utf8');
|
|
93
|
+
// Invalidate document cache to simulate file change
|
|
94
|
+
cache.invalidateDocument('/test-doc.md');
|
|
95
|
+
// Second access should reflect changes (no stale cache)
|
|
96
|
+
const content2 = await cache.getSectionContent('/test-doc.md', 'introduction');
|
|
97
|
+
expect(content2).toContain('MODIFIED CONTENT');
|
|
98
|
+
expect(content2).not.toContain('This is the introduction section');
|
|
99
|
+
});
|
|
100
|
+
it('should handle sections with special characters in slugs', async () => {
|
|
101
|
+
const specialDoc = path.join(tempDir, 'special.md');
|
|
102
|
+
const specialContent = `# Special Document
|
|
103
|
+
|
|
104
|
+
## API & Configuration
|
|
105
|
+
Content with special characters.
|
|
106
|
+
|
|
107
|
+
## 100% Coverage
|
|
108
|
+
Numeric prefix content.
|
|
109
|
+
`;
|
|
110
|
+
await fs.writeFile(specialDoc, specialContent, 'utf8');
|
|
111
|
+
const content1 = await cache.getSectionContent('/special.md', 'api--configuration');
|
|
112
|
+
expect(content1).toBeTruthy();
|
|
113
|
+
expect(content1).toContain('Content with special characters');
|
|
114
|
+
const content2 = await cache.getSectionContent('/special.md', '100-coverage');
|
|
115
|
+
expect(content2).toBeTruthy();
|
|
116
|
+
expect(content2).toContain('Numeric prefix content');
|
|
117
|
+
});
|
|
118
|
+
it('should handle deeply nested hierarchical paths', async () => {
|
|
119
|
+
const deepDoc = path.join(tempDir, 'deep.md');
|
|
120
|
+
const deepContent = `# Deep Document
|
|
121
|
+
|
|
122
|
+
## Level 1
|
|
123
|
+
|
|
124
|
+
### Level 2
|
|
125
|
+
|
|
126
|
+
#### Level 3
|
|
127
|
+
Deep nested content.
|
|
128
|
+
`;
|
|
129
|
+
await fs.writeFile(deepDoc, deepContent, 'utf8');
|
|
130
|
+
const content = await cache.getSectionContent('/deep.md', 'level-1/level-2/level-3');
|
|
131
|
+
expect(content).toBeTruthy();
|
|
132
|
+
expect(content).toContain('Deep nested content');
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
describe('Removed cache infrastructure', () => {
|
|
136
|
+
it('should not have sections cache in document', async () => {
|
|
137
|
+
const doc = await cache.getDocument('/test-doc.md');
|
|
138
|
+
expect(doc).toBeTruthy();
|
|
139
|
+
// Verify sections cache is removed
|
|
140
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
141
|
+
expect(doc.sections).toBeUndefined();
|
|
142
|
+
});
|
|
143
|
+
it('should not expose atomicCacheUpdate method', () => {
|
|
144
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
145
|
+
expect(cache.atomicCacheUpdate).toBeUndefined();
|
|
146
|
+
});
|
|
147
|
+
it('should not have cacheGenerationCounter field', () => {
|
|
148
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
149
|
+
expect(cache.cacheGenerationCounter).toBeUndefined();
|
|
150
|
+
});
|
|
151
|
+
it('should not populate sections during getDocument', async () => {
|
|
152
|
+
const doc = await cache.getDocument('/test-doc.md');
|
|
153
|
+
expect(doc).toBeTruthy();
|
|
154
|
+
// Sections should not be pre-populated
|
|
155
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
156
|
+
expect(doc.sections).toBeUndefined();
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
describe('Performance characteristics', () => {
|
|
160
|
+
it('should use O(1) slugIndex validation', async () => {
|
|
161
|
+
const doc = await cache.getDocument('/test-doc.md');
|
|
162
|
+
expect(doc).toBeTruthy();
|
|
163
|
+
if (doc) {
|
|
164
|
+
// Verify slugIndex exists and has expected entries
|
|
165
|
+
expect(doc.slugIndex).toBeDefined();
|
|
166
|
+
expect(doc.slugIndex.has('introduction')).toBe(true);
|
|
167
|
+
expect(doc.slugIndex.has('features')).toBe(true);
|
|
168
|
+
expect(doc.slugIndex.has('advanced-features')).toBe(true);
|
|
169
|
+
expect(doc.slugIndex.has('conclusion')).toBe(true);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
it('should fail fast for invalid slugs using slugIndex', async () => {
|
|
173
|
+
const startTime = Date.now();
|
|
174
|
+
const content = await cache.getSectionContent('/test-doc.md', 'completely-invalid-slug');
|
|
175
|
+
const duration = Date.now() - startTime;
|
|
176
|
+
expect(content).toBeNull();
|
|
177
|
+
// Should be very fast (< 50ms) since it uses slugIndex O(1) lookup
|
|
178
|
+
expect(duration).toBeLessThan(50);
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
describe('Error handling', () => {
|
|
182
|
+
it('should handle filesystem errors gracefully', async () => {
|
|
183
|
+
// Create document then delete file manually
|
|
184
|
+
const doc = await cache.getDocument('/test-doc.md');
|
|
185
|
+
expect(doc).toBeTruthy();
|
|
186
|
+
// Delete the file
|
|
187
|
+
await fs.unlink(testDocPath);
|
|
188
|
+
// Invalidate cache to force reload attempt
|
|
189
|
+
cache.invalidateDocument('/test-doc.md');
|
|
190
|
+
// Should return null for missing file
|
|
191
|
+
const content = await cache.getSectionContent('/test-doc.md', 'introduction');
|
|
192
|
+
expect(content).toBeNull();
|
|
193
|
+
});
|
|
194
|
+
it('should handle empty section slug', async () => {
|
|
195
|
+
const content = await cache.getSectionContent('/test-doc.md', '');
|
|
196
|
+
expect(content).toBeNull();
|
|
197
|
+
});
|
|
198
|
+
it('should handle malformed hierarchical paths', async () => {
|
|
199
|
+
const content1 = await cache.getSectionContent('/test-doc.md', '/invalid/path');
|
|
200
|
+
expect(content1).toBeNull();
|
|
201
|
+
const content2 = await cache.getSectionContent('/test-doc.md', 'path//double-slash');
|
|
202
|
+
expect(content2).toBeNull();
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
describe('Integration with existing cache behavior', () => {
|
|
206
|
+
it('should respect document cache invalidation', async () => {
|
|
207
|
+
// Load document
|
|
208
|
+
const doc1 = await cache.getDocument('/test-doc.md');
|
|
209
|
+
expect(doc1).toBeTruthy();
|
|
210
|
+
// Get section content
|
|
211
|
+
const content1 = await cache.getSectionContent('/test-doc.md', 'introduction');
|
|
212
|
+
expect(content1).toContain('This is the introduction section');
|
|
213
|
+
// Modify file and invalidate
|
|
214
|
+
const newContent = `# Test Document
|
|
215
|
+
|
|
216
|
+
## Introduction
|
|
217
|
+
Updated introduction.
|
|
218
|
+
`;
|
|
219
|
+
await fs.writeFile(testDocPath, newContent, 'utf8');
|
|
220
|
+
cache.invalidateDocument('/test-doc.md');
|
|
221
|
+
// Document should reload
|
|
222
|
+
const doc2 = await cache.getDocument('/test-doc.md');
|
|
223
|
+
expect(doc2).toBeTruthy();
|
|
224
|
+
if (doc1 && doc2) {
|
|
225
|
+
expect(doc2.metadata.contentHash).not.toBe(doc1.metadata.contentHash);
|
|
226
|
+
}
|
|
227
|
+
// Section content should reflect changes
|
|
228
|
+
const content2 = await cache.getSectionContent('/test-doc.md', 'introduction');
|
|
229
|
+
expect(content2).toContain('Updated introduction');
|
|
230
|
+
});
|
|
231
|
+
it('should work with LRU eviction policy', async () => {
|
|
232
|
+
// Create small cache for eviction testing
|
|
233
|
+
const smallCache = new DocumentCache(tempDir, {
|
|
234
|
+
enableWatching: false,
|
|
235
|
+
maxCacheSize: 2
|
|
236
|
+
});
|
|
237
|
+
try {
|
|
238
|
+
// Create multiple documents
|
|
239
|
+
const doc1Path = path.join(tempDir, 'doc1.md');
|
|
240
|
+
const doc2Path = path.join(tempDir, 'doc2.md');
|
|
241
|
+
const doc3Path = path.join(tempDir, 'doc3.md');
|
|
242
|
+
await fs.writeFile(doc1Path, '# Doc 1\n## Section A\nContent A', 'utf8');
|
|
243
|
+
await fs.writeFile(doc2Path, '# Doc 2\n## Section B\nContent B', 'utf8');
|
|
244
|
+
await fs.writeFile(doc3Path, '# Doc 3\n## Section C\nContent C', 'utf8');
|
|
245
|
+
// Load doc1 and doc2
|
|
246
|
+
await smallCache.getDocument('/doc1.md');
|
|
247
|
+
await smallCache.getDocument('/doc2.md');
|
|
248
|
+
// Load doc3 - should evict doc1
|
|
249
|
+
await smallCache.getDocument('/doc3.md');
|
|
250
|
+
// Access section from doc3 (should work)
|
|
251
|
+
const content3 = await smallCache.getSectionContent('/doc3.md', 'section-c');
|
|
252
|
+
expect(content3).toContain('Content C');
|
|
253
|
+
// Access section from doc1 (should reload document)
|
|
254
|
+
const content1 = await smallCache.getSectionContent('/doc1.md', 'section-a');
|
|
255
|
+
expect(content1).toContain('Content A');
|
|
256
|
+
}
|
|
257
|
+
finally {
|
|
258
|
+
await smallCache.destroy();
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
describe('DocumentCache - Search-Aware Cache Optimization', () => {
|
|
264
|
+
let cache;
|
|
265
|
+
let tempDir;
|
|
266
|
+
beforeEach(async () => {
|
|
267
|
+
// Create temp directory for test documents
|
|
268
|
+
tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'doc-cache-boost-test-'));
|
|
269
|
+
});
|
|
270
|
+
afterEach(async () => {
|
|
271
|
+
// Cleanup
|
|
272
|
+
await cache.destroy();
|
|
273
|
+
await fs.rm(tempDir, { recursive: true, force: true });
|
|
274
|
+
});
|
|
275
|
+
describe('Access context tracking', () => {
|
|
276
|
+
it('should accept optional context parameter in getDocument', async () => {
|
|
277
|
+
cache = new DocumentCache(tempDir, { enableWatching: false });
|
|
278
|
+
const docPath = path.join(tempDir, 'test.md');
|
|
279
|
+
await fs.writeFile(docPath, '# Test\nContent', 'utf8');
|
|
280
|
+
// All these should work without throwing
|
|
281
|
+
const doc1 = await cache.getDocument('/test.md'); // Default DIRECT
|
|
282
|
+
const doc2 = await cache.getDocument('/test.md', AccessContext.DIRECT);
|
|
283
|
+
const doc3 = await cache.getDocument('/test.md', AccessContext.SEARCH);
|
|
284
|
+
const doc4 = await cache.getDocument('/test.md', AccessContext.REFERENCE);
|
|
285
|
+
expect(doc1).toBeTruthy();
|
|
286
|
+
expect(doc2).toBeTruthy();
|
|
287
|
+
expect(doc3).toBeTruthy();
|
|
288
|
+
expect(doc4).toBeTruthy();
|
|
289
|
+
});
|
|
290
|
+
it('should default to DIRECT context when no context provided', async () => {
|
|
291
|
+
cache = new DocumentCache(tempDir, { enableWatching: false });
|
|
292
|
+
const docPath = path.join(tempDir, 'test.md');
|
|
293
|
+
await fs.writeFile(docPath, '# Test\nContent', 'utf8');
|
|
294
|
+
const doc = await cache.getDocument('/test.md');
|
|
295
|
+
expect(doc).toBeTruthy();
|
|
296
|
+
// Should use default boost factor (1.0) for DIRECT access
|
|
297
|
+
});
|
|
298
|
+
});
|
|
299
|
+
describe('Boost factors and eviction resistance', () => {
|
|
300
|
+
it('should boost search-accessed documents (3x eviction resistance)', async () => {
|
|
301
|
+
// Small cache to trigger eviction
|
|
302
|
+
cache = new DocumentCache(tempDir, {
|
|
303
|
+
enableWatching: false,
|
|
304
|
+
maxCacheSize: 5
|
|
305
|
+
});
|
|
306
|
+
// Create multiple documents
|
|
307
|
+
const docs = [];
|
|
308
|
+
for (let i = 1; i <= 10; i++) {
|
|
309
|
+
const docPath = path.join(tempDir, `doc${i}.md`);
|
|
310
|
+
await fs.writeFile(docPath, `# Doc ${i}\nContent ${i}`, 'utf8');
|
|
311
|
+
docs.push(`/doc${i}.md`);
|
|
312
|
+
}
|
|
313
|
+
// Fill cache with direct-access documents (1-5)
|
|
314
|
+
for (let i = 1; i <= 5; i++) {
|
|
315
|
+
await cache.getDocument(`/doc${i}.md`, AccessContext.DIRECT);
|
|
316
|
+
}
|
|
317
|
+
// Access one document via SEARCH context (should get 3x boost)
|
|
318
|
+
await cache.getDocument('/doc3.md', AccessContext.SEARCH);
|
|
319
|
+
// Now add 3 more documents with DIRECT access to trigger eviction
|
|
320
|
+
await cache.getDocument('/doc6.md', AccessContext.DIRECT);
|
|
321
|
+
await cache.getDocument('/doc7.md', AccessContext.DIRECT);
|
|
322
|
+
await cache.getDocument('/doc8.md', AccessContext.DIRECT);
|
|
323
|
+
// doc3 (search-accessed) should still be in cache due to boost
|
|
324
|
+
const cachedPaths = cache.getCachedPaths();
|
|
325
|
+
expect(cachedPaths).toContain('/doc3.md'); // Search-boosted, should survive
|
|
326
|
+
// Older direct-access docs should be evicted
|
|
327
|
+
// The exact eviction order depends on timestamps, but doc1 and doc2 should be gone
|
|
328
|
+
expect(cachedPaths).not.toContain('/doc1.md');
|
|
329
|
+
expect(cachedPaths).not.toContain('/doc2.md');
|
|
330
|
+
});
|
|
331
|
+
it('should boost reference-loaded documents (2x eviction resistance)', async () => {
|
|
332
|
+
cache = new DocumentCache(tempDir, {
|
|
333
|
+
enableWatching: false,
|
|
334
|
+
maxCacheSize: 5
|
|
335
|
+
});
|
|
336
|
+
// Create documents
|
|
337
|
+
for (let i = 1; i <= 8; i++) {
|
|
338
|
+
const docPath = path.join(tempDir, `doc${i}.md`);
|
|
339
|
+
await fs.writeFile(docPath, `# Doc ${i}\nContent ${i}`, 'utf8');
|
|
340
|
+
}
|
|
341
|
+
// Fill cache with direct-access documents
|
|
342
|
+
for (let i = 1; i <= 5; i++) {
|
|
343
|
+
await cache.getDocument(`/doc${i}.md`, AccessContext.DIRECT);
|
|
344
|
+
}
|
|
345
|
+
// Access one via REFERENCE context (2x boost)
|
|
346
|
+
await cache.getDocument('/doc3.md', AccessContext.REFERENCE);
|
|
347
|
+
// Add more direct-access documents
|
|
348
|
+
await cache.getDocument('/doc6.md', AccessContext.DIRECT);
|
|
349
|
+
await cache.getDocument('/doc7.md', AccessContext.DIRECT);
|
|
350
|
+
// doc3 (reference-loaded) should still be cached
|
|
351
|
+
const cachedPaths = cache.getCachedPaths();
|
|
352
|
+
expect(cachedPaths).toContain('/doc3.md');
|
|
353
|
+
});
|
|
354
|
+
it('should apply correct boost factors to different contexts', async () => {
|
|
355
|
+
cache = new DocumentCache(tempDir, {
|
|
356
|
+
enableWatching: false,
|
|
357
|
+
maxCacheSize: 10
|
|
358
|
+
});
|
|
359
|
+
const docPath = path.join(tempDir, 'test.md');
|
|
360
|
+
await fs.writeFile(docPath, '# Test\nContent', 'utf8');
|
|
361
|
+
// Access with different contexts
|
|
362
|
+
await cache.getDocument('/test.md', AccessContext.DIRECT);
|
|
363
|
+
await cache.getDocument('/test.md', AccessContext.SEARCH);
|
|
364
|
+
await cache.getDocument('/test.md', AccessContext.REFERENCE);
|
|
365
|
+
// All should work - exact boost verification requires internal inspection
|
|
366
|
+
expect(cache.getCachedPaths()).toContain('/test.md');
|
|
367
|
+
});
|
|
368
|
+
});
|
|
369
|
+
describe('Eviction scenario - search vs direct', () => {
|
|
370
|
+
it('should prioritize search-accessed documents during eviction', async () => {
|
|
371
|
+
cache = new DocumentCache(tempDir, {
|
|
372
|
+
enableWatching: false,
|
|
373
|
+
maxCacheSize: 3
|
|
374
|
+
});
|
|
375
|
+
// Create test documents
|
|
376
|
+
for (let i = 1; i <= 6; i++) {
|
|
377
|
+
const docPath = path.join(tempDir, `doc${i}.md`);
|
|
378
|
+
await fs.writeFile(docPath, `# Doc ${i}\nContent ${i}`, 'utf8');
|
|
379
|
+
}
|
|
380
|
+
// Load doc1, doc2, doc3 with DIRECT access
|
|
381
|
+
await cache.getDocument('/doc1.md', AccessContext.DIRECT);
|
|
382
|
+
await cache.getDocument('/doc2.md', AccessContext.DIRECT);
|
|
383
|
+
await cache.getDocument('/doc3.md', AccessContext.DIRECT);
|
|
384
|
+
// Re-access doc2 with SEARCH context (boost it)
|
|
385
|
+
await cache.getDocument('/doc2.md', AccessContext.SEARCH);
|
|
386
|
+
// Add new documents to trigger eviction
|
|
387
|
+
await cache.getDocument('/doc4.md', AccessContext.DIRECT);
|
|
388
|
+
await cache.getDocument('/doc5.md', AccessContext.DIRECT);
|
|
389
|
+
const cachedPaths = cache.getCachedPaths();
|
|
390
|
+
// doc2 (search-boosted) should still be in cache
|
|
391
|
+
expect(cachedPaths).toContain('/doc2.md');
|
|
392
|
+
// Cache size should be respected
|
|
393
|
+
expect(cachedPaths.length).toBeLessThanOrEqual(3);
|
|
394
|
+
});
|
|
395
|
+
});
|
|
396
|
+
describe('Custom boost factors', () => {
|
|
397
|
+
it('should allow custom boost factors via configuration', async () => {
|
|
398
|
+
cache = new DocumentCache(tempDir, {
|
|
399
|
+
enableWatching: false,
|
|
400
|
+
maxCacheSize: 5,
|
|
401
|
+
boostFactors: {
|
|
402
|
+
search: 5.0, // Higher boost
|
|
403
|
+
direct: 1.0,
|
|
404
|
+
reference: 1.5 // Lower boost
|
|
405
|
+
}
|
|
406
|
+
});
|
|
407
|
+
const docPath = path.join(tempDir, 'test.md');
|
|
408
|
+
await fs.writeFile(docPath, '# Test\nContent', 'utf8');
|
|
409
|
+
// Should accept custom boost configuration
|
|
410
|
+
const doc = await cache.getDocument('/test.md', AccessContext.SEARCH);
|
|
411
|
+
expect(doc).toBeTruthy();
|
|
412
|
+
});
|
|
413
|
+
it('should use default boost factors when not configured', async () => {
|
|
414
|
+
cache = new DocumentCache(tempDir, {
|
|
415
|
+
enableWatching: false,
|
|
416
|
+
maxCacheSize: 5
|
|
417
|
+
// No boostFactors specified - should use defaults
|
|
418
|
+
});
|
|
419
|
+
const docPath = path.join(tempDir, 'test.md');
|
|
420
|
+
await fs.writeFile(docPath, '# Test\nContent', 'utf8');
|
|
421
|
+
const doc = await cache.getDocument('/test.md', AccessContext.SEARCH);
|
|
422
|
+
expect(doc).toBeTruthy();
|
|
423
|
+
// Default: search=3.0, direct=1.0, reference=2.0
|
|
424
|
+
});
|
|
425
|
+
it('should merge partial boost factor configuration with defaults', async () => {
|
|
426
|
+
cache = new DocumentCache(tempDir, {
|
|
427
|
+
enableWatching: false,
|
|
428
|
+
maxCacheSize: 5,
|
|
429
|
+
boostFactors: {
|
|
430
|
+
search: 4.0 // Override only search, others use defaults
|
|
431
|
+
}
|
|
432
|
+
});
|
|
433
|
+
const docPath = path.join(tempDir, 'test.md');
|
|
434
|
+
await fs.writeFile(docPath, '# Test\nContent', 'utf8');
|
|
435
|
+
const doc = await cache.getDocument('/test.md', AccessContext.SEARCH);
|
|
436
|
+
expect(doc).toBeTruthy();
|
|
437
|
+
});
|
|
438
|
+
});
|
|
439
|
+
describe('Cache statistics with boost info', () => {
|
|
440
|
+
it('should include boost information in cache statistics', async () => {
|
|
441
|
+
cache = new DocumentCache(tempDir, {
|
|
442
|
+
enableWatching: false,
|
|
443
|
+
maxCacheSize: 10
|
|
444
|
+
});
|
|
445
|
+
// Create and load documents with different contexts
|
|
446
|
+
for (let i = 1; i <= 5; i++) {
|
|
447
|
+
const docPath = path.join(tempDir, `doc${i}.md`);
|
|
448
|
+
await fs.writeFile(docPath, `# Doc ${i}\nContent ${i}`, 'utf8');
|
|
449
|
+
}
|
|
450
|
+
await cache.getDocument('/doc1.md', AccessContext.DIRECT);
|
|
451
|
+
await cache.getDocument('/doc2.md', AccessContext.SEARCH);
|
|
452
|
+
await cache.getDocument('/doc3.md', AccessContext.REFERENCE);
|
|
453
|
+
await cache.getDocument('/doc4.md', AccessContext.DIRECT);
|
|
454
|
+
await cache.getDocument('/doc5.md', AccessContext.SEARCH);
|
|
455
|
+
const stats = cache.getStats();
|
|
456
|
+
expect(stats.size).toBe(5);
|
|
457
|
+
expect(stats.maxSize).toBe(10);
|
|
458
|
+
// Check if boost-related stats are present
|
|
459
|
+
if ('boostedDocuments' in stats) {
|
|
460
|
+
// Verify boost stats exist
|
|
461
|
+
expect(stats).toHaveProperty('boostedDocuments');
|
|
462
|
+
}
|
|
463
|
+
});
|
|
464
|
+
});
|
|
465
|
+
describe('Backward compatibility', () => {
|
|
466
|
+
it('should maintain existing API when context not provided', async () => {
|
|
467
|
+
cache = new DocumentCache(tempDir, { enableWatching: false });
|
|
468
|
+
const docPath = path.join(tempDir, 'test.md');
|
|
469
|
+
await fs.writeFile(docPath, '# Test\n## Section\nContent', 'utf8');
|
|
470
|
+
// All existing usage patterns should work
|
|
471
|
+
const doc = await cache.getDocument('/test.md');
|
|
472
|
+
expect(doc).toBeTruthy();
|
|
473
|
+
const section = await cache.getSectionContent('/test.md', 'section');
|
|
474
|
+
expect(section).toContain('Content');
|
|
475
|
+
const paths = cache.getCachedPaths();
|
|
476
|
+
expect(paths).toContain('/test.md');
|
|
477
|
+
const stats = cache.getStats();
|
|
478
|
+
expect(stats.size).toBe(1);
|
|
479
|
+
});
|
|
480
|
+
it('should not break existing eviction behavior for direct access', async () => {
|
|
481
|
+
cache = new DocumentCache(tempDir, {
|
|
482
|
+
enableWatching: false,
|
|
483
|
+
maxCacheSize: 3
|
|
484
|
+
});
|
|
485
|
+
// Create documents
|
|
486
|
+
for (let i = 1; i <= 5; i++) {
|
|
487
|
+
const docPath = path.join(tempDir, `doc${i}.md`);
|
|
488
|
+
await fs.writeFile(docPath, `# Doc ${i}\nContent ${i}`, 'utf8');
|
|
489
|
+
}
|
|
490
|
+
// Load with default (DIRECT) context
|
|
491
|
+
await cache.getDocument('/doc1.md');
|
|
492
|
+
await cache.getDocument('/doc2.md');
|
|
493
|
+
await cache.getDocument('/doc3.md');
|
|
494
|
+
// Load more - should evict oldest
|
|
495
|
+
await cache.getDocument('/doc4.md');
|
|
496
|
+
const cachedPaths = cache.getCachedPaths();
|
|
497
|
+
expect(cachedPaths.length).toBe(3);
|
|
498
|
+
expect(cachedPaths).not.toContain('/doc1.md'); // Oldest, should be evicted
|
|
499
|
+
});
|
|
500
|
+
it('should preserve all existing DocumentCache methods', async () => {
|
|
501
|
+
cache = new DocumentCache(tempDir, { enableWatching: false });
|
|
502
|
+
const docPath = path.join(tempDir, 'test.md');
|
|
503
|
+
await fs.writeFile(docPath, '# Test\nContent', 'utf8');
|
|
504
|
+
// Test all public methods still work
|
|
505
|
+
const doc = await cache.getDocument('/test.md');
|
|
506
|
+
expect(doc).toBeTruthy();
|
|
507
|
+
const section = await cache.getSectionContent('/test.md', 'test');
|
|
508
|
+
expect(section).toBeTruthy();
|
|
509
|
+
const invalidated = cache.invalidateDocument('/test.md');
|
|
510
|
+
expect(invalidated).toBe(true);
|
|
511
|
+
const paths = cache.getCachedPaths();
|
|
512
|
+
expect(Array.isArray(paths)).toBe(true);
|
|
513
|
+
const stats = cache.getStats();
|
|
514
|
+
expect(stats).toHaveProperty('size');
|
|
515
|
+
expect(stats).toHaveProperty('maxSize');
|
|
516
|
+
cache.clear();
|
|
517
|
+
expect(cache.getCachedPaths().length).toBe(0);
|
|
518
|
+
});
|
|
519
|
+
});
|
|
520
|
+
describe('Performance validation scenario', () => {
|
|
521
|
+
it('should keep search-accessed documents cached for follow-up reads', async () => {
|
|
522
|
+
cache = new DocumentCache(tempDir, {
|
|
523
|
+
enableWatching: false,
|
|
524
|
+
maxCacheSize: 10
|
|
525
|
+
});
|
|
526
|
+
// Create 100 documents
|
|
527
|
+
const allDocs = [];
|
|
528
|
+
for (let i = 1; i <= 30; i++) {
|
|
529
|
+
const docPath = path.join(tempDir, `doc${i}.md`);
|
|
530
|
+
await fs.writeFile(docPath, `# Doc ${i}\nKeyword: test`, 'utf8');
|
|
531
|
+
allDocs.push(`/doc${i}.md`);
|
|
532
|
+
}
|
|
533
|
+
// Simulate search operation - access 20 documents with SEARCH context
|
|
534
|
+
const searchResults = [];
|
|
535
|
+
for (let i = 1; i <= 20; i++) {
|
|
536
|
+
await cache.getDocument(`/doc${i}.md`, AccessContext.SEARCH);
|
|
537
|
+
searchResults.push(`/doc${i}.md`);
|
|
538
|
+
}
|
|
539
|
+
// Now access 15 more documents with DIRECT context (should trigger eviction)
|
|
540
|
+
for (let i = 21; i <= 30; i++) {
|
|
541
|
+
await cache.getDocument(`/doc${i}.md`, AccessContext.DIRECT);
|
|
542
|
+
}
|
|
543
|
+
// Verify: Many search-accessed docs should still be in cache
|
|
544
|
+
const cachedPaths = cache.getCachedPaths();
|
|
545
|
+
const cachedSearchDocs = searchResults.filter(path => cachedPaths.includes(path));
|
|
546
|
+
// With 3x boost, search-accessed docs should survive better than direct
|
|
547
|
+
// At least 50% of search-accessed docs should still be cached
|
|
548
|
+
expect(cachedSearchDocs.length).toBeGreaterThanOrEqual(searchResults.length * 0.5);
|
|
549
|
+
});
|
|
550
|
+
it('should demonstrate performance improvement for post-search access', async () => {
|
|
551
|
+
cache = new DocumentCache(tempDir, {
|
|
552
|
+
enableWatching: false,
|
|
553
|
+
maxCacheSize: 10
|
|
554
|
+
});
|
|
555
|
+
// Create documents
|
|
556
|
+
for (let i = 1; i <= 15; i++) {
|
|
557
|
+
const docPath = path.join(tempDir, `doc${i}.md`);
|
|
558
|
+
await fs.writeFile(docPath, `# Doc ${i}\n## Section\nContent ${i}`, 'utf8');
|
|
559
|
+
}
|
|
560
|
+
// Simulate search accessing 10 documents
|
|
561
|
+
for (let i = 1; i <= 10; i++) {
|
|
562
|
+
await cache.getDocument(`/doc${i}.md`, AccessContext.SEARCH);
|
|
563
|
+
}
|
|
564
|
+
// Add 5 more direct-access documents
|
|
565
|
+
for (let i = 11; i <= 15; i++) {
|
|
566
|
+
await cache.getDocument(`/doc${i}.md`, AccessContext.DIRECT);
|
|
567
|
+
}
|
|
568
|
+
// Now user wants to read a search result - should still be cached
|
|
569
|
+
const doc5 = await cache.getDocument('/doc5.md'); // No re-parse needed
|
|
570
|
+
expect(doc5).toBeTruthy();
|
|
571
|
+
const cachedPaths = cache.getCachedPaths();
|
|
572
|
+
expect(cachedPaths).toContain('/doc5.md'); // Should be cached from search
|
|
573
|
+
});
|
|
574
|
+
});
|
|
575
|
+
describe('Edge cases', () => {
|
|
576
|
+
it('should handle rapid context switches for same document', async () => {
|
|
577
|
+
cache = new DocumentCache(tempDir, { enableWatching: false });
|
|
578
|
+
const docPath = path.join(tempDir, 'test.md');
|
|
579
|
+
await fs.writeFile(docPath, '# Test\nContent', 'utf8');
|
|
580
|
+
// Rapidly access with different contexts
|
|
581
|
+
await cache.getDocument('/test.md', AccessContext.DIRECT);
|
|
582
|
+
await cache.getDocument('/test.md', AccessContext.SEARCH);
|
|
583
|
+
await cache.getDocument('/test.md', AccessContext.REFERENCE);
|
|
584
|
+
await cache.getDocument('/test.md', AccessContext.DIRECT);
|
|
585
|
+
// Should handle gracefully, doc should remain cached
|
|
586
|
+
expect(cache.getCachedPaths()).toContain('/test.md');
|
|
587
|
+
});
|
|
588
|
+
it('should handle eviction with all boosted documents', async () => {
|
|
589
|
+
cache = new DocumentCache(tempDir, {
|
|
590
|
+
enableWatching: false,
|
|
591
|
+
maxCacheSize: 3
|
|
592
|
+
});
|
|
593
|
+
// Create documents
|
|
594
|
+
for (let i = 1; i <= 5; i++) {
|
|
595
|
+
const docPath = path.join(tempDir, `doc${i}.md`);
|
|
596
|
+
await fs.writeFile(docPath, `# Doc ${i}\nContent ${i}`, 'utf8');
|
|
597
|
+
}
|
|
598
|
+
// Load all with SEARCH context (all boosted)
|
|
599
|
+
for (let i = 1; i <= 5; i++) {
|
|
600
|
+
await cache.getDocument(`/doc${i}.md`, AccessContext.SEARCH);
|
|
601
|
+
}
|
|
602
|
+
// Even with all boosted, should respect cache size
|
|
603
|
+
const cachedPaths = cache.getCachedPaths();
|
|
604
|
+
expect(cachedPaths.length).toBe(3);
|
|
605
|
+
});
|
|
606
|
+
it('should handle zero boost factor gracefully', async () => {
|
|
607
|
+
cache = new DocumentCache(tempDir, {
|
|
608
|
+
enableWatching: false,
|
|
609
|
+
maxCacheSize: 5,
|
|
610
|
+
boostFactors: {
|
|
611
|
+
direct: 0, // Edge case: zero boost
|
|
612
|
+
search: 1.0,
|
|
613
|
+
reference: 1.0
|
|
614
|
+
}
|
|
615
|
+
});
|
|
616
|
+
const docPath = path.join(tempDir, 'test.md');
|
|
617
|
+
await fs.writeFile(docPath, '# Test\nContent', 'utf8');
|
|
618
|
+
// Should handle zero boost without crashing
|
|
619
|
+
const doc = await cache.getDocument('/test.md', AccessContext.DIRECT);
|
|
620
|
+
expect(doc).toBeTruthy();
|
|
621
|
+
});
|
|
622
|
+
});
|
|
623
|
+
});
|
|
624
|
+
//# sourceMappingURL=document-cache.test.js.map
|