scip-query 0.10.3 → 0.10.5

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 (99) hide show
  1. package/README.md +9 -8
  2. package/dist/{chunk-YVLHL6KQ.js → chunk-237YUOPK.js} +2 -2
  3. package/dist/chunk-56UN3DMK.js +2 -0
  4. package/dist/chunk-5UDFZC4D.js +2 -0
  5. package/dist/{chunk-X474LKJX.js → chunk-6UFMPECA.js} +2 -2
  6. package/dist/chunk-7JOTOWZO.js +4 -0
  7. package/dist/chunk-A7RNHUJH.js +20 -0
  8. package/dist/chunk-AYYIZ4BA.js +4 -0
  9. package/dist/chunk-BNKE4TT5.js +2 -0
  10. package/dist/chunk-MA7OVFHI.js +2 -0
  11. package/dist/chunk-ONPCQ2PM.js +6 -0
  12. package/dist/chunk-QUJBXLBY.js +2 -0
  13. package/dist/chunk-WBJZNPUT.js +2 -0
  14. package/dist/{chunk-4HOMAEDD.js → chunk-YUTRW57I.js} +2 -2
  15. package/dist/cli.js +211 -198
  16. package/dist/frontend-behavior-evidence-BxKpKWUu.d.ts +4 -0
  17. package/dist/postinstall.js +3 -3
  18. package/dist/queries/diff-gate.d.ts +4 -2
  19. package/dist/queries/diff-gate.js +1 -1
  20. package/dist/queries/diff-impact.js +1 -1
  21. package/dist/queries/doc-drift.js +1 -1
  22. package/dist/queries/health.js +1 -1
  23. package/dist/queries/incomplete-migration.js +1 -1
  24. package/dist/queries/index.d.ts +1 -0
  25. package/dist/queries/index.js +1 -1
  26. package/dist/queries/plan-context.js +1 -1
  27. package/dist/queries/react-component-duplicates.js +1 -1
  28. package/dist/queries/react-hook-candidates.d.ts +3 -2
  29. package/dist/queries/react-hook-candidates.js +1 -1
  30. package/dist/queries/recent-duplicates.js +1 -1
  31. package/dist/queries/vue-component-duplicates.js +1 -1
  32. package/dist/queries/vue-composable-candidates.d.ts +3 -2
  33. package/dist/queries/vue-composable-candidates.js +1 -1
  34. package/dist/reindex-worker.js +8 -8
  35. package/dist/reindex.d.ts +1 -1
  36. package/dist/reindex.js +19 -19
  37. package/dist/runtime.d.ts +1 -1
  38. package/dist/runtime.js +2 -2
  39. package/dist/{scip-cli-a-xOztiK.d.ts → scip-cli-Bh1M_JPu.d.ts} +1 -1
  40. package/docs/AGENT_GUIDE.md +42 -5
  41. package/docs/AI_FAILURE_MODES.md +28 -21
  42. package/docs/COMMAND_REFERENCE.md +4 -2
  43. package/docs/analyzer-inventory.md +5 -1
  44. package/docs/analyzer-validation-ledger.md +8 -0
  45. package/package.json +7 -3
  46. package/scripts/build-scip-windows.mjs +75 -0
  47. package/skills/concrete-plan/SKILL.md +3 -5
  48. package/skills/concrete-plan/agents/openai.yaml +4 -0
  49. package/skills/scip-adoption/SKILL.md +120 -0
  50. package/skills/scip-adoption/agents/openai.yaml +4 -0
  51. package/skills/scip-ai-cleanup/SKILL.md +12 -4
  52. package/skills/scip-ai-cleanup/agents/openai.yaml +4 -0
  53. package/skills/scip-api-impact/SKILL.md +147 -0
  54. package/skills/scip-api-impact/agents/openai.yaml +4 -0
  55. package/skills/scip-debloat/SKILL.md +15 -13
  56. package/skills/scip-debloat/agents/openai.yaml +4 -0
  57. package/skills/scip-debug/SKILL.md +119 -0
  58. package/skills/scip-debug/agents/openai.yaml +4 -0
  59. package/skills/scip-diagram/SKILL.md +138 -0
  60. package/skills/scip-diagram/agents/openai.yaml +4 -0
  61. package/skills/scip-directory-architecture/SKILL.md +2 -2
  62. package/skills/scip-directory-architecture/agents/openai.yaml +4 -0
  63. package/skills/scip-doc-reconcile/SKILL.md +1 -3
  64. package/skills/scip-doc-reconcile/agents/openai.yaml +4 -0
  65. package/skills/scip-explore/SKILL.md +8 -2
  66. package/skills/scip-explore/agents/openai.yaml +4 -0
  67. package/skills/scip-health-audit/SKILL.md +158 -0
  68. package/skills/scip-health-audit/agents/openai.yaml +4 -0
  69. package/skills/scip-health-improve/SKILL.md +151 -0
  70. package/skills/scip-health-improve/agents/openai.yaml +4 -0
  71. package/skills/scip-language-playbook/SKILL.md +7 -4
  72. package/skills/scip-language-playbook/agents/openai.yaml +4 -0
  73. package/skills/scip-maintainability/SKILL.md +7 -3
  74. package/skills/scip-maintainability/agents/openai.yaml +4 -0
  75. package/skills/scip-query/SKILL.md +74 -33
  76. package/skills/scip-query/agents/openai.yaml +4 -0
  77. package/skills/scip-query-setup/SKILL.md +65 -18
  78. package/skills/scip-query-setup/agents/openai.yaml +3 -0
  79. package/skills/scip-react-maintainability/SKILL.md +2 -2
  80. package/skills/scip-react-maintainability/agents/openai.yaml +4 -0
  81. package/skills/scip-triage-issue/SKILL.md +112 -0
  82. package/skills/scip-triage-issue/agents/openai.yaml +4 -0
  83. package/skills/scip-verify/SKILL.md +83 -232
  84. package/skills/scip-verify/agents/openai.yaml +4 -0
  85. package/skills/scip-vue-maintainability/SKILL.md +2 -3
  86. package/skills/scip-vue-maintainability/agents/openai.yaml +4 -0
  87. package/vendor/scip/LICENSE.scip +201 -0
  88. package/vendor/scip/README.md +6 -0
  89. package/vendor/scip/win32-arm64/scip.exe +0 -0
  90. package/vendor/scip/win32-x64/scip.exe +0 -0
  91. package/dist/chunk-7ADUXFRZ.js +0 -2
  92. package/dist/chunk-GLJAAKDW.js +0 -4
  93. package/dist/chunk-GS33KGAY.js +0 -2
  94. package/dist/chunk-I7TSQZ3J.js +0 -4
  95. package/dist/chunk-NP5HYVLX.js +0 -20
  96. package/dist/chunk-NXIAHE7F.js +0 -5
  97. package/dist/chunk-O4L4AB3T.js +0 -2
  98. package/dist/chunk-TO54DY4O.js +0 -2
  99. package/dist/chunk-UMNENNTX.js +0 -2
@@ -0,0 +1,4 @@
1
+ type FrontendBehaviorEvidenceClass = 'domain-behavior' | 'generic-workflow-scaffolding' | 'mixed' | 'shared-abstraction';
2
+ type FrontendBehaviorActionTier = 'signal' | 'support';
3
+
4
+ export type { FrontendBehaviorActionTier as F, FrontendBehaviorEvidenceClass as a };
@@ -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-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
- scip CLI not found on PATH. Attempting auto-install...`),m(console.log)||f();else{let o=g();console.log(`
2
+ import{c as g,d as k,e as m,f}from"./chunk-ONPCQ2PM.js";import{existsSync as p,mkdirSync as L,symlinkSync as v,readlinkSync as b,unlinkSync as q}from"fs";import{join as e,dirname as y,resolve as d}from"path";import{homedir as u,platform as A}from"os";import{fileURLToPath as C}from"url";var H=A()==="win32",U=["scip-query","scip-query-setup","scip-adoption","scip-health-audit","scip-health-improve","scip-api-impact","concrete-plan","scip-ai-cleanup","scip-debug","scip-explore","scip-triage-issue","scip-diagram","scip-debloat","scip-doc-reconcile","scip-directory-architecture","scip-maintainability","scip-react-maintainability","scip-vue-maintainability","scip-verify","scip-language-playbook"];function N(i={}){let l=i.quiet?()=>{}:console.log,o=C(import.meta.url),h=d(y(o),"..","skills"),I=[e(u(),".claude","skills"),e(u(),".codex","skills"),e(u(),".agents","skills")],n={installed:[],skipped:[],alreadyLinked:[]};for(let r of I){let $=y(r);if(!p($))continue;L(r,{recursive:!0});let t=R(r);for(let s of U){let a=e(h,s),c=e(r,s);if(!p(a)){n.skipped.push(`${t}/${s}`);continue}if(p(c)){try{let x=b(c);if(d(x)===d(a)){n.alreadyLinked.push(`${t}/${s}`),l(` ok: ${s} \u2192 ${t} (already linked)`);continue}}catch{n.skipped.push(`${t}/${s}`),l(` skip: ${s} \u2192 ${t} (exists, not a symlink)`);continue}q(c)}v(a,c,H?"junction":"dir"),n.installed.push(`${t}/${s}`),l(` done: ${s} \u2192 ${t}`)}}return n}function R(i){return i.includes(".codex")?"Codex":i.includes(".agents")?"Agents":"Claude"}function S(){console.log("scip-query: installing skills...");let i=N({quiet:!1});if(i.installed.length+i.alreadyLinked.length>0&&console.log(`
3
+ ${i.installed.length} skill(s) installed, ${i.alreadyLinked.length} already linked.`),!g())console.log(`
4
+ scip CLI not found on PATH. Attempting auto-install...`),f(console.log)||m();else{let o=k();console.log(`
5
5
  scip CLI: ${o??"installed"}`)}console.log("")}S();
6
6
  //# sourceMappingURL=postinstall.js.map
@@ -5,13 +5,15 @@ import { DiffImpactPlan } from './diff-impact.js';
5
5
  import { F as FindingSuppression } from '../config-types-Bj4sh28g.js';
6
6
  import 'better-sqlite3';
7
7
 
8
+ type DiffGateActionTier = 'direct' | 'signal' | 'support';
9
+ type DocCitationKind = 'behavioral-claim' | 'configuration-example' | 'guide-reference' | 'intentional-record';
10
+
8
11
  type DiffGateCheck = 'echo' | 'incomplete-migration' | 'co-change-partner' | 'doc-reference' | 'unused-params' | 'new-dead' | 'baseline';
9
12
  /** Canonical check list — the CLI validates `--skip` values against this. */
10
13
  declare const DIFF_GATE_CHECKS: readonly DiffGateCheck[];
11
14
  type DiffGateEvidence = 'graph-fact' | 'semantic' | 'heuristic' | 'change-graph' | 'baseline';
12
15
  type DiffGateSeverity = 'info' | 'warning' | 'error';
13
- type DiffGateActionTier = 'direct' | 'signal' | 'support';
14
- type DocCitationKind = 'behavioral-claim' | 'configuration-example' | 'guide-reference' | 'intentional-record';
16
+
15
17
  interface DiffGateFinding {
16
18
  id: string;
17
19
  check: DiffGateCheck;
@@ -1,2 +1,2 @@
1
- import{d as a,e as b,f as c}from"../chunk-I7TSQZ3J.js";import"../chunk-NNDYO2DX.js";import"../chunk-YVLHL6KQ.js";import"../chunk-B32FX5KB.js";import"../chunk-SPE4YCOT.js";import"../chunk-ZFMPHDAT.js";import"../chunk-C2QSK7E7.js";import"../chunk-UQJGTVHV.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-G3WGZU5Q.js";import"../chunk-RHTJBYZ5.js";import"../chunk-DE7MA6OD.js";import"../chunk-VAA5FFIW.js";import"../chunk-7KCSELEV.js";import"../chunk-NP5HYVLX.js";import"../chunk-GLJAAKDW.js";import"../chunk-AW4N6MGC.js";import"../chunk-C3MZZ2ZN.js";import"../chunk-EYLXU575.js";import"../chunk-KRGBLZT2.js";import"../chunk-PFOCOG57.js";import"../chunk-CJJP64OC.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 DIFF_GATE_CHECKS,b as diffGate,c as symbolPreexistenceChecker};
1
+ import{d as a,e as b,f as c}from"../chunk-7JOTOWZO.js";import"../chunk-NNDYO2DX.js";import"../chunk-237YUOPK.js";import"../chunk-B32FX5KB.js";import"../chunk-SPE4YCOT.js";import"../chunk-ZFMPHDAT.js";import"../chunk-C2QSK7E7.js";import"../chunk-UQJGTVHV.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-G3WGZU5Q.js";import"../chunk-RHTJBYZ5.js";import"../chunk-DE7MA6OD.js";import"../chunk-VAA5FFIW.js";import"../chunk-7KCSELEV.js";import"../chunk-A7RNHUJH.js";import"../chunk-AYYIZ4BA.js";import"../chunk-AW4N6MGC.js";import"../chunk-C3MZZ2ZN.js";import"../chunk-EYLXU575.js";import"../chunk-KRGBLZT2.js";import"../chunk-PFOCOG57.js";import"../chunk-CJJP64OC.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 DIFF_GATE_CHECKS,b as diffGate,c as symbolPreexistenceChecker};
2
2
  //# sourceMappingURL=diff-gate.js.map
@@ -1,2 +1,2 @@
1
- import{a,b,c,d,e,f}from"../chunk-NP5HYVLX.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 GIT_DIFF_UNAVAILABLE_NOTE,b as diffImpact,d as diffImpactPartial,c as diffImpactPlan,f as fileContentAtBase,e as mergeDiffImpactPartials};
1
+ import{b as a,c as b,d as c,e as d,f as e,g as f}from"../chunk-A7RNHUJH.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 GIT_DIFF_UNAVAILABLE_NOTE,b as diffImpact,d as diffImpactPartial,c as diffImpactPlan,f as fileContentAtBase,e as mergeDiffImpactPartials};
2
2
  //# sourceMappingURL=diff-impact.js.map
@@ -1,2 +1,2 @@
1
- import{b as a,c as b,d as c}from"../chunk-GLJAAKDW.js";import"../chunk-KRGBLZT2.js";import"../chunk-A4L36SZS.js";import"../chunk-7S5E7KWT.js";export{b as docDrift,c as docsCitingFiles,a as isArchivalDoc};
1
+ import{c as a,d as b,e as c}from"../chunk-AYYIZ4BA.js";import"../chunk-KRGBLZT2.js";import"../chunk-A4L36SZS.js";import"../chunk-7S5E7KWT.js";export{b as docDrift,c as docsCitingFiles,a as isArchivalDoc};
2
2
  //# sourceMappingURL=doc-drift.js.map
@@ -1,2 +1,2 @@
1
- import{a,b,c,d}from"../chunk-4HOMAEDD.js";import"../chunk-O3OKSF6O.js";import"../chunk-3KLLFNT4.js";import"../chunk-QSXQT3NE.js";import"../chunk-O4L4AB3T.js";import"../chunk-GS33KGAY.js";import"../chunk-UMNENNTX.js";import"../chunk-TO54DY4O.js";import"../chunk-PVZMPG5I.js";import"../chunk-B32FX5KB.js";import"../chunk-SPE4YCOT.js";import"../chunk-ZFMPHDAT.js";import"../chunk-C2QSK7E7.js";import"../chunk-UQJGTVHV.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-G3WGZU5Q.js";import"../chunk-RHTJBYZ5.js";import"../chunk-DE7MA6OD.js";import"../chunk-VAA5FFIW.js";import"../chunk-7KCSELEV.js";import"../chunk-AW4N6MGC.js";import"../chunk-C3MZZ2ZN.js";import"../chunk-EYLXU575.js";import"../chunk-KRGBLZT2.js";import"../chunk-DAI74TJU.js";import"../chunk-PFOCOG57.js";import"../chunk-CJJP64OC.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 HEALTH_PHASES,b as health,c as healthPhase,d as healthReportFromPhases};
1
+ import{a,b,c,d}from"../chunk-YUTRW57I.js";import"../chunk-O3OKSF6O.js";import"../chunk-3KLLFNT4.js";import"../chunk-QSXQT3NE.js";import"../chunk-5UDFZC4D.js";import"../chunk-BNKE4TT5.js";import"../chunk-WBJZNPUT.js";import"../chunk-56UN3DMK.js";import"../chunk-QUJBXLBY.js";import"../chunk-PVZMPG5I.js";import"../chunk-B32FX5KB.js";import"../chunk-SPE4YCOT.js";import"../chunk-ZFMPHDAT.js";import"../chunk-C2QSK7E7.js";import"../chunk-UQJGTVHV.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-G3WGZU5Q.js";import"../chunk-RHTJBYZ5.js";import"../chunk-DE7MA6OD.js";import"../chunk-VAA5FFIW.js";import"../chunk-7KCSELEV.js";import"../chunk-AW4N6MGC.js";import"../chunk-C3MZZ2ZN.js";import"../chunk-EYLXU575.js";import"../chunk-KRGBLZT2.js";import"../chunk-DAI74TJU.js";import"../chunk-PFOCOG57.js";import"../chunk-CJJP64OC.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 HEALTH_PHASES,b as health,c as healthPhase,d as healthReportFromPhases};
2
2
  //# sourceMappingURL=health.js.map
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-YVLHL6KQ.js";import"../chunk-UQJGTVHV.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-NP5HYVLX.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 incompleteMigration};
1
+ import{a}from"../chunk-237YUOPK.js";import"../chunk-UQJGTVHV.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-A7RNHUJH.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 incompleteMigration};
2
2
  //# sourceMappingURL=incomplete-migration.js.map
@@ -60,6 +60,7 @@ export { AuditDisagreement, AuditQuestionScore, SelfAuditResult, selfAudit } fro
60
60
  export { SimilarSignatureGroup, similarSignatures } from './similar-signatures.js';
61
61
  import 'better-sqlite3';
62
62
  import '../config-types-Bj4sh28g.js';
63
+ import '../frontend-behavior-evidence-BxKpKWUu.js';
63
64
  import '../git-history-Dao3_Pu9.js';
64
65
 
65
66
  interface HealthBaselineFile {
@@ -1,2 +1,2 @@
1
- import{a as se}from"../chunk-A3VNUGKJ.js";import{a as ye}from"../chunk-QVCCLDZI.js";import{a as de}from"../chunk-77YBOOYT.js";import{a as ve}from"../chunk-FNRPGGVI.js";import{a as Ce}from"../chunk-X474LKJX.js";import{a as fe}from"../chunk-ICXVNWMI.js";import{a as me}from"../chunk-X7ZY6FFF.js";import{a as he}from"../chunk-FIB4JPEX.js";import{a as ce}from"../chunk-YQH353VA.js";import{a as ge}from"../chunk-7ADUXFRZ.js";import{a as je}from"../chunk-ZSLT7NWQ.js";import{a as le}from"../chunk-5M4TYWVI.js";import{a as De}from"../chunk-E44ZMVNA.js";import{a as Re}from"../chunk-DJMK4DBL.js";import{a as xe}from"../chunk-NVFERV4U.js";import{a as ne}from"../chunk-5FOPAXWY.js";import{a as ue}from"../chunk-YUOAAR24.js";import{a as q,b as M,c as U,d as _}from"../chunk-CAWSSEVM.js";import{a as N}from"../chunk-B6MJ5VQV.js";import{a as Z,b as $,c as ee,d as te}from"../chunk-4HOMAEDD.js";import{a as Y}from"../chunk-O3OKSF6O.js";import"../chunk-3KLLFNT4.js";import{a as z}from"../chunk-QSXQT3NE.js";import{a as X}from"../chunk-O4L4AB3T.js";import{a as J}from"../chunk-GS33KGAY.js";import{a as W}from"../chunk-UMNENNTX.js";import{a as Q}from"../chunk-TO54DY4O.js";import"../chunk-PVZMPG5I.js";import{a as oe}from"../chunk-47UA45TU.js";import{a as re}from"../chunk-E7KERP7E.js";import{a as ae,b as pe,c as ie}from"../chunk-7OHWPJ5N.js";import{a as y}from"../chunk-EOZIZWW4.js";import{a as R}from"../chunk-CSWZFD46.js";import{a as g,b as h}from"../chunk-4ZUJJRWT.js";import{a as I,b as w,c as B,d as G,e as O}from"../chunk-I7TSQZ3J.js";import{a as K}from"../chunk-NNDYO2DX.js";import{a as V}from"../chunk-YVLHL6KQ.js";import"../chunk-B32FX5KB.js";import{a as E}from"../chunk-SPE4YCOT.js";import{a as T}from"../chunk-ZFMPHDAT.js";import{a as k}from"../chunk-C2QSK7E7.js";import{a as H,b as L}from"../chunk-UQJGTVHV.js";import"../chunk-3UVJJ6Z7.js";import{a as P}from"../chunk-G3WGZU5Q.js";import"../chunk-RHTJBYZ5.js";import{a as F}from"../chunk-DE7MA6OD.js";import"../chunk-VAA5FFIW.js";import{a as b}from"../chunk-7KCSELEV.js";import{b as C,c as j,d as D,e as v}from"../chunk-NP5HYVLX.js";import{c as S}from"../chunk-GLJAAKDW.js";import{a as A}from"../chunk-AW4N6MGC.js";import{a as s}from"../chunk-OLD6PBU6.js";import{b as i}from"../chunk-C3MZZ2ZN.js";import{b as n}from"../chunk-EYLXU575.js";import"../chunk-KRGBLZT2.js";import{a as l}from"../chunk-LPLGJ4HO.js";import{a as m}from"../chunk-ESG4HBEF.js";import{a as f}from"../chunk-DAI74TJU.js";import"../chunk-PFOCOG57.js";import{a as c}from"../chunk-YYD245WG.js";import{a as u,b as x}from"../chunk-5QJXH6ZL.js";import{a as d}from"../chunk-CJJP64OC.js";import{a as e}from"../chunk-CFL2CNIF.js";import{a as t}from"../chunk-MUULWXSJ.js";import{a as o,b as r}from"../chunk-BKDXBJDQ.js";import{a}from"../chunk-Z4VHYJ5U.js";import"../chunk-B75HZHUP.js";import{a as p}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{G as DIFF_GATE_CHECKS,Z as HEALTH_PHASES,e as affected,t as bottlenecks,o as byKind,a as callGraph,p as changeSurface,B as checkHealthBaseline,s as cleanupPlan,n as coChange,l as code,I as collectBaselineFindings,m as complexity,f as complexityHotspots,c as convergence,u as coupling,d as cycles,y as dataflow,i as dead,R as deepChains,g as deps,O as diffGate,C as diffImpact,D as diffImpactPartial,j as diffImpactPlan,S as docDrift,A as drift,b as extractCandidates,q as fanIn,M as fanOut,N as files,$ as health,ee as healthPhase,te as healthReportFromPhases,oe as hierarchy,re as hotspots,pe as importedBy,ae as imports,V as incompleteMigration,P as isolated,r as kindCounts,Re as localityCandidates,xe as members,v as mergeDiffImpactPartials,ne as methods,ue as outline,F as passthroughCandidates,Ce as planContext,h as rdeps,W as reactComponentDuplicates,Q as reactHookCandidates,z as reactLargeComponentPressure,ge as recentDuplicates,je as redundantReexports,le as refs,De as selfAudit,H as similar,L as similarAll,ye as similarChains,de as similarFiles,ve as similarSignatures,he as slice,T as staleAbstractions,k as stats,ce as surface,se as symbols,fe as system,x as topCoupling,U as topFanIn,_ as topFanOut,me as trace,ie as unusedImports,K as unusedParams,J as vueComponentDuplicates,X as vueComposableCandidates,Y as vueLargeViewPressure,E as wrapperCandidates,w as writeHealthBaseline};
1
+ import{a as se}from"../chunk-A3VNUGKJ.js";import{a as ye}from"../chunk-QVCCLDZI.js";import{a as de}from"../chunk-77YBOOYT.js";import{a as ve}from"../chunk-FNRPGGVI.js";import{a as Ce}from"../chunk-6UFMPECA.js";import{a as fe}from"../chunk-ICXVNWMI.js";import{a as me}from"../chunk-X7ZY6FFF.js";import{a as he}from"../chunk-FIB4JPEX.js";import{a as ce}from"../chunk-YQH353VA.js";import{a as ge}from"../chunk-MA7OVFHI.js";import{a as je}from"../chunk-ZSLT7NWQ.js";import{a as le}from"../chunk-5M4TYWVI.js";import{a as De}from"../chunk-E44ZMVNA.js";import{a as Re}from"../chunk-DJMK4DBL.js";import{a as xe}from"../chunk-NVFERV4U.js";import{a as ne}from"../chunk-5FOPAXWY.js";import{a as ue}from"../chunk-YUOAAR24.js";import{a as q,b as M,c as U,d as _}from"../chunk-CAWSSEVM.js";import{a as N}from"../chunk-B6MJ5VQV.js";import{a as Z,b as $,c as ee,d as te}from"../chunk-YUTRW57I.js";import{a as Y}from"../chunk-O3OKSF6O.js";import"../chunk-3KLLFNT4.js";import{a as z}from"../chunk-QSXQT3NE.js";import{a as X}from"../chunk-5UDFZC4D.js";import{a as J}from"../chunk-BNKE4TT5.js";import{a as W}from"../chunk-WBJZNPUT.js";import{a as Q}from"../chunk-56UN3DMK.js";import"../chunk-QUJBXLBY.js";import"../chunk-PVZMPG5I.js";import{a as oe}from"../chunk-47UA45TU.js";import{a as re}from"../chunk-E7KERP7E.js";import{a as ae,b as pe,c as ie}from"../chunk-7OHWPJ5N.js";import{a as V}from"../chunk-EOZIZWW4.js";import{a as K}from"../chunk-CSWZFD46.js";import{a as G,b as O}from"../chunk-4ZUJJRWT.js";import{a as R,b as g,c as h,d as D,e as v}from"../chunk-7JOTOWZO.js";import{a as j}from"../chunk-NNDYO2DX.js";import{a as C}from"../chunk-237YUOPK.js";import"../chunk-B32FX5KB.js";import{a as y}from"../chunk-SPE4YCOT.js";import{a as x}from"../chunk-ZFMPHDAT.js";import{a as d}from"../chunk-C2QSK7E7.js";import{a as c,b as u}from"../chunk-UQJGTVHV.js";import"../chunk-3UVJJ6Z7.js";import{a as m}from"../chunk-G3WGZU5Q.js";import"../chunk-RHTJBYZ5.js";import{a as f}from"../chunk-DE7MA6OD.js";import"../chunk-VAA5FFIW.js";import{a as l}from"../chunk-7KCSELEV.js";import{c as t,d as o,e as r,f as a}from"../chunk-A7RNHUJH.js";import{d as p}from"../chunk-AYYIZ4BA.js";import{a as n}from"../chunk-AW4N6MGC.js";import{a as L}from"../chunk-OLD6PBU6.js";import{b as s}from"../chunk-C3MZZ2ZN.js";import{b as e}from"../chunk-EYLXU575.js";import"../chunk-KRGBLZT2.js";import{a as T}from"../chunk-LPLGJ4HO.js";import{a as k}from"../chunk-ESG4HBEF.js";import{a as E}from"../chunk-DAI74TJU.js";import"../chunk-PFOCOG57.js";import{a as I}from"../chunk-YYD245WG.js";import{a as w,b as B}from"../chunk-5QJXH6ZL.js";import{a as i}from"../chunk-CJJP64OC.js";import{a as S}from"../chunk-CFL2CNIF.js";import{a as A}from"../chunk-MUULWXSJ.js";import{a as b,b as P}from"../chunk-BKDXBJDQ.js";import{a as F}from"../chunk-Z4VHYJ5U.js";import"../chunk-B75HZHUP.js";import{a as H}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{D as DIFF_GATE_CHECKS,Z as HEALTH_PHASES,S as affected,A as bottlenecks,b as byKind,F as callGraph,H as changeSurface,h as checkHealthBaseline,L as cleanupPlan,e as coChange,T as code,R as collectBaselineFindings,k as complexity,E as complexityHotspots,I as convergence,w as coupling,i as cycles,V as dataflow,s as dead,K as deepChains,G as deps,v as diffGate,t as diffImpact,r as diffImpactPartial,o as diffImpactPlan,p as docDrift,n as drift,l as extractCandidates,q as fanIn,M as fanOut,N as files,$ as health,ee as healthPhase,te as healthReportFromPhases,oe as hierarchy,re as hotspots,pe as importedBy,ae as imports,C as incompleteMigration,m as isolated,P as kindCounts,Re as localityCandidates,xe as members,a as mergeDiffImpactPartials,ne as methods,ue as outline,f as passthroughCandidates,Ce as planContext,O as rdeps,W as reactComponentDuplicates,Q as reactHookCandidates,z as reactLargeComponentPressure,ge as recentDuplicates,je as redundantReexports,le as refs,De as selfAudit,c as similar,u as similarAll,ye as similarChains,de as similarFiles,ve as similarSignatures,he as slice,x as staleAbstractions,d as stats,ce as surface,se as symbols,fe as system,B as topCoupling,U as topFanIn,_ as topFanOut,me as trace,ie as unusedImports,j as unusedParams,J as vueComponentDuplicates,X as vueComposableCandidates,Y as vueLargeViewPressure,y as wrapperCandidates,g as writeHealthBaseline};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-X474LKJX.js";import"../chunk-ICXVNWMI.js";import"../chunk-X7ZY6FFF.js";import"../chunk-FIB4JPEX.js";import"../chunk-YQH353VA.js";import"../chunk-3KLLFNT4.js";import"../chunk-EOZIZWW4.js";import"../chunk-4ZUJJRWT.js";import"../chunk-EYLXU575.js";import"../chunk-KRGBLZT2.js";import"../chunk-ESG4HBEF.js";import"../chunk-CFL2CNIF.js";import"../chunk-Z4VHYJ5U.js";import"../chunk-B75HZHUP.js";import"../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 planContext};
1
+ import{a}from"../chunk-6UFMPECA.js";import"../chunk-ICXVNWMI.js";import"../chunk-X7ZY6FFF.js";import"../chunk-FIB4JPEX.js";import"../chunk-YQH353VA.js";import"../chunk-3KLLFNT4.js";import"../chunk-EOZIZWW4.js";import"../chunk-4ZUJJRWT.js";import"../chunk-EYLXU575.js";import"../chunk-KRGBLZT2.js";import"../chunk-ESG4HBEF.js";import"../chunk-CFL2CNIF.js";import"../chunk-Z4VHYJ5U.js";import"../chunk-B75HZHUP.js";import"../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 planContext};
2
2
  //# sourceMappingURL=plan-context.js.map
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-UMNENNTX.js";import"../chunk-PVZMPG5I.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as reactComponentDuplicates};
1
+ import{a}from"../chunk-WBJZNPUT.js";import"../chunk-QUJBXLBY.js";import"../chunk-PVZMPG5I.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as reactComponentDuplicates};
2
2
  //# sourceMappingURL=react-component-duplicates.js.map
@@ -1,9 +1,10 @@
1
1
  import { S as ScipDatabase } from '../db-CTarohbZ.js';
2
+ import { F as FrontendBehaviorActionTier, a as FrontendBehaviorEvidenceClass } from '../frontend-behavior-evidence-BxKpKWUu.js';
2
3
  import 'better-sqlite3';
3
4
  import '../config-types-Bj4sh28g.js';
4
5
 
5
- type ReactHookEvidenceClass = 'domain-behavior' | 'generic-workflow-scaffolding' | 'mixed' | 'shared-abstraction';
6
- type ReactHookActionTier = 'signal' | 'support';
6
+ type ReactHookEvidenceClass = FrontendBehaviorEvidenceClass;
7
+ type ReactHookActionTier = FrontendBehaviorActionTier;
7
8
  interface ReactHookCandidateResult {
8
9
  fileA: string;
9
10
  componentA: string;
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-TO54DY4O.js";import"../chunk-PVZMPG5I.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as reactHookCandidates};
1
+ import{a}from"../chunk-56UN3DMK.js";import"../chunk-QUJBXLBY.js";import"../chunk-PVZMPG5I.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-EWC3UK4V.js";import"../chunk-D322LMSA.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as reactHookCandidates};
2
2
  //# sourceMappingURL=react-hook-candidates.js.map
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-7ADUXFRZ.js";import"../chunk-O4L4AB3T.js";import"../chunk-GS33KGAY.js";import"../chunk-UMNENNTX.js";import"../chunk-TO54DY4O.js";import"../chunk-PVZMPG5I.js";import"../chunk-UQJGTVHV.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-KRGBLZT2.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 recentDuplicates};
1
+ import{a}from"../chunk-MA7OVFHI.js";import"../chunk-5UDFZC4D.js";import"../chunk-BNKE4TT5.js";import"../chunk-WBJZNPUT.js";import"../chunk-56UN3DMK.js";import"../chunk-QUJBXLBY.js";import"../chunk-PVZMPG5I.js";import"../chunk-UQJGTVHV.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-KRGBLZT2.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 recentDuplicates};
2
2
  //# sourceMappingURL=recent-duplicates.js.map
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-GS33KGAY.js";import"../chunk-PVZMPG5I.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-ERHOS6AW.js";import"../chunk-D322LMSA.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as vueComponentDuplicates};
1
+ import{a}from"../chunk-BNKE4TT5.js";import"../chunk-QUJBXLBY.js";import"../chunk-PVZMPG5I.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-ERHOS6AW.js";import"../chunk-D322LMSA.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as vueComponentDuplicates};
2
2
  //# sourceMappingURL=vue-component-duplicates.js.map
@@ -1,9 +1,10 @@
1
1
  import { S as ScipDatabase } from '../db-CTarohbZ.js';
2
+ import { F as FrontendBehaviorActionTier, a as FrontendBehaviorEvidenceClass } from '../frontend-behavior-evidence-BxKpKWUu.js';
2
3
  import 'better-sqlite3';
3
4
  import '../config-types-Bj4sh28g.js';
4
5
 
5
- type VueComposableEvidenceClass = 'domain-behavior' | 'generic-workflow-scaffolding' | 'mixed' | 'shared-abstraction';
6
- type VueComposableActionTier = 'signal' | 'support';
6
+ type VueComposableEvidenceClass = FrontendBehaviorEvidenceClass;
7
+ type VueComposableActionTier = FrontendBehaviorActionTier;
7
8
  interface VueComposableCandidateResult {
8
9
  fileA: string;
9
10
  fileB: string;
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-O4L4AB3T.js";import"../chunk-PVZMPG5I.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-ERHOS6AW.js";import"../chunk-D322LMSA.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as vueComposableCandidates};
1
+ import{a}from"../chunk-5UDFZC4D.js";import"../chunk-QUJBXLBY.js";import"../chunk-PVZMPG5I.js";import"../chunk-3UVJJ6Z7.js";import"../chunk-ERHOS6AW.js";import"../chunk-D322LMSA.js";import"../chunk-OBBDKQAG.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as vueComposableCandidates};
2
2
  //# sourceMappingURL=vue-composable-candidates.js.map
@@ -1,13 +1,13 @@
1
- import{a as v,b as I}from"./chunk-KPHKX4LP.js";import{a as m,e as A}from"./chunk-NXIAHE7F.js";import{execFileSync as gn}from"child_process";import{closeSync as dn,copyFileSync as mn,existsSync as P,mkdirSync as B,mkdtempSync as fn,openSync as hn,readFileSync as ie,renameSync as M,rmSync as N,writeFileSync as se}from"fs";import{basename as S,dirname as d,extname as xn,join as g}from"path";import{execFileSync as fe}from"child_process";import{existsSync as he,readdirSync as T}from"fs";import{extname as U,join as W}from"path";var xe=new Set([".git",".hg",".svn",".idea",".vscode","node_modules","vendor","dist","build","target","bin","obj",".dart_tool",".gradle",".next",".venv","venv","__pycache__"]),ye=[{language:"typescript",files:["tsconfig.json","tsconfig.base.json"],extensions:[".ts",".tsx",".mts",".cts"]},{language:"rust",files:["Cargo.toml"],extensions:[".rs"]},{language:"go",files:["go.mod"],extensions:[".go"]},{language:"java",files:["pom.xml","build.gradle","build.gradle.kts"],extensions:[".java"]},{language:"kotlin",files:["build.gradle.kts"],extensions:[".kt",".kts"]},{language:"scala",files:["build.sbt"],extensions:[".scala"]},{language:"python",files:["pyproject.toml","setup.py","setup.cfg","Pipfile"],extensions:[".py",".pyi"]},{language:"ruby",files:["Gemfile"],extensions:[".rb"]},{language:"cpp",files:["compile_commands.json","CMakeLists.txt","Makefile"],extensions:[".cc",".cpp",".cxx",".hpp",".hh",".hxx"]},{language:"c",files:["compile_commands.json","CMakeLists.txt","Makefile"],extensions:[".c",".h"]},{language:"csharp",globs:["*.csproj","*.sln"],extensions:[".cs"]},{language:"vb",globs:["*.vbproj"],extensions:[".vb"]},{language:"dart",files:["pubspec.yaml"],extensions:[".dart"]},{language:"php",files:["composer.json"],extensions:[".php"]},{language:"javascript",files:["package.json"],extensions:[".js",".jsx",".mjs",".cjs"]}];function q(e){let n=[],t=be(e),r=Ie(e);for(let a of ye){if(Se(e,a.files)){n.push(a.language);continue}if(Pe(t,a.globs)){n.push(a.language);continue}ke(r,a.extensions)&&n.push(a.language)}return n.includes("typescript")&&_(n,"javascript"),n.includes("cpp")&&!r.has(".c")&&_(n,"c"),n}function be(e){try{return T(e)}catch{return[]}}function Se(e,n){return n?.length?n.some(t=>he(W(e,t))):!1}function Pe(e,n){return n?.length?e.some(t=>n.some(r=>ve(t,r))):!1}function ve(e,n){if(n==="*")return!0;if(!n.includes("*"))return e===n;let[t,r]=n.split("*");return e.startsWith(t??"")&&e.endsWith(r??"")}function Ie(e){let n=Re(e);if(n)return n;let t=new Set,r=[e];for(;r.length>0;){let a=r.pop();if(!a)continue;let i;try{i=T(a,{withFileTypes:!0})}catch{continue}for(let s of i){if(s.name.startsWith(".")&&!s.name.endsWith("proj")&&!s.name.endsWith("sln")&&s.isDirectory())continue;let o=W(a,s.name);if(s.isDirectory()){xe.has(s.name)||r.push(o);continue}let p=U(s.name).toLowerCase();p&&t.add(p)}}return t}function Re(e){try{let n=fe("git",["-C",e,"ls-files","-co","--exclude-standard","--","."],{encoding:"utf-8",maxBuffer:26214400,stdio:["ignore","pipe","ignore"]}),t=new Set;for(let r of n.split(`
2
- `)){if(!r)continue;let a=U(r).toLowerCase();a&&t.add(a)}return t}catch{return null}}function ke(e,n){return n?.length?n.some(t=>e.has(t)):!1}function _(e,n){let t=e.indexOf(n);t!==-1&&e.splice(t,1)}import{existsSync as z,readdirSync as De}from"fs";import{join as R}from"path";var Oe={typescript:{language:"typescript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:e,pnpmWorkspaces:n,indexerBinary:t})=>{let r=["index","--infer-tsconfig","--output",e,"--no-progress-bar"];return n&&r.splice(1,0,"--pnpm-workspaces"),{binary:t,args:r}},markerFiles:["tsconfig.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},javascript:{language:"javascript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:e,indexerBinary:n})=>({binary:n,args:["index","--infer-tsconfig","--output",e,"--no-progress-bar"]}),markerFiles:["package.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},java:{language:"java",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:["pom.xml","build.gradle"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},scala:{language:"scala",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:["build.sbt"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},kotlin:{language:"kotlin",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:["build.gradle.kts"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},rust:{language:"rust",indexerBinary:"rust-analyzer",checkCommand:"rust-analyzer --version",indexArgs:({outputPath:e})=>({binary:"rust-analyzer",args:["scip",".","--output",e]}),markerFiles:["Cargo.toml"],installMethods:[{label:"rustup",prerequisite:"rustup",binary:"rustup",args:["component","add","rust-analyzer"]}],installUrl:"https://github.com/rust-lang/rust-analyzer"},python:{language:"python",indexerBinary:"scip-python-plus",binaryAliases:["scip-python"],checkCommand:"scip-python-plus --version",indexArgs:({outputPath:e,indexerBinary:n})=>({binary:n,args:["index","--output",e,"--project-name","project"]}),markerFiles:["pyproject.toml","setup.py"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","scip-python-plus"]}],installUrl:"https://github.com/PlunderStruck/scip-python",bundledNpmPackage:"scip-python-plus"},ruby:{language:"ruby",indexerBinary:"scip-ruby",checkCommand:"scip-ruby --version",indexArgs:({indexerBinary:e})=>({binary:e,args:["--dir","."]}),defaultOutputPath:"index.scip",markerFiles:["Gemfile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-ruby/releases"},go:{language:"go",indexerBinary:"scip-go",checkCommand:"scip-go --version",indexArgs:({outputPath:e})=>({binary:"scip-go",args:["--output",e]}),markerFiles:["go.mod"],installMethods:[{label:"go install",prerequisite:"go",binary:"go",args:["install","github.com/sourcegraph/scip-go@latest"]}],installUrl:"https://github.com/sourcegraph/scip-go"},cpp:{language:"cpp",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:e})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",e]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},c:{language:"c",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:e})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",e]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},csharp:{language:"csharp",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:e,outputPath:n})=>({binary:"scip-dotnet",args:["index",J(e,[".sln",".csproj"])??e,"--output",n,"--working-directory",e]}),markerFiles:["*.csproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},vb:{language:"vb",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:e,outputPath:n})=>({binary:"scip-dotnet",args:["index",J(e,[".sln",".vbproj"])??e,"--output",n,"--working-directory",e]}),markerFiles:["*.vbproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},dart:{language:"dart",indexerBinary:"scip-dart",checkCommand:"scip-dart --version",indexArgs:({indexerBinary:e,outputPath:n})=>({binary:e,args:["--output",n]}),markerFiles:["pubspec.yaml"],installMethods:[{label:"dart pub",prerequisite:"dart",binary:"dart",args:["pub","global","activate","scip_dart"]}],installUrl:"https://github.com/Workiva/scip-dart/releases"},php:{language:"php",indexerBinary:"scip-php",projectLocalBinaries:["vendor/davidrjenni/scip-php/bin/scip-php","vendor/bin/scip-php"],checkCommand:"scip-php --version",indexArgs:({projectRoot:e,indexerBinary:n})=>{let t=R(e,"vendor","bin","scip-php"),r=R(e,"vendor","davidrjenni","scip-php","bin","scip-php");return{binary:"php",args:["-d","error_reporting=E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED",z(r)?r:z(t)?t:n]}},defaultOutputPath:"index.scip",markerFiles:["composer.json"],installMethods:[],installUrl:"https://github.com/davidrjenni/scip-php/releases"}};function k(e){return Oe[e]}function J(e,n){let t;try{t=De(e)}catch{return null}for(let r of t)if(n.some(a=>r.endsWith(a)))return R(e,r);return null}import{readFileSync as Le,writeFileSync as je}from"fs";import{create as D}from"@bufbuild/protobuf";import{deserializeSCIP as Ce,serializeSCIP as we,DocumentSchema as Ee,IndexSchema as $e,SymbolInformationSchema as Fe}from"@c4312/scip";function Be(e){if(e.length===0)throw new Error("Cannot merge zero SCIP indexes");if(e.length===1)return e[0];let n=Me(e),t=Ne(e.flatMap(a=>a.documents??[])),r=H(e.flatMap(a=>a.externalSymbols??[]));return D($e,{metadata:n,documents:t,externalSymbols:r})}function G(e,n){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let t=e.map(a=>Ce(Le(a))),r=Be(t);return je(n,Buffer.from(we(r))),{documentCount:r.documents.length,externalSymbolCount:r.externalSymbols.length,inputCount:e.length}}function Me(e){let n=e[0]?.metadata;if(!n)return;let t=n.projectRoot;for(let r of e.slice(1)){let a=r.metadata?.projectRoot;if(t&&a&&a!==t)throw new Error(`Cannot merge SCIP indexes with different project roots: ${t} vs ${a}`)}return n}function Ne(e){let n=new Map;for(let t of e){let r=n.get(t.relativePath);if(!r){n.set(t.relativePath,t);continue}n.set(t.relativePath,D(Ee,{language:r.language||t.language,relativePath:r.relativePath||t.relativePath,occurrences:[...r.occurrences,...t.occurrences],symbols:H([...r.symbols,...t.symbols]),text:_e(r.text,t.text),positionEncoding:r.positionEncoding||t.positionEncoding}))}return[...n.values()]}function H(e){let n=new Map;for(let t of e){let r=n.get(t.symbol);if(!r){n.set(t.symbol,t);continue}n.set(t.symbol,D(Fe,{symbol:r.symbol,documentation:Te([...r.documentation,...t.documentation]),relationships:Ae([...r.relationships,...t.relationships]),kind:r.kind||t.kind,displayName:r.displayName||t.displayName,enclosingSymbol:r.enclosingSymbol||t.enclosingSymbol,signatureDocumentation:r.signatureDocumentation??t.signatureDocumentation}))}return[...n.values()]}function Ae(e){let n=new Set,t=[];for(let r of e){let a=[r.symbol,r.isReference?"1":"0",r.isImplementation?"1":"0",r.isTypeDefinition?"1":"0",r.isDefinition?"1":"0"].join("|");n.has(a)||(n.add(a),t.push(r))}return t}function _e(e,n){return e?n?e.length>=n.length?e:n:e:n}function Te(e){return[...new Set(e)]}import{readFileSync as Ue,writeFileSync as We}from"fs";import{create as X}from"@bufbuild/protobuf";import{deserializeSCIP as qe,DocumentSchema as ze,IndexSchema as Je,serializeSCIP as Ge,SymbolRole as He}from"@c4312/scip";function Q(e){let n;try{n=qe(Ue(e))}catch{return{removedDefinitionOccurrences:0,touchedDocuments:0}}let t=Xe(n);return t.removedDefinitionOccurrences>0&&We(e,Buffer.from(Ge(t.index))),{removedDefinitionOccurrences:t.removedDefinitionOccurrences,touchedDocuments:t.touchedDocuments}}function Xe(e){let n=new Set;for(let i of e.documents)for(let s of i.symbols)s.symbol&&n.add(s.symbol);for(let i of e.externalSymbols)i.symbol&&n.add(i.symbol);let t=0,r=0,a=[];for(let i of e.documents){let s=i.occurrences.filter(o=>(o.symbolRoles&He.Definition)===0||n.has(o.symbol)?!0:(t+=1,!1));if(s.length===i.occurrences.length){a.push(i);continue}r+=1,a.push(X(ze,{language:i.language,relativePath:i.relativePath,occurrences:s,symbols:i.symbols,text:i.text,positionEncoding:i.positionEncoding}))}return{index:t===0?e:X(Je,{metadata:e.metadata,documents:a,externalSymbols:e.externalSymbols}),removedDefinitionOccurrences:t,touchedDocuments:r}}import{execFile as Qe}from"child_process";import{existsSync as x,renameSync as L,rmSync as j}from"fs";import{cpus as Ke}from"os";import{join as K}from"path";function Ve(e,n,t){if(!e.defaultOutputPath)return;let r=K(n,e.defaultOutputPath);t!==r&&x(r)&&L(r,t)}function Ye(e,n,t){if(!e.defaultOutputPath)return null;let r=K(n,e.defaultOutputPath);if(r===t)return null;let a=`${t}.default-output-backup`;return j(a,{force:!0}),x(r)?(L(r,a),{defaultOutputPath:r,backupPath:a}):{defaultOutputPath:r,backupPath:null}}function Ze(e){e&&(j(e.defaultOutputPath,{force:!0}),e.backupPath&&x(e.backupPath)&&L(e.backupPath,e.defaultOutputPath))}function en(e,n){if(e<=1)return 1;let t=Number(process.env.SCIP_QUERY_INDEXER_CONCURRENCY??0),r=Number.isFinite(n)&&n&&n>0?n:Number.isFinite(t)&&t>0?t:Math.min(2,Math.max(1,Ke().length-1));return Math.max(1,Math.min(e,Math.floor(r)))}async function V(e,n,t,r){let a=e.filter(u=>u.config.defaultOutputPath),i=e.filter(u=>!u.config.defaultOutputPath),s=[],o=en(i.length,r),p=await tn(i,o,u=>O(u,n,t));if(o>1){let u=new Map;for(let c of p.filter(l=>l.skipped)){let l=i.find(h=>h.language===c.language);l&&(t(`Retrying ${l.language} indexer serially after parallel failure...`),u.set(l.language,await O(l,n,t)))}s.push(...p.map(c=>u.get(c.language)??c))}else s.push(...p);for(let u of a)s.push(await O(u,n,t));return s.sort((u,c)=>e.findIndex(l=>l.language===u.language)-e.findIndex(l=>l.language===c.language))}async function O(e,n,t){t(`Indexing ${e.language} with ${e.resolvedBinary}...`),j(e.scipPath,{force:!0});let r=Ye(e.config,n,e.scipPath);try{await nn(e.binary,e.args,{cwd:n,env:e.env,maxBuffer:50*1024*1024}),Ve(e.config,n,e.scipPath)}catch(a){let i=a instanceof Error?a.message:String(a),s=`${e.resolvedBinary} indexer failed: ${i.split(`
3
- `)[0]}`;return t(`Skipping ${e.language}: ${s}`),{language:e.language,scipPath:e.scipPath,skipped:{language:e.language,reason:s}}}finally{Ze(r)}if(!x(e.scipPath)){let a=`${e.resolvedBinary} indexer completed but did not produce ${e.scipPath}`;return t(`Skipping ${e.language}: ${a}`),{language:e.language,scipPath:e.scipPath,skipped:{language:e.language,reason:a}}}return{language:e.language,scipPath:e.scipPath}}function nn(e,n,t){return new Promise((r,a)=>{Qe(e,[...n],t,i=>{i?a(i):r()})})}async function tn(e,n,t){if(e.length===0)return[];let r=new Array(e.length),a=0,i=Math.max(1,Math.min(e.length,n)),s=Array.from({length:i},async()=>{for(;a<e.length;){let o=a++;r[o]=await t(e[o])}});return await Promise.all(s),r}import{execFileSync as w}from"child_process";import{existsSync as C,readFileSync as rn}from"fs";import{createRequire as an}from"module";import{platform as sn}from"os";import{dirname as Y,join as y}from"path";var on=an(import.meta.url);function E(e){return[e.indexerBinary,...e.binaryAliases??[]]}function $(e){let n=E(e);return n.length===1?n[0]:n.join(" or ")}function b(e){for(let n of E(e))if(m(n))return n;return ln(e)}function Z(e){return b(e)!==null||un(e)}function un(e){return ee(e)!==null}function ln(e){let n=ee(e);if(!n)return null;let r=JSON.parse(rn(n,"utf8")).bin;if(!r)return null;if(typeof r=="string")return y(Y(n),r);for(let a of E(e)){let i=r[a];if(i)return y(Y(n),i)}return null}function ee(e){if(!e.bundledNpmPackage)return null;try{return on.resolve(`${e.bundledNpmPackage}/package.json`)}catch{return null}}function ne(e,n){for(let t of e.projectLocalBinaries??[]){let r=y(n,t);if(C(r))return r}return null}function te(e,n=process.env,t=e.indexerBinary){if(e.indexerBinary!=="scip-dotnet"||ae(t,n))return n;let r=pn(t,n);return r?{...n,DOTNET_ROOT:r}:n}function re(e,n){let t=e.installMethods,r=$(e);if(!t?.length)return n(`No auto-install method available for ${r}.`),e.installUrl&&n(`Install manually from: ${e.installUrl}`),!1;for(let a of t)if(m(a.prerequisite)){n(`Installing ${r} via ${a.label}...`);try{w(a.binary,a.args,{stdio:"inherit",timeout:3e5,env:process.env});let i=b(e);if(i){let s=i===e.indexerBinary?"":` (using ${i})`;return n(`Successfully installed ${r} via ${a.label}${s}`),!0}n(`${a.label} command completed but ${r} was not found on PATH`)}catch(i){let s=i instanceof Error?i.message:String(i);n(`${a.label} install failed: ${s}`)}}return n(`Could not auto-install ${r}.`),e.installUrl&&n(`Install manually from: ${e.installUrl}`),!1}function pn(e,n){for(let t of cn(n))if(ae(e,{...n,DOTNET_ROOT:t}))return t;return null}function cn(e){let n=[],t=e.DOTNET_ROOT;if(t&&C(t)&&n.push(t),sn()==="darwin"&&m("brew"))try{let r=w("brew",["--prefix","dotnet@9"],{stdio:"pipe",env:e}).toString().trim(),a=y(r,"libexec");C(a)&&!n.includes(a)&&n.push(a)}catch{}return n}function ae(e,n){try{return w(e,["--version"],{stdio:"pipe",env:n}),!0}catch{return!1}}async function oe(e){let{projectRoot:n,maxHeapMb:t=8192,onStatus:r=console.log,skipAutoInstall:a=!1}=e,i=yn(e),s=Date.now();B(d(i.outputScip),{recursive:!0}),B(d(i.outputDb),{recursive:!0});let o=e.languages??q(n);if(o.length===0)throw new Error("No supported languages detected in this project. Looked for: tsconfig.json, Cargo.toml, go.mod, pyproject.toml, etc.");r(`Detected languages: ${o.join(", ")}`);let p=Mn(n,o,{pnpmWorkspaces:e.pnpmWorkspaces}),u=Fn(g(d(i.outputDb),"index.lock")),c=null;try{let l=bn({opts:e,paths:i,languages:o,fingerprint:p,start:s,onStatus:r});if(l)return l;Dn(a,r);let h=Sn(i);return c=h.runDir,await Pn({opts:e,languages:o,projectRoot:n,paths:i,tempPaths:h,fingerprint:p,start:s,maxHeapMb:t,skipAutoInstall:a,onStatus:r})}finally{c&&N(c,{recursive:!0,force:!0}),u()}}function yn(e){let n=e.outputScip??g(e.projectRoot,"index.scip"),t=e.outputDb??g(e.projectRoot,"index.db");return{outputScip:n,outputDb:t,metaPath:g(d(t),"meta.json")}}function bn(e){if(e.opts.skipIfUnchanged===!1||!P(e.paths.outputScip)||!P(e.paths.outputDb)||!Nn(e.paths.metaPath,e.fingerprint))return null;v({projectRoot:e.opts.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus});let n=Date.now()-e.start;return e.onStatus(`Index unchanged; reused existing SQLite index in ${(n/1e3).toFixed(1)}s`),{languages:e.languages,indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:n,reused:!0,skipped:[]}}function Sn(e){let n=fn(g(d(e.outputDb),"reindex-"));return{runDir:n,tempOutputScip:g(n,S(e.outputScip)),tempOutputDb:g(n,S(e.outputDb)),tempMetaPath:g(n,S(e.metaPath))}}async function Pn(e){let n={...process.env,NODE_OPTIONS:`--max-old-space-size=${e.maxHeapMb}`},{indexedOutputs:t,skippedLanguages:r,reusedLanguages:a}=await vn(e,n);a.length>0&&e.onStatus(`Reused ${a.length} cached language shard(s): ${a.join(", ")}`),In(e,n,t,r);let i=Date.now()-e.start;return e.onStatus(`Done in ${(i/1e3).toFixed(1)}s`),{languages:t.map(s=>s.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:i,reused:!1,skipped:r}}async function vn(e,n){let t=Rn(e),r=new Set(t.map(u=>u.language));for(let u of r)e.onStatus(`Reusing cached ${u} SCIP shard (language inputs unchanged).`);let{preparedRuns:a,skippedLanguages:i}=On({languages:e.languages.filter(u=>!r.has(u)),tempOutputScip:e.tempPaths.tempOutputScip,projectRoot:e.projectRoot,env:n,skipAutoInstall:e.skipAutoInstall,pnpmWorkspaces:e.opts.pnpmWorkspaces,onStatus:e.onStatus}),s=await V(a,e.projectRoot,e.onStatus,e.opts.indexerConcurrency),{indexedOutputs:o}=jn(s,i),p=[...t,...o];return Cn(p,i,e.languages,e.opts.allowPartial,e.onStatus),{indexedOutputs:p,skippedLanguages:i,reusedLanguages:[...r]}}function In(e,n,t,r){kn(e.paths.outputDb,t),wn(t,e.tempPaths.tempOutputScip,e.onStatus),En(e.tempPaths.tempOutputScip,e.tempPaths.tempOutputDb,n,e.onStatus),v({projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,onStatus:e.onStatus}),An(e.tempPaths.tempMetaPath,{version:3,status:r.length===0?"complete":"partial",updatedAt:new Date().toISOString(),fingerprint:e.fingerprint,languageFingerprints:ue(e.projectRoot,e.languages,{pnpmWorkspaces:e.opts.pnpmWorkspaces}),requestedLanguages:e.languages,indexedLanguages:t.map(a=>a.language),skipped:[...r]}),Bn({tempOutputScip:e.tempPaths.tempOutputScip,tempOutputDb:e.tempPaths.tempOutputDb,tempMetaPath:e.tempPaths.tempMetaPath,outputScip:e.paths.outputScip,outputDb:e.paths.outputDb,metaPath:e.paths.metaPath})}function Rn(e){let n;try{n=JSON.parse(ie(e.paths.metaPath,"utf-8"))}catch{return[]}if(n.version!==3||!n.languageFingerprints)return[];let t=[],r=ue(e.projectRoot,e.languages,{pnpmWorkspaces:e.opts.pnpmWorkspaces});for(let a of e.languages){let i=le(e.paths.outputDb,a);P(i)&&f(n.languageFingerprints[a])===f(r[a])&&t.push({language:a,scipPath:i})}return t}function kn(e,n){for(let t of n){let r=le(e,t.language);B(d(r),{recursive:!0}),t.scipPath!==r&&mn(t.scipPath,r)}}function Dn(e,n){if(!m("scip")){if(e)throw new Error(`The scip CLI is required but not found on PATH.
4
- Install from: https://github.com/sourcegraph/scip/releases`);if(n("scip CLI not found on PATH. Attempting auto-install..."),!A(n))throw new Error(`The scip CLI is required but could not be installed.
5
- Install manually from: https://github.com/sourcegraph/scip/releases`)}}function On(e){let n=[],t=[],r=e.languages.map((a,i)=>({language:a,scipPath:e.languages.length>1?$n(e.tempOutputScip,a,i):e.tempOutputScip}));for(let{language:a,scipPath:i}of r){let s=Ln({...e,language:a,scipPath:i});"skipped"in s?t.push(s.skipped):n.push(s.prepared)}return{preparedRuns:n,skippedLanguages:t}}function Ln(e){let n=k(e.language),t=$(n),r=ne(n,e.projectRoot);if(!r&&!Z(n)){if(e.skipAutoInstall){let o=`${t} not found on PATH (auto-install disabled). ${n.installUrl??""}`.trim();return e.onStatus(`Skipping ${e.language}: ${o}`),{skipped:{language:e.language,reason:o}}}if(e.onStatus(`${t} not found. Attempting auto-install...`),!re(n,e.onStatus)){let o=`${t} could not be auto-installed. ${n.installUrl?`Install manually from ${n.installUrl}`:`Install ${t} and put it on PATH.`}`;return e.onStatus(`Skipping ${e.language}: ${o}`),{skipped:{language:e.language,reason:o}}}}let a=r??b(n);if(!a){let o=`${t} was not found after installation checks.`;return e.onStatus(`Skipping ${e.language}: ${o}`),{skipped:{language:e.language,reason:o}}}let{binary:i,args:s}=n.indexArgs({projectRoot:e.projectRoot,outputPath:e.scipPath,pnpmWorkspaces:e.pnpmWorkspaces,indexerBinary:a});return{prepared:{language:e.language,scipPath:e.scipPath,config:n,resolvedBinary:a,binary:i,args:s,env:te(n,e.env,a)}}}function jn(e,n){let t=[];for(let r of e)r.skipped?n.push(r.skipped):t.push({language:r.language,scipPath:r.scipPath});return{indexedOutputs:t}}function Cn(e,n,t,r,a){if(e.length===0){let i=n.map(s=>` - ${s.language}: ${s.reason}`).join(`
1
+ import{a as I,b as R}from"./chunk-KPHKX4LP.js";import{a as h,b as v,f as _}from"./chunk-ONPCQ2PM.js";import{execFileSync as dn}from"child_process";import{closeSync as mn,copyFileSync as fn,existsSync as P,mkdirSync as M,mkdtempSync as hn,openSync as xn,readFileSync as se,renameSync as N,rmSync as A,writeFileSync as oe}from"fs";import{basename as S,dirname as d,extname as yn,join as g}from"path";import{execFileSync as he}from"child_process";import{existsSync as xe,readdirSync as U}from"fs";import{extname as W,join as q}from"path";var ye=new Set([".git",".hg",".svn",".idea",".vscode","node_modules","vendor","dist","build","target","bin","obj",".dart_tool",".gradle",".next",".venv","venv","__pycache__"]),be=[{language:"typescript",files:["tsconfig.json","tsconfig.base.json"],extensions:[".ts",".tsx",".mts",".cts"]},{language:"rust",files:["Cargo.toml"],extensions:[".rs"]},{language:"go",files:["go.mod"],extensions:[".go"]},{language:"java",files:["pom.xml","build.gradle","build.gradle.kts"],extensions:[".java"]},{language:"kotlin",files:["build.gradle.kts"],extensions:[".kt",".kts"]},{language:"scala",files:["build.sbt"],extensions:[".scala"]},{language:"python",files:["pyproject.toml","setup.py","setup.cfg","Pipfile"],extensions:[".py",".pyi"]},{language:"ruby",files:["Gemfile"],extensions:[".rb"]},{language:"cpp",files:["compile_commands.json","CMakeLists.txt","Makefile"],extensions:[".cc",".cpp",".cxx",".hpp",".hh",".hxx"]},{language:"c",files:["compile_commands.json","CMakeLists.txt","Makefile"],extensions:[".c",".h"]},{language:"csharp",globs:["*.csproj","*.sln"],extensions:[".cs"]},{language:"vb",globs:["*.vbproj"],extensions:[".vb"]},{language:"dart",files:["pubspec.yaml"],extensions:[".dart"]},{language:"php",files:["composer.json"],extensions:[".php"]},{language:"javascript",files:["package.json"],extensions:[".js",".jsx",".mjs",".cjs"]}];function z(e){let n=[],t=Se(e),r=Re(e);for(let a of be){if(Pe(e,a.files)){n.push(a.language);continue}if(ve(t,a.globs)){n.push(a.language);continue}De(r,a.extensions)&&n.push(a.language)}return n.includes("typescript")&&T(n,"javascript"),n.includes("cpp")&&!r.has(".c")&&T(n,"c"),n}function Se(e){try{return U(e)}catch{return[]}}function Pe(e,n){return n?.length?n.some(t=>xe(q(e,t))):!1}function ve(e,n){return n?.length?e.some(t=>n.some(r=>Ie(t,r))):!1}function Ie(e,n){if(n==="*")return!0;if(!n.includes("*"))return e===n;let[t,r]=n.split("*");return e.startsWith(t??"")&&e.endsWith(r??"")}function Re(e){let n=ke(e);if(n)return n;let t=new Set,r=[e];for(;r.length>0;){let a=r.pop();if(!a)continue;let i;try{i=U(a,{withFileTypes:!0})}catch{continue}for(let s of i){if(s.name.startsWith(".")&&!s.name.endsWith("proj")&&!s.name.endsWith("sln")&&s.isDirectory())continue;let o=q(a,s.name);if(s.isDirectory()){ye.has(s.name)||r.push(o);continue}let p=W(s.name).toLowerCase();p&&t.add(p)}}return t}function ke(e){try{let n=he("git",["-C",e,"ls-files","-co","--exclude-standard","--","."],{encoding:"utf-8",maxBuffer:26214400,stdio:["ignore","pipe","ignore"]}),t=new Set;for(let r of n.split(`
2
+ `)){if(!r)continue;let a=W(r).toLowerCase();a&&t.add(a)}return t}catch{return null}}function De(e,n){return n?.length?n.some(t=>e.has(t)):!1}function T(e,n){let t=e.indexOf(n);t!==-1&&e.splice(t,1)}import{existsSync as J,readdirSync as Oe}from"fs";import{join as k}from"path";var Le={typescript:{language:"typescript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:e,pnpmWorkspaces:n,indexerBinary:t})=>{let r=["index","--infer-tsconfig","--output",e,"--no-progress-bar"];return n&&r.splice(1,0,"--pnpm-workspaces"),{binary:t,args:r}},markerFiles:["tsconfig.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},javascript:{language:"javascript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:e,indexerBinary:n})=>({binary:n,args:["index","--infer-tsconfig","--output",e,"--no-progress-bar"]}),markerFiles:["package.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},java:{language:"java",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:["pom.xml","build.gradle"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},scala:{language:"scala",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:["build.sbt"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},kotlin:{language:"kotlin",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:["build.gradle.kts"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},rust:{language:"rust",indexerBinary:"rust-analyzer",checkCommand:"rust-analyzer --version",indexArgs:({outputPath:e})=>({binary:"rust-analyzer",args:["scip",".","--output",e]}),markerFiles:["Cargo.toml"],installMethods:[{label:"rustup",prerequisite:"rustup",binary:"rustup",args:["component","add","rust-analyzer"]}],installUrl:"https://github.com/rust-lang/rust-analyzer"},python:{language:"python",indexerBinary:"scip-python-plus",binaryAliases:["scip-python"],checkCommand:"scip-python-plus --version",indexArgs:({outputPath:e,indexerBinary:n})=>({binary:n,args:["index","--output",e,"--project-name","project"]}),markerFiles:["pyproject.toml","setup.py"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","scip-python-plus"]}],installUrl:"https://github.com/PlunderStruck/scip-python",bundledNpmPackage:"scip-python-plus"},ruby:{language:"ruby",indexerBinary:"scip-ruby",checkCommand:"scip-ruby --version",indexArgs:({indexerBinary:e})=>({binary:e,args:["--dir","."]}),defaultOutputPath:"index.scip",markerFiles:["Gemfile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-ruby/releases"},go:{language:"go",indexerBinary:"scip-go",checkCommand:"scip-go --version",indexArgs:({outputPath:e})=>({binary:"scip-go",args:["--output",e]}),markerFiles:["go.mod"],installMethods:[{label:"go install",prerequisite:"go",binary:"go",args:["install","github.com/sourcegraph/scip-go@latest"]}],installUrl:"https://github.com/sourcegraph/scip-go"},cpp:{language:"cpp",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:e})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",e]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},c:{language:"c",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:e})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",e]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},csharp:{language:"csharp",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:e,outputPath:n})=>({binary:"scip-dotnet",args:["index",G(e,[".sln",".csproj"])??e,"--output",n,"--working-directory",e]}),markerFiles:["*.csproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},vb:{language:"vb",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:e,outputPath:n})=>({binary:"scip-dotnet",args:["index",G(e,[".sln",".vbproj"])??e,"--output",n,"--working-directory",e]}),markerFiles:["*.vbproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},dart:{language:"dart",indexerBinary:"scip-dart",checkCommand:"scip-dart --version",indexArgs:({indexerBinary:e,outputPath:n})=>({binary:e,args:["--output",n]}),markerFiles:["pubspec.yaml"],installMethods:[{label:"dart pub",prerequisite:"dart",binary:"dart",args:["pub","global","activate","scip_dart"]}],installUrl:"https://github.com/Workiva/scip-dart/releases"},php:{language:"php",indexerBinary:"scip-php",projectLocalBinaries:["vendor/davidrjenni/scip-php/bin/scip-php","vendor/bin/scip-php"],checkCommand:"scip-php --version",indexArgs:({projectRoot:e,indexerBinary:n})=>{let t=k(e,"vendor","bin","scip-php"),r=k(e,"vendor","davidrjenni","scip-php","bin","scip-php");return{binary:"php",args:["-d","error_reporting=E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED",J(r)?r:J(t)?t:n]}},defaultOutputPath:"index.scip",markerFiles:["composer.json"],installMethods:[],installUrl:"https://github.com/davidrjenni/scip-php/releases"}};function D(e){return Le[e]}function G(e,n){let t;try{t=Oe(e)}catch{return null}for(let r of t)if(n.some(a=>r.endsWith(a)))return k(e,r);return null}import{readFileSync as Ce,writeFileSync as je}from"fs";import{create as O}from"@bufbuild/protobuf";import{deserializeSCIP as we,serializeSCIP as Ee,DocumentSchema as $e,IndexSchema as Be,SymbolInformationSchema as Fe}from"@c4312/scip";function Me(e){if(e.length===0)throw new Error("Cannot merge zero SCIP indexes");if(e.length===1)return e[0];let n=Ne(e),t=Ae(e.flatMap(a=>a.documents??[])),r=X(e.flatMap(a=>a.externalSymbols??[]));return O(Be,{metadata:n,documents:t,externalSymbols:r})}function H(e,n){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let t=e.map(a=>we(Ce(a))),r=Me(t);return je(n,Buffer.from(Ee(r))),{documentCount:r.documents.length,externalSymbolCount:r.externalSymbols.length,inputCount:e.length}}function Ne(e){let n=e[0]?.metadata;if(!n)return;let t=n.projectRoot;for(let r of e.slice(1)){let a=r.metadata?.projectRoot;if(t&&a&&a!==t)throw new Error(`Cannot merge SCIP indexes with different project roots: ${t} vs ${a}`)}return n}function Ae(e){let n=new Map;for(let t of e){let r=n.get(t.relativePath);if(!r){n.set(t.relativePath,t);continue}n.set(t.relativePath,O($e,{language:r.language||t.language,relativePath:r.relativePath||t.relativePath,occurrences:[...r.occurrences,...t.occurrences],symbols:X([...r.symbols,...t.symbols]),text:Te(r.text,t.text),positionEncoding:r.positionEncoding||t.positionEncoding}))}return[...n.values()]}function X(e){let n=new Map;for(let t of e){let r=n.get(t.symbol);if(!r){n.set(t.symbol,t);continue}n.set(t.symbol,O(Fe,{symbol:r.symbol,documentation:Ue([...r.documentation,...t.documentation]),relationships:_e([...r.relationships,...t.relationships]),kind:r.kind||t.kind,displayName:r.displayName||t.displayName,enclosingSymbol:r.enclosingSymbol||t.enclosingSymbol,signatureDocumentation:r.signatureDocumentation??t.signatureDocumentation}))}return[...n.values()]}function _e(e){let n=new Set,t=[];for(let r of e){let a=[r.symbol,r.isReference?"1":"0",r.isImplementation?"1":"0",r.isTypeDefinition?"1":"0",r.isDefinition?"1":"0"].join("|");n.has(a)||(n.add(a),t.push(r))}return t}function Te(e,n){return e?n?e.length>=n.length?e:n:e:n}function Ue(e){return[...new Set(e)]}import{readFileSync as We,writeFileSync as qe}from"fs";import{create as Q}from"@bufbuild/protobuf";import{deserializeSCIP as ze,DocumentSchema as Je,IndexSchema as Ge,serializeSCIP as He,SymbolRole as Xe}from"@c4312/scip";function K(e){let n;try{n=ze(We(e))}catch{return{removedDefinitionOccurrences:0,touchedDocuments:0}}let t=Qe(n);return t.removedDefinitionOccurrences>0&&qe(e,Buffer.from(He(t.index))),{removedDefinitionOccurrences:t.removedDefinitionOccurrences,touchedDocuments:t.touchedDocuments}}function Qe(e){let n=new Set;for(let i of e.documents)for(let s of i.symbols)s.symbol&&n.add(s.symbol);for(let i of e.externalSymbols)i.symbol&&n.add(i.symbol);let t=0,r=0,a=[];for(let i of e.documents){let s=i.occurrences.filter(o=>(o.symbolRoles&Xe.Definition)===0||n.has(o.symbol)?!0:(t+=1,!1));if(s.length===i.occurrences.length){a.push(i);continue}r+=1,a.push(Q(Je,{language:i.language,relativePath:i.relativePath,occurrences:s,symbols:i.symbols,text:i.text,positionEncoding:i.positionEncoding}))}return{index:t===0?e:Q(Ge,{metadata:e.metadata,documents:a,externalSymbols:e.externalSymbols}),removedDefinitionOccurrences:t,touchedDocuments:r}}import{execFile as Ke}from"child_process";import{existsSync as x,renameSync as C,rmSync as j}from"fs";import{cpus as Ve}from"os";import{join as V}from"path";function Ye(e,n,t){if(!e.defaultOutputPath)return;let r=V(n,e.defaultOutputPath);t!==r&&x(r)&&C(r,t)}function Ze(e,n,t){if(!e.defaultOutputPath)return null;let r=V(n,e.defaultOutputPath);if(r===t)return null;let a=`${t}.default-output-backup`;return j(a,{force:!0}),x(r)?(C(r,a),{defaultOutputPath:r,backupPath:a}):{defaultOutputPath:r,backupPath:null}}function en(e){e&&(j(e.defaultOutputPath,{force:!0}),e.backupPath&&x(e.backupPath)&&C(e.backupPath,e.defaultOutputPath))}function nn(e,n){if(e<=1)return 1;let t=Number(process.env.SCIP_QUERY_INDEXER_CONCURRENCY??0),r=Number.isFinite(n)&&n&&n>0?n:Number.isFinite(t)&&t>0?t:Math.min(2,Math.max(1,Ve().length-1));return Math.max(1,Math.min(e,Math.floor(r)))}async function Y(e,n,t,r){let a=e.filter(u=>u.config.defaultOutputPath),i=e.filter(u=>!u.config.defaultOutputPath),s=[],o=nn(i.length,r),p=await rn(i,o,u=>L(u,n,t));if(o>1){let u=new Map;for(let c of p.filter(l=>l.skipped)){let l=i.find(f=>f.language===c.language);l&&(t(`Retrying ${l.language} indexer serially after parallel failure...`),u.set(l.language,await L(l,n,t)))}s.push(...p.map(c=>u.get(c.language)??c))}else s.push(...p);for(let u of a)s.push(await L(u,n,t));return s.sort((u,c)=>e.findIndex(l=>l.language===u.language)-e.findIndex(l=>l.language===c.language))}async function L(e,n,t){t(`Indexing ${e.language} with ${e.resolvedBinary}...`),j(e.scipPath,{force:!0});let r=Ze(e.config,n,e.scipPath);try{await tn(e.binary,e.args,{cwd:n,env:e.env,maxBuffer:50*1024*1024}),Ye(e.config,n,e.scipPath)}catch(a){let i=a instanceof Error?a.message:String(a),s=`${e.resolvedBinary} indexer failed: ${i.split(`
3
+ `)[0]}`;return t(`Skipping ${e.language}: ${s}`),{language:e.language,scipPath:e.scipPath,skipped:{language:e.language,reason:s}}}finally{en(r)}if(!x(e.scipPath)){let a=`${e.resolvedBinary} indexer completed but did not produce ${e.scipPath}`;return t(`Skipping ${e.language}: ${a}`),{language:e.language,scipPath:e.scipPath,skipped:{language:e.language,reason:a}}}return{language:e.language,scipPath:e.scipPath}}function tn(e,n,t){return new Promise((r,a)=>{Ke(e,[...n],t,i=>{i?a(i):r()})})}async function rn(e,n,t){if(e.length===0)return[];let r=new Array(e.length),a=0,i=Math.max(1,Math.min(e.length,n)),s=Array.from({length:i},async()=>{for(;a<e.length;){let o=a++;r[o]=await t(e[o])}});return await Promise.all(s),r}import{execFileSync as E}from"child_process";import{existsSync as w,readFileSync as an}from"fs";import{createRequire as sn}from"module";import{platform as on}from"os";import{dirname as Z,join as y}from"path";var un=sn(import.meta.url);function $(e){return[e.indexerBinary,...e.binaryAliases??[]]}function B(e){let n=$(e);return n.length===1?n[0]:n.join(" or ")}function b(e){for(let n of $(e))if(h(n))return n;return pn(e)}function ee(e){return b(e)!==null||ln(e)}function ln(e){return ne(e)!==null}function pn(e){let n=ne(e);if(!n)return null;let r=JSON.parse(an(n,"utf8")).bin;if(!r)return null;if(typeof r=="string")return y(Z(n),r);for(let a of $(e)){let i=r[a];if(i)return y(Z(n),i)}return null}function ne(e){if(!e.bundledNpmPackage)return null;try{return un.resolve(`${e.bundledNpmPackage}/package.json`)}catch{return null}}function te(e,n){for(let t of e.projectLocalBinaries??[]){let r=y(n,t);if(w(r))return r}return null}function re(e,n=process.env,t=e.indexerBinary){if(e.indexerBinary!=="scip-dotnet"||ie(t,n))return n;let r=cn(t,n);return r?{...n,DOTNET_ROOT:r}:n}function ae(e,n){let t=e.installMethods,r=B(e);if(!t?.length)return n(`No auto-install method available for ${r}.`),e.installUrl&&n(`Install manually from: ${e.installUrl}`),!1;for(let a of t)if(h(a.prerequisite)){n(`Installing ${r} via ${a.label}...`);try{E(a.binary,a.args,{stdio:"inherit",timeout:3e5,env:process.env});let i=b(e);if(i){let s=i===e.indexerBinary?"":` (using ${i})`;return n(`Successfully installed ${r} via ${a.label}${s}`),!0}n(`${a.label} command completed but ${r} was not found on PATH`)}catch(i){let s=i instanceof Error?i.message:String(i);n(`${a.label} install failed: ${s}`)}}return n(`Could not auto-install ${r}.`),e.installUrl&&n(`Install manually from: ${e.installUrl}`),!1}function cn(e,n){for(let t of gn(n))if(ie(e,{...n,DOTNET_ROOT:t}))return t;return null}function gn(e){let n=[],t=e.DOTNET_ROOT;if(t&&w(t)&&n.push(t),on()==="darwin"&&h("brew"))try{let r=E("brew",["--prefix","dotnet@9"],{stdio:"pipe",env:e}).toString().trim(),a=y(r,"libexec");w(a)&&!n.includes(a)&&n.push(a)}catch{}return n}function ie(e,n){try{return E(e,["--version"],{stdio:"pipe",env:n}),!0}catch{return!1}}async function ue(e){let{projectRoot:n,maxHeapMb:t=8192,onStatus:r=console.log,skipAutoInstall:a=!1}=e,i=bn(e),s=Date.now();M(d(i.outputScip),{recursive:!0}),M(d(i.outputDb),{recursive:!0});let o=e.languages??z(n);if(o.length===0)throw new Error("No supported languages detected in this project. Looked for: tsconfig.json, Cargo.toml, go.mod, pyproject.toml, etc.");r(`Detected languages: ${o.join(", ")}`);let p=Nn(n,o,{pnpmWorkspaces:e.pnpmWorkspaces}),u=Fn(g(d(i.outputDb),"index.lock")),c=null;try{let l=Sn({opts:e,paths:i,languages:o,fingerprint:p,start:s,onStatus:r});if(l)return l;On(a,r);let f=Pn(i);return c=f.runDir,await vn({opts:e,languages:o,projectRoot:n,paths:i,tempPaths:f,fingerprint:p,start:s,maxHeapMb:t,skipAutoInstall:a,onStatus:r})}finally{c&&A(c,{recursive:!0,force:!0}),u()}}function bn(e){let n=e.outputScip??g(e.projectRoot,"index.scip"),t=e.outputDb??g(e.projectRoot,"index.db");return{outputScip:n,outputDb:t,metaPath:g(d(t),"meta.json")}}function Sn(e){if(e.opts.skipIfUnchanged===!1||!P(e.paths.outputScip)||!P(e.paths.outputDb)||!An(e.paths.metaPath,e.fingerprint))return null;I({projectRoot:e.opts.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus});let n=Date.now()-e.start;return e.onStatus(`Index unchanged; reused existing SQLite index in ${(n/1e3).toFixed(1)}s`),{languages:e.languages,indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:n,reused:!0,skipped:[]}}function Pn(e){let n=hn(g(d(e.outputDb),"reindex-"));return{runDir:n,tempOutputScip:g(n,S(e.outputScip)),tempOutputDb:g(n,S(e.outputDb)),tempMetaPath:g(n,S(e.metaPath))}}async function vn(e){let n={...process.env,NODE_OPTIONS:`--max-old-space-size=${e.maxHeapMb}`},{indexedOutputs:t,skippedLanguages:r,reusedLanguages:a}=await In(e,n);a.length>0&&e.onStatus(`Reused ${a.length} cached language shard(s): ${a.join(", ")}`),Rn(e,n,t,r);let i=Date.now()-e.start;return e.onStatus(`Done in ${(i/1e3).toFixed(1)}s`),{languages:t.map(s=>s.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:i,reused:!1,skipped:r}}async function In(e,n){let t=kn(e),r=new Set(t.map(u=>u.language));for(let u of r)e.onStatus(`Reusing cached ${u} SCIP shard (language inputs unchanged).`);let{preparedRuns:a,skippedLanguages:i}=Ln({languages:e.languages.filter(u=>!r.has(u)),tempOutputScip:e.tempPaths.tempOutputScip,projectRoot:e.projectRoot,env:n,skipAutoInstall:e.skipAutoInstall,pnpmWorkspaces:e.opts.pnpmWorkspaces,onStatus:e.onStatus}),s=await Y(a,e.projectRoot,e.onStatus,e.opts.indexerConcurrency),{indexedOutputs:o}=jn(s,i),p=[...t,...o];return wn(p,i,e.languages,e.opts.allowPartial,e.onStatus),{indexedOutputs:p,skippedLanguages:i,reusedLanguages:[...r]}}function Rn(e,n,t,r){Dn(e.paths.outputDb,t),En(t,e.tempPaths.tempOutputScip,e.onStatus),$n(e.tempPaths.tempOutputScip,e.tempPaths.tempOutputDb,n,e.onStatus),I({projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,onStatus:e.onStatus}),_n(e.tempPaths.tempMetaPath,{version:3,status:r.length===0?"complete":"partial",updatedAt:new Date().toISOString(),fingerprint:e.fingerprint,languageFingerprints:le(e.projectRoot,e.languages,{pnpmWorkspaces:e.opts.pnpmWorkspaces}),requestedLanguages:e.languages,indexedLanguages:t.map(a=>a.language),skipped:[...r]}),Mn({tempOutputScip:e.tempPaths.tempOutputScip,tempOutputDb:e.tempPaths.tempOutputDb,tempMetaPath:e.tempPaths.tempMetaPath,outputScip:e.paths.outputScip,outputDb:e.paths.outputDb,metaPath:e.paths.metaPath})}function kn(e){let n;try{n=JSON.parse(se(e.paths.metaPath,"utf-8"))}catch{return[]}if(n.version!==3||!n.languageFingerprints)return[];let t=[],r=le(e.projectRoot,e.languages,{pnpmWorkspaces:e.opts.pnpmWorkspaces});for(let a of e.languages){let i=pe(e.paths.outputDb,a);P(i)&&m(n.languageFingerprints[a])===m(r[a])&&t.push({language:a,scipPath:i})}return t}function Dn(e,n){for(let t of n){let r=pe(e,t.language);M(d(r),{recursive:!0}),t.scipPath!==r&&fn(t.scipPath,r)}}function On(e,n){if(!v()){if(e)throw new Error(`The scip CLI is required but not found on PATH.
4
+ Install from: https://github.com/sourcegraph/scip/releases`);if(n("scip CLI not found on PATH. Attempting auto-install..."),!_(n))throw new Error(`The scip CLI is required but could not be installed.
5
+ Install manually from: https://github.com/sourcegraph/scip/releases`)}}function Ln(e){let n=[],t=[],r=e.languages.map((a,i)=>({language:a,scipPath:e.languages.length>1?Bn(e.tempOutputScip,a,i):e.tempOutputScip}));for(let{language:a,scipPath:i}of r){let s=Cn({...e,language:a,scipPath:i});"skipped"in s?t.push(s.skipped):n.push(s.prepared)}return{preparedRuns:n,skippedLanguages:t}}function Cn(e){let n=D(e.language),t=B(n),r=te(n,e.projectRoot);if(!r&&!ee(n)){if(e.skipAutoInstall){let o=`${t} not found on PATH (auto-install disabled). ${n.installUrl??""}`.trim();return e.onStatus(`Skipping ${e.language}: ${o}`),{skipped:{language:e.language,reason:o}}}if(e.onStatus(`${t} not found. Attempting auto-install...`),!ae(n,e.onStatus)){let o=`${t} could not be auto-installed. ${n.installUrl?`Install manually from ${n.installUrl}`:`Install ${t} and put it on PATH.`}`;return e.onStatus(`Skipping ${e.language}: ${o}`),{skipped:{language:e.language,reason:o}}}}let a=r??b(n);if(!a){let o=`${t} was not found after installation checks.`;return e.onStatus(`Skipping ${e.language}: ${o}`),{skipped:{language:e.language,reason:o}}}let{binary:i,args:s}=n.indexArgs({projectRoot:e.projectRoot,outputPath:e.scipPath,pnpmWorkspaces:e.pnpmWorkspaces,indexerBinary:a});return{prepared:{language:e.language,scipPath:e.scipPath,config:n,resolvedBinary:a,binary:i,args:s,env:re(n,e.env,a)}}}function jn(e,n){let t=[];for(let r of e)r.skipped?n.push(r.skipped):t.push({language:r.language,scipPath:r.scipPath});return{indexedOutputs:t}}function wn(e,n,t,r,a){if(e.length===0){let i=n.map(s=>` - ${s.language}: ${s.reason}`).join(`
6
6
  `);throw new Error(`No language indexers ran successfully. Install at least one indexer for the languages in this project.
7
7
  `+i)}if(n.length!==0&&(a(`Indexed ${e.length} of ${t.length} languages; skipped ${n.map(i=>i.language).join(", ")}.`),!r))throw new Error(`Failed to index all required languages; preserving the previous index. Pass --allow-partial to intentionally write an incomplete index.
8
8
  `+n.map(i=>` - ${i.language}: ${i.reason}`).join(`
9
- `))}function wn(e,n,t){e.length>1?(t(`Merging ${e.length} language indexes...`),G(e.map(r=>r.scipPath),n)):e[0].scipPath!==n&&M(e[0].scipPath,n)}function En(e,n,t,r){if(r("Converting to SQLite..."),!P(e))throw new Error(`SCIP index not found at ${e} after indexing`);try{let a=Q(e);a.removedDefinitionOccurrences>0&&r(`Sanitized ${a.removedDefinitionOccurrences} invalid definition occurrences across ${a.touchedDocuments} documents before SQLite conversion.`),gn("scip",["expt-convert","--output",n,e],{env:t,stdio:"pipe",maxBuffer:50*1024*1024})}catch(a){let i=a instanceof Error?a.message:String(a);throw new Error(`Failed to convert SCIP index to SQLite: ${i}`,{cause:a})}}function $n(e,n,t){let r=xn(e)||".scip",a=S(e,r);return g(d(e),`${a}.${t+1}.${n}${r}`)}function Fn(e){let n;try{n=hn(e,"wx")}catch(t){throw(typeof t=="object"&&t&&"code"in t?t.code:void 0)==="EEXIST"?new Error(`Another scip-query reindex is already running for ${d(e)}.`,{cause:t}):t}return se(n,JSON.stringify({pid:process.pid,startedAt:new Date().toISOString()})+`
10
- `),()=>{try{dn(n)}finally{N(e,{force:!0})}}}function Bn(e){F(e.tempOutputScip,e.outputScip),F(e.tempOutputDb,e.outputDb),F(e.tempMetaPath,e.metaPath)}function F(e,n){N(`${n}.tmp-replace`,{force:!0}),M(e,`${n}.tmp-replace`),M(`${n}.tmp-replace`,n)}function Mn(e,n,t){return{version:1,languages:[...n].sort(),pnpmWorkspaces:t.pnpmWorkspaces===!0,files:I(e)}}function ue(e,n,t){return Object.fromEntries(n.map(r=>{let a=k(r).markerFiles;return[r,{version:1,languages:[r],pnpmWorkspaces:r==="typescript"&&t.pnpmWorkspaces===!0,files:I(e,{language:r,markerFiles:a})}]}))}function le(e,n){return g(d(e),"language-indexes",`${n}.scip`)}function Nn(e,n){try{let t=JSON.parse(ie(e,"utf-8"));return(t.version===2||t.version===3)&&t.status==="complete"&&f(t.fingerprint)===f(n)&&f([...t.indexedLanguages??[]].sort())===f(n.languages)}catch{return!1}}function An(e,n){se(e,`${JSON.stringify(n,null,2)}
11
- `)}function f(e){return JSON.stringify(e)}var ge=process.env.SCIP_REINDEX_PROJECT_ROOT,de=process.env.SCIP_REINDEX_OUTPUT_SCIP,me=process.env.SCIP_REINDEX_OUTPUT_DB,pe=process.env.SCIP_REINDEX_LANGUAGES,_n=process.env.SCIP_REINDEX_PNPM_WORKSPACES==="1";(!ge||!de||!me)&&(console.error("reindex-worker: missing required env vars"),process.exit(1));var ce=pe?pe.split(",").filter(Boolean):void 0;oe({projectRoot:ge,outputScip:de,outputDb:me,languages:ce?.length?ce:void 0,pnpmWorkspaces:_n,onStatus:e=>process.stderr.write(`[reindex] ${e}
9
+ `))}function En(e,n,t){e.length>1?(t(`Merging ${e.length} language indexes...`),H(e.map(r=>r.scipPath),n)):e[0].scipPath!==n&&N(e[0].scipPath,n)}function $n(e,n,t,r){if(r("Converting to SQLite..."),!P(e))throw new Error(`SCIP index not found at ${e} after indexing`);try{let a=K(e);a.removedDefinitionOccurrences>0&&r(`Sanitized ${a.removedDefinitionOccurrences} invalid definition occurrences across ${a.touchedDocuments} documents before SQLite conversion.`);let i=v();if(!i)throw new Error("scip CLI is not available");dn(i,["expt-convert","--output",n,e],{env:t,stdio:"pipe",maxBuffer:50*1024*1024})}catch(a){let i=a instanceof Error?a.message:String(a);throw new Error(`Failed to convert SCIP index to SQLite: ${i}`,{cause:a})}}function Bn(e,n,t){let r=yn(e)||".scip",a=S(e,r);return g(d(e),`${a}.${t+1}.${n}${r}`)}function Fn(e){let n;try{n=xn(e,"wx")}catch(t){throw(typeof t=="object"&&t&&"code"in t?t.code:void 0)==="EEXIST"?new Error(`Another scip-query reindex is already running for ${d(e)}.`,{cause:t}):t}return oe(n,JSON.stringify({pid:process.pid,startedAt:new Date().toISOString()})+`
10
+ `),()=>{try{mn(n)}finally{A(e,{force:!0})}}}function Mn(e){F(e.tempOutputScip,e.outputScip),F(e.tempOutputDb,e.outputDb),F(e.tempMetaPath,e.metaPath)}function F(e,n){A(`${n}.tmp-replace`,{force:!0}),N(e,`${n}.tmp-replace`),N(`${n}.tmp-replace`,n)}function Nn(e,n,t){return{version:1,languages:[...n].sort(),pnpmWorkspaces:t.pnpmWorkspaces===!0,files:R(e)}}function le(e,n,t){return Object.fromEntries(n.map(r=>{let a=D(r).markerFiles;return[r,{version:1,languages:[r],pnpmWorkspaces:r==="typescript"&&t.pnpmWorkspaces===!0,files:R(e,{language:r,markerFiles:a})}]}))}function pe(e,n){return g(d(e),"language-indexes",`${n}.scip`)}function An(e,n){try{let t=JSON.parse(se(e,"utf-8"));return(t.version===2||t.version===3)&&t.status==="complete"&&m(t.fingerprint)===m(n)&&m([...t.indexedLanguages??[]].sort())===m(n.languages)}catch{return!1}}function _n(e,n){oe(e,`${JSON.stringify(n,null,2)}
11
+ `)}function m(e){return JSON.stringify(e)}var de=process.env.SCIP_REINDEX_PROJECT_ROOT,me=process.env.SCIP_REINDEX_OUTPUT_SCIP,fe=process.env.SCIP_REINDEX_OUTPUT_DB,ce=process.env.SCIP_REINDEX_LANGUAGES,Tn=process.env.SCIP_REINDEX_PNPM_WORKSPACES==="1";(!de||!me||!fe)&&(console.error("reindex-worker: missing required env vars"),process.exit(1));var ge=ce?ce.split(",").filter(Boolean):void 0;ue({projectRoot:de,outputScip:me,outputDb:fe,languages:ge?.length?ge:void 0,pnpmWorkspaces:Tn,onStatus:e=>process.stderr.write(`[reindex] ${e}
12
12
  `)}).then(()=>{process.exit(0)}).catch(e=>{console.error(`reindex-worker error: ${e}`),process.exit(1)});
13
13
  //# sourceMappingURL=reindex-worker.js.map
package/dist/reindex.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { a as SupportedLanguage, I as IndexerConfig } from './config-types-Bj4sh28g.js';
2
2
  import { Index } from '@c4312/scip';
3
- export { t as tryInstallScipCli } from './scip-cli-a-xOztiK.js';
3
+ export { t as tryInstallScipCli } from './scip-cli-Bh1M_JPu.js';
4
4
 
5
5
  /**
6
6
  * Detect which languages are present in a project directory by checking for