gitnexus 1.6.6-rc.3 → 1.6.6-rc.30
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 +12 -1
- package/dist/_shared/index.d.ts +1 -1
- package/dist/_shared/index.d.ts.map +1 -1
- package/dist/_shared/index.js.map +1 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts +8 -0
- package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/context.d.ts +18 -1
- package/dist/_shared/scope-resolution/registries/context.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/context.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.d.ts +4 -2
- package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.js +8 -23
- package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -1
- package/dist/cli/analyze.d.ts +3 -0
- package/dist/cli/analyze.js +149 -5
- package/dist/cli/eval-server.d.ts +16 -3
- package/dist/cli/eval-server.js +91 -9
- package/dist/cli/index.js +10 -1
- package/dist/cli/setup.js +6 -4
- package/dist/cli/wiki.d.ts +1 -0
- package/dist/cli/wiki.js +51 -8
- package/dist/core/group/extractors/http-route-extractor.d.ts +1 -0
- package/dist/core/group/extractors/http-route-extractor.js +23 -12
- package/dist/core/ingestion/filesystem-walker.js +22 -4
- package/dist/core/ingestion/languages/cpp/captures.js +165 -9
- package/dist/core/ingestion/languages/cpp/constraint-filter.js +102 -32
- package/dist/core/ingestion/languages/cpp/conversion-rank.d.ts +19 -21
- package/dist/core/ingestion/languages/cpp/conversion-rank.js +43 -25
- package/dist/core/ingestion/languages/cpp/type-classifier.d.ts +9 -9
- package/dist/core/ingestion/languages/cpp/type-classifier.js +12 -8
- package/dist/core/ingestion/languages/java.js +35 -0
- package/dist/core/ingestion/languages/javascript/arity.d.ts +11 -0
- package/dist/core/ingestion/languages/javascript/arity.js +11 -0
- package/dist/core/ingestion/languages/javascript/captures.d.ts +30 -0
- package/dist/core/ingestion/languages/javascript/captures.js +655 -0
- package/dist/core/ingestion/languages/javascript/import-target.d.ts +29 -0
- package/dist/core/ingestion/languages/javascript/import-target.js +53 -0
- package/dist/core/ingestion/languages/javascript/index.d.ts +48 -0
- package/dist/core/ingestion/languages/javascript/index.js +48 -0
- package/dist/core/ingestion/languages/javascript/interpret.d.ts +29 -0
- package/dist/core/ingestion/languages/javascript/interpret.js +41 -0
- package/dist/core/ingestion/languages/javascript/merge-bindings.d.ts +16 -0
- package/dist/core/ingestion/languages/javascript/merge-bindings.js +18 -0
- package/dist/core/ingestion/languages/javascript/query.d.ts +52 -0
- package/dist/core/ingestion/languages/javascript/query.js +413 -0
- package/dist/core/ingestion/languages/javascript/scope-resolver.d.ts +37 -0
- package/dist/core/ingestion/languages/javascript/scope-resolver.js +73 -0
- package/dist/core/ingestion/languages/javascript/simple-hooks.d.ts +32 -0
- package/dist/core/ingestion/languages/javascript/simple-hooks.js +37 -0
- package/dist/core/ingestion/languages/kotlin/arity-metadata.d.ts +7 -0
- package/dist/core/ingestion/languages/kotlin/arity-metadata.js +20 -0
- package/dist/core/ingestion/languages/kotlin/arity.d.ts +2 -0
- package/dist/core/ingestion/languages/kotlin/arity.js +15 -0
- package/dist/core/ingestion/languages/kotlin/cache-stats.d.ts +7 -0
- package/dist/core/ingestion/languages/kotlin/cache-stats.js +15 -0
- package/dist/core/ingestion/languages/kotlin/captures.d.ts +2 -0
- package/dist/core/ingestion/languages/kotlin/captures.js +376 -0
- package/dist/core/ingestion/languages/kotlin/import-decomposer.d.ts +3 -0
- package/dist/core/ingestion/languages/kotlin/import-decomposer.js +37 -0
- package/dist/core/ingestion/languages/kotlin/import-target.d.ts +6 -0
- package/dist/core/ingestion/languages/kotlin/import-target.js +60 -0
- package/dist/core/ingestion/languages/kotlin/index.d.ts +8 -0
- package/dist/core/ingestion/languages/kotlin/index.js +8 -0
- package/dist/core/ingestion/languages/kotlin/interpret.d.ts +4 -0
- package/dist/core/ingestion/languages/kotlin/interpret.js +70 -0
- package/dist/core/ingestion/languages/kotlin/merge-bindings.d.ts +2 -0
- package/dist/core/ingestion/languages/kotlin/merge-bindings.js +25 -0
- package/dist/core/ingestion/languages/kotlin/owners.d.ts +2 -0
- package/dist/core/ingestion/languages/kotlin/owners.js +50 -0
- package/dist/core/ingestion/languages/kotlin/query.d.ts +3 -0
- package/dist/core/ingestion/languages/kotlin/query.js +112 -0
- package/dist/core/ingestion/languages/kotlin/receiver-binding.d.ts +3 -0
- package/dist/core/ingestion/languages/kotlin/receiver-binding.js +100 -0
- package/dist/core/ingestion/languages/kotlin/scope-resolver.d.ts +17 -0
- package/dist/core/ingestion/languages/kotlin/scope-resolver.js +37 -0
- package/dist/core/ingestion/languages/kotlin/simple-hooks.d.ts +4 -0
- package/dist/core/ingestion/languages/kotlin/simple-hooks.js +19 -0
- package/dist/core/ingestion/languages/kotlin.js +10 -0
- package/dist/core/ingestion/languages/typescript/captures.js +59 -10
- package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +10 -0
- package/dist/core/ingestion/languages/typescript/simple-hooks.js +4 -1
- package/dist/core/ingestion/languages/typescript.js +15 -0
- package/dist/core/ingestion/model/field-registry.d.ts +17 -3
- package/dist/core/ingestion/model/field-registry.js +19 -4
- package/dist/core/ingestion/model/owned-members-lookup.d.ts +19 -0
- package/dist/core/ingestion/model/owned-members-lookup.js +43 -0
- package/dist/core/ingestion/model/type-registry.d.ts +9 -0
- package/dist/core/ingestion/model/type-registry.js +18 -0
- package/dist/core/ingestion/parsing-processor.js +61 -7
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +312 -74
- package/dist/core/ingestion/pipeline.d.ts +50 -0
- package/dist/core/ingestion/registry-primary-flag.js +1 -0
- package/dist/core/ingestion/resolve-references.d.ts +3 -1
- package/dist/core/ingestion/resolve-references.js +5 -1
- package/dist/core/ingestion/scope-extractor.js +4 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +1 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +40 -8
- package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.d.ts +4 -2
- package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.js +47 -6
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +2 -0
- package/dist/core/ingestion/scope-resolution/pipeline/reconcile-ownership.d.ts +4 -2
- package/dist/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +48 -9
- package/dist/core/ingestion/scope-resolution/pipeline/registry.js +4 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +2 -0
- package/dist/core/ingestion/workers/parse-worker.js +54 -11
- package/dist/core/ingestion/workers/quarantine.d.ts +45 -0
- package/dist/core/ingestion/workers/quarantine.js +38 -0
- package/dist/core/ingestion/workers/worker-pool.d.ts +184 -2
- package/dist/core/ingestion/workers/worker-pool.js +814 -72
- package/dist/core/lbug/lbug-adapter.d.ts +3 -1
- package/dist/core/lbug/lbug-adapter.js +18 -19
- package/dist/core/lbug/pool-adapter.d.ts +19 -7
- package/dist/core/lbug/pool-adapter.js +68 -41
- package/dist/core/lbug/query-params.d.ts +1 -0
- package/dist/core/lbug/query-params.js +21 -0
- package/dist/core/run-analyze.d.ts +14 -0
- package/dist/core/run-analyze.js +79 -3
- package/dist/core/search/bm25-index.js +4 -6
- package/dist/core/search/fts-indexes.d.ts +6 -1
- package/dist/core/search/fts-indexes.js +28 -1
- package/dist/core/wiki/generator.d.ts +13 -0
- package/dist/core/wiki/generator.js +45 -4
- package/dist/core/wiki/llm-client.d.ts +1 -1
- package/dist/core/wiki/llm-client.js +23 -6
- package/dist/mcp/local/local-backend.d.ts +18 -3
- package/dist/mcp/local/local-backend.js +128 -12
- package/dist/mcp/tools.js +10 -0
- package/dist/server/api.d.ts +3 -0
- package/dist/server/api.js +66 -45
- package/package.json +3 -3
- package/web/assets/agent-Warpie3K.js +608 -0
- package/web/assets/{architectureDiagram-UL44E2DR-DvIkEGkp.js → architectureDiagram-UL44E2DR-BVMgctd1.js} +1 -1
- package/web/assets/{chunk-LCXTWHL2-CqJ0oo1x.js → chunk-LCXTWHL2-D0Ojsf12.js} +1 -1
- package/web/assets/{chunk-RG4AUYOV-D0M6vdq9.js → chunk-RG4AUYOV-CGOYR7mA.js} +1 -1
- package/web/assets/{classDiagram-KGZ6W3CR-BB-saqC1.js → classDiagram-KGZ6W3CR-BWNNFh9P.js} +1 -1
- package/web/assets/{classDiagram-v2-72OJOZXJ-Bp2bAlS5.js → classDiagram-v2-72OJOZXJ-D6den_PS.js} +1 -1
- package/web/assets/{diagram-3NCE3AQN-BUxnDPOY.js → diagram-3NCE3AQN-fpPDz4AJ.js} +1 -1
- package/web/assets/{diagram-GF46GFSD-BJTyqqvI.js → diagram-GF46GFSD-CBCK4dz-.js} +1 -1
- package/web/assets/{diagram-QXG6HAR7-DilMHamP.js → diagram-QXG6HAR7-Dp7brFCQ.js} +1 -1
- package/web/assets/{diagram-WEQXMOUZ-8KUrarg1.js → diagram-WEQXMOUZ-CcNoPnrZ.js} +1 -1
- package/web/assets/{erDiagram-L5TCEMPS-Doj9mSiW.js → erDiagram-L5TCEMPS-C7gqztHL.js} +1 -1
- package/web/assets/{flowDiagram-H6V6AXG4-BOSR-i3p.js → flowDiagram-H6V6AXG4-AhdoRoMl.js} +1 -1
- package/web/assets/{index-j4-NuleT.js → index-DHb4KmNb.js} +86 -85
- package/web/assets/{infoDiagram-3YFTVSEB-Ce_TvtaV.js → infoDiagram-3YFTVSEB-mP4ELRFj.js} +1 -1
- package/web/assets/{ishikawaDiagram-BNXS4ZKH-4MXIDCSF.js → ishikawaDiagram-BNXS4ZKH-CPiYSQcK.js} +1 -1
- package/web/assets/{kanban-definition-75IXJCU3-yYdfm8Kk.js → kanban-definition-75IXJCU3-EI3ocXjG.js} +1 -1
- package/web/assets/{mindmap-definition-2TDM6QVE-DFNEKM77.js → mindmap-definition-2TDM6QVE-293vIByN.js} +1 -1
- package/web/assets/{pieDiagram-CU6KROY3-iZAqpvhd.js → pieDiagram-CU6KROY3-DhdftcYl.js} +1 -1
- package/web/assets/{requirementDiagram-JXO7QTGE-CtDijhnf.js → requirementDiagram-JXO7QTGE-DdPq7kYS.js} +1 -1
- package/web/assets/{sequenceDiagram-VS2MUI6T-BdjvyCHM.js → sequenceDiagram-VS2MUI6T-CuIcQieZ.js} +1 -1
- package/web/assets/{stateDiagram-7D4R322I-e5odN9fG.js → stateDiagram-7D4R322I-CjVShw_t.js} +1 -1
- package/web/assets/{stateDiagram-v2-36443NZ5-vPsvjR2D.js → stateDiagram-v2-36443NZ5-D9CkWeqa.js} +1 -1
- package/web/assets/{timeline-definition-O6YCAMPW-DPAksNQp.js → timeline-definition-O6YCAMPW-Dzybzo6D.js} +1 -1
- package/web/assets/{vennDiagram-MWXL3ELB-Dtlfdt7J.js → vennDiagram-MWXL3ELB-CapSiCmK.js} +1 -1
- package/web/assets/{wardleyDiagram-CUQ6CDDI-B23uRMUC.js → wardleyDiagram-CUQ6CDDI-CohjGBRu.js} +1 -1
- package/web/assets/{xychartDiagram-N2JHSOCM-DxwHeksW.js → xychartDiagram-N2JHSOCM-CiYjF6Jz.js} +1 -1
- package/web/index.html +1 -1
- package/web/assets/agent-D2kLt6Dl.js +0 -597
package/README.md
CHANGED
|
@@ -151,7 +151,8 @@ Your AI agent gets these tools automatically:
|
|
|
151
151
|
```bash
|
|
152
152
|
gitnexus setup # Configure MCP for your editors (one-time)
|
|
153
153
|
gitnexus analyze [path] # Index a repository (or update stale index)
|
|
154
|
-
gitnexus analyze --
|
|
154
|
+
gitnexus analyze --repair-fts # Fast path: rebuild/verify only FTS indexes on existing index data
|
|
155
|
+
gitnexus analyze --force # Full rebuild: re-parse + graph rebuild + FTS rebuild
|
|
155
156
|
gitnexus analyze --embeddings # Enable embedding generation (slower, better search)
|
|
156
157
|
gitnexus analyze --skip-agents-md # Preserve custom AGENTS.md/CLAUDE.md gitnexus section edits
|
|
157
158
|
gitnexus analyze --verbose # Log skipped files when parsers are unavailable
|
|
@@ -358,6 +359,16 @@ npx gitnexus analyze
|
|
|
358
359
|
|
|
359
360
|
For repositories with very large source files, `GITNEXUS_WORKER_SUB_BATCH_MAX_BYTES` controls the worker job byte budget. The default is **8388608 bytes (8 MB)**.
|
|
360
361
|
|
|
362
|
+
### Worker pool resilience tuning
|
|
363
|
+
|
|
364
|
+
Three env vars expose the pool's resilience layers (respawn budget, cumulative-timeout cap, circuit breaker). Defaults are tuned for typical repos; bump them when an analyze legitimately needs more retries, or lower them to fail-fast on a known-bad shape.
|
|
365
|
+
|
|
366
|
+
| Variable | Default | Effect |
|
|
367
|
+
| ------------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
|
368
|
+
| `GITNEXUS_WORKER_MAX_RESPAWNS_PER_SLOT` | `3` | Max replacement spawns per slot before the slot is dropped from the active rotation. |
|
|
369
|
+
| `GITNEXUS_WORKER_MAX_CUMULATIVE_TIMEOUT_MS` | `5 × subBatchTimeoutMs` | Total retry wall-time budget per job before quarantining. Bounds exponentially-growing retry waits. |
|
|
370
|
+
| `GITNEXUS_WORKER_CONSECUTIVE_FAILURE_THRESHOLD` | `max(3, poolSize)` | Per-slot consecutive deaths before the pool's circuit breaker trips. After tripping, dispatches require a fresh pool. |
|
|
371
|
+
|
|
361
372
|
## Privacy
|
|
362
373
|
|
|
363
374
|
- All processing happens locally on your machine
|
package/dist/_shared/index.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export type { RawSignals } from './scope-resolution/registries/evidence.js';
|
|
|
41
41
|
export { compareByConfidenceWithTiebreaks, CONFIDENCE_EPSILON, } from './scope-resolution/registries/tie-breaks.js';
|
|
42
42
|
export type { TieBreakKey } from './scope-resolution/registries/tie-breaks.js';
|
|
43
43
|
export { CLASS_KINDS, METHOD_KINDS, FIELD_KINDS } from './scope-resolution/registries/context.js';
|
|
44
|
-
export type { RegistryContext, RegistryProviders, OwnerScopedContributor, ArityVerdict, ConstraintContext, } from './scope-resolution/registries/context.js';
|
|
44
|
+
export type { RegistryContext, RegistryProviders, OwnedMembersByOwnerLookup, OwnerScopedContributor, ArityVerdict, ConstraintContext, } from './scope-resolution/registries/context.js';
|
|
45
45
|
export { makeScopeId, clearScopeIdInternPool } from './scope-resolution/scope-id.js';
|
|
46
46
|
export type { ScopeIdInput } from './scope-resolution/scope-id.js';
|
|
47
47
|
export { buildScopeTree, canParentScope, ScopeTreeInvariantError, } from './scope-resolution/scope-tree.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,WAAW,EACX,cAAc,EACd,SAAS,EACT,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACjG,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAIrE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AACpG,YAAY,EACV,OAAO,EACP,KAAK,EACL,SAAS,EACT,KAAK,EACL,OAAO,EACP,YAAY,EACZ,UAAU,EACV,UAAU,EACV,OAAO,EACP,KAAK,EACL,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,WAAW,GACZ,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAG/E,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,+CAA+C,CAAC;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAG5F,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,YAAY,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,YAAY,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAKrF,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,YAAY,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAGpF,YAAY,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAGnG,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,YAAY,EACV,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,6CAA6C,CAAC;AAGrD,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AACpE,YAAY,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AACrF,YAAY,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,YAAY,EACV,cAAc,EACd,mBAAmB,GACpB,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AACrF,YAAY,EACV,aAAa,EACb,kBAAkB,GACnB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAC1E,YAAY,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AACpF,YAAY,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACpG,YAAY,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EACL,gCAAgC,EAChC,kBAAkB,GACnB,MAAM,6CAA6C,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAClG,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,GAClB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACrF,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EACL,cAAc,EACd,cAAc,EACd,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAM1E,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACtE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACjG,YAAY,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EACL,cAAc,EACd,4BAA4B,EAC5B,kBAAkB,EAClB,eAAe,GAChB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAG/E,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,GACf,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAG9E,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,YAAY,EACV,eAAe,EACf,cAAc,EACd,UAAU,GACX,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,mBAAmB;AACnB,OAAO,EACL,WAAW,EACX,cAAc,EACd,SAAS,EACT,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAGpC,mBAAmB;AACnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAiCjG,8DAA8D;AAC9D,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAGxE,yDAAyD;AACzD,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,+CAA+C,CAAC;AAGvD,sEAAsE;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAGrF,gEAAgE;AAChE,yEAAyE;AACzE,2DAA2D;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAOxE,oFAAoF;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAMvF,uEAAuE;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAUpE,sEAAsE;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAKvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAKrF,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAEpG,OAAO,EACL,gCAAgC,EAChC,kBAAkB,GACnB,MAAM,6CAA6C,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,mBAAmB;AACnB,OAAO,EACL,WAAW,EACX,cAAc,EACd,SAAS,EACT,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAGpC,mBAAmB;AACnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAiCjG,8DAA8D;AAC9D,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAGxE,yDAAyD;AACzD,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,+CAA+C,CAAC;AAGvD,sEAAsE;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAGrF,gEAAgE;AAChE,yEAAyE;AACzE,2DAA2D;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAOxE,oFAAoF;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAMvF,uEAAuE;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAUpE,sEAAsE;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAKvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAKrF,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAEpG,OAAO,EACL,gCAAgC,EAChC,kBAAkB,GACnB,MAAM,6CAA6C,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAUlG,2EAA2E;AAC3E,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAErF,OAAO,EACL,cAAc,EACd,cAAc,EACd,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAG1E,8EAA8E;AAC9E,wEAAwE;AACxE,wEAAwE;AACxE,8DAA8D;AAC9D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAEjG,OAAO,EACL,cAAc,EACd,4BAA4B,EAC5B,kBAAkB,EAClB,eAAe,GAChB,MAAM,mCAAmC,CAAC;AAG3C,mDAAmD;AACnD,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,GACf,MAAM,sCAAsC,CAAC;AAG9C,gEAAgE;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAMpE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC"}
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
* resolution step that reads this record and produces a `Reference`
|
|
21
21
|
* (defined in `./types.ts`).
|
|
22
22
|
*/
|
|
23
|
+
import type { ParameterTypeClass } from './symbol-definition.js';
|
|
23
24
|
import type { Range, ScopeId } from './types.js';
|
|
24
25
|
/**
|
|
25
26
|
* What kind of usage this reference represents — the graph-edge kind
|
|
@@ -71,5 +72,12 @@ export interface ReferenceSite {
|
|
|
71
72
|
* (C#: `42` → `'int'`, `"alice"` → `'string'`).
|
|
72
73
|
*/
|
|
73
74
|
readonly argumentTypes?: readonly string[];
|
|
75
|
+
/**
|
|
76
|
+
* Optional per-argument type-shape sidecar for languages that need
|
|
77
|
+
* cv/ref/pointer distinctions during constraint filtering. This is
|
|
78
|
+
* intentionally separate from `argumentTypes`, which stays normalized
|
|
79
|
+
* for existing overload narrowing and conversion-rank logic.
|
|
80
|
+
*/
|
|
81
|
+
readonly argumentTypeClasses?: readonly ParameterTypeClass[];
|
|
74
82
|
}
|
|
75
83
|
//# sourceMappingURL=reference-site.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-site.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/reference-site.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,MAAM,GACN,OAAO,GACP,gBAAgB,GAChB,UAAU,GACV,YAAY,CAAC;AAEjB;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"reference-site.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/reference-site.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,MAAM,GACN,OAAO,GACP,gBAAgB,GAChB,UAAU,GACV,YAAY,CAAC;AAEjB;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAC9D"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* reaches into the CLI package.
|
|
13
13
|
*/
|
|
14
14
|
import type { NodeLabel } from '../../graph/types.js';
|
|
15
|
-
import type { SymbolDefinition } from '../symbol-definition.js';
|
|
15
|
+
import type { ParameterTypeClass, SymbolDefinition } from '../symbol-definition.js';
|
|
16
16
|
import type { Callsite, DefId } from '../types.js';
|
|
17
17
|
import type { DefIndex } from '../def-index.js';
|
|
18
18
|
import type { QualifiedNameIndex } from '../qualified-name-index.js';
|
|
@@ -54,6 +54,13 @@ export interface ConstraintContext {
|
|
|
54
54
|
* `narrowOverloadCandidates`' `argTypes` parameter.
|
|
55
55
|
*/
|
|
56
56
|
readonly argumentTypes?: readonly string[];
|
|
57
|
+
/**
|
|
58
|
+
* Optional shape-preserving sidecar aligned with `argumentTypes`.
|
|
59
|
+
* Unknown or unsupported slots should be omitted by producers or
|
|
60
|
+
* marked with `indirection: 'unknown'`; consumers must preserve the
|
|
61
|
+
* monotonic fallback and return 'unknown' instead of guessing.
|
|
62
|
+
*/
|
|
63
|
+
readonly argumentTypeClasses?: readonly ParameterTypeClass[];
|
|
57
64
|
}
|
|
58
65
|
/**
|
|
59
66
|
* Per-owner membership view plugged into `LookupParams.ownerScopedContributor`.
|
|
@@ -78,11 +85,21 @@ export interface OwnerScopedContributor {
|
|
|
78
85
|
*/
|
|
79
86
|
byName(name: string): readonly SymbolDefinition[];
|
|
80
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Required owner-keyed lookup hook for Step 2 receiver/MRO member walks.
|
|
90
|
+
* Production callers wire this to the SemanticModel's authoritative
|
|
91
|
+
* method/field/nested-type registries so each `(ownerDefId, memberName)`
|
|
92
|
+
* probe is O(1). Implementations MUST return `[]` on an indexed miss —
|
|
93
|
+
* Step 2 treats `[]` as authoritative and does not consult `defs` for a
|
|
94
|
+
* fallback scan.
|
|
95
|
+
*/
|
|
96
|
+
export type OwnedMembersByOwnerLookup = (ownerDefId: DefId, memberName: string) => readonly SymbolDefinition[];
|
|
81
97
|
export interface RegistryContext {
|
|
82
98
|
readonly scopes: ScopeTree;
|
|
83
99
|
readonly defs: DefIndex;
|
|
84
100
|
readonly qualifiedNames: QualifiedNameIndex;
|
|
85
101
|
readonly moduleScopes: ModuleScopeIndex;
|
|
102
|
+
readonly ownedMembersByOwner: OwnedMembersByOwnerLookup;
|
|
86
103
|
/**
|
|
87
104
|
* Method-dispatch index; required for method/field registries that
|
|
88
105
|
* honor `useReceiverTypeBinding`. Omit for class-only lookups.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/scope-resolution/registries/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/scope-resolution/registries/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAIvE,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,kBAAkB,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,gBAAgB,GAAG,YAAY,CAAC;IAE7E;;;;;;;;;;OAUG;IACH,uBAAuB,CAAC,CACtB,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,GACrB,YAAY,CAAC;CACjB;AAED,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,SAAS,GAAG,cAAc,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAC9D;AAID;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,sBAAsB;IACrC,sEAAsE;IACtE,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;IAC3B;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,gBAAgB,EAAE,CAAC;CACnD;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,yBAAyB,GAAG,CACtC,UAAU,EAAE,KAAK,EACjB,UAAU,EAAE,MAAM,KACf,SAAS,gBAAgB,EAAE,CAAC;AAIjC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;IACxC,QAAQ,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;IACxD;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;CACvC;AAOD,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAc1C,CAAC;AAEH,eAAO,MAAM,YAAY,EAAE,SAAS,SAAS,EAI3C,CAAC;AAEH,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAK1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/scope-resolution/registries/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/scope-resolution/registries/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAuHH,8EAA8E;AAC9E,EAAE;AACF,0EAA0E;AAC1E,6DAA6D;AAE7D,MAAM,CAAC,MAAM,WAAW,GAAyB,MAAM,CAAC,MAAM,CAAC;IAC7D,OAAO;IACP,WAAW;IACX,MAAM;IACN,QAAQ;IACR,OAAO;IACP,OAAO;IACP,WAAW;IACX,SAAS;IACT,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,UAAU;IACV,WAAW;CACZ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAyB,MAAM,CAAC,MAAM,CAAC;IAC9D,QAAQ;IACR,UAAU;IACV,aAAa;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAyB,MAAM,CAAC,MAAM,CAAC;IAC7D,UAAU;IACV,UAAU;IACV,OAAO;IACP,QAAQ;CACT,CAAC,CAAC"}
|
|
@@ -27,8 +27,10 @@
|
|
|
27
27
|
* is true, resolve the receiver's type at `startScope` (from
|
|
28
28
|
* `scope.typeBindings`), then walk the MRO via
|
|
29
29
|
* `MethodDispatchIndex.mroFor(ownerDefId)`. Membership per owner comes
|
|
30
|
-
* through `RegistryContext.
|
|
31
|
-
* `
|
|
30
|
+
* through an optional `RegistryContext.ownedMembersByOwner` hook when
|
|
31
|
+
* supplied (`undefined` → fall back to `defs.byId`; `[]` → indexed
|
|
32
|
+
* miss), otherwise via the compatibility fallback scan over
|
|
33
|
+
* `defs.byId`; each hit records a raw signal with the owner's
|
|
32
34
|
* MRO depth.
|
|
33
35
|
*
|
|
34
36
|
* **Step 3 — Owner-scoped contributor.** When
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup-core.d.ts","sourceRoot":"","sources":["../../../src/scope-resolution/registries/lookup-core.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"lookup-core.d.ts","sourceRoot":"","sources":["../../../src/scope-resolution/registries/lookup-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAIH,OAAO,KAAK,EAEV,QAAQ,EAER,YAAY,EACZ,UAAU,EAEV,OAAO,EACR,MAAM,aAAa,CAAC;AAKrB,OAAO,KAAK,EAAgB,sBAAsB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAI1F,wFAAwF;AACxF,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,YAAY,EAAE,wBAAwB,CAAC;IACpF,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC/D,gGAAgG;IAChG,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,eAAe,GACnB,SAAS,UAAU,EAAE,CAwCvB"}
|
|
@@ -27,8 +27,10 @@
|
|
|
27
27
|
* is true, resolve the receiver's type at `startScope` (from
|
|
28
28
|
* `scope.typeBindings`), then walk the MRO via
|
|
29
29
|
* `MethodDispatchIndex.mroFor(ownerDefId)`. Membership per owner comes
|
|
30
|
-
* through `RegistryContext.
|
|
31
|
-
* `
|
|
30
|
+
* through an optional `RegistryContext.ownedMembersByOwner` hook when
|
|
31
|
+
* supplied (`undefined` → fall back to `defs.byId`; `[]` → indexed
|
|
32
|
+
* miss), otherwise via the compatibility fallback scan over
|
|
33
|
+
* `defs.byId`; each hit records a raw signal with the owner's
|
|
32
34
|
* MRO depth.
|
|
33
35
|
*
|
|
34
36
|
* **Step 3 — Owner-scoped contributor.** When
|
|
@@ -170,14 +172,15 @@ function walkReceiverTypeBinding(name, startScope, acceptedKinds, params, ctx, p
|
|
|
170
172
|
return;
|
|
171
173
|
// Walk the owner itself at depth 0, then its MRO chain.
|
|
172
174
|
const walk = [ownerDefId, ...ctx.methodDispatch.mroFor(ownerDefId)];
|
|
173
|
-
|
|
174
|
-
|
|
175
|
+
let mroDepth = 0;
|
|
176
|
+
for (const currentOwnerId of walk) {
|
|
175
177
|
const members = collectOwnedMembers(currentOwnerId, name, ctx);
|
|
176
178
|
for (const def of members) {
|
|
177
179
|
if (!acceptedKinds.has(def.type))
|
|
178
180
|
continue;
|
|
179
181
|
recordTypeBindingHit(perCandidate, def, mroDepth, ownerDefId);
|
|
180
182
|
}
|
|
183
|
+
mroDepth++;
|
|
181
184
|
}
|
|
182
185
|
}
|
|
183
186
|
function resolveReceiverOwner(startScope, params, ctx) {
|
|
@@ -226,25 +229,7 @@ function lookupReceiverType(startScope, receiverName, ctx) {
|
|
|
226
229
|
return undefined;
|
|
227
230
|
}
|
|
228
231
|
function collectOwnedMembers(ownerDefId, memberName, ctx) {
|
|
229
|
-
|
|
230
|
-
// simple name matches `memberName`. We iterate `defs.byId` — O(D) per
|
|
231
|
-
// call today. A future by-owner index would make this O(K); tracked as
|
|
232
|
-
// a follow-up optimization before Ring 3 flips go production.
|
|
233
|
-
const out = [];
|
|
234
|
-
for (const def of ctx.defs.byId.values()) {
|
|
235
|
-
if (def.ownerId !== ownerDefId)
|
|
236
|
-
continue;
|
|
237
|
-
if (simpleNameOf(def) !== memberName)
|
|
238
|
-
continue;
|
|
239
|
-
out.push(def);
|
|
240
|
-
}
|
|
241
|
-
return out;
|
|
242
|
-
}
|
|
243
|
-
function simpleNameOf(def) {
|
|
244
|
-
if (def.qualifiedName === undefined || def.qualifiedName.length === 0)
|
|
245
|
-
return undefined;
|
|
246
|
-
const dot = def.qualifiedName.lastIndexOf('.');
|
|
247
|
-
return dot === -1 ? def.qualifiedName : def.qualifiedName.slice(dot + 1);
|
|
232
|
+
return ctx.ownedMembersByOwner(ownerDefId, memberName);
|
|
248
233
|
}
|
|
249
234
|
function recordTypeBindingHit(perCandidate, def, mroDepth, receiverOwner) {
|
|
250
235
|
const state = ensureCandidate(perCandidate, def);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup-core.js","sourceRoot":"","sources":["../../../src/scope-resolution/registries/lookup-core.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"lookup-core.js","sourceRoot":"","sources":["../../../src/scope-resolution/registries/lookup-core.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/analyze.d.ts
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export interface AnalyzeOptions {
|
|
11
11
|
force?: boolean;
|
|
12
|
+
repairFts?: boolean;
|
|
12
13
|
/**
|
|
13
14
|
* Embedding generation toggle. Commander parses `--embeddings [limit]` as:
|
|
14
15
|
* - `undefined` when the flag is omitted
|
|
@@ -68,6 +69,8 @@ export interface AnalyzeOptions {
|
|
|
68
69
|
maxFileSize?: string;
|
|
69
70
|
/** Override worker sub-batch idle timeout in seconds. */
|
|
70
71
|
workerTimeout?: string;
|
|
72
|
+
/** Parse worker pool size; 0 disables workers (sequential fallback). */
|
|
73
|
+
workers?: string;
|
|
71
74
|
embeddingThreads?: string;
|
|
72
75
|
embeddingBatchSize?: string;
|
|
73
76
|
embeddingSubBatchSize?: string;
|
package/dist/cli/analyze.js
CHANGED
|
@@ -58,12 +58,55 @@ const installFatalHandlers = () => {
|
|
|
58
58
|
process.exit(1);
|
|
59
59
|
});
|
|
60
60
|
};
|
|
61
|
-
const HEAP_MB =
|
|
62
|
-
const
|
|
61
|
+
const HEAP_MB = 16384;
|
|
62
|
+
const TEST_RESPAWN_HEAP_MB = Number(process.env.GITNEXUS_TEST_RESPAWN_HEAP_MB);
|
|
63
|
+
const RESPAWN_HEAP_MB = Number.isFinite(TEST_RESPAWN_HEAP_MB) && TEST_RESPAWN_HEAP_MB > 0
|
|
64
|
+
? Math.floor(TEST_RESPAWN_HEAP_MB)
|
|
65
|
+
: HEAP_MB;
|
|
66
|
+
const HEAP_FLAG = `--max-old-space-size=${RESPAWN_HEAP_MB}`;
|
|
63
67
|
/** Increase default stack size (KB) to prevent stack overflow on deep class hierarchies. */
|
|
64
68
|
const STACK_KB = 4096;
|
|
65
69
|
const STACK_FLAG = `--stack-size=${STACK_KB}`;
|
|
66
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* Heuristic for "child re-exec likely died from V8 OOM".
|
|
72
|
+
*
|
|
73
|
+
* Platform-independent detection is best-effort: V8/Node usually emit
|
|
74
|
+
* stable heap-exhaustion phrases in stderr/message across Linux/macOS/Windows
|
|
75
|
+
* (for example "JavaScript heap out of memory" or "Reached heap limit"),
|
|
76
|
+
* while some environments only expose status/signal (e.g. 134/SIGABRT).
|
|
77
|
+
* We combine both text signatures and process-exit signatures.
|
|
78
|
+
*/
|
|
79
|
+
const childProcessLikelyOom = (err) => {
|
|
80
|
+
if (!err || typeof err !== 'object')
|
|
81
|
+
return false;
|
|
82
|
+
const e = err;
|
|
83
|
+
const hasHeapOomSignature = (v) => {
|
|
84
|
+
const text = (Buffer.isBuffer(v) ? v.toString('utf8') : typeof v === 'string' ? v : '').toLowerCase();
|
|
85
|
+
if (!text)
|
|
86
|
+
return false;
|
|
87
|
+
return (text.includes('javascript heap out of memory') ||
|
|
88
|
+
text.includes('reached heap limit') ||
|
|
89
|
+
text.includes('allocation failed - javascript heap out of memory') ||
|
|
90
|
+
text.includes('fatalprocessoutofmemory'));
|
|
91
|
+
};
|
|
92
|
+
const fields = [e.message, e.stderr, e.stdout];
|
|
93
|
+
if (fields.some((v) => hasHeapOomSignature(v)))
|
|
94
|
+
return true;
|
|
95
|
+
const hasAnyChildOutput = [e.stderr, e.stdout].some((v) => (Buffer.isBuffer(v) && v.length > 0) || (typeof v === 'string' && v.length > 0));
|
|
96
|
+
if (hasAnyChildOutput)
|
|
97
|
+
return false;
|
|
98
|
+
return e.status === 134 || e.signal === 'SIGABRT';
|
|
99
|
+
};
|
|
100
|
+
const forceHeapOOMForTestIfEnabled = () => {
|
|
101
|
+
if (process.env.GITNEXUS_TEST_FORCE_HEAP_OOM !== '1')
|
|
102
|
+
return;
|
|
103
|
+
// Allocate JS strings (not Buffers) so pressure lands on V8 heap itself.
|
|
104
|
+
// Buffers can allocate off-heap, which makes OOM triggering less reliable.
|
|
105
|
+
const chunks = [];
|
|
106
|
+
for (;;)
|
|
107
|
+
chunks.push('x'.repeat(1024 * 1024));
|
|
108
|
+
};
|
|
109
|
+
/** Re-exec the process with a 16GB heap and larger stack if we're currently below that. */
|
|
67
110
|
function ensureHeap() {
|
|
68
111
|
const nodeOpts = process.env.NODE_OPTIONS || '';
|
|
69
112
|
if (nodeOpts.includes('--max-old-space-size'))
|
|
@@ -83,10 +126,53 @@ function ensureHeap() {
|
|
|
83
126
|
});
|
|
84
127
|
}
|
|
85
128
|
catch (e) {
|
|
86
|
-
|
|
129
|
+
if (childProcessLikelyOom(e)) {
|
|
130
|
+
cliError(` Analysis likely ran out of memory.\n` +
|
|
131
|
+
` Retry with a larger heap if your machine allows it:\n` +
|
|
132
|
+
` NODE_OPTIONS="--max-old-space-size=24576" gitnexus analyze [your-args]\n` +
|
|
133
|
+
` (Windows: set NODE_OPTIONS=--max-old-space-size=24576 && gitnexus analyze [your-args])\n` +
|
|
134
|
+
` If this persists, it may be a native crash unrelated to heap size.\n`, { recoveryHint: 'heap-oom-respawn' });
|
|
135
|
+
}
|
|
136
|
+
const status = typeof e === 'object' && e !== null && 'status' in e && typeof e.status === 'number'
|
|
137
|
+
? e.status
|
|
138
|
+
: 1;
|
|
139
|
+
process.exitCode = status;
|
|
87
140
|
}
|
|
88
141
|
return true;
|
|
89
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* GITNEXUS_* env vars that `analyzeCommand` writes for backward-compatible
|
|
145
|
+
* downstream consumption. Snapshotted at function entry and restored in the
|
|
146
|
+
* finally block so that programmatic callers (tests, long-running hosts)
|
|
147
|
+
* don't see leaked state across invocations. `GITNEXUS_WORKER_POOL_SIZE` is
|
|
148
|
+
* NOT in this list: that knob is threaded through `runFullAnalysis` options
|
|
149
|
+
* (see `workerPoolSize` plumbing) so the CLI never has to mutate `process.env`
|
|
150
|
+
* for it in the first place.
|
|
151
|
+
*/
|
|
152
|
+
const ANALYZE_CLI_ENV_KEYS = [
|
|
153
|
+
'GITNEXUS_VERBOSE',
|
|
154
|
+
'GITNEXUS_MAX_FILE_SIZE',
|
|
155
|
+
'GITNEXUS_WORKER_SUB_BATCH_TIMEOUT_MS',
|
|
156
|
+
'GITNEXUS_EMBEDDING_THREADS',
|
|
157
|
+
'GITNEXUS_EMBEDDING_BATCH_SIZE',
|
|
158
|
+
'GITNEXUS_EMBEDDING_SUB_BATCH_SIZE',
|
|
159
|
+
'GITNEXUS_EMBEDDING_DEVICE',
|
|
160
|
+
];
|
|
161
|
+
const snapshotAnalyzeEnv = () => {
|
|
162
|
+
const snap = {};
|
|
163
|
+
for (const k of ANALYZE_CLI_ENV_KEYS)
|
|
164
|
+
snap[k] = process.env[k];
|
|
165
|
+
return snap;
|
|
166
|
+
};
|
|
167
|
+
const restoreAnalyzeEnv = (snap) => {
|
|
168
|
+
for (const k of ANALYZE_CLI_ENV_KEYS) {
|
|
169
|
+
const v = snap[k];
|
|
170
|
+
if (v === undefined)
|
|
171
|
+
delete process.env[k];
|
|
172
|
+
else
|
|
173
|
+
process.env[k] = v;
|
|
174
|
+
}
|
|
175
|
+
};
|
|
90
176
|
/**
|
|
91
177
|
* Whether the post-index skill step should run.
|
|
92
178
|
*
|
|
@@ -104,10 +190,27 @@ export const shouldGenerateCommunitySkillFiles = (options, pipelineResult) => Bo
|
|
|
104
190
|
export const analyzeCommand = async (inputPath, options) => {
|
|
105
191
|
if (ensureHeap())
|
|
106
192
|
return;
|
|
193
|
+
forceHeapOOMForTestIfEnabled();
|
|
107
194
|
// Install fatal handlers immediately after re-exec resolution so any
|
|
108
195
|
// async error that escapes the try/catch below (#1169) surfaces with
|
|
109
196
|
// a stack trace and a non-zero exit code instead of a silent exit 0.
|
|
110
197
|
installFatalHandlers();
|
|
198
|
+
// Snapshot the GITNEXUS_* env vars that the impl writes for downstream
|
|
199
|
+
// consumption, so they don't leak across `analyzeCommand` invocations in
|
|
200
|
+
// programmatic callers (tests, long-running hosts). `process.exit(0)` on
|
|
201
|
+
// the success path bypasses `finally` — intentional: when the process is
|
|
202
|
+
// exiting, restoration is moot. For early-return paths (validation
|
|
203
|
+
// errors) and the alreadyUpToDate fast path the finally restores the
|
|
204
|
+
// pre-call values.
|
|
205
|
+
const envSnap = snapshotAnalyzeEnv();
|
|
206
|
+
try {
|
|
207
|
+
await analyzeCommandImpl(inputPath, options);
|
|
208
|
+
}
|
|
209
|
+
finally {
|
|
210
|
+
restoreAnalyzeEnv(envSnap);
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
const analyzeCommandImpl = async (inputPath, options) => {
|
|
111
214
|
if (options?.verbose) {
|
|
112
215
|
process.env.GITNEXUS_VERBOSE = '1';
|
|
113
216
|
}
|
|
@@ -123,6 +226,23 @@ export const analyzeCommand = async (inputPath, options) => {
|
|
|
123
226
|
}
|
|
124
227
|
process.env.GITNEXUS_WORKER_SUB_BATCH_TIMEOUT_MS = String(Math.round(workerTimeoutSeconds * 1000));
|
|
125
228
|
}
|
|
229
|
+
// `--workers` is threaded through `runFullAnalysis` options → PipelineOptions
|
|
230
|
+
// → createWorkerPool, intentionally bypassing the GITNEXUS_WORKER_POOL_SIZE
|
|
231
|
+
// env channel so this CLI surface never mutates `process.env` for pool size.
|
|
232
|
+
// Tests can therefore re-invoke analyzeCommand with different --workers
|
|
233
|
+
// values back-to-back and observe the value they passed, not whatever the
|
|
234
|
+
// previous call leaked.
|
|
235
|
+
let workerPoolSize;
|
|
236
|
+
if (options?.workers !== undefined) {
|
|
237
|
+
const parsedWorkers = Number(options.workers);
|
|
238
|
+
if (!Number.isInteger(parsedWorkers) || parsedWorkers < 0) {
|
|
239
|
+
cliError(' --workers must be a non-negative integer. ' +
|
|
240
|
+
'Pass 0 to disable the worker pool (sequential fallback).\n');
|
|
241
|
+
process.exitCode = 1;
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
workerPoolSize = parsedWorkers;
|
|
245
|
+
}
|
|
126
246
|
// Parse `--embeddings [limit]`: `true` → default cap, string → numeric cap
|
|
127
247
|
// (0 disables the cap entirely). Validated up here so failures match the
|
|
128
248
|
// sibling-validation pattern (exit before bar.start() — otherwise
|
|
@@ -165,6 +285,12 @@ export const analyzeCommand = async (inputPath, options) => {
|
|
|
165
285
|
}
|
|
166
286
|
process.env.GITNEXUS_EMBEDDING_DEVICE = options.embeddingDevice;
|
|
167
287
|
}
|
|
288
|
+
if (options?.repairFts && options?.force) {
|
|
289
|
+
cliError(' Cannot combine `--repair-fts` with `--force`. ' +
|
|
290
|
+
'Use `--repair-fts` for fast FTS-only repair, or `--force` for a full rebuild.\n');
|
|
291
|
+
process.exitCode = 1;
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
168
294
|
console.log('\n GitNexus Analyzer\n');
|
|
169
295
|
// `--index-only` is the stronger contract — it suppresses every form of file
|
|
170
296
|
// injection, including community skill writes that `--skills` would normally
|
|
@@ -317,9 +443,11 @@ export const analyzeCommand = async (inputPath, options) => {
|
|
|
317
443
|
// needs a fresh pipelineResult. Has no bearing on the registry
|
|
318
444
|
// collision guard (see allowDuplicateName below).
|
|
319
445
|
force: options?.force || options?.skills,
|
|
446
|
+
repairFts: options?.repairFts,
|
|
320
447
|
embeddings: embeddingsEnabled,
|
|
321
448
|
embeddingsNodeLimit,
|
|
322
449
|
dropEmbeddings: options?.dropEmbeddings,
|
|
450
|
+
verbose: options?.verbose,
|
|
323
451
|
skipGit: options?.skipGit,
|
|
324
452
|
skipAgentsMd,
|
|
325
453
|
skipSkills,
|
|
@@ -335,6 +463,10 @@ export const analyzeCommand = async (inputPath, options) => {
|
|
|
335
463
|
// be able to accept the duplicate name without also paying the
|
|
336
464
|
// cost of a full pipeline re-index. See #829 review round 2.
|
|
337
465
|
allowDuplicateName: options?.allowDuplicateName,
|
|
466
|
+
// Worker pool size threaded from --workers, replacing the previous
|
|
467
|
+
// GITNEXUS_WORKER_POOL_SIZE env mutation. `undefined` defers to the
|
|
468
|
+
// env / auto-formula fallback inside the pipeline.
|
|
469
|
+
workerPoolSize,
|
|
338
470
|
}, {
|
|
339
471
|
onProgress: (_phase, percent, message) => {
|
|
340
472
|
updateBar(percent, message);
|
|
@@ -360,6 +492,18 @@ export const analyzeCommand = async (inputPath, options) => {
|
|
|
360
492
|
// runFullAnalysis never opens LadybugDB, so no native handles prevent exit.
|
|
361
493
|
return;
|
|
362
494
|
}
|
|
495
|
+
if (result.ftsRepairedOnly) {
|
|
496
|
+
clearInterval(elapsedTimer);
|
|
497
|
+
process.removeListener('SIGINT', sigintHandler);
|
|
498
|
+
console.log = origLog;
|
|
499
|
+
// eslint-disable-next-line no-console -- restoring after intentional progress-bar routing
|
|
500
|
+
console.warn = origWarn;
|
|
501
|
+
// eslint-disable-next-line no-console -- restoring after intentional progress-bar routing
|
|
502
|
+
console.error = origError;
|
|
503
|
+
bar.stop();
|
|
504
|
+
console.log(' FTS indexes repaired successfully\n');
|
|
505
|
+
return;
|
|
506
|
+
}
|
|
363
507
|
// Post-finalize invariant (#1169): runFullAnalysis nominally writes
|
|
364
508
|
// meta.json and registers the repo, but on Windows it has been
|
|
365
509
|
// observed to return successfully with neither artifact present
|
|
@@ -444,7 +588,7 @@ export const analyzeCommand = async (inputPath, options) => {
|
|
|
444
588
|
// eslint-disable-next-line no-console -- restoring after intentional progress-bar routing
|
|
445
589
|
console.error = origError;
|
|
446
590
|
bar.stop();
|
|
447
|
-
const msg = err.message
|
|
591
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
448
592
|
// Registry name-collision from --name (#829) — surface as an
|
|
449
593
|
// actionable error rather than a generic stack-trace.
|
|
450
594
|
if (err instanceof RegistryNameCollisionError) {
|
|
@@ -14,9 +14,14 @@
|
|
|
14
14
|
* Agent bash cmd → curl localhost:PORT/tool/query → eval-server → LocalBackend → format → text
|
|
15
15
|
*
|
|
16
16
|
* Usage:
|
|
17
|
-
* gitnexus eval-server
|
|
18
|
-
* gitnexus eval-server --port 4848
|
|
19
|
-
* gitnexus eval-server --
|
|
17
|
+
* gitnexus eval-server # default port 4848, binds 127.0.0.1
|
|
18
|
+
* gitnexus eval-server --port 4848 # explicit port
|
|
19
|
+
* gitnexus eval-server --host 0.0.0.0 # reachable from other VMs / containers
|
|
20
|
+
* gitnexus eval-server --idle-timeout 300 # auto-shutdown after 300s idle
|
|
21
|
+
*
|
|
22
|
+
* READY signal format: GITNEXUS_EVAL_SERVER_READY:<host>:<port>
|
|
23
|
+
* IPv4: GITNEXUS_EVAL_SERVER_READY:127.0.0.1:4848
|
|
24
|
+
* IPv6: GITNEXUS_EVAL_SERVER_READY:[::1]:4848
|
|
20
25
|
*
|
|
21
26
|
* API:
|
|
22
27
|
* POST /tool/:name — Call a tool. Body is JSON arguments. Returns formatted text.
|
|
@@ -25,8 +30,16 @@
|
|
|
25
30
|
*/
|
|
26
31
|
export interface EvalServerOptions {
|
|
27
32
|
port?: string;
|
|
33
|
+
host?: string;
|
|
28
34
|
idleTimeout?: string;
|
|
29
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Validate the --host value. Accepts IPv4, IPv6, or "localhost".
|
|
38
|
+
* Returns the host string unchanged, or null if invalid.
|
|
39
|
+
* "localhost" is passed through so the OS resolves it to the correct loopback
|
|
40
|
+
* address (127.0.0.1 or ::1) at bind time rather than forcing IPv4.
|
|
41
|
+
*/
|
|
42
|
+
export declare function validateHost(raw: string): string | null;
|
|
30
43
|
export declare function formatQueryResult(result: any): string;
|
|
31
44
|
export declare function formatContextResult(result: any): string;
|
|
32
45
|
export declare function formatImpactResult(result: any): string;
|