@dotcontext/cli 0.8.1 → 0.9.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 +1 -1
- package/README.md +234 -135
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +27 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/generators/documentation/codebaseMapGenerator.d.ts +29 -46
- package/dist/generators/documentation/codebaseMapGenerator.d.ts.map +1 -1
- package/dist/generators/documentation/codebaseMapGenerator.js +148 -244
- package/dist/generators/documentation/codebaseMapGenerator.js.map +1 -1
- package/dist/generators/documentation/documentationGenerator.d.ts.map +1 -1
- package/dist/generators/documentation/documentationGenerator.js +13 -8
- package/dist/generators/documentation/documentationGenerator.js.map +1 -1
- package/dist/generators/documentation/index.d.ts +1 -1
- package/dist/generators/documentation/index.d.ts.map +1 -1
- package/dist/generators/shared/structures/documentation/architecture.d.ts.map +1 -1
- package/dist/generators/shared/structures/documentation/architecture.js +9 -9
- package/dist/generators/shared/structures/documentation/architecture.js.map +1 -1
- package/dist/generators/shared/structures/documentation/dataFlow.js +2 -2
- package/dist/generators/shared/structures/documentation/dataFlow.js.map +1 -1
- package/dist/generators/shared/structures/documentation/glossary.js +2 -2
- package/dist/generators/shared/structures/documentation/glossary.js.map +1 -1
- package/dist/generators/shared/structures/documentation/projectOverview.d.ts.map +1 -1
- package/dist/generators/shared/structures/documentation/projectOverview.js +10 -11
- package/dist/generators/shared/structures/documentation/projectOverview.js.map +1 -1
- package/dist/generators/shared/structures/skills/factory.d.ts.map +1 -1
- package/dist/generators/shared/structures/skills/factory.js +19 -15
- package/dist/generators/shared/structures/skills/factory.js.map +1 -1
- package/dist/generators/skills/skillGenerator.d.ts +2 -1
- package/dist/generators/skills/skillGenerator.d.ts.map +1 -1
- package/dist/generators/skills/skillGenerator.js +47 -6
- package/dist/generators/skills/skillGenerator.js.map +1 -1
- package/dist/generators/skills/templates/indexTemplate.d.ts.map +1 -1
- package/dist/generators/skills/templates/indexTemplate.js +22 -15
- package/dist/generators/skills/templates/indexTemplate.js.map +1 -1
- package/dist/harness/index.d.ts +11 -0
- package/dist/harness/index.d.ts.map +1 -0
- package/dist/harness/index.js +33 -0
- package/dist/harness/index.js.map +1 -0
- package/dist/index.js +365 -339
- package/dist/index.js.map +1 -1
- package/dist/mcp/bin.d.ts +19 -0
- package/dist/mcp/bin.d.ts.map +1 -0
- package/dist/mcp/bin.js +189 -0
- package/dist/mcp/bin.js.map +1 -0
- package/dist/mcp/index.d.ts +12 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +28 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/services/autoFill/autoFillService.d.ts.map +1 -1
- package/dist/services/autoFill/autoFillService.js +7 -6
- package/dist/services/autoFill/autoFillService.js.map +1 -1
- package/dist/services/cli/index.d.ts +8 -0
- package/dist/services/cli/index.d.ts.map +1 -0
- package/dist/services/cli/index.js +17 -0
- package/dist/services/cli/index.js.map +1 -0
- package/dist/services/cli/mcpInstallService.d.ts +57 -0
- package/dist/services/cli/mcpInstallService.d.ts.map +1 -0
- package/dist/services/cli/mcpInstallService.js +607 -0
- package/dist/services/cli/mcpInstallService.js.map +1 -0
- package/dist/services/cli/stateDetector.d.ts +55 -0
- package/dist/services/cli/stateDetector.d.ts.map +1 -0
- package/dist/services/cli/stateDetector.js +191 -0
- package/dist/services/cli/stateDetector.js.map +1 -0
- package/dist/services/export/contextExportService.js +3 -3
- package/dist/services/export/contextExportService.js.map +1 -1
- package/dist/services/export/exportRulesService.d.ts +1 -0
- package/dist/services/export/exportRulesService.d.ts.map +1 -1
- package/dist/services/export/exportRulesService.js +20 -8
- package/dist/services/export/exportRulesService.js.map +1 -1
- package/dist/services/export/skillExportService.d.ts.map +1 -1
- package/dist/services/export/skillExportService.js +4 -1
- package/dist/services/export/skillExportService.js.map +1 -1
- package/dist/services/harness/agentsService.d.ts +31 -0
- package/dist/services/harness/agentsService.d.ts.map +1 -0
- package/dist/services/harness/agentsService.js +135 -0
- package/dist/services/harness/agentsService.js.map +1 -0
- package/dist/services/harness/contextService.d.ts +167 -0
- package/dist/services/harness/contextService.d.ts.map +1 -0
- package/dist/services/harness/contextService.js +403 -0
- package/dist/services/harness/contextService.js.map +1 -0
- package/dist/services/harness/contextTools.d.ts +95 -0
- package/dist/services/harness/contextTools.d.ts.map +1 -0
- package/dist/services/harness/contextTools.js +990 -0
- package/dist/services/harness/contextTools.js.map +1 -0
- package/dist/services/harness/datasetService.d.ts +63 -0
- package/dist/services/harness/datasetService.d.ts.map +1 -0
- package/dist/services/harness/datasetService.js +261 -0
- package/dist/services/harness/datasetService.js.map +1 -0
- package/dist/services/harness/executionService.d.ts +74 -0
- package/dist/services/harness/executionService.d.ts.map +1 -0
- package/dist/services/harness/executionService.js +213 -0
- package/dist/services/harness/executionService.js.map +1 -0
- package/dist/services/harness/index.d.ts +21 -0
- package/dist/services/harness/index.d.ts.map +1 -0
- package/dist/services/harness/index.js +52 -0
- package/dist/services/harness/index.js.map +1 -0
- package/dist/services/harness/plansService.d.ts +45 -0
- package/dist/services/harness/plansService.d.ts.map +1 -0
- package/dist/services/harness/plansService.js +251 -0
- package/dist/services/harness/plansService.js.map +1 -0
- package/dist/services/harness/policyService.d.ts +116 -0
- package/dist/services/harness/policyService.d.ts.map +1 -0
- package/dist/services/harness/policyService.js +510 -0
- package/dist/services/harness/policyService.js.map +1 -0
- package/dist/services/harness/replayService.d.ts +63 -0
- package/dist/services/harness/replayService.d.ts.map +1 -0
- package/dist/services/harness/replayService.js +242 -0
- package/dist/services/harness/replayService.js.map +1 -0
- package/dist/services/harness/runtimeStateService.d.ts +120 -0
- package/dist/services/harness/runtimeStateService.d.ts.map +1 -0
- package/dist/services/harness/runtimeStateService.js +316 -0
- package/dist/services/harness/runtimeStateService.js.map +1 -0
- package/dist/services/harness/sensorCatalogService.d.ts +50 -0
- package/dist/services/harness/sensorCatalogService.d.ts.map +1 -0
- package/dist/services/harness/sensorCatalogService.js +308 -0
- package/dist/services/harness/sensorCatalogService.js.map +1 -0
- package/dist/services/harness/sensorsService.d.ts +64 -0
- package/dist/services/harness/sensorsService.d.ts.map +1 -0
- package/dist/services/harness/sensorsService.js +88 -0
- package/dist/services/harness/sensorsService.js.map +1 -0
- package/dist/services/harness/skillsService.d.ts +31 -0
- package/dist/services/harness/skillsService.d.ts.map +1 -0
- package/dist/services/harness/skillsService.js +296 -0
- package/dist/services/harness/skillsService.js.map +1 -0
- package/dist/services/harness/taskContractsService.d.ts +88 -0
- package/dist/services/harness/taskContractsService.d.ts.map +1 -0
- package/dist/services/harness/taskContractsService.js +210 -0
- package/dist/services/harness/taskContractsService.js.map +1 -0
- package/dist/services/harness/workflowStateService.d.ts +51 -0
- package/dist/services/harness/workflowStateService.d.ts.map +1 -0
- package/dist/services/harness/workflowStateService.js +215 -0
- package/dist/services/harness/workflowStateService.js.map +1 -0
- package/dist/services/import/agentsDetector.d.ts.map +1 -1
- package/dist/services/import/agentsDetector.js +14 -8
- package/dist/services/import/agentsDetector.js.map +1 -1
- package/dist/services/import/importAgentsService.d.ts +2 -2
- package/dist/services/import/importAgentsService.d.ts.map +1 -1
- package/dist/services/import/importAgentsService.js +8 -1
- package/dist/services/import/importAgentsService.js.map +1 -1
- package/dist/services/import/importRulesService.d.ts +2 -2
- package/dist/services/import/importRulesService.d.ts.map +1 -1
- package/dist/services/import/importRulesService.js +8 -1
- package/dist/services/import/importRulesService.js.map +1 -1
- package/dist/services/import/presets.js +2 -2
- package/dist/services/import/presets.js.map +1 -1
- package/dist/services/import/rulesDetector.d.ts.map +1 -1
- package/dist/services/import/rulesDetector.js +16 -1
- package/dist/services/import/rulesDetector.js.map +1 -1
- package/dist/services/import/types.d.ts +1 -1
- package/dist/services/import/types.d.ts.map +1 -1
- package/dist/services/mcp/actionLogger.d.ts +2 -1
- package/dist/services/mcp/actionLogger.d.ts.map +1 -1
- package/dist/services/mcp/actionLogger.js +76 -15
- package/dist/services/mcp/actionLogger.js.map +1 -1
- package/dist/services/mcp/gateway/agent.d.ts.map +1 -1
- package/dist/services/mcp/gateway/agent.js +15 -104
- package/dist/services/mcp/gateway/agent.js.map +1 -1
- package/dist/services/mcp/gateway/context.d.ts.map +1 -1
- package/dist/services/mcp/gateway/context.js +60 -172
- package/dist/services/mcp/gateway/context.js.map +1 -1
- package/dist/services/mcp/gateway/explore.js +6 -6
- package/dist/services/mcp/gateway/explore.js.map +1 -1
- package/dist/services/mcp/gateway/harness.d.ts +7 -0
- package/dist/services/mcp/gateway/harness.d.ts.map +1 -0
- package/dist/services/mcp/gateway/harness.js +337 -0
- package/dist/services/mcp/gateway/harness.js.map +1 -0
- package/dist/services/mcp/gateway/index.d.ts +3 -2
- package/dist/services/mcp/gateway/index.d.ts.map +1 -1
- package/dist/services/mcp/gateway/index.js +4 -2
- package/dist/services/mcp/gateway/index.js.map +1 -1
- package/dist/services/mcp/gateway/metrics.d.ts.map +1 -1
- package/dist/services/mcp/gateway/metrics.js +8 -8
- package/dist/services/mcp/gateway/metrics.js.map +1 -1
- package/dist/services/mcp/gateway/plan.d.ts.map +1 -1
- package/dist/services/mcp/gateway/plan.js +23 -211
- package/dist/services/mcp/gateway/plan.js.map +1 -1
- package/dist/services/mcp/gateway/shared.d.ts +1 -32
- package/dist/services/mcp/gateway/shared.d.ts.map +1 -1
- package/dist/services/mcp/gateway/shared.js +4 -30
- package/dist/services/mcp/gateway/shared.js.map +1 -1
- package/dist/services/mcp/gateway/skill.d.ts.map +1 -1
- package/dist/services/mcp/gateway/skill.js +14 -281
- package/dist/services/mcp/gateway/skill.js.map +1 -1
- package/dist/services/mcp/gateway/types.d.ts +74 -3
- package/dist/services/mcp/gateway/types.d.ts.map +1 -1
- package/dist/services/mcp/gateway/workflowAdvance.d.ts.map +1 -1
- package/dist/services/mcp/gateway/workflowAdvance.js +37 -9
- package/dist/services/mcp/gateway/workflowAdvance.js.map +1 -1
- package/dist/services/mcp/gateway/workflowInit.d.ts.map +1 -1
- package/dist/services/mcp/gateway/workflowInit.js +8 -2
- package/dist/services/mcp/gateway/workflowInit.js.map +1 -1
- package/dist/services/mcp/gateway/workflowManage.d.ts +17 -1
- package/dist/services/mcp/gateway/workflowManage.d.ts.map +1 -1
- package/dist/services/mcp/gateway/workflowManage.js +155 -10
- package/dist/services/mcp/gateway/workflowManage.js.map +1 -1
- package/dist/services/mcp/gateway/workflowStatus.d.ts.map +1 -1
- package/dist/services/mcp/gateway/workflowStatus.js +5 -3
- package/dist/services/mcp/gateway/workflowStatus.js.map +1 -1
- package/dist/services/mcp/gatewayTools.d.ts +1 -1
- package/dist/services/mcp/gatewayTools.d.ts.map +1 -1
- package/dist/services/mcp/gatewayTools.js +2 -1
- package/dist/services/mcp/gatewayTools.js.map +1 -1
- package/dist/services/mcp/index.d.ts +10 -4
- package/dist/services/mcp/index.d.ts.map +1 -1
- package/dist/services/mcp/index.js +9 -3
- package/dist/services/mcp/index.js.map +1 -1
- package/dist/services/mcp/mcpInstallService.d.ts +4 -52
- package/dist/services/mcp/mcpInstallService.d.ts.map +1 -1
- package/dist/services/mcp/mcpInstallService.js +5 -596
- package/dist/services/mcp/mcpInstallService.js.map +1 -1
- package/dist/services/mcp/mcpServer.d.ts +5 -6
- package/dist/services/mcp/mcpServer.d.ts.map +1 -1
- package/dist/services/mcp/mcpServer.js +220 -28
- package/dist/services/mcp/mcpServer.js.map +1 -1
- package/dist/services/qa/patternInferer.d.ts +2 -31
- package/dist/services/qa/patternInferer.d.ts.map +1 -1
- package/dist/services/qa/patternInferer.js +4 -353
- package/dist/services/qa/patternInferer.js.map +1 -1
- package/dist/services/qa/qaService.d.ts +6 -10
- package/dist/services/qa/qaService.d.ts.map +1 -1
- package/dist/services/qa/qaService.js +17 -53
- package/dist/services/qa/qaService.js.map +1 -1
- package/dist/services/reverseSync/importSkillsService.d.ts.map +1 -1
- package/dist/services/reverseSync/importSkillsService.js +4 -1
- package/dist/services/reverseSync/importSkillsService.js.map +1 -1
- package/dist/services/reverseSync/reverseQuickSyncService.d.ts.map +1 -1
- package/dist/services/reverseSync/reverseQuickSyncService.js +10 -6
- package/dist/services/reverseSync/reverseQuickSyncService.js.map +1 -1
- package/dist/services/reverseSync/skillsDetector.js +2 -2
- package/dist/services/reverseSync/skillsDetector.js.map +1 -1
- package/dist/services/reverseSync/toolDetector.d.ts.map +1 -1
- package/dist/services/reverseSync/toolDetector.js +3 -0
- package/dist/services/reverseSync/toolDetector.js.map +1 -1
- package/dist/services/semantic/index.d.ts +1 -0
- package/dist/services/semantic/index.d.ts.map +1 -1
- package/dist/services/semantic/index.js +3 -1
- package/dist/services/semantic/index.js.map +1 -1
- package/dist/services/semantic/semanticSnapshotService.d.ts +86 -0
- package/dist/services/semantic/semanticSnapshotService.d.ts.map +1 -0
- package/dist/services/semantic/semanticSnapshotService.js +573 -0
- package/dist/services/semantic/semanticSnapshotService.js.map +1 -0
- package/dist/services/shared/contentTypeRegistry.d.ts.map +1 -1
- package/dist/services/shared/contentTypeRegistry.js +9 -0
- package/dist/services/shared/contentTypeRegistry.js.map +1 -1
- package/dist/services/shared/contextLayout.d.ts +18 -0
- package/dist/services/shared/contextLayout.d.ts.map +1 -0
- package/dist/services/shared/contextLayout.js +139 -0
- package/dist/services/shared/contextLayout.js.map +1 -0
- package/dist/services/shared/executionContext.d.ts +38 -0
- package/dist/services/shared/executionContext.d.ts.map +1 -0
- package/dist/services/shared/executionContext.js +39 -0
- package/dist/services/shared/executionContext.js.map +1 -0
- package/dist/services/shared/index.d.ts +2 -0
- package/dist/services/shared/index.d.ts.map +1 -1
- package/dist/services/shared/index.js +11 -1
- package/dist/services/shared/index.js.map +1 -1
- package/dist/services/shared/toolRegistry.d.ts +6 -0
- package/dist/services/shared/toolRegistry.d.ts.map +1 -1
- package/dist/services/shared/toolRegistry.js +34 -20
- package/dist/services/shared/toolRegistry.js.map +1 -1
- package/dist/services/stack/scaffoldFilter.d.ts +3 -3
- package/dist/services/state/stateDetector.d.ts +4 -49
- package/dist/services/state/stateDetector.d.ts.map +1 -1
- package/dist/services/state/stateDetector.js +9 -182
- package/dist/services/state/stateDetector.js.map +1 -1
- package/dist/services/sync/index.d.ts +1 -1
- package/dist/services/sync/index.d.ts.map +1 -1
- package/dist/services/sync/index.js.map +1 -1
- package/dist/services/sync/markdownReferenceHandler.d.ts.map +1 -1
- package/dist/services/sync/markdownReferenceHandler.js +7 -2
- package/dist/services/sync/markdownReferenceHandler.js.map +1 -1
- package/dist/services/sync/presets.d.ts.map +1 -1
- package/dist/services/sync/presets.js +1 -0
- package/dist/services/sync/presets.js.map +1 -1
- package/dist/services/sync/symlinkHandler.d.ts.map +1 -1
- package/dist/services/sync/symlinkHandler.js +7 -2
- package/dist/services/sync/symlinkHandler.js.map +1 -1
- package/dist/services/sync/syncService.d.ts +2 -2
- package/dist/services/sync/syncService.d.ts.map +1 -1
- package/dist/services/sync/syncService.js +17 -3
- package/dist/services/sync/syncService.js.map +1 -1
- package/dist/services/sync/types.d.ts +9 -1
- package/dist/services/sync/types.d.ts.map +1 -1
- package/dist/services/workflow/index.d.ts +1 -1
- package/dist/services/workflow/index.d.ts.map +1 -1
- package/dist/services/workflow/index.js +2 -1
- package/dist/services/workflow/index.js.map +1 -1
- package/dist/services/workflow/workflowService.d.ts +68 -0
- package/dist/services/workflow/workflowService.d.ts.map +1 -1
- package/dist/services/workflow/workflowService.js +416 -1
- package/dist/services/workflow/workflowService.js.map +1 -1
- package/dist/utils/gitignoreManager.d.ts +8 -0
- package/dist/utils/gitignoreManager.d.ts.map +1 -1
- package/dist/utils/gitignoreManager.js +40 -0
- package/dist/utils/gitignoreManager.js.map +1 -1
- package/dist/utils/i18n.d.ts +1 -1
- package/dist/utils/i18n.js +2 -2
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/processShutdown.d.ts +20 -0
- package/dist/utils/processShutdown.d.ts.map +1 -0
- package/dist/utils/processShutdown.js +47 -0
- package/dist/utils/processShutdown.js.map +1 -0
- package/dist/utils/prompts/index.d.ts +1 -1
- package/dist/utils/prompts/index.d.ts.map +1 -1
- package/dist/utils/prompts/index.js +1 -3
- package/dist/utils/prompts/index.js.map +1 -1
- package/dist/utils/prompts/smartDefaults.d.ts +0 -9
- package/dist/utils/prompts/smartDefaults.d.ts.map +1 -1
- package/dist/utils/prompts/smartDefaults.js +0 -23
- package/dist/utils/prompts/smartDefaults.js.map +1 -1
- package/dist/utils/prompts/types.d.ts +0 -11
- package/dist/utils/prompts/types.d.ts.map +1 -1
- package/dist/utils/versionChecker.d.ts.map +1 -1
- package/dist/utils/versionChecker.js +17 -8
- package/dist/utils/versionChecker.js.map +1 -1
- package/dist/workflow/index.d.ts +1 -1
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +6 -1
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/orchestrator.d.ts.map +1 -1
- package/dist/workflow/orchestrator.js +3 -14
- package/dist/workflow/orchestrator.js.map +1 -1
- package/dist/workflow/plans/planLinker.d.ts +13 -0
- package/dist/workflow/plans/planLinker.d.ts.map +1 -1
- package/dist/workflow/plans/planLinker.js +77 -2
- package/dist/workflow/plans/planLinker.js.map +1 -1
- package/dist/workflow/plans/types.d.ts +6 -0
- package/dist/workflow/plans/types.d.ts.map +1 -1
- package/dist/workflow/skills/frontmatter.d.ts +9 -0
- package/dist/workflow/skills/frontmatter.d.ts.map +1 -1
- package/dist/workflow/skills/frontmatter.js +16 -0
- package/dist/workflow/skills/frontmatter.js.map +1 -1
- package/dist/workflow/skills/index.d.ts +1 -1
- package/dist/workflow/skills/index.d.ts.map +1 -1
- package/dist/workflow/skills/index.js +3 -1
- package/dist/workflow/skills/index.js.map +1 -1
- package/dist/workflow/skills/skillRegistry.d.ts.map +1 -1
- package/dist/workflow/skills/skillRegistry.js +4 -1
- package/dist/workflow/skills/skillRegistry.js.map +1 -1
- package/dist/workflow/skills/skillTemplates.d.ts.map +1 -1
- package/dist/workflow/skills/skillTemplates.js +69 -30
- package/dist/workflow/skills/skillTemplates.js.map +1 -1
- package/dist/workflow/status/statusManager.d.ts +8 -3
- package/dist/workflow/status/statusManager.d.ts.map +1 -1
- package/dist/workflow/status/statusManager.js +60 -21
- package/dist/workflow/status/statusManager.js.map +1 -1
- package/dist/workflow/types.d.ts +1 -1
- package/package.json +19 -11
- package/dist/services/ai/aiSdkClient.d.ts +0 -67
- package/dist/services/ai/aiSdkClient.d.ts.map +0 -1
- package/dist/services/ai/aiSdkClient.js +0 -143
- package/dist/services/ai/aiSdkClient.js.map +0 -1
- package/dist/services/ai/index.d.ts +0 -5
- package/dist/services/ai/index.d.ts.map +0 -1
- package/dist/services/ai/index.js +0 -40
- package/dist/services/ai/index.js.map +0 -1
- package/dist/services/ai/providerFactory.d.ts +0 -35
- package/dist/services/ai/providerFactory.d.ts.map +0 -1
- package/dist/services/ai/providerFactory.js +0 -107
- package/dist/services/ai/providerFactory.js.map +0 -1
- package/dist/services/ai/schemas.d.ts +0 -557
- package/dist/services/ai/schemas.d.ts.map +0 -1
- package/dist/services/ai/schemas.js +0 -357
- package/dist/services/ai/schemas.js.map +0 -1
- package/dist/services/ai/toolRegistry.d.ts +0 -27
- package/dist/services/ai/toolRegistry.d.ts.map +0 -1
- package/dist/services/ai/toolRegistry.js +0 -151
- package/dist/services/ai/toolRegistry.js.map +0 -1
- package/dist/services/ai/tools/analyzeSymbolsTool.d.ts +0 -33
- package/dist/services/ai/tools/analyzeSymbolsTool.d.ts.map +0 -1
- package/dist/services/ai/tools/analyzeSymbolsTool.js +0 -57
- package/dist/services/ai/tools/analyzeSymbolsTool.js.map +0 -1
- package/dist/services/ai/tools/checkScaffoldingTool.d.ts +0 -18
- package/dist/services/ai/tools/checkScaffoldingTool.d.ts.map +0 -1
- package/dist/services/ai/tools/checkScaffoldingTool.js +0 -89
- package/dist/services/ai/tools/checkScaffoldingTool.js.map +0 -1
- package/dist/services/ai/tools/fillScaffoldingTool.d.ts +0 -124
- package/dist/services/ai/tools/fillScaffoldingTool.d.ts.map +0 -1
- package/dist/services/ai/tools/fillScaffoldingTool.js +0 -397
- package/dist/services/ai/tools/fillScaffoldingTool.js.map +0 -1
- package/dist/services/ai/tools/getCodebaseMapTool.d.ts +0 -17
- package/dist/services/ai/tools/getCodebaseMapTool.d.ts.map +0 -1
- package/dist/services/ai/tools/getCodebaseMapTool.js +0 -122
- package/dist/services/ai/tools/getCodebaseMapTool.js.map +0 -1
- package/dist/services/ai/tools/getFileStructureTool.d.ts +0 -29
- package/dist/services/ai/tools/getFileStructureTool.d.ts.map +0 -1
- package/dist/services/ai/tools/getFileStructureTool.js +0 -48
- package/dist/services/ai/tools/getFileStructureTool.js.map +0 -1
- package/dist/services/ai/tools/index.d.ts +0 -21
- package/dist/services/ai/tools/index.d.ts.map +0 -1
- package/dist/services/ai/tools/index.js +0 -75
- package/dist/services/ai/tools/index.js.map +0 -1
- package/dist/services/ai/tools/initializeContextTool.d.ts +0 -135
- package/dist/services/ai/tools/initializeContextTool.d.ts.map +0 -1
- package/dist/services/ai/tools/initializeContextTool.js +0 -447
- package/dist/services/ai/tools/initializeContextTool.js.map +0 -1
- package/dist/services/ai/tools/listFilesTool.d.ts +0 -18
- package/dist/services/ai/tools/listFilesTool.d.ts.map +0 -1
- package/dist/services/ai/tools/listFilesTool.js +0 -34
- package/dist/services/ai/tools/listFilesTool.js.map +0 -1
- package/dist/services/ai/tools/readFileTool.d.ts +0 -17
- package/dist/services/ai/tools/readFileTool.d.ts.map +0 -1
- package/dist/services/ai/tools/readFileTool.js +0 -63
- package/dist/services/ai/tools/readFileTool.js.map +0 -1
- package/dist/services/ai/tools/scaffoldPlanTool.d.ts +0 -41
- package/dist/services/ai/tools/scaffoldPlanTool.d.ts.map +0 -1
- package/dist/services/ai/tools/scaffoldPlanTool.js +0 -183
- package/dist/services/ai/tools/scaffoldPlanTool.js.map +0 -1
- package/dist/services/ai/tools/searchCodeTool.d.ts +0 -25
- package/dist/services/ai/tools/searchCodeTool.d.ts.map +0 -1
- package/dist/services/ai/tools/searchCodeTool.js +0 -96
- package/dist/services/ai/tools/searchCodeTool.js.map +0 -1
- package/dist/services/baseLLMClient.d.ts +0 -12
- package/dist/services/baseLLMClient.d.ts.map +0 -1
- package/dist/services/baseLLMClient.js +0 -80
- package/dist/services/baseLLMClient.js.map +0 -1
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Codebase Map Generator
|
|
4
4
|
*
|
|
5
|
-
* Generates a JSON file
|
|
6
|
-
*
|
|
5
|
+
* Generates a summary JSON file for the codebase structure, stack,
|
|
6
|
+
* architecture, dependencies, and functional capabilities.
|
|
7
|
+
*
|
|
8
|
+
* Symbol payloads are intentionally excluded. Detailed symbol data belongs
|
|
9
|
+
* to live semantic analysis, not persisted summary artifacts.
|
|
7
10
|
*/
|
|
8
11
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
12
|
if (k2 === undefined) k2 = k;
|
|
@@ -40,66 +43,80 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
40
43
|
})();
|
|
41
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
45
|
exports.CodebaseMapGenerator = void 0;
|
|
46
|
+
exports.createEmptyFunctionalPatterns = createEmptyFunctionalPatterns;
|
|
43
47
|
const path = __importStar(require("path"));
|
|
48
|
+
function createEmptyFunctionalPatterns() {
|
|
49
|
+
return {
|
|
50
|
+
hasAuthPattern: false,
|
|
51
|
+
hasDatabasePattern: false,
|
|
52
|
+
hasApiPattern: false,
|
|
53
|
+
hasCachePattern: false,
|
|
54
|
+
hasQueuePattern: false,
|
|
55
|
+
hasWebSocketPattern: false,
|
|
56
|
+
hasLoggingPattern: false,
|
|
57
|
+
hasValidationPattern: false,
|
|
58
|
+
hasErrorHandlingPattern: false,
|
|
59
|
+
hasTestingPattern: false,
|
|
60
|
+
patterns: [],
|
|
61
|
+
};
|
|
62
|
+
}
|
|
44
63
|
// ============================================================================
|
|
45
64
|
// Generator
|
|
46
65
|
// ============================================================================
|
|
47
|
-
// Directory description heuristics
|
|
48
66
|
const DIRECTORY_DESCRIPTIONS = {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
67
|
+
src: 'Source code root',
|
|
68
|
+
services: 'Business logic and orchestration services',
|
|
69
|
+
generators: 'Content and scaffold generation',
|
|
70
|
+
utils: 'Shared utilities and helpers',
|
|
71
|
+
types: 'TypeScript type definitions',
|
|
72
|
+
tests: 'Test files and fixtures',
|
|
73
|
+
__tests__: 'Unit and integration tests',
|
|
74
|
+
components: 'UI components',
|
|
75
|
+
hooks: 'React hooks',
|
|
76
|
+
api: 'API endpoints and handlers',
|
|
77
|
+
config: 'Configuration files',
|
|
78
|
+
models: 'Data models and entities',
|
|
79
|
+
controllers: 'Request handlers',
|
|
80
|
+
middleware: 'Request/response middleware',
|
|
81
|
+
routes: 'Route definitions',
|
|
82
|
+
views: 'View templates',
|
|
83
|
+
assets: 'Static assets (images, fonts)',
|
|
84
|
+
styles: 'CSS/SCSS stylesheets',
|
|
85
|
+
lib: 'Shared library code',
|
|
86
|
+
core: 'Core application logic',
|
|
87
|
+
shared: 'Shared code across modules',
|
|
88
|
+
workflow: 'Workflow and orchestration',
|
|
89
|
+
mcp: 'MCP server implementation',
|
|
90
|
+
ai: 'AI/LLM integration',
|
|
91
|
+
semantic: 'Semantic code analysis',
|
|
92
|
+
plans: 'Development plans',
|
|
93
|
+
agents: 'AI agent definitions',
|
|
94
|
+
skills: 'Skill definitions',
|
|
95
|
+
docs: 'Documentation files',
|
|
96
|
+
scripts: 'Build and utility scripts',
|
|
97
|
+
prompts: 'Prompt templates',
|
|
98
|
+
public: 'Public static assets',
|
|
99
|
+
dist: 'Build output directory',
|
|
100
|
+
build: 'Build output directory',
|
|
101
|
+
bin: 'CLI binaries and executables',
|
|
102
|
+
test: 'Test files',
|
|
103
|
+
spec: 'Test specifications',
|
|
104
|
+
fixtures: 'Test fixtures and mock data',
|
|
105
|
+
mocks: 'Mock implementations',
|
|
106
|
+
pages: 'Page components (Next.js/Nuxt)',
|
|
107
|
+
app: 'Application entry (Next.js app router)',
|
|
108
|
+
store: 'State management',
|
|
109
|
+
reducers: 'Redux reducers',
|
|
110
|
+
actions: 'Redux actions',
|
|
111
|
+
selectors: 'Redux selectors',
|
|
112
|
+
contexts: 'React contexts',
|
|
113
|
+
providers: 'Context providers',
|
|
114
|
+
layouts: 'Layout components',
|
|
115
|
+
templates: 'Template files',
|
|
116
|
+
i18n: 'Internationalization',
|
|
117
|
+
locales: 'Locale files',
|
|
118
|
+
translations: 'Translation files',
|
|
101
119
|
};
|
|
102
|
-
// Key file pattern matchers
|
|
103
120
|
const KEY_FILE_PATTERNS = [
|
|
104
121
|
{ pattern: /^src\/index\.(ts|js)$/, description: 'Main library entry point', category: 'entrypoint' },
|
|
105
122
|
{ pattern: /^src\/main\.(ts|js)$/, description: 'Application entry point', category: 'entrypoint' },
|
|
@@ -120,20 +137,21 @@ const KEY_FILE_PATTERNS = [
|
|
|
120
137
|
];
|
|
121
138
|
class CodebaseMapGenerator {
|
|
122
139
|
constructor(options = {}) {
|
|
123
|
-
this.
|
|
140
|
+
this.maxDependencies = options.maxDependencies ?? 20;
|
|
141
|
+
this.maxKeyFiles = options.maxKeyFiles ?? 30;
|
|
124
142
|
}
|
|
125
|
-
generate(repoStructure, semantics, stackInfo) {
|
|
143
|
+
generate(repoStructure, semantics, stackInfo, functionalPatterns, metadata) {
|
|
126
144
|
const architecture = this.buildArchitectureSection(repoStructure.rootPath, semantics);
|
|
127
145
|
return {
|
|
128
|
-
version: '
|
|
129
|
-
generated: new Date().toISOString(),
|
|
146
|
+
version: metadata?.schemaVersion ?? '2.0.0',
|
|
147
|
+
generated: metadata?.generatedAt ?? new Date().toISOString(),
|
|
148
|
+
...(metadata ? { meta: metadata } : {}),
|
|
130
149
|
stack: this.buildStackSection(stackInfo, repoStructure.rootPath),
|
|
131
150
|
structure: this.buildStructureSection(repoStructure),
|
|
132
151
|
architecture,
|
|
133
|
-
|
|
134
|
-
publicAPI: this.buildPublicAPISection(repoStructure.rootPath, semantics),
|
|
152
|
+
functionalPatterns: functionalPatterns ?? createEmptyFunctionalPatterns(),
|
|
135
153
|
dependencies: this.buildDependenciesSection(repoStructure.rootPath, semantics),
|
|
136
|
-
stats: this.buildStatsSection(semantics),
|
|
154
|
+
stats: this.buildStatsSection(repoStructure, semantics),
|
|
137
155
|
keyFiles: this.buildKeyFilesSection(repoStructure, semantics),
|
|
138
156
|
navigation: this.buildNavigationSection(repoStructure, stackInfo),
|
|
139
157
|
};
|
|
@@ -152,7 +170,6 @@ class CodebaseMapGenerator {
|
|
|
152
170
|
hasCI: false,
|
|
153
171
|
};
|
|
154
172
|
}
|
|
155
|
-
// Detect node version and runtime environment from package.json
|
|
156
173
|
let nodeVersion;
|
|
157
174
|
let runtimeEnvironment;
|
|
158
175
|
if (repoRoot) {
|
|
@@ -161,18 +178,14 @@ class CodebaseMapGenerator {
|
|
|
161
178
|
const fs = require('fs-extra');
|
|
162
179
|
if (fs.existsSync(packageJsonPath)) {
|
|
163
180
|
const packageJson = fs.readJsonSync(packageJsonPath);
|
|
164
|
-
// Get node version from engines
|
|
165
181
|
if (packageJson.engines?.node) {
|
|
166
182
|
nodeVersion = packageJson.engines.node;
|
|
167
183
|
}
|
|
168
|
-
// Determine runtime environment
|
|
169
184
|
const hasBrowserField = !!packageJson.browser;
|
|
170
185
|
const hasMainField = !!packageJson.main || !!packageJson.exports;
|
|
171
186
|
const hasBinField = !!packageJson.bin;
|
|
172
|
-
|
|
173
|
-
const
|
|
174
|
-
// Check for Node-specific indicators
|
|
175
|
-
const isNodeFramework = stackInfo.frameworks.some(f => ['nestjs', 'express', 'fastify', 'koa', 'hapi'].includes(f)) || hasBinField || stackInfo.frameworks.includes('cli');
|
|
187
|
+
const isBrowserFramework = stackInfo.frameworks.some((framework) => ['nextjs', 'nuxt', 'vue', 'angular', 'svelte', 'react', 'gatsby', 'astro'].includes(framework));
|
|
188
|
+
const isNodeFramework = stackInfo.frameworks.some((framework) => ['nestjs', 'express', 'fastify', 'koa', 'hapi'].includes(framework)) || hasBinField || stackInfo.frameworks.includes('cli');
|
|
176
189
|
if (isBrowserFramework && isNodeFramework) {
|
|
177
190
|
runtimeEnvironment = 'both';
|
|
178
191
|
}
|
|
@@ -200,27 +213,24 @@ class CodebaseMapGenerator {
|
|
|
200
213
|
hasCI: stackInfo.hasCI,
|
|
201
214
|
...(nodeVersion && { nodeVersion }),
|
|
202
215
|
...(runtimeEnvironment && { runtimeEnvironment }),
|
|
216
|
+
...(typeof stackInfo.hasBinField === 'boolean' ? { hasBinField: stackInfo.hasBinField } : {}),
|
|
217
|
+
...(typeof stackInfo.hasMainExport === 'boolean' ? { hasMainExport: stackInfo.hasMainExport } : {}),
|
|
218
|
+
...(typeof stackInfo.hasTypesField === 'boolean' ? { hasTypesField: stackInfo.hasTypesField } : {}),
|
|
219
|
+
...(stackInfo.cliLibraries?.length ? { cliLibraries: stackInfo.cliLibraries } : {}),
|
|
203
220
|
};
|
|
204
221
|
}
|
|
205
222
|
buildStructureSection(repoStructure) {
|
|
206
|
-
// Filter to only include actual directories (items with multiple files or subdirectories)
|
|
207
|
-
// and exclude files at the root level
|
|
208
223
|
const topDirectories = (repoStructure.topLevelDirectoryStats ?? [])
|
|
209
|
-
.filter(stat => {
|
|
210
|
-
|
|
211
|
-
const
|
|
212
|
-
// Also check if it's a directory entry itself
|
|
213
|
-
const isDirectory = repoStructure.directories.some(d => d.relativePath === stat.name || path.basename(d.relativePath) === stat.name);
|
|
214
|
-
// It's a directory if it has files under it or is marked as directory
|
|
215
|
-
// Also check: if fileCount > 1, it's likely a directory
|
|
224
|
+
.filter((stat) => {
|
|
225
|
+
const hasFilesUnder = repoStructure.files.some((file) => file.relativePath.startsWith(stat.name + '/') || file.relativePath.startsWith(stat.name + '\\'));
|
|
226
|
+
const isDirectory = repoStructure.directories.some((directory) => directory.relativePath === stat.name || path.basename(directory.relativePath) === stat.name);
|
|
216
227
|
return hasFilesUnder || isDirectory || stat.fileCount > 1;
|
|
217
228
|
})
|
|
218
|
-
.map(stat => ({
|
|
229
|
+
.map((stat) => ({
|
|
219
230
|
name: stat.name,
|
|
220
231
|
fileCount: stat.fileCount,
|
|
221
232
|
description: this.getDirectoryDescription(stat.name),
|
|
222
233
|
}));
|
|
223
|
-
// Build language distribution from files
|
|
224
234
|
const extensionCounts = new Map();
|
|
225
235
|
for (const file of repoStructure.files) {
|
|
226
236
|
const ext = path.extname(file.relativePath).toLowerCase();
|
|
@@ -240,18 +250,15 @@ class CodebaseMapGenerator {
|
|
|
240
250
|
};
|
|
241
251
|
}
|
|
242
252
|
getDirectoryDescription(dirName) {
|
|
243
|
-
// Check direct match first
|
|
244
253
|
const lowerName = dirName.toLowerCase();
|
|
245
254
|
if (DIRECTORY_DESCRIPTIONS[lowerName]) {
|
|
246
255
|
return DIRECTORY_DESCRIPTIONS[lowerName];
|
|
247
256
|
}
|
|
248
|
-
// Check partial matches
|
|
249
257
|
for (const [key, desc] of Object.entries(DIRECTORY_DESCRIPTIONS)) {
|
|
250
258
|
if (lowerName.includes(key) || key.includes(lowerName)) {
|
|
251
259
|
return desc;
|
|
252
260
|
}
|
|
253
261
|
}
|
|
254
|
-
// Infer from naming patterns
|
|
255
262
|
if (lowerName.includes('test'))
|
|
256
263
|
return 'Test files';
|
|
257
264
|
if (lowerName.includes('spec'))
|
|
@@ -272,106 +279,70 @@ class CodebaseMapGenerator {
|
|
|
272
279
|
moduleExports: [],
|
|
273
280
|
};
|
|
274
281
|
}
|
|
275
|
-
const layers = semantics.architecture.layers.map(layer => ({
|
|
282
|
+
const layers = semantics.architecture.layers.map((layer) => ({
|
|
276
283
|
name: layer.name,
|
|
277
284
|
description: layer.description,
|
|
278
|
-
directories: layer.directories.map(
|
|
285
|
+
directories: layer.directories.map((directory) => this.relativePath(repoRoot, directory)),
|
|
279
286
|
symbolCount: layer.symbols.length,
|
|
280
287
|
dependsOn: layer.dependsOn,
|
|
281
288
|
}));
|
|
282
|
-
const patterns = semantics.architecture.patterns.map(pattern => ({
|
|
289
|
+
const patterns = semantics.architecture.patterns.map((pattern) => ({
|
|
283
290
|
name: pattern.name,
|
|
284
291
|
confidence: pattern.confidence,
|
|
285
292
|
description: pattern.description,
|
|
286
293
|
occurrences: pattern.locations.length,
|
|
287
294
|
}));
|
|
288
|
-
|
|
289
|
-
const allEntryPoints = semantics.architecture.entryPoints.map(ep => this.relativePath(repoRoot, ep));
|
|
290
|
-
// Separate main entry points from barrel exports (module exports)
|
|
295
|
+
const allEntryPoints = semantics.architecture.entryPoints.map((entryPoint) => this.relativePath(repoRoot, entryPoint));
|
|
291
296
|
const { mainEntryPoints, moduleExports } = this.categorizeEntryPoints(allEntryPoints);
|
|
292
297
|
return {
|
|
293
298
|
layers,
|
|
294
299
|
patterns,
|
|
295
|
-
entryPoints: allEntryPoints,
|
|
300
|
+
entryPoints: allEntryPoints,
|
|
296
301
|
mainEntryPoints,
|
|
297
302
|
moduleExports,
|
|
298
303
|
};
|
|
299
304
|
}
|
|
300
|
-
/**
|
|
301
|
-
* Categorize entry points into main (actual CLI/server/library) vs barrel exports
|
|
302
|
-
*/
|
|
303
305
|
categorizeEntryPoints(entryPoints) {
|
|
304
306
|
const mainEntryPoints = [];
|
|
305
307
|
const moduleExports = [];
|
|
306
|
-
// Patterns that indicate a MAIN entry point (not just a barrel export)
|
|
307
308
|
const mainPatterns = [
|
|
308
|
-
/^src\/index\.(ts|js)$/,
|
|
309
|
-
/^index\.(ts|js)$/,
|
|
310
|
-
/^src\/main\.(ts|js)$/,
|
|
311
|
-
/^src\/cli\.(ts|js)$/,
|
|
312
|
-
/^src\/server\.(ts|js)$/,
|
|
313
|
-
/^src\/app\.(ts|js)$/,
|
|
314
|
-
/^bin\//,
|
|
315
|
-
/^cli\.(ts|js)$/,
|
|
316
|
-
/^server\.(ts|js)$/,
|
|
317
|
-
/^app\.(ts|js)$/,
|
|
318
|
-
/^main\.(ts|js)$/,
|
|
309
|
+
/^src\/index\.(ts|js)$/,
|
|
310
|
+
/^index\.(ts|js)$/,
|
|
311
|
+
/^src\/main\.(ts|js)$/,
|
|
312
|
+
/^src\/cli\.(ts|js)$/,
|
|
313
|
+
/^src\/server\.(ts|js)$/,
|
|
314
|
+
/^src\/app\.(ts|js)$/,
|
|
315
|
+
/^bin\//,
|
|
316
|
+
/^cli\.(ts|js)$/,
|
|
317
|
+
/^server\.(ts|js)$/,
|
|
318
|
+
/^app\.(ts|js)$/,
|
|
319
|
+
/^main\.(ts|js)$/,
|
|
319
320
|
];
|
|
320
|
-
// Patterns that indicate a barrel export (just re-exports)
|
|
321
321
|
const barrelPatterns = [
|
|
322
|
-
/\/index\.(ts|js)$/,
|
|
322
|
+
/\/index\.(ts|js)$/,
|
|
323
323
|
];
|
|
324
|
-
for (const
|
|
325
|
-
const isMain = mainPatterns.some(
|
|
326
|
-
const isBarrel = barrelPatterns.some(
|
|
324
|
+
for (const entryPoint of entryPoints) {
|
|
325
|
+
const isMain = mainPatterns.some((pattern) => pattern.test(entryPoint));
|
|
326
|
+
const isBarrel = barrelPatterns.some((pattern) => pattern.test(entryPoint)) && !isMain;
|
|
327
327
|
if (isMain) {
|
|
328
|
-
mainEntryPoints.push(
|
|
328
|
+
mainEntryPoints.push(entryPoint);
|
|
329
329
|
}
|
|
330
330
|
else if (isBarrel) {
|
|
331
|
-
moduleExports.push(
|
|
331
|
+
moduleExports.push(entryPoint);
|
|
332
|
+
}
|
|
333
|
+
else if (entryPoint.split('/').length <= 2) {
|
|
334
|
+
mainEntryPoints.push(entryPoint);
|
|
332
335
|
}
|
|
333
336
|
else {
|
|
334
|
-
|
|
335
|
-
const depth = ep.split('/').length;
|
|
336
|
-
if (depth <= 2) {
|
|
337
|
-
mainEntryPoints.push(ep);
|
|
338
|
-
}
|
|
339
|
-
else {
|
|
340
|
-
moduleExports.push(ep);
|
|
341
|
-
}
|
|
337
|
+
moduleExports.push(entryPoint);
|
|
342
338
|
}
|
|
343
339
|
}
|
|
344
340
|
return { mainEntryPoints, moduleExports };
|
|
345
341
|
}
|
|
346
|
-
buildSymbolsSection(repoRoot, semantics) {
|
|
347
|
-
if (!semantics) {
|
|
348
|
-
return {
|
|
349
|
-
classes: [],
|
|
350
|
-
interfaces: [],
|
|
351
|
-
functions: [],
|
|
352
|
-
types: [],
|
|
353
|
-
enums: [],
|
|
354
|
-
};
|
|
355
|
-
}
|
|
356
|
-
return {
|
|
357
|
-
classes: this.extractSymbols(semantics.symbols.classes, repoRoot),
|
|
358
|
-
interfaces: this.extractSymbols(semantics.symbols.interfaces, repoRoot),
|
|
359
|
-
functions: this.extractSymbols(semantics.symbols.functions, repoRoot),
|
|
360
|
-
types: this.extractSymbols(semantics.symbols.types, repoRoot),
|
|
361
|
-
enums: this.extractSymbols(semantics.symbols.enums, repoRoot),
|
|
362
|
-
};
|
|
363
|
-
}
|
|
364
|
-
buildPublicAPISection(repoRoot, semantics) {
|
|
365
|
-
if (!semantics) {
|
|
366
|
-
return [];
|
|
367
|
-
}
|
|
368
|
-
return this.extractSymbols(semantics.architecture.publicAPI, repoRoot);
|
|
369
|
-
}
|
|
370
342
|
buildDependenciesSection(repoRoot, semantics) {
|
|
371
343
|
if (!semantics) {
|
|
372
344
|
return { mostImported: [] };
|
|
373
345
|
}
|
|
374
|
-
// Calculate import counts from reverse dependency graph
|
|
375
346
|
const importCounts = [];
|
|
376
347
|
for (const [file, importers] of semantics.dependencies.reverseGraph.entries()) {
|
|
377
348
|
const relativePath = this.relativePath(repoRoot, file);
|
|
@@ -381,19 +352,14 @@ class CodebaseMapGenerator {
|
|
|
381
352
|
description: this.inferFileDescription(relativePath),
|
|
382
353
|
});
|
|
383
354
|
}
|
|
384
|
-
// Sort by most imported and take top 20
|
|
385
355
|
const mostImported = importCounts
|
|
386
356
|
.sort((a, b) => b.importedBy - a.importedBy)
|
|
387
|
-
.slice(0,
|
|
357
|
+
.slice(0, this.maxDependencies);
|
|
388
358
|
return { mostImported };
|
|
389
359
|
}
|
|
390
|
-
/**
|
|
391
|
-
* Infer a description for a file based on its path and name
|
|
392
|
-
*/
|
|
393
360
|
inferFileDescription(filePath) {
|
|
394
361
|
const basename = path.basename(filePath, path.extname(filePath));
|
|
395
362
|
const dirname = path.dirname(filePath);
|
|
396
|
-
// Check common naming patterns
|
|
397
363
|
if (basename === 'index') {
|
|
398
364
|
const parentDir = path.basename(dirname);
|
|
399
365
|
if (parentDir && DIRECTORY_DESCRIPTIONS[parentDir.toLowerCase()]) {
|
|
@@ -416,22 +382,21 @@ class CodebaseMapGenerator {
|
|
|
416
382
|
if (basename === 'constants' || basename === 'config') {
|
|
417
383
|
return 'Configuration and constants';
|
|
418
384
|
}
|
|
419
|
-
// Check directory context
|
|
420
385
|
const dirName = path.basename(dirname).toLowerCase();
|
|
421
386
|
if (DIRECTORY_DESCRIPTIONS[dirName]) {
|
|
422
387
|
return DIRECTORY_DESCRIPTIONS[dirName];
|
|
423
388
|
}
|
|
424
389
|
return undefined;
|
|
425
390
|
}
|
|
426
|
-
buildStatsSection(semantics) {
|
|
391
|
+
buildStatsSection(repoStructure, semantics) {
|
|
427
392
|
if (!semantics) {
|
|
428
393
|
return {
|
|
394
|
+
totalFiles: repoStructure.totalFiles,
|
|
429
395
|
totalSymbols: 0,
|
|
430
396
|
exportedSymbols: 0,
|
|
431
397
|
analysisTimeMs: 0,
|
|
432
398
|
};
|
|
433
399
|
}
|
|
434
|
-
// Count exported symbols
|
|
435
400
|
const allSymbols = [
|
|
436
401
|
...semantics.symbols.classes,
|
|
437
402
|
...semantics.symbols.interfaces,
|
|
@@ -439,63 +404,23 @@ class CodebaseMapGenerator {
|
|
|
439
404
|
...semantics.symbols.types,
|
|
440
405
|
...semantics.symbols.enums,
|
|
441
406
|
];
|
|
442
|
-
const exportedCount = allSymbols.filter(
|
|
407
|
+
const exportedCount = allSymbols.filter((symbol) => symbol.exported).length;
|
|
443
408
|
return {
|
|
409
|
+
totalFiles: semantics.stats.totalFiles || repoStructure.totalFiles,
|
|
444
410
|
totalSymbols: semantics.stats.totalSymbols,
|
|
445
411
|
exportedSymbols: exportedCount,
|
|
446
412
|
analysisTimeMs: semantics.stats.analysisTimeMs,
|
|
447
413
|
};
|
|
448
414
|
}
|
|
449
|
-
extractSymbols(symbols, repoRoot) {
|
|
450
|
-
// Sort by exported first, then alphabetically
|
|
451
|
-
const sorted = [...symbols].sort((a, b) => {
|
|
452
|
-
if (a.exported !== b.exported) {
|
|
453
|
-
return a.exported ? -1 : 1;
|
|
454
|
-
}
|
|
455
|
-
return a.name.localeCompare(b.name);
|
|
456
|
-
});
|
|
457
|
-
return sorted.slice(0, this.maxSymbols).map(symbol => this.toSymbolSummary(symbol, repoRoot));
|
|
458
|
-
}
|
|
459
|
-
toSymbolSummary(symbol, repoRoot) {
|
|
460
|
-
const summary = {
|
|
461
|
-
name: symbol.name,
|
|
462
|
-
kind: symbol.kind,
|
|
463
|
-
file: this.relativePath(repoRoot, symbol.location.file),
|
|
464
|
-
line: symbol.location.line,
|
|
465
|
-
exported: symbol.exported,
|
|
466
|
-
};
|
|
467
|
-
// Add signature for functions
|
|
468
|
-
if (symbol.kind === 'function' && symbol.parameters) {
|
|
469
|
-
const params = symbol.parameters
|
|
470
|
-
.map(p => (p.type ? `${p.name}: ${p.type}` : p.name))
|
|
471
|
-
.join(', ');
|
|
472
|
-
const returnType = symbol.returnType ?? 'void';
|
|
473
|
-
summary.signature = `(${params}): ${returnType}`;
|
|
474
|
-
}
|
|
475
|
-
// Add first line of documentation
|
|
476
|
-
if (symbol.documentation) {
|
|
477
|
-
const firstLine = symbol.documentation.split('\n')[0].trim();
|
|
478
|
-
if (firstLine.length > 0) {
|
|
479
|
-
summary.description = firstLine.length > 100
|
|
480
|
-
? firstLine.slice(0, 100) + '...'
|
|
481
|
-
: firstLine;
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
return summary;
|
|
485
|
-
}
|
|
486
415
|
relativePath(repoRoot, filePath) {
|
|
487
416
|
if (path.isAbsolute(filePath)) {
|
|
488
417
|
return path.relative(repoRoot, filePath);
|
|
489
418
|
}
|
|
490
419
|
return filePath;
|
|
491
420
|
}
|
|
492
|
-
/**
|
|
493
|
-
* Build key files section with descriptions and categories
|
|
494
|
-
*/
|
|
495
421
|
buildKeyFilesSection(repoStructure, semantics) {
|
|
496
422
|
const keyFiles = [];
|
|
497
423
|
const seenPaths = new Set();
|
|
498
|
-
// Process all files and check against key file patterns
|
|
499
424
|
for (const file of repoStructure.files) {
|
|
500
425
|
const relativePath = file.relativePath;
|
|
501
426
|
for (const { pattern, description, category } of KEY_FILE_PATTERNS) {
|
|
@@ -510,29 +435,26 @@ class CodebaseMapGenerator {
|
|
|
510
435
|
}
|
|
511
436
|
}
|
|
512
437
|
}
|
|
513
|
-
// Add entry points that aren't already included
|
|
514
438
|
if (semantics) {
|
|
515
|
-
for (const
|
|
516
|
-
const relativePath = this.relativePath(repoStructure.rootPath,
|
|
439
|
+
for (const entryPoint of semantics.architecture.entryPoints) {
|
|
440
|
+
const relativePath = this.relativePath(repoStructure.rootPath, entryPoint);
|
|
517
441
|
if (!seenPaths.has(relativePath)) {
|
|
518
442
|
seenPaths.add(relativePath);
|
|
519
|
-
const category = this.inferCategory(relativePath);
|
|
520
443
|
keyFiles.push({
|
|
521
444
|
path: relativePath,
|
|
522
445
|
description: this.inferFileDescription(relativePath) || 'Entry point',
|
|
523
|
-
category,
|
|
446
|
+
category: this.inferCategory(relativePath),
|
|
524
447
|
});
|
|
525
448
|
}
|
|
526
449
|
}
|
|
527
450
|
}
|
|
528
|
-
// Sort by category priority then by path
|
|
529
451
|
const categoryPriority = {
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
452
|
+
entrypoint: 0,
|
|
453
|
+
config: 1,
|
|
454
|
+
types: 2,
|
|
455
|
+
service: 3,
|
|
456
|
+
generator: 4,
|
|
457
|
+
util: 5,
|
|
536
458
|
};
|
|
537
459
|
return keyFiles
|
|
538
460
|
.sort((a, b) => {
|
|
@@ -542,23 +464,19 @@ class CodebaseMapGenerator {
|
|
|
542
464
|
return aPriority - bPriority;
|
|
543
465
|
return a.path.localeCompare(b.path);
|
|
544
466
|
})
|
|
545
|
-
.slice(0,
|
|
467
|
+
.slice(0, this.maxKeyFiles);
|
|
546
468
|
}
|
|
547
|
-
/**
|
|
548
|
-
* Enhance a file description with semantic context if available
|
|
549
|
-
*/
|
|
550
469
|
enhanceFileDescription(filePath, defaultDescription, semantics) {
|
|
551
470
|
if (!semantics)
|
|
552
471
|
return defaultDescription;
|
|
553
|
-
// Try to find symbols in this file to provide more context
|
|
554
472
|
const allSymbols = [
|
|
555
473
|
...semantics.symbols.classes,
|
|
556
474
|
...semantics.symbols.interfaces,
|
|
557
475
|
...semantics.symbols.functions,
|
|
558
476
|
];
|
|
559
|
-
const fileSymbols = allSymbols.filter(
|
|
477
|
+
const fileSymbols = allSymbols.filter((symbol) => symbol.location.file.endsWith(filePath) || filePath.endsWith(path.basename(symbol.location.file)));
|
|
560
478
|
if (fileSymbols.length > 0) {
|
|
561
|
-
const mainSymbol = fileSymbols.find(
|
|
479
|
+
const mainSymbol = fileSymbols.find((symbol) => symbol.exported) || fileSymbols[0];
|
|
562
480
|
if (mainSymbol.documentation) {
|
|
563
481
|
const firstLine = mainSymbol.documentation.split('\n')[0].trim();
|
|
564
482
|
if (firstLine.length > 0 && firstLine.length <= 100) {
|
|
@@ -568,9 +486,6 @@ class CodebaseMapGenerator {
|
|
|
568
486
|
}
|
|
569
487
|
return defaultDescription;
|
|
570
488
|
}
|
|
571
|
-
/**
|
|
572
|
-
* Infer category from file path
|
|
573
|
-
*/
|
|
574
489
|
inferCategory(filePath) {
|
|
575
490
|
const lowerPath = filePath.toLowerCase();
|
|
576
491
|
if (lowerPath.includes('service'))
|
|
@@ -583,30 +498,24 @@ class CodebaseMapGenerator {
|
|
|
583
498
|
return 'types';
|
|
584
499
|
if (lowerPath.includes('config') || lowerPath.endsWith('.json'))
|
|
585
500
|
return 'config';
|
|
586
|
-
// Check for entry point patterns
|
|
587
501
|
const basename = path.basename(filePath).toLowerCase();
|
|
588
|
-
if (['index', 'main', 'cli', 'server', 'app'].some(
|
|
502
|
+
if (['index', 'main', 'cli', 'server', 'app'].some((name) => basename.startsWith(name))) {
|
|
589
503
|
return 'entrypoint';
|
|
590
504
|
}
|
|
591
|
-
return 'util';
|
|
505
|
+
return 'util';
|
|
592
506
|
}
|
|
593
|
-
/**
|
|
594
|
-
* Build navigation hints section
|
|
595
|
-
*/
|
|
596
507
|
buildNavigationSection(repoStructure, stackInfo) {
|
|
597
|
-
const files = repoStructure.files.map(
|
|
598
|
-
// Detect test pattern
|
|
508
|
+
const files = repoStructure.files.map((file) => file.relativePath);
|
|
599
509
|
let testPattern = 'src/**/*.test.ts';
|
|
600
|
-
if (files.some(
|
|
510
|
+
if (files.some((file) => file.includes('__tests__'))) {
|
|
601
511
|
testPattern = '**/__tests__/**/*.ts';
|
|
602
512
|
}
|
|
603
|
-
else if (files.some(
|
|
513
|
+
else if (files.some((file) => file.includes('.spec.'))) {
|
|
604
514
|
testPattern = '**/*.spec.ts';
|
|
605
515
|
}
|
|
606
|
-
else if (files.some(
|
|
516
|
+
else if (files.some((file) => file.endsWith('.test.ts') || file.endsWith('.test.js'))) {
|
|
607
517
|
testPattern = '**/*.test.{ts,js}';
|
|
608
518
|
}
|
|
609
|
-
// Detect config files
|
|
610
519
|
const configPatterns = [
|
|
611
520
|
'package.json',
|
|
612
521
|
'tsconfig.json',
|
|
@@ -624,16 +533,15 @@ class CodebaseMapGenerator {
|
|
|
624
533
|
'next.config.js',
|
|
625
534
|
'next.config.ts',
|
|
626
535
|
];
|
|
627
|
-
const configFiles = configPatterns.filter(pattern => {
|
|
536
|
+
const configFiles = configPatterns.filter((pattern) => {
|
|
628
537
|
if (pattern.includes('*')) {
|
|
629
|
-
return files.some(
|
|
538
|
+
return files.some((file) => {
|
|
630
539
|
const regex = new RegExp('^' + pattern.replace(/\./g, '\\.').replace(/\*/g, '.*') + '$');
|
|
631
|
-
return regex.test(
|
|
540
|
+
return regex.test(file);
|
|
632
541
|
});
|
|
633
542
|
}
|
|
634
|
-
return files.some(
|
|
543
|
+
return files.some((file) => file === pattern || file.endsWith('/' + pattern));
|
|
635
544
|
});
|
|
636
|
-
// Detect type definition files
|
|
637
545
|
const typeFiles = [];
|
|
638
546
|
for (const file of files) {
|
|
639
547
|
if (file.endsWith('.d.ts') ||
|
|
@@ -643,15 +551,11 @@ class CodebaseMapGenerator {
|
|
|
643
551
|
typeFiles.push(file);
|
|
644
552
|
}
|
|
645
553
|
}
|
|
646
|
-
// Detect main logic directories
|
|
647
554
|
const mainLogicPatterns = ['src/services', 'src/core', 'src/lib', 'lib', 'src/modules'];
|
|
648
|
-
const mainLogic = mainLogicPatterns.filter(pattern => files.some(
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
if (files.some(f => f.startsWith('src/modules/'))) {
|
|
653
|
-
mainLogic.push('src/modules');
|
|
654
|
-
}
|
|
555
|
+
const mainLogic = mainLogicPatterns.filter((pattern) => files.some((file) => file.startsWith(pattern + '/')));
|
|
556
|
+
if (stackInfo?.frameworks.includes('nestjs') && !mainLogic.includes('src/modules')) {
|
|
557
|
+
if (files.some((file) => file.startsWith('src/modules/'))) {
|
|
558
|
+
mainLogic.push('src/modules');
|
|
655
559
|
}
|
|
656
560
|
}
|
|
657
561
|
return {
|