scip-query 0.10.0 → 0.10.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.
- package/README.md +115 -58
- package/dist/augment-vue-worker.js +1 -1
- package/dist/chunk-3KLLFNT4.js +2 -0
- package/dist/{chunk-UIWAZ2NT.js → chunk-3UVJJ6Z7.js} +1 -1
- package/dist/chunk-3UW7VM4H.js +62 -0
- package/dist/chunk-3ZYF3ELZ.js +2 -0
- package/dist/{chunk-MN75T4UB.js → chunk-47UA45TU.js} +2 -2
- package/dist/{chunk-NC4IUW25.js → chunk-4ZUJJRWT.js} +2 -2
- package/dist/chunk-5B53WB6E.js +4 -0
- package/dist/{chunk-2WEH5QHC.js → chunk-5FOPAXWY.js} +2 -2
- package/dist/{chunk-VZRILF2Z.js → chunk-5M4TYWVI.js} +2 -2
- package/dist/{chunk-QJWN6LA5.js → chunk-5QJXH6ZL.js} +5 -5
- package/dist/{chunk-NN3O7TPH.js → chunk-64MNV6AB.js} +1 -1
- package/dist/chunk-77YBOOYT.js +2 -0
- package/dist/chunk-7KCSELEV.js +2 -0
- package/dist/{chunk-ZZ2W5P3D.js → chunk-7OHWPJ5N.js} +2 -2
- package/dist/chunk-7S5E7KWT.js +2 -0
- package/dist/chunk-A3VNUGKJ.js +2 -0
- package/dist/{chunk-ISCKLDSS.js → chunk-A4L36SZS.js} +3 -3
- package/dist/{chunk-IVAIPXNO.js → chunk-AUVBR62P.js} +2 -2
- package/dist/chunk-AW4N6MGC.js +18 -0
- package/dist/{chunk-PG3ZI5IH.js → chunk-B6MJ5VQV.js} +2 -2
- package/dist/chunk-B75HZHUP.js +2 -0
- package/dist/chunk-BGBBVSH4.js +2 -0
- package/dist/chunk-BKDXBJDQ.js +2 -0
- package/dist/{chunk-AQYBOORI.js → chunk-C2QSK7E7.js} +1 -1
- package/dist/chunk-C3MZZ2ZN.js +2 -0
- package/dist/{chunk-AP5GTKSG.js → chunk-CAWSSEVM.js} +2 -2
- package/dist/chunk-CFL2CNIF.js +10 -0
- package/dist/{chunk-4HTJZC6G.js → chunk-CJJP64OC.js} +2 -2
- package/dist/chunk-CNTEQMHA.js +2 -0
- package/dist/{chunk-WEJYUS5O.js → chunk-CRU42NJU.js} +2 -2
- package/dist/chunk-CSWZFD46.js +2 -0
- package/dist/{chunk-ZOT3WUZW.js → chunk-CTCAF3YA.js} +2 -2
- package/dist/chunk-D322LMSA.js +5 -0
- package/dist/{chunk-772YYL6I.js → chunk-DAI74TJU.js} +2 -2
- package/dist/chunk-DE7MA6OD.js +3 -0
- package/dist/chunk-DJMK4DBL.js +2 -0
- package/dist/chunk-DRAZH77R.js +7 -0
- package/dist/{chunk-L2KFPRMA.js → chunk-E44ZMVNA.js} +2 -2
- package/dist/{chunk-BNW3Q24R.js → chunk-E7KERP7E.js} +2 -2
- package/dist/{chunk-QKO474FG.js → chunk-EOZIZWW4.js} +2 -2
- package/dist/chunk-ERHOS6AW.js +2 -0
- package/dist/{chunk-ADRYSISR.js → chunk-ESG4HBEF.js} +2 -2
- package/dist/chunk-EWC3UK4V.js +3 -0
- package/dist/chunk-FGCL6NDB.js +8 -0
- package/dist/chunk-FIB4JPEX.js +2 -0
- package/dist/chunk-FNRPGGVI.js +2 -0
- package/dist/chunk-FOQHUKNZ.js +4 -0
- package/dist/chunk-FPMVCDIJ.js +2 -0
- package/dist/chunk-FUPDW5AC.js +3 -0
- package/dist/chunk-G3WGZU5Q.js +2 -0
- package/dist/chunk-GS33KGAY.js +2 -0
- package/dist/chunk-GZCQTZLK.js +2 -0
- package/dist/{chunk-VGBSY6N7.js → chunk-HVTYSC26.js} +2 -2
- package/dist/{chunk-2BMFRBV6.js → chunk-ICXVNWMI.js} +2 -2
- package/dist/chunk-JM72FNGA.js +2 -0
- package/dist/chunk-KPHKX4LP.js +71 -0
- package/dist/{chunk-6DEX3XP6.js → chunk-LPLGJ4HO.js} +2 -2
- package/dist/chunk-MHK7Z53U.js +2 -0
- package/dist/chunk-MHTDOFV7.js +5 -0
- package/dist/chunk-MUULWXSJ.js +2 -0
- package/dist/chunk-MZ7APUFN.js +3 -0
- package/dist/chunk-NNDYO2DX.js +2 -0
- package/dist/chunk-NP5HYVLX.js +20 -0
- package/dist/{chunk-Y5H7TBVE.js → chunk-NVFERV4U.js} +2 -2
- package/dist/{chunk-LWYIGRHR.js → chunk-NXIAHE7F.js} +1 -1
- package/dist/chunk-O3OKSF6O.js +2 -0
- package/dist/chunk-O4L4AB3T.js +2 -0
- package/dist/chunk-OBBDKQAG.js +3 -0
- package/dist/chunk-OLD6PBU6.js +7 -0
- package/dist/{chunk-V76FCF5F.js → chunk-PFOCOG57.js} +2 -2
- package/dist/chunk-PVZMPG5I.js +2 -0
- package/dist/chunk-QLNGUWR7.js +2 -0
- package/dist/chunk-QSXQT3NE.js +2 -0
- package/dist/{chunk-OLCKSG3Y.js → chunk-QVCCLDZI.js} +2 -2
- package/dist/chunk-RHTJBYZ5.js +2 -0
- package/dist/chunk-SPE4YCOT.js +7 -0
- package/dist/{chunk-FVIKFWUL.js → chunk-TM6GVHA6.js} +2 -2
- package/dist/chunk-TO54DY4O.js +2 -0
- package/dist/chunk-UMNENNTX.js +2 -0
- package/dist/chunk-UNJG7P2I.js +2 -0
- package/dist/{chunk-TKDJQ2WD.js → chunk-UUBMFL3F.js} +1 -1
- package/dist/chunk-VAA5FFIW.js +2 -0
- package/dist/chunk-WDUTG2ZR.js +4 -0
- package/dist/chunk-X7ZY6FFF.js +4 -0
- package/dist/{chunk-BGRPMGTD.js → chunk-YQH353VA.js} +2 -2
- package/dist/chunk-YTR4CO5S.js +38 -0
- package/dist/chunk-YUOAAR24.js +2 -0
- package/dist/{chunk-YWZBKYLS.js → chunk-YYD245WG.js} +2 -2
- package/dist/{chunk-SCEMECW7.js → chunk-Z4VHYJ5U.js} +2 -2
- package/dist/chunk-ZFMPHDAT.js +4 -0
- package/dist/chunk-ZQLO2SCU.js +6 -0
- package/dist/chunk-ZSLT7NWQ.js +61 -0
- package/dist/cli.js +276 -271
- package/dist/{config-types-CGIeLEpY.d.ts → config-types-Bj4sh28g.d.ts} +37 -1
- package/dist/{db-DdTPetj5.d.ts → db-CTarohbZ.d.ts} +1 -1
- package/dist/git-history-Dao3_Pu9.d.ts +12 -0
- package/dist/{health-C6r2VgpA.d.ts → health-Bx0x1HAG.d.ts} +64 -4
- package/dist/index.d.ts +7 -6
- package/dist/index.js +1 -1
- package/dist/postinstall.js +2 -2
- package/dist/queries/affected.d.ts +2 -2
- package/dist/queries/affected.js +1 -1
- package/dist/queries/bottlenecks.d.ts +6 -2
- package/dist/queries/bottlenecks.js +1 -1
- package/dist/queries/by-kind.d.ts +2 -2
- package/dist/queries/by-kind.js +1 -1
- package/dist/queries/call-graph.d.ts +2 -2
- package/dist/queries/call-graph.js +1 -1
- package/dist/queries/change-surface.d.ts +2 -2
- package/dist/queries/change-surface.js +1 -1
- package/dist/queries/cleanup-plan.d.ts +2 -2
- package/dist/queries/cleanup-plan.js +1 -1
- package/dist/queries/co-change.d.ts +40 -5
- package/dist/queries/co-change.js +1 -1
- package/dist/queries/code.d.ts +2 -2
- package/dist/queries/code.js +1 -1
- package/dist/queries/complexity-hotspots.d.ts +2 -2
- package/dist/queries/complexity-hotspots.js +1 -1
- package/dist/queries/complexity.d.ts +2 -2
- package/dist/queries/complexity.js +1 -1
- package/dist/queries/convergence.d.ts +2 -2
- package/dist/queries/convergence.js +1 -1
- package/dist/queries/coupling.d.ts +6 -2
- package/dist/queries/coupling.js +1 -1
- package/dist/queries/cycles.d.ts +2 -2
- package/dist/queries/cycles.js +1 -1
- package/dist/queries/dataflow.d.ts +2 -2
- package/dist/queries/dataflow.js +1 -1
- package/dist/queries/dead.d.ts +10 -3
- package/dist/queries/dead.js +1 -1
- package/dist/queries/deep-chains.d.ts +6 -2
- package/dist/queries/deep-chains.js +1 -1
- package/dist/queries/deps.d.ts +2 -2
- package/dist/queries/deps.js +1 -1
- package/dist/queries/diff-gate.d.ts +66 -3
- package/dist/queries/diff-gate.js +1 -1
- package/dist/queries/diff-impact.d.ts +20 -4
- package/dist/queries/diff-impact.js +1 -1
- package/dist/queries/doc-drift.d.ts +20 -3
- package/dist/queries/doc-drift.js +1 -1
- package/dist/queries/drift.d.ts +10 -3
- package/dist/queries/drift.js +1 -1
- package/dist/queries/extract-candidates.d.ts +11 -3
- package/dist/queries/extract-candidates.js +1 -1
- package/dist/queries/fan.d.ts +2 -2
- package/dist/queries/fan.js +1 -1
- package/dist/queries/files.d.ts +2 -2
- package/dist/queries/files.js +1 -1
- package/dist/queries/health.d.ts +3 -3
- package/dist/queries/health.js +1 -1
- package/dist/queries/hierarchy.d.ts +2 -2
- package/dist/queries/hierarchy.js +1 -1
- package/dist/queries/hotspots.d.ts +2 -2
- package/dist/queries/hotspots.js +1 -1
- package/dist/queries/imports.d.ts +2 -2
- package/dist/queries/imports.js +1 -1
- package/dist/queries/incomplete-migration.d.ts +16 -3
- package/dist/queries/incomplete-migration.js +1 -1
- package/dist/queries/index.d.ts +20 -12
- package/dist/queries/index.js +1 -1
- package/dist/queries/isolated.d.ts +2 -2
- package/dist/queries/isolated.js +1 -1
- package/dist/queries/locality-candidates.d.ts +51 -0
- package/dist/queries/locality-candidates.js +2 -0
- package/dist/queries/members.d.ts +2 -2
- package/dist/queries/members.js +1 -1
- package/dist/queries/methods.d.ts +2 -2
- package/dist/queries/methods.js +1 -1
- package/dist/queries/outline.d.ts +2 -2
- package/dist/queries/outline.js +1 -1
- package/dist/queries/passthrough-candidates.d.ts +8 -3
- package/dist/queries/passthrough-candidates.js +1 -1
- package/dist/queries/plan-context.d.ts +4 -2
- package/dist/queries/plan-context.js +1 -1
- package/dist/queries/react-component-duplicates.d.ts +31 -0
- package/dist/queries/react-component-duplicates.js +2 -0
- package/dist/queries/react-hook-candidates.d.ts +40 -0
- package/dist/queries/react-hook-candidates.js +2 -0
- package/dist/queries/react-large-component-pressure.d.ts +34 -0
- package/dist/queries/react-large-component-pressure.js +2 -0
- package/dist/queries/recent-duplicates.d.ts +32 -3
- package/dist/queries/recent-duplicates.js +1 -1
- package/dist/queries/redundant-reexports.d.ts +7 -3
- package/dist/queries/redundant-reexports.js +1 -1
- package/dist/queries/refs.d.ts +2 -2
- package/dist/queries/refs.js +1 -1
- package/dist/queries/self-audit.d.ts +2 -2
- package/dist/queries/self-audit.js +1 -1
- package/dist/queries/similar-chains.d.ts +2 -2
- package/dist/queries/similar-chains.js +1 -1
- package/dist/queries/similar-files.d.ts +2 -2
- package/dist/queries/similar-files.js +1 -1
- package/dist/queries/similar-signatures.d.ts +2 -2
- package/dist/queries/similar-signatures.js +1 -1
- package/dist/queries/similar.d.ts +21 -3
- package/dist/queries/similar.js +1 -1
- package/dist/queries/slice.d.ts +2 -2
- package/dist/queries/slice.js +1 -1
- package/dist/queries/stale-abstractions.d.ts +10 -3
- package/dist/queries/stale-abstractions.js +1 -1
- package/dist/queries/stats.d.ts +2 -2
- package/dist/queries/stats.js +1 -1
- package/dist/queries/surface.d.ts +2 -2
- package/dist/queries/surface.js +1 -1
- package/dist/queries/symbols.d.ts +2 -2
- package/dist/queries/symbols.js +1 -1
- package/dist/queries/system.d.ts +2 -2
- package/dist/queries/system.js +1 -1
- package/dist/queries/trace.d.ts +2 -2
- package/dist/queries/trace.js +1 -1
- package/dist/queries/unused-imports.d.ts +4 -0
- package/dist/queries/unused-imports.js +2 -0
- package/dist/queries/unused-params.d.ts +2 -2
- package/dist/queries/unused-params.js +1 -1
- package/dist/queries/vue-component-duplicates.d.ts +35 -0
- package/dist/queries/vue-component-duplicates.js +2 -0
- package/dist/queries/vue-composable-candidates.d.ts +40 -0
- package/dist/queries/vue-composable-candidates.js +2 -0
- package/dist/queries/vue-large-view-pressure.d.ts +37 -0
- package/dist/queries/vue-large-view-pressure.js +2 -0
- package/dist/queries/wrapper-candidates.d.ts +6 -3
- package/dist/queries/wrapper-candidates.js +1 -1
- package/dist/reindex-worker.js +10 -10
- package/dist/reindex.d.ts +1 -1
- package/dist/reindex.js +22 -22
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.js +2 -2
- package/docs/AGENT_GUIDE.md +353 -0
- package/docs/AI_FAILURE_MODES.md +278 -0
- package/docs/API.md +40 -0
- package/docs/COMMAND_REFERENCE.md +131 -0
- package/docs/DETECTOR_GUIDE.md +119 -0
- package/docs/accuracy-hardening-goal.md +54 -0
- package/docs/analyzer-inventory.md +162 -0
- package/docs/analyzer-validation-ledger.md +262 -0
- package/docs/analyzer-validation-protocol.md +192 -0
- package/docs/assets/scip-query-logo-dark.svg +21 -0
- package/docs/assets/scip-query-logo.svg +24 -0
- package/docs/locality-analyzer-design.md +193 -0
- package/package.json +44 -5
- package/skills/scip-directory-architecture/SKILL.md +178 -0
- package/skills/scip-maintainability/SKILL.md +24 -3
- package/skills/scip-query/SKILL.md +4 -2
- package/skills/scip-query-setup/SKILL.md +118 -0
- package/skills/scip-react-maintainability/SKILL.md +114 -0
- package/skills/scip-vue-maintainability/SKILL.md +130 -0
- package/dist/chunk-4DAPXOWD.js +0 -2
- package/dist/chunk-4JQFTUKD.js +0 -2
- package/dist/chunk-4MHT7LKP.js +0 -3
- package/dist/chunk-5OHZEO3U.js +0 -3
- package/dist/chunk-5QJIEYFB.js +0 -34
- package/dist/chunk-6IGXZZQ4.js +0 -4
- package/dist/chunk-6K2JQ2VI.js +0 -61
- package/dist/chunk-6QVCPUK6.js +0 -2
- package/dist/chunk-6VL4AIEO.js +0 -8
- package/dist/chunk-A2VTV2QB.js +0 -7
- package/dist/chunk-AI2ECT7L.js +0 -2
- package/dist/chunk-BUAC4Q4G.js +0 -2
- package/dist/chunk-BZ6LCGE6.js +0 -2
- package/dist/chunk-CMXFASVD.js +0 -2
- package/dist/chunk-CO3AL7NZ.js +0 -2
- package/dist/chunk-FVVT7GV6.js +0 -4
- package/dist/chunk-HXXRN77A.js +0 -2
- package/dist/chunk-IC3RC3KJ.js +0 -4
- package/dist/chunk-ITHQJZTG.js +0 -2
- package/dist/chunk-IW7ASGVF.js +0 -2
- package/dist/chunk-JODYQDE4.js +0 -2
- package/dist/chunk-MCW36F2D.js +0 -2
- package/dist/chunk-MX6F756F.js +0 -2
- package/dist/chunk-NGI4V4AB.js +0 -18
- package/dist/chunk-O6KCZPJQ.js +0 -62
- package/dist/chunk-OAI5GEIN.js +0 -6
- package/dist/chunk-OH5HIAID.js +0 -4
- package/dist/chunk-OXKEUWMJ.js +0 -2
- package/dist/chunk-PBGTMPJ7.js +0 -2
- package/dist/chunk-PRVDXGSK.js +0 -2
- package/dist/chunk-QYKKTYBN.js +0 -6
- package/dist/chunk-R3G6ERW7.js +0 -7
- package/dist/chunk-R6XDPWJA.js +0 -10
- package/dist/chunk-SJR4SB7B.js +0 -2
- package/dist/chunk-SYKCO25G.js +0 -16
- package/dist/chunk-T22X7WT6.js +0 -2
- package/dist/chunk-TH4JVC34.js +0 -71
- package/dist/chunk-VDY4HYNK.js +0 -2
- package/dist/chunk-VDZIEDJB.js +0 -2
- package/dist/chunk-VDZL45XI.js +0 -2
- package/dist/chunk-WJIS6BNI.js +0 -3
- package/dist/chunk-WN5Z3UVT.js +0 -7
- package/dist/chunk-XCW7DYHM.js +0 -2
- package/dist/chunk-ZF6P2NAT.js +0 -63
- package/dist/chunk-ZGIK464P.js +0 -2
|
@@ -58,6 +58,12 @@ interface ScipQueryConfig {
|
|
|
58
58
|
gitignorePaths?: string[];
|
|
59
59
|
/** Optional semantic-provider configuration */
|
|
60
60
|
semantic?: SemanticConfig;
|
|
61
|
+
/** Machine-readable accepted findings. */
|
|
62
|
+
suppressions?: FindingSuppression[];
|
|
63
|
+
/** Project-declared file groups that intentionally change together. */
|
|
64
|
+
declaredCouplings?: DeclaredCouplingConfig[];
|
|
65
|
+
/** Optional analyzer configuration. */
|
|
66
|
+
locality?: LocalityConfig;
|
|
61
67
|
}
|
|
62
68
|
interface ProjectConfig {
|
|
63
69
|
/** Override which languages to index (default: auto-detect) */
|
|
@@ -72,6 +78,36 @@ interface ProjectConfig {
|
|
|
72
78
|
entryRoots?: EntryRootsConfig;
|
|
73
79
|
/** Optional semantic-provider configuration */
|
|
74
80
|
semantic?: SemanticConfig;
|
|
81
|
+
/** Machine-readable accepted findings. */
|
|
82
|
+
suppressions?: FindingSuppression[];
|
|
83
|
+
/** Project-declared file groups that intentionally change together. */
|
|
84
|
+
declaredCouplings?: DeclaredCouplingConfig[];
|
|
85
|
+
/** Optional locality analyzer configuration. */
|
|
86
|
+
locality?: LocalityConfig;
|
|
87
|
+
}
|
|
88
|
+
interface LocalityConfig {
|
|
89
|
+
/** Folder names that should be treated as architectural ownership boundaries. */
|
|
90
|
+
architecturalBoundarySegments?: string[];
|
|
91
|
+
}
|
|
92
|
+
interface DeclaredCouplingConfig {
|
|
93
|
+
/** Human-readable name for the maintenance unit. */
|
|
94
|
+
name: string;
|
|
95
|
+
/** Exact relative file paths that form one intentional co-change group. */
|
|
96
|
+
files: string[];
|
|
97
|
+
/** Human reason for why these files should move together. */
|
|
98
|
+
reason?: string;
|
|
99
|
+
}
|
|
100
|
+
interface FindingSuppression {
|
|
101
|
+
/** Stable finding id, for example SQABC123DEF456. */
|
|
102
|
+
id?: string;
|
|
103
|
+
/** Detector/check name, for example diff-gate's "echo". */
|
|
104
|
+
check?: string;
|
|
105
|
+
/** Optional file path to narrow check-level suppressions. */
|
|
106
|
+
file?: string;
|
|
107
|
+
/** Human reason for accepting the finding. Required by config validation. */
|
|
108
|
+
reason: string;
|
|
109
|
+
/** ISO date after which the suppression no longer applies. */
|
|
110
|
+
expiresAt?: string;
|
|
75
111
|
}
|
|
76
112
|
interface SemanticConfig {
|
|
77
113
|
typescript?: TypeScriptSemanticConfig;
|
|
@@ -105,4 +141,4 @@ interface IndexerOverrides {
|
|
|
105
141
|
pnpmWorkspaces?: boolean;
|
|
106
142
|
}
|
|
107
143
|
|
|
108
|
-
export type { IndexerConfig as I, ProjectConfig as P, ScipQueryConfig as S, SupportedLanguage as a };
|
|
144
|
+
export type { FindingSuppression as F, IndexerConfig as I, ProjectConfig as P, ScipQueryConfig as S, SupportedLanguage as a };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
type CoChangeCommitScope = 'focused' | 'mixed' | 'broad-sweep';
|
|
2
|
+
type CoChangeRecency = 'recent' | 'stale';
|
|
3
|
+
type CoChangeExternalIssueLabelStatus = 'unavailable';
|
|
4
|
+
interface CoChangeSubjectContext {
|
|
5
|
+
/** Locally inferred from commit subjects, not issue tracker metadata. */
|
|
6
|
+
subjectLabels: string[];
|
|
7
|
+
issueRefs: string[];
|
|
8
|
+
sampleSubjects: string[];
|
|
9
|
+
externalIssueLabelStatus: CoChangeExternalIssueLabelStatus;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export type { CoChangeCommitScope as C, CoChangeRecency as a, CoChangeSubjectContext as b };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as ScipDatabase } from './db-
|
|
1
|
+
import { S as ScipDatabase } from './db-CTarohbZ.js';
|
|
2
2
|
import { stats } from './queries/stats.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -12,7 +12,10 @@ interface ChangeAmplificationSummary {
|
|
|
12
12
|
commitsAnalyzed: number;
|
|
13
13
|
}
|
|
14
14
|
interface CountLocSummary {
|
|
15
|
+
/** Raw finding count reported to users. */
|
|
15
16
|
count: number;
|
|
17
|
+
/** Score-pressure count; lower than count when findings are broad discovery leads. */
|
|
18
|
+
scoreCount?: number;
|
|
16
19
|
loc: number;
|
|
17
20
|
/** Files contributing findings — feeds fix-density validation. */
|
|
18
21
|
files?: string[];
|
|
@@ -25,6 +28,8 @@ interface DriftSummary {
|
|
|
25
28
|
count: number;
|
|
26
29
|
unusedImports: number;
|
|
27
30
|
layerViolations: number;
|
|
31
|
+
direct: number;
|
|
32
|
+
signal: number;
|
|
28
33
|
}
|
|
29
34
|
interface ComplexitySummary {
|
|
30
35
|
top: Array<{
|
|
@@ -38,11 +43,26 @@ interface GitEvidenceSummary {
|
|
|
38
43
|
amplification: ChangeAmplificationSummary | null;
|
|
39
44
|
hiddenCoupling: {
|
|
40
45
|
pairCount: number;
|
|
46
|
+
scoreCount: number;
|
|
41
47
|
top: Array<{
|
|
42
48
|
fileA: string;
|
|
43
49
|
fileB: string;
|
|
44
50
|
together: number;
|
|
45
51
|
confidence: number;
|
|
52
|
+
focusedTogether: number;
|
|
53
|
+
broadTogether: number;
|
|
54
|
+
broadCommitRatio: number;
|
|
55
|
+
lastTogetherAt: number;
|
|
56
|
+
recentTogether: number;
|
|
57
|
+
commitScope: 'focused' | 'mixed' | 'broad-sweep';
|
|
58
|
+
recency: 'recent' | 'stale';
|
|
59
|
+
scoreWeight: number;
|
|
60
|
+
subjectContext: {
|
|
61
|
+
subjectLabels: string[];
|
|
62
|
+
issueRefs: string[];
|
|
63
|
+
sampleSubjects: string[];
|
|
64
|
+
externalIssueLabelStatus: 'unavailable';
|
|
65
|
+
};
|
|
46
66
|
}>;
|
|
47
67
|
};
|
|
48
68
|
/** Per-file change counts over the analyzed window (tracked files only). */
|
|
@@ -75,6 +95,15 @@ interface ScoreDeduction {
|
|
|
75
95
|
/** Risk deductions are empirically validated predictors; hygiene are tidiness signals. */
|
|
76
96
|
kind: 'risk' | 'hygiene';
|
|
77
97
|
}
|
|
98
|
+
interface HealthPressure {
|
|
99
|
+
axis: string;
|
|
100
|
+
category: string;
|
|
101
|
+
kind: ScoreDeduction['kind'];
|
|
102
|
+
count: number;
|
|
103
|
+
threshold: number;
|
|
104
|
+
ratio: number;
|
|
105
|
+
extraPenalty: number;
|
|
106
|
+
}
|
|
78
107
|
interface HealthAxes {
|
|
79
108
|
/** LOC provably removable with behavior preserved (dead + isolated). */
|
|
80
109
|
deletable: {
|
|
@@ -86,14 +115,16 @@ interface HealthAxes {
|
|
|
86
115
|
};
|
|
87
116
|
/** Files touched per commit — the measured cost of one conceptual change. */
|
|
88
117
|
changeAmplification: ChangeAmplificationSummary | null;
|
|
89
|
-
/** File pairs that co-change without a
|
|
118
|
+
/** File pairs that co-change without a structural link — concepts the visible graph can't see. */
|
|
90
119
|
hiddenCoupling: {
|
|
91
120
|
pairCount: number;
|
|
121
|
+
scoreCount: number;
|
|
92
122
|
top: Array<{
|
|
93
123
|
fileA: string;
|
|
94
124
|
fileB: string;
|
|
95
125
|
together: number;
|
|
96
126
|
confidence: number;
|
|
127
|
+
scoreWeight?: number;
|
|
97
128
|
}>;
|
|
98
129
|
} | null;
|
|
99
130
|
/** Complexity hotspots weighted by churn — complex code nobody touches costs nothing. */
|
|
@@ -145,13 +176,23 @@ interface HealthReport {
|
|
|
145
176
|
isolatedLoc: number;
|
|
146
177
|
cycles: number;
|
|
147
178
|
similarPairs: number;
|
|
179
|
+
reactComponentDuplicatePairs: number;
|
|
180
|
+
reactHookCandidatePairs: number;
|
|
181
|
+
reactHookCandidateScoreCount: number;
|
|
182
|
+
reactLargeComponentPressureFiles: number;
|
|
183
|
+
vueComponentDuplicatePairs: number;
|
|
184
|
+
vueComposableCandidatePairs: number;
|
|
185
|
+
vueComposableCandidateScoreCount: number;
|
|
186
|
+
vueLargeViewPressureFiles: number;
|
|
148
187
|
extractionCandidates: number;
|
|
149
188
|
wrappers: number;
|
|
189
|
+
wrapperScoreCount: number;
|
|
150
190
|
passthroughs: number;
|
|
151
191
|
staleTypes: number;
|
|
152
192
|
driftedFiles: number;
|
|
153
193
|
complexityHotspotCount: number;
|
|
154
194
|
hiddenCouplingPairs: number | null;
|
|
195
|
+
hiddenCouplingScoreCount: number | null;
|
|
155
196
|
};
|
|
156
197
|
axes: HealthAxes;
|
|
157
198
|
validation: HealthValidation | null;
|
|
@@ -160,6 +201,7 @@ interface HealthReport {
|
|
|
160
201
|
byCategory: Record<string, number>;
|
|
161
202
|
} | null;
|
|
162
203
|
actions: HealthAction[];
|
|
204
|
+
pressure: HealthPressure[];
|
|
163
205
|
topComplexity: Array<{
|
|
164
206
|
symbol: string;
|
|
165
207
|
score: number;
|
|
@@ -168,8 +210,8 @@ interface HealthReport {
|
|
|
168
210
|
warnings?: string[];
|
|
169
211
|
}
|
|
170
212
|
|
|
171
|
-
declare const HEALTH_PHASES: readonly ["overview", "dead", "isolated", "cycles", "similar", "extract-candidates", "wrapper-candidates", "passthrough-candidates", "stale-abstractions", "drift", "complexity-hotspots", "git-evidence", "suppressions"];
|
|
172
|
-
type HealthPhaseName = typeof HEALTH_PHASES[number];
|
|
213
|
+
declare const HEALTH_PHASES: readonly ["overview", "dead", "isolated", "cycles", "similar", "react-component-duplicates", "react-hook-candidates", "react-large-component-pressure", "vue-component-duplicates", "vue-composable-candidates", "vue-large-view-pressure", "extract-candidates", "wrapper-candidates", "passthrough-candidates", "stale-abstractions", "drift", "complexity-hotspots", "git-evidence", "suppressions"];
|
|
214
|
+
type HealthPhaseName = (typeof HEALTH_PHASES)[number];
|
|
173
215
|
type HealthPhaseResult = {
|
|
174
216
|
phase: 'overview';
|
|
175
217
|
statsResult: ReturnType<typeof stats>;
|
|
@@ -186,6 +228,24 @@ type HealthPhaseResult = {
|
|
|
186
228
|
} | {
|
|
187
229
|
phase: 'similar';
|
|
188
230
|
similarCount: number;
|
|
231
|
+
} | {
|
|
232
|
+
phase: 'react-component-duplicates';
|
|
233
|
+
reactComponentDuplicates: CountLocSummary;
|
|
234
|
+
} | {
|
|
235
|
+
phase: 'react-hook-candidates';
|
|
236
|
+
reactHookCandidates: CountLocSummary;
|
|
237
|
+
} | {
|
|
238
|
+
phase: 'react-large-component-pressure';
|
|
239
|
+
reactLargeComponentPressure: CountLocSummary;
|
|
240
|
+
} | {
|
|
241
|
+
phase: 'vue-component-duplicates';
|
|
242
|
+
vueComponentDuplicates: CountLocSummary;
|
|
243
|
+
} | {
|
|
244
|
+
phase: 'vue-composable-candidates';
|
|
245
|
+
vueComposableCandidates: CountLocSummary;
|
|
246
|
+
} | {
|
|
247
|
+
phase: 'vue-large-view-pressure';
|
|
248
|
+
vueLargeViewPressure: CountLocSummary;
|
|
189
249
|
} | {
|
|
190
250
|
phase: 'extract-candidates';
|
|
191
251
|
extractCount: number;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as ScipDatabase } from './db-
|
|
2
|
-
export { c as createGitignoreFilter } from './db-
|
|
3
|
-
export { S as ScipQueryConfig } from './config-types-
|
|
1
|
+
import { S as ScipDatabase } from './db-CTarohbZ.js';
|
|
2
|
+
export { c as createGitignoreFilter } from './db-CTarohbZ.js';
|
|
3
|
+
export { S as ScipQueryConfig } from './config-types-Bj4sh28g.js';
|
|
4
4
|
import 'better-sqlite3';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -199,7 +199,7 @@ interface SourceReferenceResolveContext {
|
|
|
199
199
|
}
|
|
200
200
|
declare function scanSourceReferences(db: ScipDatabase, opts: ScanSourceReferencesOptions, visit: (hit: SourceReferenceHit) => void): void;
|
|
201
201
|
|
|
202
|
-
|
|
202
|
+
declare function productionCallableDefinitions(db: ScipDatabase, opts?: {
|
|
203
203
|
scope?: string;
|
|
204
204
|
minLoc?: number;
|
|
205
205
|
maxLoc?: number;
|
|
@@ -217,13 +217,14 @@ interface ProductionCallableDefinitionsOptions {
|
|
|
217
217
|
requireFunctionLikeSymbol?: boolean;
|
|
218
218
|
requireCallableSymbol?: boolean;
|
|
219
219
|
sortByLocDesc?: boolean;
|
|
220
|
-
}
|
|
220
|
+
}): IndexedDefinition[];
|
|
221
|
+
|
|
221
222
|
declare class ProjectIndex {
|
|
222
223
|
private readonly db;
|
|
223
224
|
constructor(db: ScipDatabase);
|
|
224
225
|
scopedDefinitions(scope?: string): IndexedDefinition[];
|
|
225
226
|
definitionsForFile(relativePath: string): IndexedDefinition[];
|
|
226
|
-
productionCallableDefinitions(opts?:
|
|
227
|
+
productionCallableDefinitions(opts?: NonNullable<Parameters<typeof productionCallableDefinitions>[1]>): IndexedDefinition[];
|
|
227
228
|
calleeMap(definitions: ReadonlyArray<SymbolMatch>, opts?: {
|
|
228
229
|
additive?: boolean;
|
|
229
230
|
semantic?: boolean;
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a}from"./chunk-
|
|
1
|
+
import{a}from"./chunk-UUBMFL3F.js";import{a as s}from"./chunk-3ZYF3ELZ.js";import"./chunk-ZQLO2SCU.js";import"./chunk-BGBBVSH4.js";import"./chunk-GZCQTZLK.js";import"./chunk-YTR4CO5S.js";import"./chunk-HVTYSC26.js";import"./chunk-FUPDW5AC.js";import"./chunk-MZ7APUFN.js";import"./chunk-AUVBR62P.js";import"./chunk-FOQHUKNZ.js";import"./chunk-CRU42NJU.js";import"./chunk-3UW7VM4H.js";import{a as i,c as n,d as l}from"./chunk-JM72FNGA.js";import"./chunk-QLNGUWR7.js";import"./chunk-ERHOS6AW.js";import"./chunk-EWC3UK4V.js";import"./chunk-D322LMSA.js";import"./chunk-A4L36SZS.js";import"./chunk-OBBDKQAG.js";import"./chunk-64MNV6AB.js";import"./chunk-7S5E7KWT.js";import c from"better-sqlite3";var d=["node_modules",".git","dist","build","out","coverage","target",".next",".nuxt",".cache",".turbo",".scipquery-cache","__pycache__",".venv","venv"],o=class{db;config;pathFilter;constructor(t,e){this.config=t,this.pathFilter=e??null,this.db=new c(t.dbPath,{readonly:!0}),this.db.pragma("busy_timeout = 5000")}isIgnored(t){return this.pathFilter?.isIgnored(t)??!1}get localSymbolPredicate(){return`(
|
|
2
2
|
EXISTS (
|
|
3
3
|
SELECT 1
|
|
4
4
|
FROM defn_enclosing_ranges local_der
|
package/dist/postinstall.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{b as k,c as g,d as f,e as m}from"./chunk-
|
|
3
|
-
${
|
|
2
|
+
import{b as k,c as g,d as f,e as m}from"./chunk-NXIAHE7F.js";import{existsSync as p,mkdirSync as L,symlinkSync as b,readlinkSync as v,unlinkSync as q}from"fs";import{join as l,dirname as y,resolve as d}from"path";import{homedir as u,platform as C}from"os";import{fileURLToPath as N}from"url";var R=C()==="win32",T=["scip-query","scip-query-setup","concrete-plan","scip-ai-cleanup","scip-explore","scip-debloat","scip-doc-reconcile","scip-directory-architecture","scip-maintainability","scip-react-maintainability","scip-vue-maintainability","scip-verify","scip-language-playbook"];function A(i={}){let e=i.quiet?()=>{}:console.log,o=N(import.meta.url),I=d(y(o),"..","skills"),$=[l(u(),".claude","skills"),l(u(),".codex","skills"),l(u(),".agents","skills")],s={installed:[],skipped:[],alreadyLinked:[]};for(let r of $){let h=y(r);if(!p(h))continue;L(r,{recursive:!0});let t=j(r);for(let n of T){let a=l(I,n),c=l(r,n);if(!p(a)){s.skipped.push(`${t}/${n}`);continue}if(p(c)){try{let x=v(c);if(d(x)===d(a)){s.alreadyLinked.push(`${t}/${n}`),e(` ok: ${n} \u2192 ${t} (already linked)`);continue}}catch{s.skipped.push(`${t}/${n}`),e(` skip: ${n} \u2192 ${t} (exists, not a symlink)`);continue}q(c)}b(a,c,R?"junction":"dir"),s.installed.push(`${t}/${n}`),e(` done: ${n} \u2192 ${t}`)}}return s}function j(i){return i.includes(".codex")?"Codex":i.includes(".agents")?"Agents":"Claude"}function S(){console.log("scip-query: installing skills...");let i=A({quiet:!1});if(i.installed.length+i.alreadyLinked.length>0&&console.log(`
|
|
3
|
+
${i.installed.length} skill(s) installed, ${i.alreadyLinked.length} already linked.`),!k())console.log(`
|
|
4
4
|
scip CLI not found on PATH. Attempting auto-install...`),m(console.log)||f();else{let o=g();console.log(`
|
|
5
5
|
scip CLI: ${o??"installed"}`)}console.log("")}S();
|
|
6
6
|
//# sourceMappingURL=postinstall.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as ScipDatabase } from '../db-
|
|
1
|
+
import { S as ScipDatabase } from '../db-CTarohbZ.js';
|
|
2
2
|
import 'better-sqlite3';
|
|
3
|
-
import '../config-types-
|
|
3
|
+
import '../config-types-Bj4sh28g.js';
|
|
4
4
|
|
|
5
5
|
interface AffectedResult {
|
|
6
6
|
symbol: string;
|
package/dist/queries/affected.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-CFL2CNIF.js";import"../chunk-GZCQTZLK.js";import"../chunk-YTR4CO5S.js";import"../chunk-HVTYSC26.js";import"../chunk-FUPDW5AC.js";import"../chunk-MZ7APUFN.js";import"../chunk-AUVBR62P.js";import"../chunk-FOQHUKNZ.js";import"../chunk-CRU42NJU.js";import"../chunk-3UW7VM4H.js";import"../chunk-JM72FNGA.js";import"../chunk-QLNGUWR7.js";import"../chunk-ERHOS6AW.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-A4L36SZS.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as affected};
|
|
2
2
|
//# sourceMappingURL=affected.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as ScipDatabase } from '../db-
|
|
1
|
+
import { S as ScipDatabase } from '../db-CTarohbZ.js';
|
|
2
2
|
import 'better-sqlite3';
|
|
3
|
-
import '../config-types-
|
|
3
|
+
import '../config-types-Bj4sh28g.js';
|
|
4
4
|
|
|
5
5
|
interface BottleneckResult {
|
|
6
6
|
symbol: string;
|
|
@@ -10,6 +10,10 @@ interface BottleneckResult {
|
|
|
10
10
|
/** fanIn * fanOut — higher = more central coupling hub */
|
|
11
11
|
score: number;
|
|
12
12
|
definedIn: string;
|
|
13
|
+
actionTier: 'signal';
|
|
14
|
+
riskKind: 'coordination-hotspot';
|
|
15
|
+
evidenceReasons: string[];
|
|
16
|
+
recommendation: string;
|
|
13
17
|
}
|
|
14
18
|
/**
|
|
15
19
|
* Find coupling hubs: symbols with both high fan-in (many consumers)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-MUULWXSJ.js";import"../chunk-B75HZHUP.js";import"../chunk-3ZYF3ELZ.js";import"../chunk-ZQLO2SCU.js";import"../chunk-BGBBVSH4.js";import"../chunk-GZCQTZLK.js";import"../chunk-YTR4CO5S.js";import"../chunk-HVTYSC26.js";import"../chunk-FUPDW5AC.js";import"../chunk-MZ7APUFN.js";import"../chunk-AUVBR62P.js";import"../chunk-FOQHUKNZ.js";import"../chunk-CRU42NJU.js";import"../chunk-3UW7VM4H.js";import"../chunk-JM72FNGA.js";import"../chunk-QLNGUWR7.js";import"../chunk-ERHOS6AW.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-A4L36SZS.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as bottlenecks};
|
|
2
2
|
//# sourceMappingURL=bottlenecks.js.map
|
package/dist/queries/by-kind.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a,b}from"../chunk-
|
|
1
|
+
import{a,b}from"../chunk-BKDXBJDQ.js";import"../chunk-3UW7VM4H.js";import"../chunk-JM72FNGA.js";import"../chunk-QLNGUWR7.js";import"../chunk-ERHOS6AW.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-A4L36SZS.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as byKind,b as kindCounts};
|
|
2
2
|
//# sourceMappingURL=by-kind.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as ScipDatabase } from '../db-
|
|
1
|
+
import { S as ScipDatabase } from '../db-CTarohbZ.js';
|
|
2
2
|
import 'better-sqlite3';
|
|
3
|
-
import '../config-types-
|
|
3
|
+
import '../config-types-Bj4sh28g.js';
|
|
4
4
|
|
|
5
5
|
interface CallGraphResult {
|
|
6
6
|
symbol: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-Z4VHYJ5U.js";import"../chunk-B75HZHUP.js";import"../chunk-BGBBVSH4.js";import"../chunk-GZCQTZLK.js";import"../chunk-YTR4CO5S.js";import"../chunk-HVTYSC26.js";import"../chunk-FUPDW5AC.js";import"../chunk-MZ7APUFN.js";import"../chunk-AUVBR62P.js";import"../chunk-FOQHUKNZ.js";import"../chunk-CRU42NJU.js";import"../chunk-3UW7VM4H.js";import"../chunk-JM72FNGA.js";import"../chunk-QLNGUWR7.js";import"../chunk-ERHOS6AW.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-A4L36SZS.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as callGraph};
|
|
2
2
|
//# sourceMappingURL=call-graph.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as ScipDatabase } from '../db-
|
|
1
|
+
import { S as ScipDatabase } from '../db-CTarohbZ.js';
|
|
2
2
|
import 'better-sqlite3';
|
|
3
|
-
import '../config-types-
|
|
3
|
+
import '../config-types-Bj4sh28g.js';
|
|
4
4
|
|
|
5
5
|
interface ChangeSurfaceEntry {
|
|
6
6
|
symbol: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-TM6GVHA6.js";import"../chunk-CTCAF3YA.js";import"../chunk-3ZYF3ELZ.js";import"../chunk-ZQLO2SCU.js";import"../chunk-BGBBVSH4.js";import"../chunk-GZCQTZLK.js";import"../chunk-YTR4CO5S.js";import"../chunk-HVTYSC26.js";import"../chunk-FUPDW5AC.js";import"../chunk-MZ7APUFN.js";import"../chunk-AUVBR62P.js";import"../chunk-FOQHUKNZ.js";import"../chunk-CRU42NJU.js";import"../chunk-3UW7VM4H.js";import"../chunk-JM72FNGA.js";import"../chunk-QLNGUWR7.js";import"../chunk-ERHOS6AW.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-A4L36SZS.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as changeSurface};
|
|
2
2
|
//# sourceMappingURL=change-surface.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as ScipDatabase } from '../db-
|
|
1
|
+
import { S as ScipDatabase } from '../db-CTarohbZ.js';
|
|
2
2
|
import 'better-sqlite3';
|
|
3
|
-
import '../config-types-
|
|
3
|
+
import '../config-types-Bj4sh28g.js';
|
|
4
4
|
|
|
5
5
|
interface CleanupPlanEntry {
|
|
6
6
|
symbol: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a,b}from"../chunk-
|
|
1
|
+
import{a,b}from"../chunk-OLD6PBU6.js";import"../chunk-C3MZZ2ZN.js";import"../chunk-B75HZHUP.js";import"../chunk-3ZYF3ELZ.js";import"../chunk-ZQLO2SCU.js";import"../chunk-BGBBVSH4.js";import"../chunk-GZCQTZLK.js";import"../chunk-YTR4CO5S.js";import"../chunk-HVTYSC26.js";import"../chunk-FUPDW5AC.js";import"../chunk-MZ7APUFN.js";import"../chunk-AUVBR62P.js";import"../chunk-FOQHUKNZ.js";import"../chunk-CRU42NJU.js";import"../chunk-3UW7VM4H.js";import"../chunk-JM72FNGA.js";import"../chunk-QLNGUWR7.js";import"../chunk-ERHOS6AW.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-A4L36SZS.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{b as RemovedRangeIndex,a as cleanupPlan};
|
|
2
2
|
//# sourceMappingURL=cleanup-plan.js.map
|
|
@@ -1,7 +1,27 @@
|
|
|
1
|
-
import { S as ScipDatabase } from '../db-
|
|
1
|
+
import { S as ScipDatabase } from '../db-CTarohbZ.js';
|
|
2
|
+
import { C as CoChangeCommitScope, a as CoChangeRecency, b as CoChangeSubjectContext } from '../git-history-Dao3_Pu9.js';
|
|
2
3
|
import 'better-sqlite3';
|
|
3
|
-
import '../config-types-
|
|
4
|
+
import '../config-types-Bj4sh28g.js';
|
|
4
5
|
|
|
6
|
+
type CoChangePartnerClass = 'doc-code' | 'config-code' | 'schema-script' | 'model-view' | 'test-code' | 'same-feature' | 'unknown';
|
|
7
|
+
interface CoChangePartnerClassification {
|
|
8
|
+
partnerClass: CoChangePartnerClass;
|
|
9
|
+
reasons: string[];
|
|
10
|
+
}
|
|
11
|
+
interface DeclaredCouplingSuggestion {
|
|
12
|
+
name: string;
|
|
13
|
+
files: string[];
|
|
14
|
+
reason: string;
|
|
15
|
+
}
|
|
16
|
+
interface CoChangePairEvidence {
|
|
17
|
+
fileA: string;
|
|
18
|
+
fileB: string;
|
|
19
|
+
together: number;
|
|
20
|
+
confidence: number;
|
|
21
|
+
commitScope?: CoChangeCommitScope;
|
|
22
|
+
recency?: CoChangeRecency;
|
|
23
|
+
subjectContext?: CoChangeSubjectContext;
|
|
24
|
+
}
|
|
5
25
|
interface CoChangeFinding {
|
|
6
26
|
fileA: string;
|
|
7
27
|
fileB: string;
|
|
@@ -11,8 +31,19 @@ interface CoChangeFinding {
|
|
|
11
31
|
confidence: number;
|
|
12
32
|
changesA: number;
|
|
13
33
|
changesB: number;
|
|
14
|
-
|
|
34
|
+
focusedTogether: number;
|
|
35
|
+
broadTogether: number;
|
|
36
|
+
broadCommitRatio: number;
|
|
37
|
+
lastTogetherAt: number;
|
|
38
|
+
recentTogether: number;
|
|
39
|
+
commitScope: CoChangeCommitScope;
|
|
40
|
+
recency: CoChangeRecency;
|
|
41
|
+
subjectContext: CoChangeSubjectContext;
|
|
42
|
+
/** True when a dependency edge or declared coupling already explains the pair. */
|
|
15
43
|
structurallyLinked: boolean;
|
|
44
|
+
partnerClass: CoChangePartnerClass;
|
|
45
|
+
partnerClassReasons: string[];
|
|
46
|
+
declaredCouplingSuggestion?: DeclaredCouplingSuggestion;
|
|
16
47
|
}
|
|
17
48
|
interface CoChangeResult {
|
|
18
49
|
/** False when git history is unavailable (not a repo, git missing). */
|
|
@@ -23,7 +54,7 @@ interface CoChangeResult {
|
|
|
23
54
|
declare function isCoChangeNoiseFile(file: string): boolean;
|
|
24
55
|
/**
|
|
25
56
|
* Hidden coupling from the change graph: file pairs that repeatedly change
|
|
26
|
-
* in the same commits but have
|
|
57
|
+
* in the same commits but have no structural link between them.
|
|
27
58
|
*
|
|
28
59
|
* The reference graph cannot see that two mechanisms implement one concept —
|
|
29
60
|
* a config list and the test that checks it share no symbols. The commit
|
|
@@ -37,6 +68,10 @@ declare function coChange(db: ScipDatabase, file?: string, opts?: {
|
|
|
37
68
|
minConfidence?: number;
|
|
38
69
|
limit?: number;
|
|
39
70
|
includeLinked?: boolean;
|
|
71
|
+
maxFilesPerCommit?: number;
|
|
40
72
|
}): CoChangeResult;
|
|
73
|
+
declare function classifyCoChangePartner(fileA: string, fileB: string): CoChangePartnerClassification;
|
|
74
|
+
declare function declaredCouplingSuggestionForPair(pair: CoChangePairEvidence, classification: CoChangePartnerClassification, structurallyLinked: boolean): DeclaredCouplingSuggestion | undefined;
|
|
75
|
+
declare function coChangeStructuralLinkChecker(db: ScipDatabase, graph?: Map<string, Set<string>>, declaredCouplings?: ReadonlySet<string>[]): (fileA: string, fileB: string) => boolean;
|
|
41
76
|
|
|
42
|
-
export { type CoChangeFinding, type CoChangeResult, coChange, isCoChangeNoiseFile };
|
|
77
|
+
export { type CoChangeFinding, type CoChangePairEvidence, type CoChangePartnerClass, type CoChangePartnerClassification, type CoChangeResult, type DeclaredCouplingSuggestion, classifyCoChangePartner, coChange, coChangeStructuralLinkChecker, declaredCouplingSuggestionForPair, isCoChangeNoiseFile };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a,b}from"../chunk-
|
|
1
|
+
import{a,b,c,d,e}from"../chunk-CNTEQMHA.js";import"../chunk-DRAZH77R.js";import"../chunk-ZQLO2SCU.js";import"../chunk-AUVBR62P.js";import"../chunk-FOQHUKNZ.js";import"../chunk-CRU42NJU.js";import"../chunk-JM72FNGA.js";import"../chunk-QLNGUWR7.js";import"../chunk-ERHOS6AW.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-A4L36SZS.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{c as classifyCoChangePartner,b as coChange,e as coChangeStructuralLinkChecker,d as declaredCouplingSuggestionForPair,a as isCoChangeNoiseFile};
|
|
2
2
|
//# sourceMappingURL=co-change.js.map
|
package/dist/queries/code.d.ts
CHANGED
package/dist/queries/code.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-LPLGJ4HO.js";import"../chunk-CTCAF3YA.js";import"../chunk-MZ7APUFN.js";import"../chunk-3UW7VM4H.js";import"../chunk-JM72FNGA.js";import"../chunk-QLNGUWR7.js";import"../chunk-ERHOS6AW.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-A4L36SZS.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as code};
|
|
2
2
|
//# sourceMappingURL=code.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as ScipDatabase } from '../db-
|
|
1
|
+
import { S as ScipDatabase } from '../db-CTarohbZ.js';
|
|
2
2
|
import 'better-sqlite3';
|
|
3
|
-
import '../config-types-
|
|
3
|
+
import '../config-types-Bj4sh28g.js';
|
|
4
4
|
|
|
5
5
|
interface ComplexityHotspot {
|
|
6
6
|
symbol: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-DAI74TJU.js";import"../chunk-PFOCOG57.js";import"../chunk-B75HZHUP.js";import"../chunk-3ZYF3ELZ.js";import"../chunk-ZQLO2SCU.js";import"../chunk-BGBBVSH4.js";import"../chunk-GZCQTZLK.js";import"../chunk-YTR4CO5S.js";import"../chunk-HVTYSC26.js";import"../chunk-FUPDW5AC.js";import"../chunk-MZ7APUFN.js";import"../chunk-AUVBR62P.js";import"../chunk-FOQHUKNZ.js";import"../chunk-CRU42NJU.js";import"../chunk-3UW7VM4H.js";import"../chunk-JM72FNGA.js";import"../chunk-QLNGUWR7.js";import"../chunk-ERHOS6AW.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-A4L36SZS.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as complexityHotspots};
|
|
2
2
|
//# sourceMappingURL=complexity-hotspots.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as ScipDatabase } from '../db-
|
|
1
|
+
import { S as ScipDatabase } from '../db-CTarohbZ.js';
|
|
2
2
|
import 'better-sqlite3';
|
|
3
|
-
import '../config-types-
|
|
3
|
+
import '../config-types-Bj4sh28g.js';
|
|
4
4
|
|
|
5
5
|
interface ComplexityResult {
|
|
6
6
|
symbol: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-ESG4HBEF.js";import"../chunk-3ZYF3ELZ.js";import"../chunk-ZQLO2SCU.js";import"../chunk-BGBBVSH4.js";import"../chunk-GZCQTZLK.js";import"../chunk-YTR4CO5S.js";import"../chunk-HVTYSC26.js";import"../chunk-FUPDW5AC.js";import"../chunk-MZ7APUFN.js";import"../chunk-AUVBR62P.js";import"../chunk-FOQHUKNZ.js";import"../chunk-CRU42NJU.js";import"../chunk-3UW7VM4H.js";import"../chunk-JM72FNGA.js";import"../chunk-QLNGUWR7.js";import"../chunk-ERHOS6AW.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-A4L36SZS.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as complexity};
|
|
2
2
|
//# sourceMappingURL=complexity.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-YYD245WG.js";import"../chunk-YTR4CO5S.js";import"../chunk-HVTYSC26.js";import"../chunk-FUPDW5AC.js";import"../chunk-MZ7APUFN.js";import"../chunk-AUVBR62P.js";import"../chunk-FOQHUKNZ.js";import"../chunk-CRU42NJU.js";import"../chunk-3UW7VM4H.js";import"../chunk-JM72FNGA.js";import"../chunk-QLNGUWR7.js";import"../chunk-ERHOS6AW.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-A4L36SZS.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as convergence};
|
|
2
2
|
//# sourceMappingURL=convergence.js.map
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { S as ScipDatabase } from '../db-
|
|
1
|
+
import { S as ScipDatabase } from '../db-CTarohbZ.js';
|
|
2
2
|
import 'better-sqlite3';
|
|
3
|
-
import '../config-types-
|
|
3
|
+
import '../config-types-Bj4sh28g.js';
|
|
4
4
|
|
|
5
5
|
interface CouplingResult {
|
|
6
6
|
file1: string;
|
|
7
7
|
file2: string;
|
|
8
8
|
sharedSymbols: number;
|
|
9
|
+
actionTier: 'signal';
|
|
10
|
+
couplingKind: 'shared-symbol-coupling';
|
|
11
|
+
evidenceReasons: string[];
|
|
12
|
+
recommendation: string;
|
|
9
13
|
}
|
|
10
14
|
/**
|
|
11
15
|
* Measure coupling between two files: how many symbols do they share
|
package/dist/queries/coupling.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a,b}from"../chunk-
|
|
1
|
+
import{a,b}from"../chunk-5QJXH6ZL.js";import"../chunk-CTCAF3YA.js";import"../chunk-MZ7APUFN.js";import"../chunk-3UW7VM4H.js";import"../chunk-JM72FNGA.js";import"../chunk-QLNGUWR7.js";import"../chunk-ERHOS6AW.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-A4L36SZS.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as coupling,b as topCoupling};
|
|
2
2
|
//# sourceMappingURL=coupling.js.map
|
package/dist/queries/cycles.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as ScipDatabase } from '../db-
|
|
1
|
+
import { S as ScipDatabase } from '../db-CTarohbZ.js';
|
|
2
2
|
import 'better-sqlite3';
|
|
3
|
-
import '../config-types-
|
|
3
|
+
import '../config-types-Bj4sh28g.js';
|
|
4
4
|
|
|
5
5
|
interface CycleResult {
|
|
6
6
|
/** Files forming a cycle, in order */
|
package/dist/queries/cycles.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-CJJP64OC.js";import"../chunk-ZQLO2SCU.js";import"../chunk-AUVBR62P.js";import"../chunk-FOQHUKNZ.js";import"../chunk-CRU42NJU.js";import"../chunk-JM72FNGA.js";import"../chunk-QLNGUWR7.js";import"../chunk-ERHOS6AW.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-A4L36SZS.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as cycles};
|
|
2
2
|
//# sourceMappingURL=cycles.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as ScipDatabase } from '../db-
|
|
1
|
+
import { S as ScipDatabase } from '../db-CTarohbZ.js';
|
|
2
2
|
import 'better-sqlite3';
|
|
3
|
-
import '../config-types-
|
|
3
|
+
import '../config-types-Bj4sh28g.js';
|
|
4
4
|
|
|
5
5
|
interface DataflowResult {
|
|
6
6
|
symbol: string;
|