driftdetect-mcp 0.6.1 → 0.7.0
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/LICENSE +21 -0
- package/dist/bin/server.js +0 -0
- package/dist/enterprise-server.d.ts +1 -0
- package/dist/enterprise-server.d.ts.map +1 -1
- package/dist/enterprise-server.js +8 -1
- package/dist/enterprise-server.js.map +1 -1
- package/dist/tools/analysis/constants.d.ts +99 -0
- package/dist/tools/analysis/constants.d.ts.map +1 -0
- package/dist/tools/analysis/constants.js +421 -0
- package/dist/tools/analysis/constants.js.map +1 -0
- package/dist/tools/analysis/index.d.ts +1 -0
- package/dist/tools/analysis/index.d.ts.map +1 -1
- package/dist/tools/analysis/index.js +70 -0
- package/dist/tools/analysis/index.js.map +1 -1
- package/dist/tools/exploration/env.d.ts +53 -0
- package/dist/tools/exploration/env.d.ts.map +1 -0
- package/dist/tools/exploration/env.js +283 -0
- package/dist/tools/exploration/env.js.map +1 -0
- package/dist/tools/exploration/index.d.ts +2 -0
- package/dist/tools/exploration/index.d.ts.map +1 -1
- package/dist/tools/exploration/index.js +32 -0
- package/dist/tools/exploration/index.js.map +1 -1
- package/dist/tools/index.d.ts +6 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +6 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/registry.d.ts +7 -5
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +10 -4
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/surgical/callers.d.ts +85 -0
- package/dist/tools/surgical/callers.d.ts.map +1 -0
- package/dist/tools/surgical/callers.js +239 -0
- package/dist/tools/surgical/callers.js.map +1 -0
- package/dist/tools/surgical/dependencies.d.ts +96 -0
- package/dist/tools/surgical/dependencies.d.ts.map +1 -0
- package/dist/tools/surgical/dependencies.js +433 -0
- package/dist/tools/surgical/dependencies.js.map +1 -0
- package/dist/tools/surgical/errors.d.ts +88 -0
- package/dist/tools/surgical/errors.d.ts.map +1 -0
- package/dist/tools/surgical/errors.js +275 -0
- package/dist/tools/surgical/errors.js.map +1 -0
- package/dist/tools/surgical/hooks.d.ts +69 -0
- package/dist/tools/surgical/hooks.d.ts.map +1 -0
- package/dist/tools/surgical/hooks.js +247 -0
- package/dist/tools/surgical/hooks.js.map +1 -0
- package/dist/tools/surgical/imports.d.ts +61 -0
- package/dist/tools/surgical/imports.d.ts.map +1 -0
- package/dist/tools/surgical/imports.js +211 -0
- package/dist/tools/surgical/imports.js.map +1 -0
- package/dist/tools/surgical/index.d.ts +42 -0
- package/dist/tools/surgical/index.d.ts.map +1 -0
- package/dist/tools/surgical/index.js +66 -0
- package/dist/tools/surgical/index.js.map +1 -0
- package/dist/tools/surgical/middleware.d.ts +69 -0
- package/dist/tools/surgical/middleware.d.ts.map +1 -0
- package/dist/tools/surgical/middleware.js +237 -0
- package/dist/tools/surgical/middleware.js.map +1 -0
- package/dist/tools/surgical/prevalidate.d.ts +76 -0
- package/dist/tools/surgical/prevalidate.d.ts.map +1 -0
- package/dist/tools/surgical/prevalidate.js +303 -0
- package/dist/tools/surgical/prevalidate.js.map +1 -0
- package/dist/tools/surgical/recent.d.ts +66 -0
- package/dist/tools/surgical/recent.d.ts.map +1 -0
- package/dist/tools/surgical/recent.js +238 -0
- package/dist/tools/surgical/recent.js.map +1 -0
- package/dist/tools/surgical/signature.d.ts +73 -0
- package/dist/tools/surgical/signature.d.ts.map +1 -0
- package/dist/tools/surgical/signature.js +190 -0
- package/dist/tools/surgical/signature.js.map +1 -0
- package/dist/tools/surgical/similar.d.ts +77 -0
- package/dist/tools/surgical/similar.d.ts.map +1 -0
- package/dist/tools/surgical/similar.js +285 -0
- package/dist/tools/surgical/similar.js.map +1 -0
- package/dist/tools/surgical/test-template.d.ts +70 -0
- package/dist/tools/surgical/test-template.d.ts.map +1 -0
- package/dist/tools/surgical/test-template.js +298 -0
- package/dist/tools/surgical/test-template.js.map +1 -0
- package/dist/tools/surgical/type.d.ts +69 -0
- package/dist/tools/surgical/type.d.ts.map +1 -0
- package/dist/tools/surgical/type.js +289 -0
- package/dist/tools/surgical/type.js.map +1 -0
- package/package.json +11 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-template.js","sourceRoot":"","sources":["../../../src/tools/surgical/test-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAmClC,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAqB,EACrB,IAAsB,EACtB,WAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,qBAAqB,EAAoB,CAAC;IAE1D,iBAAiB;IACjB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtD,MAAM,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;IAErC,kBAAkB;IAClB,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IAE/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,MAAM,CAAC,MAAM,CACjB,qBAAqB,EACrB,mEAAmE,EACnE,CAAC,cAAc,CAAC,CACjB,CAAC;IACJ,CAAC;IAED,wCAAwC;IACxC,IAAI,UAAoC,CAAC;IACzC,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACnE,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,MAAM,mBAAmB,GAAG,MAAM,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAEjF,sCAAsC;IACtC,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAExF,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAEvE,oBAAoB;IACpB,MAAM,QAAQ,GAAG,oBAAoB,CACnC,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,QAAQ,CACT,CAAC;IAEF,MAAM,IAAI,GAAqB;QAC7B,QAAQ;QACR,QAAQ;QACR,WAAW,EAAE,mBAAmB;QAChC,WAAW;KACZ,CAAC;IAEF,gBAAgB;IAChB,MAAM,QAAQ,GAAG,UAAU,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACzF,MAAM,OAAO,GAAG,aAAa,QAAQ,uBAAuB,QAAQ,WAAW,mBAAmB,CAAC,SAAS,IAAI,mBAAmB,CAAC,KAAK,EAAE,CAAC;IAE5I,cAAc;IACd,MAAM,KAAK,GAA2E;QACpF,WAAW,EAAE;YACX,UAAU,QAAQ,oBAAoB;YACtC,+CAA+C;YAC/C,WAAW,CAAC,CAAC,CAAC,aAAa,WAAW,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,wCAAwC;SACtG;QACD,YAAY,EAAE,CAAC,iBAAiB,EAAE,eAAe,EAAE,eAAe,CAAC;KACpE,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,KAAK,CAAC,QAAQ,GAAG,CAAC,0EAA0E,CAAC,CAAC;IAChG,CAAC;IAED,iBAAiB;IACjB,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAElF,OAAO,OAAO;SACX,WAAW,CAAC,OAAO,CAAC;SACpB,QAAQ,CAAC,IAAI,CAAC;SACd,SAAS,CAAC,KAAK,CAAC;SAChB,YAAY,EAAE,CAAC;AACpB,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAClC,WAAmB,EACnB,UAAkB;IAElB,MAAM,WAAW,GAAoB;QACnC,SAAS,EAAE,QAAQ;QACnB,KAAK,EAAE,aAAa;QACpB,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,QAAQ;QACxB,WAAW,EAAE,WAAW;KACzB,CAAC;IAEF,wCAAwC;IACxC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;QAE7D,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnB,WAAW,CAAC,SAAS,GAAG,QAAQ,CAAC;YACjC,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;QACpC,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC;YAC/B,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC;QACtC,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC;YAChC,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC;YAChC,WAAW,CAAC,cAAc,GAAG,MAAM,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,uDAAuD;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAExD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAE9C,gCAAgC;QAChC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,WAAW,CAAC,WAAW,GAAG,qBAAqB,CAAC;QAClD,CAAC;QAED,2BAA2B;QAC3B,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YAC5C,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC;QACxC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAC5B,WAAmB,EACnB,UAAkB,EAClB,YAA6B;IAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE3C,0BAA0B;IAC1B,MAAM,QAAQ,GAAG;QACf,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KAC7D,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACjC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACtB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACtB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACtB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CACvB,CAAC;YAEF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC9C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAErD,gCAAgC;gBAChC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE5D,OAAO;oBACL,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC;oBAC1C,OAAO;iBACR,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,UAAkB,EAAE,WAA4B;IAC5E,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAErC,IAAI,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,QAAQ,GAAG,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,QAAQ,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,QAAQ,GAAG,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAC3B,UAAkB,EAClB,UAAoC,EACpC,WAA4B,EAC5B,SAAiB;IAEjB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,UAAU,EAAE,IAAI,IAAI,UAAU,CAAC;IAEhD,sCAAsC;IACtC,IAAI,OAAe,CAAC;IACpB,IAAI,WAAW,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,GAAG,gEAAgE,CAAC;IAC7E,CAAC;SAAM,IAAI,WAAW,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QAC5C,OAAO,GAAG,6CAA6C,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,uEAAuE,CAAC;IACpF,CAAC;IAED,+BAA+B;IAC/B,MAAM,YAAY,GAAG,IAAI,GAAG,UAAU,CAAC;IACvC,MAAM,YAAY,GAAG,UAAU;QAC7B,CAAC,CAAC,YAAY,QAAQ,YAAY,YAAY,IAAI;QAClD,CAAC,CAAC,eAAe,UAAU,UAAU,YAAY,IAAI,CAAC;IAExD,gCAAgC;IAChC,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,WAAW,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACvC,SAAS,GAAG;;;IAGZ,CAAC;IACH,CAAC;SAAM,IAAI,WAAW,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QAC5C,SAAS,GAAG;;;IAGZ,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,IAAI,SAAiB,CAAC;IACtB,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAEnD,SAAS,GAAG;eACD,QAAQ;;MAEjB,SAAS,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,OAAO,+BAA+B,CAAC,CAAC,CAAC,oBAAoB;;;2BAG/F,QAAQ,IAAI,MAAM;;;;;;;;;;;;;MAavC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,SAAS,GAAG;;;;;;;;;;MAUV,CAAC;IACL,CAAC;IAED,mBAAmB;IACnB,OAAO,GAAG,OAAO;EACjB,YAAY;;YAEF,QAAQ,aAAa,SAAS;EACxC,SAAS;;CAEV,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,mKAAmK;IAChL,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mCAAmC;aACjD;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qCAAqC;aACnD;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC;gBACpC,WAAW,EAAE,2BAA2B;aACzC;SACF;QACD,QAAQ,EAAE,CAAC,YAAY,CAAC;KACzB;CACF,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* drift_type - Expand Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Layer: Surgical
|
|
5
|
+
* Token Budget: 400 target, 800 max
|
|
6
|
+
* Cache TTL: 5 minutes
|
|
7
|
+
* Invalidation Keys: callgraph, types
|
|
8
|
+
*
|
|
9
|
+
* Expands type definitions to see full structure.
|
|
10
|
+
* Solves: AI sees `user: User` but doesn't know User has 20 fields.
|
|
11
|
+
*/
|
|
12
|
+
import type { CallGraphStore } from 'driftdetect-core';
|
|
13
|
+
export interface TypeArgs {
|
|
14
|
+
/** Type name to expand */
|
|
15
|
+
type: string;
|
|
16
|
+
/** How deep to expand nested types (default: 2) */
|
|
17
|
+
depth?: number;
|
|
18
|
+
/** Specific file to look in (optional) */
|
|
19
|
+
file?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface TypeDefinition {
|
|
22
|
+
name: string;
|
|
23
|
+
kind: 'interface' | 'type' | 'class' | 'enum';
|
|
24
|
+
source: string;
|
|
25
|
+
shape: Record<string, string>;
|
|
26
|
+
raw: string;
|
|
27
|
+
}
|
|
28
|
+
export interface RelatedType {
|
|
29
|
+
name: string;
|
|
30
|
+
relationship: 'extends' | 'contains' | 'parameter' | 'return';
|
|
31
|
+
source: string;
|
|
32
|
+
}
|
|
33
|
+
export interface TypeData {
|
|
34
|
+
found: boolean;
|
|
35
|
+
definition?: TypeDefinition | undefined;
|
|
36
|
+
relatedTypes: RelatedType[];
|
|
37
|
+
}
|
|
38
|
+
export declare function handleType(store: CallGraphStore, args: TypeArgs, projectRoot: string): Promise<{
|
|
39
|
+
content: Array<{
|
|
40
|
+
type: string;
|
|
41
|
+
text: string;
|
|
42
|
+
}>;
|
|
43
|
+
}>;
|
|
44
|
+
/**
|
|
45
|
+
* Tool definition for MCP registration
|
|
46
|
+
*/
|
|
47
|
+
export declare const typeToolDefinition: {
|
|
48
|
+
name: string;
|
|
49
|
+
description: string;
|
|
50
|
+
inputSchema: {
|
|
51
|
+
type: "object";
|
|
52
|
+
properties: {
|
|
53
|
+
type: {
|
|
54
|
+
type: string;
|
|
55
|
+
description: string;
|
|
56
|
+
};
|
|
57
|
+
depth: {
|
|
58
|
+
type: string;
|
|
59
|
+
description: string;
|
|
60
|
+
};
|
|
61
|
+
file: {
|
|
62
|
+
type: string;
|
|
63
|
+
description: string;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
required: string[];
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/tools/surgical/type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AASvD,MAAM,WAAW,QAAQ;IACvB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC9D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACxC,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAMD,wBAAsB,UAAU,CAC9B,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAqK7D;AAgID;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;CAqB9B,CAAC"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* drift_type - Expand Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Layer: Surgical
|
|
5
|
+
* Token Budget: 400 target, 800 max
|
|
6
|
+
* Cache TTL: 5 minutes
|
|
7
|
+
* Invalidation Keys: callgraph, types
|
|
8
|
+
*
|
|
9
|
+
* Expands type definitions to see full structure.
|
|
10
|
+
* Solves: AI sees `user: User` but doesn't know User has 20 fields.
|
|
11
|
+
*/
|
|
12
|
+
import { createResponseBuilder, Errors, metrics } from '../../infrastructure/index.js';
|
|
13
|
+
import * as fs from 'node:fs/promises';
|
|
14
|
+
import * as path from 'node:path';
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// Handler
|
|
17
|
+
// ============================================================================
|
|
18
|
+
export async function handleType(store, args, projectRoot) {
|
|
19
|
+
const startTime = Date.now();
|
|
20
|
+
const builder = createResponseBuilder();
|
|
21
|
+
// Validate input
|
|
22
|
+
if (!args.type || args.type.trim() === '') {
|
|
23
|
+
throw Errors.missingParameter('type');
|
|
24
|
+
}
|
|
25
|
+
const typeName = args.type.trim();
|
|
26
|
+
// Reserved for future nested type expansion
|
|
27
|
+
void (args.depth ?? 2);
|
|
28
|
+
// Load call graph
|
|
29
|
+
await store.initialize();
|
|
30
|
+
const graph = store.getGraph();
|
|
31
|
+
if (!graph) {
|
|
32
|
+
throw Errors.custom('CALLGRAPH_NOT_BUILT', 'Call graph has not been built. Run "drift callgraph build" first.', ['drift_status']);
|
|
33
|
+
}
|
|
34
|
+
// Find type definition by searching:
|
|
35
|
+
// 1. Function return types
|
|
36
|
+
// 2. Function parameter types
|
|
37
|
+
// 3. Class names
|
|
38
|
+
let foundFile;
|
|
39
|
+
let foundLine;
|
|
40
|
+
const relatedTypes = [];
|
|
41
|
+
// Search for the type in function signatures
|
|
42
|
+
for (const [, func] of graph.functions) {
|
|
43
|
+
// Check if file filter applies
|
|
44
|
+
if (args.file && !func.file.includes(args.file)) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
// Check return type
|
|
48
|
+
if (func.returnType?.includes(typeName)) {
|
|
49
|
+
relatedTypes.push({
|
|
50
|
+
name: func.name,
|
|
51
|
+
relationship: 'return',
|
|
52
|
+
source: `${func.file}:${func.startLine}`,
|
|
53
|
+
});
|
|
54
|
+
// If this looks like a type definition file, note it
|
|
55
|
+
if (func.file.includes('types') || func.file.includes('interfaces')) {
|
|
56
|
+
foundFile = func.file;
|
|
57
|
+
foundLine = func.startLine;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Check parameter types
|
|
61
|
+
for (const param of func.parameters) {
|
|
62
|
+
if (param.type?.includes(typeName)) {
|
|
63
|
+
relatedTypes.push({
|
|
64
|
+
name: func.name,
|
|
65
|
+
relationship: 'parameter',
|
|
66
|
+
source: `${func.file}:${func.startLine}`,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Check class name
|
|
71
|
+
if (func.className === typeName) {
|
|
72
|
+
foundFile = func.file;
|
|
73
|
+
foundLine = func.startLine;
|
|
74
|
+
relatedTypes.push({
|
|
75
|
+
name: func.name,
|
|
76
|
+
relationship: 'contains',
|
|
77
|
+
source: `${func.file}:${func.startLine}`,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Try to find and parse the actual type definition
|
|
82
|
+
let definition;
|
|
83
|
+
if (foundFile) {
|
|
84
|
+
definition = await extractTypeDefinition(path.join(projectRoot, foundFile), typeName, foundFile, foundLine ?? 1);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// Search common type file locations
|
|
88
|
+
const typeFiles = [
|
|
89
|
+
'src/types/index.ts',
|
|
90
|
+
'src/types.ts',
|
|
91
|
+
'types/index.ts',
|
|
92
|
+
'src/interfaces/index.ts',
|
|
93
|
+
];
|
|
94
|
+
for (const typeFile of typeFiles) {
|
|
95
|
+
const fullPath = path.join(projectRoot, typeFile);
|
|
96
|
+
try {
|
|
97
|
+
await fs.access(fullPath);
|
|
98
|
+
definition = await extractTypeDefinition(fullPath, typeName, typeFile, 1);
|
|
99
|
+
if (definition) {
|
|
100
|
+
foundFile = typeFile;
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// File doesn't exist, continue
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Deduplicate related types
|
|
110
|
+
const uniqueRelated = relatedTypes.reduce((acc, rt) => {
|
|
111
|
+
const key = `${rt.name}:${rt.relationship}`;
|
|
112
|
+
if (!acc.has(key)) {
|
|
113
|
+
acc.set(key, rt);
|
|
114
|
+
}
|
|
115
|
+
return acc;
|
|
116
|
+
}, new Map());
|
|
117
|
+
const data = {
|
|
118
|
+
found: definition !== undefined,
|
|
119
|
+
definition,
|
|
120
|
+
relatedTypes: Array.from(uniqueRelated.values()).slice(0, 10),
|
|
121
|
+
};
|
|
122
|
+
// Build summary
|
|
123
|
+
let summary;
|
|
124
|
+
if (definition) {
|
|
125
|
+
const fieldCount = Object.keys(definition.shape).length;
|
|
126
|
+
summary = `Found ${definition.kind} "${typeName}" with ${fieldCount} field${fieldCount !== 1 ? 's' : ''} in ${definition.source}`;
|
|
127
|
+
}
|
|
128
|
+
else if (relatedTypes.length > 0) {
|
|
129
|
+
summary = `Type "${typeName}" referenced in ${relatedTypes.length} location${relatedTypes.length !== 1 ? 's' : ''} but definition not found`;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
summary = `Type "${typeName}" not found in codebase`;
|
|
133
|
+
}
|
|
134
|
+
// Build hints
|
|
135
|
+
const hints = {
|
|
136
|
+
nextActions: definition
|
|
137
|
+
? [
|
|
138
|
+
'Use these fields when constructing objects of this type',
|
|
139
|
+
`Check relatedTypes for functions that use "${typeName}"`,
|
|
140
|
+
]
|
|
141
|
+
: [
|
|
142
|
+
'Check spelling or try a partial name',
|
|
143
|
+
'Use drift_files_list to find type definition files',
|
|
144
|
+
],
|
|
145
|
+
relatedTools: ['drift_signature', 'drift_imports', 'drift_similar'],
|
|
146
|
+
};
|
|
147
|
+
if (!definition && relatedTypes.length > 0) {
|
|
148
|
+
hints.warnings = ['Type is used but definition not found - may be external or generated'];
|
|
149
|
+
}
|
|
150
|
+
// Record metrics
|
|
151
|
+
metrics.recordRequest('drift_type', Date.now() - startTime, true, false);
|
|
152
|
+
return builder
|
|
153
|
+
.withSummary(summary)
|
|
154
|
+
.withData(data)
|
|
155
|
+
.withHints(hints)
|
|
156
|
+
.buildContent();
|
|
157
|
+
}
|
|
158
|
+
// ============================================================================
|
|
159
|
+
// Helpers
|
|
160
|
+
// ============================================================================
|
|
161
|
+
/**
|
|
162
|
+
* Extract type definition from a file using regex
|
|
163
|
+
* (Lightweight alternative to full parsing)
|
|
164
|
+
*/
|
|
165
|
+
async function extractTypeDefinition(filePath, typeName, relativePath, _hintLine) {
|
|
166
|
+
try {
|
|
167
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
168
|
+
// Patterns to match type definitions
|
|
169
|
+
const patterns = [
|
|
170
|
+
// interface Foo { ... }
|
|
171
|
+
new RegExp(`^\\s*(?:export\\s+)?interface\\s+${typeName}\\s*(?:extends\\s+[^{]+)?\\{`, 'm'),
|
|
172
|
+
// type Foo = { ... }
|
|
173
|
+
new RegExp(`^\\s*(?:export\\s+)?type\\s+${typeName}\\s*=\\s*\\{`, 'm'),
|
|
174
|
+
// class Foo { ... }
|
|
175
|
+
new RegExp(`^\\s*(?:export\\s+)?class\\s+${typeName}\\s*(?:extends\\s+[^{]+)?(?:implements\\s+[^{]+)?\\{`, 'm'),
|
|
176
|
+
// enum Foo { ... }
|
|
177
|
+
new RegExp(`^\\s*(?:export\\s+)?enum\\s+${typeName}\\s*\\{`, 'm'),
|
|
178
|
+
];
|
|
179
|
+
const kinds = ['interface', 'type', 'class', 'enum'];
|
|
180
|
+
for (let i = 0; i < patterns.length; i++) {
|
|
181
|
+
const match = content.match(patterns[i]);
|
|
182
|
+
if (match && match.index !== undefined) {
|
|
183
|
+
const startIndex = match.index;
|
|
184
|
+
const lineNumber = content.slice(0, startIndex).split('\n').length;
|
|
185
|
+
// Extract the full definition (find matching braces)
|
|
186
|
+
const raw = extractBracedBlock(content, startIndex);
|
|
187
|
+
if (!raw)
|
|
188
|
+
continue;
|
|
189
|
+
// Parse fields from the raw definition
|
|
190
|
+
const shape = parseTypeShape(raw, kinds[i]);
|
|
191
|
+
return {
|
|
192
|
+
name: typeName,
|
|
193
|
+
kind: kinds[i],
|
|
194
|
+
source: `${relativePath}:${lineNumber}`,
|
|
195
|
+
shape,
|
|
196
|
+
raw: raw.length > 500 ? raw.slice(0, 500) + '\n // ... truncated' : raw,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return undefined;
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
return undefined;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Extract a braced block starting from an index
|
|
208
|
+
*/
|
|
209
|
+
function extractBracedBlock(content, startIndex) {
|
|
210
|
+
const openBrace = content.indexOf('{', startIndex);
|
|
211
|
+
if (openBrace === -1)
|
|
212
|
+
return undefined;
|
|
213
|
+
let depth = 0;
|
|
214
|
+
let endIndex = openBrace;
|
|
215
|
+
for (let i = openBrace; i < content.length; i++) {
|
|
216
|
+
if (content[i] === '{')
|
|
217
|
+
depth++;
|
|
218
|
+
else if (content[i] === '}') {
|
|
219
|
+
depth--;
|
|
220
|
+
if (depth === 0) {
|
|
221
|
+
endIndex = i + 1;
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Include the declaration before the brace
|
|
227
|
+
const declarationStart = content.lastIndexOf('\n', startIndex) + 1;
|
|
228
|
+
return content.slice(declarationStart, endIndex).trim();
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Parse type shape from raw definition
|
|
232
|
+
*/
|
|
233
|
+
function parseTypeShape(raw, kind) {
|
|
234
|
+
const shape = {};
|
|
235
|
+
// Extract content between braces
|
|
236
|
+
const braceStart = raw.indexOf('{');
|
|
237
|
+
const braceEnd = raw.lastIndexOf('}');
|
|
238
|
+
if (braceStart === -1 || braceEnd === -1)
|
|
239
|
+
return shape;
|
|
240
|
+
const body = raw.slice(braceStart + 1, braceEnd);
|
|
241
|
+
// Simple field extraction (handles most common cases)
|
|
242
|
+
// Matches: fieldName: Type; or fieldName?: Type;
|
|
243
|
+
const fieldPattern = /^\s*(?:readonly\s+)?(\w+)(\?)?:\s*([^;,\n]+)/gm;
|
|
244
|
+
let match;
|
|
245
|
+
while ((match = fieldPattern.exec(body)) !== null) {
|
|
246
|
+
const [, name, optional, type] = match;
|
|
247
|
+
if (name && type) {
|
|
248
|
+
const cleanType = type.trim().replace(/\/\/.*$/, '').trim();
|
|
249
|
+
shape[name] = optional ? `${cleanType} | undefined` : cleanType;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
// For enums, extract values
|
|
253
|
+
if (kind === 'enum') {
|
|
254
|
+
const enumPattern = /^\s*(\w+)\s*(?:=\s*([^,\n]+))?/gm;
|
|
255
|
+
while ((match = enumPattern.exec(body)) !== null) {
|
|
256
|
+
const [, name, value] = match;
|
|
257
|
+
if (name && !name.includes(':')) {
|
|
258
|
+
shape[name] = value?.trim() ?? 'auto';
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return shape;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Tool definition for MCP registration
|
|
266
|
+
*/
|
|
267
|
+
export const typeToolDefinition = {
|
|
268
|
+
name: 'drift_type',
|
|
269
|
+
description: 'Expand type definitions to see full structure. Returns fields, related types, and raw definition. Use when you see a type but need to know its shape.',
|
|
270
|
+
inputSchema: {
|
|
271
|
+
type: 'object',
|
|
272
|
+
properties: {
|
|
273
|
+
type: {
|
|
274
|
+
type: 'string',
|
|
275
|
+
description: 'Type name to expand (e.g., "User", "CreateUserDTO")',
|
|
276
|
+
},
|
|
277
|
+
depth: {
|
|
278
|
+
type: 'number',
|
|
279
|
+
description: 'How deep to expand nested types (default: 2, max: 5)',
|
|
280
|
+
},
|
|
281
|
+
file: {
|
|
282
|
+
type: 'string',
|
|
283
|
+
description: 'Optional: specific file to search in',
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
required: ['type'],
|
|
287
|
+
},
|
|
288
|
+
};
|
|
289
|
+
//# sourceMappingURL=type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../../src/tools/surgical/type.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "driftdetect-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "MCP server that gives AI agents (Claude, Cursor, Copilot) deep understanding of your codebase patterns, conventions, and architecture. Query patterns, security boundaries, call graphs in real-time.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Geoffrey Fernald",
|
|
@@ -46,20 +46,20 @@
|
|
|
46
46
|
"files": [
|
|
47
47
|
"dist"
|
|
48
48
|
],
|
|
49
|
-
"scripts": {
|
|
50
|
-
"build": "tsc",
|
|
51
|
-
"clean": "rm -rf dist",
|
|
52
|
-
"dev": "tsc --watch",
|
|
53
|
-
"start": "node dist/bin/server.js",
|
|
54
|
-
"typecheck": "tsc --noEmit"
|
|
55
|
-
},
|
|
56
49
|
"dependencies": {
|
|
57
50
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
58
|
-
"driftdetect-core": "
|
|
59
|
-
"driftdetect-detectors": "
|
|
51
|
+
"driftdetect-core": "0.7.0",
|
|
52
|
+
"driftdetect-detectors": "0.7.0"
|
|
60
53
|
},
|
|
61
54
|
"devDependencies": {
|
|
62
55
|
"@types/node": "^20.10.0",
|
|
63
56
|
"typescript": "^5.3.0"
|
|
57
|
+
},
|
|
58
|
+
"scripts": {
|
|
59
|
+
"build": "tsc",
|
|
60
|
+
"clean": "rm -rf dist",
|
|
61
|
+
"dev": "tsc --watch",
|
|
62
|
+
"start": "node dist/bin/server.js",
|
|
63
|
+
"typecheck": "tsc --noEmit"
|
|
64
64
|
}
|
|
65
|
-
}
|
|
65
|
+
}
|