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
package/dist/fsio.js
ADDED
|
@@ -0,0 +1,506 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File I/O utilities with comprehensive security validation and mtime precondition checking
|
|
3
|
+
*
|
|
4
|
+
* Security Features:
|
|
5
|
+
* - Path traversal protection (prevents ../ and absolute paths outside docs root)
|
|
6
|
+
* - File size limits and validation
|
|
7
|
+
* - File name sanitization (removes dangerous characters)
|
|
8
|
+
* - File extension validation
|
|
9
|
+
* - Content length validation
|
|
10
|
+
* - Path length validation
|
|
11
|
+
* - Character encoding normalization
|
|
12
|
+
*/
|
|
13
|
+
import { promises as fs } from 'node:fs';
|
|
14
|
+
import { resolve, relative, extname, basename, dirname } from 'node:path';
|
|
15
|
+
import { ERROR_CODES, DEFAULT_LIMITS } from './constants/defaults.js';
|
|
16
|
+
import { PathHandler } from './utils/path-handler.js';
|
|
17
|
+
import { loadConfig } from './config.js';
|
|
18
|
+
import { SecurityAuditLogger } from './utils/security-audit-logger.js';
|
|
19
|
+
import { createRequire } from 'node:module';
|
|
20
|
+
const require = createRequire(import.meta.url);
|
|
21
|
+
const packageJson = require('../package.json');
|
|
22
|
+
/**
|
|
23
|
+
* Creates a custom error with code, context, and version information
|
|
24
|
+
*/
|
|
25
|
+
function createError(message, code, context) {
|
|
26
|
+
const error = new Error(message);
|
|
27
|
+
return Object.assign(error, {
|
|
28
|
+
code,
|
|
29
|
+
context: { ...context, version: packageJson.version }
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Global path handler instance for security validation
|
|
34
|
+
* Initialized lazily when first needed
|
|
35
|
+
*/
|
|
36
|
+
let pathHandler = null;
|
|
37
|
+
let initializationPromise = null;
|
|
38
|
+
/**
|
|
39
|
+
* Global security audit logger instance
|
|
40
|
+
*/
|
|
41
|
+
const securityAuditLogger = new SecurityAuditLogger();
|
|
42
|
+
/**
|
|
43
|
+
* Initialize path handler with current configuration
|
|
44
|
+
* Uses promise-based synchronization to prevent race conditions
|
|
45
|
+
*/
|
|
46
|
+
async function getPathHandler() {
|
|
47
|
+
// Return existing instance if available
|
|
48
|
+
if (pathHandler !== null) {
|
|
49
|
+
return pathHandler;
|
|
50
|
+
}
|
|
51
|
+
// Wait for in-progress initialization
|
|
52
|
+
if (initializationPromise !== null) {
|
|
53
|
+
return await initializationPromise;
|
|
54
|
+
}
|
|
55
|
+
// Start initialization
|
|
56
|
+
initializationPromise = (async () => {
|
|
57
|
+
try {
|
|
58
|
+
const config = loadConfig();
|
|
59
|
+
pathHandler = new PathHandler(config.workspaceBasePath);
|
|
60
|
+
return pathHandler;
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
initializationPromise = null;
|
|
64
|
+
}
|
|
65
|
+
})();
|
|
66
|
+
return await initializationPromise;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Maximum allowed path length (to prevent resource exhaustion)
|
|
70
|
+
*/
|
|
71
|
+
const MAX_PATH_LENGTH = 4096;
|
|
72
|
+
/**
|
|
73
|
+
* Allowed file extensions for security
|
|
74
|
+
*/
|
|
75
|
+
const ALLOWED_EXTENSIONS = new Set(['.md', '.markdown', '.txt']);
|
|
76
|
+
/**
|
|
77
|
+
* Minimum valid timestamp (Unix epoch) for mtime validation
|
|
78
|
+
* Allows all valid Unix timestamps including archived documents and legacy systems
|
|
79
|
+
*/
|
|
80
|
+
const MIN_VALID_TIMESTAMP = 0;
|
|
81
|
+
/**
|
|
82
|
+
* Maximum valid timestamp (1 year in the future from now)
|
|
83
|
+
* This prevents unreasonably large timestamps (e.g., year 9999)
|
|
84
|
+
*/
|
|
85
|
+
const MAX_VALID_TIMESTAMP = Date.now() + (365 * 24 * 60 * 60 * 1000);
|
|
86
|
+
/**
|
|
87
|
+
* Dangerous characters that should be removed from file names
|
|
88
|
+
* Includes null bytes, control characters, and OS-specific dangerous chars
|
|
89
|
+
* Note: Forward slash (/) is allowed for path separators
|
|
90
|
+
*/
|
|
91
|
+
// eslint-disable-next-line no-control-regex
|
|
92
|
+
const DANGEROUS_CHARS_REGEX = /[\x00-\x1f\x7f\\:*?"<>|]/g;
|
|
93
|
+
/**
|
|
94
|
+
* Validate and sanitize a file path for security
|
|
95
|
+
*
|
|
96
|
+
* @param filePath - The file path to validate
|
|
97
|
+
* @param operation - The operation being performed (for error context)
|
|
98
|
+
* @returns Sanitized absolute path
|
|
99
|
+
* @throws SpecDocsError if path is invalid or unsafe
|
|
100
|
+
*/
|
|
101
|
+
async function validateAndSanitizePath(filePath, operation) {
|
|
102
|
+
// Input validation
|
|
103
|
+
if (typeof filePath !== 'string') {
|
|
104
|
+
throw createError(`Invalid path type: expected string, got ${typeof filePath}`, ERROR_CODES.INVALID_OPERATION, { operation, pathType: typeof filePath });
|
|
105
|
+
}
|
|
106
|
+
// Check path length to prevent resource exhaustion
|
|
107
|
+
if (filePath.length > MAX_PATH_LENGTH) {
|
|
108
|
+
throw createError(`Path too long: ${filePath.length} characters exceeds maximum of ${MAX_PATH_LENGTH}`, ERROR_CODES.INVALID_OPERATION, { operation, pathLength: filePath.length, maxLength: MAX_PATH_LENGTH });
|
|
109
|
+
}
|
|
110
|
+
// Remove dangerous characters and normalize
|
|
111
|
+
const sanitizedPath = filePath
|
|
112
|
+
.replace(DANGEROUS_CHARS_REGEX, '')
|
|
113
|
+
.normalize('NFC') // Unicode normalization
|
|
114
|
+
.trim();
|
|
115
|
+
// Check for empty path after sanitization
|
|
116
|
+
if (sanitizedPath === '') {
|
|
117
|
+
throw createError('Path is empty or contains only dangerous characters', ERROR_CODES.INVALID_OPERATION, { operation, originalPath: filePath });
|
|
118
|
+
}
|
|
119
|
+
// Use PathHandler for comprehensive path validation
|
|
120
|
+
const handler = await getPathHandler();
|
|
121
|
+
try {
|
|
122
|
+
// This validates against directory traversal and normalizes the path
|
|
123
|
+
const normalizedPath = handler.processUserPath(sanitizedPath);
|
|
124
|
+
const absolutePath = handler.getAbsolutePath(normalizedPath);
|
|
125
|
+
// Additional security check: ensure resolved path is still within bounds
|
|
126
|
+
const resolvedPath = resolve(absolutePath);
|
|
127
|
+
const docsBasePath = resolve(handler.getWorkspaceBasePath());
|
|
128
|
+
if (resolvedPath.startsWith(docsBasePath) === false) {
|
|
129
|
+
// Log security violation for audit trail
|
|
130
|
+
securityAuditLogger.logSecurityViolation({
|
|
131
|
+
type: 'PATH_TRAVERSAL',
|
|
132
|
+
operation,
|
|
133
|
+
attemptedPath: filePath,
|
|
134
|
+
resolvedPath: relative(docsBasePath, resolvedPath),
|
|
135
|
+
timestamp: new Date().toISOString()
|
|
136
|
+
});
|
|
137
|
+
throw createError('Path traversal attempt detected', ERROR_CODES.INVALID_OPERATION, {
|
|
138
|
+
operation,
|
|
139
|
+
attemptedPath: filePath,
|
|
140
|
+
resolvedPath: relative(docsBasePath, resolvedPath),
|
|
141
|
+
securityViolation: 'PATH_TRAVERSAL'
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
// Validate file extension
|
|
145
|
+
const extension = extname(resolvedPath).toLowerCase();
|
|
146
|
+
if (extension !== '' && !ALLOWED_EXTENSIONS.has(extension)) {
|
|
147
|
+
// Log security violation for audit trail
|
|
148
|
+
securityAuditLogger.logSecurityViolation({
|
|
149
|
+
type: 'INVALID_EXTENSION',
|
|
150
|
+
operation,
|
|
151
|
+
attemptedPath: filePath,
|
|
152
|
+
resolvedPath: relative(docsBasePath, resolvedPath),
|
|
153
|
+
timestamp: new Date().toISOString()
|
|
154
|
+
});
|
|
155
|
+
throw createError(`File extension not allowed: ${extension}`, ERROR_CODES.INVALID_OPERATION, {
|
|
156
|
+
operation,
|
|
157
|
+
path: filePath,
|
|
158
|
+
extension,
|
|
159
|
+
allowedExtensions: Array.from(ALLOWED_EXTENSIONS),
|
|
160
|
+
securityViolation: 'INVALID_EXTENSION'
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
return resolvedPath;
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
if (error instanceof Error && 'code' in error) {
|
|
167
|
+
// Re-throw our security errors
|
|
168
|
+
throw error;
|
|
169
|
+
}
|
|
170
|
+
// Convert PathHandler errors to security errors
|
|
171
|
+
throw createError(`Path validation failed: ${error instanceof Error ? error.message : String(error)}`, ERROR_CODES.INVALID_OPERATION, {
|
|
172
|
+
operation,
|
|
173
|
+
path: filePath,
|
|
174
|
+
securityViolation: 'PATH_VALIDATION_FAILED'
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Validate file size against configured limits
|
|
180
|
+
*
|
|
181
|
+
* @param size - File size in bytes
|
|
182
|
+
* @param operation - Operation being performed
|
|
183
|
+
* @param path - File path for error context
|
|
184
|
+
* @throws SpecDocsError if file size exceeds limits
|
|
185
|
+
*/
|
|
186
|
+
function validateFileSize(size, operation, path) {
|
|
187
|
+
if (size > DEFAULT_LIMITS.MAX_FILE_SIZE) {
|
|
188
|
+
throw createError(`File size ${size} bytes exceeds maximum allowed size of ${DEFAULT_LIMITS.MAX_FILE_SIZE} bytes`, ERROR_CODES.FILE_TOO_LARGE, {
|
|
189
|
+
operation,
|
|
190
|
+
path: basename(path), // Only include filename for security
|
|
191
|
+
fileSize: size,
|
|
192
|
+
maxSize: DEFAULT_LIMITS.MAX_FILE_SIZE,
|
|
193
|
+
securityViolation: 'FILE_SIZE_EXCEEDED'
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Validate content length for write operations
|
|
199
|
+
*
|
|
200
|
+
* @param content - Content to validate
|
|
201
|
+
* @param operation - Operation being performed
|
|
202
|
+
* @param path - File path for error context
|
|
203
|
+
* @throws SpecDocsError if content is too large
|
|
204
|
+
*/
|
|
205
|
+
function validateContentLength(content, operation, path) {
|
|
206
|
+
const sizeInBytes = Buffer.byteLength(content, 'utf8');
|
|
207
|
+
validateFileSize(sizeInBytes, operation, path);
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Internal helper to read file snapshot with basic validation only
|
|
211
|
+
* Used by trusted internal code that has already validated paths
|
|
212
|
+
*
|
|
213
|
+
* @param absolutePath - Already validated absolute path
|
|
214
|
+
* @param operation - Operation name for error context
|
|
215
|
+
* @returns FileSnapshot with content and modification time
|
|
216
|
+
* @throws SpecDocsError for file system errors
|
|
217
|
+
*/
|
|
218
|
+
async function readFileSnapshotInternal(absolutePath, operation) {
|
|
219
|
+
try {
|
|
220
|
+
const [stat, buffer] = await Promise.all([
|
|
221
|
+
fs.stat(absolutePath),
|
|
222
|
+
fs.readFile(absolutePath)
|
|
223
|
+
]);
|
|
224
|
+
// Validate file size
|
|
225
|
+
validateFileSize(stat.size, operation, absolutePath);
|
|
226
|
+
// Convert buffer to string with proper encoding
|
|
227
|
+
const content = buffer.toString('utf8');
|
|
228
|
+
return {
|
|
229
|
+
content,
|
|
230
|
+
mtimeMs: stat.mtimeMs,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
if (error instanceof Error && 'code' in error) {
|
|
235
|
+
if (error.code === 'ENOENT') {
|
|
236
|
+
throw createError(`File not found: ${basename(absolutePath)}`, ERROR_CODES.FILE_NOT_FOUND, {
|
|
237
|
+
operation,
|
|
238
|
+
path: basename(absolutePath), // Only include filename for security
|
|
239
|
+
originalPath: absolutePath
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
if (error.code === 'EACCES') {
|
|
243
|
+
throw createError(`Access denied: ${basename(absolutePath)}`, ERROR_CODES.INVALID_OPERATION, {
|
|
244
|
+
operation,
|
|
245
|
+
path: basename(absolutePath),
|
|
246
|
+
securityViolation: 'ACCESS_DENIED'
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
if (error.code === 'EISDIR') {
|
|
250
|
+
throw createError(`Path is a directory, not a file: ${basename(absolutePath)}`, ERROR_CODES.INVALID_OPERATION, {
|
|
251
|
+
operation,
|
|
252
|
+
path: basename(absolutePath),
|
|
253
|
+
securityViolation: 'INVALID_FILE_TYPE'
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
if (error.code === ERROR_CODES.FILE_TOO_LARGE || error.code === ERROR_CODES.INVALID_OPERATION) {
|
|
257
|
+
throw error; // Re-throw our custom security errors
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
// Log unexpected errors for monitoring
|
|
261
|
+
console.warn(`Unexpected error in ${operation}:`, {
|
|
262
|
+
error: error instanceof Error ? error.message : String(error),
|
|
263
|
+
path: basename(absolutePath)
|
|
264
|
+
});
|
|
265
|
+
throw error;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Reads a file and returns its content with modification time
|
|
270
|
+
*
|
|
271
|
+
* Security Features:
|
|
272
|
+
* - Path validation and sanitization
|
|
273
|
+
* - File size validation
|
|
274
|
+
* - Extension validation
|
|
275
|
+
* - Path traversal protection
|
|
276
|
+
*
|
|
277
|
+
* @param path - File path to read (will be validated and sanitized)
|
|
278
|
+
* @param options - Optional configuration for trusted internal callers
|
|
279
|
+
* @returns FileSnapshot with content and modification time
|
|
280
|
+
* @throws SpecDocsError for security violations or file system errors
|
|
281
|
+
*/
|
|
282
|
+
export async function readFileSnapshot(path, options) {
|
|
283
|
+
const operation = 'readFileSnapshot';
|
|
284
|
+
// If called from trusted internal code with absolute path, bypass validation
|
|
285
|
+
if (options?.bypassValidation === true) {
|
|
286
|
+
return await readFileSnapshotInternal(path, operation);
|
|
287
|
+
}
|
|
288
|
+
// Validate and sanitize the path for external/user-provided paths
|
|
289
|
+
const safePath = await validateAndSanitizePath(path, operation);
|
|
290
|
+
return await readFileSnapshotInternal(safePath, operation);
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Internal helper to write file with mtime check and basic validation only
|
|
294
|
+
* Used by trusted internal code that has already validated paths
|
|
295
|
+
*
|
|
296
|
+
* @param absolutePath - Already validated absolute path
|
|
297
|
+
* @param expectedMtimeMs - Expected modification time to prevent conflicts
|
|
298
|
+
* @param content - Content to write
|
|
299
|
+
* @param operation - Operation name for error context
|
|
300
|
+
* @throws SpecDocsError for file system errors
|
|
301
|
+
*/
|
|
302
|
+
async function writeFileIfUnchangedInternal(absolutePath, expectedMtimeMs, content, operation) {
|
|
303
|
+
// Validate content size before attempting to write
|
|
304
|
+
validateContentLength(content, operation, absolutePath);
|
|
305
|
+
// Validate expectedMtimeMs parameter
|
|
306
|
+
if (typeof expectedMtimeMs !== 'number' ||
|
|
307
|
+
!Number.isFinite(expectedMtimeMs) ||
|
|
308
|
+
expectedMtimeMs < MIN_VALID_TIMESTAMP ||
|
|
309
|
+
expectedMtimeMs > MAX_VALID_TIMESTAMP) {
|
|
310
|
+
throw createError(`Invalid expectedMtimeMs: ${expectedMtimeMs}. Must be a valid timestamp between Unix epoch (0) and 1 year in the future.`, ERROR_CODES.INVALID_OPERATION, {
|
|
311
|
+
operation,
|
|
312
|
+
expectedMtimeMs,
|
|
313
|
+
validRange: {
|
|
314
|
+
min: MIN_VALID_TIMESTAMP,
|
|
315
|
+
max: MAX_VALID_TIMESTAMP
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
try {
|
|
320
|
+
const stat = await fs.stat(absolutePath);
|
|
321
|
+
if (stat.mtimeMs !== expectedMtimeMs) {
|
|
322
|
+
throw createError('File has been modified by another process', ERROR_CODES.PRECONDITION_FAILED, {
|
|
323
|
+
operation,
|
|
324
|
+
path: basename(absolutePath), // Only include filename for security
|
|
325
|
+
expectedMtimeMs,
|
|
326
|
+
actualMtimeMs: stat.mtimeMs,
|
|
327
|
+
timeDifference: stat.mtimeMs - expectedMtimeMs
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
// Ensure parent directory exists
|
|
331
|
+
const parentDir = dirname(absolutePath);
|
|
332
|
+
await fs.mkdir(parentDir, { recursive: true });
|
|
333
|
+
// Atomic write: write to temp file, then rename
|
|
334
|
+
const tempPath = `${absolutePath}.tmp.${Date.now()}`;
|
|
335
|
+
try {
|
|
336
|
+
await fs.writeFile(tempPath, content, 'utf8');
|
|
337
|
+
await fs.rename(tempPath, absolutePath);
|
|
338
|
+
}
|
|
339
|
+
catch (writeError) {
|
|
340
|
+
// Clean up temp file if write failed
|
|
341
|
+
try {
|
|
342
|
+
await fs.unlink(tempPath);
|
|
343
|
+
}
|
|
344
|
+
catch {
|
|
345
|
+
// Ignore cleanup errors
|
|
346
|
+
}
|
|
347
|
+
throw writeError;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
catch (error) {
|
|
351
|
+
if (error instanceof Error && 'code' in error) {
|
|
352
|
+
if (error.code === 'ENOENT') {
|
|
353
|
+
throw createError(`File not found: ${basename(absolutePath)}`, ERROR_CODES.FILE_NOT_FOUND, {
|
|
354
|
+
operation,
|
|
355
|
+
path: basename(absolutePath),
|
|
356
|
+
originalPath: absolutePath
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
if (error.code === 'EACCES') {
|
|
360
|
+
throw createError(`Access denied: ${basename(absolutePath)}`, ERROR_CODES.INVALID_OPERATION, {
|
|
361
|
+
operation,
|
|
362
|
+
path: basename(absolutePath),
|
|
363
|
+
securityViolation: 'ACCESS_DENIED'
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
if (error.code === 'ENOSPC') {
|
|
367
|
+
throw createError('Insufficient disk space', ERROR_CODES.INVALID_OPERATION, {
|
|
368
|
+
operation,
|
|
369
|
+
path: basename(absolutePath),
|
|
370
|
+
securityViolation: 'DISK_FULL'
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
if (error.code === ERROR_CODES.PRECONDITION_FAILED ||
|
|
374
|
+
error.code === ERROR_CODES.FILE_TOO_LARGE ||
|
|
375
|
+
error.code === ERROR_CODES.INVALID_OPERATION) {
|
|
376
|
+
throw error; // Re-throw our custom security errors
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
// Log unexpected errors for monitoring
|
|
380
|
+
console.warn(`Unexpected error in ${operation}:`, {
|
|
381
|
+
error: error instanceof Error ? error.message : String(error),
|
|
382
|
+
path: basename(absolutePath)
|
|
383
|
+
});
|
|
384
|
+
throw error;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Writes a file only if the modification time matches the expected value
|
|
389
|
+
* This prevents concurrent modification conflicts
|
|
390
|
+
*
|
|
391
|
+
* Security Features:
|
|
392
|
+
* - Path validation and sanitization
|
|
393
|
+
* - Content size validation
|
|
394
|
+
* - Extension validation
|
|
395
|
+
* - Path traversal protection
|
|
396
|
+
* - Atomic write operations
|
|
397
|
+
*
|
|
398
|
+
* @param path - File path to write (will be validated and sanitized)
|
|
399
|
+
* @param expectedMtimeMs - Expected modification time to prevent conflicts
|
|
400
|
+
* @param content - Content to write (will be validated for size)
|
|
401
|
+
* @param options - Optional configuration for trusted internal callers
|
|
402
|
+
* @throws SpecDocsError for security violations or file system errors
|
|
403
|
+
*/
|
|
404
|
+
export async function writeFileIfUnchanged(path, expectedMtimeMs, content, options) {
|
|
405
|
+
const operation = 'writeFileIfUnchanged';
|
|
406
|
+
// If called from trusted internal code with absolute path, bypass validation
|
|
407
|
+
if (options?.bypassValidation === true) {
|
|
408
|
+
return await writeFileIfUnchangedInternal(path, expectedMtimeMs, content, operation);
|
|
409
|
+
}
|
|
410
|
+
// Validate and sanitize the path for external/user-provided paths
|
|
411
|
+
const safePath = await validateAndSanitizePath(path, operation);
|
|
412
|
+
return await writeFileIfUnchangedInternal(safePath, expectedMtimeMs, content, operation);
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Checks if a file exists and is readable
|
|
416
|
+
*
|
|
417
|
+
* Security Features:
|
|
418
|
+
* - Path validation and sanitization
|
|
419
|
+
* - Extension validation
|
|
420
|
+
* - Path traversal protection
|
|
421
|
+
*
|
|
422
|
+
* @param path - File path to check (will be validated and sanitized)
|
|
423
|
+
* @returns Promise<boolean> indicating if file exists and is readable
|
|
424
|
+
* @throws SpecDocsError for security violations
|
|
425
|
+
*/
|
|
426
|
+
export async function fileExists(path) {
|
|
427
|
+
const operation = 'fileExists';
|
|
428
|
+
try {
|
|
429
|
+
// Validate and sanitize the path
|
|
430
|
+
const safePath = await validateAndSanitizePath(path, operation);
|
|
431
|
+
// Check if file exists and is readable
|
|
432
|
+
await fs.access(safePath, fs.constants.R_OK);
|
|
433
|
+
return true;
|
|
434
|
+
}
|
|
435
|
+
catch (error) {
|
|
436
|
+
// If it's a security error, re-throw it
|
|
437
|
+
if (error instanceof Error && 'code' in error && error.code === ERROR_CODES.INVALID_OPERATION) {
|
|
438
|
+
throw error;
|
|
439
|
+
}
|
|
440
|
+
// For ENOENT or access errors, return false (file doesn't exist or isn't readable)
|
|
441
|
+
return false;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Creates directory if it doesn't exist
|
|
446
|
+
*
|
|
447
|
+
* Security Features:
|
|
448
|
+
* - Path validation and sanitization
|
|
449
|
+
* - Path traversal protection
|
|
450
|
+
* - Parent directory validation
|
|
451
|
+
*
|
|
452
|
+
* @param dirPath - Directory path to create (will be validated and sanitized)
|
|
453
|
+
* @throws SpecDocsError for security violations or file system errors
|
|
454
|
+
*/
|
|
455
|
+
export async function ensureDirectoryExists(dirPath) {
|
|
456
|
+
const operation = 'ensureDirectoryExists';
|
|
457
|
+
// Basic input validation - remove only the most dangerous characters
|
|
458
|
+
// but be more permissive for directory operations used by system components
|
|
459
|
+
if (typeof dirPath !== 'string' || dirPath.trim() === '') {
|
|
460
|
+
throw createError('Directory path must be a non-empty string', ERROR_CODES.INVALID_OPERATION, { operation, providedPath: dirPath });
|
|
461
|
+
}
|
|
462
|
+
// Sanitize only the most dangerous characters, but allow most path characters
|
|
463
|
+
// eslint-disable-next-line no-control-regex
|
|
464
|
+
const dangerousCharsForDirs = /[\x00-\x1f\x7f]/g;
|
|
465
|
+
const sanitizedPath = dirPath
|
|
466
|
+
.replace(dangerousCharsForDirs, '')
|
|
467
|
+
.normalize('NFC')
|
|
468
|
+
.trim();
|
|
469
|
+
if (sanitizedPath === '') {
|
|
470
|
+
throw createError('Directory path contains only dangerous characters', ERROR_CODES.INVALID_OPERATION, { operation, originalPath: dirPath });
|
|
471
|
+
}
|
|
472
|
+
// Resolve the path to prevent simple directory traversal
|
|
473
|
+
const absolutePath = resolve(sanitizedPath);
|
|
474
|
+
try {
|
|
475
|
+
await fs.mkdir(absolutePath, { recursive: true });
|
|
476
|
+
}
|
|
477
|
+
catch (error) {
|
|
478
|
+
if (error instanceof Error && 'code' in error) {
|
|
479
|
+
// Ignore EEXIST errors - directory already exists
|
|
480
|
+
if (error.code === 'EEXIST') {
|
|
481
|
+
return;
|
|
482
|
+
}
|
|
483
|
+
if (error.code === 'EACCES') {
|
|
484
|
+
throw createError(`Access denied creating directory: ${basename(absolutePath)}`, ERROR_CODES.INVALID_OPERATION, {
|
|
485
|
+
operation,
|
|
486
|
+
path: basename(absolutePath),
|
|
487
|
+
securityViolation: 'ACCESS_DENIED'
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
if (error.code === 'ENOSPC') {
|
|
491
|
+
throw createError('Insufficient disk space to create directory', ERROR_CODES.INVALID_OPERATION, {
|
|
492
|
+
operation,
|
|
493
|
+
path: basename(absolutePath),
|
|
494
|
+
securityViolation: 'DISK_FULL'
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
// Log unexpected errors for monitoring
|
|
499
|
+
console.warn(`Unexpected error in ${operation}:`, {
|
|
500
|
+
error: error instanceof Error ? error.message : String(error),
|
|
501
|
+
path: basename(absolutePath)
|
|
502
|
+
});
|
|
503
|
+
throw error;
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
//# sourceMappingURL=fsio.js.map
|
package/dist/fsio.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fsio.js","sourceRoot":"","sources":["../src/fsio.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;GAEG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* MCP server entry point for Spec-Docs markdown CRUD operations
|
|
4
|
+
*/
|
|
5
|
+
import { createMCPServer } from './server/server-factory.js';
|
|
6
|
+
/**
|
|
7
|
+
* Main entry point
|
|
8
|
+
*/
|
|
9
|
+
async function main() {
|
|
10
|
+
const server = await createMCPServer();
|
|
11
|
+
await server.start();
|
|
12
|
+
}
|
|
13
|
+
// Start the server
|
|
14
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
15
|
+
main().catch((error) => {
|
|
16
|
+
console.error('Fatal error:', error);
|
|
17
|
+
process.exit(1);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC;IACvC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC;AAED,mBAAmB;AACnB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-tools.test.d.ts","sourceRoot":"","sources":["../src/markdown-tools.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|