autosnippet 3.3.5 → 3.3.7
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/dashboard/dist/assets/icons-FHns2ypa.js +1 -0
- package/dashboard/dist/assets/index-BRJv5Y3r.js +135 -0
- package/dashboard/dist/assets/index-DzoB7kxK.css +1 -0
- package/dashboard/dist/index.html +3 -3
- package/dist/bin/api-server.js +1 -0
- package/dist/bin/cli.d.ts +1 -0
- package/dist/bin/cli.js +137 -9
- package/dist/lib/agent/AgentFactory.d.ts +0 -17
- package/dist/lib/agent/AgentFactory.js +1 -25
- package/dist/lib/agent/AgentRuntime.d.ts +2 -2
- package/dist/lib/agent/AgentRuntime.js +26 -18
- package/dist/lib/agent/capabilities.d.ts +11 -0
- package/dist/lib/agent/capabilities.js +29 -5
- package/dist/lib/agent/context/ExplorationTracker.js +10 -1
- package/dist/lib/agent/context/exploration/ExplorationStrategies.d.ts +2 -0
- package/dist/lib/agent/context/exploration/ExplorationStrategies.js +2 -2
- package/dist/lib/agent/domain/ChatAgentTasks.js +4 -0
- package/dist/lib/agent/domain/insight-analyst.d.ts +47 -3
- package/dist/lib/agent/domain/insight-analyst.js +111 -11
- package/dist/lib/agent/domain/insight-evolver.d.ts +69 -0
- package/dist/lib/agent/domain/insight-evolver.js +230 -0
- package/dist/lib/agent/domain/insight-gate.d.ts +42 -0
- package/dist/lib/agent/domain/insight-gate.js +41 -0
- package/dist/lib/agent/domain/insight-producer.d.ts +27 -2
- package/dist/lib/agent/domain/insight-producer.js +60 -5
- package/dist/lib/agent/domain/scan-prompts.js +10 -7
- package/dist/lib/agent/forced-summary.js +7 -2
- package/dist/lib/agent/memory/ActiveContext.d.ts +2 -28
- package/dist/lib/agent/memory/MemoryCoordinator.d.ts +2 -2
- package/dist/lib/agent/memory/SessionStore.d.ts +6 -12
- package/dist/lib/agent/memory/SessionStore.js +9 -15
- package/dist/lib/agent/memory/memory-flush-contract.d.ts +49 -0
- package/dist/lib/agent/memory/memory-flush-contract.js +16 -0
- package/dist/lib/agent/memory/session-store-schema.d.ts +20 -0
- package/dist/lib/agent/memory/session-store-schema.js +41 -0
- package/dist/lib/agent/presets.d.ts +89 -1
- package/dist/lib/agent/presets.js +53 -5
- package/dist/lib/agent/tools/_shared.d.ts +7 -15
- package/dist/lib/agent/tools/_shared.js +20 -21
- package/dist/lib/agent/tools/composite.d.ts +25 -22
- package/dist/lib/agent/tools/composite.js +108 -109
- package/dist/lib/agent/tools/evolution-tools.d.ts +145 -0
- package/dist/lib/agent/tools/evolution-tools.js +161 -0
- package/dist/lib/agent/tools/index.d.ts +163 -92
- package/dist/lib/agent/tools/index.js +9 -1
- package/dist/lib/agent/tools/lifecycle.d.ts +7 -1
- package/dist/lib/agent/tools/lifecycle.js +59 -75
- package/dist/lib/cli/AiScanService.js +5 -5
- package/dist/lib/cli/KnowledgeSyncService.js +1 -1
- package/dist/lib/core/AstAnalyzer.d.ts +1 -0
- package/dist/lib/core/discovery/ConfigWatcher.d.ts +64 -0
- package/dist/lib/core/discovery/ConfigWatcher.js +336 -0
- package/dist/lib/core/discovery/CustomConfigDiscoverer.d.ts +30 -0
- package/dist/lib/core/discovery/CustomConfigDiscoverer.js +1305 -0
- package/dist/lib/core/discovery/DiscovererPreference.d.ts +44 -0
- package/dist/lib/core/discovery/DiscovererPreference.js +141 -0
- package/dist/lib/core/discovery/DiscovererRegistry.d.ts +10 -1
- package/dist/lib/core/discovery/DiscovererRegistry.js +42 -2
- package/dist/lib/core/discovery/ProjectDiscoverer.d.ts +19 -0
- package/dist/lib/core/discovery/index.d.ts +2 -0
- package/dist/lib/core/discovery/index.js +4 -0
- package/dist/lib/core/discovery/parsers/CMakeParser.d.ts +32 -0
- package/dist/lib/core/discovery/parsers/CMakeParser.js +148 -0
- package/dist/lib/core/discovery/parsers/GradleDslParser.d.ts +43 -0
- package/dist/lib/core/discovery/parsers/GradleDslParser.js +171 -0
- package/dist/lib/core/discovery/parsers/JsonConfigParser.d.ts +45 -0
- package/dist/lib/core/discovery/parsers/JsonConfigParser.js +122 -0
- package/dist/lib/core/discovery/parsers/RubyDslParser.d.ts +49 -0
- package/dist/lib/core/discovery/parsers/RubyDslParser.js +282 -0
- package/dist/lib/core/discovery/parsers/StarlarkParser.d.ts +33 -0
- package/dist/lib/core/discovery/parsers/StarlarkParser.js +229 -0
- package/dist/lib/core/discovery/parsers/YamlConfigParser.d.ts +37 -0
- package/dist/lib/core/discovery/parsers/YamlConfigParser.js +212 -0
- package/dist/lib/{service/bootstrap/DimensionCopyRegistry.d.ts → domain/dimension/DimensionCopy.d.ts} +2 -2
- package/dist/lib/{service/bootstrap/DimensionCopyRegistry.js → domain/dimension/DimensionCopy.js} +22 -72
- package/dist/lib/domain/dimension/DimensionRegistry.d.ts +54 -0
- package/dist/lib/domain/dimension/DimensionRegistry.js +620 -0
- package/dist/lib/domain/dimension/DimensionSop.d.ts +55 -0
- package/dist/lib/domain/dimension/DimensionSop.js +1604 -0
- package/dist/lib/domain/dimension/UnifiedDimension.d.ts +61 -0
- package/dist/lib/domain/dimension/UnifiedDimension.js +53 -0
- package/dist/lib/domain/dimension/index.d.ts +10 -0
- package/dist/lib/domain/dimension/index.js +9 -0
- package/dist/lib/domain/knowledge/FieldSpec.d.ts +1 -1
- package/dist/lib/domain/knowledge/FieldSpec.js +29 -16
- package/dist/lib/domain/knowledge/KnowledgeEntry.d.ts +40 -112
- package/dist/lib/domain/knowledge/KnowledgeEntry.js +44 -9
- package/dist/lib/domain/knowledge/KnowledgeRepository.d.ts +1 -0
- package/dist/lib/domain/knowledge/KnowledgeRepository.js +3 -0
- package/dist/lib/domain/knowledge/Lifecycle.js +1 -1
- package/dist/lib/domain/knowledge/StyleGuide.d.ts +1 -1
- package/dist/lib/domain/knowledge/StyleGuide.js +1 -1
- package/dist/lib/domain/knowledge/UnifiedValidator.js +15 -0
- package/dist/lib/external/ai/AiProvider.d.ts +12 -0
- package/dist/lib/external/ai/AiProvider.js +24 -0
- package/dist/lib/external/ai/AiProviderManager.d.ts +101 -0
- package/dist/lib/external/ai/AiProviderManager.js +193 -0
- package/dist/lib/external/ai/providers/ClaudeProvider.js +11 -0
- package/dist/lib/external/ai/providers/GoogleGeminiProvider.js +18 -0
- package/dist/lib/external/ai/providers/MockProvider.d.ts +21 -3
- package/dist/lib/external/ai/providers/MockProvider.js +290 -14
- package/dist/lib/external/ai/providers/OpenAiProvider.js +16 -0
- package/dist/lib/external/lark/LarkTransport.d.ts +5 -1
- package/dist/lib/external/lark/LarkTransport.js +10 -2
- package/dist/lib/external/mcp/McpServer.js +4 -0
- package/dist/lib/external/mcp/handlers/TargetClassifier.d.ts +1 -1
- package/dist/lib/external/mcp/handlers/bootstrap/BootstrapSession.d.ts +8 -16
- package/dist/lib/external/mcp/handlers/bootstrap/BootstrapSession.js +10 -10
- package/dist/lib/external/mcp/handlers/bootstrap/ExternalSubmissionTracker.d.ts +7 -0
- package/dist/lib/external/mcp/handlers/bootstrap/ExternalSubmissionTracker.js +20 -0
- package/dist/lib/external/mcp/handlers/bootstrap/MissionBriefingBuilder.d.ts +52 -132
- package/dist/lib/external/mcp/handlers/bootstrap/MissionBriefingBuilder.js +204 -17
- package/dist/lib/external/mcp/handlers/bootstrap/base-dimensions.d.ts +11 -75
- package/dist/lib/external/mcp/handlers/bootstrap/base-dimensions.js +40 -191
- package/dist/lib/external/mcp/handlers/bootstrap/pipeline/dimension-configs.d.ts +13 -78
- package/dist/lib/external/mcp/handlers/bootstrap/pipeline/dimension-configs.js +30 -52
- package/dist/lib/external/mcp/handlers/bootstrap/pipeline/dimension-context.d.ts +0 -1
- package/dist/lib/external/mcp/handlers/bootstrap/pipeline/mock-pipeline.d.ts +20 -0
- package/dist/lib/external/mcp/handlers/bootstrap/pipeline/mock-pipeline.js +432 -0
- package/dist/lib/external/mcp/handlers/bootstrap/pipeline/orchestrator.d.ts +99 -12
- package/dist/lib/external/mcp/handlers/bootstrap/pipeline/orchestrator.js +188 -169
- package/dist/lib/external/mcp/handlers/bootstrap/pipeline/tier-scheduler.js +7 -17
- package/dist/lib/external/mcp/handlers/bootstrap/refine.js +8 -0
- package/dist/lib/external/mcp/handlers/bootstrap/shared/async-fill-helpers.d.ts +46 -0
- package/dist/lib/external/mcp/handlers/bootstrap/shared/async-fill-helpers.js +58 -0
- package/dist/lib/external/mcp/handlers/bootstrap/shared/audit-helpers.d.ts +25 -0
- package/dist/lib/external/mcp/handlers/bootstrap/shared/audit-helpers.js +47 -0
- package/dist/lib/external/mcp/handlers/bootstrap/shared/bootstrap-phases.d.ts +50 -12
- package/dist/lib/external/mcp/handlers/bootstrap/shared/bootstrap-phases.js +30 -10
- package/dist/lib/external/mcp/handlers/bootstrap/shared/dimension-text.js +1 -1
- package/dist/lib/external/mcp/handlers/bootstrap/shared/handler-types.d.ts +24 -0
- package/dist/lib/external/mcp/handlers/bootstrap/shared/handler-types.js +14 -0
- package/dist/lib/external/mcp/handlers/bootstrap/shared/panorama-utils.d.ts +14 -0
- package/dist/lib/external/mcp/handlers/bootstrap/shared/panorama-utils.js +48 -0
- package/dist/lib/external/mcp/handlers/bootstrap/shared/session-helpers.d.ts +21 -0
- package/dist/lib/external/mcp/handlers/bootstrap/shared/session-helpers.js +45 -0
- package/dist/lib/external/mcp/handlers/bootstrap/shared/skill-generator.d.ts +1 -1
- package/dist/lib/external/mcp/handlers/bootstrap/shared/target-file-map.d.ts +27 -0
- package/dist/lib/external/mcp/handlers/bootstrap/shared/target-file-map.js +44 -0
- package/dist/lib/external/mcp/handlers/bootstrap-external.d.ts +23 -10
- package/dist/lib/external/mcp/handlers/bootstrap-external.js +41 -51
- package/dist/lib/external/mcp/handlers/bootstrap-internal.d.ts +2 -0
- package/dist/lib/external/mcp/handlers/bootstrap-internal.js +117 -82
- package/dist/lib/external/mcp/handlers/consolidated.d.ts +4 -4
- package/dist/lib/external/mcp/handlers/consolidated.js +108 -332
- package/dist/lib/external/mcp/handlers/dimension-complete-external.js +71 -2
- package/dist/lib/external/mcp/handlers/evolve-external.d.ts +54 -0
- package/dist/lib/external/mcp/handlers/evolve-external.js +229 -0
- package/dist/lib/external/mcp/handlers/knowledge.js +30 -5
- package/dist/lib/external/mcp/handlers/rescan-external.d.ts +76 -0
- package/dist/lib/external/mcp/handlers/rescan-external.js +335 -0
- package/dist/lib/external/mcp/handlers/rescan-internal.d.ts +120 -0
- package/dist/lib/external/mcp/handlers/rescan-internal.js +359 -0
- package/dist/lib/external/mcp/handlers/search.d.ts +6 -5
- package/dist/lib/external/mcp/handlers/search.js +6 -5
- package/dist/lib/external/mcp/handlers/types.d.ts +2 -1
- package/dist/lib/external/mcp/handlers/wiki-external.js +2 -2
- package/dist/lib/external/mcp/tools.d.ts +8 -18
- package/dist/lib/external/mcp/tools.js +58 -2
- package/dist/lib/http/routes/ai.js +111 -30
- package/dist/lib/http/routes/candidates.js +11 -4
- package/dist/lib/http/routes/commands.js +10 -1
- package/dist/lib/http/routes/health.js +11 -0
- package/dist/lib/http/routes/knowledge.js +122 -1
- package/dist/lib/http/routes/modules.js +52 -3
- package/dist/lib/http/routes/panorama.js +16 -4
- package/dist/lib/http/routes/recipes.js +7 -0
- package/dist/lib/http/utils/routeHelpers.js +2 -1
- package/dist/lib/infrastructure/cache/CacheCoordinator.d.ts +41 -0
- package/dist/lib/infrastructure/cache/CacheCoordinator.js +105 -0
- package/dist/lib/infrastructure/database/migrations/006_lifecycle_transition_events.d.ts +7 -0
- package/dist/lib/infrastructure/database/migrations/006_lifecycle_transition_events.js +28 -0
- package/dist/lib/infrastructure/vector/HnswVectorAdapter.js +1 -1
- package/dist/lib/injection/ServiceContainer.d.ts +6 -5
- package/dist/lib/injection/ServiceContainer.js +64 -25
- package/dist/lib/injection/ServiceMap.d.ts +10 -1
- package/dist/lib/injection/modules/AiModule.d.ts +6 -9
- package/dist/lib/injection/modules/AiModule.js +82 -39
- package/dist/lib/injection/modules/KnowledgeModule.js +15 -1
- package/dist/lib/injection/modules/PanoramaModule.js +1 -1
- package/dist/lib/repository/knowledge/KnowledgeRepository.impl.d.ts +4 -0
- package/dist/lib/repository/knowledge/KnowledgeRepository.impl.js +16 -1
- package/dist/lib/service/bootstrap/BootstrapEventEmitter.d.ts +3 -2
- package/dist/lib/service/bootstrap/BootstrapEventEmitter.js +1 -1
- package/dist/lib/service/bootstrap/DeliveryVerifier.d.ts +51 -0
- package/dist/lib/service/bootstrap/DeliveryVerifier.js +163 -0
- package/dist/lib/service/bootstrap/UiStartupTasks.d.ts +5 -0
- package/dist/lib/service/bootstrap/UiStartupTasks.js +20 -0
- package/dist/lib/service/bootstrap/bootstrap-event-types.d.ts +54 -0
- package/dist/lib/service/bootstrap/bootstrap-event-types.js +10 -0
- package/dist/lib/service/cleanup/CleanupService.d.ts +132 -0
- package/dist/lib/service/cleanup/CleanupService.js +571 -0
- package/dist/lib/service/delivery/AgentInstructionsGenerator.js +39 -43
- package/dist/lib/service/delivery/FileProtection.d.ts +20 -0
- package/dist/lib/service/delivery/FileProtection.js +54 -0
- package/dist/lib/service/delivery/SkillsSyncer.js +16 -21
- package/dist/lib/service/evolution/ContentPatcher.d.ts +44 -0
- package/dist/lib/service/evolution/ContentPatcher.js +310 -0
- package/dist/lib/service/evolution/ProposalExecutor.d.ts +4 -0
- package/dist/lib/service/evolution/ProposalExecutor.js +77 -13
- package/dist/lib/service/evolution/RecipeLifecycleSupervisor.d.ts +64 -0
- package/dist/lib/service/evolution/RecipeLifecycleSupervisor.js +458 -0
- package/dist/lib/service/evolution/RecipeRelevanceAuditor.d.ts +89 -0
- package/dist/lib/service/evolution/RecipeRelevanceAuditor.js +492 -0
- package/dist/lib/service/evolution/createSupersedeProposal.d.ts +44 -0
- package/dist/lib/service/evolution/createSupersedeProposal.js +81 -0
- package/dist/lib/service/guard/ComplianceReporter.d.ts +4 -0
- package/dist/lib/service/guard/ComplianceReporter.js +51 -0
- package/dist/lib/service/guard/GuardCheckEngine.js +5 -4
- package/dist/lib/service/knowledge/CodeEntityGraph.d.ts +6 -0
- package/dist/lib/service/knowledge/CodeEntityGraph.js +16 -0
- package/dist/lib/service/knowledge/ConfidenceRouter.js +1 -1
- package/dist/lib/service/knowledge/KnowledgeService.d.ts +11 -1
- package/dist/lib/service/knowledge/KnowledgeService.js +67 -14
- package/dist/lib/service/knowledge/RecipeProductionGateway.d.ts +225 -0
- package/dist/lib/service/knowledge/RecipeProductionGateway.js +384 -0
- package/dist/lib/service/module/ModuleService.js +10 -19
- package/dist/lib/service/panorama/CouplingAnalyzer.d.ts +10 -1
- package/dist/lib/service/panorama/CouplingAnalyzer.js +44 -2
- package/dist/lib/service/panorama/DimensionAnalyzer.d.ts +4 -3
- package/dist/lib/service/panorama/DimensionAnalyzer.js +40 -151
- package/dist/lib/service/panorama/LayerInferrer.d.ts +16 -1
- package/dist/lib/service/panorama/LayerInferrer.js +118 -1
- package/dist/lib/service/panorama/ModuleDiscoverer.d.ts +9 -0
- package/dist/lib/service/panorama/ModuleDiscoverer.js +58 -2
- package/dist/lib/service/panorama/PanoramaAggregator.d.ts +6 -2
- package/dist/lib/service/panorama/PanoramaAggregator.js +84 -6
- package/dist/lib/service/panorama/PanoramaScanner.js +28 -0
- package/dist/lib/service/panorama/PanoramaService.js +10 -5
- package/dist/lib/service/panorama/PanoramaTypes.d.ts +38 -0
- package/dist/lib/service/panorama/RoleRefiner.d.ts +2 -0
- package/dist/lib/service/panorama/RoleRefiner.js +41 -0
- package/dist/lib/service/panorama/TechStackProfiler.d.ts +13 -0
- package/dist/lib/service/panorama/TechStackProfiler.js +191 -0
- package/dist/lib/service/search/BM25Scorer.d.ts +2 -2
- package/dist/lib/service/search/SearchEngine.d.ts +11 -10
- package/dist/lib/service/search/SearchEngine.js +38 -36
- package/dist/lib/service/search/SearchTypes.d.ts +14 -8
- package/dist/lib/service/search/SearchTypes.js +1 -1
- package/dist/lib/service/search/tokenizer.d.ts +1 -1
- package/dist/lib/service/search/tokenizer.js +2 -2
- package/dist/lib/service/skills/SignalCollector.d.ts +1 -0
- package/dist/lib/service/skills/SignalCollector.js +6 -5
- package/dist/lib/service/vector/ContextualEnricher.d.ts +1 -0
- package/dist/lib/service/vector/ContextualEnricher.js +4 -0
- package/dist/lib/shared/LanguageService.js +3 -0
- package/dist/lib/shared/developer-identity.d.ts +18 -0
- package/dist/lib/shared/developer-identity.js +62 -0
- package/dist/lib/shared/schemas/common.d.ts +4 -4
- package/dist/lib/shared/schemas/http-requests.d.ts +20 -18
- package/dist/lib/shared/schemas/http-requests.js +17 -6
- package/dist/lib/shared/schemas/mcp-tools.d.ts +32 -2
- package/dist/lib/shared/schemas/mcp-tools.js +38 -0
- package/dist/lib/types/evolution.d.ts +135 -0
- package/dist/lib/types/evolution.js +6 -0
- package/dist/lib/types/graph-shared.d.ts +25 -0
- package/dist/lib/types/graph-shared.js +7 -0
- package/dist/lib/types/knowledge-wire.d.ts +132 -0
- package/dist/lib/types/knowledge-wire.js +7 -0
- package/dist/lib/types/project-snapshot-builder.d.ts +19 -0
- package/dist/lib/types/project-snapshot-builder.js +189 -0
- package/dist/lib/types/project-snapshot.d.ts +399 -0
- package/dist/lib/types/project-snapshot.js +17 -0
- package/dist/lib/types/search-wire.d.ts +46 -0
- package/dist/lib/types/search-wire.js +7 -0
- package/dist/lib/types/snapshot-views.d.ts +58 -0
- package/dist/lib/types/snapshot-views.js +103 -0
- package/package.json +1 -1
- package/skills/autosnippet-recipes/SKILL.md +1 -1
- package/templates/instructions/agent-static.md +2 -0
- package/templates/instructions/conventions.md +3 -1
- package/templates/recipes-setup/README.md +2 -2
- package/dashboard/dist/assets/icons-BJ2mUBi8.js +0 -1
- package/dashboard/dist/assets/index-B659K9t5.js +0 -128
- package/dashboard/dist/assets/index-NCm40PMD.css +0 -1
- package/dist/lib/external/mcp/handlers/bootstrap/pipeline/noAiFallback.d.ts +0 -169
- package/dist/lib/external/mcp/handlers/bootstrap/pipeline/noAiFallback.js +0 -727
- package/dist/lib/external/mcp/handlers/bootstrap/shared/dimension-sop.d.ts +0 -370
- package/dist/lib/external/mcp/handlers/bootstrap/shared/dimension-sop.js +0 -821
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { enrichCandidate, refineBootstrapCandidates } from './ai-analysis.js';
|
|
7
7
|
import { getCategoryMap, getClassHierarchy, getClassInfo, getMethodOverrides, getPreviousAnalysis, getPreviousEvidence, getProjectOverview, getProtocolInfo, noteFinding, queryCallGraph, queryCodeGraph } from './ast-graph.js';
|
|
8
8
|
import { analyzeCode, getToolDetails, knowledgeOverview, planTask, reviewMyOutput, submitWithCheck } from './composite.js';
|
|
9
|
+
import { confirmDeprecation, proposeEvolution, skipEvolution } from './evolution-tools.js';
|
|
9
10
|
import { getRecommendations, guardCheckCode, listGuardRules, queryViolations } from './guard.js';
|
|
10
11
|
import { bootstrapKnowledgeTool, createSkillTool, graphImpactAnalysis, loadSkill, queryAuditLog, rebuildIndex, suggestSkills } from './infrastructure.js';
|
|
11
12
|
import { addGraphEdge, checkDuplicate } from './knowledge-graph.js';
|
|
@@ -14,76 +15,8 @@ import { getFileSummary, listProjectStructure, readProjectFile, searchProjectCod
|
|
|
14
15
|
import { getProjectStats, getRecipeDetail, getRelatedRecipes, searchCandidates, searchKnowledge, searchRecipes } from './query.js';
|
|
15
16
|
import { collectScanRecipe } from './scan-recipe.js';
|
|
16
17
|
import { getEnvironmentInfo, runSafeCommand, writeProjectFile } from './system-interaction.js';
|
|
17
|
-
export { searchProjectCode, readProjectFile, listProjectStructure, getFileSummary, semanticSearchCode, searchRecipes, searchCandidates, getRecipeDetail, getProjectStats, searchKnowledge, getRelatedRecipes, enrichCandidate, refineBootstrapCandidates, listGuardRules, getRecommendations, guardCheckCode, queryViolations, checkDuplicate, addGraphEdge, submitCandidate, approveCandidate, rejectCandidate, publishRecipe, deprecateRecipe, updateRecipe, recordUsage, qualityScore, validateCandidate, getFeedbackStats, graphImpactAnalysis, rebuildIndex, queryAuditLog, loadSkill, createSkillTool, suggestSkills, bootstrapKnowledgeTool, analyzeCode, knowledgeOverview, submitWithCheck, getToolDetails, planTask, reviewMyOutput, getProjectOverview, getClassHierarchy, getClassInfo, getProtocolInfo, getMethodOverrides, getCategoryMap, getPreviousAnalysis, noteFinding, getPreviousEvidence, queryCodeGraph, queryCallGraph, collectScanRecipe, runSafeCommand, writeProjectFile, getEnvironmentInfo, };
|
|
18
|
+
export { searchProjectCode, readProjectFile, listProjectStructure, getFileSummary, semanticSearchCode, searchRecipes, searchCandidates, getRecipeDetail, getProjectStats, searchKnowledge, getRelatedRecipes, enrichCandidate, refineBootstrapCandidates, listGuardRules, getRecommendations, guardCheckCode, queryViolations, checkDuplicate, addGraphEdge, submitCandidate, approveCandidate, rejectCandidate, publishRecipe, deprecateRecipe, updateRecipe, recordUsage, qualityScore, validateCandidate, getFeedbackStats, graphImpactAnalysis, rebuildIndex, queryAuditLog, loadSkill, createSkillTool, suggestSkills, bootstrapKnowledgeTool, analyzeCode, knowledgeOverview, submitWithCheck, getToolDetails, planTask, reviewMyOutput, getProjectOverview, getClassHierarchy, getClassInfo, getProtocolInfo, getMethodOverrides, getCategoryMap, getPreviousAnalysis, noteFinding, getPreviousEvidence, queryCodeGraph, queryCallGraph, collectScanRecipe, runSafeCommand, writeProjectFile, getEnvironmentInfo, proposeEvolution, confirmDeprecation, skipEvolution, };
|
|
18
19
|
export declare const ALL_TOOLS: ({
|
|
19
|
-
name: string;
|
|
20
|
-
description: string;
|
|
21
|
-
parameters: {
|
|
22
|
-
type: string;
|
|
23
|
-
properties: {
|
|
24
|
-
candidateIds: {
|
|
25
|
-
type: string;
|
|
26
|
-
items: {
|
|
27
|
-
type: string;
|
|
28
|
-
};
|
|
29
|
-
description: string;
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
required: string[];
|
|
33
|
-
};
|
|
34
|
-
handler: (params: Record<string, unknown>, ctx: import("./_shared.js").ToolHandlerContext) => Promise<{
|
|
35
|
-
total: number;
|
|
36
|
-
needsEnrichment: number;
|
|
37
|
-
needsRecipeFields: number;
|
|
38
|
-
fullyComplete: number;
|
|
39
|
-
entries: import("../../external/mcp/handlers/types.js").EnrichResultEntry[];
|
|
40
|
-
hint: string;
|
|
41
|
-
} | {
|
|
42
|
-
success: boolean;
|
|
43
|
-
errorCode: string | null;
|
|
44
|
-
message: string;
|
|
45
|
-
data: {
|
|
46
|
-
total: number;
|
|
47
|
-
needsEnrichment: number;
|
|
48
|
-
needsRecipeFields: number;
|
|
49
|
-
fullyComplete: number;
|
|
50
|
-
entries: import("../../external/mcp/handlers/types.js").EnrichResultEntry[];
|
|
51
|
-
hint: string;
|
|
52
|
-
} | null;
|
|
53
|
-
meta: {
|
|
54
|
-
source?: string | undefined;
|
|
55
|
-
responseTimeMs?: number | undefined;
|
|
56
|
-
version: string;
|
|
57
|
-
tool?: string | undefined;
|
|
58
|
-
};
|
|
59
|
-
} | {
|
|
60
|
-
error: string;
|
|
61
|
-
}>;
|
|
62
|
-
} | {
|
|
63
|
-
name: string;
|
|
64
|
-
description: string;
|
|
65
|
-
parameters: {
|
|
66
|
-
type: string;
|
|
67
|
-
properties: {
|
|
68
|
-
candidateIds: {
|
|
69
|
-
type: string;
|
|
70
|
-
items: {
|
|
71
|
-
type: string;
|
|
72
|
-
};
|
|
73
|
-
description: string;
|
|
74
|
-
};
|
|
75
|
-
userPrompt: {
|
|
76
|
-
type: string;
|
|
77
|
-
description: string;
|
|
78
|
-
};
|
|
79
|
-
dryRun: {
|
|
80
|
-
type: string;
|
|
81
|
-
description: string;
|
|
82
|
-
};
|
|
83
|
-
};
|
|
84
|
-
};
|
|
85
|
-
handler: (params: Record<string, unknown>, ctx: import("./_shared.js").ToolHandlerContext) => Promise<{}>;
|
|
86
|
-
} | {
|
|
87
20
|
name: string;
|
|
88
21
|
description: string;
|
|
89
22
|
parameters: {
|
|
@@ -397,13 +330,14 @@ export declare const ALL_TOOLS: ({
|
|
|
397
330
|
type: string;
|
|
398
331
|
description: string;
|
|
399
332
|
};
|
|
333
|
+
supersedes: {
|
|
334
|
+
type: string;
|
|
335
|
+
description: string;
|
|
336
|
+
};
|
|
400
337
|
};
|
|
401
338
|
required: string[];
|
|
402
339
|
};
|
|
403
340
|
handler: (params: import("./composite.js").SubmitWithCheckParams, ctx: import("./_shared.js").ToolHandlerContext) => Promise<{
|
|
404
|
-
status: string;
|
|
405
|
-
reason: string;
|
|
406
|
-
} | {
|
|
407
341
|
submitted: boolean;
|
|
408
342
|
status: string;
|
|
409
343
|
reason: string;
|
|
@@ -413,10 +347,19 @@ export declare const ALL_TOOLS: ({
|
|
|
413
347
|
confidence: string;
|
|
414
348
|
hint: string;
|
|
415
349
|
};
|
|
350
|
+
error?: undefined;
|
|
351
|
+
similar?: undefined;
|
|
352
|
+
highestSimilarity?: undefined;
|
|
353
|
+
} | {
|
|
354
|
+
submitted: boolean;
|
|
355
|
+
reason: string;
|
|
356
|
+
error: string;
|
|
357
|
+
status?: undefined;
|
|
358
|
+
errors?: undefined;
|
|
359
|
+
warnings?: undefined;
|
|
360
|
+
_meta?: undefined;
|
|
416
361
|
similar?: undefined;
|
|
417
362
|
highestSimilarity?: undefined;
|
|
418
|
-
entry?: undefined;
|
|
419
|
-
error?: undefined;
|
|
420
363
|
} | {
|
|
421
364
|
submitted: boolean;
|
|
422
365
|
reason: string;
|
|
@@ -433,37 +376,28 @@ export declare const ALL_TOOLS: ({
|
|
|
433
376
|
status?: undefined;
|
|
434
377
|
errors?: undefined;
|
|
435
378
|
warnings?: undefined;
|
|
436
|
-
entry?: undefined;
|
|
437
379
|
error?: undefined;
|
|
438
380
|
} | {
|
|
381
|
+
_meta: {
|
|
382
|
+
confidence: string;
|
|
383
|
+
hint: string;
|
|
384
|
+
};
|
|
385
|
+
_supersedeProposal?: {
|
|
386
|
+
proposalId: string;
|
|
387
|
+
} | undefined;
|
|
439
388
|
submitted: boolean;
|
|
440
|
-
entry:
|
|
389
|
+
entry: unknown;
|
|
441
390
|
similar: {
|
|
442
391
|
file: string;
|
|
443
392
|
title: string;
|
|
444
393
|
similarity: number;
|
|
445
394
|
}[];
|
|
446
|
-
_meta: {
|
|
447
|
-
confidence: string;
|
|
448
|
-
hint: string;
|
|
449
|
-
};
|
|
450
395
|
status?: undefined;
|
|
451
396
|
reason?: undefined;
|
|
452
397
|
errors?: undefined;
|
|
453
398
|
warnings?: undefined;
|
|
454
|
-
highestSimilarity?: undefined;
|
|
455
399
|
error?: undefined;
|
|
456
|
-
} | {
|
|
457
|
-
submitted: boolean;
|
|
458
|
-
reason: string;
|
|
459
|
-
error: string;
|
|
460
|
-
status?: undefined;
|
|
461
|
-
errors?: undefined;
|
|
462
|
-
warnings?: undefined;
|
|
463
|
-
_meta?: undefined;
|
|
464
|
-
similar?: undefined;
|
|
465
400
|
highestSimilarity?: undefined;
|
|
466
|
-
entry?: undefined;
|
|
467
401
|
}>;
|
|
468
402
|
} | {
|
|
469
403
|
name: string;
|
|
@@ -592,6 +526,71 @@ export declare const ALL_TOOLS: ({
|
|
|
592
526
|
}[];
|
|
593
527
|
message: string;
|
|
594
528
|
}>;
|
|
529
|
+
} | {
|
|
530
|
+
name: string;
|
|
531
|
+
description: string;
|
|
532
|
+
parameters: {
|
|
533
|
+
type: string;
|
|
534
|
+
properties: {
|
|
535
|
+
recipeId: {
|
|
536
|
+
type: string;
|
|
537
|
+
description: string;
|
|
538
|
+
};
|
|
539
|
+
type: {
|
|
540
|
+
type: string;
|
|
541
|
+
enum: string[];
|
|
542
|
+
description: string;
|
|
543
|
+
};
|
|
544
|
+
description: {
|
|
545
|
+
type: string;
|
|
546
|
+
description: string;
|
|
547
|
+
};
|
|
548
|
+
evidence: {
|
|
549
|
+
type: string;
|
|
550
|
+
description: string;
|
|
551
|
+
properties: {
|
|
552
|
+
sourceStatus: {
|
|
553
|
+
type: string;
|
|
554
|
+
enum: string[];
|
|
555
|
+
description: string;
|
|
556
|
+
};
|
|
557
|
+
currentCode: {
|
|
558
|
+
type: string;
|
|
559
|
+
description: string;
|
|
560
|
+
};
|
|
561
|
+
newLocation: {
|
|
562
|
+
type: string;
|
|
563
|
+
description: string;
|
|
564
|
+
};
|
|
565
|
+
suggestedChanges: {
|
|
566
|
+
type: string;
|
|
567
|
+
description: string;
|
|
568
|
+
};
|
|
569
|
+
};
|
|
570
|
+
required: string[];
|
|
571
|
+
};
|
|
572
|
+
confidence: {
|
|
573
|
+
type: string;
|
|
574
|
+
description: string;
|
|
575
|
+
};
|
|
576
|
+
};
|
|
577
|
+
required: string[];
|
|
578
|
+
};
|
|
579
|
+
handler: (params: import("./evolution-tools.js").ProposeEvolutionParams, ctx: import("./_shared.js").ToolHandlerContext) => Promise<{
|
|
580
|
+
status: "error";
|
|
581
|
+
message: string;
|
|
582
|
+
recipeId: string;
|
|
583
|
+
proposalId?: undefined;
|
|
584
|
+
type?: undefined;
|
|
585
|
+
expiresAt?: undefined;
|
|
586
|
+
} | {
|
|
587
|
+
status: "proposed";
|
|
588
|
+
proposalId: string;
|
|
589
|
+
recipeId: string;
|
|
590
|
+
type: "enhance" | "correction";
|
|
591
|
+
expiresAt: number;
|
|
592
|
+
message?: undefined;
|
|
593
|
+
}>;
|
|
595
594
|
} | {
|
|
596
595
|
name: string;
|
|
597
596
|
description: string;
|
|
@@ -1024,10 +1023,14 @@ export declare const ALL_TOOLS: ({
|
|
|
1024
1023
|
type: string;
|
|
1025
1024
|
description: string;
|
|
1026
1025
|
};
|
|
1026
|
+
supersedes: {
|
|
1027
|
+
type: string;
|
|
1028
|
+
description: string;
|
|
1029
|
+
};
|
|
1027
1030
|
};
|
|
1028
1031
|
required: string[];
|
|
1029
1032
|
};
|
|
1030
|
-
handler: (params: import("./lifecycle.js").SubmitKnowledgeParams, ctx: import("./_shared.js").ToolHandlerContext) => Promise<
|
|
1033
|
+
handler: (params: import("./lifecycle.js").SubmitKnowledgeParams, ctx: import("./_shared.js").ToolHandlerContext) => Promise<Record<string, unknown>>;
|
|
1031
1034
|
} | {
|
|
1032
1035
|
name: string;
|
|
1033
1036
|
description: string;
|
|
@@ -1850,5 +1853,73 @@ export declare const ALL_TOOLS: ({
|
|
|
1850
1853
|
required: never[];
|
|
1851
1854
|
};
|
|
1852
1855
|
handler: (params: import("./system-interaction.js").GetEnvironmentInfoParams, ctx: import("./_shared.js").ToolHandlerContext) => Promise<import("./system-interaction.js").EnvironmentInfo>;
|
|
1856
|
+
} | {
|
|
1857
|
+
name: string;
|
|
1858
|
+
description: string;
|
|
1859
|
+
parameters: {
|
|
1860
|
+
type: string;
|
|
1861
|
+
properties: {
|
|
1862
|
+
candidateIds: {
|
|
1863
|
+
type: string;
|
|
1864
|
+
items: {
|
|
1865
|
+
type: string;
|
|
1866
|
+
};
|
|
1867
|
+
description: string;
|
|
1868
|
+
};
|
|
1869
|
+
};
|
|
1870
|
+
required: string[];
|
|
1871
|
+
};
|
|
1872
|
+
handler: (params: Record<string, unknown>, ctx: import("./_shared.js").ToolHandlerContext) => Promise<{
|
|
1873
|
+
total: number;
|
|
1874
|
+
needsEnrichment: number;
|
|
1875
|
+
needsRecipeFields: number;
|
|
1876
|
+
fullyComplete: number;
|
|
1877
|
+
entries: import("../../external/mcp/handlers/types.js").EnrichResultEntry[];
|
|
1878
|
+
hint: string;
|
|
1879
|
+
} | {
|
|
1880
|
+
success: boolean;
|
|
1881
|
+
errorCode: string | null;
|
|
1882
|
+
message: string;
|
|
1883
|
+
data: {
|
|
1884
|
+
total: number;
|
|
1885
|
+
needsEnrichment: number;
|
|
1886
|
+
needsRecipeFields: number;
|
|
1887
|
+
fullyComplete: number;
|
|
1888
|
+
entries: import("../../external/mcp/handlers/types.js").EnrichResultEntry[];
|
|
1889
|
+
hint: string;
|
|
1890
|
+
} | null;
|
|
1891
|
+
meta: {
|
|
1892
|
+
source?: string | undefined;
|
|
1893
|
+
responseTimeMs?: number | undefined;
|
|
1894
|
+
version: string;
|
|
1895
|
+
tool?: string | undefined;
|
|
1896
|
+
};
|
|
1897
|
+
} | {
|
|
1898
|
+
error: string;
|
|
1899
|
+
}>;
|
|
1900
|
+
} | {
|
|
1901
|
+
name: string;
|
|
1902
|
+
description: string;
|
|
1903
|
+
parameters: {
|
|
1904
|
+
type: string;
|
|
1905
|
+
properties: {
|
|
1906
|
+
candidateIds: {
|
|
1907
|
+
type: string;
|
|
1908
|
+
items: {
|
|
1909
|
+
type: string;
|
|
1910
|
+
};
|
|
1911
|
+
description: string;
|
|
1912
|
+
};
|
|
1913
|
+
userPrompt: {
|
|
1914
|
+
type: string;
|
|
1915
|
+
description: string;
|
|
1916
|
+
};
|
|
1917
|
+
dryRun: {
|
|
1918
|
+
type: string;
|
|
1919
|
+
description: string;
|
|
1920
|
+
};
|
|
1921
|
+
};
|
|
1922
|
+
};
|
|
1923
|
+
handler: (params: Record<string, unknown>, ctx: import("./_shared.js").ToolHandlerContext) => Promise<{}>;
|
|
1853
1924
|
})[];
|
|
1854
1925
|
export default ALL_TOOLS;
|
|
@@ -9,6 +9,8 @@ import { enrichCandidate, refineBootstrapCandidates } from './ai-analysis.js';
|
|
|
9
9
|
import { getCategoryMap, getClassHierarchy, getClassInfo, getMethodOverrides, getPreviousAnalysis, getPreviousEvidence, getProjectOverview, getProtocolInfo, noteFinding, queryCallGraph, queryCodeGraph, } from './ast-graph.js';
|
|
10
10
|
// ── 组合工具 + 元工具 (6) ──
|
|
11
11
|
import { analyzeCode, getToolDetails, knowledgeOverview, planTask, reviewMyOutput, submitWithCheck, } from './composite.js';
|
|
12
|
+
// ── Evolution Agent 工具 (3) ──
|
|
13
|
+
import { confirmDeprecation, proposeEvolution, skipEvolution } from './evolution-tools.js';
|
|
12
14
|
// ── Guard 安全类 (4) ──
|
|
13
15
|
import { getRecommendations, guardCheckCode, listGuardRules, queryViolations } from './guard.js';
|
|
14
16
|
// ── 基础设施类 (7) ──
|
|
@@ -54,7 +56,9 @@ queryCallGraph,
|
|
|
54
56
|
// 扫描 Recipe 收集
|
|
55
57
|
collectScanRecipe,
|
|
56
58
|
// 系统交互类
|
|
57
|
-
runSafeCommand, writeProjectFile, getEnvironmentInfo,
|
|
59
|
+
runSafeCommand, writeProjectFile, getEnvironmentInfo,
|
|
60
|
+
// Evolution Agent 工具
|
|
61
|
+
proposeEvolution, confirmDeprecation, skipEvolution, };
|
|
58
62
|
// ── ALL_TOOLS 数组(与原始 tools.js 顺序一致)──
|
|
59
63
|
export const ALL_TOOLS = [
|
|
60
64
|
// 项目数据访问 (5) — 含 v10 Agent-Pull 工具
|
|
@@ -131,5 +135,9 @@ export const ALL_TOOLS = [
|
|
|
131
135
|
getEnvironmentInfo,
|
|
132
136
|
// 扫描 Recipe 收集 (1) — scanKnowledge produce 阶段专用
|
|
133
137
|
collectScanRecipe,
|
|
138
|
+
// Evolution Agent 工具 (3) — 提案驱动的 Recipe 进化决策
|
|
139
|
+
proposeEvolution,
|
|
140
|
+
confirmDeprecation,
|
|
141
|
+
skipEvolution,
|
|
134
142
|
];
|
|
135
143
|
export default ALL_TOOLS;
|
|
@@ -42,6 +42,8 @@ export interface SubmitKnowledgeParams {
|
|
|
42
42
|
usageGuide?: string;
|
|
43
43
|
sourceFile?: string;
|
|
44
44
|
_category?: string;
|
|
45
|
+
/** 被替代的旧 Recipe ID(进化架构入口) */
|
|
46
|
+
supersedes?: string;
|
|
45
47
|
[key: string]: unknown;
|
|
46
48
|
}
|
|
47
49
|
export declare const submitCandidate: {
|
|
@@ -132,10 +134,14 @@ export declare const submitCandidate: {
|
|
|
132
134
|
type: string;
|
|
133
135
|
description: string;
|
|
134
136
|
};
|
|
137
|
+
supersedes: {
|
|
138
|
+
type: string;
|
|
139
|
+
description: string;
|
|
140
|
+
};
|
|
135
141
|
};
|
|
136
142
|
required: string[];
|
|
137
143
|
};
|
|
138
|
-
handler: (params: SubmitKnowledgeParams, ctx: ToolHandlerContext) => Promise<
|
|
144
|
+
handler: (params: SubmitKnowledgeParams, ctx: ToolHandlerContext) => Promise<Record<string, unknown>>;
|
|
139
145
|
};
|
|
140
146
|
export declare const approveCandidate: {
|
|
141
147
|
name: string;
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* 25. get_feedback_stats 反馈统计
|
|
14
14
|
*/
|
|
15
15
|
import { getInternalAgentRequiredFields, getSystemInjectedFields, } from '#domain/knowledge/FieldSpec.js';
|
|
16
|
-
import {
|
|
17
|
-
import { checkDimensionType, DIMENSION_DISPLAY_GROUP } from './_shared.js';
|
|
16
|
+
import { checkDimensionType, DIMENSION_DISPLAY_GROUP, stripProjectNamePrefix, } from './_shared.js';
|
|
18
17
|
// ────────────────────────────────────────────────────────────
|
|
19
18
|
// 16. submit_knowledge
|
|
20
19
|
// ────────────────────────────────────────────────────────────
|
|
@@ -71,14 +70,24 @@ export const submitCandidate = {
|
|
|
71
70
|
description: '知识维度:code-pattern / architecture / best-practice 等',
|
|
72
71
|
},
|
|
73
72
|
usageGuide: { type: 'string', description: '使用指南 Markdown(### 章节格式)' },
|
|
74
|
-
sourceFile: {
|
|
73
|
+
sourceFile: {
|
|
74
|
+
type: 'string',
|
|
75
|
+
description: 'Recipe md 文件相对路径(由系统自动设置,无需手动填写)',
|
|
76
|
+
},
|
|
77
|
+
supersedes: {
|
|
78
|
+
type: 'string',
|
|
79
|
+
description: '被替代的旧 Recipe ID。传入后将创建 supersede 提案,72h 观察窗口后自动替代。',
|
|
80
|
+
},
|
|
75
81
|
},
|
|
76
82
|
// FieldSpec 驱动: 内部 Agent 路径排除系统注入字段
|
|
77
83
|
required: getInternalAgentRequiredFields(),
|
|
78
84
|
},
|
|
79
85
|
handler: async (params, ctx) => {
|
|
80
|
-
|
|
81
|
-
|
|
86
|
+
// ── 标题正规化:剥离冗余的项目名前缀 ──
|
|
87
|
+
if (params.title) {
|
|
88
|
+
params.title = stripProjectNamePrefix(params.title, ctx.projectRoot);
|
|
89
|
+
}
|
|
90
|
+
// ── Bootstrap 维度类型校验(source-specific: 仅 bootstrap 流程) ──
|
|
82
91
|
const dimMeta = ctx._dimensionMeta;
|
|
83
92
|
if (dimMeta && ctx.source === 'system') {
|
|
84
93
|
const rejected = checkDimensionType(dimMeta, params, ctx.logger);
|
|
@@ -95,89 +104,64 @@ export const submitCandidate = {
|
|
|
95
104
|
if (!params.tags.includes('bootstrap')) {
|
|
96
105
|
params.tags.push('bootstrap');
|
|
97
106
|
}
|
|
98
|
-
// Bootstrap 模式: 将 category
|
|
99
|
-
params._category =
|
|
100
|
-
DIMENSION_DISPLAY_GROUP[dimMeta.id] || dimMeta.id;
|
|
101
|
-
// ── UnifiedValidator 统一质量验证(替代 CandidateGuardrail) ──
|
|
102
|
-
const validator = ctx._validator ||
|
|
103
|
-
new UnifiedValidator({
|
|
104
|
-
existingTitles: ctx._submittedTitles || new Set(),
|
|
105
|
-
existingFingerprints: ctx._submittedPatterns || new Set(),
|
|
106
|
-
});
|
|
107
|
-
const validResult = validator.validate(params, {
|
|
108
|
-
systemInjectedFields: getSystemInjectedFields(),
|
|
109
|
-
});
|
|
110
|
-
if (!validResult.pass) {
|
|
111
|
-
ctx.logger?.info(`[submit_knowledge] ✗ validator rejected: ${validResult.errors.join('; ')}`);
|
|
112
|
-
return {
|
|
113
|
-
status: 'rejected',
|
|
114
|
-
error: validResult.errors.join('\n'),
|
|
115
|
-
warnings: validResult.warnings,
|
|
116
|
-
hint: '请根据错误信息调整内容后重新提交。',
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
if (validResult.warnings.length > 0) {
|
|
120
|
-
ctx.logger?.debug(`[submit_knowledge] ⚠ warnings: ${validResult.warnings.join('; ')}`);
|
|
121
|
-
}
|
|
107
|
+
// Bootstrap 模式: 将 category 设为维度 ID(前端按此分组显示)
|
|
108
|
+
params._category = dimMeta.id;
|
|
122
109
|
}
|
|
123
110
|
// ── 系统自动设置 ──
|
|
124
|
-
const
|
|
111
|
+
const item = {
|
|
112
|
+
...params,
|
|
125
113
|
language: ctx._projectLanguage || '',
|
|
126
|
-
category: dimMeta
|
|
127
|
-
|
|
128
|
-
: 'general',
|
|
129
|
-
knowledgeType: dimMeta?.allowedKnowledgeTypes?.[0] || 'code-pattern',
|
|
114
|
+
category: dimMeta ? dimMeta.id : params._category || 'general',
|
|
115
|
+
knowledgeType: dimMeta?.allowedKnowledgeTypes?.[0] || params.knowledgeType || 'code-pattern',
|
|
130
116
|
source: ctx.source === 'system' ? 'bootstrap' : 'agent',
|
|
131
|
-
};
|
|
132
|
-
// ── 直传 → KnowledgeEntry ──
|
|
133
|
-
const reasoning = params.reasoning || { whyStandard: '', sources: ['agent'], confidence: 0.7 };
|
|
134
|
-
if (Array.isArray(reasoning.sources) && reasoning.sources.length === 0) {
|
|
135
|
-
reasoning.sources = ['agent'];
|
|
136
|
-
}
|
|
137
|
-
// V3 content 直透
|
|
138
|
-
const contentObj = params.content && typeof params.content === 'object'
|
|
139
|
-
? params.content
|
|
140
|
-
: { markdown: '', pattern: '' };
|
|
141
|
-
const data = {
|
|
142
|
-
...systemFields,
|
|
143
|
-
title: params.title || '',
|
|
144
|
-
description: params.description || '',
|
|
145
|
-
tags: params.tags || [],
|
|
146
|
-
trigger: params.trigger || '',
|
|
147
|
-
kind: params.kind || 'pattern',
|
|
148
|
-
topicHint: params.topicHint || '',
|
|
149
|
-
whenClause: params.whenClause || '',
|
|
150
|
-
doClause: params.doClause || '',
|
|
151
|
-
dontClause: params.dontClause || '',
|
|
152
|
-
coreCode: contentObj.pattern || '',
|
|
153
|
-
content: contentObj,
|
|
154
|
-
reasoning,
|
|
155
|
-
// V3 扩展字段直透
|
|
156
|
-
scope: params.scope || '',
|
|
157
|
-
complexity: params.complexity || '',
|
|
158
|
-
headers: params.headers || [],
|
|
159
|
-
// 注意: sourceFile 由 KnowledgeFileWriter.persist() 自动设置,
|
|
160
|
-
// 不应从 AI params/reasoning.sources 取值(那是项目源文件路径,不是知识文件路径)
|
|
161
|
-
sourceFile: '',
|
|
162
|
-
// 7.3.9 agentNotes/aiInsight 注入
|
|
163
117
|
agentNotes: dimMeta
|
|
164
118
|
? { dimensionId: dimMeta.id, outputType: dimMeta.outputType || 'candidate' }
|
|
165
119
|
: null,
|
|
166
|
-
aiInsight: reasoning.whyStandard || params.description || null,
|
|
167
120
|
};
|
|
168
121
|
if (dimMeta && ctx.source === 'system') {
|
|
169
122
|
const displayGroup = DIMENSION_DISPLAY_GROUP[dimMeta.id] || dimMeta.id;
|
|
170
|
-
|
|
123
|
+
item.tags = [...new Set([...(item.tags || []), displayGroup])];
|
|
171
124
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
125
|
+
// ── 委托 RecipeProductionGateway 统一管道 ──
|
|
126
|
+
const { RecipeProductionGateway } = await import('#service/knowledge/RecipeProductionGateway.js');
|
|
127
|
+
const gateway = new RecipeProductionGateway({
|
|
128
|
+
knowledgeService: ctx.container.get('knowledgeService'),
|
|
129
|
+
projectRoot: ctx.projectRoot,
|
|
130
|
+
logger: ctx.logger,
|
|
131
|
+
proposalRepository: ctx.container.get('proposalRepository') ?? null,
|
|
132
|
+
});
|
|
133
|
+
const gatewayResult = await gateway.create({
|
|
134
|
+
source: 'agent-tool',
|
|
135
|
+
items: [item],
|
|
136
|
+
options: {
|
|
137
|
+
skipSimilarityCheck: true,
|
|
138
|
+
skipConsolidation: true,
|
|
139
|
+
supersedes: params.supersedes,
|
|
140
|
+
existingTitles: ctx._submittedTitles,
|
|
141
|
+
existingFingerprints: ctx._submittedPatterns,
|
|
142
|
+
systemInjectedFields: dimMeta && ctx.source === 'system' ? getSystemInjectedFields() : undefined,
|
|
143
|
+
userId: 'agent',
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
// ── 映射 Gateway 结果 → 原有返回格式 ──
|
|
147
|
+
if (gatewayResult.rejected.length > 0) {
|
|
148
|
+
const rej = gatewayResult.rejected[0];
|
|
149
|
+
ctx.logger?.info(`[submit_knowledge] ✗ validator rejected: ${rej.errors.join('; ')}`);
|
|
150
|
+
return {
|
|
151
|
+
status: 'rejected',
|
|
152
|
+
error: rej.errors.join('\n'),
|
|
153
|
+
warnings: rej.warnings,
|
|
154
|
+
hint: '请根据错误信息调整内容后重新提交。',
|
|
155
|
+
};
|
|
176
156
|
}
|
|
177
|
-
|
|
178
|
-
|
|
157
|
+
if (gatewayResult.created.length > 0) {
|
|
158
|
+
const created = gatewayResult.created[0];
|
|
159
|
+
if (gatewayResult.supersedeProposal) {
|
|
160
|
+
return { ...created.raw, _supersedeProposal: gatewayResult.supersedeProposal };
|
|
161
|
+
}
|
|
162
|
+
return created.raw;
|
|
179
163
|
}
|
|
180
|
-
return
|
|
164
|
+
return { status: 'error', error: 'No items created' };
|
|
181
165
|
},
|
|
182
166
|
};
|
|
183
167
|
// ────────────────────────────────────────────────────────────
|
|
@@ -38,10 +38,10 @@ export class AiScanService {
|
|
|
38
38
|
// 1. 初始化 AgentFactory (内置 AI Provider + ToolExecutionPipeline + 中间件)
|
|
39
39
|
try {
|
|
40
40
|
this.agentFactory = this.container.get('agentFactory');
|
|
41
|
-
//
|
|
42
|
-
const
|
|
43
|
-
if (
|
|
44
|
-
throw new Error('AI Provider
|
|
41
|
+
// 通过 AiProviderManager 统一检查 AI 可用性
|
|
42
|
+
const manager = this.container.singletons?._aiProviderManager;
|
|
43
|
+
if (manager.isMock) {
|
|
44
|
+
throw new Error('AI Provider 为 mock 模式');
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
catch (err) {
|
|
@@ -97,7 +97,7 @@ export class AiScanService {
|
|
|
97
97
|
recipe.source = 'ai-scan';
|
|
98
98
|
recipe.tags = [...new Set([...(recipe.tags || []), 'ai-scan', file.targetName])];
|
|
99
99
|
recipe.moduleName = file.targetName;
|
|
100
|
-
|
|
100
|
+
// 注意:不设置 sourceFile,由 KnowledgeFileWriter 持久化时自动设置为 md 文件路径
|
|
101
101
|
if (!recipe.aiInsight && recipe.description) {
|
|
102
102
|
recipe.aiInsight = recipe.description;
|
|
103
103
|
}
|
|
@@ -348,7 +348,7 @@ export class KnowledgeSyncService {
|
|
|
348
348
|
SET lifecycle = 'deprecated',
|
|
349
349
|
rejectionReason = ?,
|
|
350
350
|
updatedAt = ?
|
|
351
|
-
WHERE id = ?`).run('
|
|
351
|
+
WHERE id = ?`).run('源文件已删除(孤儿条目)', now, row.id);
|
|
352
352
|
}
|
|
353
353
|
}
|
|
354
354
|
}
|
|
@@ -262,3 +262,4 @@ declare function checkProtocolConformance(source: string, lang: string, classNam
|
|
|
262
262
|
classDeclLine: number | undefined;
|
|
263
263
|
};
|
|
264
264
|
export { analyzeFile, analyzeProject, generateContextForAgent, isAvailable, supportedLanguages, findCallExpressions, findPatternInContext, checkProtocolConformance, parseToTree, };
|
|
265
|
+
export type { ProjectAnalysisResult };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigWatcher — 构建配置文件热更新监听器
|
|
3
|
+
*
|
|
4
|
+
* 监听自研构建系统的配置文件变更,执行增量重解析并通知下游服务。
|
|
5
|
+
*
|
|
6
|
+
* 核心策略:
|
|
7
|
+
* - debounce 3s(配置文件常有连续保存)
|
|
8
|
+
* - MD5 hash 差量检测避免无效重解析
|
|
9
|
+
* - 60s 最大频率保护(防 git checkout 等批量变更风暴)
|
|
10
|
+
* - 增量解析:单文件变更只影响对应模块
|
|
11
|
+
* - 通过 SignalBus 触发 PanoramaService 缓存失效
|
|
12
|
+
* - 通过 RealtimeService 推送 Dashboard WebSocket 事件
|
|
13
|
+
*
|
|
14
|
+
* @module ConfigWatcher
|
|
15
|
+
*/
|
|
16
|
+
import type { SignalBus } from '#infra/signal/SignalBus.js';
|
|
17
|
+
/** 变更类型:仅影响范围不同 */
|
|
18
|
+
type ChangeScope = 'full' | 'module' | 'overlay';
|
|
19
|
+
interface ConfigChangeEvent {
|
|
20
|
+
/** 变更的文件列表 */
|
|
21
|
+
changedFiles: Array<{
|
|
22
|
+
path: string;
|
|
23
|
+
scope: ChangeScope;
|
|
24
|
+
moduleName?: string;
|
|
25
|
+
}>;
|
|
26
|
+
/** 配置系统 ID */
|
|
27
|
+
systemId: string;
|
|
28
|
+
/** 事件触发时间 */
|
|
29
|
+
timestamp: number;
|
|
30
|
+
}
|
|
31
|
+
export interface ConfigWatcherOptions {
|
|
32
|
+
/** 项目根目录 */
|
|
33
|
+
projectRoot: string;
|
|
34
|
+
/** 配置系统 ID(easybox / tuist / xcodegen)或自定义 */
|
|
35
|
+
systemId: string;
|
|
36
|
+
/** 自定义 watch patterns(当 systemId 不在内置表中时) */
|
|
37
|
+
watchPatterns?: string[];
|
|
38
|
+
/** 信号总线(触发缓存失效) */
|
|
39
|
+
signalBus?: SignalBus | null;
|
|
40
|
+
/** 变更回调(用于外部通知,如 RealtimeService) */
|
|
41
|
+
onChange?: (event: ConfigChangeEvent) => void;
|
|
42
|
+
/** debounce 毫秒数(默认 3000) */
|
|
43
|
+
debounceMs?: number;
|
|
44
|
+
/** 全量重建最小间隔毫秒(默认 60000) */
|
|
45
|
+
fullRebuildIntervalMs?: number;
|
|
46
|
+
}
|
|
47
|
+
export declare class ConfigWatcher {
|
|
48
|
+
#private;
|
|
49
|
+
constructor(options: ConfigWatcherOptions);
|
|
50
|
+
/**
|
|
51
|
+
* 启动文件监听。异步解析初始文件 hash 并注册 fs.watch。
|
|
52
|
+
* 自动注册 shutdown hook 以清理资源。
|
|
53
|
+
*/
|
|
54
|
+
start(): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* 停止监听,释放所有 fs.watch 资源
|
|
57
|
+
*/
|
|
58
|
+
dispose(): void;
|
|
59
|
+
/** 是否正在监听 */
|
|
60
|
+
get active(): boolean;
|
|
61
|
+
/** 监听的文件数 */
|
|
62
|
+
get watchedFileCount(): number;
|
|
63
|
+
}
|
|
64
|
+
export {};
|