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.
Files changed (279) hide show
  1. package/dashboard/dist/assets/icons-FHns2ypa.js +1 -0
  2. package/dashboard/dist/assets/index-BRJv5Y3r.js +135 -0
  3. package/dashboard/dist/assets/index-DzoB7kxK.css +1 -0
  4. package/dashboard/dist/index.html +3 -3
  5. package/dist/bin/api-server.js +1 -0
  6. package/dist/bin/cli.d.ts +1 -0
  7. package/dist/bin/cli.js +137 -9
  8. package/dist/lib/agent/AgentFactory.d.ts +0 -17
  9. package/dist/lib/agent/AgentFactory.js +1 -25
  10. package/dist/lib/agent/AgentRuntime.d.ts +2 -2
  11. package/dist/lib/agent/AgentRuntime.js +26 -18
  12. package/dist/lib/agent/capabilities.d.ts +11 -0
  13. package/dist/lib/agent/capabilities.js +29 -5
  14. package/dist/lib/agent/context/ExplorationTracker.js +10 -1
  15. package/dist/lib/agent/context/exploration/ExplorationStrategies.d.ts +2 -0
  16. package/dist/lib/agent/context/exploration/ExplorationStrategies.js +2 -2
  17. package/dist/lib/agent/domain/ChatAgentTasks.js +4 -0
  18. package/dist/lib/agent/domain/insight-analyst.d.ts +47 -3
  19. package/dist/lib/agent/domain/insight-analyst.js +111 -11
  20. package/dist/lib/agent/domain/insight-evolver.d.ts +69 -0
  21. package/dist/lib/agent/domain/insight-evolver.js +230 -0
  22. package/dist/lib/agent/domain/insight-gate.d.ts +42 -0
  23. package/dist/lib/agent/domain/insight-gate.js +41 -0
  24. package/dist/lib/agent/domain/insight-producer.d.ts +27 -2
  25. package/dist/lib/agent/domain/insight-producer.js +60 -5
  26. package/dist/lib/agent/domain/scan-prompts.js +10 -7
  27. package/dist/lib/agent/forced-summary.js +7 -2
  28. package/dist/lib/agent/memory/ActiveContext.d.ts +2 -28
  29. package/dist/lib/agent/memory/MemoryCoordinator.d.ts +2 -2
  30. package/dist/lib/agent/memory/SessionStore.d.ts +6 -12
  31. package/dist/lib/agent/memory/SessionStore.js +9 -15
  32. package/dist/lib/agent/memory/memory-flush-contract.d.ts +49 -0
  33. package/dist/lib/agent/memory/memory-flush-contract.js +16 -0
  34. package/dist/lib/agent/memory/session-store-schema.d.ts +20 -0
  35. package/dist/lib/agent/memory/session-store-schema.js +41 -0
  36. package/dist/lib/agent/presets.d.ts +89 -1
  37. package/dist/lib/agent/presets.js +53 -5
  38. package/dist/lib/agent/tools/_shared.d.ts +7 -15
  39. package/dist/lib/agent/tools/_shared.js +20 -21
  40. package/dist/lib/agent/tools/composite.d.ts +25 -22
  41. package/dist/lib/agent/tools/composite.js +108 -109
  42. package/dist/lib/agent/tools/evolution-tools.d.ts +145 -0
  43. package/dist/lib/agent/tools/evolution-tools.js +161 -0
  44. package/dist/lib/agent/tools/index.d.ts +163 -92
  45. package/dist/lib/agent/tools/index.js +9 -1
  46. package/dist/lib/agent/tools/lifecycle.d.ts +7 -1
  47. package/dist/lib/agent/tools/lifecycle.js +59 -75
  48. package/dist/lib/cli/AiScanService.js +5 -5
  49. package/dist/lib/cli/KnowledgeSyncService.js +1 -1
  50. package/dist/lib/core/AstAnalyzer.d.ts +1 -0
  51. package/dist/lib/core/discovery/ConfigWatcher.d.ts +64 -0
  52. package/dist/lib/core/discovery/ConfigWatcher.js +336 -0
  53. package/dist/lib/core/discovery/CustomConfigDiscoverer.d.ts +30 -0
  54. package/dist/lib/core/discovery/CustomConfigDiscoverer.js +1305 -0
  55. package/dist/lib/core/discovery/DiscovererPreference.d.ts +44 -0
  56. package/dist/lib/core/discovery/DiscovererPreference.js +141 -0
  57. package/dist/lib/core/discovery/DiscovererRegistry.d.ts +10 -1
  58. package/dist/lib/core/discovery/DiscovererRegistry.js +42 -2
  59. package/dist/lib/core/discovery/ProjectDiscoverer.d.ts +19 -0
  60. package/dist/lib/core/discovery/index.d.ts +2 -0
  61. package/dist/lib/core/discovery/index.js +4 -0
  62. package/dist/lib/core/discovery/parsers/CMakeParser.d.ts +32 -0
  63. package/dist/lib/core/discovery/parsers/CMakeParser.js +148 -0
  64. package/dist/lib/core/discovery/parsers/GradleDslParser.d.ts +43 -0
  65. package/dist/lib/core/discovery/parsers/GradleDslParser.js +171 -0
  66. package/dist/lib/core/discovery/parsers/JsonConfigParser.d.ts +45 -0
  67. package/dist/lib/core/discovery/parsers/JsonConfigParser.js +122 -0
  68. package/dist/lib/core/discovery/parsers/RubyDslParser.d.ts +49 -0
  69. package/dist/lib/core/discovery/parsers/RubyDslParser.js +282 -0
  70. package/dist/lib/core/discovery/parsers/StarlarkParser.d.ts +33 -0
  71. package/dist/lib/core/discovery/parsers/StarlarkParser.js +229 -0
  72. package/dist/lib/core/discovery/parsers/YamlConfigParser.d.ts +37 -0
  73. package/dist/lib/core/discovery/parsers/YamlConfigParser.js +212 -0
  74. package/dist/lib/{service/bootstrap/DimensionCopyRegistry.d.ts → domain/dimension/DimensionCopy.d.ts} +2 -2
  75. package/dist/lib/{service/bootstrap/DimensionCopyRegistry.js → domain/dimension/DimensionCopy.js} +22 -72
  76. package/dist/lib/domain/dimension/DimensionRegistry.d.ts +54 -0
  77. package/dist/lib/domain/dimension/DimensionRegistry.js +620 -0
  78. package/dist/lib/domain/dimension/DimensionSop.d.ts +55 -0
  79. package/dist/lib/domain/dimension/DimensionSop.js +1604 -0
  80. package/dist/lib/domain/dimension/UnifiedDimension.d.ts +61 -0
  81. package/dist/lib/domain/dimension/UnifiedDimension.js +53 -0
  82. package/dist/lib/domain/dimension/index.d.ts +10 -0
  83. package/dist/lib/domain/dimension/index.js +9 -0
  84. package/dist/lib/domain/knowledge/FieldSpec.d.ts +1 -1
  85. package/dist/lib/domain/knowledge/FieldSpec.js +29 -16
  86. package/dist/lib/domain/knowledge/KnowledgeEntry.d.ts +40 -112
  87. package/dist/lib/domain/knowledge/KnowledgeEntry.js +44 -9
  88. package/dist/lib/domain/knowledge/KnowledgeRepository.d.ts +1 -0
  89. package/dist/lib/domain/knowledge/KnowledgeRepository.js +3 -0
  90. package/dist/lib/domain/knowledge/Lifecycle.js +1 -1
  91. package/dist/lib/domain/knowledge/StyleGuide.d.ts +1 -1
  92. package/dist/lib/domain/knowledge/StyleGuide.js +1 -1
  93. package/dist/lib/domain/knowledge/UnifiedValidator.js +15 -0
  94. package/dist/lib/external/ai/AiProvider.d.ts +12 -0
  95. package/dist/lib/external/ai/AiProvider.js +24 -0
  96. package/dist/lib/external/ai/AiProviderManager.d.ts +101 -0
  97. package/dist/lib/external/ai/AiProviderManager.js +193 -0
  98. package/dist/lib/external/ai/providers/ClaudeProvider.js +11 -0
  99. package/dist/lib/external/ai/providers/GoogleGeminiProvider.js +18 -0
  100. package/dist/lib/external/ai/providers/MockProvider.d.ts +21 -3
  101. package/dist/lib/external/ai/providers/MockProvider.js +290 -14
  102. package/dist/lib/external/ai/providers/OpenAiProvider.js +16 -0
  103. package/dist/lib/external/lark/LarkTransport.d.ts +5 -1
  104. package/dist/lib/external/lark/LarkTransport.js +10 -2
  105. package/dist/lib/external/mcp/McpServer.js +4 -0
  106. package/dist/lib/external/mcp/handlers/TargetClassifier.d.ts +1 -1
  107. package/dist/lib/external/mcp/handlers/bootstrap/BootstrapSession.d.ts +8 -16
  108. package/dist/lib/external/mcp/handlers/bootstrap/BootstrapSession.js +10 -10
  109. package/dist/lib/external/mcp/handlers/bootstrap/ExternalSubmissionTracker.d.ts +7 -0
  110. package/dist/lib/external/mcp/handlers/bootstrap/ExternalSubmissionTracker.js +20 -0
  111. package/dist/lib/external/mcp/handlers/bootstrap/MissionBriefingBuilder.d.ts +52 -132
  112. package/dist/lib/external/mcp/handlers/bootstrap/MissionBriefingBuilder.js +204 -17
  113. package/dist/lib/external/mcp/handlers/bootstrap/base-dimensions.d.ts +11 -75
  114. package/dist/lib/external/mcp/handlers/bootstrap/base-dimensions.js +40 -191
  115. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/dimension-configs.d.ts +13 -78
  116. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/dimension-configs.js +30 -52
  117. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/dimension-context.d.ts +0 -1
  118. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/mock-pipeline.d.ts +20 -0
  119. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/mock-pipeline.js +432 -0
  120. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/orchestrator.d.ts +99 -12
  121. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/orchestrator.js +188 -169
  122. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/tier-scheduler.js +7 -17
  123. package/dist/lib/external/mcp/handlers/bootstrap/refine.js +8 -0
  124. package/dist/lib/external/mcp/handlers/bootstrap/shared/async-fill-helpers.d.ts +46 -0
  125. package/dist/lib/external/mcp/handlers/bootstrap/shared/async-fill-helpers.js +58 -0
  126. package/dist/lib/external/mcp/handlers/bootstrap/shared/audit-helpers.d.ts +25 -0
  127. package/dist/lib/external/mcp/handlers/bootstrap/shared/audit-helpers.js +47 -0
  128. package/dist/lib/external/mcp/handlers/bootstrap/shared/bootstrap-phases.d.ts +50 -12
  129. package/dist/lib/external/mcp/handlers/bootstrap/shared/bootstrap-phases.js +30 -10
  130. package/dist/lib/external/mcp/handlers/bootstrap/shared/dimension-text.js +1 -1
  131. package/dist/lib/external/mcp/handlers/bootstrap/shared/handler-types.d.ts +24 -0
  132. package/dist/lib/external/mcp/handlers/bootstrap/shared/handler-types.js +14 -0
  133. package/dist/lib/external/mcp/handlers/bootstrap/shared/panorama-utils.d.ts +14 -0
  134. package/dist/lib/external/mcp/handlers/bootstrap/shared/panorama-utils.js +48 -0
  135. package/dist/lib/external/mcp/handlers/bootstrap/shared/session-helpers.d.ts +21 -0
  136. package/dist/lib/external/mcp/handlers/bootstrap/shared/session-helpers.js +45 -0
  137. package/dist/lib/external/mcp/handlers/bootstrap/shared/skill-generator.d.ts +1 -1
  138. package/dist/lib/external/mcp/handlers/bootstrap/shared/target-file-map.d.ts +27 -0
  139. package/dist/lib/external/mcp/handlers/bootstrap/shared/target-file-map.js +44 -0
  140. package/dist/lib/external/mcp/handlers/bootstrap-external.d.ts +23 -10
  141. package/dist/lib/external/mcp/handlers/bootstrap-external.js +41 -51
  142. package/dist/lib/external/mcp/handlers/bootstrap-internal.d.ts +2 -0
  143. package/dist/lib/external/mcp/handlers/bootstrap-internal.js +117 -82
  144. package/dist/lib/external/mcp/handlers/consolidated.d.ts +4 -4
  145. package/dist/lib/external/mcp/handlers/consolidated.js +108 -332
  146. package/dist/lib/external/mcp/handlers/dimension-complete-external.js +71 -2
  147. package/dist/lib/external/mcp/handlers/evolve-external.d.ts +54 -0
  148. package/dist/lib/external/mcp/handlers/evolve-external.js +229 -0
  149. package/dist/lib/external/mcp/handlers/knowledge.js +30 -5
  150. package/dist/lib/external/mcp/handlers/rescan-external.d.ts +76 -0
  151. package/dist/lib/external/mcp/handlers/rescan-external.js +335 -0
  152. package/dist/lib/external/mcp/handlers/rescan-internal.d.ts +120 -0
  153. package/dist/lib/external/mcp/handlers/rescan-internal.js +359 -0
  154. package/dist/lib/external/mcp/handlers/search.d.ts +6 -5
  155. package/dist/lib/external/mcp/handlers/search.js +6 -5
  156. package/dist/lib/external/mcp/handlers/types.d.ts +2 -1
  157. package/dist/lib/external/mcp/handlers/wiki-external.js +2 -2
  158. package/dist/lib/external/mcp/tools.d.ts +8 -18
  159. package/dist/lib/external/mcp/tools.js +58 -2
  160. package/dist/lib/http/routes/ai.js +111 -30
  161. package/dist/lib/http/routes/candidates.js +11 -4
  162. package/dist/lib/http/routes/commands.js +10 -1
  163. package/dist/lib/http/routes/health.js +11 -0
  164. package/dist/lib/http/routes/knowledge.js +122 -1
  165. package/dist/lib/http/routes/modules.js +52 -3
  166. package/dist/lib/http/routes/panorama.js +16 -4
  167. package/dist/lib/http/routes/recipes.js +7 -0
  168. package/dist/lib/http/utils/routeHelpers.js +2 -1
  169. package/dist/lib/infrastructure/cache/CacheCoordinator.d.ts +41 -0
  170. package/dist/lib/infrastructure/cache/CacheCoordinator.js +105 -0
  171. package/dist/lib/infrastructure/database/migrations/006_lifecycle_transition_events.d.ts +7 -0
  172. package/dist/lib/infrastructure/database/migrations/006_lifecycle_transition_events.js +28 -0
  173. package/dist/lib/infrastructure/vector/HnswVectorAdapter.js +1 -1
  174. package/dist/lib/injection/ServiceContainer.d.ts +6 -5
  175. package/dist/lib/injection/ServiceContainer.js +64 -25
  176. package/dist/lib/injection/ServiceMap.d.ts +10 -1
  177. package/dist/lib/injection/modules/AiModule.d.ts +6 -9
  178. package/dist/lib/injection/modules/AiModule.js +82 -39
  179. package/dist/lib/injection/modules/KnowledgeModule.js +15 -1
  180. package/dist/lib/injection/modules/PanoramaModule.js +1 -1
  181. package/dist/lib/repository/knowledge/KnowledgeRepository.impl.d.ts +4 -0
  182. package/dist/lib/repository/knowledge/KnowledgeRepository.impl.js +16 -1
  183. package/dist/lib/service/bootstrap/BootstrapEventEmitter.d.ts +3 -2
  184. package/dist/lib/service/bootstrap/BootstrapEventEmitter.js +1 -1
  185. package/dist/lib/service/bootstrap/DeliveryVerifier.d.ts +51 -0
  186. package/dist/lib/service/bootstrap/DeliveryVerifier.js +163 -0
  187. package/dist/lib/service/bootstrap/UiStartupTasks.d.ts +5 -0
  188. package/dist/lib/service/bootstrap/UiStartupTasks.js +20 -0
  189. package/dist/lib/service/bootstrap/bootstrap-event-types.d.ts +54 -0
  190. package/dist/lib/service/bootstrap/bootstrap-event-types.js +10 -0
  191. package/dist/lib/service/cleanup/CleanupService.d.ts +132 -0
  192. package/dist/lib/service/cleanup/CleanupService.js +571 -0
  193. package/dist/lib/service/delivery/AgentInstructionsGenerator.js +39 -43
  194. package/dist/lib/service/delivery/FileProtection.d.ts +20 -0
  195. package/dist/lib/service/delivery/FileProtection.js +54 -0
  196. package/dist/lib/service/delivery/SkillsSyncer.js +16 -21
  197. package/dist/lib/service/evolution/ContentPatcher.d.ts +44 -0
  198. package/dist/lib/service/evolution/ContentPatcher.js +310 -0
  199. package/dist/lib/service/evolution/ProposalExecutor.d.ts +4 -0
  200. package/dist/lib/service/evolution/ProposalExecutor.js +77 -13
  201. package/dist/lib/service/evolution/RecipeLifecycleSupervisor.d.ts +64 -0
  202. package/dist/lib/service/evolution/RecipeLifecycleSupervisor.js +458 -0
  203. package/dist/lib/service/evolution/RecipeRelevanceAuditor.d.ts +89 -0
  204. package/dist/lib/service/evolution/RecipeRelevanceAuditor.js +492 -0
  205. package/dist/lib/service/evolution/createSupersedeProposal.d.ts +44 -0
  206. package/dist/lib/service/evolution/createSupersedeProposal.js +81 -0
  207. package/dist/lib/service/guard/ComplianceReporter.d.ts +4 -0
  208. package/dist/lib/service/guard/ComplianceReporter.js +51 -0
  209. package/dist/lib/service/guard/GuardCheckEngine.js +5 -4
  210. package/dist/lib/service/knowledge/CodeEntityGraph.d.ts +6 -0
  211. package/dist/lib/service/knowledge/CodeEntityGraph.js +16 -0
  212. package/dist/lib/service/knowledge/ConfidenceRouter.js +1 -1
  213. package/dist/lib/service/knowledge/KnowledgeService.d.ts +11 -1
  214. package/dist/lib/service/knowledge/KnowledgeService.js +67 -14
  215. package/dist/lib/service/knowledge/RecipeProductionGateway.d.ts +225 -0
  216. package/dist/lib/service/knowledge/RecipeProductionGateway.js +384 -0
  217. package/dist/lib/service/module/ModuleService.js +10 -19
  218. package/dist/lib/service/panorama/CouplingAnalyzer.d.ts +10 -1
  219. package/dist/lib/service/panorama/CouplingAnalyzer.js +44 -2
  220. package/dist/lib/service/panorama/DimensionAnalyzer.d.ts +4 -3
  221. package/dist/lib/service/panorama/DimensionAnalyzer.js +40 -151
  222. package/dist/lib/service/panorama/LayerInferrer.d.ts +16 -1
  223. package/dist/lib/service/panorama/LayerInferrer.js +118 -1
  224. package/dist/lib/service/panorama/ModuleDiscoverer.d.ts +9 -0
  225. package/dist/lib/service/panorama/ModuleDiscoverer.js +58 -2
  226. package/dist/lib/service/panorama/PanoramaAggregator.d.ts +6 -2
  227. package/dist/lib/service/panorama/PanoramaAggregator.js +84 -6
  228. package/dist/lib/service/panorama/PanoramaScanner.js +28 -0
  229. package/dist/lib/service/panorama/PanoramaService.js +10 -5
  230. package/dist/lib/service/panorama/PanoramaTypes.d.ts +38 -0
  231. package/dist/lib/service/panorama/RoleRefiner.d.ts +2 -0
  232. package/dist/lib/service/panorama/RoleRefiner.js +41 -0
  233. package/dist/lib/service/panorama/TechStackProfiler.d.ts +13 -0
  234. package/dist/lib/service/panorama/TechStackProfiler.js +191 -0
  235. package/dist/lib/service/search/BM25Scorer.d.ts +2 -2
  236. package/dist/lib/service/search/SearchEngine.d.ts +11 -10
  237. package/dist/lib/service/search/SearchEngine.js +38 -36
  238. package/dist/lib/service/search/SearchTypes.d.ts +14 -8
  239. package/dist/lib/service/search/SearchTypes.js +1 -1
  240. package/dist/lib/service/search/tokenizer.d.ts +1 -1
  241. package/dist/lib/service/search/tokenizer.js +2 -2
  242. package/dist/lib/service/skills/SignalCollector.d.ts +1 -0
  243. package/dist/lib/service/skills/SignalCollector.js +6 -5
  244. package/dist/lib/service/vector/ContextualEnricher.d.ts +1 -0
  245. package/dist/lib/service/vector/ContextualEnricher.js +4 -0
  246. package/dist/lib/shared/LanguageService.js +3 -0
  247. package/dist/lib/shared/developer-identity.d.ts +18 -0
  248. package/dist/lib/shared/developer-identity.js +62 -0
  249. package/dist/lib/shared/schemas/common.d.ts +4 -4
  250. package/dist/lib/shared/schemas/http-requests.d.ts +20 -18
  251. package/dist/lib/shared/schemas/http-requests.js +17 -6
  252. package/dist/lib/shared/schemas/mcp-tools.d.ts +32 -2
  253. package/dist/lib/shared/schemas/mcp-tools.js +38 -0
  254. package/dist/lib/types/evolution.d.ts +135 -0
  255. package/dist/lib/types/evolution.js +6 -0
  256. package/dist/lib/types/graph-shared.d.ts +25 -0
  257. package/dist/lib/types/graph-shared.js +7 -0
  258. package/dist/lib/types/knowledge-wire.d.ts +132 -0
  259. package/dist/lib/types/knowledge-wire.js +7 -0
  260. package/dist/lib/types/project-snapshot-builder.d.ts +19 -0
  261. package/dist/lib/types/project-snapshot-builder.js +189 -0
  262. package/dist/lib/types/project-snapshot.d.ts +399 -0
  263. package/dist/lib/types/project-snapshot.js +17 -0
  264. package/dist/lib/types/search-wire.d.ts +46 -0
  265. package/dist/lib/types/search-wire.js +7 -0
  266. package/dist/lib/types/snapshot-views.d.ts +58 -0
  267. package/dist/lib/types/snapshot-views.js +103 -0
  268. package/package.json +1 -1
  269. package/skills/autosnippet-recipes/SKILL.md +1 -1
  270. package/templates/instructions/agent-static.md +2 -0
  271. package/templates/instructions/conventions.md +3 -1
  272. package/templates/recipes-setup/README.md +2 -2
  273. package/dashboard/dist/assets/icons-BJ2mUBi8.js +0 -1
  274. package/dashboard/dist/assets/index-B659K9t5.js +0 -128
  275. package/dashboard/dist/assets/index-NCm40PMD.css +0 -1
  276. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/noAiFallback.d.ts +0 -169
  277. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/noAiFallback.js +0 -727
  278. package/dist/lib/external/mcp/handlers/bootstrap/shared/dimension-sop.d.ts +0 -370
  279. package/dist/lib/external/mcp/handlers/bootstrap/shared/dimension-sop.js +0 -821
@@ -158,8 +158,8 @@ export declare const SubmitKnowledgeItemSchema: z.ZodObject<{
158
158
  topicHint: z.ZodOptional<z.ZodString>;
159
159
  complexity: z.ZodOptional<z.ZodEnum<{
160
160
  intermediate: "intermediate";
161
- beginner: "beginner";
162
161
  advanced: "advanced";
162
+ beginner: "beginner";
163
163
  }>>;
164
164
  scope: z.ZodOptional<z.ZodEnum<{
165
165
  universal: "universal";
@@ -191,8 +191,8 @@ export declare const SkillInput: z.ZodObject<{
191
191
  delete: "delete";
192
192
  create: "create";
193
193
  update: "update";
194
- list: "list";
195
194
  load: "load";
195
+ list: "list";
196
196
  suggest: "suggest";
197
197
  }>;
198
198
  name: z.ZodOptional<z.ZodString>;
@@ -211,6 +211,11 @@ export declare const SkillInput: z.ZodObject<{
211
211
  export type SkillInput = z.infer<typeof SkillInput>;
212
212
  export declare const BootstrapInput: z.ZodObject<{}, z.core.$strip>;
213
213
  export type BootstrapInput = z.infer<typeof BootstrapInput>;
214
+ export declare const RescanInput: z.ZodObject<{
215
+ dimensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
216
+ reason: z.ZodOptional<z.ZodString>;
217
+ }, z.core.$strip>;
218
+ export type RescanInput = z.infer<typeof RescanInput>;
214
219
  export declare const DimensionCompleteInput: z.ZodObject<{
215
220
  sessionId: z.ZodOptional<z.ZodString>;
216
221
  dimensionId: z.ZodString;
@@ -290,4 +295,29 @@ export declare const PanoramaInput: z.ZodObject<{
290
295
  module: z.ZodOptional<z.ZodString>;
291
296
  }, z.core.$strip>;
292
297
  export type PanoramaInput = z.infer<typeof PanoramaInput>;
298
+ export declare const EvolveInput: z.ZodObject<{
299
+ decisions: z.ZodArray<z.ZodObject<{
300
+ recipeId: z.ZodString;
301
+ action: z.ZodEnum<{
302
+ propose_evolution: "propose_evolution";
303
+ confirm_deprecation: "confirm_deprecation";
304
+ skip: "skip";
305
+ }>;
306
+ evidence: z.ZodOptional<z.ZodObject<{
307
+ codeSnippet: z.ZodString;
308
+ filePath: z.ZodString;
309
+ type: z.ZodEnum<{
310
+ enhance: "enhance";
311
+ correction: "correction";
312
+ }>;
313
+ suggestedChanges: z.ZodString;
314
+ }, z.core.$strip>>;
315
+ reason: z.ZodOptional<z.ZodString>;
316
+ skipReason: z.ZodOptional<z.ZodEnum<{
317
+ still_valid: "still_valid";
318
+ insufficient_info: "insufficient_info";
319
+ }>>;
320
+ }, z.core.$strip>>;
321
+ }, z.core.$strip>;
322
+ export type EvolveInput = z.infer<typeof EvolveInput>;
293
323
  export declare const TOOL_SCHEMAS: Record<string, z.ZodType>;
@@ -198,6 +198,13 @@ export const SkillInput = z.object({
198
198
  // ══════════════════════════════════════════════════════
199
199
  export const BootstrapInput = z.object({});
200
200
  // ══════════════════════════════════════════════════════
201
+ // 11a. autosnippet_rescan — 增量知识更新
202
+ // ══════════════════════════════════════════════════════
203
+ export const RescanInput = z.object({
204
+ dimensions: z.array(z.string()).optional().describe('指定维度列表,空 = 全部活跃维度'),
205
+ reason: z.string().optional().describe('触发原因(记录到报告)'),
206
+ });
207
+ // ══════════════════════════════════════════════════════
201
208
  // 11b. autosnippet_dimension_complete
202
209
  // ══════════════════════════════════════════════════════
203
210
  export const DimensionCompleteInput = z.object({
@@ -298,6 +305,35 @@ export const PanoramaInput = z.object({
298
305
  .describe('overview=项目骨架+层级+模块角色 | module=单模块详情+邻居关系 | gaps=知识空白区 | health=全景健康度 | governance_cycle=新陈代谢完整周期 | decay_report=衰退报告 | staging_check=staging检查+自动发布 | enhancement_suggestions=增强建议'),
299
306
  module: z.string().optional().describe('模块名称(operation=module 时必填)'),
300
307
  });
308
+ // 19. autosnippet_evolve
309
+ const EvolveDecisionSchema = z.object({
310
+ recipeId: z.string().describe('目标 Recipe ID'),
311
+ action: z
312
+ .enum(['propose_evolution', 'confirm_deprecation', 'skip'])
313
+ .describe('propose_evolution=提案进化 | confirm_deprecation=确认废弃 | skip=跳过'),
314
+ evidence: z
315
+ .object({
316
+ codeSnippet: z.string().describe('读到的真实代码片段'),
317
+ filePath: z.string().describe('代码所在文件路径'),
318
+ type: z
319
+ .enum(['enhance', 'correction'])
320
+ .describe('enhance=模式迁移/功能扩展 | correction=描述错误/接口变更'),
321
+ suggestedChanges: z.string().describe('建议的内容变更'),
322
+ })
323
+ .optional()
324
+ .describe('propose_evolution 时必填'),
325
+ reason: z.string().optional().describe('confirm_deprecation 时必填,废弃原因'),
326
+ skipReason: z
327
+ .enum(['still_valid', 'insufficient_info'])
328
+ .optional()
329
+ .describe('skip 时必填: still_valid=仍然有效(刷新验证时间) | insufficient_info=信息不足'),
330
+ });
331
+ export const EvolveInput = z.object({
332
+ decisions: z
333
+ .array(EvolveDecisionSchema)
334
+ .min(1)
335
+ .describe('进化决策数组,每个元素对应一个 Recipe 的决策'),
336
+ });
301
337
  // ══════════════════════════════════════════════════════
302
338
  // 工具名 → Schema 映射表(用于 wrapHandler 自动注入校验)
303
339
  // ══════════════════════════════════════════════════════
@@ -312,10 +348,12 @@ export const TOOL_SCHEMAS = {
312
348
  autosnippet_submit_knowledge: SubmitKnowledgeInput,
313
349
  autosnippet_skill: SkillInput,
314
350
  autosnippet_bootstrap: BootstrapInput,
351
+ autosnippet_rescan: RescanInput,
315
352
  autosnippet_dimension_complete: DimensionCompleteInput,
316
353
  autosnippet_wiki: WikiInput,
317
354
  autosnippet_task: TaskInput,
318
355
  autosnippet_enrich_candidates: EnrichCandidatesInput,
319
356
  autosnippet_knowledge_lifecycle: KnowledgeLifecycleInput,
320
357
  autosnippet_panorama: PanoramaInput,
358
+ autosnippet_evolve: EvolveInput,
321
359
  };
@@ -0,0 +1,135 @@
1
+ /**
2
+ * evolution.ts — Evolution 系统类型定义
3
+ *
4
+ * 包含 ContentPatcher / RecipeLifecycleSupervisor / 结构化 suggestedChanges 的类型。
5
+ */
6
+ /** suggestedChanges 中每项变更操作 */
7
+ export interface PatchChange {
8
+ /** 目标字段路径(如 'content.markdown', 'coreCode', 'doClause') */
9
+ field: string;
10
+ /** 操作类型 */
11
+ action: 'replace' | 'replace-section' | 'append';
12
+ /** 新值(replace / append 时必填) */
13
+ newValue?: string;
14
+ /** 目标 section 标题(replace-section 时必填) */
15
+ section?: string;
16
+ /** 新 section 内容(replace-section 时必填) */
17
+ newContent?: string;
18
+ }
19
+ /** 结构化 suggestedChanges 格式(Agent 输出) */
20
+ export interface StructuredPatch {
21
+ patchVersion: number;
22
+ changes: PatchChange[];
23
+ reasoning: string;
24
+ }
25
+ /** Recipe 内容快照 */
26
+ export interface RecipeContentSnapshot {
27
+ coreCode: string;
28
+ doClause: string;
29
+ dontClause: string;
30
+ whenClause: string;
31
+ content: {
32
+ markdown?: string;
33
+ rationale?: string;
34
+ };
35
+ sourceRefs: string[];
36
+ headers: string[];
37
+ }
38
+ /** ContentPatcher 应用结果 */
39
+ export interface ContentPatchResult {
40
+ success: boolean;
41
+ recipeId: string;
42
+ fieldsPatched: string[];
43
+ beforeSnapshot: RecipeContentSnapshot;
44
+ afterSnapshot: RecipeContentSnapshot;
45
+ patchSource: 'agent-suggestion' | 'correction' | 'merge';
46
+ skipped: boolean;
47
+ skipReason?: string;
48
+ }
49
+ /** 状态转移触发类型 */
50
+ export type TransitionTrigger = 'confidence-route' | 'grace-period-expire' | 'guard-conflict' | 'proposal-execution' | 'proposal-attach' | 'content-patch-complete' | 'decay-detection' | 'manual-deprecation' | 'timeout-recovery' | 'evidence-recovery' | 'resurrection';
51
+ /** 状态转移证据 */
52
+ export interface TransitionEvidence {
53
+ decayScore?: number;
54
+ fpRate?: number;
55
+ usageCount?: number;
56
+ suggestedChanges?: string;
57
+ patchResult?: ContentPatchResult;
58
+ reason: string;
59
+ }
60
+ /** 状态转移请求 */
61
+ export interface TransitionRequest {
62
+ recipeId: string;
63
+ targetState: string;
64
+ trigger: TransitionTrigger;
65
+ evidence?: TransitionEvidence;
66
+ proposalId?: string;
67
+ operatorId?: string;
68
+ }
69
+ /** 状态转移事件(不可变记录) */
70
+ export interface TransitionEvent {
71
+ id: string;
72
+ recipeId: string;
73
+ fromState: string;
74
+ toState: string;
75
+ trigger: TransitionTrigger;
76
+ evidence: TransitionEvidence | null;
77
+ proposalId: string | null;
78
+ operatorId: string;
79
+ createdAt: number;
80
+ }
81
+ /** 状态转移结果 */
82
+ export interface TransitionResult {
83
+ success: boolean;
84
+ fromState: string;
85
+ toState: string;
86
+ event?: TransitionEvent;
87
+ error?: string;
88
+ }
89
+ /** 超时检查结果 */
90
+ export interface TimeoutCheckResult {
91
+ timedOut: {
92
+ recipeId: string;
93
+ fromState: string;
94
+ toState: string;
95
+ age: number;
96
+ }[];
97
+ checked: number;
98
+ }
99
+ /** 生命周期健康摘要 */
100
+ export interface LifecycleHealthSummary {
101
+ stateDistribution: Record<string, number>;
102
+ intermediateStates: {
103
+ stuckEvolving: {
104
+ count: number;
105
+ oldestAge: number;
106
+ };
107
+ stuckDecaying: {
108
+ count: number;
109
+ oldestAge: number;
110
+ };
111
+ stuckStaging: {
112
+ count: number;
113
+ oldestAge: number;
114
+ };
115
+ stuckPending: {
116
+ count: number;
117
+ oldestAge: number;
118
+ };
119
+ };
120
+ recentTransitions: {
121
+ last24h: number;
122
+ last7d: number;
123
+ topTriggers: {
124
+ trigger: string;
125
+ count: number;
126
+ }[];
127
+ };
128
+ proposalMetrics: {
129
+ pendingCount: number;
130
+ observingCount: number;
131
+ executionRate: number;
132
+ avgObservationDays: number;
133
+ contentPatchRate: number;
134
+ };
135
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * evolution.ts — Evolution 系统类型定义
3
+ *
4
+ * 包含 ContentPatcher / RecipeLifecycleSupervisor / 结构化 suggestedChanges 的类型。
5
+ */
6
+ export {};
@@ -0,0 +1,25 @@
1
+ /**
2
+ * §10.6 Graph shared types — 图谱类型共享
3
+ *
4
+ * Bootstrap 管道和 KnowledgeGraphService 共享实体/边的概念。
5
+ * 统一枚举避免 string literal 不一致。
6
+ */
7
+ /** 代码实体类型 */
8
+ export type EntityType = 'class' | 'protocol' | 'category' | 'module' | 'pattern' | 'function' | 'file';
9
+ /** 关系类型 */
10
+ export type RelationType = 'inherits' | 'conforms' | 'extends' | 'depends_on' | 'uses_pattern' | 'is_part_of' | 'calls' | 'data_flow' | 'discovered_in';
11
+ /** 图节点引用 */
12
+ export interface GraphNodeRef {
13
+ id: string;
14
+ type: EntityType;
15
+ name: string;
16
+ }
17
+ /** 图边引用 */
18
+ export interface GraphEdgeRef {
19
+ fromId: string;
20
+ fromType: EntityType;
21
+ toId: string;
22
+ toType: EntityType;
23
+ relation: RelationType;
24
+ weight?: number;
25
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * §10.6 Graph shared types — 图谱类型共享
3
+ *
4
+ * Bootstrap 管道和 KnowledgeGraphService 共享实体/边的概念。
5
+ * 统一枚举避免 string literal 不一致。
6
+ */
7
+ export {};
@@ -0,0 +1,132 @@
1
+ /**
2
+ * §10.1 KnowledgeEntryWire — 统一的知识条目传输合约
3
+ *
4
+ * 这是后端 KnowledgeEntry.toJSON() 和前端 Dashboard 共享的唯一类型定义。
5
+ * 所有 API 层传输都使用此形状,消除后端 class 与前端 interface 的字段漂移。
6
+ */
7
+ export type KnowledgeLifecycle = 'pending' | 'staging' | 'active' | 'evolving' | 'decaying' | 'deprecated';
8
+ export type KnowledgeKind = 'rule' | 'pattern' | 'fact';
9
+ export interface KnowledgeContentWire {
10
+ pattern: string;
11
+ markdown: string;
12
+ rationale: string;
13
+ steps: Array<{
14
+ title?: string;
15
+ description?: string;
16
+ code?: string;
17
+ }>;
18
+ codeChanges: Array<{
19
+ file: string;
20
+ before: string;
21
+ after: string;
22
+ explanation: string;
23
+ }>;
24
+ verification: {
25
+ method?: string;
26
+ expectedResult?: string;
27
+ testCode?: string;
28
+ } | null;
29
+ }
30
+ export interface KnowledgeReasoningWire {
31
+ whyStandard: string;
32
+ sources: string[];
33
+ confidence: number;
34
+ qualitySignals: Record<string, unknown>;
35
+ alternatives: string[];
36
+ }
37
+ export interface KnowledgeQualityWire {
38
+ completeness: number;
39
+ adaptation: number;
40
+ documentation: number;
41
+ overall: number;
42
+ grade: string;
43
+ }
44
+ export interface KnowledgeStatsWire {
45
+ views: number;
46
+ adoptions: number;
47
+ applications: number;
48
+ guardHits: number;
49
+ searchHits: number;
50
+ authority: number;
51
+ lastHitAt: number | null;
52
+ lastSearchedAt: number | null;
53
+ lastGuardHitAt: number | null;
54
+ hitsLast30d: number;
55
+ hitsLast90d: number;
56
+ searchHitsLast30d: number;
57
+ version: number;
58
+ ruleFalsePositiveRate: number | null;
59
+ }
60
+ export interface KnowledgeConstraintsWire {
61
+ guards: Array<{
62
+ id?: string | null;
63
+ type?: string;
64
+ pattern: string | null;
65
+ severity: string;
66
+ message?: string;
67
+ fixSuggestion?: string;
68
+ }>;
69
+ boundaries: string[];
70
+ preconditions: string[];
71
+ sideEffects: string[];
72
+ }
73
+ export interface KnowledgeRelationEntry {
74
+ target: string;
75
+ description?: string;
76
+ }
77
+ export interface KnowledgeRelationsWire {
78
+ [bucket: string]: KnowledgeRelationEntry[];
79
+ }
80
+ /** 后端 → 前端 / API 传输的唯一合约 */
81
+ export interface KnowledgeEntryWire {
82
+ id: string;
83
+ title: string;
84
+ description: string;
85
+ lifecycle: string;
86
+ lifecycleHistory: Array<{
87
+ from: string;
88
+ to: string;
89
+ at: number;
90
+ by?: string;
91
+ }>;
92
+ autoApprovable: boolean;
93
+ language: string;
94
+ category: string;
95
+ kind: string;
96
+ knowledgeType: string;
97
+ complexity: string;
98
+ scope: string;
99
+ difficulty: string | null;
100
+ tags: string[];
101
+ trigger: string;
102
+ topicHint: string;
103
+ whenClause: string;
104
+ doClause: string;
105
+ dontClause: string;
106
+ coreCode: string;
107
+ usageGuide: string;
108
+ content: KnowledgeContentWire;
109
+ relations: KnowledgeRelationsWire;
110
+ constraints: KnowledgeConstraintsWire;
111
+ reasoning: KnowledgeReasoningWire;
112
+ quality: KnowledgeQualityWire;
113
+ stats: KnowledgeStatsWire;
114
+ headers: string[];
115
+ headerPaths: string[];
116
+ moduleName: string;
117
+ includeHeaders: boolean;
118
+ agentNotes: string | null;
119
+ aiInsight: string | null;
120
+ reviewedBy: string | null;
121
+ reviewedAt: number | null;
122
+ rejectionReason: string | null;
123
+ source: string;
124
+ sourceFile: string | null;
125
+ sourceCandidateId: string | null;
126
+ createdBy: string;
127
+ createdAt: number;
128
+ updatedAt: number;
129
+ publishedAt: number | null;
130
+ publishedBy: string | null;
131
+ [key: string]: unknown;
132
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * §10.1 KnowledgeEntryWire — 统一的知识条目传输合约
3
+ *
4
+ * 这是后端 KnowledgeEntry.toJSON() 和前端 Dashboard 共享的唯一类型定义。
5
+ * 所有 API 层传输都使用此形状,消除后端 class 与前端 interface 的字段漂移。
6
+ */
7
+ export {};
@@ -0,0 +1,19 @@
1
+ /**
2
+ * ProjectSnapshot Builder — 从 runAllPhases() 的松散返回值构建类型化快照
3
+ *
4
+ * 职责:
5
+ * 1. 类型归一化(unknown → typed interfaces)
6
+ * 2. 默认值填充
7
+ * 3. 不可变冻结(Object.freeze)
8
+ *
9
+ * @module types/project-snapshot-builder
10
+ * @see docs/copilot/unified-project-snapshot-design.md
11
+ */
12
+ import type { ProjectSnapshot, ProjectSnapshotInput } from './project-snapshot.js';
13
+ /**
14
+ * 从 runAllPhases() 的松散返回值构建类型化的 ProjectSnapshot。
15
+ *
16
+ * @param input runAllPhases() 返回值 + 额外的上下文信息
17
+ * @returns 不可变的 ProjectSnapshot 对象
18
+ */
19
+ export declare function buildProjectSnapshot(input: ProjectSnapshotInput): ProjectSnapshot;
@@ -0,0 +1,189 @@
1
+ /**
2
+ * ProjectSnapshot Builder — 从 runAllPhases() 的松散返回值构建类型化快照
3
+ *
4
+ * 职责:
5
+ * 1. 类型归一化(unknown → typed interfaces)
6
+ * 2. 默认值填充
7
+ * 3. 不可变冻结(Object.freeze)
8
+ *
9
+ * @module types/project-snapshot-builder
10
+ * @see docs/copilot/unified-project-snapshot-design.md
11
+ */
12
+ const SNAPSHOT_VERSION = '1.0.0';
13
+ /**
14
+ * 从 runAllPhases() 的松散返回值构建类型化的 ProjectSnapshot。
15
+ *
16
+ * @param input runAllPhases() 返回值 + 额外的上下文信息
17
+ * @returns 不可变的 ProjectSnapshot 对象
18
+ */
19
+ export function buildProjectSnapshot(input) {
20
+ const primaryLang = typeof input.primaryLang === 'string' ? input.primaryLang : 'unknown';
21
+ const langStats = input.langStats && typeof input.langStats === 'object' ? input.langStats : {};
22
+ const language = {
23
+ primaryLang,
24
+ stats: langStats,
25
+ secondary: input.langProfile?.secondary,
26
+ isMultiLang: input.langProfile?.isMultiLang,
27
+ };
28
+ const snapshot = {
29
+ version: SNAPSHOT_VERSION,
30
+ timestamp: Date.now(),
31
+ projectRoot: input.projectRoot,
32
+ sourceTag: input.sourceTag,
33
+ // Phase 1
34
+ allFiles: normalizeFiles(input.allFiles),
35
+ allTargets: normalizeTargets(input.allTargets),
36
+ discoverer: normalizeDiscoverer(input.discoverer),
37
+ truncated: input.truncated ?? false,
38
+ // Phase 1.5
39
+ language,
40
+ ast: normalizeAst(input.astProjectSummary),
41
+ astContext: typeof input.astContext === 'string' ? input.astContext : null,
42
+ // Phase 1.6-1.7
43
+ codeEntityGraph: normalizeCodeEntity(input.codeEntityResult),
44
+ callGraph: normalizeCallGraph(input.callGraphResult),
45
+ // Phase 1.8
46
+ panorama: normalizePanorama(input.panoramaResult),
47
+ // Phase 2
48
+ dependencyGraph: normalizeDepGraph(input.depGraphData),
49
+ depEdgesWritten: typeof input.depEdgesWritten === 'number' ? input.depEdgesWritten : 0,
50
+ // Phase 3
51
+ guardAudit: normalizeGuardAudit(input.guardAudit),
52
+ // Phase 4
53
+ activeDimensions: normalizeDimensions(input.activeDimensions),
54
+ enhancementPackInfo: normalizeEnhancementPackInfo(input.enhancementPackInfo),
55
+ enhancementPatterns: Array.isArray(input.enhancementPatterns)
56
+ ? input.enhancementPatterns
57
+ : [],
58
+ enhancementGuardRules: Array.isArray(input.enhancementGuardRules)
59
+ ? input.enhancementGuardRules
60
+ : [],
61
+ detectedFrameworks: Array.isArray(input.detectedFrameworks) ? input.detectedFrameworks : [],
62
+ // Language profile & Targets summary
63
+ langProfile: language,
64
+ targetsSummary: normalizeTargets(input.targetsSummary || input.allTargets),
65
+ localPackageModules: normalizeLocalPackageModules(input.localPackageModules),
66
+ // Report
67
+ phaseReport: normalizePhaseReport(input.report),
68
+ warnings: Array.isArray(input.warnings) ? input.warnings : [],
69
+ // Incremental
70
+ incrementalPlan: normalizeIncrementalPlan(input.incrementalPlan),
71
+ // Empty
72
+ isEmpty: input.isEmpty ?? false,
73
+ };
74
+ return Object.freeze(snapshot);
75
+ }
76
+ // ── Normalize 函数 ──────────────────────────────────────────
77
+ function normalizeFiles(raw) {
78
+ if (!Array.isArray(raw)) {
79
+ return [];
80
+ }
81
+ return raw.map((f) => ({
82
+ name: String(f.name || ''),
83
+ path: String(f.path || ''),
84
+ relativePath: String(f.relativePath || ''),
85
+ content: String(f.content || ''),
86
+ targetName: String(f.targetName || ''),
87
+ language: f.language != null ? String(f.language) : undefined,
88
+ totalLines: typeof f.totalLines === 'number' ? f.totalLines : undefined,
89
+ priority: f.priority != null ? String(f.priority) : undefined,
90
+ truncated: typeof f.truncated === 'boolean' ? f.truncated : undefined,
91
+ }));
92
+ }
93
+ function normalizeTargets(raw) {
94
+ if (!Array.isArray(raw)) {
95
+ return [];
96
+ }
97
+ return raw.map((t) => {
98
+ if (typeof t === 'string') {
99
+ return { name: t };
100
+ }
101
+ const obj = t;
102
+ return {
103
+ name: String(obj.name || ''),
104
+ type: obj.type != null ? String(obj.type) : undefined,
105
+ framework: obj.framework != null ? String(obj.framework) : undefined,
106
+ packageName: obj.packageName != null ? String(obj.packageName) : undefined,
107
+ inferredRole: obj.inferredRole != null ? String(obj.inferredRole) : undefined,
108
+ fileCount: typeof obj.fileCount === 'number' ? obj.fileCount : undefined,
109
+ isLocalPackage: typeof obj.isLocalPackage === 'boolean' ? obj.isLocalPackage : undefined,
110
+ };
111
+ });
112
+ }
113
+ function normalizeDiscoverer(raw) {
114
+ if (raw && typeof raw === 'object') {
115
+ const obj = raw;
116
+ return {
117
+ id: String(obj.id || 'unknown'),
118
+ displayName: String(obj.displayName || 'Unknown'),
119
+ };
120
+ }
121
+ return { id: 'unknown', displayName: 'Unknown' };
122
+ }
123
+ function normalizeAst(raw) {
124
+ if (!raw || typeof raw !== 'object') {
125
+ return null;
126
+ }
127
+ // Pass through — the shapes from analyzeProject() already match AstSummary
128
+ return raw;
129
+ }
130
+ function normalizeCodeEntity(raw) {
131
+ if (!raw || typeof raw !== 'object') {
132
+ return null;
133
+ }
134
+ return raw;
135
+ }
136
+ function normalizeCallGraph(raw) {
137
+ if (!raw || typeof raw !== 'object') {
138
+ return null;
139
+ }
140
+ return raw;
141
+ }
142
+ function normalizePanorama(raw) {
143
+ if (!raw || typeof raw !== 'object') {
144
+ return null;
145
+ }
146
+ return raw;
147
+ }
148
+ function normalizeDepGraph(raw) {
149
+ if (!raw || typeof raw !== 'object') {
150
+ return null;
151
+ }
152
+ return raw;
153
+ }
154
+ function normalizeGuardAudit(raw) {
155
+ if (!raw || typeof raw !== 'object') {
156
+ return null;
157
+ }
158
+ return raw;
159
+ }
160
+ function normalizeDimensions(raw) {
161
+ if (!Array.isArray(raw)) {
162
+ return [];
163
+ }
164
+ return raw;
165
+ }
166
+ function normalizeEnhancementPackInfo(raw) {
167
+ if (!Array.isArray(raw)) {
168
+ return [];
169
+ }
170
+ return raw;
171
+ }
172
+ function normalizePhaseReport(raw) {
173
+ if (!raw || typeof raw !== 'object') {
174
+ return null;
175
+ }
176
+ return raw;
177
+ }
178
+ function normalizeIncrementalPlan(raw) {
179
+ if (!raw || typeof raw !== 'object') {
180
+ return null;
181
+ }
182
+ return raw;
183
+ }
184
+ function normalizeLocalPackageModules(raw) {
185
+ if (!Array.isArray(raw)) {
186
+ return [];
187
+ }
188
+ return raw;
189
+ }