@decaf-ts/mcp-server 0.4.1 → 0.4.6
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.md +31 -0
- package/dist/mcp-server.cjs +2 -2328
- package/dist/mcp-server.cjs.map +1 -0
- package/dist/mcp-server.js +2 -0
- package/dist/mcp-server.js.map +1 -0
- package/lib/bin/cli.cjs +7 -35
- package/lib/bin/cli.d.ts +0 -24
- package/lib/bin/cli.js.map +1 -0
- package/lib/builders/builder.cjs +91 -0
- package/lib/builders/builder.d.ts +25 -0
- package/lib/builders/builder.js.map +1 -0
- package/lib/{mcp/resources → builders}/index.cjs +5 -2
- package/lib/builders/index.d.ts +4 -0
- package/lib/builders/index.js.map +1 -0
- package/lib/builders/prompt-builder.cjs +76 -0
- package/lib/builders/prompt-builder.d.ts +12 -0
- package/lib/builders/prompt-builder.js.map +1 -0
- package/lib/builders/resource-builder.cjs +83 -0
- package/lib/builders/resource-builder.d.ts +14 -0
- package/lib/builders/resource-builder.js.map +1 -0
- package/lib/builders/tool-builder.cjs +104 -0
- package/lib/builders/tool-builder.d.ts +16 -0
- package/lib/builders/tool-builder.js.map +1 -0
- package/lib/constants.cjs +28 -30
- package/lib/constants.d.ts +19 -24
- package/lib/constants.js.map +1 -0
- package/lib/environment.cjs +32 -0
- package/lib/environment.d.ts +71 -0
- package/lib/environment.js.map +1 -0
- package/lib/esm/bin/cli.d.ts +0 -24
- package/lib/esm/bin/cli.js +7 -35
- package/lib/esm/bin/cli.js.map +1 -0
- package/lib/esm/builders/builder.d.ts +25 -0
- package/lib/esm/builders/builder.js +86 -0
- package/lib/esm/builders/builder.js.map +1 -0
- package/lib/esm/builders/index.d.ts +4 -0
- package/lib/esm/builders/index.js +5 -0
- package/lib/esm/builders/index.js.map +1 -0
- package/lib/esm/builders/prompt-builder.d.ts +12 -0
- package/lib/esm/builders/prompt-builder.js +72 -0
- package/lib/esm/builders/prompt-builder.js.map +1 -0
- package/lib/esm/builders/resource-builder.d.ts +14 -0
- package/lib/esm/builders/resource-builder.js +79 -0
- package/lib/esm/builders/resource-builder.js.map +1 -0
- package/lib/esm/builders/tool-builder.d.ts +16 -0
- package/lib/esm/builders/tool-builder.js +100 -0
- package/lib/esm/builders/tool-builder.js.map +1 -0
- package/lib/esm/constants.d.ts +19 -24
- package/lib/esm/constants.js +27 -29
- package/lib/esm/constants.js.map +1 -0
- package/lib/esm/environment.d.ts +71 -0
- package/lib/esm/environment.js +29 -0
- package/lib/esm/environment.js.map +1 -0
- package/lib/esm/index.d.ts +3 -10
- package/lib/esm/index.js +4 -11
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/mcp-server.d.ts +10 -0
- package/lib/esm/mcp-server.js +189 -0
- package/lib/esm/mcp-server.js.map +1 -0
- package/lib/esm/modules/template-module/index.d.ts +6 -0
- package/lib/esm/modules/template-module/index.js +4 -0
- package/lib/esm/modules/template-module/index.js.map +1 -0
- package/lib/esm/prompts/code/constants.d.ts +1 -0
- package/lib/esm/prompts/code/constants.js +2 -0
- package/lib/esm/prompts/code/constants.js.map +1 -0
- package/lib/esm/prompts/code/design-patterns/builder.d.ts +2 -0
- package/lib/esm/prompts/code/design-patterns/builder.js +118 -0
- package/lib/esm/prompts/code/design-patterns/builder.js.map +1 -0
- package/lib/esm/prompts/code/design-patterns/constants.d.ts +1 -0
- package/lib/esm/prompts/code/design-patterns/constants.js +3 -0
- package/lib/esm/prompts/code/design-patterns/constants.js.map +1 -0
- package/lib/esm/prompts/example-prompt/index.d.ts +2 -0
- package/lib/esm/prompts/example-prompt/index.js +18 -0
- package/lib/esm/prompts/example-prompt/index.js.map +1 -0
- package/lib/esm/prompts/index.d.ts +2 -0
- package/lib/esm/prompts/index.js +26 -0
- package/lib/esm/prompts/index.js.map +1 -0
- package/lib/esm/prompts/interactive-jsdoc/index.d.ts +2 -0
- package/lib/esm/prompts/interactive-jsdoc/index.js +18 -0
- package/lib/esm/prompts/interactive-jsdoc/index.js.map +1 -0
- package/lib/esm/prompts/jsdocs/class-prompt.d.ts +2 -0
- package/lib/esm/prompts/jsdocs/class-prompt.js +52 -0
- package/lib/esm/prompts/jsdocs/class-prompt.js.map +1 -0
- package/lib/esm/prompts/jsdocs/const-prompt.d.ts +2 -0
- package/lib/esm/prompts/jsdocs/const-prompt.js +24 -0
- package/lib/esm/prompts/jsdocs/const-prompt.js.map +1 -0
- package/lib/esm/prompts/jsdocs/constants.d.ts +4 -0
- package/lib/esm/prompts/jsdocs/constants.js +46 -0
- package/lib/esm/prompts/jsdocs/constants.js.map +1 -0
- package/lib/esm/prompts/jsdocs/decorator-prompt.d.ts +2 -0
- package/lib/esm/prompts/jsdocs/decorator-prompt.js +42 -0
- package/lib/esm/prompts/jsdocs/decorator-prompt.js.map +1 -0
- package/lib/esm/prompts/jsdocs/enum-prompt.d.ts +2 -0
- package/lib/esm/prompts/jsdocs/enum-prompt.js +24 -0
- package/lib/esm/prompts/jsdocs/enum-prompt.js.map +1 -0
- package/lib/esm/prompts/jsdocs/function-prompt.d.ts +2 -0
- package/lib/esm/prompts/jsdocs/function-prompt.js +43 -0
- package/lib/esm/prompts/jsdocs/function-prompt.js.map +1 -0
- package/lib/esm/prompts/jsdocs/interface-prompt.d.ts +2 -0
- package/lib/esm/prompts/jsdocs/interface-prompt.js +24 -0
- package/lib/esm/prompts/jsdocs/interface-prompt.js.map +1 -0
- package/lib/esm/prompts/jsdocs/types-prompt.d.ts +2 -0
- package/lib/esm/prompts/jsdocs/types-prompt.js +24 -0
- package/lib/esm/prompts/jsdocs/types-prompt.js.map +1 -0
- package/lib/esm/resources/example-resource/index.d.ts +2 -0
- package/lib/esm/resources/example-resource/index.js +19 -0
- package/lib/esm/resources/example-resource/index.js.map +1 -0
- package/lib/esm/resources/index.d.ts +2 -0
- package/lib/esm/resources/index.js +4 -0
- package/lib/esm/resources/index.js.map +1 -0
- package/lib/esm/resources/repo-metadata/index.d.ts +2 -0
- package/lib/esm/resources/repo-metadata/index.js +25 -0
- package/lib/esm/resources/repo-metadata/index.js.map +1 -0
- package/lib/esm/tools/ast/ts-ast-tool.d.ts +2 -0
- package/lib/esm/tools/ast/ts-ast-tool.js +67 -0
- package/lib/esm/tools/ast/ts-ast-tool.js.map +1 -0
- package/lib/esm/tools/ast/types.d.ts +105 -0
- package/lib/esm/tools/ast/types.js +33 -0
- package/lib/esm/tools/ast/types.js.map +1 -0
- package/lib/esm/tools/ast/utils.d.ts +5 -0
- package/lib/esm/tools/ast/utils.js +58 -0
- package/lib/esm/tools/ast/utils.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/apply.d.ts +6 -0
- package/lib/esm/tools/ast-jsdoc-tools/apply.js +29 -0
- package/lib/esm/tools/ast-jsdoc-tools/apply.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/cli.js +33 -0
- package/lib/esm/tools/ast-jsdoc-tools/cli.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/enumerator.d.ts +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/enumerator.js +25 -0
- package/lib/esm/tools/ast-jsdoc-tools/enumerator.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/fileRunner.d.ts +11 -0
- package/lib/esm/tools/ast-jsdoc-tools/fileRunner.js +29 -0
- package/lib/esm/tools/ast-jsdoc-tools/fileRunner.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/formatter.d.ts +6 -0
- package/lib/esm/tools/ast-jsdoc-tools/formatter.js +18 -0
- package/lib/esm/tools/ast-jsdoc-tools/formatter.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/generator.d.ts +12 -0
- package/lib/esm/tools/ast-jsdoc-tools/generator.js +55 -0
- package/lib/esm/tools/ast-jsdoc-tools/generator.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/index.d.ts +7 -0
- package/lib/esm/tools/ast-jsdoc-tools/index.js +29 -0
- package/lib/esm/tools/ast-jsdoc-tools/index.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/interactive.d.ts +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/interactive.js +7 -0
- package/lib/esm/tools/ast-jsdoc-tools/interactive.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/parser.d.ts +13 -0
- package/lib/esm/tools/ast-jsdoc-tools/parser.js +71 -0
- package/lib/esm/tools/ast-jsdoc-tools/parser.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/patch.d.ts +2 -0
- package/lib/esm/tools/ast-jsdoc-tools/patch.js +23 -0
- package/lib/esm/tools/ast-jsdoc-tools/patch.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/prompts/loader.d.ts +10 -0
- package/lib/esm/tools/ast-jsdoc-tools/prompts/loader.js +26 -0
- package/lib/esm/tools/ast-jsdoc-tools/prompts/loader.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/repoRunner.d.ts +16 -0
- package/lib/esm/tools/ast-jsdoc-tools/repoRunner.js +61 -0
- package/lib/esm/tools/ast-jsdoc-tools/repoRunner.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/tools/jsdoc-generator.d.ts +5 -0
- package/lib/esm/tools/ast-jsdoc-tools/tools/jsdoc-generator.js +78 -0
- package/lib/esm/tools/ast-jsdoc-tools/tools/jsdoc-generator.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/utils/conflict-detector.d.ts +5 -0
- package/lib/esm/tools/ast-jsdoc-tools/utils/conflict-detector.js +30 -0
- package/lib/esm/tools/ast-jsdoc-tools/utils/conflict-detector.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/utils/context-schema.d.ts +7 -0
- package/lib/esm/tools/ast-jsdoc-tools/utils/context-schema.js +29 -0
- package/lib/esm/tools/ast-jsdoc-tools/utils/context-schema.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/utils/heuristics.d.ts +2 -0
- package/lib/esm/tools/ast-jsdoc-tools/utils/heuristics.js +31 -0
- package/lib/esm/tools/ast-jsdoc-tools/utils/heuristics.js.map +1 -0
- package/lib/esm/tools/ast-jsdoc-tools/utils/ts-project.d.ts +12 -0
- package/lib/esm/tools/ast-jsdoc-tools/utils/ts-project.js +21 -0
- package/lib/esm/tools/ast-jsdoc-tools/utils/ts-project.js.map +1 -0
- package/lib/esm/tools/example-tool/index.d.ts +2 -0
- package/lib/esm/tools/example-tool/index.js +29 -0
- package/lib/esm/tools/example-tool/index.js.map +1 -0
- package/lib/esm/tools/file-summarizer/index.d.ts +2 -0
- package/lib/esm/tools/file-summarizer/index.js +29 -0
- package/lib/esm/tools/file-summarizer/index.js.map +1 -0
- package/lib/esm/tools/index.d.ts +2 -0
- package/lib/esm/tools/index.js +6 -0
- package/lib/esm/tools/index.js.map +1 -0
- package/lib/esm/tools/jsdoc/ts-jsdoc-element-tool.d.ts +2 -0
- package/lib/esm/tools/jsdoc/ts-jsdoc-element-tool.js +84 -0
- package/lib/esm/tools/jsdoc/ts-jsdoc-element-tool.js.map +1 -0
- package/lib/esm/tools/jsdoc/utils.d.ts +5 -0
- package/lib/esm/tools/jsdoc/utils.js +53 -0
- package/lib/esm/tools/jsdoc/utils.js.map +1 -0
- package/lib/esm/tools/testing/ts-jest-list-tests.d.ts +2 -0
- package/lib/esm/tools/testing/ts-jest-list-tests.js +53 -0
- package/lib/esm/tools/testing/ts-jest-list-tests.js.map +1 -0
- package/lib/esm/types.d.ts +56 -47
- package/lib/esm/types.js +1 -1
- package/lib/esm/types.js.map +1 -0
- package/lib/esm/utils/banner.d.ts +3 -0
- package/lib/esm/utils/banner.js +107 -0
- package/lib/esm/utils/banner.js.map +1 -0
- package/lib/esm/version.d.ts +2 -0
- package/lib/esm/version.js +5 -0
- package/lib/esm/version.js.map +1 -0
- package/lib/index.cjs +4 -11
- package/lib/index.d.ts +3 -10
- package/lib/index.js.map +1 -0
- package/lib/mcp-server.cjs +226 -0
- package/lib/mcp-server.d.ts +10 -0
- package/lib/mcp-server.js.map +1 -0
- package/lib/modules/template-module/index.cjs +7 -0
- package/lib/modules/template-module/index.d.ts +6 -0
- package/lib/modules/template-module/index.js.map +1 -0
- package/lib/prompts/code/constants.cjs +5 -0
- package/lib/prompts/code/constants.d.ts +1 -0
- package/lib/prompts/code/constants.js.map +1 -0
- package/lib/prompts/code/design-patterns/builder.cjs +121 -0
- package/lib/prompts/code/design-patterns/builder.d.ts +2 -0
- package/lib/prompts/code/design-patterns/builder.js.map +1 -0
- package/lib/prompts/code/design-patterns/constants.cjs +6 -0
- package/lib/prompts/code/design-patterns/constants.d.ts +1 -0
- package/lib/prompts/code/design-patterns/constants.js.map +1 -0
- package/lib/prompts/example-prompt/index.cjs +21 -0
- package/lib/prompts/example-prompt/index.d.ts +2 -0
- package/lib/prompts/example-prompt/index.js.map +1 -0
- package/lib/prompts/index.cjs +29 -0
- package/lib/prompts/index.d.ts +2 -0
- package/lib/prompts/index.js.map +1 -0
- package/lib/prompts/interactive-jsdoc/index.cjs +21 -0
- package/lib/prompts/interactive-jsdoc/index.d.ts +2 -0
- package/lib/prompts/interactive-jsdoc/index.js.map +1 -0
- package/lib/prompts/jsdocs/class-prompt.cjs +55 -0
- package/lib/prompts/jsdocs/class-prompt.d.ts +2 -0
- package/lib/prompts/jsdocs/class-prompt.js.map +1 -0
- package/lib/prompts/jsdocs/const-prompt.cjs +27 -0
- package/lib/prompts/jsdocs/const-prompt.d.ts +2 -0
- package/lib/prompts/jsdocs/const-prompt.js.map +1 -0
- package/lib/prompts/jsdocs/constants.cjs +49 -0
- package/lib/prompts/jsdocs/constants.d.ts +4 -0
- package/lib/prompts/jsdocs/constants.js.map +1 -0
- package/lib/prompts/jsdocs/decorator-prompt.cjs +45 -0
- package/lib/prompts/jsdocs/decorator-prompt.d.ts +2 -0
- package/lib/prompts/jsdocs/decorator-prompt.js.map +1 -0
- package/lib/prompts/jsdocs/enum-prompt.cjs +27 -0
- package/lib/prompts/jsdocs/enum-prompt.d.ts +2 -0
- package/lib/prompts/jsdocs/enum-prompt.js.map +1 -0
- package/lib/prompts/jsdocs/function-prompt.cjs +46 -0
- package/lib/prompts/jsdocs/function-prompt.d.ts +2 -0
- package/lib/prompts/jsdocs/function-prompt.js.map +1 -0
- package/lib/prompts/jsdocs/interface-prompt.cjs +27 -0
- package/lib/prompts/jsdocs/interface-prompt.d.ts +2 -0
- package/lib/prompts/jsdocs/interface-prompt.js.map +1 -0
- package/lib/prompts/jsdocs/types-prompt.cjs +27 -0
- package/lib/prompts/jsdocs/types-prompt.d.ts +2 -0
- package/lib/prompts/jsdocs/types-prompt.js.map +1 -0
- package/lib/resources/example-resource/index.cjs +22 -0
- package/lib/resources/example-resource/index.d.ts +2 -0
- package/lib/resources/example-resource/index.js.map +1 -0
- package/lib/resources/index.cjs +7 -0
- package/lib/resources/index.d.ts +2 -0
- package/lib/resources/index.js.map +1 -0
- package/lib/resources/repo-metadata/index.cjs +28 -0
- package/lib/resources/repo-metadata/index.d.ts +2 -0
- package/lib/resources/repo-metadata/index.js.map +1 -0
- package/lib/tools/ast/ts-ast-tool.cjs +70 -0
- package/lib/tools/ast/ts-ast-tool.d.ts +2 -0
- package/lib/tools/ast/ts-ast-tool.js.map +1 -0
- package/lib/tools/ast/types.cjs +36 -0
- package/lib/tools/ast/types.d.ts +105 -0
- package/lib/tools/ast/types.js.map +1 -0
- package/lib/tools/ast/utils.cjs +65 -0
- package/lib/tools/ast/utils.d.ts +5 -0
- package/lib/tools/ast/utils.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/apply.cjs +36 -0
- package/lib/tools/ast-jsdoc-tools/apply.d.ts +6 -0
- package/lib/tools/ast-jsdoc-tools/apply.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/cli.cjs +38 -0
- package/lib/tools/ast-jsdoc-tools/cli.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/enumerator.cjs +31 -0
- package/lib/tools/ast-jsdoc-tools/enumerator.d.ts +1 -0
- package/lib/tools/ast-jsdoc-tools/enumerator.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/fileRunner.cjs +35 -0
- package/lib/tools/ast-jsdoc-tools/fileRunner.d.ts +11 -0
- package/lib/tools/ast-jsdoc-tools/fileRunner.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/formatter.cjs +21 -0
- package/lib/tools/ast-jsdoc-tools/formatter.d.ts +6 -0
- package/lib/tools/ast-jsdoc-tools/formatter.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/generator.cjs +58 -0
- package/lib/tools/ast-jsdoc-tools/generator.d.ts +12 -0
- package/lib/tools/ast-jsdoc-tools/generator.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/index.cjs +33 -0
- package/lib/tools/ast-jsdoc-tools/index.d.ts +7 -0
- package/lib/tools/ast-jsdoc-tools/index.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/interactive.cjs +10 -0
- package/lib/tools/ast-jsdoc-tools/interactive.d.ts +1 -0
- package/lib/tools/ast-jsdoc-tools/interactive.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/parser.cjs +77 -0
- package/lib/tools/ast-jsdoc-tools/parser.d.ts +13 -0
- package/lib/tools/ast-jsdoc-tools/parser.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/patch.cjs +29 -0
- package/lib/tools/ast-jsdoc-tools/patch.d.ts +2 -0
- package/lib/tools/ast-jsdoc-tools/patch.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/prompts/loader.cjs +32 -0
- package/lib/tools/ast-jsdoc-tools/prompts/loader.d.ts +10 -0
- package/lib/tools/ast-jsdoc-tools/prompts/loader.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/repoRunner.cjs +67 -0
- package/lib/tools/ast-jsdoc-tools/repoRunner.d.ts +16 -0
- package/lib/tools/ast-jsdoc-tools/repoRunner.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/tools/jsdoc-generator.cjs +81 -0
- package/lib/tools/ast-jsdoc-tools/tools/jsdoc-generator.d.ts +5 -0
- package/lib/tools/ast-jsdoc-tools/tools/jsdoc-generator.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/utils/conflict-detector.cjs +33 -0
- package/lib/tools/ast-jsdoc-tools/utils/conflict-detector.d.ts +5 -0
- package/lib/tools/ast-jsdoc-tools/utils/conflict-detector.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/utils/context-schema.cjs +32 -0
- package/lib/tools/ast-jsdoc-tools/utils/context-schema.d.ts +7 -0
- package/lib/tools/ast-jsdoc-tools/utils/context-schema.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/utils/heuristics.cjs +34 -0
- package/lib/tools/ast-jsdoc-tools/utils/heuristics.d.ts +2 -0
- package/lib/tools/ast-jsdoc-tools/utils/heuristics.js.map +1 -0
- package/lib/tools/ast-jsdoc-tools/utils/ts-project.cjs +57 -0
- package/lib/tools/ast-jsdoc-tools/utils/ts-project.d.ts +12 -0
- package/lib/tools/ast-jsdoc-tools/utils/ts-project.js.map +1 -0
- package/lib/tools/example-tool/index.cjs +32 -0
- package/lib/tools/example-tool/index.d.ts +2 -0
- package/lib/tools/example-tool/index.js.map +1 -0
- package/lib/tools/file-summarizer/index.cjs +32 -0
- package/lib/tools/file-summarizer/index.d.ts +2 -0
- package/lib/tools/file-summarizer/index.js.map +1 -0
- package/lib/tools/index.cjs +9 -0
- package/lib/tools/index.d.ts +2 -0
- package/lib/tools/index.js.map +1 -0
- package/lib/tools/jsdoc/ts-jsdoc-element-tool.cjs +87 -0
- package/lib/tools/jsdoc/ts-jsdoc-element-tool.d.ts +2 -0
- package/lib/tools/jsdoc/ts-jsdoc-element-tool.js.map +1 -0
- package/lib/tools/jsdoc/utils.cjs +60 -0
- package/lib/tools/jsdoc/utils.d.ts +5 -0
- package/lib/tools/jsdoc/utils.js.map +1 -0
- package/lib/tools/testing/ts-jest-list-tests.cjs +56 -0
- package/lib/tools/testing/ts-jest-list-tests.d.ts +2 -0
- package/lib/tools/testing/ts-jest-list-tests.js.map +1 -0
- package/lib/types.cjs +1 -1
- package/lib/types.d.ts +56 -47
- package/lib/types.js.map +1 -0
- package/lib/utils/banner.cjs +114 -0
- package/lib/utils/banner.d.ts +3 -0
- package/lib/utils/banner.js.map +1 -0
- package/lib/version.cjs +8 -0
- package/lib/version.d.ts +2 -0
- package/lib/version.js.map +1 -0
- package/package.json +14 -63
- package/dist/mcp-server.esm.cjs +0 -2300
- package/lib/McpWrapper.cjs +0 -189
- package/lib/McpWrapper.d.ts +0 -101
- package/lib/bin/validate-modules.cjs +0 -24
- package/lib/esm/McpWrapper.d.ts +0 -101
- package/lib/esm/McpWrapper.js +0 -182
- package/lib/esm/bin/validate-modules.js +0 -22
- package/lib/esm/mcp/aggregateModules.d.ts +0 -26
- package/lib/esm/mcp/aggregateModules.js +0 -185
- package/lib/esm/mcp/code.d.ts +0 -23
- package/lib/esm/mcp/code.js +0 -70
- package/lib/esm/mcp/decorator-tools.d.ts +0 -118
- package/lib/esm/mcp/decorator-tools.js +0 -237
- package/lib/esm/mcp/fastmcp-wiring.d.ts +0 -14
- package/lib/esm/mcp/fastmcp-wiring.js +0 -56
- package/lib/esm/mcp/index.d.ts +0 -9
- package/lib/esm/mcp/index.js +0 -29
- package/lib/esm/mcp/mcp-module.d.ts +0 -11
- package/lib/esm/mcp/mcp-module.js +0 -31
- package/lib/esm/mcp/moduleRegistry.d.ts +0 -14
- package/lib/esm/mcp/moduleRegistry.js +0 -47
- package/lib/esm/mcp/prompts/index.d.ts +0 -4
- package/lib/esm/mcp/prompts/index.js +0 -7
- package/lib/esm/mcp/prompts/prompts.d.ts +0 -22
- package/lib/esm/mcp/prompts/prompts.js +0 -203
- package/lib/esm/mcp/resources/index.d.ts +0 -1
- package/lib/esm/mcp/resources/index.js +0 -2
- package/lib/esm/mcp/resources/resources.d.ts +0 -2
- package/lib/esm/mcp/resources/resources.js +0 -69
- package/lib/esm/mcp/schemas.d.ts +0 -53
- package/lib/esm/mcp/schemas.js +0 -97
- package/lib/esm/mcp/templates/codex-templates.d.ts +0 -3
- package/lib/esm/mcp/templates/codex-templates.js +0 -33
- package/lib/esm/mcp/templates/index.d.ts +0 -71
- package/lib/esm/mcp/templates/index.js +0 -66
- package/lib/esm/mcp/templates/resource-templates.d.ts +0 -3
- package/lib/esm/mcp/templates/resource-templates.js +0 -60
- package/lib/esm/mcp/templates/workspace-templates.d.ts +0 -3
- package/lib/esm/mcp/templates/workspace-templates.js +0 -66
- package/lib/esm/mcp/tools/codex-tools.d.ts +0 -5
- package/lib/esm/mcp/tools/codex-tools.js +0 -244
- package/lib/esm/mcp/tools/generateMcpModule.d.ts +0 -9
- package/lib/esm/mcp/tools/generateMcpModule.js +0 -133
- package/lib/esm/mcp/tools/index.d.ts +0 -219
- package/lib/esm/mcp/tools/index.js +0 -27
- package/lib/esm/mcp/tools/tools.d.ts +0 -10
- package/lib/esm/mcp/tools/tools.js +0 -275
- package/lib/esm/mcp/types.d.ts +0 -66
- package/lib/esm/mcp/types.js +0 -2
- package/lib/esm/mcp/utils.d.ts +0 -3
- package/lib/esm/mcp/utils.js +0 -46
- package/lib/esm/mcp/validation/index.d.ts +0 -13
- package/lib/esm/mcp/validation/index.js +0 -116
- package/lib/esm/mcp/validation/scaffoldModule.d.ts +0 -9
- package/lib/esm/mcp/validation/scaffoldModule.js +0 -88
- package/lib/esm/mcp/workspace.d.ts +0 -9
- package/lib/esm/mcp/workspace.js +0 -73
- package/lib/esm/metadata.d.ts +0 -9
- package/lib/esm/metadata.js +0 -22
- package/lib/esm/modules/_template/index.d.ts +0 -32
- package/lib/esm/modules/_template/index.js +0 -16
- package/lib/esm/modules/_template/prompts/index.d.ts +0 -6
- package/lib/esm/modules/_template/prompts/index.js +0 -9
- package/lib/esm/modules/_template/resources/index.d.ts +0 -6
- package/lib/esm/modules/_template/resources/index.js +0 -9
- package/lib/esm/modules/_template/templates/index.d.ts +0 -7
- package/lib/esm/modules/_template/templates/index.js +0 -10
- package/lib/esm/modules/_template/tools/index.d.ts +0 -6
- package/lib/esm/modules/_template/tools/index.js +0 -15
- package/lib/esm/modules/decoration/index.d.ts +0 -46
- package/lib/esm/modules/decoration/index.js +0 -10
- package/lib/esm/modules/decoration/prompts/index.d.ts +0 -1
- package/lib/esm/modules/decoration/prompts/index.js +0 -2
- package/lib/esm/modules/decoration/resources/index.d.ts +0 -7
- package/lib/esm/modules/decoration/resources/index.js +0 -10
- package/lib/esm/modules/decoration/templates/index.d.ts +0 -6
- package/lib/esm/modules/decoration/templates/index.js +0 -9
- package/lib/esm/modules/decoration/tools/index.d.ts +0 -26
- package/lib/esm/modules/decoration/tools/index.js +0 -7
- package/lib/esm/modules/index.d.ts +0 -2
- package/lib/esm/modules/index.js +0 -17
- package/lib/esm/modules/mcp/decoration-assist.d.ts +0 -4
- package/lib/esm/modules/mcp/decoration-assist.js +0 -6
- package/lib/esm/modules/mcp/index.d.ts +0 -6
- package/lib/esm/modules/mcp/index.js +0 -16
- package/lib/esm/modules/mcp/prompts/index.d.ts +0 -2
- package/lib/esm/modules/mcp/prompts/index.js +0 -9
- package/lib/esm/modules/mcp/resources/index.d.ts +0 -2
- package/lib/esm/modules/mcp/resources/index.js +0 -24
- package/lib/esm/modules/mcp/templates/index.d.ts +0 -2
- package/lib/esm/modules/mcp/templates/index.js +0 -28
- package/lib/esm/modules/mcp/tools/index.d.ts +0 -6
- package/lib/esm/modules/mcp/tools/index.js +0 -15
- package/lib/esm/utils/modulePaths.d.ts +0 -6
- package/lib/esm/utils/modulePaths.js +0 -33
- package/lib/esm/utils/moduleValidator.d.ts +0 -14
- package/lib/esm/utils/moduleValidator.js +0 -176
- package/lib/esm/utils.d.ts +0 -61
- package/lib/esm/utils.js +0 -86
- package/lib/mcp/aggregateModules.cjs +0 -225
- package/lib/mcp/aggregateModules.d.ts +0 -26
- package/lib/mcp/code.cjs +0 -81
- package/lib/mcp/code.d.ts +0 -23
- package/lib/mcp/decorator-tools.cjs +0 -243
- package/lib/mcp/decorator-tools.d.ts +0 -118
- package/lib/mcp/fastmcp-wiring.cjs +0 -59
- package/lib/mcp/fastmcp-wiring.d.ts +0 -14
- package/lib/mcp/index.cjs +0 -57
- package/lib/mcp/index.d.ts +0 -9
- package/lib/mcp/mcp-module.cjs +0 -46
- package/lib/mcp/mcp-module.d.ts +0 -11
- package/lib/mcp/moduleRegistry.cjs +0 -52
- package/lib/mcp/moduleRegistry.d.ts +0 -14
- package/lib/mcp/prompts/index.cjs +0 -25
- package/lib/mcp/prompts/index.d.ts +0 -4
- package/lib/mcp/prompts/prompts.cjs +0 -217
- package/lib/mcp/prompts/prompts.d.ts +0 -22
- package/lib/mcp/resources/index.d.ts +0 -1
- package/lib/mcp/resources/resources.cjs +0 -72
- package/lib/mcp/resources/resources.d.ts +0 -2
- package/lib/mcp/schemas.cjs +0 -100
- package/lib/mcp/schemas.d.ts +0 -53
- package/lib/mcp/templates/codex-templates.cjs +0 -40
- package/lib/mcp/templates/codex-templates.d.ts +0 -3
- package/lib/mcp/templates/index.cjs +0 -76
- package/lib/mcp/templates/index.d.ts +0 -71
- package/lib/mcp/templates/resource-templates.cjs +0 -67
- package/lib/mcp/templates/resource-templates.d.ts +0 -3
- package/lib/mcp/templates/workspace-templates.cjs +0 -70
- package/lib/mcp/templates/workspace-templates.d.ts +0 -3
- package/lib/mcp/tools/codex-tools.cjs +0 -250
- package/lib/mcp/tools/codex-tools.d.ts +0 -5
- package/lib/mcp/tools/generateMcpModule.cjs +0 -139
- package/lib/mcp/tools/generateMcpModule.d.ts +0 -9
- package/lib/mcp/tools/index.cjs +0 -30
- package/lib/mcp/tools/index.d.ts +0 -219
- package/lib/mcp/tools/tools.cjs +0 -317
- package/lib/mcp/tools/tools.d.ts +0 -10
- package/lib/mcp/types.cjs +0 -3
- package/lib/mcp/types.d.ts +0 -66
- package/lib/mcp/utils.cjs +0 -54
- package/lib/mcp/utils.d.ts +0 -3
- package/lib/mcp/validation/index.cjs +0 -123
- package/lib/mcp/validation/index.d.ts +0 -13
- package/lib/mcp/validation/scaffoldModule.cjs +0 -94
- package/lib/mcp/validation/scaffoldModule.d.ts +0 -9
- package/lib/mcp/workspace.cjs +0 -119
- package/lib/mcp/workspace.d.ts +0 -9
- package/lib/metadata.cjs +0 -25
- package/lib/metadata.d.ts +0 -9
- package/lib/modules/_template/index.cjs +0 -23
- package/lib/modules/_template/index.d.ts +0 -32
- package/lib/modules/_template/prompts/index.cjs +0 -12
- package/lib/modules/_template/prompts/index.d.ts +0 -6
- package/lib/modules/_template/resources/index.cjs +0 -12
- package/lib/modules/_template/resources/index.d.ts +0 -6
- package/lib/modules/_template/templates/index.cjs +0 -13
- package/lib/modules/_template/templates/index.d.ts +0 -7
- package/lib/modules/_template/tools/index.cjs +0 -18
- package/lib/modules/_template/tools/index.d.ts +0 -6
- package/lib/modules/decoration/index.cjs +0 -17
- package/lib/modules/decoration/index.d.ts +0 -46
- package/lib/modules/decoration/prompts/index.cjs +0 -5
- package/lib/modules/decoration/prompts/index.d.ts +0 -1
- package/lib/modules/decoration/resources/index.cjs +0 -13
- package/lib/modules/decoration/resources/index.d.ts +0 -7
- package/lib/modules/decoration/templates/index.cjs +0 -12
- package/lib/modules/decoration/templates/index.d.ts +0 -6
- package/lib/modules/decoration/tools/index.cjs +0 -10
- package/lib/modules/decoration/tools/index.d.ts +0 -26
- package/lib/modules/index.cjs +0 -20
- package/lib/modules/index.d.ts +0 -2
- package/lib/modules/mcp/decoration-assist.cjs +0 -13
- package/lib/modules/mcp/decoration-assist.d.ts +0 -4
- package/lib/modules/mcp/index.cjs +0 -23
- package/lib/modules/mcp/index.d.ts +0 -6
- package/lib/modules/mcp/prompts/index.cjs +0 -12
- package/lib/modules/mcp/prompts/index.d.ts +0 -2
- package/lib/modules/mcp/resources/index.cjs +0 -27
- package/lib/modules/mcp/resources/index.d.ts +0 -2
- package/lib/modules/mcp/templates/index.cjs +0 -31
- package/lib/modules/mcp/templates/index.d.ts +0 -2
- package/lib/modules/mcp/tools/index.cjs +0 -18
- package/lib/modules/mcp/tools/index.d.ts +0 -6
- package/lib/utils/modulePaths.cjs +0 -43
- package/lib/utils/modulePaths.d.ts +0 -6
- package/lib/utils/moduleValidator.cjs +0 -184
- package/lib/utils/moduleValidator.d.ts +0 -14
- package/lib/utils.cjs +0 -129
- package/lib/utils.d.ts +0 -61
- /package/lib/{bin/validate-modules.d.ts → esm/tools/ast-jsdoc-tools/cli.d.ts} +0 -0
- /package/lib/{esm/bin/validate-modules.d.ts → tools/ast-jsdoc-tools/cli.d.ts} +0 -0
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { assertModuleScaffolding } from "../utils/moduleValidator";
|
|
3
|
-
async function main() {
|
|
4
|
-
try {
|
|
5
|
-
const issues = assertModuleScaffolding();
|
|
6
|
-
if (issues.length) {
|
|
7
|
-
console.log(`[module-validator] Completed with ${issues.length} issue(s) (warnings may persist)`);
|
|
8
|
-
for (const issue of issues) {
|
|
9
|
-
console.log(` - [${issue.severity.toUpperCase()}] ${issue.module}: ${issue.detail}`);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
console.log("[module-validator] Modules validated successfully");
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
catch (error) {
|
|
17
|
-
console.error(`[module-validator] ${error instanceof Error ? error.message : error}`);
|
|
18
|
-
process.exitCode = 1;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
void main();
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtbW9kdWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vdmFsaWRhdGUtbW9kdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbkUsS0FBSyxVQUFVLElBQUk7SUFDakIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsdUJBQXVCLEVBQUUsQ0FBQztRQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsR0FBRyxDQUNULHFDQUFxQyxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsQ0FDckYsQ0FBQztZQUNGLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQ1QsUUFBUSxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUN6RSxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdEYsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztBQUNILENBQUM7QUFFRCxLQUFLLElBQUksRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgYXNzZXJ0TW9kdWxlU2NhZmZvbGRpbmcgfSBmcm9tIFwiLi4vdXRpbHMvbW9kdWxlVmFsaWRhdG9yXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgaXNzdWVzID0gYXNzZXJ0TW9kdWxlU2NhZmZvbGRpbmcoKTtcbiAgICBpZiAoaXNzdWVzLmxlbmd0aCkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBbbW9kdWxlLXZhbGlkYXRvcl0gQ29tcGxldGVkIHdpdGggJHtpc3N1ZXMubGVuZ3RofSBpc3N1ZShzKSAod2FybmluZ3MgbWF5IHBlcnNpc3QpYFxuICAgICAgKTtcbiAgICAgIGZvciAoY29uc3QgaXNzdWUgb2YgaXNzdWVzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAgIC0gWyR7aXNzdWUuc2V2ZXJpdHkudG9VcHBlckNhc2UoKX1dICR7aXNzdWUubW9kdWxlfTogJHtpc3N1ZS5kZXRhaWx9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlttb2R1bGUtdmFsaWRhdG9yXSBNb2R1bGVzIHZhbGlkYXRlZCBzdWNjZXNzZnVsbHlcIik7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFttb2R1bGUtdmFsaWRhdG9yXSAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogZXJyb3J9YCk7XG4gICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG4gIH1cbn1cblxudm9pZCBtYWluKCk7XG4iXX0=
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export type Provenance = {
|
|
2
|
-
moduleName: string;
|
|
3
|
-
modulePath: string;
|
|
4
|
-
};
|
|
5
|
-
export type AggregationConflict = {
|
|
6
|
-
key: string;
|
|
7
|
-
existing: Provenance;
|
|
8
|
-
incoming: Provenance;
|
|
9
|
-
};
|
|
10
|
-
export type AggregationResult<T = any> = {
|
|
11
|
-
prompts: Array<T & {
|
|
12
|
-
provenance: Provenance;
|
|
13
|
-
}>;
|
|
14
|
-
resources: Array<T & {
|
|
15
|
-
provenance: Provenance;
|
|
16
|
-
}>;
|
|
17
|
-
templates: Array<T & {
|
|
18
|
-
provenance: Provenance;
|
|
19
|
-
}>;
|
|
20
|
-
tools: Array<T & {
|
|
21
|
-
provenance: Provenance;
|
|
22
|
-
}>;
|
|
23
|
-
conflicts: AggregationConflict[];
|
|
24
|
-
};
|
|
25
|
-
export declare function aggregateModules(repoRoot: string): Promise<AggregationResult>;
|
|
26
|
-
export declare function aggregateModulesSync(repoRoot: string): AggregationResult;
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
// Aggregator: import module index files and merge exported arrays with provenance + duplicate detection
|
|
2
|
-
import path from "path";
|
|
3
|
-
import fs from "fs";
|
|
4
|
-
import { pathToFileURL } from "url";
|
|
5
|
-
import { findModuleDirs } from "./validation";
|
|
6
|
-
const SUBFOLDERS = ["prompts", "resources", "templates", "tools"];
|
|
7
|
-
const INDEX_CANDIDATES = [
|
|
8
|
-
"index.ts",
|
|
9
|
-
"index.tsx",
|
|
10
|
-
"index.js",
|
|
11
|
-
"index.cjs",
|
|
12
|
-
"index.mjs",
|
|
13
|
-
];
|
|
14
|
-
function findIndexFile(folder) {
|
|
15
|
-
for (const c of INDEX_CANDIDATES) {
|
|
16
|
-
const f = path.join(folder, c);
|
|
17
|
-
if (fs.existsSync(f))
|
|
18
|
-
return f;
|
|
19
|
-
}
|
|
20
|
-
return undefined;
|
|
21
|
-
}
|
|
22
|
-
function makeKeyForItem(item) {
|
|
23
|
-
if (!item)
|
|
24
|
-
return JSON.stringify(item);
|
|
25
|
-
if (typeof item === "string")
|
|
26
|
-
return `str:${item}`;
|
|
27
|
-
if (typeof item === "number")
|
|
28
|
-
return `num:${item}`;
|
|
29
|
-
if (item.id)
|
|
30
|
-
return `id:${item.id}`;
|
|
31
|
-
if (item.name)
|
|
32
|
-
return `name:${item.name}`;
|
|
33
|
-
// fallback to stable string
|
|
34
|
-
try {
|
|
35
|
-
return `obj:${JSON.stringify(item)}`;
|
|
36
|
-
}
|
|
37
|
-
catch (e) {
|
|
38
|
-
return `obj:${String(item)}`;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
async function loadArrayFromIndex(filePath) {
|
|
42
|
-
// Prefer a fast, static parse of the first array literal found in the file.
|
|
43
|
-
try {
|
|
44
|
-
const content = fs.readFileSync(filePath, "utf8");
|
|
45
|
-
const start = content.indexOf("[");
|
|
46
|
-
if (start !== -1) {
|
|
47
|
-
let depth = 0;
|
|
48
|
-
let end = -1;
|
|
49
|
-
for (let i = start; i < content.length; i++) {
|
|
50
|
-
const ch = content[i];
|
|
51
|
-
if (ch === "[")
|
|
52
|
-
depth++;
|
|
53
|
-
else if (ch === "]") {
|
|
54
|
-
depth--;
|
|
55
|
-
if (depth === 0) {
|
|
56
|
-
end = i;
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
if (end !== -1) {
|
|
62
|
-
const arrText = content.slice(start, end + 1);
|
|
63
|
-
try {
|
|
64
|
-
return JSON.parse(arrText);
|
|
65
|
-
}
|
|
66
|
-
catch (e) {
|
|
67
|
-
// Normalize TS object literals to JSON:
|
|
68
|
-
// - convert single quotes to double quotes
|
|
69
|
-
// - quote unquoted object keys
|
|
70
|
-
// - strip trailing commas
|
|
71
|
-
const normalized = arrText
|
|
72
|
-
// unify quotes in string literals
|
|
73
|
-
.replace(/'(?:\\'|[^'])*'/g, (m) => m.replace(/'/g, '"'))
|
|
74
|
-
// quote unquoted keys after { or ,
|
|
75
|
-
.replace(/([\{,]\s*)([A-Za-z_$][\w$]*)(\s*:)/g, '$1"$2"$3')
|
|
76
|
-
// remove trailing commas before ] or }
|
|
77
|
-
.replace(/,(\s*[\}\]])/g, '$1');
|
|
78
|
-
try {
|
|
79
|
-
return JSON.parse(normalized);
|
|
80
|
-
}
|
|
81
|
-
catch (e2) {
|
|
82
|
-
// fallthrough to import attempt below
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
catch (e) {
|
|
89
|
-
// ignore static parse errors and fall back to import
|
|
90
|
-
}
|
|
91
|
-
try {
|
|
92
|
-
const fileUrl = pathToFileURL(filePath).href;
|
|
93
|
-
const mod = await import(fileUrl);
|
|
94
|
-
// Find first export that is an array
|
|
95
|
-
for (const key of Object.keys(mod)) {
|
|
96
|
-
const val = mod[key];
|
|
97
|
-
if (Array.isArray(val))
|
|
98
|
-
return val;
|
|
99
|
-
}
|
|
100
|
-
// default export check
|
|
101
|
-
if (Array.isArray(mod.default))
|
|
102
|
-
return mod.default;
|
|
103
|
-
return undefined;
|
|
104
|
-
}
|
|
105
|
-
catch (err) {
|
|
106
|
-
// fallback: if import fails, try to static-parse again (already attempted) and finally return undefined
|
|
107
|
-
return undefined;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
export async function aggregateModules(repoRoot) {
|
|
111
|
-
const dirs = findModuleDirs(repoRoot);
|
|
112
|
-
const master = {
|
|
113
|
-
prompts: [],
|
|
114
|
-
resources: [],
|
|
115
|
-
templates: [],
|
|
116
|
-
tools: [],
|
|
117
|
-
conflicts: [],
|
|
118
|
-
};
|
|
119
|
-
// maps to detect duplicates per type
|
|
120
|
-
const maps = {
|
|
121
|
-
prompts: new Map(),
|
|
122
|
-
resources: new Map(),
|
|
123
|
-
templates: new Map(),
|
|
124
|
-
tools: new Map(),
|
|
125
|
-
};
|
|
126
|
-
for (const moduleDir of dirs) {
|
|
127
|
-
const moduleName = path.basename(moduleDir);
|
|
128
|
-
for (const sub of SUBFOLDERS) {
|
|
129
|
-
const folder = path.join(moduleDir, sub);
|
|
130
|
-
const indexFile = findIndexFile(folder);
|
|
131
|
-
if (!indexFile)
|
|
132
|
-
continue;
|
|
133
|
-
let arr;
|
|
134
|
-
try {
|
|
135
|
-
arr = await loadArrayFromIndex(indexFile);
|
|
136
|
-
}
|
|
137
|
-
catch (err) {
|
|
138
|
-
// skip module on import error but record as conflict-like issue
|
|
139
|
-
master.conflicts.push({
|
|
140
|
-
key: `import-error:${moduleName}:${sub}`,
|
|
141
|
-
existing: { moduleName, modulePath: moduleDir },
|
|
142
|
-
incoming: { moduleName, modulePath: moduleDir },
|
|
143
|
-
});
|
|
144
|
-
continue;
|
|
145
|
-
}
|
|
146
|
-
if (!arr || !Array.isArray(arr))
|
|
147
|
-
continue;
|
|
148
|
-
for (const item of arr) {
|
|
149
|
-
const key = makeKeyForItem(item);
|
|
150
|
-
const provenance = { moduleName, modulePath: moduleDir };
|
|
151
|
-
const map = maps[sub];
|
|
152
|
-
if (map.has(key)) {
|
|
153
|
-
// record conflict deterministically (existing vs incoming)
|
|
154
|
-
const existing = map.get(key);
|
|
155
|
-
master.conflicts.push({ key, existing, incoming: provenance });
|
|
156
|
-
// skip adding duplicate
|
|
157
|
-
continue;
|
|
158
|
-
}
|
|
159
|
-
map.set(key, provenance);
|
|
160
|
-
master[sub].push({ ...item, provenance });
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
return master;
|
|
165
|
-
}
|
|
166
|
-
// For compatibility with CommonJS call sites (not exported by ESM), provide a sync wrapper
|
|
167
|
-
export function aggregateModulesSync(repoRoot) {
|
|
168
|
-
// synchronous wrapper that runs the async function and blocks — suitable for small module sets
|
|
169
|
-
const p = aggregateModules(repoRoot);
|
|
170
|
-
let result;
|
|
171
|
-
let done = false;
|
|
172
|
-
p.then((r) => {
|
|
173
|
-
result = r;
|
|
174
|
-
done = true;
|
|
175
|
-
}).catch((e) => {
|
|
176
|
-
throw e;
|
|
177
|
-
});
|
|
178
|
-
// spin-wait (acceptable in small dev scripts)
|
|
179
|
-
const until = Date.now() + 5000;
|
|
180
|
-
while (!done && Date.now() < until) { }
|
|
181
|
-
if (!done)
|
|
182
|
-
throw new Error("aggregateModulesSync: timeout waiting for async aggregation");
|
|
183
|
-
return result;
|
|
184
|
-
}
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRlTW9kdWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tY3AvYWdncmVnYXRlTW9kdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3R0FBd0c7QUFDeEcsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFpQjlDLE1BQU0sVUFBVSxHQUFHLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbEUsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsV0FBVztDQUNaLENBQUM7QUFFRixTQUFTLGFBQWEsQ0FBQyxNQUFjO0lBQ25DLEtBQUssTUFBTSxDQUFDLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUNqQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFTO0lBQy9CLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUTtRQUFFLE9BQU8sT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUNuRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDbkQs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Q0FDOUQsQ0FBQztJQUNKLE9BQU8sTUFBMkIsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQWdncmVnYXRvcjogaW1wb3J0IG1vZHVsZSBpbmRleCBmaWxlcyBhbmQgbWVyZ2UgZXhwb3J0ZWQgYXJyYXlzIHdpdGggcHJvdmVuYW5jZSArIGR1cGxpY2F0ZSBkZXRlY3Rpb25cbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSBcInVybFwiO1xuaW1wb3J0IHsgZmluZE1vZHVsZURpcnMgfSBmcm9tIFwiLi92YWxpZGF0aW9uXCI7XG5cbmV4cG9ydCB0eXBlIFByb3ZlbmFuY2UgPSB7IG1vZHVsZU5hbWU6IHN0cmluZzsgbW9kdWxlUGF0aDogc3RyaW5nIH07XG5leHBvcnQgdHlwZSBBZ2dyZWdhdGlvbkNvbmZsaWN0ID0ge1xuICBrZXk6IHN0cmluZztcbiAgZXhpc3Rpbmc6IFByb3ZlbmFuY2U7XG4gIGluY29taW5nOiBQcm92ZW5hbmNlO1xufTtcblxuZXhwb3J0IHR5cGUgQWdncmVnYXRpb25SZXN1bHQ8VCA9IGFueT4gPSB7XG4gIHByb21wdHM6IEFycmF5PFQgJiB7IHByb3ZlbmFuY2U6IFByb3ZlbmFuY2UgfT47XG4gIHJlc291cmNlczogQXJyYXk8VCAmIHsgcHJvdmVuYW5jZTogUHJvdmVuYW5jZSB9PjtcbiAgdGVtcGxhdGVzOiBBcnJheTxUICYgeyBwcm92ZW5hbmNlOiBQcm92ZW5hbmNlIH0+O1xuICB0b29sczogQXJyYXk8VCAmIHsgcHJvdmVuYW5jZTogUHJvdmVuYW5jZSB9PjtcbiAgY29uZmxpY3RzOiBBZ2dyZWdhdGlvbkNvbmZsaWN0W107XG59O1xuXG5jb25zdCBTVUJGT0xERVJTID0gW1wicHJvbXB0c1wiLCBcInJlc291cmNlc1wiLCBcInRlbXBsYXRlc1wiLCBcInRvb2xzXCJdO1xuY29uc3QgSU5ERVhfQ0FORElEQVRFUyA9IFtcbiAgXCJpbmRleC50c1wiLFxuICBcImluZGV4LnRzeFwiLFxuICBcImluZGV4LmpzXCIsXG4gIFwiaW5kZXguY2pzXCIsXG4gIFwiaW5kZXgubWpzXCIsXG5dO1xuXG5mdW5jdGlvbiBmaW5kSW5kZXhGaWxlKGZvbGRlcjogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgZm9yIChjb25zdCBjIG9mIElOREVYX0NBTkRJREFURVMpIHtcbiAgICBjb25zdCBmID0gcGF0aC5qb2luKGZvbGRlciwgYyk7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoZikpIHJldHVybiBmO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIG1ha2VLZXlGb3JJdGVtKGl0ZW06IGFueSk6IHN0cmluZyB7XG4gIGlmICghaXRlbSkgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGl0ZW0pO1xuICBpZiAodHlwZW9mIGl0ZW0gPT09IFwic3RyaW5nXCIpIHJldHVybiBgc3RyOiR7aXRlbX1gO1xuICBpZiAodHlwZW9mIGl0ZW0gPT09IFwibnVtYmVyXCIpIHJldHVybiBgbnVtOiR7aXRlbX1gO1xuICBpZiAoaXRlbS5pZCkgcmV0dXJuIGBpZDoke2l0ZW0uaWR9YDtcbiAgaWYgKGl0ZW0ubmFtZSkgcmV0dXJuIGBuYW1lOiR7aXRlbS5uYW1lfWA7XG4gIC8vIGZhbGxiYWNrIHRvIHN0YWJsZSBzdHJpbmdcbiAgdHJ5IHtcbiAgICByZXR1cm4gYG9iajoke0pTT04uc3RyaW5naWZ5KGl0ZW0pfWA7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gYG9iajoke1N0cmluZyhpdGVtKX1gO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRBcnJheUZyb21JbmRleChcbiAgZmlsZVBhdGg6IHN0cmluZ1xuKTogUHJvbWlzZTxhbnlbXSB8IHVuZGVmaW5lZD4ge1xuICAvLyBQcmVmZXIgYSBmYXN0LCBzdGF0aWMgcGFyc2Ugb2YgdGhlIGZpcnN0IGFycmF5IGxpdGVyYWwgZm91bmQgaW4gdGhlIGZpbGUuXG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgXCJ1dGY4XCIpO1xuICAgIGNvbnN0IHN0YXJ0ID0gY29udGVudC5pbmRleE9mKFwiW1wiKTtcbiAgICBpZiAoc3RhcnQgIT09IC0xKSB7XG4gICAgICBsZXQgZGVwdGggPSAwO1xuICAgICAgbGV0IGVuZCA9IC0xO1xuICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgY29udGVudC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjaCA9IGNvbnRlbnRbaV07XG4gICAgICAgIGlmIChjaCA9PT0gXCJbXCIpIGRlcHRoKys7XG4gICAgICAgIGVsc2UgaWYgKGNoID09PSBcIl1cIikge1xuICAgICAgICAgIGRlcHRoLS07XG4gICAgICAgICAgaWYgKGRlcHRoID09PSAwKSB7XG4gICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZW5kICE9PSAtMSkge1xuICAgICAgICBjb25zdCBhcnJUZXh0ID0gY29udGVudC5zbGljZShzdGFydCwgZW5kICsgMSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYXJyVGV4dCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBOb3JtYWxpemUgVFMgb2JqZWN0IGxpdGVyYWxzIHRvIEpTT046XG4gICAgICAgICAgLy8gLSBjb252ZXJ0IHNpbmdsZSBxdW90ZXMgdG8gZG91YmxlIHF1b3Rlc1xuICAgICAgICAgIC8vIC0gcXVvdGUgdW5xdW90ZWQgb2JqZWN0IGtleXNcbiAgICAgICAgICAvLyAtIHN0cmlwIHRyYWlsaW5nIGNvbW1hc1xuICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBhcnJUZXh0XG4gICAgICAgICAgICAvLyB1bmlmeSBxdW90ZXMgaW4gc3RyaW5nIGxpdGVyYWxzXG4gICAgICAgICAgICAucmVwbGFjZSgvJyg/OlxcXFwnfFteJ10pKicvZywgKG0pID0+IG0ucmVwbGFjZSgvJy9nLCAnXCInKSlcbiAgICAgICAgICAgIC8vIHF1b3RlIHVucXVvdGVkIGtleXMgYWZ0ZXIgeyBvciAsXG4gICAgICAgICAgICAucmVwbGFjZSgvKFtcXHssXVxccyopKFtBLVphLXpfJF1bXFx3JF0qKShcXHMqOikvZywgJyQxXCIkMlwiJDMnKVxuICAgICAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIGNvbW1hcyBiZWZvcmUgXSBvciB9XG4gICAgICAgICAgICAucmVwbGFjZSgvLChcXHMqW1xcfVxcXV0pL2csICckMScpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShub3JtYWxpemVkKTtcbiAgICAgICAgICB9IGNhdGNoIChlMikge1xuICAgICAgICAgICAgLy8gZmFsbHRocm91Z2ggdG8gaW1wb3J0IGF0dGVtcHQgYmVsb3dcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBpZ25vcmUgc3RhdGljIHBhcnNlIGVycm9ycyBhbmQgZmFsbCBiYWNrIHRvIGltcG9ydFxuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmaWxlVXJsID0gcGF0aFRvRmlsZVVSTChmaWxlUGF0aCkuaHJlZjtcbiAgICBjb25zdCBtb2QgPSBhd2FpdCBpbXBvcnQoZmlsZVVybCk7XG4gICAgLy8gRmluZCBmaXJzdCBleHBvcnQgdGhhdCBpcyBhbiBhcnJheVxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1vZCkpIHtcbiAgICAgIGNvbnN0IHZhbCA9IChtb2QgYXMgYW55KVtrZXldO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgLy8gZGVmYXVsdCBleHBvcnQgY2hlY2tcbiAgICBpZiAoQXJyYXkuaXNBcnJheSgobW9kIGFzIGFueSkuZGVmYXVsdCkpIHJldHVybiAobW9kIGFzIGFueSkuZGVmYXVsdDtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBmYWxsYmFjazogaWYgaW1wb3J0IGZhaWxzLCB0cnkgdG8gc3RhdGljLXBhcnNlIGFnYWluIChhbHJlYWR5IGF0dGVtcHRlZCkgYW5kIGZpbmFsbHkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFnZ3JlZ2F0ZU1vZHVsZXMoXG4gIHJlcG9Sb290OiBzdHJpbmdcbik6IFByb21pc2U8QWdncmVnYXRpb25SZXN1bHQ+IHtcbiAgY29uc3QgZGlycyA9IGZpbmRNb2R1bGVEaXJzKHJlcG9Sb290KTtcbiAgY29uc3QgbWFzdGVyID0ge1xuICAgIHByb21wdHM6IFtdIGFzIGFueVtdLFxuICAgIHJlc291cmNlczogW10gYXMgYW55W10sXG4gICAgdGVtcGxhdGVzOiBbXSBhcyBhbnlbXSxcbiAgICB0b29sczogW10gYXMgYW55W10sXG4gICAgY29uZmxpY3RzOiBbXSBhcyBBZ2dyZWdhdGlvbkNvbmZsaWN0W10sXG4gIH07XG5cbiAgLy8gbWFwcyB0byBkZXRlY3QgZHVwbGljYXRlcyBwZXIgdHlwZVxuICBjb25zdCBtYXBzOiBSZWNvcmQ8c3RyaW5nLCBNYXA8c3RyaW5nLCBQcm92ZW5hbmNlPj4gPSB7XG4gICAgcHJvbXB0czogbmV3IE1hcCgpLFxuICAgIHJlc291cmNlczogbmV3IE1hcCgpLFxuICAgIHRlbXBsYXRlczogbmV3IE1hcCgpLFxuICAgIHRvb2xzOiBuZXcgTWFwKCksXG4gIH07XG5cbiAgZm9yIChjb25zdCBtb2R1bGVEaXIgb2YgZGlycykge1xuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSBwYXRoLmJhc2VuYW1lKG1vZHVsZURpcik7XG4gICAgZm9yIChjb25zdCBzdWIgb2YgU1VCRk9MREVSUykge1xuICAgICAgY29uc3QgZm9sZGVyID0gcGF0aC5qb2luKG1vZHVsZURpciwgc3ViKTtcbiAgICAgIGNvbnN0IGluZGV4RmlsZSA9IGZpbmRJbmRleEZpbGUoZm9sZGVyKTtcbiAgICAgIGlmICghaW5kZXhGaWxlKSBjb250aW51ZTtcbiAgICAgIGxldCBhcnI6IGFueVtdIHwgdW5kZWZpbmVkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXJyID0gYXdhaXQgbG9hZEFycmF5RnJvbUluZGV4KGluZGV4RmlsZSk7XG4gICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAvLyBza2lwIG1vZHVsZSBvbiBpbXBvcnQgZXJyb3IgYnV0IHJlY29yZCBhcyBjb25mbGljdC1saWtlIGlzc3VlXG4gICAgICAgIG1hc3Rlci5jb25mbGljdHMucHVzaCh7XG4gICAgICAgICAga2V5OiBgaW1wb3J0LWVycm9yOiR7bW9kdWxlTmFtZX06JHtzdWJ9YCxcbiAgICAgICAgICBleGlzdGluZzogeyBtb2R1bGVOYW1lLCBtb2R1bGVQYXRoOiBtb2R1bGVEaXIgfSxcbiAgICAgICAgICBpbmNvbWluZzogeyBtb2R1bGVOYW1lLCBtb2R1bGVQYXRoOiBtb2R1bGVEaXIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFhcnIgfHwgIUFycmF5LmlzQXJyYXkoYXJyKSkgY29udGludWU7XG5cbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnIpIHtcbiAgICAgICAgY29uc3Qga2V5ID0gbWFrZUtleUZvckl0ZW0oaXRlbSk7XG4gICAgICAgIGNvbnN0IHByb3ZlbmFuY2UgPSB7IG1vZHVsZU5hbWUsIG1vZHVsZVBhdGg6IG1vZHVsZURpciB9O1xuICAgICAgICBjb25zdCBtYXAgPSBtYXBzW3N1Yl07XG4gICAgICAgIGlmIChtYXAuaGFzKGtleSkpIHtcbiAgICAgICAgICAvLyByZWNvcmQgY29uZmxpY3QgZGV0ZXJtaW5pc3RpY2FsbHkgKGV4aXN0aW5nIHZzIGluY29taW5nKVxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gbWFwLmdldChrZXkpITtcbiAgICAgICAgICBtYXN0ZXIuY29uZmxpY3RzLnB1c2goeyBrZXksIGV4aXN0aW5nLCBpbmNvbWluZzogcHJvdmVuYW5jZSB9KTtcbiAgICAgICAgICAvLyBza2lwIGFkZGluZyBkdXBsaWNhdGVcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBtYXAuc2V0KGtleSwgcHJvdmVuYW5jZSk7XG4gICAgICAgIChtYXN0ZXIgYXMgYW55KVtzdWJdLnB1c2goeyAuLi5pdGVtLCBwcm92ZW5hbmNlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtYXN0ZXI7XG59XG5cbi8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggQ29tbW9uSlMgY2FsbCBzaXRlcyAobm90IGV4cG9ydGVkIGJ5IEVTTSksIHByb3ZpZGUgYSBzeW5jIHdyYXBwZXJcbmV4cG9ydCBmdW5jdGlvbiBhZ2dyZWdhdGVNb2R1bGVzU3luYyhyZXBvUm9vdDogc3RyaW5nKSB7XG4gIC8vIHN5bmNocm9ub3VzIHdyYXBwZXIgdGhhdCBydW5zIHRoZSBhc3luYyBmdW5jdGlvbiBhbmQgYmxvY2tzIOKAlCBzdWl0YWJsZSBmb3Igc21hbGwgbW9kdWxlIHNldHNcbiAgY29uc3QgcCA9IGFnZ3JlZ2F0ZU1vZHVsZXMocmVwb1Jvb3QpO1xuICBsZXQgcmVzdWx0OiBhbnk7XG4gIGxldCBkb25lID0gZmFsc2U7XG4gIHAudGhlbigocikgPT4ge1xuICAgIHJlc3VsdCA9IHI7XG4gICAgZG9uZSA9IHRydWU7XG4gIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgdGhyb3cgZTtcbiAgfSk7XG4gIC8vIHNwaW4td2FpdCAoYWNjZXB0YWJsZSBpbiBzbWFsbCBkZXYgc2NyaXB0cylcbiAgY29uc3QgdW50aWwgPSBEYXRlLm5vdygpICsgNTAwMDtcbiAgd2hpbGUgKCFkb25lICYmIERhdGUubm93KCkgPCB1bnRpbCkge31cbiAgaWYgKCFkb25lKVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiYWdncmVnYXRlTW9kdWxlc1N5bmM6IHRpbWVvdXQgd2FpdGluZyBmb3IgYXN5bmMgYWdncmVnYXRpb25cIlxuICAgICk7XG4gIHJldHVybiByZXN1bHQgYXMgQWdncmVnYXRpb25SZXN1bHQ7XG59XG4iXX0=
|
package/lib/esm/mcp/code.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export declare function isSourceFile(p: string): boolean;
|
|
2
|
-
export declare function isTestFile(p: string): boolean;
|
|
3
|
-
export declare function extractExports(fileContent: string): string[];
|
|
4
|
-
export declare function extractDecorators(fileContent: string): string[];
|
|
5
|
-
export declare function summarizeReadme(readme?: string): {
|
|
6
|
-
title: string;
|
|
7
|
-
bullets: string[];
|
|
8
|
-
} | undefined;
|
|
9
|
-
export declare function analyzeRepo(root: string): {
|
|
10
|
-
files: string[];
|
|
11
|
-
testFiles: string[];
|
|
12
|
-
api: Record<string, {
|
|
13
|
-
exports: string[];
|
|
14
|
-
decorators: string[];
|
|
15
|
-
}>;
|
|
16
|
-
tests: Record<string, {
|
|
17
|
-
mentions: string[];
|
|
18
|
-
}>;
|
|
19
|
-
readme: {
|
|
20
|
-
title: string;
|
|
21
|
-
bullets: string[];
|
|
22
|
-
} | undefined;
|
|
23
|
-
};
|
package/lib/esm/mcp/code.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
// Analysis helpers (minimal yet effective, text-based to avoid heavy AST deps)
|
|
2
|
-
import path from "path";
|
|
3
|
-
import fs from "fs";
|
|
4
|
-
import { listFilesRecursive, readFileSafe } from "./utils";
|
|
5
|
-
export function isSourceFile(p) {
|
|
6
|
-
return /\.(ts|tsx|js|jsx)$/.test(p) && !p.endsWith(".d.ts");
|
|
7
|
-
}
|
|
8
|
-
export function isTestFile(p) {
|
|
9
|
-
return /(\.test\.|\.spec\.)/.test(p);
|
|
10
|
-
}
|
|
11
|
-
export function extractExports(fileContent) {
|
|
12
|
-
const names = new Set();
|
|
13
|
-
const exportRe = /(export\s+(?:default\s+)?(?:class|function|const|let|var|interface|type|enum)\s+)([A-Za-z0-9_]+)/g;
|
|
14
|
-
const namedRe = /export\s*\{([^}]+)\}/g;
|
|
15
|
-
let m;
|
|
16
|
-
while ((m = exportRe.exec(fileContent)))
|
|
17
|
-
names.add(m[2]);
|
|
18
|
-
while ((m = namedRe.exec(fileContent))) {
|
|
19
|
-
m[1]
|
|
20
|
-
.split(",")
|
|
21
|
-
.map((s) => s.trim().split(" as ")[0].trim())
|
|
22
|
-
.forEach((n) => {
|
|
23
|
-
if (n)
|
|
24
|
-
names.add(n);
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
return [...names].sort();
|
|
28
|
-
}
|
|
29
|
-
export function extractDecorators(fileContent) {
|
|
30
|
-
const decs = new Set();
|
|
31
|
-
const decRe = /@([A-Za-z_][A-Za-z0-9_]*)/g;
|
|
32
|
-
let m;
|
|
33
|
-
while ((m = decRe.exec(fileContent)))
|
|
34
|
-
decs.add(m[1]);
|
|
35
|
-
return [...decs].sort();
|
|
36
|
-
}
|
|
37
|
-
export function summarizeReadme(readme) {
|
|
38
|
-
if (!readme)
|
|
39
|
-
return undefined;
|
|
40
|
-
const lines = readme.split(/\r?\n/).filter(Boolean);
|
|
41
|
-
const title = lines.find((l) => /^#\s+/.test(l))?.replace(/^#\s+/, "") || "README";
|
|
42
|
-
const bullets = lines.filter((l) => /^[-*]\s+/.test(l)).slice(0, 20);
|
|
43
|
-
return { title, bullets };
|
|
44
|
-
}
|
|
45
|
-
export function analyzeRepo(root) {
|
|
46
|
-
const src = path.join(root, "src");
|
|
47
|
-
const testDir = path.join(root, "tests");
|
|
48
|
-
const readmePath = path.join(root, "README.md");
|
|
49
|
-
const readme = readFileSafe(readmePath);
|
|
50
|
-
const files = fs.existsSync(src) ? listFilesRecursive(src, isSourceFile) : [];
|
|
51
|
-
const testFiles = fs.existsSync(testDir)
|
|
52
|
-
? listFilesRecursive(testDir, (f) => isSourceFile(f) && isTestFile(f))
|
|
53
|
-
: [];
|
|
54
|
-
const api = {};
|
|
55
|
-
for (const f of files) {
|
|
56
|
-
const content = readFileSafe(f) || "";
|
|
57
|
-
api[path.relative(root, f)] = {
|
|
58
|
-
exports: extractExports(content),
|
|
59
|
-
decorators: extractDecorators(content),
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
const tests = {};
|
|
63
|
-
for (const f of testFiles) {
|
|
64
|
-
const content = readFileSafe(f) || "";
|
|
65
|
-
const mentions = Array.from(new Set([...extractExports(content), ...extractDecorators(content)])).sort();
|
|
66
|
-
tests[path.relative(root, f)] = { mentions };
|
|
67
|
-
}
|
|
68
|
-
return { files, testFiles, api, tests, readme: summarizeReadme(readme) };
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tY3AvY29kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrRUFBK0U7QUFDL0UsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTNELE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBUztJQUNwQyxPQUFPLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUNELE1BQU0sVUFBVSxVQUFVLENBQUMsQ0FBUztJQUNsQyxPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxXQUFtQjtJQUNoRCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ2hDLE1BQU0sUUFBUSxHQUNaLG1HQUFtRyxDQUFDO0lBQ3RHLE1BQU0sT0FBTyxHQUFHLHVCQUF1QixDQUFDO0lBQ3hDLElBQUksQ0FBeUIsQ0FBQztJQUM5QixPQUFPLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELE9BQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FB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UUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHO1lBQzVCLE9BQU8sRUFBRSxjQUFjLENBQUMsT0FBTyxDQUFDO1lBQ2hDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7U0FDdkMsQ0FBQztJQUNKLENBQUM7SUFDRCxNQUFNLEtBQUssR0FBMkMsRUFBRSxDQUFDO0lBQ3pELEtBQUssTUFBTSxDQUFDLElBQUksU0FBUyxFQUFFLENBQUM7UUFDMUIsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUN6QixJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUNyRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1QsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDM0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuYWx5c2lzIGhlbHBlcnMgKG1pbmltYWwgeWV0IGVmZmVjdGl2ZSwgdGV4dC1iYXNlZCB0byBhdm9pZCBoZWF2eSBBU1QgZGVwcylcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBsaXN0RmlsZXNSZWN1cnNpdmUsIHJlYWRGaWxlU2FmZSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NvdXJjZUZpbGUocDogc3RyaW5nKSB7XG4gIHJldHVybiAvXFwuKHRzfHRzeHxqc3xqc3gpJC8udGVzdChwKSAmJiAhcC5lbmRzV2l0aChcIi5kLnRzXCIpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVGVzdEZpbGUocDogc3RyaW5nKSB7XG4gIHJldHVybiAvKFxcLnRlc3RcXC58XFwuc3BlY1xcLikvLnRlc3QocCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RXhwb3J0cyhmaWxlQ29udGVudDogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCBuYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBleHBvcnRSZSA9XG4gICAgLyhleHBvcnRcXHMrKD86ZGVmYXVsdFxccyspPyg/OmNsYXNzfGZ1bmN0aW9ufGNvbnN0fGxldHx2YXJ8aW50ZXJmYWNlfHR5cGV8ZW51bSlcXHMrKShbQS1aYS16MC05X10rKS9nO1xuICBjb25zdCBuYW1lZFJlID0gL2V4cG9ydFxccypcXHsoW159XSspXFx9L2c7XG4gIGxldCBtOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xuICB3aGlsZSAoKG0gPSBleHBvcnRSZS5leGVjKGZpbGVDb250ZW50KSkpIG5hbWVzLmFkZChtWzJdKTtcbiAgd2hpbGUgKChtID0gbmFtZWRSZS5leGVjKGZpbGVDb250ZW50KSkpIHtcbiAgICBtWzFdXG4gICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAubWFwKChzKSA9PiBzLnRyaW0oKS5zcGxpdChcIiBhcyBcIilbMF0udHJpbSgpKVxuICAgICAgLmZvckVhY2goKG4pID0+IHtcbiAgICAgICAgaWYgKG4pIG5hbWVzLmFkZChuKTtcbiAgICAgIH0pO1xuICB9XG4gIHJldHVybiBbLi4ubmFtZXNdLnNvcnQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3REZWNvcmF0b3JzKGZpbGVDb250ZW50OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGRlY3MgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgZGVjUmUgPSAvQChbQS1aYS16X11bQS1aYS16MC05X10qKS9nO1xuICBsZXQgbTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgd2hpbGUgKChtID0gZGVjUmUuZXhlYyhmaWxlQ29udGVudCkpKSBkZWNzLmFkZChtWzFdKTtcbiAgcmV0dXJuIFsuLi5kZWNzXS5zb3J0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdW1tYXJpemVSZWFkbWUocmVhZG1lPzogc3RyaW5nKSB7XG4gIGlmICghcmVhZG1lKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBsaW5lcyA9IHJlYWRtZS5zcGxpdCgvXFxyP1xcbi8pLmZpbHRlcihCb29sZWFuKTtcbiAgY29uc3QgdGl0bGUgPVxuICAgIGxpbmVzLmZpbmQoKGwpID0+IC9eI1xccysvLnRlc3QobCkpPy5yZXBsYWNlKC9eI1xccysvLCBcIlwiKSB8fCBcIlJFQURNRVwiO1xuICBjb25zdCBidWxsZXRzID0gbGluZXMuZmlsdGVyKChsKSA9PiAvXlstKl1cXHMrLy50ZXN0KGwpKS5zbGljZSgwLCAyMCk7XG4gIHJldHVybiB7IHRpdGxlLCBidWxsZXRzIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbmFseXplUmVwbyhyb290OiBzdHJpbmcpIHtcbiAgY29uc3Qgc3JjID0gcGF0aC5qb2luKHJvb3QsIFwic3JjXCIpO1xuICBjb25zdCB0ZXN0RGlyID0gcGF0aC5qb2luKHJvb3QsIFwidGVzdHNcIik7XG4gIGNvbnN0IHJlYWRtZVBhdGggPSBwYXRoLmpvaW4ocm9vdCwgXCJSRUFETUUubWRcIik7XG4gIGNvbnN0IHJlYWRtZSA9IHJlYWRGaWxlU2FmZShyZWFkbWVQYXRoKTtcblxuICBjb25zdCBmaWxlcyA9IGZzLmV4aXN0c1N5bmMoc3JjKSA/IGxpc3RGaWxlc1JlY3Vyc2l2ZShzcmMsIGlzU291cmNlRmlsZSkgOiBbXTtcbiAgY29uc3QgdGVzdEZpbGVzID0gZnMuZXhpc3RzU3luYyh0ZXN0RGlyKVxuICAgID8gbGlzdEZpbGVzUmVjdXJzaXZlKHRlc3REaXIsIChmKSA9PiBpc1NvdXJjZUZpbGUoZikgJiYgaXNUZXN0RmlsZShmKSlcbiAgICA6IFtdO1xuXG4gIGNvbnN0IGFwaTogUmVjb3JkPHN0cmluZywgeyBleHBvcnRzOiBzdHJpbmdbXTsgZGVjb3JhdG9yczogc3RyaW5nW10gfT4gPSB7fTtcbiAgZm9yIChjb25zdCBmIG9mIGZpbGVzKSB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU2FmZShmKSB8fCBcIlwiO1xuICAgIGFwaVtwYXRoLnJlbGF0aXZlKHJvb3QsIGYpXSA9IHtcbiAgICAgIGV4cG9ydHM6IGV4dHJhY3RFeHBvcnRzKGNvbnRlbnQpLFxuICAgICAgZGVjb3JhdG9yczogZXh0cmFjdERlY29yYXRvcnMoY29udGVudCksXG4gICAgfTtcbiAgfVxuICBjb25zdCB0ZXN0czogUmVjb3JkPHN0cmluZywgeyBtZW50aW9uczogc3RyaW5nW10gfT4gPSB7fTtcbiAgZm9yIChjb25zdCBmIG9mIHRlc3RGaWxlcykge1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZVNhZmUoZikgfHwgXCJcIjtcbiAgICBjb25zdCBtZW50aW9ucyA9IEFycmF5LmZyb20oXG4gICAgICBuZXcgU2V0KFsuLi5leHRyYWN0RXhwb3J0cyhjb250ZW50KSwgLi4uZXh0cmFjdERlY29yYXRvcnMoY29udGVudCldKVxuICAgICkuc29ydCgpO1xuICAgIHRlc3RzW3BhdGgucmVsYXRpdmUocm9vdCwgZildID0geyBtZW50aW9ucyB9O1xuICB9XG4gIHJldHVybiB7IGZpbGVzLCB0ZXN0RmlsZXMsIGFwaSwgdGVzdHMsIHJlYWRtZTogc3VtbWFyaXplUmVhZG1lKHJlYWRtZSkgfTtcbn1cbiJdfQ==
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
export type DecoratorSpec = {
|
|
2
|
-
name: string;
|
|
3
|
-
args?: unknown[];
|
|
4
|
-
};
|
|
5
|
-
export type AttributeSpec = {
|
|
6
|
-
name: string;
|
|
7
|
-
type: string;
|
|
8
|
-
decorators?: DecoratorSpec[];
|
|
9
|
-
};
|
|
10
|
-
export declare const decoratorTools: {
|
|
11
|
-
readonly createOrUpdateModelTool: {
|
|
12
|
-
readonly name: "create-or-update-model";
|
|
13
|
-
readonly description: "Create or update a validation-ready model class";
|
|
14
|
-
readonly execute: (args: {
|
|
15
|
-
filePath: string;
|
|
16
|
-
className: string;
|
|
17
|
-
classDecorators?: DecoratorSpec[];
|
|
18
|
-
properties: AttributeSpec[];
|
|
19
|
-
importsFrom: string;
|
|
20
|
-
overwrite?: boolean;
|
|
21
|
-
}) => Promise<{
|
|
22
|
-
filePath: string;
|
|
23
|
-
}>;
|
|
24
|
-
};
|
|
25
|
-
readonly addAttributeTool: {
|
|
26
|
-
readonly name: "add-attribute";
|
|
27
|
-
readonly description: "Add a decorated attribute to an existing model";
|
|
28
|
-
readonly execute: (args: {
|
|
29
|
-
filePath: string;
|
|
30
|
-
className: string;
|
|
31
|
-
attribute: AttributeSpec;
|
|
32
|
-
importsFrom: string;
|
|
33
|
-
}) => Promise<{
|
|
34
|
-
filePath: string;
|
|
35
|
-
}>;
|
|
36
|
-
};
|
|
37
|
-
readonly removeAttributeTool: {
|
|
38
|
-
readonly name: "remove-attribute";
|
|
39
|
-
readonly description: "Remove an attribute from a model class";
|
|
40
|
-
readonly execute: (args: {
|
|
41
|
-
filePath: string;
|
|
42
|
-
className: string;
|
|
43
|
-
attributeName: string;
|
|
44
|
-
}) => Promise<{
|
|
45
|
-
filePath: string;
|
|
46
|
-
}>;
|
|
47
|
-
};
|
|
48
|
-
readonly applyDecoratorTool: {
|
|
49
|
-
readonly name: "apply-decorator";
|
|
50
|
-
readonly description: "Apply a decorator to a class or property";
|
|
51
|
-
readonly execute: (args: {
|
|
52
|
-
filePath: string;
|
|
53
|
-
className: string;
|
|
54
|
-
target: {
|
|
55
|
-
kind: "class" | "property";
|
|
56
|
-
name?: string;
|
|
57
|
-
};
|
|
58
|
-
decorator: DecoratorSpec;
|
|
59
|
-
importsFrom: string;
|
|
60
|
-
}) => Promise<{
|
|
61
|
-
filePath: string;
|
|
62
|
-
}>;
|
|
63
|
-
};
|
|
64
|
-
readonly removeDecoratorTool: {
|
|
65
|
-
readonly name: "remove-decorator";
|
|
66
|
-
readonly description: "Remove a decorator from a class or property";
|
|
67
|
-
readonly execute: (args: {
|
|
68
|
-
filePath: string;
|
|
69
|
-
className: string;
|
|
70
|
-
target: {
|
|
71
|
-
kind: "class" | "property";
|
|
72
|
-
name?: string;
|
|
73
|
-
};
|
|
74
|
-
decoratorName: string;
|
|
75
|
-
}) => Promise<{
|
|
76
|
-
filePath: string;
|
|
77
|
-
}>;
|
|
78
|
-
};
|
|
79
|
-
readonly scaffoldValidatorTool: {
|
|
80
|
-
readonly name: "scaffold-validator";
|
|
81
|
-
readonly description: "Scaffold a validator class and optional decorator";
|
|
82
|
-
readonly execute: (args: {
|
|
83
|
-
validatorsDir: string;
|
|
84
|
-
decoratorDir?: string;
|
|
85
|
-
name: string;
|
|
86
|
-
}) => Promise<{
|
|
87
|
-
classFile: string;
|
|
88
|
-
decoratorFile: string | undefined;
|
|
89
|
-
}>;
|
|
90
|
-
};
|
|
91
|
-
readonly scaffoldSerializerTool: {
|
|
92
|
-
readonly name: "scaffold-serializer";
|
|
93
|
-
readonly description: "Scaffold a serializer class and optional registry";
|
|
94
|
-
readonly execute: (args: {
|
|
95
|
-
dir: string;
|
|
96
|
-
name: string;
|
|
97
|
-
registerDir?: string;
|
|
98
|
-
setDefault?: boolean;
|
|
99
|
-
}) => Promise<{
|
|
100
|
-
classFile: string;
|
|
101
|
-
registerFile: string | undefined;
|
|
102
|
-
}>;
|
|
103
|
-
};
|
|
104
|
-
readonly scaffoldHashingTool: {
|
|
105
|
-
readonly name: "scaffold-hashing";
|
|
106
|
-
readonly description: "Scaffold a hashing function and optional registry";
|
|
107
|
-
readonly execute: (args: {
|
|
108
|
-
dir: string;
|
|
109
|
-
name: string;
|
|
110
|
-
registerDir?: string;
|
|
111
|
-
setDefault?: boolean;
|
|
112
|
-
}) => Promise<{
|
|
113
|
-
functionFile: string;
|
|
114
|
-
registerFile: string | undefined;
|
|
115
|
-
}>;
|
|
116
|
-
};
|
|
117
|
-
};
|
|
118
|
-
export type DecoratorTools = typeof decoratorTools;
|