@shrkcrft/inspector 0.1.0-alpha.2

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 (705) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/dist/acceptance-replay.d.ts +63 -0
  4. package/dist/acceptance-replay.d.ts.map +1 -0
  5. package/dist/acceptance-replay.js +240 -0
  6. package/dist/action-hint-diagnostics.d.ts +32 -0
  7. package/dist/action-hint-diagnostics.d.ts.map +1 -0
  8. package/dist/action-hint-diagnostics.js +133 -0
  9. package/dist/adoption-check.d.ts +28 -0
  10. package/dist/adoption-check.d.ts.map +1 -0
  11. package/dist/adoption-check.js +181 -0
  12. package/dist/adoption-checkpoint.d.ts +97 -0
  13. package/dist/adoption-checkpoint.d.ts.map +1 -0
  14. package/dist/adoption-checkpoint.js +209 -0
  15. package/dist/adoption-merge-preview.d.ts +28 -0
  16. package/dist/adoption-merge-preview.d.ts.map +1 -0
  17. package/dist/adoption-merge-preview.js +254 -0
  18. package/dist/adoption-report-renderer.d.ts +33 -0
  19. package/dist/adoption-report-renderer.d.ts.map +1 -0
  20. package/dist/adoption-report-renderer.js +257 -0
  21. package/dist/adoption-state.d.ts +100 -0
  22. package/dist/adoption-state.d.ts.map +1 -0
  23. package/dist/adoption-state.js +296 -0
  24. package/dist/adoption-three-way.d.ts +46 -0
  25. package/dist/adoption-three-way.d.ts.map +1 -0
  26. package/dist/adoption-three-way.js +181 -0
  27. package/dist/agent-brief.d.ts +77 -0
  28. package/dist/agent-brief.d.ts.map +1 -0
  29. package/dist/agent-brief.js +490 -0
  30. package/dist/agent-contract-gate.d.ts +108 -0
  31. package/dist/agent-contract-gate.d.ts.map +1 -0
  32. package/dist/agent-contract-gate.js +412 -0
  33. package/dist/agent-contract-templates.d.ts +63 -0
  34. package/dist/agent-contract-templates.d.ts.map +1 -0
  35. package/dist/agent-contract-templates.js +346 -0
  36. package/dist/agent-contract.d.ts +65 -0
  37. package/dist/agent-contract.d.ts.map +1 -0
  38. package/dist/agent-contract.js +555 -0
  39. package/dist/agent-handoff.d.ts +123 -0
  40. package/dist/agent-handoff.d.ts.map +1 -0
  41. package/dist/agent-handoff.js +470 -0
  42. package/dist/agent-instructions.d.ts +2 -0
  43. package/dist/agent-instructions.d.ts.map +1 -0
  44. package/dist/agent-instructions.js +21 -0
  45. package/dist/agent-orchestration.d.ts +61 -0
  46. package/dist/agent-orchestration.d.ts.map +1 -0
  47. package/dist/agent-orchestration.js +285 -0
  48. package/dist/agent-task-prep.d.ts +31 -0
  49. package/dist/agent-task-prep.d.ts.map +1 -0
  50. package/dist/agent-task-prep.js +73 -0
  51. package/dist/ai-readiness.d.ts +30 -0
  52. package/dist/ai-readiness.d.ts.map +1 -0
  53. package/dist/ai-readiness.js +279 -0
  54. package/dist/api-report.d.ts +51 -0
  55. package/dist/api-report.d.ts.map +1 -0
  56. package/dist/api-report.js +254 -0
  57. package/dist/apply-dispatch-trace.d.ts +93 -0
  58. package/dist/apply-dispatch-trace.d.ts.map +1 -0
  59. package/dist/apply-dispatch-trace.js +283 -0
  60. package/dist/apply-gate-result.d.ts +52 -0
  61. package/dist/apply-gate-result.d.ts.map +1 -0
  62. package/dist/apply-gate-result.js +44 -0
  63. package/dist/architecture-map.d.ts +118 -0
  64. package/dist/architecture-map.d.ts.map +1 -0
  65. package/dist/architecture-map.js +543 -0
  66. package/dist/area-explore.d.ts +75 -0
  67. package/dist/area-explore.d.ts.map +1 -0
  68. package/dist/area-explore.js +438 -0
  69. package/dist/area-map.d.ts +43 -0
  70. package/dist/area-map.d.ts.map +1 -0
  71. package/dist/area-map.js +197 -0
  72. package/dist/asset-provenance.d.ts +123 -0
  73. package/dist/asset-provenance.d.ts.map +1 -0
  74. package/dist/asset-provenance.js +209 -0
  75. package/dist/barrel-operations.d.ts +45 -0
  76. package/dist/barrel-operations.d.ts.map +1 -0
  77. package/dist/barrel-operations.js +159 -0
  78. package/dist/boundaries-changed-only.d.ts +62 -0
  79. package/dist/boundaries-changed-only.d.ts.map +1 -0
  80. package/dist/boundaries-changed-only.js +97 -0
  81. package/dist/boundary-suggestions.d.ts +20 -0
  82. package/dist/boundary-suggestions.d.ts.map +1 -0
  83. package/dist/boundary-suggestions.js +51 -0
  84. package/dist/bundle-diff.d.ts +98 -0
  85. package/dist/bundle-diff.d.ts.map +1 -0
  86. package/dist/bundle-diff.js +531 -0
  87. package/dist/bundle-replay.d.ts +68 -0
  88. package/dist/bundle-replay.d.ts.map +1 -0
  89. package/dist/bundle-replay.js +273 -0
  90. package/dist/bundle-validate-html.d.ts +11 -0
  91. package/dist/bundle-validate-html.d.ts.map +1 -0
  92. package/dist/bundle-validate-html.js +60 -0
  93. package/dist/change-intent.d.ts +36 -0
  94. package/dist/change-intent.d.ts.map +1 -0
  95. package/dist/change-intent.js +259 -0
  96. package/dist/changed-preflight.d.ts +59 -0
  97. package/dist/changed-preflight.d.ts.map +1 -0
  98. package/dist/changed-preflight.js +358 -0
  99. package/dist/changed-scope.d.ts +112 -0
  100. package/dist/changed-scope.d.ts.map +1 -0
  101. package/dist/changed-scope.js +172 -0
  102. package/dist/changes-summary.d.ts +87 -0
  103. package/dist/changes-summary.d.ts.map +1 -0
  104. package/dist/changes-summary.js +323 -0
  105. package/dist/check-result-v1.d.ts +90 -0
  106. package/dist/check-result-v1.d.ts.map +1 -0
  107. package/dist/check-result-v1.js +335 -0
  108. package/dist/ci-integrity-report.d.ts +38 -0
  109. package/dist/ci-integrity-report.d.ts.map +1 -0
  110. package/dist/ci-integrity-report.js +324 -0
  111. package/dist/ci-permissions-fix.d.ts +38 -0
  112. package/dist/ci-permissions-fix.d.ts.map +1 -0
  113. package/dist/ci-permissions-fix.js +201 -0
  114. package/dist/ci-permissions.d.ts +51 -0
  115. package/dist/ci-permissions.d.ts.map +1 -0
  116. package/dist/ci-permissions.js +431 -0
  117. package/dist/ci-predict.d.ts +42 -0
  118. package/dist/ci-predict.d.ts.map +1 -0
  119. package/dist/ci-predict.js +300 -0
  120. package/dist/ci-scaffold.d.ts +47 -0
  121. package/dist/ci-scaffold.d.ts.map +1 -0
  122. package/dist/ci-scaffold.js +638 -0
  123. package/dist/codemod-assist.d.ts +97 -0
  124. package/dist/codemod-assist.d.ts.map +1 -0
  125. package/dist/codemod-assist.js +261 -0
  126. package/dist/command-recommender.d.ts +25 -0
  127. package/dist/command-recommender.d.ts.map +1 -0
  128. package/dist/command-recommender.js +145 -0
  129. package/dist/command-suggester.d.ts +61 -0
  130. package/dist/command-suggester.d.ts.map +1 -0
  131. package/dist/command-suggester.js +159 -0
  132. package/dist/command-taxonomy.d.ts +38 -0
  133. package/dist/command-taxonomy.d.ts.map +1 -0
  134. package/dist/command-taxonomy.js +164 -0
  135. package/dist/compliance-evidence.d.ts +58 -0
  136. package/dist/compliance-evidence.d.ts.map +1 -0
  137. package/dist/compliance-evidence.js +260 -0
  138. package/dist/compliance-profiles.d.ts +42 -0
  139. package/dist/compliance-profiles.d.ts.map +1 -0
  140. package/dist/compliance-profiles.js +171 -0
  141. package/dist/construct-adoption-diff.d.ts +55 -0
  142. package/dist/construct-adoption-diff.d.ts.map +1 -0
  143. package/dist/construct-adoption-diff.js +331 -0
  144. package/dist/construct-adoption.d.ts +71 -0
  145. package/dist/construct-adoption.d.ts.map +1 -0
  146. package/dist/construct-adoption.js +331 -0
  147. package/dist/construct-inference.d.ts +44 -0
  148. package/dist/construct-inference.d.ts.map +1 -0
  149. package/dist/construct-inference.js +391 -0
  150. package/dist/construct-registry.d.ts +32 -0
  151. package/dist/construct-registry.d.ts.map +1 -0
  152. package/dist/construct-registry.js +198 -0
  153. package/dist/contract-file-rule.d.ts +37 -0
  154. package/dist/contract-file-rule.d.ts.map +1 -0
  155. package/dist/contract-file-rule.js +99 -0
  156. package/dist/contract-template-registry.d.ts +28 -0
  157. package/dist/contract-template-registry.d.ts.map +1 -0
  158. package/dist/contract-template-registry.js +161 -0
  159. package/dist/contradictions.d.ts +52 -0
  160. package/dist/contradictions.d.ts.map +1 -0
  161. package/dist/contradictions.js +391 -0
  162. package/dist/convention-registry.d.ts +44 -0
  163. package/dist/convention-registry.d.ts.map +1 -0
  164. package/dist/convention-registry.js +195 -0
  165. package/dist/coverage-report.d.ts +25 -0
  166. package/dist/coverage-report.d.ts.map +1 -0
  167. package/dist/coverage-report.js +190 -0
  168. package/dist/custom-checks.d.ts +146 -0
  169. package/dist/custom-checks.d.ts.map +1 -0
  170. package/dist/custom-checks.js +260 -0
  171. package/dist/dashboard/dashboard-data.d.ts +59 -0
  172. package/dist/dashboard/dashboard-data.d.ts.map +1 -0
  173. package/dist/dashboard/dashboard-data.js +653 -0
  174. package/dist/dashboard-export.d.ts +67 -0
  175. package/dist/dashboard-export.d.ts.map +1 -0
  176. package/dist/dashboard-export.js +203 -0
  177. package/dist/decision-records.d.ts +47 -0
  178. package/dist/decision-records.d.ts.map +1 -0
  179. package/dist/decision-records.js +255 -0
  180. package/dist/demo-package.d.ts +49 -0
  181. package/dist/demo-package.d.ts.map +1 -0
  182. package/dist/demo-package.js +305 -0
  183. package/dist/demo-script.d.ts +25 -0
  184. package/dist/demo-script.d.ts.map +1 -0
  185. package/dist/demo-script.js +198 -0
  186. package/dist/demo-workflow.d.ts +28 -0
  187. package/dist/demo-workflow.d.ts.map +1 -0
  188. package/dist/demo-workflow.js +178 -0
  189. package/dist/dev-cycle.d.ts +41 -0
  190. package/dist/dev-cycle.d.ts.map +1 -0
  191. package/dist/dev-cycle.js +94 -0
  192. package/dist/dev-session-html.d.ts +13 -0
  193. package/dist/dev-session-html.d.ts.map +1 -0
  194. package/dist/dev-session-html.js +223 -0
  195. package/dist/dev-session-report.d.ts +11 -0
  196. package/dist/dev-session-report.d.ts.map +1 -0
  197. package/dist/dev-session-report.js +206 -0
  198. package/dist/dev-session.d.ts +257 -0
  199. package/dist/dev-session.d.ts.map +1 -0
  200. package/dist/dev-session.js +568 -0
  201. package/dist/diagnostics-suggest.d.ts +17 -0
  202. package/dist/diagnostics-suggest.d.ts.map +1 -0
  203. package/dist/diagnostics-suggest.js +69 -0
  204. package/dist/docs-check.d.ts +40 -0
  205. package/dist/docs-check.d.ts.map +1 -0
  206. package/dist/docs-check.js +221 -0
  207. package/dist/doctor-acknowledgements.d.ts +69 -0
  208. package/dist/doctor-acknowledgements.d.ts.map +1 -0
  209. package/dist/doctor-acknowledgements.js +150 -0
  210. package/dist/doctor-result.d.ts +51 -0
  211. package/dist/doctor-result.d.ts.map +1 -0
  212. package/dist/doctor-result.js +7 -0
  213. package/dist/doctor-suppressions.d.ts +91 -0
  214. package/dist/doctor-suppressions.d.ts.map +1 -0
  215. package/dist/doctor-suppressions.js +238 -0
  216. package/dist/drift-baseline.d.ts +29 -0
  217. package/dist/drift-baseline.d.ts.map +1 -0
  218. package/dist/drift-baseline.js +80 -0
  219. package/dist/drift.d.ts +38 -0
  220. package/dist/drift.d.ts.map +1 -0
  221. package/dist/drift.js +107 -0
  222. package/dist/entrypoint-matrix.d.ts +61 -0
  223. package/dist/entrypoint-matrix.d.ts.map +1 -0
  224. package/dist/entrypoint-matrix.js +221 -0
  225. package/dist/examples-check.d.ts +36 -0
  226. package/dist/examples-check.d.ts.map +1 -0
  227. package/dist/examples-check.js +168 -0
  228. package/dist/execution-graph.d.ts +98 -0
  229. package/dist/execution-graph.d.ts.map +1 -0
  230. package/dist/execution-graph.js +484 -0
  231. package/dist/export-bundle.d.ts +10 -0
  232. package/dist/export-bundle.d.ts.map +1 -0
  233. package/dist/export-bundle.js +90 -0
  234. package/dist/failure-diagnostics.d.ts +63 -0
  235. package/dist/failure-diagnostics.d.ts.map +1 -0
  236. package/dist/failure-diagnostics.js +243 -0
  237. package/dist/feature-bundle.d.ts +111 -0
  238. package/dist/feature-bundle.d.ts.map +1 -0
  239. package/dist/feature-bundle.js +211 -0
  240. package/dist/feedback-actions-v2.d.ts +65 -0
  241. package/dist/feedback-actions-v2.d.ts.map +1 -0
  242. package/dist/feedback-actions-v2.js +183 -0
  243. package/dist/feedback-ingestion.d.ts +96 -0
  244. package/dist/feedback-ingestion.d.ts.map +1 -0
  245. package/dist/feedback-ingestion.js +400 -0
  246. package/dist/fix-preview.d.ts +82 -0
  247. package/dist/fix-preview.d.ts.map +1 -0
  248. package/dist/fix-preview.js +365 -0
  249. package/dist/fuzzy-impact.d.ts +50 -0
  250. package/dist/fuzzy-impact.d.ts.map +1 -0
  251. package/dist/fuzzy-impact.js +446 -0
  252. package/dist/generated-code.d.ts +97 -0
  253. package/dist/generated-code.d.ts.map +1 -0
  254. package/dist/generated-code.js +395 -0
  255. package/dist/git-helpers.d.ts +26 -0
  256. package/dist/git-helpers.d.ts.map +1 -0
  257. package/dist/git-helpers.js +110 -0
  258. package/dist/golden-output.d.ts +33 -0
  259. package/dist/golden-output.d.ts.map +1 -0
  260. package/dist/golden-output.js +92 -0
  261. package/dist/grounding/build-grounding.d.ts +53 -0
  262. package/dist/grounding/build-grounding.d.ts.map +1 -0
  263. package/dist/grounding/build-grounding.js +51 -0
  264. package/dist/grounding/nx-projects.d.ts +29 -0
  265. package/dist/grounding/nx-projects.d.ts.map +1 -0
  266. package/dist/grounding/nx-projects.js +109 -0
  267. package/dist/grounding/validate-extracted-plan.d.ts +20 -0
  268. package/dist/grounding/validate-extracted-plan.d.ts.map +1 -0
  269. package/dist/grounding/validate-extracted-plan.js +127 -0
  270. package/dist/healing-plan.d.ts +33 -0
  271. package/dist/healing-plan.d.ts.map +1 -0
  272. package/dist/healing-plan.js +346 -0
  273. package/dist/helper-registry.d.ts +90 -0
  274. package/dist/helper-registry.d.ts.map +1 -0
  275. package/dist/helper-registry.js +529 -0
  276. package/dist/impact-analysis.d.ts +150 -0
  277. package/dist/impact-analysis.d.ts.map +1 -0
  278. package/dist/impact-analysis.js +697 -0
  279. package/dist/impact-graph-render.d.ts +51 -0
  280. package/dist/impact-graph-render.d.ts.map +1 -0
  281. package/dist/impact-graph-render.js +139 -0
  282. package/dist/impact-graph.d.ts +17 -0
  283. package/dist/impact-graph.d.ts.map +1 -0
  284. package/dist/impact-graph.js +119 -0
  285. package/dist/impact-render.d.ts +22 -0
  286. package/dist/impact-render.d.ts.map +1 -0
  287. package/dist/impact-render.js +413 -0
  288. package/dist/import-graph-analysis.d.ts +28 -0
  289. package/dist/import-graph-analysis.d.ts.map +1 -0
  290. package/dist/import-graph-analysis.js +193 -0
  291. package/dist/import-hygiene.d.ts +93 -0
  292. package/dist/import-hygiene.d.ts.map +1 -0
  293. package/dist/import-hygiene.js +366 -0
  294. package/dist/index.d.ts +223 -0
  295. package/dist/index.d.ts.map +1 -0
  296. package/dist/index.js +233 -0
  297. package/dist/ingest-adoption.d.ts +50 -0
  298. package/dist/ingest-adoption.d.ts.map +1 -0
  299. package/dist/ingest-adoption.js +183 -0
  300. package/dist/ingest-apply.d.ts +80 -0
  301. package/dist/ingest-apply.d.ts.map +1 -0
  302. package/dist/ingest-apply.js +227 -0
  303. package/dist/ingest-body-extractor.d.ts +28 -0
  304. package/dist/ingest-body-extractor.d.ts.map +1 -0
  305. package/dist/ingest-body-extractor.js +129 -0
  306. package/dist/ingest-drafts.d.ts +16 -0
  307. package/dist/ingest-drafts.d.ts.map +1 -0
  308. package/dist/ingest-drafts.js +482 -0
  309. package/dist/inspector-cache.d.ts +41 -0
  310. package/dist/inspector-cache.d.ts.map +1 -0
  311. package/dist/inspector-cache.js +104 -0
  312. package/dist/install-smoke.d.ts +44 -0
  313. package/dist/install-smoke.d.ts.map +1 -0
  314. package/dist/install-smoke.js +31 -0
  315. package/dist/knowledge-authoring.d.ts +151 -0
  316. package/dist/knowledge-authoring.d.ts.map +1 -0
  317. package/dist/knowledge-authoring.js +586 -0
  318. package/dist/knowledge-graph.d.ts +76 -0
  319. package/dist/knowledge-graph.d.ts.map +1 -0
  320. package/dist/knowledge-graph.js +336 -0
  321. package/dist/knowledge-lint.d.ts +97 -0
  322. package/dist/knowledge-lint.d.ts.map +1 -0
  323. package/dist/knowledge-lint.js +302 -0
  324. package/dist/knowledge-rename.d.ts +38 -0
  325. package/dist/knowledge-rename.d.ts.map +1 -0
  326. package/dist/knowledge-rename.js +88 -0
  327. package/dist/knowledge-stale.d.ts +124 -0
  328. package/dist/knowledge-stale.d.ts.map +1 -0
  329. package/dist/knowledge-stale.js +892 -0
  330. package/dist/languages/command-inference.d.ts +27 -0
  331. package/dist/languages/command-inference.d.ts.map +1 -0
  332. package/dist/languages/command-inference.js +214 -0
  333. package/dist/languages/dependency-scan.d.ts +33 -0
  334. package/dist/languages/dependency-scan.d.ts.map +1 -0
  335. package/dist/languages/dependency-scan.js +343 -0
  336. package/dist/languages/index.d.ts +14 -0
  337. package/dist/languages/index.d.ts.map +1 -0
  338. package/dist/languages/index.js +13 -0
  339. package/dist/languages/language-boundaries.d.ts +30 -0
  340. package/dist/languages/language-boundaries.d.ts.map +1 -0
  341. package/dist/languages/language-boundaries.js +176 -0
  342. package/dist/languages/language-cache.d.ts +54 -0
  343. package/dist/languages/language-cache.d.ts.map +1 -0
  344. package/dist/languages/language-cache.js +236 -0
  345. package/dist/languages/language-detection.d.ts +30 -0
  346. package/dist/languages/language-detection.d.ts.map +1 -0
  347. package/dist/languages/language-detection.js +584 -0
  348. package/dist/languages/language-id.d.ts +15 -0
  349. package/dist/languages/language-id.d.ts.map +1 -0
  350. package/dist/languages/language-id.js +15 -0
  351. package/dist/languages/language-runner.d.ts +90 -0
  352. package/dist/languages/language-runner.d.ts.map +1 -0
  353. package/dist/languages/language-runner.js +346 -0
  354. package/dist/languages/polyglot-boundary.d.ts +80 -0
  355. package/dist/languages/polyglot-boundary.d.ts.map +1 -0
  356. package/dist/languages/polyglot-boundary.js +373 -0
  357. package/dist/languages/polyglot-ci.d.ts +25 -0
  358. package/dist/languages/polyglot-ci.d.ts.map +1 -0
  359. package/dist/languages/polyglot-ci.js +278 -0
  360. package/dist/languages/test-impact.d.ts +19 -0
  361. package/dist/languages/test-impact.d.ts.map +1 -0
  362. package/dist/languages/test-impact.js +157 -0
  363. package/dist/loader-diagnostics.d.ts +40 -0
  364. package/dist/loader-diagnostics.d.ts.map +1 -0
  365. package/dist/loader-diagnostics.js +49 -0
  366. package/dist/memory-diff.d.ts +60 -0
  367. package/dist/memory-diff.d.ts.map +1 -0
  368. package/dist/memory-diff.js +302 -0
  369. package/dist/migration-profile-registry.d.ts +26 -0
  370. package/dist/migration-profile-registry.d.ts.map +1 -0
  371. package/dist/migration-profile-registry.js +135 -0
  372. package/dist/migration-readiness.d.ts +101 -0
  373. package/dist/migration-readiness.d.ts.map +1 -0
  374. package/dist/migration-readiness.js +253 -0
  375. package/dist/monorepo-onboarding.d.ts +51 -0
  376. package/dist/monorepo-onboarding.d.ts.map +1 -0
  377. package/dist/monorepo-onboarding.js +235 -0
  378. package/dist/onboarding-adoption-diff.d.ts +53 -0
  379. package/dist/onboarding-adoption-diff.d.ts.map +1 -0
  380. package/dist/onboarding-adoption-diff.js +285 -0
  381. package/dist/onboarding-adoption.d.ts +136 -0
  382. package/dist/onboarding-adoption.d.ts.map +1 -0
  383. package/dist/onboarding-adoption.js +702 -0
  384. package/dist/onboarding-agent-import.d.ts +40 -0
  385. package/dist/onboarding-agent-import.d.ts.map +1 -0
  386. package/dist/onboarding-agent-import.js +114 -0
  387. package/dist/onboarding-diff.d.ts +39 -0
  388. package/dist/onboarding-diff.d.ts.map +1 -0
  389. package/dist/onboarding-diff.js +240 -0
  390. package/dist/onboarding-drafts.d.ts +28 -0
  391. package/dist/onboarding-drafts.d.ts.map +1 -0
  392. package/dist/onboarding-drafts.js +234 -0
  393. package/dist/onboarding-report.d.ts +8 -0
  394. package/dist/onboarding-report.d.ts.map +1 -0
  395. package/dist/onboarding-report.js +239 -0
  396. package/dist/onboarding.d.ts +134 -0
  397. package/dist/onboarding.d.ts.map +1 -0
  398. package/dist/onboarding.js +729 -0
  399. package/dist/ownership.d.ts +38 -0
  400. package/dist/ownership.d.ts.map +1 -0
  401. package/dist/ownership.js +102 -0
  402. package/dist/pack-author-ux.d.ts +58 -0
  403. package/dist/pack-author-ux.d.ts.map +1 -0
  404. package/dist/pack-author-ux.js +219 -0
  405. package/dist/pack-author.d.ts +94 -0
  406. package/dist/pack-author.d.ts.map +1 -0
  407. package/dist/pack-author.js +208 -0
  408. package/dist/pack-compatibility.d.ts +21 -0
  409. package/dist/pack-compatibility.d.ts.map +1 -0
  410. package/dist/pack-compatibility.js +114 -0
  411. package/dist/pack-contributions-inventory.d.ts +121 -0
  412. package/dist/pack-contributions-inventory.d.ts.map +1 -0
  413. package/dist/pack-contributions-inventory.js +732 -0
  414. package/dist/pack-docs.d.ts +11 -0
  415. package/dist/pack-docs.d.ts.map +1 -0
  416. package/dist/pack-docs.js +101 -0
  417. package/dist/pack-doctor.d.ts +50 -0
  418. package/dist/pack-doctor.d.ts.map +1 -0
  419. package/dist/pack-doctor.js +302 -0
  420. package/dist/pack-helper-registry.d.ts +29 -0
  421. package/dist/pack-helper-registry.d.ts.map +1 -0
  422. package/dist/pack-helper-registry.js +144 -0
  423. package/dist/pack-pending.d.ts +68 -0
  424. package/dist/pack-pending.d.ts.map +1 -0
  425. package/dist/pack-pending.js +189 -0
  426. package/dist/pack-quality-score.d.ts +44 -0
  427. package/dist/pack-quality-score.d.ts.map +1 -0
  428. package/dist/pack-quality-score.js +155 -0
  429. package/dist/pack-release-check.d.ts +24 -0
  430. package/dist/pack-release-check.d.ts.map +1 -0
  431. package/dist/pack-release-check.js +258 -0
  432. package/dist/pack-signature-status.d.ts +72 -0
  433. package/dist/pack-signature-status.d.ts.map +1 -0
  434. package/dist/pack-signature-status.js +222 -0
  435. package/dist/pack-symbol-compat.d.ts +60 -0
  436. package/dist/pack-symbol-compat.d.ts.map +1 -0
  437. package/dist/pack-symbol-compat.js +371 -0
  438. package/dist/pack-test-runner.d.ts +59 -0
  439. package/dist/pack-test-runner.d.ts.map +1 -0
  440. package/dist/pack-test-runner.js +211 -0
  441. package/dist/pipeline-command-dictionary.d.ts +2 -0
  442. package/dist/pipeline-command-dictionary.d.ts.map +1 -0
  443. package/dist/pipeline-command-dictionary.js +20 -0
  444. package/dist/pipeline-lint.d.ts +30 -0
  445. package/dist/pipeline-lint.d.ts.map +1 -0
  446. package/dist/pipeline-lint.js +134 -0
  447. package/dist/plan-dependency-graph.d.ts +25 -0
  448. package/dist/plan-dependency-graph.d.ts.map +1 -0
  449. package/dist/plan-dependency-graph.js +195 -0
  450. package/dist/plan-review.d.ts +64 -0
  451. package/dist/plan-review.d.ts.map +1 -0
  452. package/dist/plan-review.js +242 -0
  453. package/dist/plan-simulation.d.ts +108 -0
  454. package/dist/plan-simulation.d.ts.map +1 -0
  455. package/dist/plan-simulation.js +767 -0
  456. package/dist/playbook-registry.d.ts +25 -0
  457. package/dist/playbook-registry.d.ts.map +1 -0
  458. package/dist/playbook-registry.js +148 -0
  459. package/dist/playbook-script.d.ts +60 -0
  460. package/dist/playbook-script.d.ts.map +1 -0
  461. package/dist/playbook-script.js +161 -0
  462. package/dist/plugin-lifecycle-profile-registry.d.ts +52 -0
  463. package/dist/plugin-lifecycle-profile-registry.d.ts.map +1 -0
  464. package/dist/plugin-lifecycle-profile-registry.js +202 -0
  465. package/dist/plugin-lifecycle.d.ts +132 -0
  466. package/dist/plugin-lifecycle.d.ts.map +1 -0
  467. package/dist/plugin-lifecycle.js +477 -0
  468. package/dist/policy-engine.d.ts +101 -0
  469. package/dist/policy-engine.d.ts.map +1 -0
  470. package/dist/policy-engine.js +321 -0
  471. package/dist/policy-override-audit.d.ts +18 -0
  472. package/dist/policy-override-audit.d.ts.map +1 -0
  473. package/dist/policy-override-audit.js +54 -0
  474. package/dist/policy-overrides.d.ts +35 -0
  475. package/dist/policy-overrides.d.ts.map +1 -0
  476. package/dist/policy-overrides.js +84 -0
  477. package/dist/policy-test.d.ts +83 -0
  478. package/dist/policy-test.d.ts.map +1 -0
  479. package/dist/policy-test.js +342 -0
  480. package/dist/pr-summary.d.ts +34 -0
  481. package/dist/pr-summary.d.ts.map +1 -0
  482. package/dist/pr-summary.js +220 -0
  483. package/dist/product-coherence.d.ts +21 -0
  484. package/dist/product-coherence.d.ts.map +1 -0
  485. package/dist/product-coherence.js +158 -0
  486. package/dist/profile-registry.d.ts +42 -0
  487. package/dist/profile-registry.d.ts.map +1 -0
  488. package/dist/profile-registry.js +104 -0
  489. package/dist/project-coupling-audit.d.ts +64 -0
  490. package/dist/project-coupling-audit.d.ts.map +1 -0
  491. package/dist/project-coupling-audit.js +282 -0
  492. package/dist/project-overview.d.ts +14 -0
  493. package/dist/project-overview.d.ts.map +1 -0
  494. package/dist/project-overview.js +27 -0
  495. package/dist/propose-knowledge.d.ts +64 -0
  496. package/dist/propose-knowledge.d.ts.map +1 -0
  497. package/dist/propose-knowledge.js +367 -0
  498. package/dist/quality-baseline.d.ts +123 -0
  499. package/dist/quality-baseline.d.ts.map +1 -0
  500. package/dist/quality-baseline.js +433 -0
  501. package/dist/quality-html.d.ts +7 -0
  502. package/dist/quality-html.d.ts.map +1 -0
  503. package/dist/quality-html.js +64 -0
  504. package/dist/quality-report.d.ts +49 -0
  505. package/dist/quality-report.d.ts.map +1 -0
  506. package/dist/quality-report.js +296 -0
  507. package/dist/query-resolver.d.ts +38 -0
  508. package/dist/query-resolver.d.ts.map +1 -0
  509. package/dist/query-resolver.js +163 -0
  510. package/dist/ranker-explainability.d.ts +91 -0
  511. package/dist/ranker-explainability.d.ts.map +1 -0
  512. package/dist/ranker-explainability.js +550 -0
  513. package/dist/reference-lookup.d.ts +8 -0
  514. package/dist/reference-lookup.d.ts.map +1 -0
  515. package/dist/reference-lookup.js +18 -0
  516. package/dist/registration-hint-registry.d.ts +55 -0
  517. package/dist/registration-hint-registry.d.ts.map +1 -0
  518. package/dist/registration-hint-registry.js +327 -0
  519. package/dist/registry-lifecycle.d.ts +47 -0
  520. package/dist/registry-lifecycle.d.ts.map +1 -0
  521. package/dist/registry-lifecycle.js +214 -0
  522. package/dist/release-readiness.d.ts +64 -0
  523. package/dist/release-readiness.d.ts.map +1 -0
  524. package/dist/release-readiness.js +456 -0
  525. package/dist/release-smoke.d.ts +138 -0
  526. package/dist/release-smoke.d.ts.map +1 -0
  527. package/dist/release-smoke.js +459 -0
  528. package/dist/release-train.d.ts +33 -0
  529. package/dist/release-train.d.ts.map +1 -0
  530. package/dist/release-train.js +104 -0
  531. package/dist/repo-memory.d.ts +95 -0
  532. package/dist/repo-memory.d.ts.map +1 -0
  533. package/dist/repo-memory.js +614 -0
  534. package/dist/report-site.d.ts +92 -0
  535. package/dist/report-site.d.ts.map +1 -0
  536. package/dist/report-site.js +658 -0
  537. package/dist/reposet.d.ts +56 -0
  538. package/dist/reposet.d.ts.map +1 -0
  539. package/dist/reposet.js +160 -0
  540. package/dist/repository-intelligence.d.ts +145 -0
  541. package/dist/repository-intelligence.d.ts.map +1 -0
  542. package/dist/repository-intelligence.js +729 -0
  543. package/dist/repository-knowledge-model.d.ts +218 -0
  544. package/dist/repository-knowledge-model.d.ts.map +1 -0
  545. package/dist/repository-knowledge-model.js +939 -0
  546. package/dist/repository-map.d.ts +72 -0
  547. package/dist/repository-map.d.ts.map +1 -0
  548. package/dist/repository-map.js +332 -0
  549. package/dist/repository-stats.d.ts +66 -0
  550. package/dist/repository-stats.d.ts.map +1 -0
  551. package/dist/repository-stats.js +329 -0
  552. package/dist/review-comment-renderer.d.ts +59 -0
  553. package/dist/review-comment-renderer.d.ts.map +1 -0
  554. package/dist/review-comment-renderer.js +181 -0
  555. package/dist/review-comment-v2.d.ts +9 -0
  556. package/dist/review-comment-v2.d.ts.map +1 -0
  557. package/dist/review-comment-v2.js +178 -0
  558. package/dist/review-html.d.ts +13 -0
  559. package/dist/review-html.d.ts.map +1 -0
  560. package/dist/review-html.js +79 -0
  561. package/dist/review-packet-v2.d.ts +29 -0
  562. package/dist/review-packet-v2.d.ts.map +1 -0
  563. package/dist/review-packet-v2.js +71 -0
  564. package/dist/review-packet-v3.d.ts +22 -0
  565. package/dist/review-packet-v3.d.ts.map +1 -0
  566. package/dist/review-packet-v3.js +181 -0
  567. package/dist/review-packet.d.ts +49 -0
  568. package/dist/review-packet.d.ts.map +1 -0
  569. package/dist/review-packet.js +129 -0
  570. package/dist/risk-signals.d.ts +28 -0
  571. package/dist/risk-signals.d.ts.map +1 -0
  572. package/dist/risk-signals.js +68 -0
  573. package/dist/role-views.d.ts +50 -0
  574. package/dist/role-views.d.ts.map +1 -0
  575. package/dist/role-views.js +334 -0
  576. package/dist/rounds.d.ts +52 -0
  577. package/dist/rounds.d.ts.map +1 -0
  578. package/dist/rounds.js +172 -0
  579. package/dist/rule-drift.d.ts +42 -0
  580. package/dist/rule-drift.d.ts.map +1 -0
  581. package/dist/rule-drift.js +148 -0
  582. package/dist/rule-quality.d.ts +73 -0
  583. package/dist/rule-quality.d.ts.map +1 -0
  584. package/dist/rule-quality.js +356 -0
  585. package/dist/rule-scaffold.d.ts +71 -0
  586. package/dist/rule-scaffold.d.ts.map +1 -0
  587. package/dist/rule-scaffold.js +258 -0
  588. package/dist/safety-audit-deep.d.ts +38 -0
  589. package/dist/safety-audit-deep.d.ts.map +1 -0
  590. package/dist/safety-audit-deep.js +162 -0
  591. package/dist/safety-audit.d.ts +91 -0
  592. package/dist/safety-audit.d.ts.map +1 -0
  593. package/dist/safety-audit.js +138 -0
  594. package/dist/safety-html.d.ts +7 -0
  595. package/dist/safety-html.d.ts.map +1 -0
  596. package/dist/safety-html.js +70 -0
  597. package/dist/scaffold-coverage.d.ts +46 -0
  598. package/dist/scaffold-coverage.d.ts.map +1 -0
  599. package/dist/scaffold-coverage.js +273 -0
  600. package/dist/scaffold-patterns.d.ts +38 -0
  601. package/dist/scaffold-patterns.d.ts.map +1 -0
  602. package/dist/scaffold-patterns.js +282 -0
  603. package/dist/schema-inventory.d.ts +55 -0
  604. package/dist/schema-inventory.d.ts.map +1 -0
  605. package/dist/schema-inventory.js +301 -0
  606. package/dist/search-index.d.ts +75 -0
  607. package/dist/search-index.d.ts.map +1 -0
  608. package/dist/search-index.js +531 -0
  609. package/dist/search-tuning-explain.d.ts +68 -0
  610. package/dist/search-tuning-explain.d.ts.map +1 -0
  611. package/dist/search-tuning-explain.js +207 -0
  612. package/dist/search-tuning-registry.d.ts +54 -0
  613. package/dist/search-tuning-registry.d.ts.map +1 -0
  614. package/dist/search-tuning-registry.js +303 -0
  615. package/dist/self-audit.d.ts +59 -0
  616. package/dist/self-audit.d.ts.map +1 -0
  617. package/dist/self-audit.js +192 -0
  618. package/dist/self-config-doctor-v2.d.ts +57 -0
  619. package/dist/self-config-doctor-v2.d.ts.map +1 -0
  620. package/dist/self-config-doctor-v2.js +653 -0
  621. package/dist/self-config-doctor.d.ts +47 -0
  622. package/dist/self-config-doctor.d.ts.map +1 -0
  623. package/dist/self-config-doctor.js +432 -0
  624. package/dist/sharkcraft-inspector.d.ts +73 -0
  625. package/dist/sharkcraft-inspector.d.ts.map +1 -0
  626. package/dist/sharkcraft-inspector.js +745 -0
  627. package/dist/spec/spec-cross-validate.d.ts +17 -0
  628. package/dist/spec/spec-cross-validate.d.ts.map +1 -0
  629. package/dist/spec/spec-cross-validate.js +53 -0
  630. package/dist/spec/spec-discovery.d.ts +27 -0
  631. package/dist/spec/spec-discovery.d.ts.map +1 -0
  632. package/dist/spec/spec-discovery.js +78 -0
  633. package/dist/spec/spec-review.d.ts +36 -0
  634. package/dist/spec/spec-review.d.ts.map +1 -0
  635. package/dist/spec/spec-review.js +37 -0
  636. package/dist/stability-map.d.ts +62 -0
  637. package/dist/stability-map.d.ts.map +1 -0
  638. package/dist/stability-map.js +404 -0
  639. package/dist/start-here.d.ts +49 -0
  640. package/dist/start-here.d.ts.map +1 -0
  641. package/dist/start-here.js +259 -0
  642. package/dist/surface-profile-detect.d.ts +42 -0
  643. package/dist/surface-profile-detect.d.ts.map +1 -0
  644. package/dist/surface-profile-detect.js +76 -0
  645. package/dist/symbol-index.d.ts +108 -0
  646. package/dist/symbol-index.d.ts.map +1 -0
  647. package/dist/symbol-index.js +483 -0
  648. package/dist/task-decompose.d.ts +38 -0
  649. package/dist/task-decompose.d.ts.map +1 -0
  650. package/dist/task-decompose.js +154 -0
  651. package/dist/task-packet.d.ts +104 -0
  652. package/dist/task-packet.d.ts.map +1 -0
  653. package/dist/task-packet.js +156 -0
  654. package/dist/task-ranker.d.ts +51 -0
  655. package/dist/task-ranker.d.ts.map +1 -0
  656. package/dist/task-ranker.js +410 -0
  657. package/dist/task-risk.d.ts +84 -0
  658. package/dist/task-risk.d.ts.map +1 -0
  659. package/dist/task-risk.js +731 -0
  660. package/dist/task-routing-hint-registry.d.ts +36 -0
  661. package/dist/task-routing-hint-registry.d.ts.map +1 -0
  662. package/dist/task-routing-hint-registry.js +186 -0
  663. package/dist/template-authoring.d.ts +113 -0
  664. package/dist/template-authoring.d.ts.map +1 -0
  665. package/dist/template-authoring.js +521 -0
  666. package/dist/template-body-inference-v2.d.ts +19 -0
  667. package/dist/template-body-inference-v2.d.ts.map +1 -0
  668. package/dist/template-body-inference-v2.js +468 -0
  669. package/dist/template-body-inference.d.ts +59 -0
  670. package/dist/template-body-inference.d.ts.map +1 -0
  671. package/dist/template-body-inference.js +277 -0
  672. package/dist/template-drift.d.ts +39 -0
  673. package/dist/template-drift.d.ts.map +1 -0
  674. package/dist/template-drift.js +353 -0
  675. package/dist/template-lint.d.ts +31 -0
  676. package/dist/template-lint.d.ts.map +1 -0
  677. package/dist/template-lint.js +113 -0
  678. package/dist/test-definitions.d.ts +41 -0
  679. package/dist/test-definitions.d.ts.map +1 -0
  680. package/dist/test-definitions.js +6 -0
  681. package/dist/test-impact.d.ts +30 -0
  682. package/dist/test-impact.d.ts.map +1 -0
  683. package/dist/test-impact.js +173 -0
  684. package/dist/test-runner.d.ts +87 -0
  685. package/dist/test-runner.d.ts.map +1 -0
  686. package/dist/test-runner.js +560 -0
  687. package/dist/uncertainty-report.d.ts +46 -0
  688. package/dist/uncertainty-report.d.ts.map +1 -0
  689. package/dist/uncertainty-report.js +108 -0
  690. package/dist/uncertainty.d.ts +38 -0
  691. package/dist/uncertainty.d.ts.map +1 -0
  692. package/dist/uncertainty.js +115 -0
  693. package/dist/universal-search.d.ts +64 -0
  694. package/dist/universal-search.d.ts.map +1 -0
  695. package/dist/universal-search.js +347 -0
  696. package/dist/upgrade-advisor.d.ts +22 -0
  697. package/dist/upgrade-advisor.d.ts.map +1 -0
  698. package/dist/upgrade-advisor.js +109 -0
  699. package/dist/why-file.d.ts +75 -0
  700. package/dist/why-file.d.ts.map +1 -0
  701. package/dist/why-file.js +202 -0
  702. package/dist/workflow-simulation.d.ts +46 -0
  703. package/dist/workflow-simulation.d.ts.map +1 -0
  704. package/dist/workflow-simulation.js +154 -0
  705. package/package.json +66 -0
@@ -0,0 +1,19 @@
1
+ import { LanguageId } from './language-id.js';
2
+ export declare const POLYGLOT_TEST_IMPACT_SCHEMA = "sharkcraft.polyglot-test-impact/v1";
3
+ export interface IPolyglotImpactedTest {
4
+ sourceFile: string;
5
+ language: LanguageId;
6
+ predictedTests: readonly string[];
7
+ reason: string;
8
+ }
9
+ export interface IPolyglotTestImpact {
10
+ schema: typeof POLYGLOT_TEST_IMPACT_SCHEMA;
11
+ generatedAt: string;
12
+ projectRoot: string;
13
+ impacted: readonly IPolyglotImpactedTest[];
14
+ missingTests: readonly string[];
15
+ notes: readonly string[];
16
+ }
17
+ export declare function computePolyglotTestImpact(projectRoot: string, changedFiles: readonly string[]): IPolyglotTestImpact;
18
+ export declare function renderPolyglotTestImpactText(r: IPolyglotTestImpact): string;
19
+ //# sourceMappingURL=test-impact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-impact.d.ts","sourceRoot":"","sources":["../../src/languages/test-impact.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,2BAA2B,uCAAuC,CAAC;AAEhF,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,UAAU,CAAC;IACrB,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,2BAA2B,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC3C,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAwED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,mBAAmB,CAoDrB;AAED,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAmB3E"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Polyglot test impact.
3
+ *
4
+ * Given a set of changed source files, predict the per-language test files
5
+ * that should run. Deterministic naming conventions per language.
6
+ */
7
+ import { existsSync } from 'node:fs';
8
+ import * as nodePath from 'node:path';
9
+ import { LanguageId } from "./language-id.js";
10
+ export const POLYGLOT_TEST_IMPACT_SCHEMA = 'sharkcraft.polyglot-test-impact/v1';
11
+ function classifyExtension(file) {
12
+ if (file.endsWith('.java'))
13
+ return LanguageId.Java;
14
+ if (file.endsWith('.cs'))
15
+ return LanguageId.CSharp;
16
+ if (file.endsWith('.py'))
17
+ return LanguageId.Python;
18
+ if (file.endsWith('.go'))
19
+ return LanguageId.Go;
20
+ if (file.endsWith('.rs'))
21
+ return LanguageId.Rust;
22
+ if (file.endsWith('.ts') || file.endsWith('.tsx'))
23
+ return LanguageId.TypeScript;
24
+ if (file.endsWith('.js') || file.endsWith('.jsx'))
25
+ return LanguageId.JavaScript;
26
+ return LanguageId.Unknown;
27
+ }
28
+ function predictJava(file) {
29
+ const out = new Set();
30
+ const inMain = file.replace('/main/java/', '/test/java/');
31
+ if (inMain !== file) {
32
+ out.add(inMain.replace(/\.java$/, 'Test.java'));
33
+ out.add(inMain.replace(/\.java$/, 'Tests.java'));
34
+ out.add(inMain.replace(/\.java$/, 'IT.java'));
35
+ }
36
+ else {
37
+ out.add(file.replace(/\.java$/, 'Test.java'));
38
+ }
39
+ return [...out];
40
+ }
41
+ function predictCSharp(file) {
42
+ const dir = nodePath.dirname(file);
43
+ const base = nodePath.basename(file, '.cs');
44
+ const candidates = [];
45
+ candidates.push(nodePath.join(dir, `${base}Tests.cs`));
46
+ candidates.push(nodePath.join(dir, `${base}Test.cs`));
47
+ // Mirror to a sibling `*.Tests` project — covers both `/src/` (mid-path)
48
+ // and `src/` (root-relative) layouts.
49
+ if (file.includes('/src/'))
50
+ candidates.push(file.replace(/\/src\//, '/tests/').replace(/\.cs$/, 'Tests.cs'));
51
+ if (file.startsWith('src/'))
52
+ candidates.push('tests/' + file.slice('src/'.length).replace(/\.cs$/, 'Tests.cs'));
53
+ return candidates;
54
+ }
55
+ function predictPython(file) {
56
+ const dir = nodePath.dirname(file);
57
+ const base = nodePath.basename(file, '.py');
58
+ return [
59
+ nodePath.join(dir, `test_${base}.py`),
60
+ nodePath.join(dir, `${base}_test.py`),
61
+ file.replace(/\/src\//, '/tests/').replace(/\/([^/]+)\.py$/, '/test_$1.py'),
62
+ nodePath.join('tests', `test_${base}.py`),
63
+ ];
64
+ }
65
+ function predictGo(file) {
66
+ return [file.replace(/\.go$/, '_test.go')];
67
+ }
68
+ function predictRust(file) {
69
+ const out = [];
70
+ // Inline `#[cfg(test)] mod tests {}` lives in the file itself — flag it.
71
+ out.push(file);
72
+ // Mirror to `tests/<basename>.rs` for integration tests.
73
+ const base = nodePath.basename(file, '.rs');
74
+ out.push(nodePath.join('tests', `${base}.rs`));
75
+ return out;
76
+ }
77
+ function predictTs(file) {
78
+ const out = [];
79
+ out.push(file.replace(/\.tsx?$/, '.test.ts'));
80
+ out.push(file.replace(/\.tsx?$/, '.spec.ts'));
81
+ out.push(file.replace(/\/src\//, '/__tests__/').replace(/\.tsx?$/, '.test.ts'));
82
+ return out;
83
+ }
84
+ export function computePolyglotTestImpact(projectRoot, changedFiles) {
85
+ const impacted = [];
86
+ const missing = [];
87
+ for (const raw of changedFiles) {
88
+ const rel = raw.startsWith('/') ? nodePath.relative(projectRoot, raw) : raw;
89
+ const lang = classifyExtension(rel);
90
+ let predicted;
91
+ let reason;
92
+ switch (lang) {
93
+ case LanguageId.Java:
94
+ predicted = predictJava(rel);
95
+ reason = 'src/main/java → src/test/java; *Test / *Tests / *IT.';
96
+ break;
97
+ case LanguageId.CSharp:
98
+ predicted = predictCSharp(rel);
99
+ reason = 'FooTests.cs / FooTest.cs; sibling Tests project.';
100
+ break;
101
+ case LanguageId.Python:
102
+ predicted = predictPython(rel);
103
+ reason = 'test_*.py / *_test.py; tests/ mirror.';
104
+ break;
105
+ case LanguageId.Go:
106
+ predicted = predictGo(rel);
107
+ reason = 'foo.go → foo_test.go.';
108
+ break;
109
+ case LanguageId.Rust:
110
+ predicted = predictRust(rel);
111
+ reason = 'inline #[cfg(test)] + tests/ integration.';
112
+ break;
113
+ case LanguageId.TypeScript:
114
+ case LanguageId.JavaScript:
115
+ predicted = predictTs(rel);
116
+ reason = '.test.ts / .spec.ts companion.';
117
+ break;
118
+ default:
119
+ predicted = [];
120
+ reason = `No prediction rule for ${lang}.`;
121
+ }
122
+ impacted.push({ sourceFile: rel, language: lang, predictedTests: predicted, reason });
123
+ const anyExists = predicted.some((t) => existsSync(nodePath.join(projectRoot, t)));
124
+ if (predicted.length > 0 && !anyExists && lang !== LanguageId.Unknown) {
125
+ missing.push(rel);
126
+ }
127
+ }
128
+ return {
129
+ schema: POLYGLOT_TEST_IMPACT_SCHEMA,
130
+ generatedAt: new Date().toISOString(),
131
+ projectRoot,
132
+ impacted,
133
+ missingTests: missing,
134
+ notes: ['Predictions are deterministic and naive; they do not run tests.'],
135
+ };
136
+ }
137
+ export function renderPolyglotTestImpactText(r) {
138
+ let out = `=== Polyglot test impact ===\n`;
139
+ out += ` project root ${r.projectRoot}\n`;
140
+ out += ` changed files ${r.impacted.length}\n`;
141
+ out += ` missing tests ${r.missingTests.length}\n\n`;
142
+ for (const i of r.impacted) {
143
+ out += `[${i.language}] ${i.sourceFile}\n`;
144
+ out += ` reason: ${i.reason}\n`;
145
+ for (const t of i.predictedTests) {
146
+ const exists = existsSync(nodePath.join(r.projectRoot, t)) ? '✓' : ' ';
147
+ out += ` ${exists} ${t}\n`;
148
+ }
149
+ out += `\n`;
150
+ }
151
+ if (r.missingTests.length > 0) {
152
+ out += `Missing tests for:\n`;
153
+ for (const m of r.missingTests)
154
+ out += ` • ${m}\n`;
155
+ }
156
+ return out;
157
+ }
@@ -0,0 +1,40 @@
1
+ import type { LoaderAssetKind, LoaderAssetStatus } from './inspector-cache.js';
2
+ export type LoaderOrigin = 'local-config' | 'pack-manifest';
3
+ export interface ILoaderDiagnostic {
4
+ filePath: string;
5
+ kind: LoaderAssetKind;
6
+ origin: LoaderOrigin;
7
+ packName?: string;
8
+ elapsedMs: number;
9
+ status: LoaderAssetStatus | 'cached-skip';
10
+ /** Number of items extracted (entries/templates/etc). */
11
+ count: number;
12
+ warningCount: number;
13
+ errorMessage?: string;
14
+ /** When status === 'cached-skip', this is the cached pre-existing status. */
15
+ cachedStatus?: LoaderAssetStatus;
16
+ /** Whether this load hit the in-memory import dedup. */
17
+ deduped: boolean;
18
+ /** Whether the file exceeded the large-file threshold. */
19
+ largeFile: boolean;
20
+ /** File size in bytes, when known. */
21
+ sizeBytes?: number;
22
+ /** Whether the elapsed time crossed the slow threshold. */
23
+ slow: boolean;
24
+ /** Suggested next command for the user to debug this. */
25
+ suggestedNextCommand?: string;
26
+ }
27
+ export declare const DEFAULT_SLOW_LOADER_THRESHOLD_MS = 1500;
28
+ export declare const LARGE_FILE_THRESHOLD_BYTES: number;
29
+ export declare function formatLoaderDiagnosticLine(d: ILoaderDiagnostic): string;
30
+ export declare function summarizeLoaderDiagnostics(diagnostics: readonly ILoaderDiagnostic[]): {
31
+ totalLoaders: number;
32
+ totalElapsedMs: number;
33
+ failed: number;
34
+ timedOut: number;
35
+ cachedSkips: number;
36
+ deduped: number;
37
+ largeFiles: number;
38
+ slowLoaders: number;
39
+ };
40
+ //# sourceMappingURL=loader-diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-diagnostics.d.ts","sourceRoot":"","sources":["../src/loader-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,eAAe,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,iBAAiB,GAAG,aAAa,CAAC;IAC1C,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,wDAAwD;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,IAAI,EAAE,OAAO,CAAC;IACd,yDAAyD;IACzD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,gCAAgC,OAAO,CAAC;AACrD,eAAO,MAAM,0BAA0B,QAAa,CAAC;AAErD,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAQvE;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,GAAG;IACrF,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CA2BA"}
@@ -0,0 +1,49 @@
1
+ export const DEFAULT_SLOW_LOADER_THRESHOLD_MS = 1500;
2
+ export const LARGE_FILE_THRESHOLD_BYTES = 256 * 1024;
3
+ export function formatLoaderDiagnosticLine(d) {
4
+ const flags = [];
5
+ if (d.deduped)
6
+ flags.push('deduped');
7
+ if (d.largeFile)
8
+ flags.push('large');
9
+ if (d.slow)
10
+ flags.push('slow');
11
+ if (d.status === 'cached-skip')
12
+ flags.push(`cached:${d.cachedStatus ?? 'n/a'}`);
13
+ const flagStr = flags.length ? ` [${flags.join(', ')}]` : '';
14
+ return ` ${d.kind.padEnd(10)} ${d.status.padEnd(12)} ${d.elapsedMs.toString().padStart(5)}ms count=${d.count}${flagStr} ${d.filePath}`;
15
+ }
16
+ export function summarizeLoaderDiagnostics(diagnostics) {
17
+ let totalElapsedMs = 0;
18
+ let failed = 0;
19
+ let timedOut = 0;
20
+ let cachedSkips = 0;
21
+ let deduped = 0;
22
+ let largeFiles = 0;
23
+ let slowLoaders = 0;
24
+ for (const d of diagnostics) {
25
+ totalElapsedMs += d.elapsedMs;
26
+ if (d.status === 'failed')
27
+ failed += 1;
28
+ else if (d.status === 'timeout')
29
+ timedOut += 1;
30
+ else if (d.status === 'cached-skip')
31
+ cachedSkips += 1;
32
+ if (d.deduped)
33
+ deduped += 1;
34
+ if (d.largeFile)
35
+ largeFiles += 1;
36
+ if (d.slow)
37
+ slowLoaders += 1;
38
+ }
39
+ return {
40
+ totalLoaders: diagnostics.length,
41
+ totalElapsedMs,
42
+ failed,
43
+ timedOut,
44
+ cachedSkips,
45
+ deduped,
46
+ largeFiles,
47
+ slowLoaders,
48
+ };
49
+ }
@@ -0,0 +1,60 @@
1
+ import { type IMemoryDiagnosticEntry, type IMemoryFileEntry, type IRepositoryMemoryIndex } from './repo-memory.js';
2
+ export declare const MEMORY_DIFF_SCHEMA = "sharkcraft.memory-diff/v1";
3
+ export declare enum MemoryRiskTrend {
4
+ Improving = "improving",
5
+ Stable = "stable",
6
+ Worsening = "worsening",
7
+ Unknown = "unknown"
8
+ }
9
+ export interface IMemoryFileDelta {
10
+ path: string;
11
+ beforeScore: number;
12
+ afterScore: number;
13
+ delta: number;
14
+ }
15
+ export interface IMemoryDiagnosticDelta {
16
+ code: string;
17
+ beforeCount: number;
18
+ afterCount: number;
19
+ delta: number;
20
+ }
21
+ export interface IMemoryDiffReport {
22
+ schema: typeof MEMORY_DIFF_SCHEMA;
23
+ generatedAt: string;
24
+ hasPrevious: boolean;
25
+ riskTrend: MemoryRiskTrend;
26
+ beforeGeneratedAt?: string;
27
+ afterGeneratedAt: string;
28
+ totalScoreBefore: number;
29
+ totalScoreAfter: number;
30
+ totalScoreDelta: number;
31
+ newRiskyFiles: readonly IMemoryFileEntry[];
32
+ resolvedRiskyFiles: readonly IMemoryFileEntry[];
33
+ worseningFiles: readonly IMemoryFileDelta[];
34
+ improvingFiles: readonly IMemoryFileDelta[];
35
+ newRecurringDiagnostics: readonly IMemoryDiagnosticEntry[];
36
+ resolvedDiagnostics: readonly IMemoryDiagnosticEntry[];
37
+ diagnosticDeltas: readonly IMemoryDiagnosticDelta[];
38
+ newPlanConflicts: readonly string[];
39
+ newFailedValidationCommands: readonly string[];
40
+ newRecurringBoundaryViolations: readonly string[];
41
+ newRecurringPolicyViolations: readonly string[];
42
+ newPackIssues: readonly string[];
43
+ changedTopConstructs: readonly {
44
+ id: string;
45
+ beforeWeight: number;
46
+ afterWeight: number;
47
+ delta: number;
48
+ }[];
49
+ suggestedActions: readonly string[];
50
+ notes: readonly string[];
51
+ }
52
+ export declare function diffMemoryIndex(before: IRepositoryMemoryIndex | null, after: IRepositoryMemoryIndex): IMemoryDiffReport;
53
+ export declare function memoryHistoryDir(projectRoot: string): string;
54
+ export declare function writeMemorySnapshot(projectRoot: string, index: IRepositoryMemoryIndex): string;
55
+ export declare function listMemorySnapshots(projectRoot: string): string[];
56
+ export declare function loadMemorySnapshot(file: string): IRepositoryMemoryIndex | null;
57
+ export declare function latestMemorySnapshot(projectRoot: string): IRepositoryMemoryIndex | null;
58
+ export declare function renderMemoryDiffText(d: IMemoryDiffReport): string;
59
+ export declare function renderMemoryDiffMarkdown(d: IMemoryDiffReport): string;
60
+ //# sourceMappingURL=memory-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-diff.d.ts","sourceRoot":"","sources":["../src/memory-diff.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AAE9D,oBAAY,eAAe;IACzB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,kBAAkB,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,eAAe,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC3C,kBAAkB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD,cAAc,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC5C,cAAc,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC5C,uBAAuB,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC3D,mBAAmB,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACvD,gBAAgB,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACpD,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,2BAA2B,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,8BAA8B,EAAE,SAAS,MAAM,EAAE,CAAC;IAClD,4BAA4B,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,oBAAoB,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1G,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAWD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,sBAAsB,GAAG,IAAI,EACrC,KAAK,EAAE,sBAAsB,GAC5B,iBAAiB,CA8InB;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAO9F;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAOjE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAO9E;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAIvF;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,iBAAiB,GAAG,MAAM,CA+CjE;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAgCrE"}
@@ -0,0 +1,302 @@
1
+ /**
2
+ * Memory diff + drift.
3
+ *
4
+ * Compare two `IRepositoryMemoryIndex` snapshots to surface what got worse,
5
+ * what got better, and overall trend. Pure local, no network.
6
+ *
7
+ * History storage lives under `.sharkcraft/memory/history/<ts>-memory.json`.
8
+ * `shrk memory build --write-snapshot` writes one each time.
9
+ */
10
+ import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from 'node:fs';
11
+ import * as nodePath from 'node:path';
12
+ import { memoryDir, } from "./repo-memory.js";
13
+ export const MEMORY_DIFF_SCHEMA = 'sharkcraft.memory-diff/v1';
14
+ export var MemoryRiskTrend;
15
+ (function (MemoryRiskTrend) {
16
+ MemoryRiskTrend["Improving"] = "improving";
17
+ MemoryRiskTrend["Stable"] = "stable";
18
+ MemoryRiskTrend["Worsening"] = "worsening";
19
+ MemoryRiskTrend["Unknown"] = "unknown";
20
+ })(MemoryRiskTrend || (MemoryRiskTrend = {}));
21
+ function scoreFile(f) {
22
+ return f.touchCount + f.conflictCount * 4 + f.failedValidationCount * 3 + f.warningCount;
23
+ }
24
+ function diffArrayOnly(after, before) {
25
+ const set = new Set(before);
26
+ return after.filter((x) => !set.has(x));
27
+ }
28
+ export function diffMemoryIndex(before, after) {
29
+ if (!before) {
30
+ return {
31
+ schema: MEMORY_DIFF_SCHEMA,
32
+ generatedAt: new Date().toISOString(),
33
+ hasPrevious: false,
34
+ riskTrend: MemoryRiskTrend.Unknown,
35
+ afterGeneratedAt: after.generatedAt,
36
+ totalScoreBefore: 0,
37
+ totalScoreAfter: after.files.reduce((sum, f) => sum + scoreFile(f), 0),
38
+ totalScoreDelta: after.files.reduce((sum, f) => sum + scoreFile(f), 0),
39
+ newRiskyFiles: after.files.slice(0, 20),
40
+ resolvedRiskyFiles: [],
41
+ worseningFiles: [],
42
+ improvingFiles: [],
43
+ newRecurringDiagnostics: after.diagnostics.slice(0, 20),
44
+ resolvedDiagnostics: [],
45
+ diagnosticDeltas: [],
46
+ newPlanConflicts: [...after.plansWithConflicts],
47
+ newFailedValidationCommands: [...after.failedValidationCommands],
48
+ newRecurringBoundaryViolations: [...after.boundaryViolationsRecurring],
49
+ newRecurringPolicyViolations: [...after.policyViolationsRecurring],
50
+ newPackIssues: [...after.packIssues],
51
+ changedTopConstructs: [],
52
+ suggestedActions: [
53
+ 'No previous snapshot — run `shrk memory build --write-snapshot` regularly to enable drift tracking.',
54
+ ],
55
+ notes: ['No previous memory snapshot available.'],
56
+ };
57
+ }
58
+ const beforeByPath = new Map(before.files.map((f) => [f.path, f]));
59
+ const afterByPath = new Map(after.files.map((f) => [f.path, f]));
60
+ const newRiskyFiles = [];
61
+ const resolvedRiskyFiles = [];
62
+ const worseningFiles = [];
63
+ const improvingFiles = [];
64
+ for (const f of after.files) {
65
+ const prev = beforeByPath.get(f.path);
66
+ if (!prev) {
67
+ newRiskyFiles.push(f);
68
+ continue;
69
+ }
70
+ const beforeScore = scoreFile(prev);
71
+ const afterScore = scoreFile(f);
72
+ if (afterScore > beforeScore) {
73
+ worseningFiles.push({ path: f.path, beforeScore, afterScore, delta: afterScore - beforeScore });
74
+ }
75
+ else if (afterScore < beforeScore) {
76
+ improvingFiles.push({ path: f.path, beforeScore, afterScore, delta: afterScore - beforeScore });
77
+ }
78
+ }
79
+ for (const f of before.files) {
80
+ if (!afterByPath.has(f.path))
81
+ resolvedRiskyFiles.push(f);
82
+ }
83
+ const beforeDiag = new Map(before.diagnostics.map((d) => [d.code, d]));
84
+ const afterDiag = new Map(after.diagnostics.map((d) => [d.code, d]));
85
+ const newRecurringDiagnostics = [];
86
+ const resolvedDiagnostics = [];
87
+ const diagnosticDeltas = [];
88
+ for (const d of after.diagnostics) {
89
+ const prev = beforeDiag.get(d.code);
90
+ if (!prev)
91
+ newRecurringDiagnostics.push(d);
92
+ else if (prev.count !== d.count)
93
+ diagnosticDeltas.push({ code: d.code, beforeCount: prev.count, afterCount: d.count, delta: d.count - prev.count });
94
+ }
95
+ for (const d of before.diagnostics) {
96
+ if (!afterDiag.has(d.code))
97
+ resolvedDiagnostics.push(d);
98
+ }
99
+ const newPlanConflicts = diffArrayOnly(after.plansWithConflicts, before.plansWithConflicts);
100
+ const newFailedValidationCommands = diffArrayOnly(after.failedValidationCommands, before.failedValidationCommands);
101
+ const newRecurringBoundaryViolations = diffArrayOnly(after.boundaryViolationsRecurring, before.boundaryViolationsRecurring);
102
+ const newRecurringPolicyViolations = diffArrayOnly(after.policyViolationsRecurring, before.policyViolationsRecurring);
103
+ const newPackIssues = diffArrayOnly(after.packIssues, before.packIssues);
104
+ const beforeConstructs = new Map(before.highRiskConstructs.map((c) => [c.id, c.weight]));
105
+ const changedTopConstructs = [];
106
+ for (const c of after.highRiskConstructs) {
107
+ const prev = beforeConstructs.get(c.id) ?? 0;
108
+ if (prev !== c.weight)
109
+ changedTopConstructs.push({ id: c.id, beforeWeight: prev, afterWeight: c.weight, delta: c.weight - prev });
110
+ }
111
+ const totalScoreBefore = before.files.reduce((sum, f) => sum + scoreFile(f), 0);
112
+ const totalScoreAfter = after.files.reduce((sum, f) => sum + scoreFile(f), 0);
113
+ const totalScoreDelta = totalScoreAfter - totalScoreBefore;
114
+ // Trend: weighted by both file score and new diagnostics/conflicts.
115
+ const worseSignals = newRiskyFiles.length * 2 +
116
+ worseningFiles.length +
117
+ newRecurringDiagnostics.length * 2 +
118
+ newPlanConflicts.length * 3 +
119
+ newRecurringBoundaryViolations.length * 2 +
120
+ newRecurringPolicyViolations.length * 2 +
121
+ Math.max(0, totalScoreDelta);
122
+ const betterSignals = resolvedRiskyFiles.length * 2 +
123
+ improvingFiles.length +
124
+ resolvedDiagnostics.length * 2 +
125
+ Math.max(0, -totalScoreDelta);
126
+ let riskTrend = MemoryRiskTrend.Stable;
127
+ if (worseSignals > betterSignals * 1.5 && worseSignals > 2)
128
+ riskTrend = MemoryRiskTrend.Worsening;
129
+ else if (betterSignals > worseSignals * 1.5 && betterSignals > 2)
130
+ riskTrend = MemoryRiskTrend.Improving;
131
+ const suggestedActions = [];
132
+ if (newRiskyFiles.length > 0)
133
+ suggestedActions.push(`Review newly risky files: ${newRiskyFiles.slice(0, 3).map((f) => f.path).join(', ')}.`);
134
+ if (newPlanConflicts.length > 0)
135
+ suggestedActions.push(`Inspect ${newPlanConflicts.length} new plan(s) with conflicts.`);
136
+ if (newRecurringBoundaryViolations.length > 0)
137
+ suggestedActions.push(`New recurring boundary violations: ${newRecurringBoundaryViolations.join(', ')}.`);
138
+ if (newRecurringPolicyViolations.length > 0)
139
+ suggestedActions.push(`New recurring policy violations: ${newRecurringPolicyViolations.join(', ')}.`);
140
+ if (newPackIssues.length > 0)
141
+ suggestedActions.push(`Pack issues regressed: ${newPackIssues.join(', ')}.`);
142
+ if (riskTrend === MemoryRiskTrend.Worsening)
143
+ suggestedActions.push('Trend worsening — consider scheduling cleanup or freezing risky changes.');
144
+ return {
145
+ schema: MEMORY_DIFF_SCHEMA,
146
+ generatedAt: new Date().toISOString(),
147
+ hasPrevious: true,
148
+ riskTrend,
149
+ beforeGeneratedAt: before.generatedAt,
150
+ afterGeneratedAt: after.generatedAt,
151
+ totalScoreBefore,
152
+ totalScoreAfter,
153
+ totalScoreDelta,
154
+ newRiskyFiles: newRiskyFiles.slice(0, 30),
155
+ resolvedRiskyFiles: resolvedRiskyFiles.slice(0, 30),
156
+ worseningFiles: worseningFiles.sort((a, b) => b.delta - a.delta).slice(0, 30),
157
+ improvingFiles: improvingFiles.sort((a, b) => a.delta - b.delta).slice(0, 30),
158
+ newRecurringDiagnostics: newRecurringDiagnostics.slice(0, 30),
159
+ resolvedDiagnostics: resolvedDiagnostics.slice(0, 30),
160
+ diagnosticDeltas: diagnosticDeltas.sort((a, b) => Math.abs(b.delta) - Math.abs(a.delta)).slice(0, 30),
161
+ newPlanConflicts,
162
+ newFailedValidationCommands,
163
+ newRecurringBoundaryViolations,
164
+ newRecurringPolicyViolations,
165
+ newPackIssues,
166
+ changedTopConstructs: changedTopConstructs.sort((a, b) => Math.abs(b.delta) - Math.abs(a.delta)).slice(0, 30),
167
+ suggestedActions,
168
+ notes: [],
169
+ };
170
+ }
171
+ export function memoryHistoryDir(projectRoot) {
172
+ return nodePath.join(memoryDir(projectRoot), 'history');
173
+ }
174
+ export function writeMemorySnapshot(projectRoot, index) {
175
+ const dir = memoryHistoryDir(projectRoot);
176
+ mkdirSync(dir, { recursive: true });
177
+ const stamp = (index.generatedAt || new Date().toISOString()).replace(/[:.]/g, '-');
178
+ const file = nodePath.join(dir, `${stamp}-memory.json`);
179
+ writeFileSync(file, JSON.stringify(index, null, 2) + '\n', 'utf8');
180
+ return file;
181
+ }
182
+ export function listMemorySnapshots(projectRoot) {
183
+ const dir = memoryHistoryDir(projectRoot);
184
+ if (!existsSync(dir))
185
+ return [];
186
+ return readdirSync(dir)
187
+ .filter((f) => f.endsWith('-memory.json'))
188
+ .map((f) => nodePath.join(dir, f))
189
+ .sort();
190
+ }
191
+ export function loadMemorySnapshot(file) {
192
+ if (!existsSync(file))
193
+ return null;
194
+ try {
195
+ return JSON.parse(readFileSync(file, 'utf8'));
196
+ }
197
+ catch {
198
+ return null;
199
+ }
200
+ }
201
+ export function latestMemorySnapshot(projectRoot) {
202
+ const list = listMemorySnapshots(projectRoot);
203
+ if (list.length === 0)
204
+ return null;
205
+ return loadMemorySnapshot(list[list.length - 1]);
206
+ }
207
+ export function renderMemoryDiffText(d) {
208
+ let out = `=== Memory diff ===\n`;
209
+ out += ` trend ${d.riskTrend}\n`;
210
+ out += ` before generated ${d.beforeGeneratedAt ?? '(none)'}\n`;
211
+ out += ` after generated ${d.afterGeneratedAt}\n`;
212
+ out += ` score before ${d.totalScoreBefore}\n`;
213
+ out += ` score after ${d.totalScoreAfter} (Δ ${d.totalScoreDelta >= 0 ? '+' : ''}${d.totalScoreDelta})\n\n`;
214
+ if (d.newRiskyFiles.length) {
215
+ out += `Newly risky files:\n`;
216
+ for (const f of d.newRiskyFiles.slice(0, 10))
217
+ out += ` + ${f.path} (touches=${f.touchCount}, conflicts=${f.conflictCount})\n`;
218
+ out += `\n`;
219
+ }
220
+ if (d.resolvedRiskyFiles.length) {
221
+ out += `Resolved risky files:\n`;
222
+ for (const f of d.resolvedRiskyFiles.slice(0, 10))
223
+ out += ` - ${f.path}\n`;
224
+ out += `\n`;
225
+ }
226
+ if (d.worseningFiles.length) {
227
+ out += `Worsening files:\n`;
228
+ for (const f of d.worseningFiles.slice(0, 10))
229
+ out += ` ↑ ${f.path} ${f.beforeScore} → ${f.afterScore} (+${f.delta})\n`;
230
+ out += `\n`;
231
+ }
232
+ if (d.improvingFiles.length) {
233
+ out += `Improving files:\n`;
234
+ for (const f of d.improvingFiles.slice(0, 10))
235
+ out += ` ↓ ${f.path} ${f.beforeScore} → ${f.afterScore} (${f.delta})\n`;
236
+ out += `\n`;
237
+ }
238
+ if (d.newRecurringDiagnostics.length) {
239
+ out += `New recurring diagnostics: ${d.newRecurringDiagnostics.map((x) => x.code).join(', ')}\n\n`;
240
+ }
241
+ if (d.resolvedDiagnostics.length) {
242
+ out += `Resolved diagnostics: ${d.resolvedDiagnostics.map((x) => x.code).join(', ')}\n\n`;
243
+ }
244
+ if (d.newPlanConflicts.length)
245
+ out += `New plan conflicts: ${d.newPlanConflicts.length}\n\n`;
246
+ if (d.newRecurringBoundaryViolations.length)
247
+ out += `New recurring boundary violations: ${d.newRecurringBoundaryViolations.join(', ')}\n\n`;
248
+ if (d.newRecurringPolicyViolations.length)
249
+ out += `New recurring policy violations: ${d.newRecurringPolicyViolations.join(', ')}\n\n`;
250
+ if (d.newPackIssues.length)
251
+ out += `New pack issues: ${d.newPackIssues.join(', ')}\n\n`;
252
+ if (d.suggestedActions.length) {
253
+ out += `Suggested actions:\n`;
254
+ for (const a of d.suggestedActions)
255
+ out += ` • ${a}\n`;
256
+ out += `\n`;
257
+ }
258
+ if (d.notes.length) {
259
+ out += `Notes:\n`;
260
+ for (const n of d.notes)
261
+ out += ` • ${n}\n`;
262
+ }
263
+ return out;
264
+ }
265
+ export function renderMemoryDiffMarkdown(d) {
266
+ let out = `# Memory diff\n\n`;
267
+ out += `- **trend**: ${d.riskTrend}\n`;
268
+ out += `- **before generated**: ${d.beforeGeneratedAt ?? '(none)'}\n`;
269
+ out += `- **after generated**: ${d.afterGeneratedAt}\n`;
270
+ out += `- **score**: ${d.totalScoreBefore} → ${d.totalScoreAfter} (Δ ${d.totalScoreDelta >= 0 ? '+' : ''}${d.totalScoreDelta})\n\n`;
271
+ if (d.newRiskyFiles.length) {
272
+ out += `## Newly risky files\n`;
273
+ for (const f of d.newRiskyFiles.slice(0, 15))
274
+ out += `- \`${f.path}\` — touches ${f.touchCount}, conflicts ${f.conflictCount}\n`;
275
+ out += `\n`;
276
+ }
277
+ if (d.resolvedRiskyFiles.length) {
278
+ out += `## Resolved risky files\n`;
279
+ for (const f of d.resolvedRiskyFiles.slice(0, 15))
280
+ out += `- \`${f.path}\`\n`;
281
+ out += `\n`;
282
+ }
283
+ if (d.worseningFiles.length) {
284
+ out += `## Worsening files\n| File | Before | After | Δ |\n| --- | --- | --- | --- |\n`;
285
+ for (const f of d.worseningFiles.slice(0, 15))
286
+ out += `| \`${f.path}\` | ${f.beforeScore} | ${f.afterScore} | +${f.delta} |\n`;
287
+ out += `\n`;
288
+ }
289
+ if (d.improvingFiles.length) {
290
+ out += `## Improving files\n| File | Before | After | Δ |\n| --- | --- | --- | --- |\n`;
291
+ for (const f of d.improvingFiles.slice(0, 15))
292
+ out += `| \`${f.path}\` | ${f.beforeScore} | ${f.afterScore} | ${f.delta} |\n`;
293
+ out += `\n`;
294
+ }
295
+ if (d.suggestedActions.length) {
296
+ out += `## Suggested actions\n`;
297
+ for (const a of d.suggestedActions)
298
+ out += `- ${a}\n`;
299
+ out += `\n`;
300
+ }
301
+ return out;
302
+ }
@@ -0,0 +1,26 @@
1
+ import { type IMigrationProfile } from './migration-readiness.js';
2
+ import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
3
+ export declare const MIGRATION_PROFILE_REGISTRY_SCHEMA = "sharkcraft.migration-profile-registry/v1";
4
+ export declare enum MigrationProfileSource {
5
+ Local = "local",
6
+ Pack = "pack"
7
+ }
8
+ export interface IMigrationProfileEntry {
9
+ readonly profile: IMigrationProfile;
10
+ readonly source: MigrationProfileSource;
11
+ readonly packageName?: string;
12
+ readonly sourceFile: string;
13
+ }
14
+ export interface IMigrationProfileRegistryIssue {
15
+ readonly severity: 'info' | 'warning' | 'error';
16
+ readonly code: string;
17
+ readonly message: string;
18
+ readonly profileId?: string;
19
+ readonly source?: string;
20
+ }
21
+ export declare function loadMigrationProfiles(inspection: ISharkcraftInspection): Promise<{
22
+ entries: readonly IMigrationProfileEntry[];
23
+ issues: readonly IMigrationProfileRegistryIssue[];
24
+ }>;
25
+ export declare function listMigrationProfilesFromPacks(inspection: ISharkcraftInspection): Promise<readonly IMigrationProfile[]>;
26
+ //# sourceMappingURL=migration-profile-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-profile-registry.d.ts","sourceRoot":"","sources":["../src/migration-profile-registry.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,iCAAiC,6CAA6C,CAAC;AAE5F,oBAAY,sBAAsB;IAChC,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAkCD,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC;IACT,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC3C,MAAM,EAAE,SAAS,8BAA8B,EAAE,CAAC;CACnD,CAAC,CAkFD;AAED,wBAAsB,8BAA8B,CAClD,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAGvC"}