codesift-mcp 0.5.21 → 0.5.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -9
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +28 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/help.js +1 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/hooks.d.ts +4 -0
- package/dist/cli/hooks.d.ts.map +1 -1
- package/dist/cli/hooks.js +15 -4
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli/journal-commands.d.ts +9 -0
- package/dist/cli/journal-commands.d.ts.map +1 -0
- package/dist/cli/journal-commands.js +160 -0
- package/dist/cli/journal-commands.js.map +1 -0
- package/dist/cli/wiki-commands.d.ts.map +1 -1
- package/dist/cli/wiki-commands.js +5 -0
- package/dist/cli/wiki-commands.js.map +1 -1
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.d.ts.map +1 -1
- package/dist/instructions.js +41 -47
- package/dist/instructions.js.map +1 -1
- package/dist/parser/extractors/_shared.d.ts +2 -0
- package/dist/parser/extractors/_shared.d.ts.map +1 -1
- package/dist/parser/extractors/_shared.js +4 -0
- package/dist/parser/extractors/_shared.js.map +1 -1
- package/dist/parser/extractors/typescript.d.ts.map +1 -1
- package/dist/parser/extractors/typescript.js +606 -31
- package/dist/parser/extractors/typescript.js.map +1 -1
- package/dist/parser/parse-worker.d.ts +2 -0
- package/dist/parser/parse-worker.d.ts.map +1 -0
- package/dist/parser/parse-worker.js +47 -0
- package/dist/parser/parse-worker.js.map +1 -0
- package/dist/parser/parser-manager.d.ts +10 -1
- package/dist/parser/parser-manager.d.ts.map +1 -1
- package/dist/parser/parser-manager.js +40 -2
- package/dist/parser/parser-manager.js.map +1 -1
- package/dist/parser/parser-pool.d.ts +31 -0
- package/dist/parser/parser-pool.d.ts.map +1 -0
- package/dist/parser/parser-pool.js +211 -0
- package/dist/parser/parser-pool.js.map +1 -0
- package/dist/register-tools.d.ts.map +1 -1
- package/dist/register-tools.js +394 -35
- package/dist/register-tools.js.map +1 -1
- package/dist/retrieval/codebase-retrieval.d.ts.map +1 -1
- package/dist/retrieval/codebase-retrieval.js +9 -1
- package/dist/retrieval/codebase-retrieval.js.map +1 -1
- package/dist/search/chunker.d.ts +1 -0
- package/dist/search/chunker.d.ts.map +1 -1
- package/dist/search/chunker.js +8 -1
- package/dist/search/chunker.js.map +1 -1
- package/dist/server-helpers.d.ts +27 -0
- package/dist/server-helpers.d.ts.map +1 -1
- package/dist/server-helpers.js +90 -9
- package/dist/server-helpers.js.map +1 -1
- package/dist/server.js +31 -0
- package/dist/server.js.map +1 -1
- package/dist/storage/index-store.d.ts +41 -4
- package/dist/storage/index-store.d.ts.map +1 -1
- package/dist/storage/index-store.js +89 -6
- package/dist/storage/index-store.js.map +1 -1
- package/dist/storage/watcher.d.ts +33 -6
- package/dist/storage/watcher.d.ts.map +1 -1
- package/dist/storage/watcher.js +73 -34
- package/dist/storage/watcher.js.map +1 -1
- package/dist/storage/workspace-resolver.d.ts +15 -0
- package/dist/storage/workspace-resolver.d.ts.map +1 -0
- package/dist/storage/workspace-resolver.js +130 -0
- package/dist/storage/workspace-resolver.js.map +1 -0
- package/dist/tools/_helpers.d.ts +37 -0
- package/dist/tools/_helpers.d.ts.map +1 -0
- package/dist/tools/_helpers.js +31 -0
- package/dist/tools/_helpers.js.map +1 -0
- package/dist/tools/constant-resolution-tools.d.ts +8 -0
- package/dist/tools/constant-resolution-tools.d.ts.map +1 -0
- package/dist/tools/constant-resolution-tools.js +68 -0
- package/dist/tools/constant-resolution-tools.js.map +1 -0
- package/dist/tools/graph-tools.d.ts +27 -5
- package/dist/tools/graph-tools.d.ts.map +1 -1
- package/dist/tools/graph-tools.js +141 -18
- package/dist/tools/graph-tools.js.map +1 -1
- package/dist/tools/hotspot-tools.d.ts +6 -0
- package/dist/tools/hotspot-tools.d.ts.map +1 -1
- package/dist/tools/hotspot-tools.js +48 -8
- package/dist/tools/hotspot-tools.js.map +1 -1
- package/dist/tools/impact-tools.d.ts.map +1 -1
- package/dist/tools/impact-tools.js +9 -2
- package/dist/tools/impact-tools.js.map +1 -1
- package/dist/tools/index-tools.d.ts +15 -1
- package/dist/tools/index-tools.d.ts.map +1 -1
- package/dist/tools/index-tools.js +161 -16
- package/dist/tools/index-tools.js.map +1 -1
- package/dist/tools/journal-generator-helpers.d.ts +55 -0
- package/dist/tools/journal-generator-helpers.d.ts.map +1 -0
- package/dist/tools/journal-generator-helpers.js +250 -0
- package/dist/tools/journal-generator-helpers.js.map +1 -0
- package/dist/tools/journal-generator.d.ts +48 -0
- package/dist/tools/journal-generator.d.ts.map +1 -0
- package/dist/tools/journal-generator.js +204 -0
- package/dist/tools/journal-generator.js.map +1 -0
- package/dist/tools/journal-git-client.d.ts +20 -0
- package/dist/tools/journal-git-client.d.ts.map +1 -0
- package/dist/tools/journal-git-client.js +57 -0
- package/dist/tools/journal-git-client.js.map +1 -0
- package/dist/tools/journal-llm-client.d.ts +57 -0
- package/dist/tools/journal-llm-client.d.ts.map +1 -0
- package/dist/tools/journal-llm-client.js +175 -0
- package/dist/tools/journal-llm-client.js.map +1 -0
- package/dist/tools/journal-migrator.d.ts +22 -0
- package/dist/tools/journal-migrator.d.ts.map +1 -0
- package/dist/tools/journal-migrator.js +183 -0
- package/dist/tools/journal-migrator.js.map +1 -0
- package/dist/tools/journal-phase-detector.d.ts +26 -0
- package/dist/tools/journal-phase-detector.d.ts.map +1 -0
- package/dist/tools/journal-phase-detector.js +126 -0
- package/dist/tools/journal-phase-detector.js.map +1 -0
- package/dist/tools/journal-sentinel.d.ts +15 -0
- package/dist/tools/journal-sentinel.d.ts.map +1 -0
- package/dist/tools/journal-sentinel.js +110 -0
- package/dist/tools/journal-sentinel.js.map +1 -0
- package/dist/tools/journal-templates.d.ts +28 -0
- package/dist/tools/journal-templates.d.ts.map +1 -0
- package/dist/tools/journal-templates.js +93 -0
- package/dist/tools/journal-templates.js.map +1 -0
- package/dist/tools/pattern-tools.d.ts +2 -0
- package/dist/tools/pattern-tools.d.ts.map +1 -1
- package/dist/tools/pattern-tools.js +73 -0
- package/dist/tools/pattern-tools.js.map +1 -1
- package/dist/tools/perf-tools.d.ts.map +1 -1
- package/dist/tools/perf-tools.js +6 -0
- package/dist/tools/perf-tools.js.map +1 -1
- package/dist/tools/plan-turn-tools.d.ts.map +1 -1
- package/dist/tools/plan-turn-tools.js +38 -2
- package/dist/tools/plan-turn-tools.js.map +1 -1
- package/dist/tools/project-tools.d.ts +6 -0
- package/dist/tools/project-tools.d.ts.map +1 -1
- package/dist/tools/project-tools.js +65 -25
- package/dist/tools/project-tools.js.map +1 -1
- package/dist/tools/python-constants-tools.d.ts +6 -0
- package/dist/tools/python-constants-tools.d.ts.map +1 -1
- package/dist/tools/python-constants-tools.js.map +1 -1
- package/dist/tools/react-tools.d.ts +44 -1
- package/dist/tools/react-tools.d.ts.map +1 -1
- package/dist/tools/react-tools.js +142 -9
- package/dist/tools/react-tools.js.map +1 -1
- package/dist/tools/search-tools.d.ts.map +1 -1
- package/dist/tools/search-tools.js +21 -2
- package/dist/tools/search-tools.js.map +1 -1
- package/dist/tools/status-tools.d.ts +10 -0
- package/dist/tools/status-tools.d.ts.map +1 -1
- package/dist/tools/status-tools.js +53 -2
- package/dist/tools/status-tools.js.map +1 -1
- package/dist/tools/symbol-tools.d.ts +13 -0
- package/dist/tools/symbol-tools.d.ts.map +1 -1
- package/dist/tools/symbol-tools.js +38 -0
- package/dist/tools/symbol-tools.js.map +1 -1
- package/dist/tools/typescript-constants-tools.d.ts +6 -0
- package/dist/tools/typescript-constants-tools.d.ts.map +1 -0
- package/dist/tools/typescript-constants-tools.js +687 -0
- package/dist/tools/typescript-constants-tools.js.map +1 -0
- package/dist/tools/wiki-hub-ranker.d.ts +36 -0
- package/dist/tools/wiki-hub-ranker.d.ts.map +1 -0
- package/dist/tools/wiki-hub-ranker.js +72 -0
- package/dist/tools/wiki-hub-ranker.js.map +1 -0
- package/dist/tools/wiki-lint.d.ts +7 -2
- package/dist/tools/wiki-lint.d.ts.map +1 -1
- package/dist/tools/wiki-lint.js +73 -1
- package/dist/tools/wiki-lint.js.map +1 -1
- package/dist/tools/wiki-manifest.d.ts +129 -21
- package/dist/tools/wiki-manifest.d.ts.map +1 -1
- package/dist/tools/wiki-manifest.js +16 -9
- package/dist/tools/wiki-manifest.js.map +1 -1
- package/dist/tools/wiki-module-builder.d.ts +42 -0
- package/dist/tools/wiki-module-builder.d.ts.map +1 -0
- package/dist/tools/wiki-module-builder.js +449 -0
- package/dist/tools/wiki-module-builder.js.map +1 -0
- package/dist/tools/wiki-overview-sources.d.ts +26 -0
- package/dist/tools/wiki-overview-sources.d.ts.map +1 -0
- package/dist/tools/wiki-overview-sources.js +128 -0
- package/dist/tools/wiki-overview-sources.js.map +1 -0
- package/dist/tools/wiki-page-generators.d.ts +19 -3
- package/dist/tools/wiki-page-generators.d.ts.map +1 -1
- package/dist/tools/wiki-page-generators.js +156 -22
- package/dist/tools/wiki-page-generators.js.map +1 -1
- package/dist/tools/wiki-tools.d.ts +20 -0
- package/dist/tools/wiki-tools.d.ts.map +1 -1
- package/dist/tools/wiki-tools.js +181 -29
- package/dist/tools/wiki-tools.js.map +1 -1
- package/dist/tools/workspace-scope-helper.d.ts +21 -0
- package/dist/tools/workspace-scope-helper.d.ts.map +1 -0
- package/dist/tools/workspace-scope-helper.js +50 -0
- package/dist/tools/workspace-scope-helper.js.map +1 -0
- package/dist/tools/workspace-tools.d.ts +74 -0
- package/dist/tools/workspace-tools.d.ts.map +1 -0
- package/dist/tools/workspace-tools.js +366 -0
- package/dist/tools/workspace-tools.js.map +1 -0
- package/dist/types.d.ts +65 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/import-graph.d.ts +27 -0
- package/dist/utils/import-graph.d.ts.map +1 -1
- package/dist/utils/import-graph.js +331 -8
- package/dist/utils/import-graph.js.map +1 -1
- package/dist/utils/ts-imports.d.ts +30 -0
- package/dist/utils/ts-imports.d.ts.map +1 -0
- package/dist/utils/ts-imports.js +168 -0
- package/dist/utils/ts-imports.js.map +1 -0
- package/dist/utils/tsconfig-paths.d.ts +59 -0
- package/dist/utils/tsconfig-paths.d.ts.map +1 -0
- package/dist/utils/tsconfig-paths.js +176 -0
- package/dist/utils/tsconfig-paths.js.map +1 -0
- package/dist/utils/walk.d.ts.map +1 -1
- package/dist/utils/walk.js +1 -0
- package/dist/utils/walk.js.map +1 -1
- package/package.json +13 -3
- package/rules/codesift.md +19 -2
- package/rules/codesift.mdc +2 -2
- package/rules/codex.md +13 -2
- package/rules/gemini.md +13 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-store.js","sourceRoot":"","sources":["../../src/storage/index-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,0DAA0D;AAC1D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAiB,EACjB,KAAgB;IAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAiB,EACjB,eAAwC;IAExC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAExC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,eAAe,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC;YAC3E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"index-store.js","sourceRoot":"","sources":["../../src/storage/index-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,0DAA0D;AAC1D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAiB,EACjB,KAAgB;IAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAiB,EACjB,eAAwC;IAExC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAExC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,eAAe,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC;YAC3E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAkBD;;;;;;;;;;;;;sEAasE;AACtE,SAAS,4BAA4B,CACnC,KAAgB,EAChB,eAAuC;IAEvC,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC;IAC7C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK;QAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEpE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,QAAQ,KAAK,MAAM;YAAE,SAAS;QAClC,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAClE,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,QAAQ,IAAI,SAAS;YAC/B,MAAM,EAAE,MAAM,IAAI,SAAS;SAC5B,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;wCAgBwC;AACxC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,eAAuC;IAEvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,MAAM,QAAQ,GAAG,4BAA4B,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACvE,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,4BAA4B;gBACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,gBAAgB,EAAE,QAAQ,CAAC,QAAQ;gBACnC,cAAc,EAAE,QAAQ,CAAC,MAAM;aAChC,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAgB,EAChB,eAAuC;IAEvC,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC;IACvC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK;QAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,eAAe,CAAC,IAAI,CAAC;YAAE,SAAS;QAC/C,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAiB,EACjB,WAAmB,EACnB,UAAwB,EACxB,SAAqB;IAErB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAE5D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QAChC,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,mDAAmD,SAAS,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,iBAAiB;QACjB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CACtC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CACxC,CAAC;QACF,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,UAAU,CAAC,CAAC;QAE5C,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC;QAC1B,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QACtC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEjC,oCAAoC;QACpC,IAAI,SAAS,EAAE,CAAC;YACd,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;YACtE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QAC9C,CAAC;QAED,MAAM,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,gEAAgE;IAChE,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,SAAiB,EACjB,WAAmB;IAEnB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAE5D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QAChC,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO;YAAE,OAAO;QAEpC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAC1E,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QAChD,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACtE,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QAC5C,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEjC,MAAM,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,QAAgB;IAC5D,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC9B,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhB,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,aAAa,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAE9D,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAEjD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,11 +1,38 @@
|
|
|
1
|
-
import { type FSWatcher } from "chokidar";
|
|
2
|
-
export type { FSWatcher };
|
|
3
1
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* File watcher built on @parcel/watcher.
|
|
3
|
+
*
|
|
4
|
+
* Why not chokidar:
|
|
5
|
+
* - chokidar 4.x dropped fsevents support entirely. On macOS that pushed
|
|
6
|
+
* the watcher onto Node's fs.watch fallback, which on this platform
|
|
7
|
+
* allocates one fd per directory. Indexing several CMS-style repos
|
|
8
|
+
* (~1000+ subdirs each) drove the system file table to ENFILE.
|
|
9
|
+
* - chokidar 3.x is a workaround (deps rollback, locks us out of upstream
|
|
10
|
+
* fixes) — not a real solution.
|
|
11
|
+
*
|
|
12
|
+
* @parcel/watcher uses native, recursive backends:
|
|
13
|
+
* macOS → FSEvents (1 stream per recursive root, fd-cheap)
|
|
14
|
+
* Linux → inotify (1 watcher per root)
|
|
15
|
+
* Win → ReadDirectoryChangesW (1 handle per root)
|
|
16
|
+
*
|
|
17
|
+
* The exported API (`startWatcher`, `stopWatcher`, `FSWatcher`) keeps the
|
|
18
|
+
* same shape callers already use — only `startWatcher` is now async because
|
|
19
|
+
* `parcelWatcher.subscribe()` returns a Promise.
|
|
7
20
|
*/
|
|
8
|
-
|
|
21
|
+
import * as parcelWatcher from "@parcel/watcher";
|
|
22
|
+
/**
|
|
23
|
+
* Re-exported under the historical name so call sites keep working unchanged.
|
|
24
|
+
* Underneath this is a `parcelWatcher.AsyncSubscription`.
|
|
25
|
+
*/
|
|
26
|
+
export type FSWatcher = parcelWatcher.AsyncSubscription;
|
|
27
|
+
/**
|
|
28
|
+
* Subscribe to file changes under `repoRoot`. Calls `onChange` with the
|
|
29
|
+
* relative file path on create/update events (debounced 500ms per file)
|
|
30
|
+
* and `onDelete` immediately on delete events.
|
|
31
|
+
*
|
|
32
|
+
* Returns the underlying subscription so the caller can later pass it to
|
|
33
|
+
* `stopWatcher`.
|
|
34
|
+
*/
|
|
35
|
+
export declare function startWatcher(repoRoot: string, onChange: (filePath: string) => void, onDelete?: (filePath: string) => void): Promise<FSWatcher>;
|
|
9
36
|
/**
|
|
10
37
|
* Stop a file watcher and clean up all debounce timers.
|
|
11
38
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/storage/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/storage/watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AAIjD;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,aAAa,CAAC,iBAAiB,CAAC;AAyBxD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EACpC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GACpC,OAAO,CAAC,SAAS,CAAC,CAkDpB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAWnE"}
|
package/dist/storage/watcher.js
CHANGED
|
@@ -1,15 +1,53 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
/**
|
|
2
|
+
* File watcher built on @parcel/watcher.
|
|
3
|
+
*
|
|
4
|
+
* Why not chokidar:
|
|
5
|
+
* - chokidar 4.x dropped fsevents support entirely. On macOS that pushed
|
|
6
|
+
* the watcher onto Node's fs.watch fallback, which on this platform
|
|
7
|
+
* allocates one fd per directory. Indexing several CMS-style repos
|
|
8
|
+
* (~1000+ subdirs each) drove the system file table to ENFILE.
|
|
9
|
+
* - chokidar 3.x is a workaround (deps rollback, locks us out of upstream
|
|
10
|
+
* fixes) — not a real solution.
|
|
11
|
+
*
|
|
12
|
+
* @parcel/watcher uses native, recursive backends:
|
|
13
|
+
* macOS → FSEvents (1 stream per recursive root, fd-cheap)
|
|
14
|
+
* Linux → inotify (1 watcher per root)
|
|
15
|
+
* Win → ReadDirectoryChangesW (1 handle per root)
|
|
16
|
+
*
|
|
17
|
+
* The exported API (`startWatcher`, `stopWatcher`, `FSWatcher`) keeps the
|
|
18
|
+
* same shape callers already use — only `startWatcher` is now async because
|
|
19
|
+
* `parcelWatcher.subscribe()` returns a Promise.
|
|
20
|
+
*/
|
|
21
|
+
import * as parcelWatcher from "@parcel/watcher";
|
|
22
|
+
import { relative, join } from "node:path";
|
|
23
|
+
import { IGNORE_DIRS } from "../utils/walk.js";
|
|
6
24
|
const watcherTimers = new WeakMap();
|
|
7
25
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
26
|
+
* Build the ignore list for @parcel/watcher. The library accepts absolute
|
|
27
|
+
* paths and glob patterns. We feed it both:
|
|
28
|
+
* - Absolute paths to known top-level vendor dirs (cheapest: native skip
|
|
29
|
+
* of subtree traversal at the root).
|
|
30
|
+
* - Globs for nested occurrences (`**\/node_modules` style) — handles the
|
|
31
|
+
* common case where vendored deps live under a workspace.
|
|
32
|
+
*/
|
|
33
|
+
function buildIgnoreList(repoRoot) {
|
|
34
|
+
const ignores = [];
|
|
35
|
+
for (const dir of IGNORE_DIRS) {
|
|
36
|
+
ignores.push(join(repoRoot, dir));
|
|
37
|
+
ignores.push(`**/${dir}`);
|
|
38
|
+
ignores.push(`**/${dir}/**`);
|
|
39
|
+
}
|
|
40
|
+
return ignores;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Subscribe to file changes under `repoRoot`. Calls `onChange` with the
|
|
44
|
+
* relative file path on create/update events (debounced 500ms per file)
|
|
45
|
+
* and `onDelete` immediately on delete events.
|
|
46
|
+
*
|
|
47
|
+
* Returns the underlying subscription so the caller can later pass it to
|
|
48
|
+
* `stopWatcher`.
|
|
11
49
|
*/
|
|
12
|
-
export function startWatcher(repoRoot, onChange, onDelete) {
|
|
50
|
+
export async function startWatcher(repoRoot, onChange, onDelete) {
|
|
13
51
|
const debounceTimers = new Map();
|
|
14
52
|
const debouncedOnChange = (absolutePath) => {
|
|
15
53
|
const relativePath = relative(repoRoot, absolutePath);
|
|
@@ -23,31 +61,32 @@ export function startWatcher(repoRoot, onChange, onDelete) {
|
|
|
23
61
|
}, 500);
|
|
24
62
|
debounceTimers.set(relativePath, timer);
|
|
25
63
|
};
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (pendingTimer !== undefined) {
|
|
43
|
-
clearTimeout(pendingTimer);
|
|
44
|
-
debounceTimers.delete(relativePath);
|
|
64
|
+
const subscription = await parcelWatcher.subscribe(repoRoot, (err, events) => {
|
|
65
|
+
if (err) {
|
|
66
|
+
console.error(`[parcel-watcher] error watching ${repoRoot}: ${err.message}`);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
for (const event of events) {
|
|
70
|
+
if (event.type === "delete") {
|
|
71
|
+
const relativePath = relative(repoRoot, event.path);
|
|
72
|
+
// Cancel any pending change debounce — a delete supersedes it
|
|
73
|
+
const pendingTimer = debounceTimers.get(relativePath);
|
|
74
|
+
if (pendingTimer !== undefined) {
|
|
75
|
+
clearTimeout(pendingTimer);
|
|
76
|
+
debounceTimers.delete(relativePath);
|
|
77
|
+
}
|
|
78
|
+
if (onDelete)
|
|
79
|
+
onDelete(relativePath);
|
|
45
80
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
81
|
+
else {
|
|
82
|
+
// 'create' or 'update' — both go through the debounced path so
|
|
83
|
+
// editors performing atomic-write-then-rename only fire once.
|
|
84
|
+
debouncedOnChange(event.path);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}, { ignore: buildIgnoreList(repoRoot) });
|
|
88
|
+
watcherTimers.set(subscription, debounceTimers);
|
|
89
|
+
return subscription;
|
|
51
90
|
}
|
|
52
91
|
/**
|
|
53
92
|
* Stop a file watcher and clean up all debounce timers.
|
|
@@ -61,6 +100,6 @@ export async function stopWatcher(watcher) {
|
|
|
61
100
|
timers.clear();
|
|
62
101
|
watcherTimers.delete(watcher);
|
|
63
102
|
}
|
|
64
|
-
await watcher.
|
|
103
|
+
await watcher.unsubscribe();
|
|
65
104
|
}
|
|
66
105
|
//# sourceMappingURL=watcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/storage/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/storage/watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Workspace } from "../types.js";
|
|
2
|
+
export interface WorkspaceIndex {
|
|
3
|
+
/** Resolved workspaces (root package excluded; only package-role workspaces). */
|
|
4
|
+
workspaces: Workspace[];
|
|
5
|
+
/** Build-orchestrator / package-manager signal at root. */
|
|
6
|
+
manifest_tool: Workspace["manifest_tool"];
|
|
7
|
+
/** Names of duplicate/conflicting workspace packages (informational). */
|
|
8
|
+
duplicate_names?: string[];
|
|
9
|
+
}
|
|
10
|
+
/** Resolve workspace metadata for a monorepo root.
|
|
11
|
+
* Returns null on any unrecoverable failure (caller treats as flat-repo).
|
|
12
|
+
* Uses @manypkg/get-packages for package enumeration; layers manual
|
|
13
|
+
* turbo.json / nx.json detection for the manifest_tool field. */
|
|
14
|
+
export declare function resolveWorkspaces(root: string): Promise<WorkspaceIndex | null>;
|
|
15
|
+
//# sourceMappingURL=workspace-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-resolver.d.ts","sourceRoot":"","sources":["../../src/storage/workspace-resolver.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,SAAS,EAGV,MAAM,aAAa,CAAC;AAerB,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,2DAA2D;IAC3D,aAAa,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;IAC1C,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAYD;;;kEAGkE;AAClE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CA6FpF"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { getTsconfig } from "get-tsconfig";
|
|
4
|
+
// Frameworks recognized at workspace package.json level (mirrors project-tools.ts).
|
|
5
|
+
const FRAMEWORK_DEPS = [
|
|
6
|
+
["next", "nextjs"],
|
|
7
|
+
["nuxt", "nuxt"],
|
|
8
|
+
["@nestjs/core", "nestjs"],
|
|
9
|
+
["@remix-run/node", "remix"],
|
|
10
|
+
["astro", "astro"],
|
|
11
|
+
["hono", "hono"],
|
|
12
|
+
["express", "express"],
|
|
13
|
+
["fastify", "fastify"],
|
|
14
|
+
["react", "react"],
|
|
15
|
+
];
|
|
16
|
+
/** Resolve workspace metadata for a monorepo root.
|
|
17
|
+
* Returns null on any unrecoverable failure (caller treats as flat-repo).
|
|
18
|
+
* Uses @manypkg/get-packages for package enumeration; layers manual
|
|
19
|
+
* turbo.json / nx.json detection for the manifest_tool field. */
|
|
20
|
+
export async function resolveWorkspaces(root) {
|
|
21
|
+
let raw = null;
|
|
22
|
+
try {
|
|
23
|
+
const { getPackages } = await import("@manypkg/get-packages");
|
|
24
|
+
const result = await getPackages(root);
|
|
25
|
+
const rootPackage = result.rootPackage
|
|
26
|
+
? { dir: result.rootPackage.dir, packageJson: result.rootPackage.packageJson }
|
|
27
|
+
: undefined;
|
|
28
|
+
raw = {
|
|
29
|
+
tool: typeof result.tool === "string" ? result.tool : result.tool.type,
|
|
30
|
+
packages: result.packages.map((p) => ({
|
|
31
|
+
dir: p.dir,
|
|
32
|
+
packageJson: p.packageJson,
|
|
33
|
+
})),
|
|
34
|
+
...(rootPackage ? { rootPackage } : {}),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
// @manypkg throws on non-monorepo or malformed config — caller treats null
|
|
39
|
+
// as flat-repo. Existing regex YAML parser in project-tools.ts is the
|
|
40
|
+
// last-resort fallback and is invoked there, not here.
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
if (!raw || raw.packages.length === 0) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
// @manypkg returns tool="root" when there is no recognized workspace
|
|
47
|
+
// manager — i.e. a flat single-package repo. Treat as non-monorepo.
|
|
48
|
+
if (raw.tool === "root") {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
// manifest_tool: layer Turbo / Nx detection on top of @manypkg's tool
|
|
52
|
+
const tool = raw.tool || "pnpm";
|
|
53
|
+
let manifest_tool = tool;
|
|
54
|
+
if (existsSync(join(root, "turbo.json")))
|
|
55
|
+
manifest_tool = "turbo";
|
|
56
|
+
else if (existsSync(join(root, "nx.json")))
|
|
57
|
+
manifest_tool = "nx";
|
|
58
|
+
// Build workspace name set up-front for dependency classification
|
|
59
|
+
const nameToInfo = new Map();
|
|
60
|
+
const duplicateNames = new Set();
|
|
61
|
+
for (const pkg of raw.packages) {
|
|
62
|
+
const name = pkg.packageJson.name;
|
|
63
|
+
if (!name)
|
|
64
|
+
continue;
|
|
65
|
+
if (nameToInfo.has(name)) {
|
|
66
|
+
duplicateNames.add(name);
|
|
67
|
+
}
|
|
68
|
+
nameToInfo.set(name, pkg);
|
|
69
|
+
}
|
|
70
|
+
const workspaces = [];
|
|
71
|
+
for (const pkg of raw.packages) {
|
|
72
|
+
const name = pkg.packageJson.name ?? null;
|
|
73
|
+
const id = name ?? pkg.dir.slice(root.length).replace(/^[\\/]+/, "");
|
|
74
|
+
const allDeps = {
|
|
75
|
+
...(pkg.packageJson.dependencies ?? {}),
|
|
76
|
+
...(pkg.packageJson.devDependencies ?? {}),
|
|
77
|
+
...(pkg.packageJson.peerDependencies ?? {}),
|
|
78
|
+
};
|
|
79
|
+
const dependencies = { workspace: [], external: [] };
|
|
80
|
+
for (const dep of Object.keys(allDeps)) {
|
|
81
|
+
if (nameToInfo.has(dep))
|
|
82
|
+
dependencies.workspace.push(dep);
|
|
83
|
+
else
|
|
84
|
+
dependencies.external.push(dep);
|
|
85
|
+
}
|
|
86
|
+
const detected_frameworks = [];
|
|
87
|
+
for (const [dep, fwName] of FRAMEWORK_DEPS) {
|
|
88
|
+
if (Object.prototype.hasOwnProperty.call(allDeps, dep)) {
|
|
89
|
+
detected_frameworks.push(fwName);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const tsconfig_paths = readTsconfigPaths(pkg.dir);
|
|
93
|
+
workspaces.push({
|
|
94
|
+
id,
|
|
95
|
+
name,
|
|
96
|
+
root: pkg.dir,
|
|
97
|
+
package_manager_role: "package",
|
|
98
|
+
manifest_tool,
|
|
99
|
+
dependencies,
|
|
100
|
+
tsconfig_paths,
|
|
101
|
+
detected_frameworks,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
workspaces,
|
|
106
|
+
manifest_tool,
|
|
107
|
+
...(duplicateNames.size > 0 ? { duplicate_names: [...duplicateNames] } : {}),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/** Read tsconfig.json at the workspace root and extract `paths` aliases.
|
|
111
|
+
* Cached at index time; never read at query time. */
|
|
112
|
+
function readTsconfigPaths(workspaceRoot) {
|
|
113
|
+
const tsconfigPath = join(workspaceRoot, "tsconfig.json");
|
|
114
|
+
if (!existsSync(tsconfigPath))
|
|
115
|
+
return [];
|
|
116
|
+
try {
|
|
117
|
+
const result = getTsconfig(tsconfigPath);
|
|
118
|
+
const paths = result?.config?.compilerOptions?.paths;
|
|
119
|
+
if (!paths || typeof paths !== "object")
|
|
120
|
+
return [];
|
|
121
|
+
return Object.entries(paths).map(([from_pattern, to_paths]) => ({
|
|
122
|
+
from_pattern,
|
|
123
|
+
to_paths: Array.isArray(to_paths) ? to_paths : [],
|
|
124
|
+
}));
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return [];
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=workspace-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-resolver.js","sourceRoot":"","sources":["../../src/storage/workspace-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool-layer utilities — stateless converter/formatter helpers shared across
|
|
3
|
+
* MCP tool wrappers in `src/tools/*.ts`.
|
|
4
|
+
*
|
|
5
|
+
* Conventions:
|
|
6
|
+
* - Pure functions only (no I/O, no global state).
|
|
7
|
+
* - Each helper is independently testable.
|
|
8
|
+
* - First occupant: staleToMcpError — converts a "stale index" discriminated
|
|
9
|
+
* union from loadIndexOrStale into the standard MCP `{ isError: true }`
|
|
10
|
+
* error envelope so MCP clients handle stale-index the same way they handle
|
|
11
|
+
* any other tool error.
|
|
12
|
+
*/
|
|
13
|
+
interface StaleIndexResult {
|
|
14
|
+
reason: string;
|
|
15
|
+
expected_version: string;
|
|
16
|
+
actual_version: string;
|
|
17
|
+
/** Optional language identifier (e.g., "typescript"). When present, the
|
|
18
|
+
* rendered error text names it explicitly. Older callers that omit this
|
|
19
|
+
* still get a sensible message. */
|
|
20
|
+
language?: string;
|
|
21
|
+
}
|
|
22
|
+
interface McpErrorEnvelope {
|
|
23
|
+
isError: true;
|
|
24
|
+
content: Array<{
|
|
25
|
+
type: "text";
|
|
26
|
+
text: string;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
/** Convert a stale-index result to the standard MCP isError envelope.
|
|
30
|
+
*
|
|
31
|
+
* The internal TypeScript contract uses a discriminated union
|
|
32
|
+
* `{ status: "ok" | "stale", ... }` for type-safe handling at call sites; the
|
|
33
|
+
* wire format is the standard MCP error envelope so existing client code paths
|
|
34
|
+
* handle it without changes. */
|
|
35
|
+
export declare function staleToMcpError(stale: StaleIndexResult): McpErrorEnvelope;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=_helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_helpers.d.ts","sourceRoot":"","sources":["../../src/tools/_helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB;;wCAEoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAED;;;;;gCAKgC;AAChC,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAWzE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool-layer utilities — stateless converter/formatter helpers shared across
|
|
3
|
+
* MCP tool wrappers in `src/tools/*.ts`.
|
|
4
|
+
*
|
|
5
|
+
* Conventions:
|
|
6
|
+
* - Pure functions only (no I/O, no global state).
|
|
7
|
+
* - Each helper is independently testable.
|
|
8
|
+
* - First occupant: staleToMcpError — converts a "stale index" discriminated
|
|
9
|
+
* union from loadIndexOrStale into the standard MCP `{ isError: true }`
|
|
10
|
+
* error envelope so MCP clients handle stale-index the same way they handle
|
|
11
|
+
* any other tool error.
|
|
12
|
+
*/
|
|
13
|
+
/** Convert a stale-index result to the standard MCP isError envelope.
|
|
14
|
+
*
|
|
15
|
+
* The internal TypeScript contract uses a discriminated union
|
|
16
|
+
* `{ status: "ok" | "stale", ... }` for type-safe handling at call sites; the
|
|
17
|
+
* wire format is the standard MCP error envelope so existing client code paths
|
|
18
|
+
* handle it without changes. */
|
|
19
|
+
export function staleToMcpError(stale) {
|
|
20
|
+
const langPrefix = stale.language ? `${stale.language} ` : "";
|
|
21
|
+
return {
|
|
22
|
+
isError: true,
|
|
23
|
+
content: [
|
|
24
|
+
{
|
|
25
|
+
type: "text",
|
|
26
|
+
text: `Index stale: ${stale.reason} (${langPrefix}expected ${stale.expected_version}, got ${stale.actual_version}). Run index_folder to refresh.`,
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=_helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_helpers.js","sourceRoot":"","sources":["../../src/tools/_helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiBH;;;;;gCAKgC;AAChC,MAAM,UAAU,eAAe,CAAC,KAAuB;IACrD,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,gBAAgB,KAAK,CAAC,MAAM,KAAK,UAAU,YAAY,KAAK,CAAC,gBAAgB,SAAS,KAAK,CAAC,cAAc,iCAAiC;aAClJ;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ConstantResolutionResult } from "./python-constants-tools.js";
|
|
2
|
+
export type ConstantResolutionLanguage = "python" | "typescript";
|
|
3
|
+
export declare function resolveConstantValue(repo: string, symbolName: string, options?: {
|
|
4
|
+
file_pattern?: string;
|
|
5
|
+
max_depth?: number;
|
|
6
|
+
language?: ConstantResolutionLanguage;
|
|
7
|
+
}): Promise<ConstantResolutionResult>;
|
|
8
|
+
//# sourceMappingURL=constant-resolution-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constant-resolution-tools.d.ts","sourceRoot":"","sources":["../../src/tools/constant-resolution-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAA2B,MAAM,6BAA6B,CAAC;AAIrG,MAAM,MAAM,0BAA0B,GAAG,QAAQ,GAAG,YAAY,CAAC;AA+CjE,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,0BAA0B,CAAC;CACvC,GACA,OAAO,CAAC,wBAAwB,CAAC,CAgCnC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { getCodeIndex } from "./index-tools.js";
|
|
2
|
+
import { resolveConstantValue as resolvePythonConstantValue } from "./python-constants-tools.js";
|
|
3
|
+
import { resolveTypeScriptConstantValue } from "./typescript-constants-tools.js";
|
|
4
|
+
function isTypeScriptFile(filePath) {
|
|
5
|
+
return filePath.endsWith(".ts") || filePath.endsWith(".tsx");
|
|
6
|
+
}
|
|
7
|
+
function inferLanguages(index, symbolName, options) {
|
|
8
|
+
if (options?.language)
|
|
9
|
+
return [options.language];
|
|
10
|
+
const pattern = options?.file_pattern ?? "";
|
|
11
|
+
if (pattern.endsWith(".py"))
|
|
12
|
+
return ["python"];
|
|
13
|
+
if (pattern.endsWith(".ts") || pattern.endsWith(".tsx"))
|
|
14
|
+
return ["typescript"];
|
|
15
|
+
const candidates = index.symbols
|
|
16
|
+
.filter((symbol) => symbol.name === symbolName)
|
|
17
|
+
.filter((symbol) => !options?.file_pattern || symbol.file.includes(options.file_pattern));
|
|
18
|
+
const hasPython = candidates.some((symbol) => symbol.file.endsWith(".py"));
|
|
19
|
+
const hasTypeScript = candidates.some((symbol) => isTypeScriptFile(symbol.file));
|
|
20
|
+
if (hasPython && hasTypeScript)
|
|
21
|
+
return ["python", "typescript"];
|
|
22
|
+
if (hasPython)
|
|
23
|
+
return ["python"];
|
|
24
|
+
if (hasTypeScript)
|
|
25
|
+
return ["typescript"];
|
|
26
|
+
const repoHasPython = index.files.some((file) => file.path.endsWith(".py"));
|
|
27
|
+
const repoHasTypeScript = index.files.some((file) => isTypeScriptFile(file.path));
|
|
28
|
+
if (repoHasPython && repoHasTypeScript)
|
|
29
|
+
return ["python", "typescript"];
|
|
30
|
+
if (repoHasPython)
|
|
31
|
+
return ["python"];
|
|
32
|
+
if (repoHasTypeScript)
|
|
33
|
+
return ["typescript"];
|
|
34
|
+
return ["python"];
|
|
35
|
+
}
|
|
36
|
+
function normalizeMatches(matches, language) {
|
|
37
|
+
return matches.map((match) => ({
|
|
38
|
+
...match,
|
|
39
|
+
language,
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
export async function resolveConstantValue(repo, symbolName, options) {
|
|
43
|
+
const index = await getCodeIndex(repo);
|
|
44
|
+
if (!index) {
|
|
45
|
+
throw new Error(`Repository "${repo}" not found.`);
|
|
46
|
+
}
|
|
47
|
+
const languages = inferLanguages(index, symbolName, options);
|
|
48
|
+
const matches = [];
|
|
49
|
+
for (const language of languages) {
|
|
50
|
+
if (language === "python") {
|
|
51
|
+
const result = await resolvePythonConstantValue(repo, symbolName, options);
|
|
52
|
+
matches.push(...normalizeMatches(result.matches, "python"));
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (language === "typescript") {
|
|
56
|
+
const result = await resolveTypeScriptConstantValue(repo, symbolName, options);
|
|
57
|
+
matches.push(...normalizeMatches(result.matches, "typescript"));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
matches.sort((a, b) => a.file.localeCompare(b.file)
|
|
61
|
+
|| a.line - b.line
|
|
62
|
+
|| (a.language ?? "").localeCompare(b.language ?? ""));
|
|
63
|
+
return {
|
|
64
|
+
query: symbolName,
|
|
65
|
+
matches,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=constant-resolution-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constant-resolution-tools.js","sourceRoot":"","sources":["../../src/tools/constant-resolution-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,14 +10,24 @@ export interface AdjacencyIndex {
|
|
|
10
10
|
/** symbol id → symbols that reference this symbol (callers) */
|
|
11
11
|
callers: Map<string, CodeSymbol[]>;
|
|
12
12
|
}
|
|
13
|
+
export interface CallSite {
|
|
14
|
+
name: string;
|
|
15
|
+
is_method_call: boolean;
|
|
16
|
+
}
|
|
13
17
|
/**
|
|
14
18
|
* Extract identifiers that look like function/method calls from source code.
|
|
15
|
-
* Matches patterns like: `functionName(`, `obj.methodName(`, `this.method(
|
|
16
|
-
* Also matches JSX component usage: `<ComponentName
|
|
17
|
-
*
|
|
18
|
-
* Returns
|
|
19
|
+
* Matches patterns like: `functionName(`, `obj.methodName(`, `this.method(`.
|
|
20
|
+
* Also matches JSX component usage: `<ComponentName`.
|
|
21
|
+
*
|
|
22
|
+
* Returns an array of CallSite entries with an `is_method_call` flag so
|
|
23
|
+
* downstream graph consumers can exclude method calls from bare-function
|
|
24
|
+
* caller edges (root cause fix for builtin hub contamination, spec D4).
|
|
25
|
+
*
|
|
26
|
+
* Method-call detection: the match position is preceded by `.` or `?.`
|
|
27
|
+
* (including surrounding whitespace). Bracket notation `obj["map"]()` is
|
|
28
|
+
* NOT detected (documented residual noise per spec).
|
|
19
29
|
*/
|
|
20
|
-
declare function extractCallSites(source: string):
|
|
30
|
+
declare function extractCallSites(source: string): CallSite[];
|
|
21
31
|
/**
|
|
22
32
|
* Build caller/callee adjacency lists by extracting actual call sites from source code.
|
|
23
33
|
*
|
|
@@ -90,6 +100,18 @@ export interface CircularDepsResult {
|
|
|
90
100
|
cycles: CircularDep[];
|
|
91
101
|
total_files: number;
|
|
92
102
|
total_edges: number;
|
|
103
|
+
/** Package-level cycles in JS/TS monorepos. Present when index.workspaces
|
|
104
|
+
* is non-null (Task 12 of monorepo workspace intelligence plan). */
|
|
105
|
+
package_cycles?: Array<{
|
|
106
|
+
cycle: string[];
|
|
107
|
+
length: number;
|
|
108
|
+
}>;
|
|
109
|
+
/** Workspace dependency targets that don't match any known workspace name.
|
|
110
|
+
* Surfaced as a diagnostic; never crashes SCC. */
|
|
111
|
+
unresolved_workspace_refs?: Array<{
|
|
112
|
+
from_workspace: string;
|
|
113
|
+
missing_dep: string;
|
|
114
|
+
}>;
|
|
93
115
|
}
|
|
94
116
|
export declare function findCircularDeps(repo: string, options?: {
|
|
95
117
|
max_cycles?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-tools.d.ts","sourceRoot":"","sources":["../../src/tools/graph-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAmBnE;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACnC,+DAA+D;IAC/D,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;CACpC;AAED
|
|
1
|
+
{"version":3,"file":"graph-tools.d.ts","sourceRoot":"","sources":["../../src/tools/graph-tools.ts"],"names":[],"mappings":"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"}
|