@0xsarwagya/ontoly-core 0.1.0-alpha.15 → 0.1.0-alpha.16

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 CHANGED
@@ -22,7 +22,7 @@ pnpm add @0xsarwagya/ontoly-core
22
22
 
23
23
  ## Status
24
24
 
25
- Public Preview package for Ontoly v0.1.0-alpha.15. The public API is versioned with the Software Graph and RFC process.
25
+ Public Preview package for Ontoly v0.1.0-alpha.16. The public API is versioned with the Software Graph and RFC process.
26
26
 
27
27
  ## Links
28
28
 
package/dist/index.js CHANGED
@@ -62,7 +62,7 @@ var FRAMEWORK_SUFFIXES = /* @__PURE__ */ new Set([
62
62
  ]);
63
63
  var CATEGORY_TYPES = {
64
64
  concept: [],
65
- symbol: ["Function", "Method", "Class", "Interface", "TypeAlias", "Enum", "Field", "Service", "Provider", "Controller", "Repository", "Resource", "Model", "Route"],
65
+ symbol: ["Module", "Function", "Method", "Class", "Interface", "TypeAlias", "Enum", "Field", "Service", "Provider", "Controller", "Repository", "Resource", "Model", "Route"],
66
66
  feature: ["Route", "Controller", "Service", "Provider", "Module", "Package", "Repository", "Model", "Resource", "Class", "Interface", "TypeAlias", "Function", "Method", "Operation", "Configuration", "EnvironmentVariable", "Guard", "Permission", "Middleware"],
67
67
  configuration: ["Configuration", "EnvironmentVariable", "BuildTarget", "Script", "Task"],
68
68
  environment: ["EnvironmentVariable"],
@@ -193,6 +193,77 @@ var REPOSITORY_LOCAL_KIND_BOOSTS = {
193
193
  EnvironmentVariable: 44,
194
194
  Provider: 42
195
195
  };
196
+ var EXECUTABLE_CODE_KINDS = /* @__PURE__ */ new Set(["Function", "Method", "Operation"]);
197
+ var EXECUTABLE_ACTION_TERMS = /* @__PURE__ */ new Set([
198
+ "add",
199
+ "apply",
200
+ "build",
201
+ "calculate",
202
+ "check",
203
+ "compute",
204
+ "convert",
205
+ "create",
206
+ "delete",
207
+ "fetch",
208
+ "find",
209
+ "generate",
210
+ "get",
211
+ "handle",
212
+ "load",
213
+ "map",
214
+ "parse",
215
+ "persist",
216
+ "read",
217
+ "resolve",
218
+ "save",
219
+ "set",
220
+ "trace",
221
+ "transform",
222
+ "update",
223
+ "validate",
224
+ "write"
225
+ ]);
226
+ var EXECUTABLE_QUERY_TERMS = /* @__PURE__ */ new Set(["code", "codes", "function", "functions", "method", "methods"]);
227
+ var LOCATION_QUERY_TERMS = /* @__PURE__ */ new Set([
228
+ "defined",
229
+ "definition",
230
+ "implemented",
231
+ "implementation",
232
+ "mapping",
233
+ "mappings",
234
+ "parameter",
235
+ "parameters",
236
+ "param",
237
+ "params",
238
+ "type",
239
+ "types",
240
+ "utility",
241
+ "utilities",
242
+ "util",
243
+ "utils"
244
+ ]);
245
+ var LOCATION_DOMAIN_NOISE_TERMS = /* @__PURE__ */ new Set([
246
+ "code",
247
+ "defined",
248
+ "definition",
249
+ "implemented",
250
+ "implementation",
251
+ "mapping",
252
+ "mappings",
253
+ "parameter",
254
+ "parameters",
255
+ "param",
256
+ "params",
257
+ "service",
258
+ "services",
259
+ "type",
260
+ "types",
261
+ "utility",
262
+ "utilities",
263
+ "util",
264
+ "utils"
265
+ ]);
266
+ var DEFINITION_KINDS = /* @__PURE__ */ new Set(["Module", "Class", "Interface", "TypeAlias", "Enum", "Model", "Field", "Resource"]);
196
267
  var FRAMEWORK_PACKAGE_PATTERN = /@nestjs\/|@medplum\/|next\/dist|react\/|typescript\/lib|@types\/|@babel\/|@typescript-eslint\/|tslib|rxjs|zone\.js/i;
197
268
  function createSemanticIndex(graph) {
198
269
  const nodeById = new Map(graph.nodes.map((node) => [node.id, node]));
@@ -559,6 +630,9 @@ function candidateIdsFor(index, intent) {
559
630
  for (const id of repositoryVocabularyCandidateIds(index, terms)) {
560
631
  ids.add(id);
561
632
  }
633
+ for (const id of priorityFuzzyCandidateIds(index, intent)) {
634
+ ids.add(id);
635
+ }
562
636
  const fuzzyIds = index.entries.filter((entry) => fuzzyEntryMatch(entry, intent)).map((entry) => entry.stableId).sort();
563
637
  if (ids.size > 0) {
564
638
  for (const id of fuzzyIds.slice(0, 250)) {
@@ -568,6 +642,19 @@ function candidateIdsFor(index, intent) {
568
642
  }
569
643
  return [...expandCandidateIds(index, intent, fuzzyIds)].sort();
570
644
  }
645
+ function priorityFuzzyCandidateIds(index, intent) {
646
+ const queryTerms = new Set(intent.tokens.map(singularize).flatMap((term) => relatedLocationTerms(term)));
647
+ const queryCompact = compactTokenString(intent.raw);
648
+ return index.entries.filter((entry) => {
649
+ const nameTerms = tokenize(entry.displayName).map(singularize).filter((term) => term.length > 1);
650
+ const meaningfulNameTerms = nameTerms.filter((term) => !["src", "ts"].includes(term));
651
+ if (meaningfulNameTerms.length > 0 && meaningfulNameTerms.every((term) => queryTerms.has(term))) {
652
+ return true;
653
+ }
654
+ const compactName = compactTokenString(entry.displayName);
655
+ return compactName.length >= 6 && queryCompact.includes(compactName);
656
+ }).map((entry) => entry.stableId).sort();
657
+ }
571
658
  function repositoryVocabularyCandidateIds(index, terms) {
572
659
  const termSet = new Set(terms);
573
660
  const ids = /* @__PURE__ */ new Set();
@@ -661,6 +748,8 @@ function scoreEntry(entry, intent, category) {
661
748
  addScore(reasons, "feature-agreement", featureAgreement * 120, `${Math.round(featureAgreement * 100)}% repository feature agreement`);
662
749
  const queryCoverage = originalQueryCoverage(entry, intent);
663
750
  addScore(reasons, "query-token-coverage", queryCoverage.ratio * 110, `${Math.round(queryCoverage.ratio * 100)}% original query token coverage`);
751
+ addScore(reasons, "executable-action-match", executableActionBoostFor(entry, intent, queryCoverage), "executable symbol matches action-oriented code query");
752
+ addScore(reasons, "file-location-match", fileLocationBoostFor(entry, intent, category, queryCoverage), "file path and definition intent match query");
664
753
  const architectureAgreement = architectureAgreementConfidence(entry, category);
665
754
  addScore(reasons, "architecture-agreement", architectureAgreement * 90, `${entry.kind} agreement for ${category}`);
666
755
  const categoryBoost = categoryBoostFor(entry, category);
@@ -874,6 +963,170 @@ function semanticFeaturePenalty(entry, intent) {
874
963
  }
875
964
  return penalty;
876
965
  }
966
+ function executableActionBoostFor(entry, intent, queryCoverage) {
967
+ if (!EXECUTABLE_CODE_KINDS.has(entry.kind)) {
968
+ return 0;
969
+ }
970
+ const queryTerms = uniqueStrings(intent.tokens.map(singularize));
971
+ const actionMatches = queryTerms.filter((term) => EXECUTABLE_ACTION_TERMS.has(term));
972
+ if (actionMatches.length === 0) {
973
+ return 0;
974
+ }
975
+ const asksForCode = queryTerms.some((term) => EXECUTABLE_QUERY_TERMS.has(term));
976
+ const domainTerms = queryTerms.filter(
977
+ (term) => term.length > 2 && !EXECUTABLE_ACTION_TERMS.has(term) && !EXECUTABLE_QUERY_TERMS.has(term)
978
+ );
979
+ if (!asksForCode && domainTerms.length === 0) {
980
+ return 0;
981
+ }
982
+ const executableTerms = new Set(tokenize([
983
+ entry.stableId,
984
+ entry.displayName,
985
+ entry.normalizedName,
986
+ entry.filePath ?? "",
987
+ entry.documentation ?? "",
988
+ entry.comments ?? ""
989
+ ].join(" ")).map(singularize));
990
+ const executableActionMatches = actionMatches.filter((term) => executableTerms.has(term));
991
+ if (executableActionMatches.length === 0) {
992
+ return 0;
993
+ }
994
+ const coveredDomainTerms = domainTerms.filter(
995
+ (term) => executableTerms.has(term) || queryCoverage.matched.includes(term)
996
+ );
997
+ const domainCoverage = domainTerms.length === 0 ? 1 : coveredDomainTerms.length / domainTerms.length;
998
+ if (domainCoverage < 0.45) {
999
+ return 0;
1000
+ }
1001
+ const codeIntentBoost = asksForCode ? 40 : 0;
1002
+ return Math.min(260, 105 + codeIntentBoost + executableActionMatches.length * 45 + coveredDomainTerms.length * 20);
1003
+ }
1004
+ function fileLocationBoostFor(entry, intent, category, queryCoverage) {
1005
+ if (!isRepositoryLocalEntry(entry) || !hasFileLocationIntent(intent)) {
1006
+ return 0;
1007
+ }
1008
+ const queryTerms = uniqueStrings(intent.tokens.map(singularize));
1009
+ const entryTerms = fileLocationTerms(entry);
1010
+ const domainTerms = queryTerms.filter(
1011
+ (term) => term.length > 2 && !LOCATION_DOMAIN_NOISE_TERMS.has(term)
1012
+ );
1013
+ const matchedDomainTerms = domainTerms.filter((term) => relatedLocationTerms(term).some((related) => entryTerms.has(related)));
1014
+ const domainCoverage = domainTerms.length === 0 ? 0 : matchedDomainTerms.length / domainTerms.length;
1015
+ const stemMatch = fileStemMatchesIntent(entry, intent);
1016
+ const locationTermMatches = queryTerms.filter((term) => LOCATION_QUERY_TERMS.has(term) && relatedLocationTerms(term).some((related) => entryTerms.has(related)));
1017
+ if (!stemMatch && matchedDomainTerms.length < 2 && locationTermMatches.length === 0) {
1018
+ return 0;
1019
+ }
1020
+ let score = matchedDomainTerms.length * 34 + domainCoverage * 90 + locationTermMatches.length * 24;
1021
+ if (stemMatch) {
1022
+ score += entry.kind === "Module" ? 300 : 220;
1023
+ }
1024
+ if (entry.kind === "Module") {
1025
+ score += 72;
1026
+ }
1027
+ if (hasDefinitionIntent(intent) && isDefinitionEntry(entry)) {
1028
+ score += 150;
1029
+ }
1030
+ if (hasUtilityIntent(intent) && hasAnyTerm(entryTerms, ["util", "utils", "utility"])) {
1031
+ score += 190;
1032
+ }
1033
+ if (hasMappingIntent(intent) && hasAnyTerm(entryTerms, ["map", "mapper", "mapping", "dto", "fhir"])) {
1034
+ score += hasAnyTerm(entryTerms, ["fhir", "map", "mapper"]) ? 170 : 80;
1035
+ }
1036
+ if (hasParameterIntent(intent) && hasAnyTerm(entryTerms, ["param", "params", "parameter", "parameters", "dto", "query"])) {
1037
+ score += 180;
1038
+ }
1039
+ if (category === "feature" && entry.kind === "Service" && hasAnyTerm(entryTerms, ["query"]) && queryTerms.includes("query")) {
1040
+ score += 55;
1041
+ }
1042
+ const missingPenalty = queryCoverage.missing.filter((term) => !LOCATION_DOMAIN_NOISE_TERMS.has(term)).length * 18;
1043
+ return Math.min(520, Math.max(0, score - missingPenalty));
1044
+ }
1045
+ function hasFileLocationIntent(intent) {
1046
+ return /\b(where|defined|definition|implemented|implementation|mapping|mappings|utilities|utility|utils?|params?|parameters?)\b/i.test(intent.raw) || intent.tokens.some((term) => LOCATION_QUERY_TERMS.has(singularize(term)));
1047
+ }
1048
+ function hasDefinitionIntent(intent) {
1049
+ const terms = new Set(intent.tokens.map(singularize));
1050
+ return /\b(defined|definition|types?|keys?)\b/i.test(intent.raw) || terms.has("defined") || terms.has("definition") || terms.has("type") || terms.has("key");
1051
+ }
1052
+ function hasUtilityIntent(intent) {
1053
+ const terms = new Set(intent.tokens.map(singularize));
1054
+ return /\b(utilities|utility|utils?)\b/i.test(intent.raw) || terms.has("utility") || terms.has("util");
1055
+ }
1056
+ function hasMappingIntent(intent) {
1057
+ const terms = new Set(intent.tokens.map(singularize));
1058
+ return /\b(mapping|mappings|mapper|mappers)\b/i.test(intent.raw) || terms.has("mapping") || terms.has("mapper");
1059
+ }
1060
+ function hasParameterIntent(intent) {
1061
+ const terms = new Set(intent.tokens.map(singularize));
1062
+ return /\b(params?|parameters?)\b/i.test(intent.raw) || terms.has("param") || terms.has("parameter");
1063
+ }
1064
+ function isDefinitionEntry(entry) {
1065
+ return DEFINITION_KINDS.has(entry.kind) || hasAnyTerm(fileLocationTerms(entry), ["type", "types", "const", "constants", "enum", "schema"]);
1066
+ }
1067
+ function fileLocationTerms(entry) {
1068
+ return new Set(tokenize([
1069
+ entry.stableId,
1070
+ entry.displayName,
1071
+ entry.normalizedName,
1072
+ entry.filePath ?? "",
1073
+ entry.folderPath ?? ""
1074
+ ].join(" ")).map(singularize));
1075
+ }
1076
+ function fileStemMatchesIntent(entry, intent) {
1077
+ const stem = fileStem(entry);
1078
+ if (!stem) {
1079
+ return false;
1080
+ }
1081
+ const stemTerms = tokenize(stem).map(singularize).filter((term) => term.length > 1 && !["src", "ts"].includes(term));
1082
+ if (stemTerms.length === 0) {
1083
+ return false;
1084
+ }
1085
+ const queryTerms = new Set(intent.tokens.map(singularize).flatMap((term) => relatedLocationTerms(term)));
1086
+ const matchedTerms = stemTerms.filter((term) => queryTerms.has(term));
1087
+ if (matchedTerms.length === stemTerms.length) {
1088
+ return true;
1089
+ }
1090
+ const stemCompact = compactTokenString(stem);
1091
+ const queryCompact = compactTokenString(intent.raw);
1092
+ return stemCompact.length >= 6 && queryCompact.includes(stemCompact);
1093
+ }
1094
+ function fileStem(entry) {
1095
+ const source = entry.filePath || entry.displayName;
1096
+ const last = source.split("/").pop() ?? source;
1097
+ return last.replace(/\.[^.]+$/, "");
1098
+ }
1099
+ function compactTokenString(value) {
1100
+ return tokenize(value).map(singularize).join("");
1101
+ }
1102
+ function relatedLocationTerms(term) {
1103
+ switch (singularize(term)) {
1104
+ case "mapping":
1105
+ case "mapper":
1106
+ return ["map", "mapper", "mapping"];
1107
+ case "utilities":
1108
+ case "utility":
1109
+ case "util":
1110
+ case "utils":
1111
+ return ["util", "utils", "utility"];
1112
+ case "params":
1113
+ case "param":
1114
+ case "parameter":
1115
+ case "parameters":
1116
+ return ["param", "params", "parameter", "parameters"];
1117
+ case "types":
1118
+ case "type":
1119
+ return ["type", "types"];
1120
+ case "keys":
1121
+ case "key":
1122
+ return ["key", "keys"];
1123
+ default:
1124
+ return [singularize(term)];
1125
+ }
1126
+ }
1127
+ function hasAnyTerm(terms, values) {
1128
+ return values.some((value) => terms.has(value));
1129
+ }
877
1130
  function repositoryLocalityConfidence(entry) {
878
1131
  if (!isRepositoryLocalEntry(entry)) {
879
1132
  return 0.08;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/semantic-index.ts","../src/index.ts"],"sourcesContent":["import {\n normalizePath,\n stableHash,\n stableStringify,\n type JsonObject,\n type NodeType,\n type RelationshipType,\n type SoftwareGraph,\n type SoftwareGraphEdge,\n type SoftwareGraphNode,\n} from \"./index\";\n\nexport const SEMANTIC_INDEX_VERSION = \"1.0.1\";\n\nexport type SearchCategory =\n | \"concept\"\n | \"symbol\"\n | \"feature\"\n | \"configuration\"\n | \"environment\"\n | \"route\"\n | \"entrypoint\"\n | \"repository\";\n\nexport interface SemanticIndexRelationshipSummary {\n readonly incoming: Record<string, number>;\n readonly outgoing: Record<string, number>;\n readonly degree: number;\n readonly neighborIds: readonly string[];\n readonly neighborNames: readonly string[];\n}\n\nexport interface SemanticIndexEntry {\n readonly stableId: string;\n readonly displayName: string;\n readonly normalizedName: string;\n readonly kind: NodeType;\n readonly module?: string | undefined;\n readonly package?: string | undefined;\n readonly namespace?: string | undefined;\n readonly framework?: string | undefined;\n readonly relationships: SemanticIndexRelationshipSummary;\n readonly aliases: readonly string[];\n readonly keywords: readonly string[];\n readonly filePath?: string | undefined;\n readonly folderPath?: string | undefined;\n readonly parentChain: readonly string[];\n readonly documentation?: string | undefined;\n readonly comments?: string | undefined;\n readonly importance: number;\n readonly usageFrequency: number;\n readonly architectureLayer: string;\n}\n\nexport interface RepositoryVocabularyTerm {\n readonly term: string;\n readonly frequency: number;\n readonly nodeIds: readonly string[];\n readonly kinds: readonly NodeType[];\n}\n\nexport interface SemanticIndexStatistics {\n readonly entries: number;\n readonly aliases: number;\n readonly keywords: number;\n readonly vocabulary: number;\n readonly graphHash: string;\n}\n\nexport interface SemanticIndex {\n readonly version: string;\n readonly graphVersion: string;\n readonly graphHash: string;\n readonly repository: {\n readonly name: string;\n readonly root: string;\n readonly packageName?: string | undefined;\n };\n readonly entries: readonly SemanticIndexEntry[];\n readonly entryIds: readonly string[];\n readonly invertedIndex: Record<string, readonly string[]>;\n readonly vocabulary: readonly RepositoryVocabularyTerm[];\n readonly metadata: {\n readonly generatedAt: string;\n readonly deterministicHash: string;\n readonly statistics: SemanticIndexStatistics;\n };\n}\n\nexport interface NormalizedIntent {\n readonly raw: string;\n readonly normalized: string;\n readonly tokens: readonly string[];\n readonly phrases: readonly string[];\n readonly expandedTerms: readonly string[];\n}\n\nexport interface ScoreReason {\n readonly factor: string;\n readonly score: number;\n readonly evidence: string;\n}\n\nexport interface SemanticCandidate {\n readonly nodeId: string;\n readonly stableId: string;\n readonly displayName: string;\n readonly kind: NodeType;\n readonly score: number;\n readonly confidence: number;\n readonly matchedTerms: readonly string[];\n readonly reasons: readonly ScoreReason[];\n readonly entry: SemanticIndexEntry;\n}\n\nexport interface SemanticSearchResult {\n readonly query: string;\n readonly category: SearchCategory;\n readonly intent: NormalizedIntent;\n readonly matchedConcepts: readonly string[];\n readonly candidates: readonly SemanticCandidate[];\n readonly confidence: number;\n readonly recommendedCapability: string;\n readonly evidence: readonly string[];\n readonly latencyMs: number;\n}\n\nexport interface SearchOptions {\n readonly category?: SearchCategory | undefined;\n readonly limit?: number | undefined;\n readonly kinds?: readonly NodeType[] | undefined;\n readonly packageScope?: string | undefined;\n}\n\nconst STOP_WORDS = new Set([\n \"a\",\n \"an\",\n \"and\",\n \"are\",\n \"as\",\n \"at\",\n \"be\",\n \"by\",\n \"for\",\n \"from\",\n \"how\",\n \"i\",\n \"in\",\n \"into\",\n \"is\",\n \"it\",\n \"of\",\n \"on\",\n \"or\",\n \"that\",\n \"the\",\n \"this\",\n \"to\",\n \"use\",\n \"uses\",\n \"what\",\n \"when\",\n \"where\",\n \"which\",\n \"who\",\n \"with\",\n]);\n\nconst FRAMEWORK_SUFFIXES = new Set([\n \"app\",\n \"application\",\n \"client\",\n \"config\",\n \"configuration\",\n \"controller\",\n \"dto\",\n \"entity\",\n \"factory\",\n \"guard\",\n \"handler\",\n \"hook\",\n \"interceptor\",\n \"middleware\",\n \"module\",\n \"pipe\",\n \"provider\",\n \"repository\",\n \"resolver\",\n \"route\",\n \"schema\",\n \"service\",\n \"store\",\n \"table\",\n \"type\",\n]);\n\nconst CATEGORY_TYPES: Record<SearchCategory, readonly NodeType[]> = {\n concept: [],\n symbol: [\"Function\", \"Method\", \"Class\", \"Interface\", \"TypeAlias\", \"Enum\", \"Field\", \"Service\", \"Provider\", \"Controller\", \"Repository\", \"Resource\", \"Model\", \"Route\"],\n feature: [\"Route\", \"Controller\", \"Service\", \"Provider\", \"Module\", \"Package\", \"Repository\", \"Model\", \"Resource\", \"Class\", \"Interface\", \"TypeAlias\", \"Function\", \"Method\", \"Operation\", \"Configuration\", \"EnvironmentVariable\", \"Guard\", \"Permission\", \"Middleware\"],\n configuration: [\"Configuration\", \"EnvironmentVariable\", \"BuildTarget\", \"Script\", \"Task\"],\n environment: [\"EnvironmentVariable\"],\n route: [\"Route\", \"Operation\", \"Controller\"],\n entrypoint: [\"Route\", \"Operation\", \"Controller\", \"Function\", \"Method\", \"Module\", \"Script\", \"Task\", \"Application\"],\n repository: [\"Workspace\", \"Application\", \"Package\", \"Module\", \"Framework\", \"Dependency\", \"Configuration\"],\n};\n\nconst RELATIONSHIP_CAPABILITIES: readonly {\n readonly capability: string;\n readonly terms: readonly string[];\n}[] = [\n { capability: \"RequestTrace\", terms: [\"route\", \"request\", \"endpoint\", \"api\", \"handler\", \"controller\", \"login\", \"logout\"] },\n { capability: \"ConfigurationUsage\", terms: [\"config\", \"configuration\", \"setting\", \"environment\", \"env\", \"secret\"] },\n { capability: \"EnvironmentUsage\", terms: [\"env\", \"environment\", \"secret\", \"variable\"] },\n { capability: \"AuthenticationFlow\", terms: [\"auth\", \"authentication\", \"login\", \"signin\", \"jwt\", \"session\", \"token\"] },\n { capability: \"AuthorizationFlow\", terms: [\"authorization\", \"permission\", \"guard\", \"role\", \"policy\", \"authorize\"] },\n { capability: \"ImpactAnalysis\", terms: [\"remove\", \"delete\", \"change\", \"break\", \"impact\", \"depends\", \"dependent\"] },\n { capability: \"DependencyAnalysis\", terms: [\"dependency\", \"depends\", \"imports\", \"uses\", \"injects\", \"providers\"] },\n { capability: \"FeatureTouchpoints\", terms: [\"feature\", \"owner\", \"touchpoint\", \"where\", \"find\", \"locate\"] },\n];\n\nconst SEMANTIC_EXPANSIONS: Record<string, readonly string[]> = {\n api: [\"route\", \"endpoint\", \"operation\", \"controller\"],\n auth: [\"authentication\", \"authorize\", \"authorization\", \"identity\", \"jwt\", \"login\", \"session\", \"signin\", \"token\"],\n authentication: [\"auth\", \"identity\", \"jwt\", \"login\", \"session\", \"signin\", \"token\"],\n authorize: [\"authorization\", \"permission\", \"guard\"],\n authorization: [\"authorize\", \"permission\", \"guard\", \"role\", \"policy\"],\n average: [\"averages\", \"aggregate\", \"aggregation\", \"mean\", \"statistics\"],\n averages: [\"average\", \"aggregate\", \"aggregation\", \"mean\", \"statistics\"],\n batch: [\"bulk\", \"group\", \"job\", \"pipeline\", \"data\"],\n bulk: [\"batch\", \"group\", \"job\", \"pipeline\", \"data\"],\n config: [\"configuration\", \"setting\", \"settings\"],\n configuration: [\"config\", \"setting\", \"settings\"],\n controller: [\"handler\", \"route\", \"endpoint\"],\n data: [\"resource\", \"payload\", \"record\", \"model\"],\n database: [\"db\", \"repository\", \"persistence\", \"prisma\", \"table\"],\n db: [\"database\", \"repository\", \"persistence\", \"table\"],\n duration: [\"time\", \"period\", \"interval\", \"sleep\", \"threshold\"],\n endpoint: [\"api\", \"route\", \"operation\"],\n env: [\"environment\", \"variable\", \"secret\", \"configuration\"],\n environment: [\"env\", \"variable\", \"secret\", \"configuration\"],\n fhir: [\"resource\", \"healthcare\"],\n handler: [\"controller\", \"route\", \"endpoint\"],\n identity: [\"auth\", \"authentication\", \"user\", \"session\"],\n jwt: [\"auth\", \"authentication\", \"token\", \"session\"],\n login: [\"auth\", \"authentication\", \"signin\", \"session\", \"jwt\"],\n notification: [\"notifications\", \"alert\", \"event\", \"message\"],\n notifications: [\"notification\", \"alert\", \"event\", \"message\"],\n observation: [\"observations\", \"signal\", \"metric\", \"measurement\", \"statistic\", \"fhir\"],\n observations: [\"observation\", \"signal\", \"metric\", \"measurement\", \"statistic\", \"fhir\"],\n patient: [\"resident\", \"user\", \"subject\"],\n permission: [\"authorization\", \"authorize\", \"guard\", \"role\"],\n plan: [\"definition\", \"resource\", \"fhir\"],\n plandefinition: [\"plan\", \"definition\", \"resource\", \"fhir\"],\n provider: [\"service\", \"injectable\", \"dependency\"],\n repo: [\"repository\", \"persistence\", \"database\"],\n repository: [\"repo\", \"persistence\", \"database\"],\n resident: [\"patient\", \"user\", \"subject\"],\n route: [\"api\", \"endpoint\", \"operation\", \"handler\"],\n service: [\"provider\", \"injectable\", \"dependency\"],\n session: [\"auth\", \"authentication\", \"login\", \"signin\", \"jwt\"],\n signin: [\"auth\", \"authentication\", \"login\", \"session\"],\n sleep: [\"duration\", \"threshold\", \"thresholds\", \"statistic\", \"statistics\", \"observation\"],\n signal: [\"signals\", \"metric\", \"measurement\", \"event\"],\n signals: [\"signal\", \"metric\", \"measurement\", \"event\"],\n statistic: [\"statistics\", \"average\", \"aggregate\"],\n statistics: [\"statistic\", \"average\", \"aggregate\"],\n threshold: [\"thresholds\", \"limit\", \"configuration\", \"setting\"],\n thresholds: [\"threshold\", \"limit\", \"configuration\", \"setting\"],\n token: [\"jwt\", \"auth\", \"authentication\", \"session\"],\n};\n\nconst SEMANTIC_METADATA_DEPTH_LIMIT = 3;\nconst SEMANTIC_METADATA_ARRAY_LIMIT = 12;\nconst SEMANTIC_METADATA_ENTRY_LIMIT = 24;\nconst SEMANTIC_METADATA_VALUES_LIMIT = 48;\nconst SEMANTIC_TEXT_LIMIT = 240;\nconst SEMANTIC_ALIAS_SOURCE_LIMIT = 16;\nconst SEMANTIC_ALIAS_LIMIT = 20;\nconst SEMANTIC_KEYWORD_LIMIT = 24;\nconst SEMANTIC_INVERTED_IDS_LIMIT = 160;\nconst SEMANTIC_VOCABULARY_IDS_LIMIT = 50;\n\nconst SEMANTIC_NOISE_TERMS = new Set([\n \"0\",\n \"0s\",\n \"1\",\n \"1s\",\n \"2\",\n \"2s\",\n \"3\",\n \"3s\",\n \"4\",\n \"4s\",\n \"abstract\",\n \"abstracts\",\n \"active\",\n \"actives\",\n \"anies\",\n \"any\",\n \"async\",\n \"asyncs\",\n \"boolean\",\n \"booleans\",\n \"false\",\n \"falses\",\n \"number\",\n \"numbers\",\n \"parameter\",\n \"parameters\",\n \"static\",\n \"statics\",\n \"string\",\n \"strings\",\n \"true\",\n \"trues\",\n \"typeparameter\",\n \"typeparameters\",\n]);\n\nconst REPOSITORY_LOCAL_KIND_BOOSTS: Partial<Record<NodeType, number>> = {\n Service: 112,\n Controller: 92,\n Repository: 72,\n Route: 68,\n Operation: 64,\n Method: 62,\n Module: 58,\n Configuration: 58,\n Model: 56,\n Interface: 54,\n TypeAlias: 54,\n Class: 50,\n Function: 48,\n EnvironmentVariable: 44,\n Provider: 42,\n};\n\nconst FRAMEWORK_PACKAGE_PATTERN = /@nestjs\\/|@medplum\\/|next\\/dist|react\\/|typescript\\/lib|@types\\/|@babel\\/|@typescript-eslint\\/|tslib|rxjs|zone\\.js/i;\n\nexport function createSemanticIndex(graph: SoftwareGraph): SemanticIndex {\n const nodeById = new Map(graph.nodes.map((node) => [node.id, node] as const));\n const incoming = groupEdges(graph.edges, \"to\");\n const outgoing = groupEdges(graph.edges, \"from\");\n const entries = graph.nodes.map((node) => createEntry(graph, node, nodeById, incoming, outgoing)).sort(compareEntries);\n const invertedIndex = buildInvertedIndex(entries);\n const vocabulary = buildVocabulary(entries);\n const statistics: SemanticIndexStatistics = {\n entries: entries.length,\n aliases: sum(entries.map((entry) => entry.aliases.length)),\n keywords: sum(entries.map((entry) => entry.keywords.length)),\n vocabulary: vocabulary.length,\n graphHash: graph.metadata.deterministicHash,\n };\n const indexWithoutMetadata = {\n version: SEMANTIC_INDEX_VERSION,\n graphVersion: graph.version,\n graphHash: graph.metadata.deterministicHash,\n repository: {\n name: graph.repository.name,\n root: graph.repository.root,\n packageName: graph.repository.packageName,\n },\n entries,\n entryIds: entries.map((entry) => entry.stableId),\n invertedIndex,\n vocabulary,\n metadata: {\n generatedAt: \"1970-01-01T00:00:00.000Z\",\n deterministicHash: \"\",\n statistics,\n },\n } satisfies SemanticIndex;\n const deterministicHash = hashSemanticIndex(indexWithoutMetadata);\n\n return {\n ...indexWithoutMetadata,\n metadata: {\n ...indexWithoutMetadata.metadata,\n deterministicHash,\n },\n };\n}\n\nfunction hashSemanticIndex(index: Omit<SemanticIndex, \"metadata\"> & { readonly metadata: SemanticIndex[\"metadata\"] }): string {\n const entryHashes = index.entries.map((entry) => stableHash(stableStringify(entry))).sort();\n const invertedHashes = Object.entries(index.invertedIndex)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([term, ids]) => stableHash(stableStringify({ term, ids })));\n const vocabularyHashes = index.vocabulary\n .map((term) => stableHash(stableStringify(term)))\n .sort();\n\n return stableHash(stableStringify({\n version: index.version,\n graphVersion: index.graphVersion,\n graphHash: index.graphHash,\n repository: index.repository,\n entryIds: index.entryIds,\n entries: {\n count: entryHashes.length,\n hashes: entryHashes,\n },\n invertedIndex: {\n count: invertedHashes.length,\n hashes: invertedHashes,\n },\n vocabulary: {\n count: vocabularyHashes.length,\n hashes: vocabularyHashes,\n },\n metadata: {\n generatedAt: index.metadata.generatedAt,\n statistics: index.metadata.statistics,\n },\n }));\n}\n\nexport function validateSemanticIndex(index: SemanticIndex, graph?: SoftwareGraph): readonly string[] {\n const issues: string[] = [];\n if (index.version !== SEMANTIC_INDEX_VERSION) {\n issues.push(`Unsupported semantic index version ${index.version}.`);\n }\n if (graph && index.graphHash !== graph.metadata.deterministicHash) {\n issues.push(\"Semantic index graph hash does not match Software Graph hash.\");\n }\n const seen = new Set<string>();\n for (const entry of index.entries) {\n if (seen.has(entry.stableId)) {\n issues.push(`Duplicate semantic index entry ${entry.stableId}.`);\n }\n seen.add(entry.stableId);\n }\n for (const [term, ids] of Object.entries(index.invertedIndex)) {\n for (const id of ids) {\n if (!seen.has(id)) {\n issues.push(`Inverted index term \"${term}\" references missing entry ${id}.`);\n }\n }\n }\n return issues.sort();\n}\n\nexport function normalizeIntent(input: string): NormalizedIntent {\n const raw = input.trim();\n const tokens = tokenize(raw);\n const phrases = phraseVariants(raw, tokens);\n const expandedTerms = uniqueStrings([\n ...tokens,\n ...phrases,\n ...tokens.flatMap(expansionsFor),\n ...tokens.map(singularize),\n ...tokens.map(pluralize),\n ]);\n\n return {\n raw,\n normalized: normalizePhrase(raw),\n tokens,\n phrases,\n expandedTerms,\n };\n}\n\nexport function resolveIntent(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n const startedAt = performanceNow();\n const category = options.category ?? \"concept\";\n const intent = normalizeIntent(query);\n const candidates = rankCandidates(index, intent, {\n ...options,\n category,\n });\n const confidence = candidates[0]?.confidence ?? 0;\n const matchedConcepts = uniqueStrings(candidates.flatMap((candidate) => candidate.matchedTerms)).slice(0, 20);\n\n return {\n query,\n category,\n intent,\n matchedConcepts,\n candidates,\n confidence,\n recommendedCapability: recommendCapability(intent, candidates, category),\n evidence: candidates.slice(0, 5).map((candidate) =>\n `${candidate.displayName} (${candidate.kind}) matched ${candidate.matchedTerms.join(\", \") || \"graph context\"} with score ${candidate.score.toFixed(2)}.`,\n ),\n latencyMs: round(performanceNow() - startedAt, 3),\n };\n}\n\nexport function findConcept(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, { ...options, category: \"concept\" });\n}\n\nexport function findSymbol(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, { ...options, category: \"symbol\", kinds: options.kinds ?? CATEGORY_TYPES.symbol });\n}\n\nexport function findFeature(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, { ...options, category: \"feature\", kinds: options.kinds ?? CATEGORY_TYPES.feature });\n}\n\nexport function findConfiguration(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, {\n ...options,\n category: \"configuration\",\n kinds: options.kinds ?? CATEGORY_TYPES.configuration,\n });\n}\n\nexport function findEnvironment(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, { ...options, category: \"environment\", kinds: options.kinds ?? CATEGORY_TYPES.environment });\n}\n\nexport function findRoute(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, { ...options, category: \"route\", kinds: options.kinds ?? CATEGORY_TYPES.route });\n}\n\nexport function findEntryPoint(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, { ...options, category: \"entrypoint\", kinds: options.kinds ?? CATEGORY_TYPES.entrypoint });\n}\n\nexport function findRepositoryConcept(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, { ...options, category: \"repository\", kinds: options.kinds ?? CATEGORY_TYPES.repository });\n}\n\nfunction createEntry(\n graph: SoftwareGraph,\n node: SoftwareGraphNode,\n nodeById: ReadonlyMap<string, SoftwareGraphNode>,\n incoming: ReadonlyMap<string, readonly SoftwareGraphEdge[]>,\n outgoing: ReadonlyMap<string, readonly SoftwareGraphEdge[]>,\n): SemanticIndexEntry {\n const incomingEdges = incoming.get(node.id) ?? [];\n const outgoingEdges = outgoing.get(node.id) ?? [];\n const neighbors = uniqueStrings([\n ...incomingEdges.map((edge) => edge.from),\n ...outgoingEdges.map((edge) => edge.to),\n ]);\n const neighborNodes = neighbors.map((id) => nodeById.get(id)).filter(isNode);\n const parentChain = parentChainFor(node, nodeById, incomingEdges);\n const aliasSource = aliasSourceValues(graph, node, neighborNodes, parentChain);\n const aliases = generateAliases(aliasSource, node);\n const keywords = generateKeywords(aliasSource, node);\n const degree = incomingEdges.length + outgoingEdges.length;\n\n return withOptionalProperties({\n stableId: node.id,\n displayName: node.name,\n normalizedName: normalizePhrase(node.name),\n kind: node.type,\n relationships: {\n incoming: countEdgesByType(incomingEdges),\n outgoing: countEdgesByType(outgoingEdges),\n degree,\n neighborIds: neighbors,\n neighborNames: uniqueStrings(neighborNodes.map((neighbor) => neighbor.name)),\n },\n aliases,\n keywords,\n parentChain,\n importance: nodeImportance(node, degree, incomingEdges.length),\n usageFrequency: incomingEdges.length,\n architectureLayer: architectureLayer(node),\n }, {\n module: containingName(parentChain, \"Module\"),\n package: node.package ?? stringMetadata(node.metadata, \"package\") ?? stringMetadata(node.metadata, \"packageName\"),\n namespace: stringMetadata(node.metadata, \"namespace\"),\n framework: stringMetadata(node.metadata, \"framework\") ?? frameworkFromNeighbors(neighborNodes),\n filePath: node.file ? normalizePath(node.file) : undefined,\n folderPath: node.file ? folderPath(node.file) : undefined,\n documentation: deterministicDocumentation(node.metadata),\n comments: deterministicComments(node.metadata),\n });\n}\n\nfunction aliasSourceValues(\n graph: SoftwareGraph,\n node: SoftwareGraphNode,\n neighbors: readonly SoftwareGraphNode[],\n parentChain: readonly string[],\n): readonly string[] {\n const metadataValues = metadataTextValues(node.metadata);\n const routeValues = routeTextValues(node);\n const envValues = node.type === \"EnvironmentVariable\" ? [node.name, node.id.replace(/^env:/, \"\")] : [];\n\n return uniqueStrings([\n node.id,\n node.name,\n node.file ?? \"\",\n node.package ?? \"\",\n ...parentChain,\n ...routeValues,\n ...envValues,\n ...neighbors.slice(0, 16).map((neighbor) => neighbor.name),\n ...neighbors.slice(0, 16).map((neighbor) => neighbor.id),\n ...metadataValues,\n ].filter(Boolean)).slice(0, SEMANTIC_ALIAS_SOURCE_LIMIT);\n}\n\nfunction generateAliases(values: readonly string[], node: SoftwareGraphNode): readonly string[] {\n const aliases = new Set<string>();\n const primaryTokens = new Set(tokenize(node.name));\n for (const value of values) {\n const tokens = tokenize(value);\n const normalized = normalizePhrase(value);\n if (normalized) {\n aliases.add(normalized);\n }\n if (tokens.length > 0) {\n aliases.add(tokens.join(\" \"));\n aliases.add(tokens.join(\"\"));\n aliases.add(tokens.join(\"-\"));\n aliases.add(tokens.join(\"_\"));\n const withoutSuffix = stripFrameworkSuffix(tokens);\n if (withoutSuffix.length > 0 && withoutSuffix.length !== tokens.length) {\n aliases.add(withoutSuffix.join(\" \"));\n aliases.add(withoutSuffix.join(\"\"));\n }\n for (const token of tokens) {\n if (isSemanticNoiseTerm(token)) {\n continue;\n }\n aliases.add(token);\n aliases.add(singularize(token));\n aliases.add(pluralize(token));\n if (primaryTokens.has(token)) {\n for (const expansion of expansionsFor(token)) {\n aliases.add(expansion);\n }\n }\n }\n }\n }\n\n for (const typeAlias of aliasesForNodeType(node.type)) {\n aliases.add(typeAlias);\n }\n if (isDtoLikeNode(node)) {\n aliases.add(\"dto\");\n aliases.add(\"data transfer object\");\n aliases.add(\"contract\");\n aliases.add(\"payload\");\n }\n if (isTestNode(node)) {\n aliases.add(\"test\");\n aliases.add(\"spec\");\n aliases.add(\"coverage\");\n }\n if (isFeatureModuleNode(node)) {\n aliases.add(\"feature\");\n aliases.add(\"feature module\");\n }\n\n return uniqueStrings([...aliases]\n .filter((alias) => alias.length > 1)\n .filter((alias) => !isNoisySemanticAlias(alias)))\n .slice(0, SEMANTIC_ALIAS_LIMIT);\n}\n\nfunction generateKeywords(values: readonly string[], node: SoftwareGraphNode): readonly string[] {\n const keywords = new Set<string>();\n for (const value of values) {\n for (const token of tokenize(value)) {\n if (isSemanticNoiseTerm(token)) {\n continue;\n }\n keywords.add(token);\n keywords.add(singularize(token));\n }\n }\n keywords.add(node.type.toLowerCase());\n for (const alias of aliasesForNodeType(node.type)) {\n keywords.add(alias);\n }\n if (isDtoLikeNode(node)) {\n keywords.add(\"dto\");\n keywords.add(\"contract\");\n keywords.add(\"payload\");\n }\n if (isTestNode(node)) {\n keywords.add(\"test\");\n keywords.add(\"spec\");\n }\n if (isFeatureModuleNode(node)) {\n keywords.add(\"feature\");\n }\n return uniqueStrings([...keywords]\n .filter((keyword) => keyword.length > 1)\n .filter((keyword) => !isSemanticNoiseTerm(keyword)))\n .slice(0, SEMANTIC_KEYWORD_LIMIT);\n}\n\nfunction buildInvertedIndex(entries: readonly SemanticIndexEntry[]): Record<string, readonly string[]> {\n const inverted = new Map<string, Set<string>>();\n for (const entry of entries) {\n for (const term of uniqueStrings([entry.normalizedName, ...entry.aliases, ...entry.keywords])) {\n addInverted(inverted, term, entry.stableId);\n for (const token of tokenize(term)) {\n addInverted(inverted, token, entry.stableId);\n }\n }\n }\n\n return Object.fromEntries(\n [...inverted.entries()]\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([term, ids]) => [term, [...ids].sort()] as const),\n );\n}\n\nfunction buildVocabulary(entries: readonly SemanticIndexEntry[]): readonly RepositoryVocabularyTerm[] {\n const terms = new Map<string, { count: number; nodeIds: Set<string>; kinds: Set<NodeType> }>();\n for (const entry of entries) {\n for (const term of uniqueStrings([...entry.keywords, ...entry.aliases.filter((alias) => !alias.includes(\" \"))])) {\n if (term.length < 2 || STOP_WORDS.has(term)) {\n continue;\n }\n if (isSemanticNoiseTerm(term)) {\n continue;\n }\n const current = terms.get(term) ?? { count: 0, nodeIds: new Set<string>(), kinds: new Set<NodeType>() };\n current.count += 1;\n if (current.nodeIds.size < SEMANTIC_VOCABULARY_IDS_LIMIT) {\n current.nodeIds.add(entry.stableId);\n }\n current.kinds.add(entry.kind);\n terms.set(term, current);\n }\n }\n\n return [...terms.entries()]\n .map(([term, value]) => ({\n term,\n frequency: value.count,\n nodeIds: [...value.nodeIds].sort(),\n kinds: [...value.kinds].sort(),\n }))\n .sort((left, right) => right.frequency - left.frequency || left.term.localeCompare(right.term));\n}\n\nfunction rankCandidates(\n index: SemanticIndex,\n intent: NormalizedIntent,\n options: SearchOptions & { readonly category: SearchCategory },\n): readonly SemanticCandidate[] {\n const candidateIds = candidateIdsFor(index, intent);\n const entryById = new Map(index.entries.map((entry) => [entry.stableId, entry] as const));\n const kinds = options.kinds?.length ? new Set(options.kinds) : categoryTypeSet(options.category);\n const candidates = candidateIds\n .map((id) => entryById.get(id))\n .filter(isEntry)\n .filter((entry) => includeEntryForCategory(entry, intent, options.category))\n .filter((entry) => !kinds || kinds.has(entry.kind))\n .filter((entry) => !options.packageScope || entry.package === options.packageScope || entry.filePath?.startsWith(options.packageScope))\n .map((entry) => scoreEntry(entry, intent, options.category))\n .filter((candidate) => candidate.score > 0)\n .sort(compareCandidates);\n\n return calibrateCandidateConfidences(candidates, intent, options.category).slice(0, options.limit ?? 20);\n}\n\nfunction candidateIdsFor(index: SemanticIndex, intent: NormalizedIntent): readonly string[] {\n const ids = new Set<string>();\n const terms = uniqueStrings([intent.normalized, ...intent.phrases, ...intent.tokens, ...intent.expandedTerms]);\n for (const term of terms) {\n for (const id of index.invertedIndex[term] ?? []) {\n ids.add(id);\n }\n }\n for (const id of repositoryVocabularyCandidateIds(index, terms)) {\n ids.add(id);\n }\n\n const fuzzyIds = index.entries\n .filter((entry) => fuzzyEntryMatch(entry, intent))\n .map((entry) => entry.stableId)\n .sort();\n\n if (ids.size > 0) {\n for (const id of fuzzyIds.slice(0, 250)) {\n ids.add(id);\n }\n return [...expandCandidateIds(index, intent, [...ids])].sort();\n }\n return [...expandCandidateIds(index, intent, fuzzyIds)].sort();\n}\n\nfunction repositoryVocabularyCandidateIds(index: SemanticIndex, terms: readonly string[]): readonly string[] {\n const termSet = new Set(terms);\n const ids = new Set<string>();\n for (const vocabularyTerm of index.vocabulary) {\n if (termSet.has(vocabularyTerm.term)) {\n for (const id of vocabularyTerm.nodeIds) {\n ids.add(id);\n }\n }\n }\n for (const vocabularyTerm of index.vocabulary) {\n if (ids.size >= 300) {\n break;\n }\n if (!termSet.has(vocabularyTerm.term) && vocabularyTerm.term.length > 3 && terms.some((term) => term.length > 3 && (term.includes(vocabularyTerm.term) || vocabularyTerm.term.includes(term)))) {\n for (const id of vocabularyTerm.nodeIds.slice(0, 20)) {\n ids.add(id);\n }\n }\n }\n return [...ids].sort();\n}\n\nfunction expandCandidateIds(index: SemanticIndex, intent: NormalizedIntent, seedIds: readonly string[]): readonly string[] {\n const ids = new Set(seedIds);\n const entryById = new Map(index.entries.map((entry) => [entry.stableId, entry] as const));\n for (const id of seedIds.slice(0, 300)) {\n const entry = entryById.get(id);\n if (!entry || semanticFeatureAgreement(entry, intent) < 0.35) {\n continue;\n }\n for (const neighborId of entry.relationships.neighborIds) {\n const neighbor = entryById.get(neighborId);\n if (!neighbor) {\n continue;\n }\n if (semanticFeatureAgreement(neighbor, intent) >= 0.25 || architectureAgreementConfidence(neighbor, \"feature\") >= 0.75) {\n ids.add(neighborId);\n }\n }\n }\n return [...ids];\n}\n\nfunction scoreEntry(entry: SemanticIndexEntry, intent: NormalizedIntent, category: SearchCategory): SemanticCandidate {\n const reasons: ScoreReason[] = [];\n const matchedTerms = new Set<string>();\n const entryTerms = new Set([entry.normalizedName, ...entry.aliases, ...entry.keywords]);\n const normalizedId = normalizePhrase(entry.stableId);\n\n addScore(reasons, \"exact-symbol\", intent.raw === entry.stableId ? 1000 : 0, entry.stableId);\n if (intent.raw === entry.stableId) {\n matchedTerms.add(entry.stableId);\n }\n\n if (entry.normalizedName === intent.normalized || normalizedId === intent.normalized) {\n addScore(reasons, \"exact-normalized-name\", 500, entry.displayName);\n matchedTerms.add(intent.normalized);\n }\n\n if (entry.aliases.includes(intent.normalized)) {\n addScore(reasons, \"exact-alias\", 420, intent.normalized);\n matchedTerms.add(intent.normalized);\n }\n\n const nameTokens = tokenize(entry.displayName);\n if (nameTokens.length > 0 && nameTokens.every((token) => intent.expandedTerms.includes(token))) {\n addScore(reasons, \"complete-name-token-match\", 260, nameTokens.join(\", \"));\n for (const token of nameTokens) {\n matchedTerms.add(token);\n }\n }\n\n for (const phrase of intent.phrases) {\n if (entry.aliases.includes(phrase) || entry.normalizedName === phrase) {\n addScore(reasons, \"phrase-match\", 180, phrase);\n matchedTerms.add(phrase);\n } else if (phrase.length > 2 && [...entryTerms].some((term) => term.includes(phrase) || phrase.includes(term))) {\n addScore(reasons, \"partial-phrase-match\", 80, phrase);\n matchedTerms.add(phrase);\n }\n }\n\n const tokenMatches = intent.tokens.filter((token) => entryTerms.has(token) || entryTerms.has(singularize(token)));\n for (const token of tokenMatches) {\n matchedTerms.add(token);\n }\n addScore(reasons, \"token-overlap\", tokenMatches.length * 55, tokenMatches.join(\", \"));\n\n const expandedMatches = intent.expandedTerms\n .filter((term) => !intent.tokens.includes(term))\n .filter((term) => entryTerms.has(term));\n for (const term of expandedMatches) {\n matchedTerms.add(term);\n }\n addScore(reasons, \"intent-expansion\", expandedMatches.length * 32, expandedMatches.join(\", \"));\n\n const relationshipMatches = intent.expandedTerms\n .filter((term) => entry.relationships.neighborNames.some((name) => tokenize(name).includes(term)));\n addScore(reasons, \"relationship-context\", Math.min(120, relationshipMatches.length * 18), relationshipMatches.join(\", \"));\n\n const semanticSimilarity = semanticSimilarityConfidence(entry, intent);\n addScore(reasons, \"semantic-similarity\", semanticSimilarity * 140, `${Math.round(semanticSimilarity * 100)}% lexical/semantic coverage`);\n\n const featureAgreement = semanticFeatureAgreement(entry, intent);\n addScore(reasons, \"feature-agreement\", featureAgreement * 120, `${Math.round(featureAgreement * 100)}% repository feature agreement`);\n\n const queryCoverage = originalQueryCoverage(entry, intent);\n addScore(reasons, \"query-token-coverage\", queryCoverage.ratio * 110, `${Math.round(queryCoverage.ratio * 100)}% original query token coverage`);\n\n const architectureAgreement = architectureAgreementConfidence(entry, category);\n addScore(reasons, \"architecture-agreement\", architectureAgreement * 90, `${entry.kind} agreement for ${category}`);\n\n const categoryBoost = categoryBoostFor(entry, category);\n addScore(reasons, \"architecture-layer\", categoryBoost, `${entry.kind} in ${entry.architectureLayer}`);\n\n addScore(reasons, \"feature-owner\", featureOwnerBoostFor(entry, category), `${entry.displayName} owns repository feature behavior`);\n addScore(reasons, \"graph-importance\", Math.min(90, entry.importance * 18), `degree ${entry.relationships.degree}`);\n addScore(reasons, \"usage-frequency\", Math.min(60, entry.usageFrequency * 8), `${entry.usageFrequency} incoming edges`);\n addScore(reasons, \"repository-locality\", repositoryLocalityBoost(entry), repositoryLocalityEvidence(entry));\n\n const penalty = repositoryRankingPenalty(entry) + queryCoverage.missing.length * 120 + semanticFeaturePenalty(entry, intent);\n const score = Math.max(0, reasons.reduce((total, reason) => total + reason.score, 0) - penalty);\n const returnedReasons = penalty > 0\n ? [...reasons, { factor: \"repository-noise-demotion\", score: -penalty, evidence: repositoryNoiseEvidence(entry, queryCoverage.missing) }]\n : reasons;\n return {\n nodeId: entry.stableId,\n stableId: entry.stableId,\n displayName: entry.displayName,\n kind: entry.kind,\n score: round(score, 3),\n confidence: round(confidenceFromCandidateSignals(entry, intent, category, score), 3),\n matchedTerms: uniqueStrings([...matchedTerms]),\n reasons: returnedReasons.filter((reason) => reason.score !== 0).sort(compareReasons),\n entry,\n };\n}\n\nfunction calibrateCandidateConfidences(\n candidates: readonly SemanticCandidate[],\n intent: NormalizedIntent,\n category: SearchCategory,\n): readonly SemanticCandidate[] {\n if (candidates.length === 0) {\n return candidates;\n }\n const topScore = candidates[0]?.score ?? 0;\n const secondScore = candidates[1]?.score ?? 0;\n const closeAlternatives = candidates.filter((candidate, index) =>\n index > 0 && isPlausibleAlternative(candidate, topScore, secondScore)\n );\n\n return candidates.map((candidate, index) => {\n const baseConfidence = confidenceFromCandidateSignals(candidate.entry, intent, category, candidate.score);\n const ratio = topScore > 0 ? Math.min(1, candidate.score / topScore) : 0;\n const confidence = round(calibratedConfidenceCap(candidate, baseConfidence * (index === 0 ? 1 : ratio), {\n index,\n topScore,\n secondScore,\n closeAlternatives,\n intent,\n category,\n }), 3);\n const reasons: ScoreReason[] = [\n ...candidate.reasons,\n {\n factor: \"confidence-calibration\",\n score: round(confidence * 100),\n evidence: confidenceCalibrationEvidence(candidate.entry, confidence, closeAlternatives.length),\n },\n ];\n if (index === 0 && closeAlternatives.length > 0) {\n reasons.push({\n factor: \"ambiguity-calibration\",\n score: -Math.min(30, closeAlternatives.length * 8),\n evidence: `${closeAlternatives.length} plausible alternative seed(s) were retained.`,\n });\n }\n return {\n ...candidate,\n confidence,\n reasons: reasons.filter((reason) => reason.score !== 0).sort(compareReasons),\n };\n });\n}\n\nfunction calibratedConfidenceCap(\n candidate: SemanticCandidate,\n confidence: number,\n context: {\n readonly index: number;\n readonly topScore: number;\n readonly secondScore: number;\n readonly closeAlternatives: readonly SemanticCandidate[];\n readonly intent: NormalizedIntent;\n readonly category: SearchCategory;\n },\n): number {\n let capped = Math.max(0, Math.min(1, confidence));\n const isExact = candidate.reasons.some((reason) => reason.factor === \"exact-symbol\" || reason.factor === \"exact-normalized-name\");\n const scoreGap = context.topScore - context.secondScore;\n\n if (isExternalOrFrameworkEntry(candidate.entry)) {\n capped = Math.min(capped, hasRepositoryLocalAlternative(context.closeAlternatives) ? 0.52 : 0.58);\n }\n if (isGenericUtilityEntry(candidate.entry) && !isExact) {\n capped = Math.min(capped, 0.72);\n }\n if (context.closeAlternatives.length > 0 && !isExact) {\n capped = Math.min(capped, Math.max(0.72, 0.9 - context.closeAlternatives.length * 0.06));\n }\n if (context.index === 0 && scoreGap > 0 && scoreGap < 45 && !isExact) {\n capped = Math.min(capped, 0.78);\n } else if (context.index === 0 && scoreGap > 0 && scoreGap < 90 && !isExact) {\n capped = Math.min(capped, 0.86);\n }\n if (context.intent.tokens.length >= 2 && originalTokenCoverage(candidate.entry, context.intent) < 0.5 && !isExact) {\n capped = Math.min(capped, 0.62);\n }\n if (context.index > 0) {\n capped = Math.min(capped, 0.84);\n }\n if (context.category === \"feature\" && architectureAgreementConfidence(candidate.entry, context.category) < 0.4 && !isExact) {\n capped = Math.min(capped, 0.6);\n }\n return capped;\n}\n\nfunction isPlausibleAlternative(candidate: SemanticCandidate, topScore: number, secondScore: number): boolean {\n return candidate.score >= Math.max(secondScore, topScore - 90) || candidate.score >= topScore * 0.84;\n}\n\nfunction hasRepositoryLocalAlternative(candidates: readonly SemanticCandidate[]): boolean {\n return candidates.some((candidate) => isRepositoryLocalEntry(candidate.entry));\n}\n\nfunction confidenceCalibrationEvidence(entry: SemanticIndexEntry, confidence: number, alternativeCount: number): string {\n const locality = isRepositoryLocalEntry(entry) ? \"repository-local\" : \"external/framework\";\n const ambiguity = alternativeCount > 0 ? ` with ${alternativeCount} plausible alternative(s)` : \"\";\n return `${locality} ${entry.kind} calibrated to ${confidence.toFixed(3)}${ambiguity}`;\n}\n\nfunction confidenceFromCandidateSignals(\n entry: SemanticIndexEntry,\n intent: NormalizedIntent,\n category: SearchCategory,\n score: number,\n): number {\n const semantic = semanticSimilarityConfidence(entry, intent);\n const locality = repositoryLocalityConfidence(entry);\n const architecture = architectureAgreementConfidence(entry, category);\n const feature = semanticFeatureAgreement(entry, intent);\n const connectivity = graphConnectivityConfidence(entry);\n const scoreConfidence = Math.min(1, score / 760);\n const confidence =\n semantic * 0.32 +\n locality * 0.22 +\n architecture * 0.16 +\n feature * 0.16 +\n connectivity * 0.08 +\n scoreConfidence * 0.06;\n const exact = entry.normalizedName === intent.normalized || normalizePhrase(entry.stableId) === intent.normalized || entry.aliases.includes(intent.normalized);\n return exact ? Math.max(confidence, isRepositoryLocalEntry(entry) ? 0.78 : 0.55) : confidence;\n}\n\nfunction semanticSimilarityConfidence(entry: SemanticIndexEntry, intent: NormalizedIntent): number {\n const entryTerms = new Set([entry.normalizedName, ...entry.aliases, ...entry.keywords]);\n if (!intent.normalized) {\n return 0;\n }\n if (entry.normalizedName === intent.normalized || entry.aliases.includes(intent.normalized) || normalizePhrase(entry.stableId) === intent.normalized) {\n return 1;\n }\n const originalCoverage = originalTokenCoverage(entry, intent);\n const expandedTerms = intent.expandedTerms.filter((term) => !intent.tokens.includes(term));\n const expandedCoverage = expandedTerms.length === 0\n ? 0\n : expandedTerms.filter((term) => entryTerms.has(term)).length / expandedTerms.length;\n const phraseCoverage = intent.phrases.some((phrase) => entryTerms.has(phrase))\n ? 0.9\n : intent.phrases.some((phrase) => [...entryTerms].some((term) => term.includes(phrase) || phrase.includes(term)))\n ? 0.55\n : 0;\n return Math.min(1, Math.max(phraseCoverage, originalCoverage * 0.78 + expandedCoverage * 0.22));\n}\n\nfunction originalTokenCoverage(entry: SemanticIndexEntry, intent: NormalizedIntent): number {\n if (intent.tokens.length === 0) {\n return 0;\n }\n const entryTerms = new Set([entry.normalizedName, ...entry.aliases, ...entry.keywords]);\n const searchableText = [\n entry.stableId,\n entry.displayName,\n entry.filePath ?? \"\",\n entry.folderPath ?? \"\",\n entry.parentChain.join(\" \"),\n entry.relationships.neighborNames.join(\" \"),\n entry.documentation ?? \"\",\n entry.comments ?? \"\",\n ].join(\" \").toLowerCase();\n const matches = intent.tokens.filter((token) =>\n entryTerms.has(token) ||\n entryTerms.has(singularize(token)) ||\n searchableText.includes(token)\n );\n return matches.length / intent.tokens.length;\n}\n\nfunction originalQueryCoverage(\n entry: SemanticIndexEntry,\n intent: NormalizedIntent,\n): { readonly matched: readonly string[]; readonly missing: readonly string[]; readonly ratio: number } {\n const required = uniqueStrings(intent.tokens.map((token) => singularize(token)).filter((token) => token.length > 2));\n if (required.length === 0) {\n return { matched: [], missing: [], ratio: 1 };\n }\n const entryTerms = new Set([entry.normalizedName, ...entry.aliases, ...entry.keywords].flatMap((term) => tokenize(term).map(singularize)));\n const searchableTerms = new Set(tokenize([\n entry.stableId,\n entry.displayName,\n entry.filePath ?? \"\",\n entry.folderPath ?? \"\",\n entry.parentChain.join(\" \"),\n entry.relationships.neighborNames.join(\" \"),\n entry.documentation ?? \"\",\n entry.comments ?? \"\",\n ].join(\" \")).map(singularize));\n const matched = required.filter((term) => entryTerms.has(term) || searchableTerms.has(term));\n const missing = required.filter((term) => !matched.includes(term));\n return { matched, missing, ratio: matched.length / required.length };\n}\n\nfunction semanticFeatureAgreement(entry: SemanticIndexEntry, intent: NormalizedIntent): number {\n if (intent.tokens.length === 0) {\n return 0;\n }\n const featureText = tokenize([\n entry.stableId,\n entry.displayName,\n entry.filePath ?? \"\",\n entry.folderPath ?? \"\",\n entry.parentChain.join(\" \"),\n entry.relationships.neighborNames.join(\" \"),\n entry.documentation ?? \"\",\n entry.comments ?? \"\",\n ].join(\" \"));\n const featureTerms = new Set(featureText);\n const original = intent.tokens.filter((token) => featureTerms.has(token) || featureTerms.has(singularize(token))).length / intent.tokens.length;\n const expanded = intent.expandedTerms.length === 0\n ? 0\n : intent.expandedTerms.filter((term) => featureTerms.has(term)).length / intent.expandedTerms.length;\n return Math.min(1, original * 0.82 + expanded * 0.18);\n}\n\nfunction semanticFeaturePenalty(entry: SemanticIndexEntry, intent: NormalizedIntent): number {\n const required = new Set(intent.tokens.map(singularize));\n const terms = new Set(tokenize([\n entry.stableId,\n entry.displayName,\n entry.filePath ?? \"\",\n entry.folderPath ?? \"\",\n entry.parentChain.join(\" \"),\n entry.relationships.neighborNames.join(\" \"),\n entry.documentation ?? \"\",\n entry.comments ?? \"\",\n ].join(\" \")).map(singularize));\n let penalty = 0;\n if (required.has(\"threshold\") && !terms.has(\"threshold\")) {\n penalty += 130;\n }\n if (required.has(\"threshold\") && (terms.has(\"statistic\") || terms.has(\"observation\")) && !terms.has(\"threshold\")) {\n penalty += 220;\n }\n if (required.has(\"duration\") && required.has(\"sleep\") && !terms.has(\"duration\")) {\n penalty += 80;\n }\n return penalty;\n}\n\nfunction repositoryLocalityConfidence(entry: SemanticIndexEntry): number {\n if (!isRepositoryLocalEntry(entry)) {\n return 0.08;\n }\n if (isGenericUtilityEntry(entry)) {\n return 0.72;\n }\n if (!entry.filePath && (entry.kind === \"Dependency\" || entry.kind === \"Framework\")) {\n return 0.2;\n }\n return 1;\n}\n\nfunction architectureAgreementConfidence(entry: SemanticIndexEntry, category: SearchCategory): number {\n if (isExternalOrFrameworkEntry(entry)) {\n return 0.12;\n }\n if (isPreferredRepositorySeedEntry(entry)) {\n return 1;\n }\n if (categoryTypeSet(category)?.has(entry.kind)) {\n return 0.82;\n }\n if (entry.architectureLayer === \"architecture\" && category === \"feature\") {\n return 0.4;\n }\n return entry.architectureLayer === \"language\" ? 0.55 : 0.65;\n}\n\nfunction graphConnectivityConfidence(entry: SemanticIndexEntry): number {\n return Math.min(1, 0.25 + Math.log2(entry.relationships.degree + 1) / 4);\n}\n\nfunction repositoryLocalityBoost(entry: SemanticIndexEntry): number {\n let score = 0;\n if (isRepositoryLocalEntry(entry)) {\n score += 56;\n score += REPOSITORY_LOCAL_KIND_BOOSTS[entry.kind] ?? 0;\n }\n if (isDtoLikeEntry(entry)) {\n score += 46;\n }\n if (isMapperEntry(entry)) {\n score += 34;\n }\n if (isFeatureModuleEntry(entry)) {\n score += 22;\n }\n if (isTestEntry(entry)) {\n score += 28;\n }\n return score;\n}\n\nfunction repositoryRankingPenalty(entry: SemanticIndexEntry): number {\n let penalty = 0;\n const text = `${entry.stableId} ${entry.filePath ?? \"\"} ${entry.package ?? \"\"} ${entry.displayName}`.toLowerCase();\n if (text.includes(\"node_modules\") || entry.stableId.startsWith(\"dep:\")) {\n penalty += 260;\n }\n if (/(\\bdto\\b|dto$|schema$|type$|types$|generated|__generated__)/i.test(entry.displayName) && !isRepositoryLocalEntry(entry)) {\n penalty += 90;\n }\n if (/node_modules|@nestjs\\/|@medplum\\/|next\\/dist|react\\/|typescript\\/lib|@types\\//i.test(text)) {\n penalty += 180;\n }\n if (isExternalOrFrameworkEntry(entry)) {\n penalty += 120;\n }\n if (/^framework:|framework|adapter|platform|runtime/.test(entry.stableId.toLowerCase()) && !isRepositoryLocalEntry(entry)) {\n penalty += 90;\n }\n if (isGenericUtilityEntry(entry)) {\n penalty += 55;\n }\n return penalty;\n}\n\nfunction repositoryLocalityEvidence(entry: SemanticIndexEntry): string {\n return isRepositoryLocalEntry(entry)\n ? `${entry.kind} from repository-local graph evidence`\n : `${entry.kind} from external or generated boundary`;\n}\n\nfunction repositoryNoiseEvidence(entry: SemanticIndexEntry, missingTerms: readonly string[] = []): string {\n const missing = missingTerms.length > 0 ? `; missing query term(s): ${missingTerms.join(\", \")}` : \"\";\n return `${entry.displayName} is external, generated, generic framework-adjacent, or lower-coverage evidence${missing}`;\n}\n\nfunction isRepositoryLocalEntry(entry: SemanticIndexEntry): boolean {\n const text = `${entry.stableId} ${entry.filePath ?? \"\"} ${entry.package ?? \"\"}`.toLowerCase();\n return !text.includes(\"node_modules\") &&\n !entry.stableId.startsWith(\"dep:\") &&\n !entry.stableId.startsWith(\"framework:\") &&\n !isKnownExternalPackageEntry(entry);\n}\n\nfunction isRepositorySymbolEntry(entry: SemanticIndexEntry): boolean {\n return [\"Function\", \"Method\", \"Class\", \"Interface\", \"TypeAlias\", \"Enum\", \"Field\", \"Model\", \"Resource\"].includes(entry.kind);\n}\n\nfunction isDtoLikeEntry(entry: SemanticIndexEntry): boolean {\n const text = `${entry.displayName} ${entry.filePath ?? \"\"} ${entry.keywords.join(\" \")}`;\n return [\"Model\", \"Interface\", \"TypeAlias\", \"Class\"].includes(entry.kind) && /\\bdto\\b|dto$|data transfer|payload|request|response/i.test(text);\n}\n\nfunction featureOwnerBoostFor(entry: SemanticIndexEntry, category: SearchCategory): number {\n if ((category !== \"feature\" && category !== \"concept\") || !isRepositoryLocalEntry(entry)) {\n return 0;\n }\n if (entry.kind === \"Service\" || entry.kind === \"Provider\") {\n return 170;\n }\n if (entry.kind === \"Class\" && /service$/i.test(entry.displayName)) {\n return 170;\n }\n if (entry.kind === \"Controller\") {\n return 90;\n }\n return 0;\n}\n\nfunction isFeatureModuleEntry(entry: SemanticIndexEntry): boolean {\n return entry.kind === \"Module\" && isRepositoryLocalEntry(entry) && !isGenericUtilityEntry(entry);\n}\n\nfunction isPreferredRepositorySeedEntry(entry: SemanticIndexEntry): boolean {\n return isRepositoryLocalEntry(entry) && (\n [\"Service\", \"Controller\", \"Repository\", \"Method\", \"Route\", \"Operation\", \"Configuration\", \"EnvironmentVariable\", \"Guard\", \"Permission\", \"Middleware\"].includes(entry.kind) ||\n isDtoLikeEntry(entry) ||\n isFeatureModuleEntry(entry) ||\n isTestEntry(entry) ||\n isMapperEntry(entry)\n );\n}\n\nfunction isMapperEntry(entry: SemanticIndexEntry): boolean {\n return isRepositoryLocalEntry(entry) && /\\bmapper\\b|mapper$/i.test(`${entry.displayName} ${entry.filePath ?? \"\"}`);\n}\n\nfunction isTestEntry(entry: SemanticIndexEntry): boolean {\n return /(^|[/.])(test|tests|spec|__tests__)([/.]|$)|\\.(test|spec)\\./i.test(`${entry.filePath ?? \"\"} ${entry.displayName}`);\n}\n\nfunction isExternalOrFrameworkEntry(entry: SemanticIndexEntry): boolean {\n return !isRepositoryLocalEntry(entry) ||\n entry.kind === \"Dependency\" ||\n entry.kind === \"Framework\" ||\n isKnownExternalPackageEntry(entry);\n}\n\nfunction isKnownExternalPackageEntry(entry: SemanticIndexEntry): boolean {\n const text = `${entry.stableId} ${entry.displayName} ${entry.package ?? \"\"} ${entry.filePath ?? \"\"}`.toLowerCase();\n return FRAMEWORK_PACKAGE_PATTERN.test(text) ||\n /(^|[/:])(@nestjs|@medplum|@types|@angular|next|react|typescript|express|fastify)([/:-]|$)/.test(text) ||\n /(^|[/:])(node|npm):/.test(text);\n}\n\nfunction isGenericUtilityEntry(entry: SemanticIndexEntry): boolean {\n const text = `${entry.stableId} ${entry.displayName} ${entry.filePath ?? \"\"}`.toLowerCase();\n return /(^|[/.:-])(common|shared|utils?|helpers?|internal|misc|core|index)([/.:-]|$)/.test(text) ||\n /\\b(base|abstract|generic|utility|utils?|helpers?)\\b/.test(entry.displayName);\n}\n\nfunction fuzzyEntryMatch(entry: SemanticIndexEntry, intent: NormalizedIntent): boolean {\n const haystack = `${entry.stableId} ${entry.displayName} ${entry.aliases.join(\" \")} ${entry.keywords.join(\" \")}`.toLowerCase();\n return intent.tokens.some((token) => haystack.includes(token));\n}\n\nfunction recommendCapability(\n intent: NormalizedIntent,\n candidates: readonly SemanticCandidate[],\n category: SearchCategory,\n): string {\n if (category === \"configuration\") {\n return \"ConfigurationUsage\";\n }\n if (category === \"environment\") {\n return \"EnvironmentUsage\";\n }\n if (category === \"route\") {\n return \"RequestTrace\";\n }\n const terms = new Set(intent.expandedTerms);\n const matched = RELATIONSHIP_CAPABILITIES\n .map((item) => ({\n capability: item.capability,\n score: item.terms.filter((term) => terms.has(term)).length,\n }))\n .sort((left, right) => right.score - left.score || left.capability.localeCompare(right.capability))[0];\n if (matched && matched.score > 0) {\n return matched.capability;\n }\n const topKind = candidates[0]?.kind;\n if (topKind === \"Route\" || topKind === \"Controller\") {\n return \"RequestTrace\";\n }\n if (topKind === \"Configuration\" || topKind === \"EnvironmentVariable\") {\n return \"ConfigurationUsage\";\n }\n return category === \"repository\" ? \"ArchitectureSummary\" : \"FeatureTouchpoints\";\n}\n\nfunction tokenize(value: string): readonly string[] {\n return uniqueStrings(splitIdentifier(value)\n .map((part) => normalizeToken(part))\n .filter((part) => part.length > 0)\n .filter((part) => !STOP_WORDS.has(part))\n .flatMap((part) => uniqueStrings([part, singularize(part)])));\n}\n\nfunction splitIdentifier(value: string): readonly string[] {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/([A-Z]+)([A-Z][a-z])/g, \"$1 $2\")\n .replace(/[@#]/g, \" \")\n .replace(/[:./\\\\|()[\\]{}<>,;'\"`~!$%^&*+=?]+/g, \" \")\n .replace(/[-_]+/g, \" \")\n .split(/\\s+/g)\n .filter(Boolean);\n}\n\nfunction normalizeToken(token: string): string {\n return token\n .normalize(\"NFKD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]/g, \"\");\n}\n\nfunction normalizePhrase(value: string): string {\n return tokenize(value).join(\" \");\n}\n\nfunction phraseVariants(raw: string, tokens: readonly string[]): readonly string[] {\n const variants = new Set<string>();\n const normalized = normalizePhrase(raw);\n if (normalized) {\n variants.add(normalized);\n }\n if (tokens.length > 0) {\n variants.add(tokens.join(\" \"));\n variants.add(tokens.join(\"\"));\n variants.add(tokens.join(\"-\"));\n variants.add(tokens.join(\"_\"));\n }\n const withoutSuffix = stripFrameworkSuffix(tokens);\n if (withoutSuffix.length > 0) {\n variants.add(withoutSuffix.join(\" \"));\n variants.add(withoutSuffix.join(\"\"));\n }\n return uniqueStrings([...variants]);\n}\n\nfunction stripFrameworkSuffix(tokens: readonly string[]): readonly string[] {\n let stripped = [...tokens];\n while (stripped.length > 1 && FRAMEWORK_SUFFIXES.has(stripped[stripped.length - 1] ?? \"\")) {\n stripped = stripped.slice(0, -1);\n }\n return stripped;\n}\n\nfunction singularize(value: string): string {\n if (value.endsWith(\"ies\") && value.length > 4) {\n return `${value.slice(0, -3)}y`;\n }\n if (value.endsWith(\"sses\")) {\n return value.slice(0, -2);\n }\n if (value.endsWith(\"s\") && !value.endsWith(\"ss\") && value.length > 3) {\n return value.slice(0, -1);\n }\n return value;\n}\n\nfunction pluralize(value: string): string {\n if (value.endsWith(\"y\") && value.length > 2) {\n return `${value.slice(0, -1)}ies`;\n }\n if (value.endsWith(\"s\")) {\n return value;\n }\n return `${value}s`;\n}\n\nfunction aliasesForNodeType(type: NodeType): readonly string[] {\n switch (type) {\n case \"Route\":\n case \"Operation\":\n return [\"api\", \"endpoint\", \"route\", \"request\"];\n case \"Controller\":\n return [\"controller\", \"handler\", \"route\"];\n case \"Service\":\n case \"Provider\":\n return [\"service\", \"provider\", \"injectable\"];\n case \"Repository\":\n return [\"repository\", \"repo\", \"persistence\", \"database\"];\n case \"Model\":\n return [\"model\", \"dto\", \"schema\", \"contract\", \"payload\"];\n case \"Resource\":\n return [\"resource\", \"model\"];\n case \"Configuration\":\n return [\"config\", \"configuration\", \"setting\"];\n case \"EnvironmentVariable\":\n return [\"env\", \"environment\", \"secret\", \"variable\"];\n case \"Framework\":\n return [\"framework\", \"library\"];\n case \"Package\":\n return [\"package\", \"workspace\"];\n default:\n return [type.toLowerCase()];\n }\n}\n\nfunction isDtoLikeNode(node: SoftwareGraphNode): boolean {\n const text = `${node.name} ${node.file ?? \"\"}`;\n return [\"Model\", \"Interface\", \"TypeAlias\", \"Class\"].includes(node.type) && /\\bdto\\b|dto$|data transfer|payload|request|response/i.test(text);\n}\n\nfunction isTestNode(node: SoftwareGraphNode): boolean {\n return /(^|[/.])(test|tests|spec|__tests__)([/.]|$)|\\.(test|spec)\\./i.test(`${node.file ?? \"\"} ${node.name}`);\n}\n\nfunction isFeatureModuleNode(node: SoftwareGraphNode): boolean {\n return node.type === \"Module\" && !/(^|[/.:-])(common|shared|utils?|helpers?|internal|misc|core|index)([/.:-]|$)/i.test(`${node.id} ${node.name} ${node.file ?? \"\"}`);\n}\n\nfunction expansionsFor(token: string): readonly string[] {\n return Object.prototype.hasOwnProperty.call(SEMANTIC_EXPANSIONS, token)\n ? SEMANTIC_EXPANSIONS[token] ?? []\n : [];\n}\n\nfunction categoryTypeSet(category: SearchCategory): ReadonlySet<NodeType> | undefined {\n const types = CATEGORY_TYPES[category];\n return types.length > 0 ? new Set(types) : undefined;\n}\n\nfunction includeEntryForCategory(\n entry: SemanticIndexEntry,\n intent: NormalizedIntent,\n category: SearchCategory,\n): boolean {\n if (category !== \"concept\") {\n return true;\n }\n if (![\"Import\", \"Export\", \"Decorator\"].includes(entry.kind)) {\n return true;\n }\n const kind = entry.kind.toLowerCase();\n return intent.tokens.includes(kind) || intent.raw === entry.stableId || intent.normalized === entry.normalizedName;\n}\n\nfunction categoryBoostFor(entry: SemanticIndexEntry, category: SearchCategory): number {\n if (category === \"concept\") {\n return [\"Service\", \"Provider\", \"Controller\", \"Route\", \"Operation\", \"Repository\", \"Model\", \"Resource\", \"Function\", \"Method\", \"Class\", \"Interface\", \"TypeAlias\", \"Module\", \"Configuration\", \"EnvironmentVariable\"].includes(entry.kind)\n ? 45\n : 0;\n }\n const types = CATEGORY_TYPES[category];\n if (types.length === 0) {\n return 0;\n }\n const base = types.includes(entry.kind) ? 75 : 0;\n if (category === \"feature\" && isFeatureModuleEntry(entry)) {\n return base + 10;\n }\n if (category === \"feature\" && isDtoLikeEntry(entry)) {\n return base + 20;\n }\n return base;\n}\n\nfunction nodeImportance(node: SoftwareGraphNode, degree: number, inbound: number): number {\n const layerWeight = {\n Workspace: 5,\n Application: 5,\n Package: 4,\n Module: 4,\n Controller: 4,\n Route: 4,\n Service: 4,\n Provider: 3,\n Repository: 3,\n Configuration: 3,\n EnvironmentVariable: 3,\n } as Partial<Record<NodeType, number>>;\n return round((layerWeight[node.type] ?? 1) + Math.log2(degree + 1) + Math.log2(inbound + 1), 3);\n}\n\nfunction architectureLayer(node: SoftwareGraphNode): string {\n if ([\"Route\", \"Controller\", \"Operation\", \"Middleware\", \"Guard\"].includes(node.type)) {\n return \"application-boundary\";\n }\n if ([\"Service\", \"Provider\", \"Factory\"].includes(node.type)) {\n return \"application-service\";\n }\n if ([\"Repository\", \"DatabaseTable\", \"Model\", \"Resource\"].includes(node.type)) {\n return \"persistence\";\n }\n if ([\"Configuration\", \"EnvironmentVariable\", \"BuildTarget\", \"Script\", \"Task\"].includes(node.type)) {\n return \"configuration\";\n }\n if ([\"Package\", \"Workspace\", \"Application\", \"Framework\", \"Dependency\"].includes(node.type)) {\n return \"architecture\";\n }\n return \"language\";\n}\n\nfunction parentChainFor(\n node: SoftwareGraphNode,\n nodeById: ReadonlyMap<string, SoftwareGraphNode>,\n incomingEdges: readonly SoftwareGraphEdge[],\n): readonly string[] {\n const parents: string[] = [];\n let current = node;\n const seen = new Set<string>([node.id]);\n for (let depth = 0; depth < 8; depth += 1) {\n const parentEdge = incomingEdges.find((edge) =>\n edge.to === current.id && (edge.type === \"CONTAINS\" || edge.type === \"BELONGS_TO\" || edge.type === \"DECLARES\" || edge.type === \"REGISTERS\")\n );\n if (!parentEdge || seen.has(parentEdge.from)) {\n break;\n }\n const parent = nodeById.get(parentEdge.from);\n if (!parent) {\n break;\n }\n parents.push(`${parent.type}:${parent.name}`);\n seen.add(parent.id);\n current = parent;\n }\n return parents;\n}\n\nfunction containingName(parentChain: readonly string[], type: NodeType): string | undefined {\n const prefix = `${type}:`;\n return parentChain.find((item) => item.startsWith(prefix))?.slice(prefix.length);\n}\n\nfunction metadataTextValues(metadata: JsonObject | undefined): readonly string[] {\n if (!metadata) {\n return [];\n }\n const values: string[] = [];\n collectMetadataText(metadata, values, 0, new WeakSet<object>());\n return values;\n}\n\nfunction collectMetadataText(value: unknown, values: string[], depth: number, seen: WeakSet<object>): void {\n if (\n depth > SEMANTIC_METADATA_DEPTH_LIMIT ||\n values.length >= SEMANTIC_METADATA_VALUES_LIMIT ||\n value === null ||\n value === undefined\n ) {\n return;\n }\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n values.push(truncateSemanticText(String(value)));\n return;\n }\n if (Array.isArray(value)) {\n if (seen.has(value)) {\n return;\n }\n seen.add(value);\n for (const item of value.slice(0, SEMANTIC_METADATA_ARRAY_LIMIT)) {\n collectMetadataText(item, values, depth + 1, seen);\n if (values.length >= SEMANTIC_METADATA_VALUES_LIMIT) {\n break;\n }\n }\n return;\n }\n if (typeof value === \"object\") {\n if (seen.has(value)) {\n return;\n }\n seen.add(value);\n for (const [key, entry] of Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .slice(0, SEMANTIC_METADATA_ENTRY_LIMIT)) {\n if (isNoisyMetadataKey(key)) {\n continue;\n }\n values.push(truncateSemanticText(key));\n collectMetadataText(entry, values, depth + 1, seen);\n if (values.length >= SEMANTIC_METADATA_VALUES_LIMIT) {\n break;\n }\n }\n }\n}\n\nfunction isNoisyMetadataKey(key: string): boolean {\n return [\n \"abstract\",\n \"async\",\n \"declarationKind\",\n \"language\",\n \"parameters\",\n \"parser\",\n \"parserVersion\",\n \"passId\",\n \"provenance\",\n \"source\",\n \"static\",\n \"typeParameters\",\n ].includes(key);\n}\n\nfunction routeTextValues(node: SoftwareGraphNode): readonly string[] {\n if (node.type !== \"Route\" && node.type !== \"Operation\") {\n return [];\n }\n return [\n stringMetadata(node.metadata, \"method\") ?? \"\",\n stringMetadata(node.metadata, \"path\") ?? \"\",\n stringMetadata(node.metadata, \"route\") ?? \"\",\n node.name,\n ].filter(Boolean);\n}\n\nfunction deterministicDocumentation(metadata: JsonObject | undefined): string | undefined {\n return firstTruncatedMetadata(metadata, [\"documentation\", \"description\", \"summary\"]);\n}\n\nfunction deterministicComments(metadata: JsonObject | undefined): string | undefined {\n return firstTruncatedMetadata(metadata, [\"comments\", \"comment\", \"jsdoc\"]);\n}\n\nfunction stringMetadata(metadata: JsonObject | undefined, key: string): string | undefined {\n const value = metadata?.[key];\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nfunction firstTruncatedMetadata(metadata: JsonObject | undefined, keys: readonly string[]): string | undefined {\n for (const key of keys) {\n const value = stringMetadata(metadata, key);\n if (value) {\n return truncateSemanticText(value);\n }\n }\n return undefined;\n}\n\nfunction truncateSemanticText(value: string): string {\n const normalized = value.replace(/\\s+/g, \" \").trim();\n return normalized.length > SEMANTIC_TEXT_LIMIT\n ? `${normalized.slice(0, SEMANTIC_TEXT_LIMIT)}...[truncated]`\n : normalized;\n}\n\nfunction frameworkFromNeighbors(neighbors: readonly SoftwareGraphNode[]): string | undefined {\n return neighbors.find((node) => node.type === \"Framework\")?.name;\n}\n\nfunction folderPath(file: string): string {\n const normalized = normalizePath(file);\n const parts = normalized.split(\"/\");\n parts.pop();\n return parts.join(\"/\") || \".\";\n}\n\nfunction countEdgesByType(edges: readonly SoftwareGraphEdge[]): Record<string, number> {\n const counts = new Map<string, number>();\n for (const edge of edges) {\n counts.set(edge.type, (counts.get(edge.type) ?? 0) + 1);\n }\n return Object.fromEntries([...counts.entries()].sort(([left], [right]) => left.localeCompare(right)));\n}\n\nfunction groupEdges(edges: readonly SoftwareGraphEdge[], side: \"from\" | \"to\"): ReadonlyMap<string, readonly SoftwareGraphEdge[]> {\n const grouped = new Map<string, SoftwareGraphEdge[]>();\n for (const edge of edges) {\n const current = grouped.get(edge[side]) ?? [];\n current.push(edge);\n grouped.set(edge[side], current);\n }\n return new Map([...grouped.entries()].map(([key, values]) => [key, values.sort(compareEdges)] as const));\n}\n\nfunction addInverted(map: Map<string, Set<string>>, term: string, id: string): void {\n if (!term || STOP_WORDS.has(term) || isSemanticNoiseTerm(term) || isNoisySemanticAlias(term)) {\n return;\n }\n const current = map.get(term) ?? new Set<string>();\n if (current.size >= SEMANTIC_INVERTED_IDS_LIMIT) {\n return;\n }\n current.add(id);\n map.set(term, current);\n}\n\nfunction addScore(reasons: ScoreReason[], factor: string, score: number, evidence: string): void {\n if (score <= 0) {\n return;\n }\n reasons.push({ factor, score: round(score, 3), evidence });\n}\n\nfunction compareCandidates(left: SemanticCandidate, right: SemanticCandidate): number {\n return right.score - left.score || left.kind.localeCompare(right.kind) || left.stableId.localeCompare(right.stableId);\n}\n\nfunction compareReasons(left: ScoreReason, right: ScoreReason): number {\n return right.score - left.score || left.factor.localeCompare(right.factor);\n}\n\nfunction compareEntries(left: SemanticIndexEntry, right: SemanticIndexEntry): number {\n return left.stableId.localeCompare(right.stableId);\n}\n\nfunction compareEdges(left: SoftwareGraphEdge, right: SoftwareGraphEdge): number {\n return left.id.localeCompare(right.id);\n}\n\nfunction uniqueStrings(values: readonly string[]): readonly string[] {\n return [...new Set(values.map((value) => value.trim()).filter(Boolean))].sort((left, right) => left.localeCompare(right));\n}\n\nfunction isSemanticNoiseTerm(term: string): boolean {\n return SEMANTIC_NOISE_TERMS.has(term) || /^\\d+[a-z]*$/i.test(term);\n}\n\nfunction isNoisySemanticAlias(alias: string): boolean {\n const tokens = tokenize(alias);\n if (tokens.length === 0) {\n return true;\n }\n if (tokens.length > 14) {\n return true;\n }\n return tokens.every(isSemanticNoiseTerm);\n}\n\nfunction sum(values: readonly number[]): number {\n return values.reduce((total, value) => total + value, 0);\n}\n\nfunction round(value: number, places = 3): number {\n const factor = 10 ** places;\n return Math.round(value * factor) / factor;\n}\n\nfunction performanceNow(): number {\n return typeof performance !== \"undefined\" ? performance.now() : Date.now();\n}\n\nfunction isNode(value: SoftwareGraphNode | undefined): value is SoftwareGraphNode {\n return Boolean(value);\n}\n\nfunction isEntry(value: SemanticIndexEntry | undefined): value is SemanticIndexEntry {\n return Boolean(value);\n}\n\nfunction withOptionalProperties<T extends object, O extends object>(target: T, optional: O): T & O {\n return {\n ...target,\n ...Object.fromEntries(Object.entries(optional).filter(([, value]) => value !== undefined)),\n } as T & O;\n}\n","export const SOFTWARE_GRAPH_VERSION = \"1.0.0\";\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonValue = JsonPrimitive | JsonObject | JsonValue[];\nexport type JsonObject = {\n readonly [key: string]: JsonValue | undefined;\n};\n\nexport const NODE_TYPES = [\n \"Workspace\",\n \"Application\",\n \"Function\",\n \"Method\",\n \"Class\",\n \"Interface\",\n \"TypeAlias\",\n \"Enum\",\n \"Namespace\",\n \"Module\",\n \"Package\",\n \"Script\",\n \"Dependency\",\n \"Task\",\n \"Pipeline\",\n \"BuildTarget\",\n \"Configuration\",\n \"Container\",\n \"Workflow\",\n \"Job\",\n \"Step\",\n \"Framework\",\n \"Decorator\",\n \"Import\",\n \"Export\",\n \"Route\",\n \"Resource\",\n \"Operation\",\n \"Model\",\n \"Field\",\n \"Middleware\",\n \"Provider\",\n \"Factory\",\n \"Service\",\n \"Repository\",\n \"DatabaseTable\",\n \"EnvironmentVariable\",\n \"Event\",\n \"Permission\",\n \"Exception\",\n \"Controller\",\n \"Guard\",\n] as const;\n\nexport type NodeType = (typeof NODE_TYPES)[number];\n\nexport const RELATIONSHIP_TYPES = [\n \"CALLS\",\n \"IMPORTS\",\n \"EXPORTS\",\n \"USES\",\n \"RETURNS\",\n \"THROWS\",\n \"READS\",\n \"WRITES\",\n \"CREATES\",\n \"IMPLEMENTS\",\n \"EXTENDS\",\n \"DEPENDS_ON\",\n \"DECORATES\",\n \"INJECTS\",\n \"REGISTERED_IN\",\n \"REGISTERS\",\n \"DECLARES\",\n \"MOUNTS\",\n \"PROVIDES\",\n \"CONSUMES\",\n \"CONFIGURES\",\n \"EXECUTES\",\n \"GENERATES\",\n \"HANDLES\",\n \"OVERRIDES\",\n \"AUTHORIZES\",\n \"BELONGS_TO\",\n \"PUBLISHES\",\n \"SUBSCRIBES\",\n \"CONTAINS\",\n \"EXPOSES\",\n \"REFERENCES\",\n] as const;\n\nexport type RelationshipType = (typeof RELATIONSHIP_TYPES)[number];\n\nexport type DiagnosticSeverity = \"info\" | \"warning\" | \"error\";\n\nexport interface SourceSpan {\n readonly file: string;\n readonly startLine: number;\n readonly startColumn: number;\n readonly endLine: number;\n readonly endColumn: number;\n}\n\nexport interface SoftwareGraphRepository {\n readonly root: string;\n readonly name: string;\n readonly packageManager?: string | undefined;\n readonly packageName?: string | undefined;\n}\n\nexport interface SoftwareGraphNode {\n readonly id: string;\n readonly type: NodeType;\n readonly name: string;\n readonly file?: string | undefined;\n readonly package?: string | undefined;\n readonly span?: SourceSpan | undefined;\n readonly metadata?: JsonObject | undefined;\n}\n\nexport interface EdgeEvidence {\n readonly kind: \"syntax\" | \"resolver\" | \"config\" | \"semantic\" | \"plugin\";\n readonly confidence: \"exact\" | \"inferred\" | \"low\";\n readonly span?: SourceSpan | undefined;\n readonly description?: string | undefined;\n}\n\nexport interface SoftwareGraphEdge {\n readonly id: string;\n readonly type: RelationshipType;\n readonly from: string;\n readonly to: string;\n readonly evidence?: readonly EdgeEvidence[] | undefined;\n readonly metadata?: JsonObject | undefined;\n}\n\nexport interface SoftwareGraphDiagnostic {\n readonly id: string;\n readonly code: string;\n readonly severity: DiagnosticSeverity;\n readonly message: string;\n readonly nodeId?: string | undefined;\n readonly edgeId?: string | undefined;\n readonly span?: SourceSpan | undefined;\n readonly metadata?: JsonObject | undefined;\n}\n\nexport interface GraphIndexes {\n readonly nodeIdsByType: Partial<Record<NodeType, readonly string[]>>;\n readonly edgeIdsByType: Partial<Record<RelationshipType, readonly string[]>>;\n readonly inboundEdgeIdsByNodeId: Record<string, readonly string[]>;\n readonly outboundEdgeIdsByNodeId: Record<string, readonly string[]>;\n readonly edgeIdsBySourceAndType: Record<string, readonly string[]>;\n}\n\nexport interface SoftwareGraphMetadata {\n readonly generatedAt: string;\n readonly deterministicHash: string;\n readonly fileCount: number;\n readonly nodeCount: number;\n readonly edgeCount: number;\n readonly parserVersions: Record<string, string>;\n readonly durationMs?: number | undefined;\n}\n\nexport interface SoftwareGraph {\n readonly version: string;\n readonly repository: SoftwareGraphRepository;\n readonly nodes: readonly SoftwareGraphNode[];\n readonly edges: readonly SoftwareGraphEdge[];\n readonly diagnostics: readonly SoftwareGraphDiagnostic[];\n readonly indexes: GraphIndexes;\n readonly metadata: SoftwareGraphMetadata;\n}\n\nexport interface CreateNodeIdInput {\n readonly type: NodeType;\n readonly name: string;\n readonly file?: string | undefined;\n readonly signature?: string | undefined;\n}\n\nexport interface OntolyPluginContext {\n readonly graph: SoftwareGraph;\n}\n\nexport interface OntolyPluginResult {\n readonly artifacts?: readonly PluginArtifact[] | undefined;\n readonly diagnostics?: readonly SoftwareGraphDiagnostic[] | undefined;\n}\n\nexport interface PluginArtifact {\n readonly path: string;\n readonly contents: string;\n readonly mediaType: string;\n}\n\nexport interface OntolyPlugin {\n readonly name: string;\n readonly version: string;\n readonly run: (context: OntolyPluginContext) => Promise<OntolyPluginResult> | OntolyPluginResult;\n}\n\nconst NODE_TYPE_PREFIX: Record<NodeType, string> = {\n Workspace: \"workspace\",\n Application: \"app\",\n Function: \"fn\",\n Method: \"method\",\n Class: \"class\",\n Interface: \"iface\",\n TypeAlias: \"type\",\n Enum: \"enum\",\n Namespace: \"ns\",\n Module: \"mod\",\n Package: \"pkg\",\n Script: \"script\",\n Dependency: \"dep\",\n Task: \"task\",\n Pipeline: \"pipeline\",\n BuildTarget: \"target\",\n Configuration: \"config\",\n Container: \"container\",\n Workflow: \"workflow\",\n Job: \"job\",\n Step: \"step\",\n Framework: \"framework\",\n Decorator: \"decorator\",\n Import: \"import\",\n Export: \"export\",\n Route: \"route\",\n Resource: \"resource\",\n Operation: \"op\",\n Model: \"model\",\n Field: \"field\",\n Middleware: \"middleware\",\n Provider: \"provider\",\n Factory: \"factory\",\n Service: \"service\",\n Repository: \"repo\",\n DatabaseTable: \"table\",\n EnvironmentVariable: \"env\",\n Event: \"event\",\n Permission: \"permission\",\n Exception: \"exception\",\n Controller: \"controller\",\n Guard: \"guard\",\n};\n\nexport function normalizePath(path: string): string {\n return path.replace(/\\\\/g, \"/\").replace(/\\/+/g, \"/\").replace(/^\\.\\//, \"\");\n}\n\nexport function stableStringify(value: unknown): string {\n if (value === null || typeof value !== \"object\") {\n return JSON.stringify(value);\n }\n\n if (Array.isArray(value)) {\n return `[${value.map((item) => stableStringify(item)).join(\",\")}]`;\n }\n\n const entries = Object.entries(value as Record<string, unknown>)\n .filter(([, entryValue]) => entryValue !== undefined)\n .sort(([left], [right]) => left.localeCompare(right));\n\n return `{${entries\n .map(([key, entryValue]) => `${JSON.stringify(key)}:${stableStringify(entryValue)}`)\n .join(\",\")}}`;\n}\n\nexport function stableHash(input: string): string {\n let hash = 0x811c9dc5;\n\n for (let index = 0; index < input.length; index += 1) {\n hash ^= input.charCodeAt(index);\n hash = Math.imul(hash, 0x01000193);\n }\n\n return (hash >>> 0).toString(36).padStart(7, \"0\");\n}\n\nexport function createNodeId(input: CreateNodeIdInput): string {\n const prefix = NODE_TYPE_PREFIX[input.type];\n const name = input.name.trim();\n const normalizedFile = input.file ? normalizePath(input.file) : undefined;\n\n if (normalizedFile) {\n return `${prefix}:${normalizedFile}:${name}`;\n }\n\n if (input.signature) {\n return `${prefix}:${name}:${stableHash(input.signature)}`;\n }\n\n return `${prefix}:${name}`;\n}\n\nexport function createEdgeId(type: RelationshipType, from: string, to: string): string {\n return `edge:${type.toLowerCase()}:${stableHash(`${type}|${from}|${to}`)}`;\n}\n\nexport function createDiagnosticId(code: string, message: string, location = \"\"): string {\n return `diag:${code.toLowerCase()}:${stableHash(`${code}|${message}|${location}`)}`;\n}\n\nexport function createSyntaxEvidence(\n span: SourceSpan,\n description?: string,\n confidence: EdgeEvidence[\"confidence\"] = \"exact\",\n): EdgeEvidence {\n const evidence: EdgeEvidence = {\n kind: \"syntax\",\n confidence,\n span,\n };\n\n if (description) {\n return { ...evidence, description };\n }\n\n return evidence;\n}\n\nexport function createGraphBuilder(repository: SoftwareGraphRepository): GraphBuilder {\n return new GraphBuilder(repository);\n}\n\nexport class GraphBuilder {\n readonly #repository: SoftwareGraphRepository;\n readonly #nodes = new Map<string, SoftwareGraphNode>();\n readonly #edges = new Map<string, SoftwareGraphEdge>();\n readonly #diagnostics = new Map<string, SoftwareGraphDiagnostic>();\n #fileCount = 0;\n #parserVersions: Record<string, string> = {};\n\n constructor(repository: SoftwareGraphRepository) {\n this.#repository = repository;\n }\n\n setFileCount(fileCount: number): void {\n this.#fileCount = fileCount;\n }\n\n setParserVersion(name: string, version: string): void {\n this.#parserVersions = {\n ...this.#parserVersions,\n [name]: version,\n };\n }\n\n addNode(node: SoftwareGraphNode): SoftwareGraphNode {\n const normalizedNode = normalizeNode(node);\n const existing = this.#nodes.get(normalizedNode.id);\n\n if (!existing) {\n this.#nodes.set(normalizedNode.id, normalizedNode);\n return normalizedNode;\n }\n\n const merged = mergeNode(existing, normalizedNode);\n this.#nodes.set(merged.id, merged);\n return merged;\n }\n\n addEdge(edge: Omit<SoftwareGraphEdge, \"id\"> & { readonly id?: string | undefined }): SoftwareGraphEdge {\n const normalizedEdge = normalizeEdge({\n ...edge,\n id: edge.id ?? createEdgeId(edge.type, edge.from, edge.to),\n });\n const existing = this.#edges.get(normalizedEdge.id);\n\n if (!existing) {\n this.#edges.set(normalizedEdge.id, normalizedEdge);\n return normalizedEdge;\n }\n\n const merged = mergeEdge(existing, normalizedEdge);\n this.#edges.set(merged.id, merged);\n return merged;\n }\n\n addDiagnostic(diagnostic: SoftwareGraphDiagnostic): SoftwareGraphDiagnostic {\n const existing = this.#diagnostics.get(diagnostic.id);\n\n if (existing) {\n return existing;\n }\n\n this.#diagnostics.set(diagnostic.id, diagnostic);\n return diagnostic;\n }\n\n toGraph(durationMs?: number): SoftwareGraph {\n return createSoftwareGraph({\n repository: this.#repository,\n nodes: [...this.#nodes.values()],\n edges: [...this.#edges.values()],\n diagnostics: [...this.#diagnostics.values()],\n fileCount: this.#fileCount,\n parserVersions: this.#parserVersions,\n durationMs,\n });\n }\n}\n\nexport interface CreateSoftwareGraphInput {\n readonly repository: SoftwareGraphRepository;\n readonly nodes: readonly SoftwareGraphNode[];\n readonly edges: readonly SoftwareGraphEdge[];\n readonly diagnostics?: readonly SoftwareGraphDiagnostic[] | undefined;\n readonly fileCount?: number | undefined;\n readonly parserVersions?: Record<string, string> | undefined;\n readonly durationMs?: number | undefined;\n}\n\nexport function createSoftwareGraph(input: CreateSoftwareGraphInput): SoftwareGraph {\n const nodes = [...input.nodes].map(normalizeNode).sort(compareNodes);\n const edges = [...input.edges].map(normalizeEdge).sort(compareEdges);\n const diagnostics = [...(input.diagnostics ?? [])].sort(compareDiagnostics);\n const indexes = buildIndexes(nodes, edges);\n const deterministicHash = stableHash(\n stableStringify({\n repository: input.repository,\n nodes,\n edges,\n diagnostics,\n version: SOFTWARE_GRAPH_VERSION,\n }),\n );\n\n const metadata: SoftwareGraphMetadata = {\n generatedAt: \"1970-01-01T00:00:00.000Z\",\n deterministicHash,\n fileCount: input.fileCount ?? 0,\n nodeCount: nodes.length,\n edgeCount: edges.length,\n parserVersions: input.parserVersions ?? {},\n };\n\n const metadataWithDuration =\n input.durationMs === undefined ? metadata : { ...metadata, durationMs: input.durationMs };\n\n return {\n version: SOFTWARE_GRAPH_VERSION,\n repository: input.repository,\n nodes,\n edges,\n diagnostics,\n indexes,\n metadata: metadataWithDuration,\n };\n}\n\nexport function buildIndexes(\n nodes: readonly SoftwareGraphNode[],\n edges: readonly SoftwareGraphEdge[],\n): GraphIndexes {\n const nodeIdsByType: Partial<Record<NodeType, string[]>> = {};\n const edgeIdsByType: Partial<Record<RelationshipType, string[]>> = {};\n const inboundEdgeIdsByNodeId: Record<string, string[]> = {};\n const outboundEdgeIdsByNodeId: Record<string, string[]> = {};\n const edgeIdsBySourceAndType: Record<string, string[]> = {};\n\n for (const node of nodes) {\n pushIndexValue(nodeIdsByType, node.type, node.id);\n }\n\n for (const edge of edges) {\n pushIndexValue(edgeIdsByType, edge.type, edge.id);\n pushRecordValue(outboundEdgeIdsByNodeId, edge.from, edge.id);\n pushRecordValue(inboundEdgeIdsByNodeId, edge.to, edge.id);\n pushRecordValue(edgeIdsBySourceAndType, `${edge.from}:${edge.type}`, edge.id);\n }\n\n return {\n nodeIdsByType: sortIndex(nodeIdsByType),\n edgeIdsByType: sortIndex(edgeIdsByType),\n inboundEdgeIdsByNodeId: sortRecord(inboundEdgeIdsByNodeId),\n outboundEdgeIdsByNodeId: sortRecord(outboundEdgeIdsByNodeId),\n edgeIdsBySourceAndType: sortRecord(edgeIdsBySourceAndType),\n };\n}\n\nexport function summarizeGraph(graph: SoftwareGraph): string {\n const nodeSummary = summarizeCounts(graph.nodes.map((node) => node.type));\n const edgeSummary = summarizeCounts(graph.edges.map((edge) => edge.type));\n\n return [\n `Repository: ${graph.repository.name}`,\n `Files: ${graph.metadata.fileCount}`,\n `Nodes: ${graph.nodes.length}${nodeSummary ? ` (${nodeSummary})` : \"\"}`,\n `Edges: ${graph.edges.length}${edgeSummary ? ` (${edgeSummary})` : \"\"}`,\n `Diagnostics: ${graph.diagnostics.length}`,\n `Hash: ${graph.metadata.deterministicHash}`,\n ].join(\"\\n\");\n}\n\nexport function getNode(graph: SoftwareGraph, id: string): SoftwareGraphNode | undefined {\n return graph.nodes.find((node) => node.id === id);\n}\n\nexport function getEdge(graph: SoftwareGraph, id: string): SoftwareGraphEdge | undefined {\n return graph.edges.find((edge) => edge.id === id);\n}\n\nexport * from \"./semantic-index\";\n\nfunction normalizeNode(node: SoftwareGraphNode): SoftwareGraphNode {\n const normalized: SoftwareGraphNode = {\n id: node.id,\n type: node.type,\n name: node.name,\n };\n\n return withOptionalProperties(normalized, {\n file: node.file ? normalizePath(node.file) : undefined,\n package: node.package,\n span: node.span ? normalizeSpan(node.span) : undefined,\n metadata: node.metadata,\n });\n}\n\nfunction normalizeEdge(edge: SoftwareGraphEdge): SoftwareGraphEdge {\n const normalized: SoftwareGraphEdge = {\n id: edge.id,\n type: edge.type,\n from: edge.from,\n to: edge.to,\n };\n\n return withOptionalProperties(normalized, {\n evidence: edge.evidence?.map((item) => ({\n ...item,\n span: item.span ? normalizeSpan(item.span) : undefined,\n })),\n metadata: edge.metadata,\n });\n}\n\nfunction normalizeSpan(span: SourceSpan): SourceSpan {\n return {\n ...span,\n file: normalizePath(span.file),\n };\n}\n\nfunction mergeNode(left: SoftwareGraphNode, right: SoftwareGraphNode): SoftwareGraphNode {\n const merged: SoftwareGraphNode = {\n ...left,\n metadata: mergeJsonObject(left.metadata, right.metadata),\n };\n\n return withOptionalProperties(merged, {\n span: left.span ?? right.span,\n file: left.file ?? right.file,\n package: left.package ?? right.package,\n });\n}\n\nfunction mergeEdge(left: SoftwareGraphEdge, right: SoftwareGraphEdge): SoftwareGraphEdge {\n const evidence = dedupeEvidence([...(left.evidence ?? []), ...(right.evidence ?? [])]);\n const merged: SoftwareGraphEdge = {\n ...left,\n metadata: mergeJsonObject(left.metadata, right.metadata),\n };\n\n return withOptionalProperties(merged, {\n evidence: evidence.length > 0 ? evidence : undefined,\n });\n}\n\nfunction mergeJsonObject(\n left: JsonObject | undefined,\n right: JsonObject | undefined,\n): JsonObject | undefined {\n if (!left && !right) {\n return undefined;\n }\n\n return {\n ...(left ?? {}),\n ...(right ?? {}),\n };\n}\n\nfunction dedupeEvidence(evidence: readonly EdgeEvidence[]): readonly EdgeEvidence[] {\n const seen = new Set<string>();\n const deduped: EdgeEvidence[] = [];\n\n for (const item of evidence) {\n const key = stableStringify(item);\n\n if (!seen.has(key)) {\n seen.add(key);\n deduped.push(item);\n }\n }\n\n return deduped.sort((left, right) => stableStringify(left).localeCompare(stableStringify(right)));\n}\n\nfunction pushIndexValue<T extends string>(\n index: Partial<Record<T, string[]>>,\n key: T,\n value: string,\n): void {\n const values = index[key] ?? [];\n values.push(value);\n index[key] = values;\n}\n\nfunction pushRecordValue(index: Record<string, string[]>, key: string, value: string): void {\n const values = index[key] ?? [];\n values.push(value);\n index[key] = values;\n}\n\nfunction sortIndex<T extends string>(\n index: Partial<Record<T, string[]>>,\n): Partial<Record<T, readonly string[]>> {\n const sortedEntries = Object.entries(index)\n .map(([key, values]) => [key, [...(values as string[])].sort()] as const)\n .sort(([left], [right]) => left.localeCompare(right));\n\n return Object.fromEntries(sortedEntries) as unknown as Partial<Record<T, readonly string[]>>;\n}\n\nfunction sortRecord(index: Record<string, string[]>): Record<string, readonly string[]> {\n return Object.fromEntries(\n Object.entries(index)\n .map(([key, values]) => [key, [...values].sort()] as const)\n .sort(([left], [right]) => left.localeCompare(right)),\n );\n}\n\nfunction summarizeCounts(values: readonly string[]): string {\n const counts = new Map<string, number>();\n\n for (const value of values) {\n counts.set(value, (counts.get(value) ?? 0) + 1);\n }\n\n return [...counts.entries()]\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([value, count]) => `${value} ${count}`)\n .join(\", \");\n}\n\nfunction compareNodes(left: SoftwareGraphNode, right: SoftwareGraphNode): number {\n return left.id.localeCompare(right.id);\n}\n\nfunction compareEdges(left: SoftwareGraphEdge, right: SoftwareGraphEdge): number {\n return left.id.localeCompare(right.id);\n}\n\nfunction compareDiagnostics(\n left: SoftwareGraphDiagnostic,\n right: SoftwareGraphDiagnostic,\n): number {\n return left.id.localeCompare(right.id);\n}\n\nfunction withOptionalProperties<T extends object, O extends object>(target: T, optional: O): T & O {\n const entries = Object.entries(optional).filter(([, value]) => value !== undefined);\n return {\n ...target,\n ...Object.fromEntries(entries),\n } as T & O;\n}\n"],"mappings":";AAYO,IAAM,yBAAyB;AA0HtC,IAAM,aAAa,oBAAI,IAAI;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAM,qBAAqB,oBAAI,IAAI;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAM,iBAA8D;AAAA,EAClE,SAAS,CAAC;AAAA,EACV,QAAQ,CAAC,YAAY,UAAU,SAAS,aAAa,aAAa,QAAQ,SAAS,WAAW,YAAY,cAAc,cAAc,YAAY,SAAS,OAAO;AAAA,EAClK,SAAS,CAAC,SAAS,cAAc,WAAW,YAAY,UAAU,WAAW,cAAc,SAAS,YAAY,SAAS,aAAa,aAAa,YAAY,UAAU,aAAa,iBAAiB,uBAAuB,SAAS,cAAc,YAAY;AAAA,EACjQ,eAAe,CAAC,iBAAiB,uBAAuB,eAAe,UAAU,MAAM;AAAA,EACvF,aAAa,CAAC,qBAAqB;AAAA,EACnC,OAAO,CAAC,SAAS,aAAa,YAAY;AAAA,EAC1C,YAAY,CAAC,SAAS,aAAa,cAAc,YAAY,UAAU,UAAU,UAAU,QAAQ,aAAa;AAAA,EAChH,YAAY,CAAC,aAAa,eAAe,WAAW,UAAU,aAAa,cAAc,eAAe;AAC1G;AAEA,IAAM,4BAGA;AAAA,EACJ,EAAE,YAAY,gBAAgB,OAAO,CAAC,SAAS,WAAW,YAAY,OAAO,WAAW,cAAc,SAAS,QAAQ,EAAE;AAAA,EACzH,EAAE,YAAY,sBAAsB,OAAO,CAAC,UAAU,iBAAiB,WAAW,eAAe,OAAO,QAAQ,EAAE;AAAA,EAClH,EAAE,YAAY,oBAAoB,OAAO,CAAC,OAAO,eAAe,UAAU,UAAU,EAAE;AAAA,EACtF,EAAE,YAAY,sBAAsB,OAAO,CAAC,QAAQ,kBAAkB,SAAS,UAAU,OAAO,WAAW,OAAO,EAAE;AAAA,EACpH,EAAE,YAAY,qBAAqB,OAAO,CAAC,iBAAiB,cAAc,SAAS,QAAQ,UAAU,WAAW,EAAE;AAAA,EAClH,EAAE,YAAY,kBAAkB,OAAO,CAAC,UAAU,UAAU,UAAU,SAAS,UAAU,WAAW,WAAW,EAAE;AAAA,EACjH,EAAE,YAAY,sBAAsB,OAAO,CAAC,cAAc,WAAW,WAAW,QAAQ,WAAW,WAAW,EAAE;AAAA,EAChH,EAAE,YAAY,sBAAsB,OAAO,CAAC,WAAW,SAAS,cAAc,SAAS,QAAQ,QAAQ,EAAE;AAC3G;AAEA,IAAM,sBAAyD;AAAA,EAC7D,KAAK,CAAC,SAAS,YAAY,aAAa,YAAY;AAAA,EACpD,MAAM,CAAC,kBAAkB,aAAa,iBAAiB,YAAY,OAAO,SAAS,WAAW,UAAU,OAAO;AAAA,EAC/G,gBAAgB,CAAC,QAAQ,YAAY,OAAO,SAAS,WAAW,UAAU,OAAO;AAAA,EACjF,WAAW,CAAC,iBAAiB,cAAc,OAAO;AAAA,EAClD,eAAe,CAAC,aAAa,cAAc,SAAS,QAAQ,QAAQ;AAAA,EACpE,SAAS,CAAC,YAAY,aAAa,eAAe,QAAQ,YAAY;AAAA,EACtE,UAAU,CAAC,WAAW,aAAa,eAAe,QAAQ,YAAY;AAAA,EACtE,OAAO,CAAC,QAAQ,SAAS,OAAO,YAAY,MAAM;AAAA,EAClD,MAAM,CAAC,SAAS,SAAS,OAAO,YAAY,MAAM;AAAA,EAClD,QAAQ,CAAC,iBAAiB,WAAW,UAAU;AAAA,EAC/C,eAAe,CAAC,UAAU,WAAW,UAAU;AAAA,EAC/C,YAAY,CAAC,WAAW,SAAS,UAAU;AAAA,EAC3C,MAAM,CAAC,YAAY,WAAW,UAAU,OAAO;AAAA,EAC/C,UAAU,CAAC,MAAM,cAAc,eAAe,UAAU,OAAO;AAAA,EAC/D,IAAI,CAAC,YAAY,cAAc,eAAe,OAAO;AAAA,EACrD,UAAU,CAAC,QAAQ,UAAU,YAAY,SAAS,WAAW;AAAA,EAC7D,UAAU,CAAC,OAAO,SAAS,WAAW;AAAA,EACtC,KAAK,CAAC,eAAe,YAAY,UAAU,eAAe;AAAA,EAC1D,aAAa,CAAC,OAAO,YAAY,UAAU,eAAe;AAAA,EAC1D,MAAM,CAAC,YAAY,YAAY;AAAA,EAC/B,SAAS,CAAC,cAAc,SAAS,UAAU;AAAA,EAC3C,UAAU,CAAC,QAAQ,kBAAkB,QAAQ,SAAS;AAAA,EACtD,KAAK,CAAC,QAAQ,kBAAkB,SAAS,SAAS;AAAA,EAClD,OAAO,CAAC,QAAQ,kBAAkB,UAAU,WAAW,KAAK;AAAA,EAC5D,cAAc,CAAC,iBAAiB,SAAS,SAAS,SAAS;AAAA,EAC3D,eAAe,CAAC,gBAAgB,SAAS,SAAS,SAAS;AAAA,EAC3D,aAAa,CAAC,gBAAgB,UAAU,UAAU,eAAe,aAAa,MAAM;AAAA,EACpF,cAAc,CAAC,eAAe,UAAU,UAAU,eAAe,aAAa,MAAM;AAAA,EACpF,SAAS,CAAC,YAAY,QAAQ,SAAS;AAAA,EACvC,YAAY,CAAC,iBAAiB,aAAa,SAAS,MAAM;AAAA,EAC1D,MAAM,CAAC,cAAc,YAAY,MAAM;AAAA,EACvC,gBAAgB,CAAC,QAAQ,cAAc,YAAY,MAAM;AAAA,EACzD,UAAU,CAAC,WAAW,cAAc,YAAY;AAAA,EAChD,MAAM,CAAC,cAAc,eAAe,UAAU;AAAA,EAC9C,YAAY,CAAC,QAAQ,eAAe,UAAU;AAAA,EAC9C,UAAU,CAAC,WAAW,QAAQ,SAAS;AAAA,EACvC,OAAO,CAAC,OAAO,YAAY,aAAa,SAAS;AAAA,EACjD,SAAS,CAAC,YAAY,cAAc,YAAY;AAAA,EAChD,SAAS,CAAC,QAAQ,kBAAkB,SAAS,UAAU,KAAK;AAAA,EAC5D,QAAQ,CAAC,QAAQ,kBAAkB,SAAS,SAAS;AAAA,EACrD,OAAO,CAAC,YAAY,aAAa,cAAc,aAAa,cAAc,aAAa;AAAA,EACvF,QAAQ,CAAC,WAAW,UAAU,eAAe,OAAO;AAAA,EACpD,SAAS,CAAC,UAAU,UAAU,eAAe,OAAO;AAAA,EACpD,WAAW,CAAC,cAAc,WAAW,WAAW;AAAA,EAChD,YAAY,CAAC,aAAa,WAAW,WAAW;AAAA,EAChD,WAAW,CAAC,cAAc,SAAS,iBAAiB,SAAS;AAAA,EAC7D,YAAY,CAAC,aAAa,SAAS,iBAAiB,SAAS;AAAA,EAC7D,OAAO,CAAC,OAAO,QAAQ,kBAAkB,SAAS;AACpD;AAEA,IAAM,gCAAgC;AACtC,IAAM,gCAAgC;AACtC,IAAM,gCAAgC;AACtC,IAAM,iCAAiC;AACvC,IAAM,sBAAsB;AAC5B,IAAM,8BAA8B;AACpC,IAAM,uBAAuB;AAC7B,IAAM,yBAAyB;AAC/B,IAAM,8BAA8B;AACpC,IAAM,gCAAgC;AAEtC,IAAM,uBAAuB,oBAAI,IAAI;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAM,+BAAkE;AAAA,EACtE,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,OAAO;AAAA,EACP,WAAW;AAAA,EACX,WAAW;AAAA,EACX,OAAO;AAAA,EACP,UAAU;AAAA,EACV,qBAAqB;AAAA,EACrB,UAAU;AACZ;AAEA,IAAM,4BAA4B;AAE3B,SAAS,oBAAoB,OAAqC;AACvE,QAAM,WAAW,IAAI,IAAI,MAAM,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAU,CAAC;AAC5E,QAAM,WAAW,WAAW,MAAM,OAAO,IAAI;AAC7C,QAAM,WAAW,WAAW,MAAM,OAAO,MAAM;AAC/C,QAAM,UAAU,MAAM,MAAM,IAAI,CAAC,SAAS,YAAY,OAAO,MAAM,UAAU,UAAU,QAAQ,CAAC,EAAE,KAAK,cAAc;AACrH,QAAM,gBAAgB,mBAAmB,OAAO;AAChD,QAAM,aAAa,gBAAgB,OAAO;AAC1C,QAAM,aAAsC;AAAA,IAC1C,SAAS,QAAQ;AAAA,IACjB,SAAS,IAAI,QAAQ,IAAI,CAAC,UAAU,MAAM,QAAQ,MAAM,CAAC;AAAA,IACzD,UAAU,IAAI,QAAQ,IAAI,CAAC,UAAU,MAAM,SAAS,MAAM,CAAC;AAAA,IAC3D,YAAY,WAAW;AAAA,IACvB,WAAW,MAAM,SAAS;AAAA,EAC5B;AACA,QAAM,uBAAuB;AAAA,IAC3B,SAAS;AAAA,IACT,cAAc,MAAM;AAAA,IACpB,WAAW,MAAM,SAAS;AAAA,IAC1B,YAAY;AAAA,MACV,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,MAAM,WAAW;AAAA,MACvB,aAAa,MAAM,WAAW;AAAA,IAChC;AAAA,IACA;AAAA,IACA,UAAU,QAAQ,IAAI,CAAC,UAAU,MAAM,QAAQ;AAAA,IAC/C;AAAA,IACA;AAAA,IACA,UAAU;AAAA,MACR,aAAa;AAAA,MACb,mBAAmB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AACA,QAAM,oBAAoB,kBAAkB,oBAAoB;AAEhE,SAAO;AAAA,IACL,GAAG;AAAA,IACH,UAAU;AAAA,MACR,GAAG,qBAAqB;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,OAAmG;AAC5H,QAAM,cAAc,MAAM,QAAQ,IAAI,CAAC,UAAU,WAAW,gBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK;AAC1F,QAAM,iBAAiB,OAAO,QAAQ,MAAM,aAAa,EACtD,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,KAAK,cAAc,KAAK,CAAC,EACnD,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,WAAW,gBAAgB,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;AAClE,QAAM,mBAAmB,MAAM,WAC5B,IAAI,CAAC,SAAS,WAAW,gBAAgB,IAAI,CAAC,CAAC,EAC/C,KAAK;AAER,SAAO,WAAW,gBAAgB;AAAA,IAChC,SAAS,MAAM;AAAA,IACf,cAAc,MAAM;AAAA,IACpB,WAAW,MAAM;AAAA,IACjB,YAAY,MAAM;AAAA,IAClB,UAAU,MAAM;AAAA,IAChB,SAAS;AAAA,MACP,OAAO,YAAY;AAAA,MACnB,QAAQ;AAAA,IACV;AAAA,IACA,eAAe;AAAA,MACb,OAAO,eAAe;AAAA,MACtB,QAAQ;AAAA,IACV;AAAA,IACA,YAAY;AAAA,MACV,OAAO,iBAAiB;AAAA,MACxB,QAAQ;AAAA,IACV;AAAA,IACA,UAAU;AAAA,MACR,aAAa,MAAM,SAAS;AAAA,MAC5B,YAAY,MAAM,SAAS;AAAA,IAC7B;AAAA,EACF,CAAC,CAAC;AACJ;AAEO,SAAS,sBAAsB,OAAsB,OAA0C;AACpG,QAAM,SAAmB,CAAC;AAC1B,MAAI,MAAM,YAAY,wBAAwB;AAC5C,WAAO,KAAK,sCAAsC,MAAM,OAAO,GAAG;AAAA,EACpE;AACA,MAAI,SAAS,MAAM,cAAc,MAAM,SAAS,mBAAmB;AACjE,WAAO,KAAK,+DAA+D;AAAA,EAC7E;AACA,QAAM,OAAO,oBAAI,IAAY;AAC7B,aAAW,SAAS,MAAM,SAAS;AACjC,QAAI,KAAK,IAAI,MAAM,QAAQ,GAAG;AAC5B,aAAO,KAAK,kCAAkC,MAAM,QAAQ,GAAG;AAAA,IACjE;AACA,SAAK,IAAI,MAAM,QAAQ;AAAA,EACzB;AACA,aAAW,CAAC,MAAM,GAAG,KAAK,OAAO,QAAQ,MAAM,aAAa,GAAG;AAC7D,eAAW,MAAM,KAAK;AACpB,UAAI,CAAC,KAAK,IAAI,EAAE,GAAG;AACjB,eAAO,KAAK,wBAAwB,IAAI,8BAA8B,EAAE,GAAG;AAAA,MAC7E;AAAA,IACF;AAAA,EACF;AACA,SAAO,OAAO,KAAK;AACrB;AAEO,SAAS,gBAAgB,OAAiC;AAC/D,QAAM,MAAM,MAAM,KAAK;AACvB,QAAM,SAAS,SAAS,GAAG;AAC3B,QAAM,UAAU,eAAe,KAAK,MAAM;AAC1C,QAAM,gBAAgB,cAAc;AAAA,IAClC,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG,OAAO,QAAQ,aAAa;AAAA,IAC/B,GAAG,OAAO,IAAI,WAAW;AAAA,IACzB,GAAG,OAAO,IAAI,SAAS;AAAA,EACzB,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA,YAAY,gBAAgB,GAAG;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,cAAc,OAAsB,OAAe,UAAyB,CAAC,GAAyB;AACpH,QAAM,YAAY,eAAe;AACjC,QAAM,WAAW,QAAQ,YAAY;AACrC,QAAM,SAAS,gBAAgB,KAAK;AACpC,QAAM,aAAa,eAAe,OAAO,QAAQ;AAAA,IAC/C,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACD,QAAM,aAAa,WAAW,CAAC,GAAG,cAAc;AAChD,QAAM,kBAAkB,cAAc,WAAW,QAAQ,CAAC,cAAc,UAAU,YAAY,CAAC,EAAE,MAAM,GAAG,EAAE;AAE5G,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,uBAAuB,oBAAoB,QAAQ,YAAY,QAAQ;AAAA,IACvE,UAAU,WAAW,MAAM,GAAG,CAAC,EAAE;AAAA,MAAI,CAAC,cACpC,GAAG,UAAU,WAAW,KAAK,UAAU,IAAI,aAAa,UAAU,aAAa,KAAK,IAAI,KAAK,eAAe,eAAe,UAAU,MAAM,QAAQ,CAAC,CAAC;AAAA,IACvJ;AAAA,IACA,WAAW,MAAM,eAAe,IAAI,WAAW,CAAC;AAAA,EAClD;AACF;AAEO,SAAS,YAAY,OAAsB,OAAe,UAAyB,CAAC,GAAyB;AAClH,SAAO,cAAc,OAAO,OAAO,EAAE,GAAG,SAAS,UAAU,UAAU,CAAC;AACxE;AAEO,SAAS,WAAW,OAAsB,OAAe,UAAyB,CAAC,GAAyB;AACjH,SAAO,cAAc,OAAO,OAAO,EAAE,GAAG,SAAS,UAAU,UAAU,OAAO,QAAQ,SAAS,eAAe,OAAO,CAAC;AACtH;AAEO,SAAS,YAAY,OAAsB,OAAe,UAAyB,CAAC,GAAyB;AAClH,SAAO,cAAc,OAAO,OAAO,EAAE,GAAG,SAAS,UAAU,WAAW,OAAO,QAAQ,SAAS,eAAe,QAAQ,CAAC;AACxH;AAEO,SAAS,kBAAkB,OAAsB,OAAe,UAAyB,CAAC,GAAyB;AACxH,SAAO,cAAc,OAAO,OAAO;AAAA,IACjC,GAAG;AAAA,IACH,UAAU;AAAA,IACV,OAAO,QAAQ,SAAS,eAAe;AAAA,EACzC,CAAC;AACH;AAEO,SAAS,gBAAgB,OAAsB,OAAe,UAAyB,CAAC,GAAyB;AACtH,SAAO,cAAc,OAAO,OAAO,EAAE,GAAG,SAAS,UAAU,eAAe,OAAO,QAAQ,SAAS,eAAe,YAAY,CAAC;AAChI;AAEO,SAAS,UAAU,OAAsB,OAAe,UAAyB,CAAC,GAAyB;AAChH,SAAO,cAAc,OAAO,OAAO,EAAE,GAAG,SAAS,UAAU,SAAS,OAAO,QAAQ,SAAS,eAAe,MAAM,CAAC;AACpH;AAEO,SAAS,eAAe,OAAsB,OAAe,UAAyB,CAAC,GAAyB;AACrH,SAAO,cAAc,OAAO,OAAO,EAAE,GAAG,SAAS,UAAU,cAAc,OAAO,QAAQ,SAAS,eAAe,WAAW,CAAC;AAC9H;AAEO,SAAS,sBAAsB,OAAsB,OAAe,UAAyB,CAAC,GAAyB;AAC5H,SAAO,cAAc,OAAO,OAAO,EAAE,GAAG,SAAS,UAAU,cAAc,OAAO,QAAQ,SAAS,eAAe,WAAW,CAAC;AAC9H;AAEA,SAAS,YACP,OACA,MACA,UACA,UACA,UACoB;AACpB,QAAM,gBAAgB,SAAS,IAAI,KAAK,EAAE,KAAK,CAAC;AAChD,QAAM,gBAAgB,SAAS,IAAI,KAAK,EAAE,KAAK,CAAC;AAChD,QAAM,YAAY,cAAc;AAAA,IAC9B,GAAG,cAAc,IAAI,CAAC,SAAS,KAAK,IAAI;AAAA,IACxC,GAAG,cAAc,IAAI,CAAC,SAAS,KAAK,EAAE;AAAA,EACxC,CAAC;AACD,QAAM,gBAAgB,UAAU,IAAI,CAAC,OAAO,SAAS,IAAI,EAAE,CAAC,EAAE,OAAO,MAAM;AAC3E,QAAM,cAAc,eAAe,MAAM,UAAU,aAAa;AAChE,QAAM,cAAc,kBAAkB,OAAO,MAAM,eAAe,WAAW;AAC7E,QAAM,UAAU,gBAAgB,aAAa,IAAI;AACjD,QAAM,WAAW,iBAAiB,aAAa,IAAI;AACnD,QAAM,SAAS,cAAc,SAAS,cAAc;AAEpD,SAAO,uBAAuB;AAAA,IAC5B,UAAU,KAAK;AAAA,IACf,aAAa,KAAK;AAAA,IAClB,gBAAgB,gBAAgB,KAAK,IAAI;AAAA,IACzC,MAAM,KAAK;AAAA,IACX,eAAe;AAAA,MACb,UAAU,iBAAiB,aAAa;AAAA,MACxC,UAAU,iBAAiB,aAAa;AAAA,MACxC;AAAA,MACA,aAAa;AAAA,MACb,eAAe,cAAc,cAAc,IAAI,CAAC,aAAa,SAAS,IAAI,CAAC;AAAA,IAC7E;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,eAAe,MAAM,QAAQ,cAAc,MAAM;AAAA,IAC7D,gBAAgB,cAAc;AAAA,IAC9B,mBAAmB,kBAAkB,IAAI;AAAA,EAC3C,GAAG;AAAA,IACD,QAAQ,eAAe,aAAa,QAAQ;AAAA,IAC5C,SAAS,KAAK,WAAW,eAAe,KAAK,UAAU,SAAS,KAAK,eAAe,KAAK,UAAU,aAAa;AAAA,IAChH,WAAW,eAAe,KAAK,UAAU,WAAW;AAAA,IACpD,WAAW,eAAe,KAAK,UAAU,WAAW,KAAK,uBAAuB,aAAa;AAAA,IAC7F,UAAU,KAAK,OAAO,cAAc,KAAK,IAAI,IAAI;AAAA,IACjD,YAAY,KAAK,OAAO,WAAW,KAAK,IAAI,IAAI;AAAA,IAChD,eAAe,2BAA2B,KAAK,QAAQ;AAAA,IACvD,UAAU,sBAAsB,KAAK,QAAQ;AAAA,EAC/C,CAAC;AACH;AAEA,SAAS,kBACP,OACA,MACA,WACA,aACmB;AACnB,QAAM,iBAAiB,mBAAmB,KAAK,QAAQ;AACvD,QAAM,cAAc,gBAAgB,IAAI;AACxC,QAAM,YAAY,KAAK,SAAS,wBAAwB,CAAC,KAAK,MAAM,KAAK,GAAG,QAAQ,SAAS,EAAE,CAAC,IAAI,CAAC;AAErG,SAAO,cAAc;AAAA,IACnB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,QAAQ;AAAA,IACb,KAAK,WAAW;AAAA,IAChB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG,UAAU,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,aAAa,SAAS,IAAI;AAAA,IACzD,GAAG,UAAU,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,aAAa,SAAS,EAAE;AAAA,IACvD,GAAG;AAAA,EACL,EAAE,OAAO,OAAO,CAAC,EAAE,MAAM,GAAG,2BAA2B;AACzD;AAEA,SAAS,gBAAgB,QAA2B,MAA4C;AAC9F,QAAM,UAAU,oBAAI,IAAY;AAChC,QAAM,gBAAgB,IAAI,IAAI,SAAS,KAAK,IAAI,CAAC;AACjD,aAAW,SAAS,QAAQ;AAC1B,UAAM,SAAS,SAAS,KAAK;AAC7B,UAAM,aAAa,gBAAgB,KAAK;AACxC,QAAI,YAAY;AACd,cAAQ,IAAI,UAAU;AAAA,IACxB;AACA,QAAI,OAAO,SAAS,GAAG;AACrB,cAAQ,IAAI,OAAO,KAAK,GAAG,CAAC;AAC5B,cAAQ,IAAI,OAAO,KAAK,EAAE,CAAC;AAC3B,cAAQ,IAAI,OAAO,KAAK,GAAG,CAAC;AAC5B,cAAQ,IAAI,OAAO,KAAK,GAAG,CAAC;AAC5B,YAAM,gBAAgB,qBAAqB,MAAM;AACjD,UAAI,cAAc,SAAS,KAAK,cAAc,WAAW,OAAO,QAAQ;AACtE,gBAAQ,IAAI,cAAc,KAAK,GAAG,CAAC;AACnC,gBAAQ,IAAI,cAAc,KAAK,EAAE,CAAC;AAAA,MACpC;AACA,iBAAW,SAAS,QAAQ;AAC1B,YAAI,oBAAoB,KAAK,GAAG;AAC9B;AAAA,QACF;AACA,gBAAQ,IAAI,KAAK;AACjB,gBAAQ,IAAI,YAAY,KAAK,CAAC;AAC9B,gBAAQ,IAAI,UAAU,KAAK,CAAC;AAC5B,YAAI,cAAc,IAAI,KAAK,GAAG;AAC5B,qBAAW,aAAa,cAAc,KAAK,GAAG;AAC5C,oBAAQ,IAAI,SAAS;AAAA,UACvB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,aAAW,aAAa,mBAAmB,KAAK,IAAI,GAAG;AACrD,YAAQ,IAAI,SAAS;AAAA,EACvB;AACA,MAAI,cAAc,IAAI,GAAG;AACvB,YAAQ,IAAI,KAAK;AACjB,YAAQ,IAAI,sBAAsB;AAClC,YAAQ,IAAI,UAAU;AACtB,YAAQ,IAAI,SAAS;AAAA,EACvB;AACA,MAAI,WAAW,IAAI,GAAG;AACpB,YAAQ,IAAI,MAAM;AAClB,YAAQ,IAAI,MAAM;AAClB,YAAQ,IAAI,UAAU;AAAA,EACxB;AACA,MAAI,oBAAoB,IAAI,GAAG;AAC7B,YAAQ,IAAI,SAAS;AACrB,YAAQ,IAAI,gBAAgB;AAAA,EAC9B;AAEA,SAAO,cAAc,CAAC,GAAG,OAAO,EAC7B,OAAO,CAAC,UAAU,MAAM,SAAS,CAAC,EAClC,OAAO,CAAC,UAAU,CAAC,qBAAqB,KAAK,CAAC,CAAC,EAC/C,MAAM,GAAG,oBAAoB;AAClC;AAEA,SAAS,iBAAiB,QAA2B,MAA4C;AAC/F,QAAM,WAAW,oBAAI,IAAY;AACjC,aAAW,SAAS,QAAQ;AAC1B,eAAW,SAAS,SAAS,KAAK,GAAG;AACnC,UAAI,oBAAoB,KAAK,GAAG;AAC9B;AAAA,MACF;AACA,eAAS,IAAI,KAAK;AAClB,eAAS,IAAI,YAAY,KAAK,CAAC;AAAA,IACjC;AAAA,EACF;AACA,WAAS,IAAI,KAAK,KAAK,YAAY,CAAC;AACpC,aAAW,SAAS,mBAAmB,KAAK,IAAI,GAAG;AACjD,aAAS,IAAI,KAAK;AAAA,EACpB;AACA,MAAI,cAAc,IAAI,GAAG;AACvB,aAAS,IAAI,KAAK;AAClB,aAAS,IAAI,UAAU;AACvB,aAAS,IAAI,SAAS;AAAA,EACxB;AACA,MAAI,WAAW,IAAI,GAAG;AACpB,aAAS,IAAI,MAAM;AACnB,aAAS,IAAI,MAAM;AAAA,EACrB;AACA,MAAI,oBAAoB,IAAI,GAAG;AAC7B,aAAS,IAAI,SAAS;AAAA,EACxB;AACA,SAAO,cAAc,CAAC,GAAG,QAAQ,EAC9B,OAAO,CAAC,YAAY,QAAQ,SAAS,CAAC,EACtC,OAAO,CAAC,YAAY,CAAC,oBAAoB,OAAO,CAAC,CAAC,EAClD,MAAM,GAAG,sBAAsB;AACpC;AAEA,SAAS,mBAAmB,SAA2E;AACrG,QAAM,WAAW,oBAAI,IAAyB;AAC9C,aAAW,SAAS,SAAS;AAC3B,eAAW,QAAQ,cAAc,CAAC,MAAM,gBAAgB,GAAG,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,GAAG;AAC7F,kBAAY,UAAU,MAAM,MAAM,QAAQ;AAC1C,iBAAW,SAAS,SAAS,IAAI,GAAG;AAClC,oBAAY,UAAU,OAAO,MAAM,QAAQ;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AAEA,SAAO,OAAO;AAAA,IACZ,CAAC,GAAG,SAAS,QAAQ,CAAC,EACnB,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,KAAK,cAAc,KAAK,CAAC,EACnD,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAU;AAAA,EAC1D;AACF;AAEA,SAAS,gBAAgB,SAA6E;AACpG,QAAM,QAAQ,oBAAI,IAA2E;AAC7F,aAAW,SAAS,SAAS;AAC3B,eAAW,QAAQ,cAAc,CAAC,GAAG,MAAM,UAAU,GAAG,MAAM,QAAQ,OAAO,CAAC,UAAU,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG;AAC/G,UAAI,KAAK,SAAS,KAAK,WAAW,IAAI,IAAI,GAAG;AAC3C;AAAA,MACF;AACA,UAAI,oBAAoB,IAAI,GAAG;AAC7B;AAAA,MACF;AACA,YAAM,UAAU,MAAM,IAAI,IAAI,KAAK,EAAE,OAAO,GAAG,SAAS,oBAAI,IAAY,GAAG,OAAO,oBAAI,IAAc,EAAE;AACtG,cAAQ,SAAS;AACjB,UAAI,QAAQ,QAAQ,OAAO,+BAA+B;AACxD,gBAAQ,QAAQ,IAAI,MAAM,QAAQ;AAAA,MACpC;AACA,cAAQ,MAAM,IAAI,MAAM,IAAI;AAC5B,YAAM,IAAI,MAAM,OAAO;AAAA,IACzB;AAAA,EACF;AAEA,SAAO,CAAC,GAAG,MAAM,QAAQ,CAAC,EACvB,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO;AAAA,IACvB;AAAA,IACA,WAAW,MAAM;AAAA,IACjB,SAAS,CAAC,GAAG,MAAM,OAAO,EAAE,KAAK;AAAA,IACjC,OAAO,CAAC,GAAG,MAAM,KAAK,EAAE,KAAK;AAAA,EAC/B,EAAE,EACD,KAAK,CAAC,MAAM,UAAU,MAAM,YAAY,KAAK,aAAa,KAAK,KAAK,cAAc,MAAM,IAAI,CAAC;AAClG;AAEA,SAAS,eACP,OACA,QACA,SAC8B;AAC9B,QAAM,eAAe,gBAAgB,OAAO,MAAM;AAClD,QAAM,YAAY,IAAI,IAAI,MAAM,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,UAAU,KAAK,CAAU,CAAC;AACxF,QAAM,QAAQ,QAAQ,OAAO,SAAS,IAAI,IAAI,QAAQ,KAAK,IAAI,gBAAgB,QAAQ,QAAQ;AAC/F,QAAM,aAAa,aAChB,IAAI,CAAC,OAAO,UAAU,IAAI,EAAE,CAAC,EAC7B,OAAO,OAAO,EACd,OAAO,CAAC,UAAU,wBAAwB,OAAO,QAAQ,QAAQ,QAAQ,CAAC,EAC1E,OAAO,CAAC,UAAU,CAAC,SAAS,MAAM,IAAI,MAAM,IAAI,CAAC,EACjD,OAAO,CAAC,UAAU,CAAC,QAAQ,gBAAgB,MAAM,YAAY,QAAQ,gBAAgB,MAAM,UAAU,WAAW,QAAQ,YAAY,CAAC,EACrI,IAAI,CAAC,UAAU,WAAW,OAAO,QAAQ,QAAQ,QAAQ,CAAC,EAC1D,OAAO,CAAC,cAAc,UAAU,QAAQ,CAAC,EACzC,KAAK,iBAAiB;AAEzB,SAAO,8BAA8B,YAAY,QAAQ,QAAQ,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,EAAE;AACzG;AAEA,SAAS,gBAAgB,OAAsB,QAA6C;AAC1F,QAAM,MAAM,oBAAI,IAAY;AAC5B,QAAM,QAAQ,cAAc,CAAC,OAAO,YAAY,GAAG,OAAO,SAAS,GAAG,OAAO,QAAQ,GAAG,OAAO,aAAa,CAAC;AAC7G,aAAW,QAAQ,OAAO;AACxB,eAAW,MAAM,MAAM,cAAc,IAAI,KAAK,CAAC,GAAG;AAChD,UAAI,IAAI,EAAE;AAAA,IACZ;AAAA,EACF;AACA,aAAW,MAAM,iCAAiC,OAAO,KAAK,GAAG;AAC/D,QAAI,IAAI,EAAE;AAAA,EACZ;AAEA,QAAM,WAAW,MAAM,QACpB,OAAO,CAAC,UAAU,gBAAgB,OAAO,MAAM,CAAC,EAChD,IAAI,CAAC,UAAU,MAAM,QAAQ,EAC7B,KAAK;AAER,MAAI,IAAI,OAAO,GAAG;AAChB,eAAW,MAAM,SAAS,MAAM,GAAG,GAAG,GAAG;AACvC,UAAI,IAAI,EAAE;AAAA,IACZ;AACA,WAAO,CAAC,GAAG,mBAAmB,OAAO,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK;AAAA,EAC/D;AACA,SAAO,CAAC,GAAG,mBAAmB,OAAO,QAAQ,QAAQ,CAAC,EAAE,KAAK;AAC/D;AAEA,SAAS,iCAAiC,OAAsB,OAA6C;AAC3G,QAAM,UAAU,IAAI,IAAI,KAAK;AAC7B,QAAM,MAAM,oBAAI,IAAY;AAC5B,aAAW,kBAAkB,MAAM,YAAY;AAC7C,QAAI,QAAQ,IAAI,eAAe,IAAI,GAAG;AACpC,iBAAW,MAAM,eAAe,SAAS;AACvC,YAAI,IAAI,EAAE;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AACA,aAAW,kBAAkB,MAAM,YAAY;AAC7C,QAAI,IAAI,QAAQ,KAAK;AACnB;AAAA,IACF;AACA,QAAI,CAAC,QAAQ,IAAI,eAAe,IAAI,KAAK,eAAe,KAAK,SAAS,KAAK,MAAM,KAAK,CAAC,SAAS,KAAK,SAAS,MAAM,KAAK,SAAS,eAAe,IAAI,KAAK,eAAe,KAAK,SAAS,IAAI,EAAE,GAAG;AAC9L,iBAAW,MAAM,eAAe,QAAQ,MAAM,GAAG,EAAE,GAAG;AACpD,YAAI,IAAI,EAAE;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AACA,SAAO,CAAC,GAAG,GAAG,EAAE,KAAK;AACvB;AAEA,SAAS,mBAAmB,OAAsB,QAA0B,SAA+C;AACzH,QAAM,MAAM,IAAI,IAAI,OAAO;AAC3B,QAAM,YAAY,IAAI,IAAI,MAAM,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,UAAU,KAAK,CAAU,CAAC;AACxF,aAAW,MAAM,QAAQ,MAAM,GAAG,GAAG,GAAG;AACtC,UAAM,QAAQ,UAAU,IAAI,EAAE;AAC9B,QAAI,CAAC,SAAS,yBAAyB,OAAO,MAAM,IAAI,MAAM;AAC5D;AAAA,IACF;AACA,eAAW,cAAc,MAAM,cAAc,aAAa;AACxD,YAAM,WAAW,UAAU,IAAI,UAAU;AACzC,UAAI,CAAC,UAAU;AACb;AAAA,MACF;AACA,UAAI,yBAAyB,UAAU,MAAM,KAAK,QAAQ,gCAAgC,UAAU,SAAS,KAAK,MAAM;AACtH,YAAI,IAAI,UAAU;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AACA,SAAO,CAAC,GAAG,GAAG;AAChB;AAEA,SAAS,WAAW,OAA2B,QAA0B,UAA6C;AACpH,QAAM,UAAyB,CAAC;AAChC,QAAM,eAAe,oBAAI,IAAY;AACrC,QAAM,aAAa,oBAAI,IAAI,CAAC,MAAM,gBAAgB,GAAG,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC;AACtF,QAAM,eAAe,gBAAgB,MAAM,QAAQ;AAEnD,WAAS,SAAS,gBAAgB,OAAO,QAAQ,MAAM,WAAW,MAAO,GAAG,MAAM,QAAQ;AAC1F,MAAI,OAAO,QAAQ,MAAM,UAAU;AACjC,iBAAa,IAAI,MAAM,QAAQ;AAAA,EACjC;AAEA,MAAI,MAAM,mBAAmB,OAAO,cAAc,iBAAiB,OAAO,YAAY;AACpF,aAAS,SAAS,yBAAyB,KAAK,MAAM,WAAW;AACjE,iBAAa,IAAI,OAAO,UAAU;AAAA,EACpC;AAEA,MAAI,MAAM,QAAQ,SAAS,OAAO,UAAU,GAAG;AAC7C,aAAS,SAAS,eAAe,KAAK,OAAO,UAAU;AACvD,iBAAa,IAAI,OAAO,UAAU;AAAA,EACpC;AAEA,QAAM,aAAa,SAAS,MAAM,WAAW;AAC7C,MAAI,WAAW,SAAS,KAAK,WAAW,MAAM,CAAC,UAAU,OAAO,cAAc,SAAS,KAAK,CAAC,GAAG;AAC9F,aAAS,SAAS,6BAA6B,KAAK,WAAW,KAAK,IAAI,CAAC;AACzE,eAAW,SAAS,YAAY;AAC9B,mBAAa,IAAI,KAAK;AAAA,IACxB;AAAA,EACF;AAEA,aAAW,UAAU,OAAO,SAAS;AACnC,QAAI,MAAM,QAAQ,SAAS,MAAM,KAAK,MAAM,mBAAmB,QAAQ;AACrE,eAAS,SAAS,gBAAgB,KAAK,MAAM;AAC7C,mBAAa,IAAI,MAAM;AAAA,IACzB,WAAW,OAAO,SAAS,KAAK,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,SAAS,KAAK,SAAS,MAAM,KAAK,OAAO,SAAS,IAAI,CAAC,GAAG;AAC9G,eAAS,SAAS,wBAAwB,IAAI,MAAM;AACpD,mBAAa,IAAI,MAAM;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,eAAe,OAAO,OAAO,OAAO,CAAC,UAAU,WAAW,IAAI,KAAK,KAAK,WAAW,IAAI,YAAY,KAAK,CAAC,CAAC;AAChH,aAAW,SAAS,cAAc;AAChC,iBAAa,IAAI,KAAK;AAAA,EACxB;AACA,WAAS,SAAS,iBAAiB,aAAa,SAAS,IAAI,aAAa,KAAK,IAAI,CAAC;AAEpF,QAAM,kBAAkB,OAAO,cAC5B,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,SAAS,IAAI,CAAC,EAC9C,OAAO,CAAC,SAAS,WAAW,IAAI,IAAI,CAAC;AACxC,aAAW,QAAQ,iBAAiB;AAClC,iBAAa,IAAI,IAAI;AAAA,EACvB;AACA,WAAS,SAAS,oBAAoB,gBAAgB,SAAS,IAAI,gBAAgB,KAAK,IAAI,CAAC;AAE7F,QAAM,sBAAsB,OAAO,cAChC,OAAO,CAAC,SAAS,MAAM,cAAc,cAAc,KAAK,CAAC,SAAS,SAAS,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC;AACnG,WAAS,SAAS,wBAAwB,KAAK,IAAI,KAAK,oBAAoB,SAAS,EAAE,GAAG,oBAAoB,KAAK,IAAI,CAAC;AAExH,QAAM,qBAAqB,6BAA6B,OAAO,MAAM;AACrE,WAAS,SAAS,uBAAuB,qBAAqB,KAAK,GAAG,KAAK,MAAM,qBAAqB,GAAG,CAAC,6BAA6B;AAEvI,QAAM,mBAAmB,yBAAyB,OAAO,MAAM;AAC/D,WAAS,SAAS,qBAAqB,mBAAmB,KAAK,GAAG,KAAK,MAAM,mBAAmB,GAAG,CAAC,gCAAgC;AAEpI,QAAM,gBAAgB,sBAAsB,OAAO,MAAM;AACzD,WAAS,SAAS,wBAAwB,cAAc,QAAQ,KAAK,GAAG,KAAK,MAAM,cAAc,QAAQ,GAAG,CAAC,iCAAiC;AAE9I,QAAM,wBAAwB,gCAAgC,OAAO,QAAQ;AAC7E,WAAS,SAAS,0BAA0B,wBAAwB,IAAI,GAAG,MAAM,IAAI,kBAAkB,QAAQ,EAAE;AAEjH,QAAM,gBAAgB,iBAAiB,OAAO,QAAQ;AACtD,WAAS,SAAS,sBAAsB,eAAe,GAAG,MAAM,IAAI,OAAO,MAAM,iBAAiB,EAAE;AAEpG,WAAS,SAAS,iBAAiB,qBAAqB,OAAO,QAAQ,GAAG,GAAG,MAAM,WAAW,mCAAmC;AACjI,WAAS,SAAS,oBAAoB,KAAK,IAAI,IAAI,MAAM,aAAa,EAAE,GAAG,UAAU,MAAM,cAAc,MAAM,EAAE;AACjH,WAAS,SAAS,mBAAmB,KAAK,IAAI,IAAI,MAAM,iBAAiB,CAAC,GAAG,GAAG,MAAM,cAAc,iBAAiB;AACrH,WAAS,SAAS,uBAAuB,wBAAwB,KAAK,GAAG,2BAA2B,KAAK,CAAC;AAE1G,QAAM,UAAU,yBAAyB,KAAK,IAAI,cAAc,QAAQ,SAAS,MAAM,uBAAuB,OAAO,MAAM;AAC3H,QAAM,QAAQ,KAAK,IAAI,GAAG,QAAQ,OAAO,CAAC,OAAO,WAAW,QAAQ,OAAO,OAAO,CAAC,IAAI,OAAO;AAC9F,QAAM,kBAAkB,UAAU,IAC9B,CAAC,GAAG,SAAS,EAAE,QAAQ,6BAA6B,OAAO,CAAC,SAAS,UAAU,wBAAwB,OAAO,cAAc,OAAO,EAAE,CAAC,IACtI;AACJ,SAAO;AAAA,IACL,QAAQ,MAAM;AAAA,IACd,UAAU,MAAM;AAAA,IAChB,aAAa,MAAM;AAAA,IACnB,MAAM,MAAM;AAAA,IACZ,OAAO,MAAM,OAAO,CAAC;AAAA,IACrB,YAAY,MAAM,+BAA+B,OAAO,QAAQ,UAAU,KAAK,GAAG,CAAC;AAAA,IACnF,cAAc,cAAc,CAAC,GAAG,YAAY,CAAC;AAAA,IAC7C,SAAS,gBAAgB,OAAO,CAAC,WAAW,OAAO,UAAU,CAAC,EAAE,KAAK,cAAc;AAAA,IACnF;AAAA,EACF;AACF;AAEA,SAAS,8BACP,YACA,QACA,UAC8B;AAC9B,MAAI,WAAW,WAAW,GAAG;AAC3B,WAAO;AAAA,EACT;AACA,QAAM,WAAW,WAAW,CAAC,GAAG,SAAS;AACzC,QAAM,cAAc,WAAW,CAAC,GAAG,SAAS;AAC5C,QAAM,oBAAoB,WAAW;AAAA,IAAO,CAAC,WAAW,UACtD,QAAQ,KAAK,uBAAuB,WAAW,UAAU,WAAW;AAAA,EACtE;AAEA,SAAO,WAAW,IAAI,CAAC,WAAW,UAAU;AAC1C,UAAM,iBAAiB,+BAA+B,UAAU,OAAO,QAAQ,UAAU,UAAU,KAAK;AACxG,UAAM,QAAQ,WAAW,IAAI,KAAK,IAAI,GAAG,UAAU,QAAQ,QAAQ,IAAI;AACvE,UAAM,aAAa,MAAM,wBAAwB,WAAW,kBAAkB,UAAU,IAAI,IAAI,QAAQ;AAAA,MACtG;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,GAAG,CAAC;AACL,UAAM,UAAyB;AAAA,MAC7B,GAAG,UAAU;AAAA,MACb;AAAA,QACE,QAAQ;AAAA,QACR,OAAO,MAAM,aAAa,GAAG;AAAA,QAC7B,UAAU,8BAA8B,UAAU,OAAO,YAAY,kBAAkB,MAAM;AAAA,MAC/F;AAAA,IACF;AACA,QAAI,UAAU,KAAK,kBAAkB,SAAS,GAAG;AAC/C,cAAQ,KAAK;AAAA,QACX,QAAQ;AAAA,QACR,OAAO,CAAC,KAAK,IAAI,IAAI,kBAAkB,SAAS,CAAC;AAAA,QACjD,UAAU,GAAG,kBAAkB,MAAM;AAAA,MACvC,CAAC;AAAA,IACH;AACA,WAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,MACA,SAAS,QAAQ,OAAO,CAAC,WAAW,OAAO,UAAU,CAAC,EAAE,KAAK,cAAc;AAAA,IAC7E;AAAA,EACF,CAAC;AACH;AAEA,SAAS,wBACP,WACA,YACA,SAQQ;AACR,MAAI,SAAS,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,UAAU,CAAC;AAChD,QAAM,UAAU,UAAU,QAAQ,KAAK,CAAC,WAAW,OAAO,WAAW,kBAAkB,OAAO,WAAW,uBAAuB;AAChI,QAAM,WAAW,QAAQ,WAAW,QAAQ;AAE5C,MAAI,2BAA2B,UAAU,KAAK,GAAG;AAC/C,aAAS,KAAK,IAAI,QAAQ,8BAA8B,QAAQ,iBAAiB,IAAI,OAAO,IAAI;AAAA,EAClG;AACA,MAAI,sBAAsB,UAAU,KAAK,KAAK,CAAC,SAAS;AACtD,aAAS,KAAK,IAAI,QAAQ,IAAI;AAAA,EAChC;AACA,MAAI,QAAQ,kBAAkB,SAAS,KAAK,CAAC,SAAS;AACpD,aAAS,KAAK,IAAI,QAAQ,KAAK,IAAI,MAAM,MAAM,QAAQ,kBAAkB,SAAS,IAAI,CAAC;AAAA,EACzF;AACA,MAAI,QAAQ,UAAU,KAAK,WAAW,KAAK,WAAW,MAAM,CAAC,SAAS;AACpE,aAAS,KAAK,IAAI,QAAQ,IAAI;AAAA,EAChC,WAAW,QAAQ,UAAU,KAAK,WAAW,KAAK,WAAW,MAAM,CAAC,SAAS;AAC3E,aAAS,KAAK,IAAI,QAAQ,IAAI;AAAA,EAChC;AACA,MAAI,QAAQ,OAAO,OAAO,UAAU,KAAK,sBAAsB,UAAU,OAAO,QAAQ,MAAM,IAAI,OAAO,CAAC,SAAS;AACjH,aAAS,KAAK,IAAI,QAAQ,IAAI;AAAA,EAChC;AACA,MAAI,QAAQ,QAAQ,GAAG;AACrB,aAAS,KAAK,IAAI,QAAQ,IAAI;AAAA,EAChC;AACA,MAAI,QAAQ,aAAa,aAAa,gCAAgC,UAAU,OAAO,QAAQ,QAAQ,IAAI,OAAO,CAAC,SAAS;AAC1H,aAAS,KAAK,IAAI,QAAQ,GAAG;AAAA,EAC/B;AACA,SAAO;AACT;AAEA,SAAS,uBAAuB,WAA8B,UAAkB,aAA8B;AAC5G,SAAO,UAAU,SAAS,KAAK,IAAI,aAAa,WAAW,EAAE,KAAK,UAAU,SAAS,WAAW;AAClG;AAEA,SAAS,8BAA8B,YAAmD;AACxF,SAAO,WAAW,KAAK,CAAC,cAAc,uBAAuB,UAAU,KAAK,CAAC;AAC/E;AAEA,SAAS,8BAA8B,OAA2B,YAAoB,kBAAkC;AACtH,QAAM,WAAW,uBAAuB,KAAK,IAAI,qBAAqB;AACtE,QAAM,YAAY,mBAAmB,IAAI,SAAS,gBAAgB,8BAA8B;AAChG,SAAO,GAAG,QAAQ,IAAI,MAAM,IAAI,kBAAkB,WAAW,QAAQ,CAAC,CAAC,GAAG,SAAS;AACrF;AAEA,SAAS,+BACP,OACA,QACA,UACA,OACQ;AACR,QAAM,WAAW,6BAA6B,OAAO,MAAM;AAC3D,QAAM,WAAW,6BAA6B,KAAK;AACnD,QAAM,eAAe,gCAAgC,OAAO,QAAQ;AACpE,QAAM,UAAU,yBAAyB,OAAO,MAAM;AACtD,QAAM,eAAe,4BAA4B,KAAK;AACtD,QAAM,kBAAkB,KAAK,IAAI,GAAG,QAAQ,GAAG;AAC/C,QAAM,aACJ,WAAW,OACX,WAAW,OACX,eAAe,OACf,UAAU,OACV,eAAe,OACf,kBAAkB;AACpB,QAAM,QAAQ,MAAM,mBAAmB,OAAO,cAAc,gBAAgB,MAAM,QAAQ,MAAM,OAAO,cAAc,MAAM,QAAQ,SAAS,OAAO,UAAU;AAC7J,SAAO,QAAQ,KAAK,IAAI,YAAY,uBAAuB,KAAK,IAAI,OAAO,IAAI,IAAI;AACrF;AAEA,SAAS,6BAA6B,OAA2B,QAAkC;AACjG,QAAM,aAAa,oBAAI,IAAI,CAAC,MAAM,gBAAgB,GAAG,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC;AACtF,MAAI,CAAC,OAAO,YAAY;AACtB,WAAO;AAAA,EACT;AACA,MAAI,MAAM,mBAAmB,OAAO,cAAc,MAAM,QAAQ,SAAS,OAAO,UAAU,KAAK,gBAAgB,MAAM,QAAQ,MAAM,OAAO,YAAY;AACpJ,WAAO;AAAA,EACT;AACA,QAAM,mBAAmB,sBAAsB,OAAO,MAAM;AAC5D,QAAM,gBAAgB,OAAO,cAAc,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,SAAS,IAAI,CAAC;AACzF,QAAM,mBAAmB,cAAc,WAAW,IAC9C,IACA,cAAc,OAAO,CAAC,SAAS,WAAW,IAAI,IAAI,CAAC,EAAE,SAAS,cAAc;AAChF,QAAM,iBAAiB,OAAO,QAAQ,KAAK,CAAC,WAAW,WAAW,IAAI,MAAM,CAAC,IACzE,MACA,OAAO,QAAQ,KAAK,CAAC,WAAW,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,SAAS,KAAK,SAAS,MAAM,KAAK,OAAO,SAAS,IAAI,CAAC,CAAC,IAC5G,OACA;AACN,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,gBAAgB,mBAAmB,OAAO,mBAAmB,IAAI,CAAC;AAChG;AAEA,SAAS,sBAAsB,OAA2B,QAAkC;AAC1F,MAAI,OAAO,OAAO,WAAW,GAAG;AAC9B,WAAO;AAAA,EACT;AACA,QAAM,aAAa,oBAAI,IAAI,CAAC,MAAM,gBAAgB,GAAG,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC;AACtF,QAAM,iBAAiB;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM,YAAY;AAAA,IAClB,MAAM,cAAc;AAAA,IACpB,MAAM,YAAY,KAAK,GAAG;AAAA,IAC1B,MAAM,cAAc,cAAc,KAAK,GAAG;AAAA,IAC1C,MAAM,iBAAiB;AAAA,IACvB,MAAM,YAAY;AAAA,EACpB,EAAE,KAAK,GAAG,EAAE,YAAY;AACxB,QAAM,UAAU,OAAO,OAAO;AAAA,IAAO,CAAC,UACpC,WAAW,IAAI,KAAK,KACpB,WAAW,IAAI,YAAY,KAAK,CAAC,KACjC,eAAe,SAAS,KAAK;AAAA,EAC/B;AACA,SAAO,QAAQ,SAAS,OAAO,OAAO;AACxC;AAEA,SAAS,sBACP,OACA,QACsG;AACtG,QAAM,WAAW,cAAc,OAAO,OAAO,IAAI,CAAC,UAAU,YAAY,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,MAAM,SAAS,CAAC,CAAC;AACnH,MAAI,SAAS,WAAW,GAAG;AACzB,WAAO,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,EAAE;AAAA,EAC9C;AACA,QAAM,aAAa,IAAI,IAAI,CAAC,MAAM,gBAAgB,GAAG,MAAM,SAAS,GAAG,MAAM,QAAQ,EAAE,QAAQ,CAAC,SAAS,SAAS,IAAI,EAAE,IAAI,WAAW,CAAC,CAAC;AACzI,QAAM,kBAAkB,IAAI,IAAI,SAAS;AAAA,IACvC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM,YAAY;AAAA,IAClB,MAAM,cAAc;AAAA,IACpB,MAAM,YAAY,KAAK,GAAG;AAAA,IAC1B,MAAM,cAAc,cAAc,KAAK,GAAG;AAAA,IAC1C,MAAM,iBAAiB;AAAA,IACvB,MAAM,YAAY;AAAA,EACpB,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,WAAW,CAAC;AAC7B,QAAM,UAAU,SAAS,OAAO,CAAC,SAAS,WAAW,IAAI,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC;AAC3F,QAAM,UAAU,SAAS,OAAO,CAAC,SAAS,CAAC,QAAQ,SAAS,IAAI,CAAC;AACjE,SAAO,EAAE,SAAS,SAAS,OAAO,QAAQ,SAAS,SAAS,OAAO;AACrE;AAEA,SAAS,yBAAyB,OAA2B,QAAkC;AAC7F,MAAI,OAAO,OAAO,WAAW,GAAG;AAC9B,WAAO;AAAA,EACT;AACA,QAAM,cAAc,SAAS;AAAA,IAC3B,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM,YAAY;AAAA,IAClB,MAAM,cAAc;AAAA,IACpB,MAAM,YAAY,KAAK,GAAG;AAAA,IAC1B,MAAM,cAAc,cAAc,KAAK,GAAG;AAAA,IAC1C,MAAM,iBAAiB;AAAA,IACvB,MAAM,YAAY;AAAA,EACpB,EAAE,KAAK,GAAG,CAAC;AACX,QAAM,eAAe,IAAI,IAAI,WAAW;AACxC,QAAM,WAAW,OAAO,OAAO,OAAO,CAAC,UAAU,aAAa,IAAI,KAAK,KAAK,aAAa,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,SAAS,OAAO,OAAO;AACzI,QAAM,WAAW,OAAO,cAAc,WAAW,IAC7C,IACA,OAAO,cAAc,OAAO,CAAC,SAAS,aAAa,IAAI,IAAI,CAAC,EAAE,SAAS,OAAO,cAAc;AAChG,SAAO,KAAK,IAAI,GAAG,WAAW,OAAO,WAAW,IAAI;AACtD;AAEA,SAAS,uBAAuB,OAA2B,QAAkC;AAC3F,QAAM,WAAW,IAAI,IAAI,OAAO,OAAO,IAAI,WAAW,CAAC;AACvD,QAAM,QAAQ,IAAI,IAAI,SAAS;AAAA,IAC7B,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM,YAAY;AAAA,IAClB,MAAM,cAAc;AAAA,IACpB,MAAM,YAAY,KAAK,GAAG;AAAA,IAC1B,MAAM,cAAc,cAAc,KAAK,GAAG;AAAA,IAC1C,MAAM,iBAAiB;AAAA,IACvB,MAAM,YAAY;AAAA,EACpB,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,WAAW,CAAC;AAC7B,MAAI,UAAU;AACd,MAAI,SAAS,IAAI,WAAW,KAAK,CAAC,MAAM,IAAI,WAAW,GAAG;AACxD,eAAW;AAAA,EACb;AACA,MAAI,SAAS,IAAI,WAAW,MAAM,MAAM,IAAI,WAAW,KAAK,MAAM,IAAI,aAAa,MAAM,CAAC,MAAM,IAAI,WAAW,GAAG;AAChH,eAAW;AAAA,EACb;AACA,MAAI,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,MAAM,IAAI,UAAU,GAAG;AAC/E,eAAW;AAAA,EACb;AACA,SAAO;AACT;AAEA,SAAS,6BAA6B,OAAmC;AACvE,MAAI,CAAC,uBAAuB,KAAK,GAAG;AAClC,WAAO;AAAA,EACT;AACA,MAAI,sBAAsB,KAAK,GAAG;AAChC,WAAO;AAAA,EACT;AACA,MAAI,CAAC,MAAM,aAAa,MAAM,SAAS,gBAAgB,MAAM,SAAS,cAAc;AAClF,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,gCAAgC,OAA2B,UAAkC;AACpG,MAAI,2BAA2B,KAAK,GAAG;AACrC,WAAO;AAAA,EACT;AACA,MAAI,+BAA+B,KAAK,GAAG;AACzC,WAAO;AAAA,EACT;AACA,MAAI,gBAAgB,QAAQ,GAAG,IAAI,MAAM,IAAI,GAAG;AAC9C,WAAO;AAAA,EACT;AACA,MAAI,MAAM,sBAAsB,kBAAkB,aAAa,WAAW;AACxE,WAAO;AAAA,EACT;AACA,SAAO,MAAM,sBAAsB,aAAa,OAAO;AACzD;AAEA,SAAS,4BAA4B,OAAmC;AACtE,SAAO,KAAK,IAAI,GAAG,OAAO,KAAK,KAAK,MAAM,cAAc,SAAS,CAAC,IAAI,CAAC;AACzE;AAEA,SAAS,wBAAwB,OAAmC;AAClE,MAAI,QAAQ;AACZ,MAAI,uBAAuB,KAAK,GAAG;AACjC,aAAS;AACT,aAAS,6BAA6B,MAAM,IAAI,KAAK;AAAA,EACvD;AACA,MAAI,eAAe,KAAK,GAAG;AACzB,aAAS;AAAA,EACX;AACA,MAAI,cAAc,KAAK,GAAG;AACxB,aAAS;AAAA,EACX;AACA,MAAI,qBAAqB,KAAK,GAAG;AAC/B,aAAS;AAAA,EACX;AACA,MAAI,YAAY,KAAK,GAAG;AACtB,aAAS;AAAA,EACX;AACA,SAAO;AACT;AAEA,SAAS,yBAAyB,OAAmC;AACnE,MAAI,UAAU;AACd,QAAM,OAAO,GAAG,MAAM,QAAQ,IAAI,MAAM,YAAY,EAAE,IAAI,MAAM,WAAW,EAAE,IAAI,MAAM,WAAW,GAAG,YAAY;AACjH,MAAI,KAAK,SAAS,cAAc,KAAK,MAAM,SAAS,WAAW,MAAM,GAAG;AACtE,eAAW;AAAA,EACb;AACA,MAAI,+DAA+D,KAAK,MAAM,WAAW,KAAK,CAAC,uBAAuB,KAAK,GAAG;AAC5H,eAAW;AAAA,EACb;AACA,MAAI,iFAAiF,KAAK,IAAI,GAAG;AAC/F,eAAW;AAAA,EACb;AACA,MAAI,2BAA2B,KAAK,GAAG;AACrC,eAAW;AAAA,EACb;AACA,MAAI,iDAAiD,KAAK,MAAM,SAAS,YAAY,CAAC,KAAK,CAAC,uBAAuB,KAAK,GAAG;AACzH,eAAW;AAAA,EACb;AACA,MAAI,sBAAsB,KAAK,GAAG;AAChC,eAAW;AAAA,EACb;AACA,SAAO;AACT;AAEA,SAAS,2BAA2B,OAAmC;AACrE,SAAO,uBAAuB,KAAK,IAC/B,GAAG,MAAM,IAAI,0CACb,GAAG,MAAM,IAAI;AACnB;AAEA,SAAS,wBAAwB,OAA2B,eAAkC,CAAC,GAAW;AACxG,QAAM,UAAU,aAAa,SAAS,IAAI,4BAA4B,aAAa,KAAK,IAAI,CAAC,KAAK;AAClG,SAAO,GAAG,MAAM,WAAW,kFAAkF,OAAO;AACtH;AAEA,SAAS,uBAAuB,OAAoC;AAClE,QAAM,OAAO,GAAG,MAAM,QAAQ,IAAI,MAAM,YAAY,EAAE,IAAI,MAAM,WAAW,EAAE,GAAG,YAAY;AAC5F,SAAO,CAAC,KAAK,SAAS,cAAc,KAClC,CAAC,MAAM,SAAS,WAAW,MAAM,KACjC,CAAC,MAAM,SAAS,WAAW,YAAY,KACvC,CAAC,4BAA4B,KAAK;AACtC;AAMA,SAAS,eAAe,OAAoC;AAC1D,QAAM,OAAO,GAAG,MAAM,WAAW,IAAI,MAAM,YAAY,EAAE,IAAI,MAAM,SAAS,KAAK,GAAG,CAAC;AACrF,SAAO,CAAC,SAAS,aAAa,aAAa,OAAO,EAAE,SAAS,MAAM,IAAI,KAAK,uDAAuD,KAAK,IAAI;AAC9I;AAEA,SAAS,qBAAqB,OAA2B,UAAkC;AACzF,MAAK,aAAa,aAAa,aAAa,aAAc,CAAC,uBAAuB,KAAK,GAAG;AACxF,WAAO;AAAA,EACT;AACA,MAAI,MAAM,SAAS,aAAa,MAAM,SAAS,YAAY;AACzD,WAAO;AAAA,EACT;AACA,MAAI,MAAM,SAAS,WAAW,YAAY,KAAK,MAAM,WAAW,GAAG;AACjE,WAAO;AAAA,EACT;AACA,MAAI,MAAM,SAAS,cAAc;AAC/B,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,qBAAqB,OAAoC;AAChE,SAAO,MAAM,SAAS,YAAY,uBAAuB,KAAK,KAAK,CAAC,sBAAsB,KAAK;AACjG;AAEA,SAAS,+BAA+B,OAAoC;AAC1E,SAAO,uBAAuB,KAAK,MACjC,CAAC,WAAW,cAAc,cAAc,UAAU,SAAS,aAAa,iBAAiB,uBAAuB,SAAS,cAAc,YAAY,EAAE,SAAS,MAAM,IAAI,KACxK,eAAe,KAAK,KACpB,qBAAqB,KAAK,KAC1B,YAAY,KAAK,KACjB,cAAc,KAAK;AAEvB;AAEA,SAAS,cAAc,OAAoC;AACzD,SAAO,uBAAuB,KAAK,KAAK,sBAAsB,KAAK,GAAG,MAAM,WAAW,IAAI,MAAM,YAAY,EAAE,EAAE;AACnH;AAEA,SAAS,YAAY,OAAoC;AACvD,SAAO,+DAA+D,KAAK,GAAG,MAAM,YAAY,EAAE,IAAI,MAAM,WAAW,EAAE;AAC3H;AAEA,SAAS,2BAA2B,OAAoC;AACtE,SAAO,CAAC,uBAAuB,KAAK,KAClC,MAAM,SAAS,gBACf,MAAM,SAAS,eACf,4BAA4B,KAAK;AACrC;AAEA,SAAS,4BAA4B,OAAoC;AACvE,QAAM,OAAO,GAAG,MAAM,QAAQ,IAAI,MAAM,WAAW,IAAI,MAAM,WAAW,EAAE,IAAI,MAAM,YAAY,EAAE,GAAG,YAAY;AACjH,SAAO,0BAA0B,KAAK,IAAI,KACxC,4FAA4F,KAAK,IAAI,KACrG,sBAAsB,KAAK,IAAI;AACnC;AAEA,SAAS,sBAAsB,OAAoC;AACjE,QAAM,OAAO,GAAG,MAAM,QAAQ,IAAI,MAAM,WAAW,IAAI,MAAM,YAAY,EAAE,GAAG,YAAY;AAC1F,SAAO,+EAA+E,KAAK,IAAI,KAC7F,sDAAsD,KAAK,MAAM,WAAW;AAChF;AAEA,SAAS,gBAAgB,OAA2B,QAAmC;AACrF,QAAM,WAAW,GAAG,MAAM,QAAQ,IAAI,MAAM,WAAW,IAAI,MAAM,QAAQ,KAAK,GAAG,CAAC,IAAI,MAAM,SAAS,KAAK,GAAG,CAAC,GAAG,YAAY;AAC7H,SAAO,OAAO,OAAO,KAAK,CAAC,UAAU,SAAS,SAAS,KAAK,CAAC;AAC/D;AAEA,SAAS,oBACP,QACA,YACA,UACQ;AACR,MAAI,aAAa,iBAAiB;AAChC,WAAO;AAAA,EACT;AACA,MAAI,aAAa,eAAe;AAC9B,WAAO;AAAA,EACT;AACA,MAAI,aAAa,SAAS;AACxB,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,IAAI,IAAI,OAAO,aAAa;AAC1C,QAAM,UAAU,0BACb,IAAI,CAAC,UAAU;AAAA,IACd,YAAY,KAAK;AAAA,IACjB,OAAO,KAAK,MAAM,OAAO,CAAC,SAAS,MAAM,IAAI,IAAI,CAAC,EAAE;AAAA,EACtD,EAAE,EACD,KAAK,CAAC,MAAM,UAAU,MAAM,QAAQ,KAAK,SAAS,KAAK,WAAW,cAAc,MAAM,UAAU,CAAC,EAAE,CAAC;AACvG,MAAI,WAAW,QAAQ,QAAQ,GAAG;AAChC,WAAO,QAAQ;AAAA,EACjB;AACA,QAAM,UAAU,WAAW,CAAC,GAAG;AAC/B,MAAI,YAAY,WAAW,YAAY,cAAc;AACnD,WAAO;AAAA,EACT;AACA,MAAI,YAAY,mBAAmB,YAAY,uBAAuB;AACpE,WAAO;AAAA,EACT;AACA,SAAO,aAAa,eAAe,wBAAwB;AAC7D;AAEA,SAAS,SAAS,OAAkC;AAClD,SAAO,cAAc,gBAAgB,KAAK,EACvC,IAAI,CAAC,SAAS,eAAe,IAAI,CAAC,EAClC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,EAChC,OAAO,CAAC,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,EACtC,QAAQ,CAAC,SAAS,cAAc,CAAC,MAAM,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC;AAChE;AAEA,SAAS,gBAAgB,OAAkC;AACzD,SAAO,MACJ,QAAQ,sBAAsB,OAAO,EACrC,QAAQ,yBAAyB,OAAO,EACxC,QAAQ,SAAS,GAAG,EACpB,QAAQ,sCAAsC,GAAG,EACjD,QAAQ,UAAU,GAAG,EACrB,MAAM,MAAM,EACZ,OAAO,OAAO;AACnB;AAEA,SAAS,eAAe,OAAuB;AAC7C,SAAO,MACJ,UAAU,MAAM,EAChB,QAAQ,oBAAoB,EAAE,EAC9B,YAAY,EACZ,QAAQ,cAAc,EAAE;AAC7B;AAEA,SAAS,gBAAgB,OAAuB;AAC9C,SAAO,SAAS,KAAK,EAAE,KAAK,GAAG;AACjC;AAEA,SAAS,eAAe,KAAa,QAA8C;AACjF,QAAM,WAAW,oBAAI,IAAY;AACjC,QAAM,aAAa,gBAAgB,GAAG;AACtC,MAAI,YAAY;AACd,aAAS,IAAI,UAAU;AAAA,EACzB;AACA,MAAI,OAAO,SAAS,GAAG;AACrB,aAAS,IAAI,OAAO,KAAK,GAAG,CAAC;AAC7B,aAAS,IAAI,OAAO,KAAK,EAAE,CAAC;AAC5B,aAAS,IAAI,OAAO,KAAK,GAAG,CAAC;AAC7B,aAAS,IAAI,OAAO,KAAK,GAAG,CAAC;AAAA,EAC/B;AACA,QAAM,gBAAgB,qBAAqB,MAAM;AACjD,MAAI,cAAc,SAAS,GAAG;AAC5B,aAAS,IAAI,cAAc,KAAK,GAAG,CAAC;AACpC,aAAS,IAAI,cAAc,KAAK,EAAE,CAAC;AAAA,EACrC;AACA,SAAO,cAAc,CAAC,GAAG,QAAQ,CAAC;AACpC;AAEA,SAAS,qBAAqB,QAA8C;AAC1E,MAAI,WAAW,CAAC,GAAG,MAAM;AACzB,SAAO,SAAS,SAAS,KAAK,mBAAmB,IAAI,SAAS,SAAS,SAAS,CAAC,KAAK,EAAE,GAAG;AACzF,eAAW,SAAS,MAAM,GAAG,EAAE;AAAA,EACjC;AACA,SAAO;AACT;AAEA,SAAS,YAAY,OAAuB;AAC1C,MAAI,MAAM,SAAS,KAAK,KAAK,MAAM,SAAS,GAAG;AAC7C,WAAO,GAAG,MAAM,MAAM,GAAG,EAAE,CAAC;AAAA,EAC9B;AACA,MAAI,MAAM,SAAS,MAAM,GAAG;AAC1B,WAAO,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AACA,MAAI,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,SAAS,IAAI,KAAK,MAAM,SAAS,GAAG;AACpE,WAAO,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AACA,SAAO;AACT;AAEA,SAAS,UAAU,OAAuB;AACxC,MAAI,MAAM,SAAS,GAAG,KAAK,MAAM,SAAS,GAAG;AAC3C,WAAO,GAAG,MAAM,MAAM,GAAG,EAAE,CAAC;AAAA,EAC9B;AACA,MAAI,MAAM,SAAS,GAAG,GAAG;AACvB,WAAO;AAAA,EACT;AACA,SAAO,GAAG,KAAK;AACjB;AAEA,SAAS,mBAAmB,MAAmC;AAC7D,UAAQ,MAAM;AAAA,IACZ,KAAK;AAAA,IACL,KAAK;AACH,aAAO,CAAC,OAAO,YAAY,SAAS,SAAS;AAAA,IAC/C,KAAK;AACH,aAAO,CAAC,cAAc,WAAW,OAAO;AAAA,IAC1C,KAAK;AAAA,IACL,KAAK;AACH,aAAO,CAAC,WAAW,YAAY,YAAY;AAAA,IAC7C,KAAK;AACH,aAAO,CAAC,cAAc,QAAQ,eAAe,UAAU;AAAA,IACzD,KAAK;AACH,aAAO,CAAC,SAAS,OAAO,UAAU,YAAY,SAAS;AAAA,IACzD,KAAK;AACH,aAAO,CAAC,YAAY,OAAO;AAAA,IAC7B,KAAK;AACH,aAAO,CAAC,UAAU,iBAAiB,SAAS;AAAA,IAC9C,KAAK;AACH,aAAO,CAAC,OAAO,eAAe,UAAU,UAAU;AAAA,IACpD,KAAK;AACH,aAAO,CAAC,aAAa,SAAS;AAAA,IAChC,KAAK;AACH,aAAO,CAAC,WAAW,WAAW;AAAA,IAChC;AACE,aAAO,CAAC,KAAK,YAAY,CAAC;AAAA,EAC9B;AACF;AAEA,SAAS,cAAc,MAAkC;AACvD,QAAM,OAAO,GAAG,KAAK,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC5C,SAAO,CAAC,SAAS,aAAa,aAAa,OAAO,EAAE,SAAS,KAAK,IAAI,KAAK,uDAAuD,KAAK,IAAI;AAC7I;AAEA,SAAS,WAAW,MAAkC;AACpD,SAAO,+DAA+D,KAAK,GAAG,KAAK,QAAQ,EAAE,IAAI,KAAK,IAAI,EAAE;AAC9G;AAEA,SAAS,oBAAoB,MAAkC;AAC7D,SAAO,KAAK,SAAS,YAAY,CAAC,gFAAgF,KAAK,GAAG,KAAK,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,QAAQ,EAAE,EAAE;AACrK;AAEA,SAAS,cAAc,OAAkC;AACvD,SAAO,OAAO,UAAU,eAAe,KAAK,qBAAqB,KAAK,IAClE,oBAAoB,KAAK,KAAK,CAAC,IAC/B,CAAC;AACP;AAEA,SAAS,gBAAgB,UAA6D;AACpF,QAAM,QAAQ,eAAe,QAAQ;AACrC,SAAO,MAAM,SAAS,IAAI,IAAI,IAAI,KAAK,IAAI;AAC7C;AAEA,SAAS,wBACP,OACA,QACA,UACS;AACT,MAAI,aAAa,WAAW;AAC1B,WAAO;AAAA,EACT;AACA,MAAI,CAAC,CAAC,UAAU,UAAU,WAAW,EAAE,SAAS,MAAM,IAAI,GAAG;AAC3D,WAAO;AAAA,EACT;AACA,QAAM,OAAO,MAAM,KAAK,YAAY;AACpC,SAAO,OAAO,OAAO,SAAS,IAAI,KAAK,OAAO,QAAQ,MAAM,YAAY,OAAO,eAAe,MAAM;AACtG;AAEA,SAAS,iBAAiB,OAA2B,UAAkC;AACrF,MAAI,aAAa,WAAW;AAC1B,WAAO,CAAC,WAAW,YAAY,cAAc,SAAS,aAAa,cAAc,SAAS,YAAY,YAAY,UAAU,SAAS,aAAa,aAAa,UAAU,iBAAiB,qBAAqB,EAAE,SAAS,MAAM,IAAI,IAChO,KACA;AAAA,EACN;AACA,QAAM,QAAQ,eAAe,QAAQ;AACrC,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AACA,QAAM,OAAO,MAAM,SAAS,MAAM,IAAI,IAAI,KAAK;AAC/C,MAAI,aAAa,aAAa,qBAAqB,KAAK,GAAG;AACzD,WAAO,OAAO;AAAA,EAChB;AACA,MAAI,aAAa,aAAa,eAAe,KAAK,GAAG;AACnD,WAAO,OAAO;AAAA,EAChB;AACA,SAAO;AACT;AAEA,SAAS,eAAe,MAAyB,QAAgB,SAAyB;AACxF,QAAM,cAAc;AAAA,IAClB,WAAW;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,qBAAqB;AAAA,EACvB;AACA,SAAO,OAAO,YAAY,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,SAAS,CAAC,IAAI,KAAK,KAAK,UAAU,CAAC,GAAG,CAAC;AAChG;AAEA,SAAS,kBAAkB,MAAiC;AAC1D,MAAI,CAAC,SAAS,cAAc,aAAa,cAAc,OAAO,EAAE,SAAS,KAAK,IAAI,GAAG;AACnF,WAAO;AAAA,EACT;AACA,MAAI,CAAC,WAAW,YAAY,SAAS,EAAE,SAAS,KAAK,IAAI,GAAG;AAC1D,WAAO;AAAA,EACT;AACA,MAAI,CAAC,cAAc,iBAAiB,SAAS,UAAU,EAAE,SAAS,KAAK,IAAI,GAAG;AAC5E,WAAO;AAAA,EACT;AACA,MAAI,CAAC,iBAAiB,uBAAuB,eAAe,UAAU,MAAM,EAAE,SAAS,KAAK,IAAI,GAAG;AACjG,WAAO;AAAA,EACT;AACA,MAAI,CAAC,WAAW,aAAa,eAAe,aAAa,YAAY,EAAE,SAAS,KAAK,IAAI,GAAG;AAC1F,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,eACP,MACA,UACA,eACmB;AACnB,QAAM,UAAoB,CAAC;AAC3B,MAAI,UAAU;AACd,QAAM,OAAO,oBAAI,IAAY,CAAC,KAAK,EAAE,CAAC;AACtC,WAAS,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG;AACzC,UAAM,aAAa,cAAc;AAAA,MAAK,CAAC,SACrC,KAAK,OAAO,QAAQ,OAAO,KAAK,SAAS,cAAc,KAAK,SAAS,gBAAgB,KAAK,SAAS,cAAc,KAAK,SAAS;AAAA,IACjI;AACA,QAAI,CAAC,cAAc,KAAK,IAAI,WAAW,IAAI,GAAG;AAC5C;AAAA,IACF;AACA,UAAM,SAAS,SAAS,IAAI,WAAW,IAAI;AAC3C,QAAI,CAAC,QAAQ;AACX;AAAA,IACF;AACA,YAAQ,KAAK,GAAG,OAAO,IAAI,IAAI,OAAO,IAAI,EAAE;AAC5C,SAAK,IAAI,OAAO,EAAE;AAClB,cAAU;AAAA,EACZ;AACA,SAAO;AACT;AAEA,SAAS,eAAe,aAAgC,MAAoC;AAC1F,QAAM,SAAS,GAAG,IAAI;AACtB,SAAO,YAAY,KAAK,CAAC,SAAS,KAAK,WAAW,MAAM,CAAC,GAAG,MAAM,OAAO,MAAM;AACjF;AAEA,SAAS,mBAAmB,UAAqD;AAC/E,MAAI,CAAC,UAAU;AACb,WAAO,CAAC;AAAA,EACV;AACA,QAAM,SAAmB,CAAC;AAC1B,sBAAoB,UAAU,QAAQ,GAAG,oBAAI,QAAgB,CAAC;AAC9D,SAAO;AACT;AAEA,SAAS,oBAAoB,OAAgB,QAAkB,OAAe,MAA6B;AACzG,MACE,QAAQ,iCACR,OAAO,UAAU,kCACjB,UAAU,QACV,UAAU,QACV;AACA;AAAA,EACF;AACA,MAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AACxF,WAAO,KAAK,qBAAqB,OAAO,KAAK,CAAC,CAAC;AAC/C;AAAA,EACF;AACA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,QAAI,KAAK,IAAI,KAAK,GAAG;AACnB;AAAA,IACF;AACA,SAAK,IAAI,KAAK;AACd,eAAW,QAAQ,MAAM,MAAM,GAAG,6BAA6B,GAAG;AAChE,0BAAoB,MAAM,QAAQ,QAAQ,GAAG,IAAI;AACjD,UAAI,OAAO,UAAU,gCAAgC;AACnD;AAAA,MACF;AAAA,IACF;AACA;AAAA,EACF;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,QAAI,KAAK,IAAI,KAAK,GAAG;AACnB;AAAA,IACF;AACA,SAAK,IAAI,KAAK;AACd,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAgC,EACvE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,KAAK,cAAc,KAAK,CAAC,EACnD,MAAM,GAAG,6BAA6B,GAAG;AAC1C,UAAI,mBAAmB,GAAG,GAAG;AAC3B;AAAA,MACF;AACA,aAAO,KAAK,qBAAqB,GAAG,CAAC;AACrC,0BAAoB,OAAO,QAAQ,QAAQ,GAAG,IAAI;AAClD,UAAI,OAAO,UAAU,gCAAgC;AACnD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,mBAAmB,KAAsB;AAChD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,SAAS,GAAG;AAChB;AAEA,SAAS,gBAAgB,MAA4C;AACnE,MAAI,KAAK,SAAS,WAAW,KAAK,SAAS,aAAa;AACtD,WAAO,CAAC;AAAA,EACV;AACA,SAAO;AAAA,IACL,eAAe,KAAK,UAAU,QAAQ,KAAK;AAAA,IAC3C,eAAe,KAAK,UAAU,MAAM,KAAK;AAAA,IACzC,eAAe,KAAK,UAAU,OAAO,KAAK;AAAA,IAC1C,KAAK;AAAA,EACP,EAAE,OAAO,OAAO;AAClB;AAEA,SAAS,2BAA2B,UAAsD;AACxF,SAAO,uBAAuB,UAAU,CAAC,iBAAiB,eAAe,SAAS,CAAC;AACrF;AAEA,SAAS,sBAAsB,UAAsD;AACnF,SAAO,uBAAuB,UAAU,CAAC,YAAY,WAAW,OAAO,CAAC;AAC1E;AAEA,SAAS,eAAe,UAAkC,KAAiC;AACzF,QAAM,QAAQ,WAAW,GAAG;AAC5B,SAAO,OAAO,UAAU,YAAY,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI;AACpE;AAEA,SAAS,uBAAuB,UAAkC,MAA6C;AAC7G,aAAW,OAAO,MAAM;AACtB,UAAM,QAAQ,eAAe,UAAU,GAAG;AAC1C,QAAI,OAAO;AACT,aAAO,qBAAqB,KAAK;AAAA,IACnC;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,qBAAqB,OAAuB;AACnD,QAAM,aAAa,MAAM,QAAQ,QAAQ,GAAG,EAAE,KAAK;AACnD,SAAO,WAAW,SAAS,sBACvB,GAAG,WAAW,MAAM,GAAG,mBAAmB,CAAC,mBAC3C;AACN;AAEA,SAAS,uBAAuB,WAA6D;AAC3F,SAAO,UAAU,KAAK,CAAC,SAAS,KAAK,SAAS,WAAW,GAAG;AAC9D;AAEA,SAAS,WAAW,MAAsB;AACxC,QAAM,aAAa,cAAc,IAAI;AACrC,QAAM,QAAQ,WAAW,MAAM,GAAG;AAClC,QAAM,IAAI;AACV,SAAO,MAAM,KAAK,GAAG,KAAK;AAC5B;AAEA,SAAS,iBAAiB,OAA6D;AACrF,QAAM,SAAS,oBAAI,IAAoB;AACvC,aAAW,QAAQ,OAAO;AACxB,WAAO,IAAI,KAAK,OAAO,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC;AAAA,EACxD;AACA,SAAO,OAAO,YAAY,CAAC,GAAG,OAAO,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,KAAK,cAAc,KAAK,CAAC,CAAC;AACtG;AAEA,SAAS,WAAW,OAAqC,MAAwE;AAC/H,QAAM,UAAU,oBAAI,IAAiC;AACrD,aAAW,QAAQ,OAAO;AACxB,UAAM,UAAU,QAAQ,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC;AAC5C,YAAQ,KAAK,IAAI;AACjB,YAAQ,IAAI,KAAK,IAAI,GAAG,OAAO;AAAA,EACjC;AACA,SAAO,IAAI,IAAI,CAAC,GAAG,QAAQ,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,MAAM,CAAC,KAAK,OAAO,KAAK,YAAY,CAAC,CAAU,CAAC;AACzG;AAEA,SAAS,YAAY,KAA+B,MAAc,IAAkB;AAClF,MAAI,CAAC,QAAQ,WAAW,IAAI,IAAI,KAAK,oBAAoB,IAAI,KAAK,qBAAqB,IAAI,GAAG;AAC5F;AAAA,EACF;AACA,QAAM,UAAU,IAAI,IAAI,IAAI,KAAK,oBAAI,IAAY;AACjD,MAAI,QAAQ,QAAQ,6BAA6B;AAC/C;AAAA,EACF;AACA,UAAQ,IAAI,EAAE;AACd,MAAI,IAAI,MAAM,OAAO;AACvB;AAEA,SAAS,SAAS,SAAwB,QAAgB,OAAe,UAAwB;AAC/F,MAAI,SAAS,GAAG;AACd;AAAA,EACF;AACA,UAAQ,KAAK,EAAE,QAAQ,OAAO,MAAM,OAAO,CAAC,GAAG,SAAS,CAAC;AAC3D;AAEA,SAAS,kBAAkB,MAAyB,OAAkC;AACpF,SAAO,MAAM,QAAQ,KAAK,SAAS,KAAK,KAAK,cAAc,MAAM,IAAI,KAAK,KAAK,SAAS,cAAc,MAAM,QAAQ;AACtH;AAEA,SAAS,eAAe,MAAmB,OAA4B;AACrE,SAAO,MAAM,QAAQ,KAAK,SAAS,KAAK,OAAO,cAAc,MAAM,MAAM;AAC3E;AAEA,SAAS,eAAe,MAA0B,OAAmC;AACnF,SAAO,KAAK,SAAS,cAAc,MAAM,QAAQ;AACnD;AAEA,SAAS,aAAa,MAAyB,OAAkC;AAC/E,SAAO,KAAK,GAAG,cAAc,MAAM,EAAE;AACvC;AAEA,SAAS,cAAc,QAA8C;AACnE,SAAO,CAAC,GAAG,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,EAAE,OAAO,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;AAC1H;AAEA,SAAS,oBAAoB,MAAuB;AAClD,SAAO,qBAAqB,IAAI,IAAI,KAAK,eAAe,KAAK,IAAI;AACnE;AAEA,SAAS,qBAAqB,OAAwB;AACpD,QAAM,SAAS,SAAS,KAAK;AAC7B,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO;AAAA,EACT;AACA,MAAI,OAAO,SAAS,IAAI;AACtB,WAAO;AAAA,EACT;AACA,SAAO,OAAO,MAAM,mBAAmB;AACzC;AAEA,SAAS,IAAI,QAAmC;AAC9C,SAAO,OAAO,OAAO,CAAC,OAAO,UAAU,QAAQ,OAAO,CAAC;AACzD;AAEA,SAAS,MAAM,OAAe,SAAS,GAAW;AAChD,QAAM,SAAS,MAAM;AACrB,SAAO,KAAK,MAAM,QAAQ,MAAM,IAAI;AACtC;AAEA,SAAS,iBAAyB;AAChC,SAAO,OAAO,gBAAgB,cAAc,YAAY,IAAI,IAAI,KAAK,IAAI;AAC3E;AAEA,SAAS,OAAO,OAAkE;AAChF,SAAO,QAAQ,KAAK;AACtB;AAEA,SAAS,QAAQ,OAAoE;AACnF,SAAO,QAAQ,KAAK;AACtB;AAEA,SAAS,uBAA2D,QAAW,UAAoB;AACjG,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG,OAAO,YAAY,OAAO,QAAQ,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS,CAAC;AAAA,EAC3F;AACF;;;ACxyDO,IAAM,yBAAyB;AAQ/B,IAAM,aAAa;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIO,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAkHA,IAAM,mBAA6C;AAAA,EACjD,WAAW;AAAA,EACX,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AAAA,EACX,WAAW;AAAA,EACX,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AAAA,EACb,eAAe;AAAA,EACf,WAAW;AAAA,EACX,UAAU;AAAA,EACV,KAAK;AAAA,EACL,MAAM;AAAA,EACN,WAAW;AAAA,EACX,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAU;AAAA,EACV,WAAW;AAAA,EACX,OAAO;AAAA,EACP,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,OAAO;AACT;AAEO,SAAS,cAAc,MAAsB;AAClD,SAAO,KAAK,QAAQ,OAAO,GAAG,EAAE,QAAQ,QAAQ,GAAG,EAAE,QAAQ,SAAS,EAAE;AAC1E;AAEO,SAAS,gBAAgB,OAAwB;AACtD,MAAI,UAAU,QAAQ,OAAO,UAAU,UAAU;AAC/C,WAAO,KAAK,UAAU,KAAK;AAAA,EAC7B;AAEA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,IAAI,MAAM,IAAI,CAAC,SAAS,gBAAgB,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,EACjE;AAEA,QAAM,UAAU,OAAO,QAAQ,KAAgC,EAC5D,OAAO,CAAC,CAAC,EAAE,UAAU,MAAM,eAAe,MAAS,EACnD,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,KAAK,cAAc,KAAK,CAAC;AAEtD,SAAO,IAAI,QACR,IAAI,CAAC,CAAC,KAAK,UAAU,MAAM,GAAG,KAAK,UAAU,GAAG,CAAC,IAAI,gBAAgB,UAAU,CAAC,EAAE,EAClF,KAAK,GAAG,CAAC;AACd;AAEO,SAAS,WAAW,OAAuB;AAChD,MAAI,OAAO;AAEX,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AACpD,YAAQ,MAAM,WAAW,KAAK;AAC9B,WAAO,KAAK,KAAK,MAAM,QAAU;AAAA,EACnC;AAEA,UAAQ,SAAS,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAClD;AAEO,SAAS,aAAa,OAAkC;AAC7D,QAAM,SAAS,iBAAiB,MAAM,IAAI;AAC1C,QAAM,OAAO,MAAM,KAAK,KAAK;AAC7B,QAAM,iBAAiB,MAAM,OAAO,cAAc,MAAM,IAAI,IAAI;AAEhE,MAAI,gBAAgB;AAClB,WAAO,GAAG,MAAM,IAAI,cAAc,IAAI,IAAI;AAAA,EAC5C;AAEA,MAAI,MAAM,WAAW;AACnB,WAAO,GAAG,MAAM,IAAI,IAAI,IAAI,WAAW,MAAM,SAAS,CAAC;AAAA,EACzD;AAEA,SAAO,GAAG,MAAM,IAAI,IAAI;AAC1B;AAEO,SAAS,aAAa,MAAwB,MAAc,IAAoB;AACrF,SAAO,QAAQ,KAAK,YAAY,CAAC,IAAI,WAAW,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;AAC1E;AAEO,SAAS,mBAAmB,MAAc,SAAiB,WAAW,IAAY;AACvF,SAAO,QAAQ,KAAK,YAAY,CAAC,IAAI,WAAW,GAAG,IAAI,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;AACnF;AAEO,SAAS,qBACd,MACA,aACA,aAAyC,SAC3B;AACd,QAAM,WAAyB;AAAA,IAC7B,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF;AAEA,MAAI,aAAa;AACf,WAAO,EAAE,GAAG,UAAU,YAAY;AAAA,EACpC;AAEA,SAAO;AACT;AAEO,SAAS,mBAAmB,YAAmD;AACpF,SAAO,IAAI,aAAa,UAAU;AACpC;AAEO,IAAM,eAAN,MAAmB;AAAA,EACf;AAAA,EACA,SAAS,oBAAI,IAA+B;AAAA,EAC5C,SAAS,oBAAI,IAA+B;AAAA,EAC5C,eAAe,oBAAI,IAAqC;AAAA,EACjE,aAAa;AAAA,EACb,kBAA0C,CAAC;AAAA,EAE3C,YAAY,YAAqC;AAC/C,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,aAAa,WAAyB;AACpC,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,iBAAiB,MAAc,SAAuB;AACpD,SAAK,kBAAkB;AAAA,MACrB,GAAG,KAAK;AAAA,MACR,CAAC,IAAI,GAAG;AAAA,IACV;AAAA,EACF;AAAA,EAEA,QAAQ,MAA4C;AAClD,UAAM,iBAAiB,cAAc,IAAI;AACzC,UAAM,WAAW,KAAK,OAAO,IAAI,eAAe,EAAE;AAElD,QAAI,CAAC,UAAU;AACb,WAAK,OAAO,IAAI,eAAe,IAAI,cAAc;AACjD,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,UAAU,UAAU,cAAc;AACjD,SAAK,OAAO,IAAI,OAAO,IAAI,MAAM;AACjC,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,MAA+F;AACrG,UAAM,iBAAiB,cAAc;AAAA,MACnC,GAAG;AAAA,MACH,IAAI,KAAK,MAAM,aAAa,KAAK,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IAC3D,CAAC;AACD,UAAM,WAAW,KAAK,OAAO,IAAI,eAAe,EAAE;AAElD,QAAI,CAAC,UAAU;AACb,WAAK,OAAO,IAAI,eAAe,IAAI,cAAc;AACjD,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,UAAU,UAAU,cAAc;AACjD,SAAK,OAAO,IAAI,OAAO,IAAI,MAAM;AACjC,WAAO;AAAA,EACT;AAAA,EAEA,cAAc,YAA8D;AAC1E,UAAM,WAAW,KAAK,aAAa,IAAI,WAAW,EAAE;AAEpD,QAAI,UAAU;AACZ,aAAO;AAAA,IACT;AAEA,SAAK,aAAa,IAAI,WAAW,IAAI,UAAU;AAC/C,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,YAAoC;AAC1C,WAAO,oBAAoB;AAAA,MACzB,YAAY,KAAK;AAAA,MACjB,OAAO,CAAC,GAAG,KAAK,OAAO,OAAO,CAAC;AAAA,MAC/B,OAAO,CAAC,GAAG,KAAK,OAAO,OAAO,CAAC;AAAA,MAC/B,aAAa,CAAC,GAAG,KAAK,aAAa,OAAO,CAAC;AAAA,MAC3C,WAAW,KAAK;AAAA,MAChB,gBAAgB,KAAK;AAAA,MACrB;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAYO,SAAS,oBAAoB,OAAgD;AAClF,QAAM,QAAQ,CAAC,GAAG,MAAM,KAAK,EAAE,IAAI,aAAa,EAAE,KAAK,YAAY;AACnE,QAAM,QAAQ,CAAC,GAAG,MAAM,KAAK,EAAE,IAAI,aAAa,EAAE,KAAKA,aAAY;AACnE,QAAM,cAAc,CAAC,GAAI,MAAM,eAAe,CAAC,CAAE,EAAE,KAAK,kBAAkB;AAC1E,QAAM,UAAU,aAAa,OAAO,KAAK;AACzC,QAAM,oBAAoB;AAAA,IACxB,gBAAgB;AAAA,MACd,YAAY,MAAM;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,QAAM,WAAkC;AAAA,IACtC,aAAa;AAAA,IACb;AAAA,IACA,WAAW,MAAM,aAAa;AAAA,IAC9B,WAAW,MAAM;AAAA,IACjB,WAAW,MAAM;AAAA,IACjB,gBAAgB,MAAM,kBAAkB,CAAC;AAAA,EAC3C;AAEA,QAAM,uBACJ,MAAM,eAAe,SAAY,WAAW,EAAE,GAAG,UAAU,YAAY,MAAM,WAAW;AAE1F,SAAO;AAAA,IACL,SAAS;AAAA,IACT,YAAY,MAAM;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,EACZ;AACF;AAEO,SAAS,aACd,OACA,OACc;AACd,QAAM,gBAAqD,CAAC;AAC5D,QAAM,gBAA6D,CAAC;AACpE,QAAM,yBAAmD,CAAC;AAC1D,QAAM,0BAAoD,CAAC;AAC3D,QAAM,yBAAmD,CAAC;AAE1D,aAAW,QAAQ,OAAO;AACxB,mBAAe,eAAe,KAAK,MAAM,KAAK,EAAE;AAAA,EAClD;AAEA,aAAW,QAAQ,OAAO;AACxB,mBAAe,eAAe,KAAK,MAAM,KAAK,EAAE;AAChD,oBAAgB,yBAAyB,KAAK,MAAM,KAAK,EAAE;AAC3D,oBAAgB,wBAAwB,KAAK,IAAI,KAAK,EAAE;AACxD,oBAAgB,wBAAwB,GAAG,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE;AAAA,EAC9E;AAEA,SAAO;AAAA,IACL,eAAe,UAAU,aAAa;AAAA,IACtC,eAAe,UAAU,aAAa;AAAA,IACtC,wBAAwB,WAAW,sBAAsB;AAAA,IACzD,yBAAyB,WAAW,uBAAuB;AAAA,IAC3D,wBAAwB,WAAW,sBAAsB;AAAA,EAC3D;AACF;AAEO,SAAS,eAAe,OAA8B;AAC3D,QAAM,cAAc,gBAAgB,MAAM,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;AACxE,QAAM,cAAc,gBAAgB,MAAM,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;AAExE,SAAO;AAAA,IACL,eAAe,MAAM,WAAW,IAAI;AAAA,IACpC,UAAU,MAAM,SAAS,SAAS;AAAA,IAClC,UAAU,MAAM,MAAM,MAAM,GAAG,cAAc,KAAK,WAAW,MAAM,EAAE;AAAA,IACrE,UAAU,MAAM,MAAM,MAAM,GAAG,cAAc,KAAK,WAAW,MAAM,EAAE;AAAA,IACrE,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACxC,SAAS,MAAM,SAAS,iBAAiB;AAAA,EAC3C,EAAE,KAAK,IAAI;AACb;AAEO,SAAS,QAAQ,OAAsB,IAA2C;AACvF,SAAO,MAAM,MAAM,KAAK,CAAC,SAAS,KAAK,OAAO,EAAE;AAClD;AAEO,SAAS,QAAQ,OAAsB,IAA2C;AACvF,SAAO,MAAM,MAAM,KAAK,CAAC,SAAS,KAAK,OAAO,EAAE;AAClD;AAIA,SAAS,cAAc,MAA4C;AACjE,QAAM,aAAgC;AAAA,IACpC,IAAI,KAAK;AAAA,IACT,MAAM,KAAK;AAAA,IACX,MAAM,KAAK;AAAA,EACb;AAEA,SAAOC,wBAAuB,YAAY;AAAA,IACxC,MAAM,KAAK,OAAO,cAAc,KAAK,IAAI,IAAI;AAAA,IAC7C,SAAS,KAAK;AAAA,IACd,MAAM,KAAK,OAAO,cAAc,KAAK,IAAI,IAAI;AAAA,IAC7C,UAAU,KAAK;AAAA,EACjB,CAAC;AACH;AAEA,SAAS,cAAc,MAA4C;AACjE,QAAM,aAAgC;AAAA,IACpC,IAAI,KAAK;AAAA,IACT,MAAM,KAAK;AAAA,IACX,MAAM,KAAK;AAAA,IACX,IAAI,KAAK;AAAA,EACX;AAEA,SAAOA,wBAAuB,YAAY;AAAA,IACxC,UAAU,KAAK,UAAU,IAAI,CAAC,UAAU;AAAA,MACtC,GAAG;AAAA,MACH,MAAM,KAAK,OAAO,cAAc,KAAK,IAAI,IAAI;AAAA,IAC/C,EAAE;AAAA,IACF,UAAU,KAAK;AAAA,EACjB,CAAC;AACH;AAEA,SAAS,cAAc,MAA8B;AACnD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,MAAM,cAAc,KAAK,IAAI;AAAA,EAC/B;AACF;AAEA,SAAS,UAAU,MAAyB,OAA6C;AACvF,QAAM,SAA4B;AAAA,IAChC,GAAG;AAAA,IACH,UAAU,gBAAgB,KAAK,UAAU,MAAM,QAAQ;AAAA,EACzD;AAEA,SAAOA,wBAAuB,QAAQ;AAAA,IACpC,MAAM,KAAK,QAAQ,MAAM;AAAA,IACzB,MAAM,KAAK,QAAQ,MAAM;AAAA,IACzB,SAAS,KAAK,WAAW,MAAM;AAAA,EACjC,CAAC;AACH;AAEA,SAAS,UAAU,MAAyB,OAA6C;AACvF,QAAM,WAAW,eAAe,CAAC,GAAI,KAAK,YAAY,CAAC,GAAI,GAAI,MAAM,YAAY,CAAC,CAAE,CAAC;AACrF,QAAM,SAA4B;AAAA,IAChC,GAAG;AAAA,IACH,UAAU,gBAAgB,KAAK,UAAU,MAAM,QAAQ;AAAA,EACzD;AAEA,SAAOA,wBAAuB,QAAQ;AAAA,IACpC,UAAU,SAAS,SAAS,IAAI,WAAW;AAAA,EAC7C,CAAC;AACH;AAEA,SAAS,gBACP,MACA,OACwB;AACxB,MAAI,CAAC,QAAQ,CAAC,OAAO;AACnB,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,GAAI,QAAQ,CAAC;AAAA,IACb,GAAI,SAAS,CAAC;AAAA,EAChB;AACF;AAEA,SAAS,eAAe,UAA4D;AAClF,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,UAA0B,CAAC;AAEjC,aAAW,QAAQ,UAAU;AAC3B,UAAM,MAAM,gBAAgB,IAAI;AAEhC,QAAI,CAAC,KAAK,IAAI,GAAG,GAAG;AAClB,WAAK,IAAI,GAAG;AACZ,cAAQ,KAAK,IAAI;AAAA,IACnB;AAAA,EACF;AAEA,SAAO,QAAQ,KAAK,CAAC,MAAM,UAAU,gBAAgB,IAAI,EAAE,cAAc,gBAAgB,KAAK,CAAC,CAAC;AAClG;AAEA,SAAS,eACP,OACA,KACA,OACM;AACN,QAAM,SAAS,MAAM,GAAG,KAAK,CAAC;AAC9B,SAAO,KAAK,KAAK;AACjB,QAAM,GAAG,IAAI;AACf;AAEA,SAAS,gBAAgB,OAAiC,KAAa,OAAqB;AAC1F,QAAM,SAAS,MAAM,GAAG,KAAK,CAAC;AAC9B,SAAO,KAAK,KAAK;AACjB,QAAM,GAAG,IAAI;AACf;AAEA,SAAS,UACP,OACuC;AACvC,QAAM,gBAAgB,OAAO,QAAQ,KAAK,EACvC,IAAI,CAAC,CAAC,KAAK,MAAM,MAAM,CAAC,KAAK,CAAC,GAAI,MAAmB,EAAE,KAAK,CAAC,CAAU,EACvE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,KAAK,cAAc,KAAK,CAAC;AAEtD,SAAO,OAAO,YAAY,aAAa;AACzC;AAEA,SAAS,WAAW,OAAoE;AACtF,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,KAAK,EACjB,IAAI,CAAC,CAAC,KAAK,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAU,EACzD,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,KAAK,cAAc,KAAK,CAAC;AAAA,EACxD;AACF;AAEA,SAAS,gBAAgB,QAAmC;AAC1D,QAAM,SAAS,oBAAI,IAAoB;AAEvC,aAAW,SAAS,QAAQ;AAC1B,WAAO,IAAI,QAAQ,OAAO,IAAI,KAAK,KAAK,KAAK,CAAC;AAAA,EAChD;AAEA,SAAO,CAAC,GAAG,OAAO,QAAQ,CAAC,EACxB,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,KAAK,cAAc,KAAK,CAAC,EACnD,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,GAAG,KAAK,IAAI,KAAK,EAAE,EAC3C,KAAK,IAAI;AACd;AAEA,SAAS,aAAa,MAAyB,OAAkC;AAC/E,SAAO,KAAK,GAAG,cAAc,MAAM,EAAE;AACvC;AAEA,SAASD,cAAa,MAAyB,OAAkC;AAC/E,SAAO,KAAK,GAAG,cAAc,MAAM,EAAE;AACvC;AAEA,SAAS,mBACP,MACA,OACQ;AACR,SAAO,KAAK,GAAG,cAAc,MAAM,EAAE;AACvC;AAEA,SAASC,wBAA2D,QAAW,UAAoB;AACjG,QAAM,UAAU,OAAO,QAAQ,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS;AAClF,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG,OAAO,YAAY,OAAO;AAAA,EAC/B;AACF;","names":["compareEdges","withOptionalProperties"]}
1
+ {"version":3,"sources":["../src/semantic-index.ts","../src/index.ts"],"sourcesContent":["import {\n normalizePath,\n stableHash,\n stableStringify,\n type JsonObject,\n type NodeType,\n type RelationshipType,\n type SoftwareGraph,\n type SoftwareGraphEdge,\n type SoftwareGraphNode,\n} from \"./index\";\n\nexport const SEMANTIC_INDEX_VERSION = \"1.0.1\";\n\nexport type SearchCategory =\n | \"concept\"\n | \"symbol\"\n | \"feature\"\n | \"configuration\"\n | \"environment\"\n | \"route\"\n | \"entrypoint\"\n | \"repository\";\n\nexport interface SemanticIndexRelationshipSummary {\n readonly incoming: Record<string, number>;\n readonly outgoing: Record<string, number>;\n readonly degree: number;\n readonly neighborIds: readonly string[];\n readonly neighborNames: readonly string[];\n}\n\nexport interface SemanticIndexEntry {\n readonly stableId: string;\n readonly displayName: string;\n readonly normalizedName: string;\n readonly kind: NodeType;\n readonly module?: string | undefined;\n readonly package?: string | undefined;\n readonly namespace?: string | undefined;\n readonly framework?: string | undefined;\n readonly relationships: SemanticIndexRelationshipSummary;\n readonly aliases: readonly string[];\n readonly keywords: readonly string[];\n readonly filePath?: string | undefined;\n readonly folderPath?: string | undefined;\n readonly parentChain: readonly string[];\n readonly documentation?: string | undefined;\n readonly comments?: string | undefined;\n readonly importance: number;\n readonly usageFrequency: number;\n readonly architectureLayer: string;\n}\n\nexport interface RepositoryVocabularyTerm {\n readonly term: string;\n readonly frequency: number;\n readonly nodeIds: readonly string[];\n readonly kinds: readonly NodeType[];\n}\n\nexport interface SemanticIndexStatistics {\n readonly entries: number;\n readonly aliases: number;\n readonly keywords: number;\n readonly vocabulary: number;\n readonly graphHash: string;\n}\n\nexport interface SemanticIndex {\n readonly version: string;\n readonly graphVersion: string;\n readonly graphHash: string;\n readonly repository: {\n readonly name: string;\n readonly root: string;\n readonly packageName?: string | undefined;\n };\n readonly entries: readonly SemanticIndexEntry[];\n readonly entryIds: readonly string[];\n readonly invertedIndex: Record<string, readonly string[]>;\n readonly vocabulary: readonly RepositoryVocabularyTerm[];\n readonly metadata: {\n readonly generatedAt: string;\n readonly deterministicHash: string;\n readonly statistics: SemanticIndexStatistics;\n };\n}\n\nexport interface NormalizedIntent {\n readonly raw: string;\n readonly normalized: string;\n readonly tokens: readonly string[];\n readonly phrases: readonly string[];\n readonly expandedTerms: readonly string[];\n}\n\nexport interface ScoreReason {\n readonly factor: string;\n readonly score: number;\n readonly evidence: string;\n}\n\nexport interface SemanticCandidate {\n readonly nodeId: string;\n readonly stableId: string;\n readonly displayName: string;\n readonly kind: NodeType;\n readonly score: number;\n readonly confidence: number;\n readonly matchedTerms: readonly string[];\n readonly reasons: readonly ScoreReason[];\n readonly entry: SemanticIndexEntry;\n}\n\nexport interface SemanticSearchResult {\n readonly query: string;\n readonly category: SearchCategory;\n readonly intent: NormalizedIntent;\n readonly matchedConcepts: readonly string[];\n readonly candidates: readonly SemanticCandidate[];\n readonly confidence: number;\n readonly recommendedCapability: string;\n readonly evidence: readonly string[];\n readonly latencyMs: number;\n}\n\nexport interface SearchOptions {\n readonly category?: SearchCategory | undefined;\n readonly limit?: number | undefined;\n readonly kinds?: readonly NodeType[] | undefined;\n readonly packageScope?: string | undefined;\n}\n\nconst STOP_WORDS = new Set([\n \"a\",\n \"an\",\n \"and\",\n \"are\",\n \"as\",\n \"at\",\n \"be\",\n \"by\",\n \"for\",\n \"from\",\n \"how\",\n \"i\",\n \"in\",\n \"into\",\n \"is\",\n \"it\",\n \"of\",\n \"on\",\n \"or\",\n \"that\",\n \"the\",\n \"this\",\n \"to\",\n \"use\",\n \"uses\",\n \"what\",\n \"when\",\n \"where\",\n \"which\",\n \"who\",\n \"with\",\n]);\n\nconst FRAMEWORK_SUFFIXES = new Set([\n \"app\",\n \"application\",\n \"client\",\n \"config\",\n \"configuration\",\n \"controller\",\n \"dto\",\n \"entity\",\n \"factory\",\n \"guard\",\n \"handler\",\n \"hook\",\n \"interceptor\",\n \"middleware\",\n \"module\",\n \"pipe\",\n \"provider\",\n \"repository\",\n \"resolver\",\n \"route\",\n \"schema\",\n \"service\",\n \"store\",\n \"table\",\n \"type\",\n]);\n\nconst CATEGORY_TYPES: Record<SearchCategory, readonly NodeType[]> = {\n concept: [],\n symbol: [\"Module\", \"Function\", \"Method\", \"Class\", \"Interface\", \"TypeAlias\", \"Enum\", \"Field\", \"Service\", \"Provider\", \"Controller\", \"Repository\", \"Resource\", \"Model\", \"Route\"],\n feature: [\"Route\", \"Controller\", \"Service\", \"Provider\", \"Module\", \"Package\", \"Repository\", \"Model\", \"Resource\", \"Class\", \"Interface\", \"TypeAlias\", \"Function\", \"Method\", \"Operation\", \"Configuration\", \"EnvironmentVariable\", \"Guard\", \"Permission\", \"Middleware\"],\n configuration: [\"Configuration\", \"EnvironmentVariable\", \"BuildTarget\", \"Script\", \"Task\"],\n environment: [\"EnvironmentVariable\"],\n route: [\"Route\", \"Operation\", \"Controller\"],\n entrypoint: [\"Route\", \"Operation\", \"Controller\", \"Function\", \"Method\", \"Module\", \"Script\", \"Task\", \"Application\"],\n repository: [\"Workspace\", \"Application\", \"Package\", \"Module\", \"Framework\", \"Dependency\", \"Configuration\"],\n};\n\nconst RELATIONSHIP_CAPABILITIES: readonly {\n readonly capability: string;\n readonly terms: readonly string[];\n}[] = [\n { capability: \"RequestTrace\", terms: [\"route\", \"request\", \"endpoint\", \"api\", \"handler\", \"controller\", \"login\", \"logout\"] },\n { capability: \"ConfigurationUsage\", terms: [\"config\", \"configuration\", \"setting\", \"environment\", \"env\", \"secret\"] },\n { capability: \"EnvironmentUsage\", terms: [\"env\", \"environment\", \"secret\", \"variable\"] },\n { capability: \"AuthenticationFlow\", terms: [\"auth\", \"authentication\", \"login\", \"signin\", \"jwt\", \"session\", \"token\"] },\n { capability: \"AuthorizationFlow\", terms: [\"authorization\", \"permission\", \"guard\", \"role\", \"policy\", \"authorize\"] },\n { capability: \"ImpactAnalysis\", terms: [\"remove\", \"delete\", \"change\", \"break\", \"impact\", \"depends\", \"dependent\"] },\n { capability: \"DependencyAnalysis\", terms: [\"dependency\", \"depends\", \"imports\", \"uses\", \"injects\", \"providers\"] },\n { capability: \"FeatureTouchpoints\", terms: [\"feature\", \"owner\", \"touchpoint\", \"where\", \"find\", \"locate\"] },\n];\n\nconst SEMANTIC_EXPANSIONS: Record<string, readonly string[]> = {\n api: [\"route\", \"endpoint\", \"operation\", \"controller\"],\n auth: [\"authentication\", \"authorize\", \"authorization\", \"identity\", \"jwt\", \"login\", \"session\", \"signin\", \"token\"],\n authentication: [\"auth\", \"identity\", \"jwt\", \"login\", \"session\", \"signin\", \"token\"],\n authorize: [\"authorization\", \"permission\", \"guard\"],\n authorization: [\"authorize\", \"permission\", \"guard\", \"role\", \"policy\"],\n average: [\"averages\", \"aggregate\", \"aggregation\", \"mean\", \"statistics\"],\n averages: [\"average\", \"aggregate\", \"aggregation\", \"mean\", \"statistics\"],\n batch: [\"bulk\", \"group\", \"job\", \"pipeline\", \"data\"],\n bulk: [\"batch\", \"group\", \"job\", \"pipeline\", \"data\"],\n config: [\"configuration\", \"setting\", \"settings\"],\n configuration: [\"config\", \"setting\", \"settings\"],\n controller: [\"handler\", \"route\", \"endpoint\"],\n data: [\"resource\", \"payload\", \"record\", \"model\"],\n database: [\"db\", \"repository\", \"persistence\", \"prisma\", \"table\"],\n db: [\"database\", \"repository\", \"persistence\", \"table\"],\n duration: [\"time\", \"period\", \"interval\", \"sleep\", \"threshold\"],\n endpoint: [\"api\", \"route\", \"operation\"],\n env: [\"environment\", \"variable\", \"secret\", \"configuration\"],\n environment: [\"env\", \"variable\", \"secret\", \"configuration\"],\n fhir: [\"resource\", \"healthcare\"],\n handler: [\"controller\", \"route\", \"endpoint\"],\n identity: [\"auth\", \"authentication\", \"user\", \"session\"],\n jwt: [\"auth\", \"authentication\", \"token\", \"session\"],\n login: [\"auth\", \"authentication\", \"signin\", \"session\", \"jwt\"],\n notification: [\"notifications\", \"alert\", \"event\", \"message\"],\n notifications: [\"notification\", \"alert\", \"event\", \"message\"],\n observation: [\"observations\", \"signal\", \"metric\", \"measurement\", \"statistic\", \"fhir\"],\n observations: [\"observation\", \"signal\", \"metric\", \"measurement\", \"statistic\", \"fhir\"],\n patient: [\"resident\", \"user\", \"subject\"],\n permission: [\"authorization\", \"authorize\", \"guard\", \"role\"],\n plan: [\"definition\", \"resource\", \"fhir\"],\n plandefinition: [\"plan\", \"definition\", \"resource\", \"fhir\"],\n provider: [\"service\", \"injectable\", \"dependency\"],\n repo: [\"repository\", \"persistence\", \"database\"],\n repository: [\"repo\", \"persistence\", \"database\"],\n resident: [\"patient\", \"user\", \"subject\"],\n route: [\"api\", \"endpoint\", \"operation\", \"handler\"],\n service: [\"provider\", \"injectable\", \"dependency\"],\n session: [\"auth\", \"authentication\", \"login\", \"signin\", \"jwt\"],\n signin: [\"auth\", \"authentication\", \"login\", \"session\"],\n sleep: [\"duration\", \"threshold\", \"thresholds\", \"statistic\", \"statistics\", \"observation\"],\n signal: [\"signals\", \"metric\", \"measurement\", \"event\"],\n signals: [\"signal\", \"metric\", \"measurement\", \"event\"],\n statistic: [\"statistics\", \"average\", \"aggregate\"],\n statistics: [\"statistic\", \"average\", \"aggregate\"],\n threshold: [\"thresholds\", \"limit\", \"configuration\", \"setting\"],\n thresholds: [\"threshold\", \"limit\", \"configuration\", \"setting\"],\n token: [\"jwt\", \"auth\", \"authentication\", \"session\"],\n};\n\nconst SEMANTIC_METADATA_DEPTH_LIMIT = 3;\nconst SEMANTIC_METADATA_ARRAY_LIMIT = 12;\nconst SEMANTIC_METADATA_ENTRY_LIMIT = 24;\nconst SEMANTIC_METADATA_VALUES_LIMIT = 48;\nconst SEMANTIC_TEXT_LIMIT = 240;\nconst SEMANTIC_ALIAS_SOURCE_LIMIT = 16;\nconst SEMANTIC_ALIAS_LIMIT = 20;\nconst SEMANTIC_KEYWORD_LIMIT = 24;\nconst SEMANTIC_INVERTED_IDS_LIMIT = 160;\nconst SEMANTIC_VOCABULARY_IDS_LIMIT = 50;\n\nconst SEMANTIC_NOISE_TERMS = new Set([\n \"0\",\n \"0s\",\n \"1\",\n \"1s\",\n \"2\",\n \"2s\",\n \"3\",\n \"3s\",\n \"4\",\n \"4s\",\n \"abstract\",\n \"abstracts\",\n \"active\",\n \"actives\",\n \"anies\",\n \"any\",\n \"async\",\n \"asyncs\",\n \"boolean\",\n \"booleans\",\n \"false\",\n \"falses\",\n \"number\",\n \"numbers\",\n \"parameter\",\n \"parameters\",\n \"static\",\n \"statics\",\n \"string\",\n \"strings\",\n \"true\",\n \"trues\",\n \"typeparameter\",\n \"typeparameters\",\n]);\n\nconst REPOSITORY_LOCAL_KIND_BOOSTS: Partial<Record<NodeType, number>> = {\n Service: 112,\n Controller: 92,\n Repository: 72,\n Route: 68,\n Operation: 64,\n Method: 62,\n Module: 58,\n Configuration: 58,\n Model: 56,\n Interface: 54,\n TypeAlias: 54,\n Class: 50,\n Function: 48,\n EnvironmentVariable: 44,\n Provider: 42,\n};\n\nconst EXECUTABLE_CODE_KINDS = new Set<NodeType>([\"Function\", \"Method\", \"Operation\"]);\nconst EXECUTABLE_ACTION_TERMS = new Set([\n \"add\",\n \"apply\",\n \"build\",\n \"calculate\",\n \"check\",\n \"compute\",\n \"convert\",\n \"create\",\n \"delete\",\n \"fetch\",\n \"find\",\n \"generate\",\n \"get\",\n \"handle\",\n \"load\",\n \"map\",\n \"parse\",\n \"persist\",\n \"read\",\n \"resolve\",\n \"save\",\n \"set\",\n \"trace\",\n \"transform\",\n \"update\",\n \"validate\",\n \"write\",\n]);\nconst EXECUTABLE_QUERY_TERMS = new Set([\"code\", \"codes\", \"function\", \"functions\", \"method\", \"methods\"]);\nconst LOCATION_QUERY_TERMS = new Set([\n \"defined\",\n \"definition\",\n \"implemented\",\n \"implementation\",\n \"mapping\",\n \"mappings\",\n \"parameter\",\n \"parameters\",\n \"param\",\n \"params\",\n \"type\",\n \"types\",\n \"utility\",\n \"utilities\",\n \"util\",\n \"utils\",\n]);\nconst LOCATION_DOMAIN_NOISE_TERMS = new Set([\n \"code\",\n \"defined\",\n \"definition\",\n \"implemented\",\n \"implementation\",\n \"mapping\",\n \"mappings\",\n \"parameter\",\n \"parameters\",\n \"param\",\n \"params\",\n \"service\",\n \"services\",\n \"type\",\n \"types\",\n \"utility\",\n \"utilities\",\n \"util\",\n \"utils\",\n]);\nconst DEFINITION_KINDS = new Set<NodeType>([\"Module\", \"Class\", \"Interface\", \"TypeAlias\", \"Enum\", \"Model\", \"Field\", \"Resource\"]);\n\nconst FRAMEWORK_PACKAGE_PATTERN = /@nestjs\\/|@medplum\\/|next\\/dist|react\\/|typescript\\/lib|@types\\/|@babel\\/|@typescript-eslint\\/|tslib|rxjs|zone\\.js/i;\n\nexport function createSemanticIndex(graph: SoftwareGraph): SemanticIndex {\n const nodeById = new Map(graph.nodes.map((node) => [node.id, node] as const));\n const incoming = groupEdges(graph.edges, \"to\");\n const outgoing = groupEdges(graph.edges, \"from\");\n const entries = graph.nodes.map((node) => createEntry(graph, node, nodeById, incoming, outgoing)).sort(compareEntries);\n const invertedIndex = buildInvertedIndex(entries);\n const vocabulary = buildVocabulary(entries);\n const statistics: SemanticIndexStatistics = {\n entries: entries.length,\n aliases: sum(entries.map((entry) => entry.aliases.length)),\n keywords: sum(entries.map((entry) => entry.keywords.length)),\n vocabulary: vocabulary.length,\n graphHash: graph.metadata.deterministicHash,\n };\n const indexWithoutMetadata = {\n version: SEMANTIC_INDEX_VERSION,\n graphVersion: graph.version,\n graphHash: graph.metadata.deterministicHash,\n repository: {\n name: graph.repository.name,\n root: graph.repository.root,\n packageName: graph.repository.packageName,\n },\n entries,\n entryIds: entries.map((entry) => entry.stableId),\n invertedIndex,\n vocabulary,\n metadata: {\n generatedAt: \"1970-01-01T00:00:00.000Z\",\n deterministicHash: \"\",\n statistics,\n },\n } satisfies SemanticIndex;\n const deterministicHash = hashSemanticIndex(indexWithoutMetadata);\n\n return {\n ...indexWithoutMetadata,\n metadata: {\n ...indexWithoutMetadata.metadata,\n deterministicHash,\n },\n };\n}\n\nfunction hashSemanticIndex(index: Omit<SemanticIndex, \"metadata\"> & { readonly metadata: SemanticIndex[\"metadata\"] }): string {\n const entryHashes = index.entries.map((entry) => stableHash(stableStringify(entry))).sort();\n const invertedHashes = Object.entries(index.invertedIndex)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([term, ids]) => stableHash(stableStringify({ term, ids })));\n const vocabularyHashes = index.vocabulary\n .map((term) => stableHash(stableStringify(term)))\n .sort();\n\n return stableHash(stableStringify({\n version: index.version,\n graphVersion: index.graphVersion,\n graphHash: index.graphHash,\n repository: index.repository,\n entryIds: index.entryIds,\n entries: {\n count: entryHashes.length,\n hashes: entryHashes,\n },\n invertedIndex: {\n count: invertedHashes.length,\n hashes: invertedHashes,\n },\n vocabulary: {\n count: vocabularyHashes.length,\n hashes: vocabularyHashes,\n },\n metadata: {\n generatedAt: index.metadata.generatedAt,\n statistics: index.metadata.statistics,\n },\n }));\n}\n\nexport function validateSemanticIndex(index: SemanticIndex, graph?: SoftwareGraph): readonly string[] {\n const issues: string[] = [];\n if (index.version !== SEMANTIC_INDEX_VERSION) {\n issues.push(`Unsupported semantic index version ${index.version}.`);\n }\n if (graph && index.graphHash !== graph.metadata.deterministicHash) {\n issues.push(\"Semantic index graph hash does not match Software Graph hash.\");\n }\n const seen = new Set<string>();\n for (const entry of index.entries) {\n if (seen.has(entry.stableId)) {\n issues.push(`Duplicate semantic index entry ${entry.stableId}.`);\n }\n seen.add(entry.stableId);\n }\n for (const [term, ids] of Object.entries(index.invertedIndex)) {\n for (const id of ids) {\n if (!seen.has(id)) {\n issues.push(`Inverted index term \"${term}\" references missing entry ${id}.`);\n }\n }\n }\n return issues.sort();\n}\n\nexport function normalizeIntent(input: string): NormalizedIntent {\n const raw = input.trim();\n const tokens = tokenize(raw);\n const phrases = phraseVariants(raw, tokens);\n const expandedTerms = uniqueStrings([\n ...tokens,\n ...phrases,\n ...tokens.flatMap(expansionsFor),\n ...tokens.map(singularize),\n ...tokens.map(pluralize),\n ]);\n\n return {\n raw,\n normalized: normalizePhrase(raw),\n tokens,\n phrases,\n expandedTerms,\n };\n}\n\nexport function resolveIntent(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n const startedAt = performanceNow();\n const category = options.category ?? \"concept\";\n const intent = normalizeIntent(query);\n const candidates = rankCandidates(index, intent, {\n ...options,\n category,\n });\n const confidence = candidates[0]?.confidence ?? 0;\n const matchedConcepts = uniqueStrings(candidates.flatMap((candidate) => candidate.matchedTerms)).slice(0, 20);\n\n return {\n query,\n category,\n intent,\n matchedConcepts,\n candidates,\n confidence,\n recommendedCapability: recommendCapability(intent, candidates, category),\n evidence: candidates.slice(0, 5).map((candidate) =>\n `${candidate.displayName} (${candidate.kind}) matched ${candidate.matchedTerms.join(\", \") || \"graph context\"} with score ${candidate.score.toFixed(2)}.`,\n ),\n latencyMs: round(performanceNow() - startedAt, 3),\n };\n}\n\nexport function findConcept(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, { ...options, category: \"concept\" });\n}\n\nexport function findSymbol(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, { ...options, category: \"symbol\", kinds: options.kinds ?? CATEGORY_TYPES.symbol });\n}\n\nexport function findFeature(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, { ...options, category: \"feature\", kinds: options.kinds ?? CATEGORY_TYPES.feature });\n}\n\nexport function findConfiguration(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, {\n ...options,\n category: \"configuration\",\n kinds: options.kinds ?? CATEGORY_TYPES.configuration,\n });\n}\n\nexport function findEnvironment(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, { ...options, category: \"environment\", kinds: options.kinds ?? CATEGORY_TYPES.environment });\n}\n\nexport function findRoute(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, { ...options, category: \"route\", kinds: options.kinds ?? CATEGORY_TYPES.route });\n}\n\nexport function findEntryPoint(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, { ...options, category: \"entrypoint\", kinds: options.kinds ?? CATEGORY_TYPES.entrypoint });\n}\n\nexport function findRepositoryConcept(index: SemanticIndex, query: string, options: SearchOptions = {}): SemanticSearchResult {\n return resolveIntent(index, query, { ...options, category: \"repository\", kinds: options.kinds ?? CATEGORY_TYPES.repository });\n}\n\nfunction createEntry(\n graph: SoftwareGraph,\n node: SoftwareGraphNode,\n nodeById: ReadonlyMap<string, SoftwareGraphNode>,\n incoming: ReadonlyMap<string, readonly SoftwareGraphEdge[]>,\n outgoing: ReadonlyMap<string, readonly SoftwareGraphEdge[]>,\n): SemanticIndexEntry {\n const incomingEdges = incoming.get(node.id) ?? [];\n const outgoingEdges = outgoing.get(node.id) ?? [];\n const neighbors = uniqueStrings([\n ...incomingEdges.map((edge) => edge.from),\n ...outgoingEdges.map((edge) => edge.to),\n ]);\n const neighborNodes = neighbors.map((id) => nodeById.get(id)).filter(isNode);\n const parentChain = parentChainFor(node, nodeById, incomingEdges);\n const aliasSource = aliasSourceValues(graph, node, neighborNodes, parentChain);\n const aliases = generateAliases(aliasSource, node);\n const keywords = generateKeywords(aliasSource, node);\n const degree = incomingEdges.length + outgoingEdges.length;\n\n return withOptionalProperties({\n stableId: node.id,\n displayName: node.name,\n normalizedName: normalizePhrase(node.name),\n kind: node.type,\n relationships: {\n incoming: countEdgesByType(incomingEdges),\n outgoing: countEdgesByType(outgoingEdges),\n degree,\n neighborIds: neighbors,\n neighborNames: uniqueStrings(neighborNodes.map((neighbor) => neighbor.name)),\n },\n aliases,\n keywords,\n parentChain,\n importance: nodeImportance(node, degree, incomingEdges.length),\n usageFrequency: incomingEdges.length,\n architectureLayer: architectureLayer(node),\n }, {\n module: containingName(parentChain, \"Module\"),\n package: node.package ?? stringMetadata(node.metadata, \"package\") ?? stringMetadata(node.metadata, \"packageName\"),\n namespace: stringMetadata(node.metadata, \"namespace\"),\n framework: stringMetadata(node.metadata, \"framework\") ?? frameworkFromNeighbors(neighborNodes),\n filePath: node.file ? normalizePath(node.file) : undefined,\n folderPath: node.file ? folderPath(node.file) : undefined,\n documentation: deterministicDocumentation(node.metadata),\n comments: deterministicComments(node.metadata),\n });\n}\n\nfunction aliasSourceValues(\n graph: SoftwareGraph,\n node: SoftwareGraphNode,\n neighbors: readonly SoftwareGraphNode[],\n parentChain: readonly string[],\n): readonly string[] {\n const metadataValues = metadataTextValues(node.metadata);\n const routeValues = routeTextValues(node);\n const envValues = node.type === \"EnvironmentVariable\" ? [node.name, node.id.replace(/^env:/, \"\")] : [];\n\n return uniqueStrings([\n node.id,\n node.name,\n node.file ?? \"\",\n node.package ?? \"\",\n ...parentChain,\n ...routeValues,\n ...envValues,\n ...neighbors.slice(0, 16).map((neighbor) => neighbor.name),\n ...neighbors.slice(0, 16).map((neighbor) => neighbor.id),\n ...metadataValues,\n ].filter(Boolean)).slice(0, SEMANTIC_ALIAS_SOURCE_LIMIT);\n}\n\nfunction generateAliases(values: readonly string[], node: SoftwareGraphNode): readonly string[] {\n const aliases = new Set<string>();\n const primaryTokens = new Set(tokenize(node.name));\n for (const value of values) {\n const tokens = tokenize(value);\n const normalized = normalizePhrase(value);\n if (normalized) {\n aliases.add(normalized);\n }\n if (tokens.length > 0) {\n aliases.add(tokens.join(\" \"));\n aliases.add(tokens.join(\"\"));\n aliases.add(tokens.join(\"-\"));\n aliases.add(tokens.join(\"_\"));\n const withoutSuffix = stripFrameworkSuffix(tokens);\n if (withoutSuffix.length > 0 && withoutSuffix.length !== tokens.length) {\n aliases.add(withoutSuffix.join(\" \"));\n aliases.add(withoutSuffix.join(\"\"));\n }\n for (const token of tokens) {\n if (isSemanticNoiseTerm(token)) {\n continue;\n }\n aliases.add(token);\n aliases.add(singularize(token));\n aliases.add(pluralize(token));\n if (primaryTokens.has(token)) {\n for (const expansion of expansionsFor(token)) {\n aliases.add(expansion);\n }\n }\n }\n }\n }\n\n for (const typeAlias of aliasesForNodeType(node.type)) {\n aliases.add(typeAlias);\n }\n if (isDtoLikeNode(node)) {\n aliases.add(\"dto\");\n aliases.add(\"data transfer object\");\n aliases.add(\"contract\");\n aliases.add(\"payload\");\n }\n if (isTestNode(node)) {\n aliases.add(\"test\");\n aliases.add(\"spec\");\n aliases.add(\"coverage\");\n }\n if (isFeatureModuleNode(node)) {\n aliases.add(\"feature\");\n aliases.add(\"feature module\");\n }\n\n return uniqueStrings([...aliases]\n .filter((alias) => alias.length > 1)\n .filter((alias) => !isNoisySemanticAlias(alias)))\n .slice(0, SEMANTIC_ALIAS_LIMIT);\n}\n\nfunction generateKeywords(values: readonly string[], node: SoftwareGraphNode): readonly string[] {\n const keywords = new Set<string>();\n for (const value of values) {\n for (const token of tokenize(value)) {\n if (isSemanticNoiseTerm(token)) {\n continue;\n }\n keywords.add(token);\n keywords.add(singularize(token));\n }\n }\n keywords.add(node.type.toLowerCase());\n for (const alias of aliasesForNodeType(node.type)) {\n keywords.add(alias);\n }\n if (isDtoLikeNode(node)) {\n keywords.add(\"dto\");\n keywords.add(\"contract\");\n keywords.add(\"payload\");\n }\n if (isTestNode(node)) {\n keywords.add(\"test\");\n keywords.add(\"spec\");\n }\n if (isFeatureModuleNode(node)) {\n keywords.add(\"feature\");\n }\n return uniqueStrings([...keywords]\n .filter((keyword) => keyword.length > 1)\n .filter((keyword) => !isSemanticNoiseTerm(keyword)))\n .slice(0, SEMANTIC_KEYWORD_LIMIT);\n}\n\nfunction buildInvertedIndex(entries: readonly SemanticIndexEntry[]): Record<string, readonly string[]> {\n const inverted = new Map<string, Set<string>>();\n for (const entry of entries) {\n for (const term of uniqueStrings([entry.normalizedName, ...entry.aliases, ...entry.keywords])) {\n addInverted(inverted, term, entry.stableId);\n for (const token of tokenize(term)) {\n addInverted(inverted, token, entry.stableId);\n }\n }\n }\n\n return Object.fromEntries(\n [...inverted.entries()]\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([term, ids]) => [term, [...ids].sort()] as const),\n );\n}\n\nfunction buildVocabulary(entries: readonly SemanticIndexEntry[]): readonly RepositoryVocabularyTerm[] {\n const terms = new Map<string, { count: number; nodeIds: Set<string>; kinds: Set<NodeType> }>();\n for (const entry of entries) {\n for (const term of uniqueStrings([...entry.keywords, ...entry.aliases.filter((alias) => !alias.includes(\" \"))])) {\n if (term.length < 2 || STOP_WORDS.has(term)) {\n continue;\n }\n if (isSemanticNoiseTerm(term)) {\n continue;\n }\n const current = terms.get(term) ?? { count: 0, nodeIds: new Set<string>(), kinds: new Set<NodeType>() };\n current.count += 1;\n if (current.nodeIds.size < SEMANTIC_VOCABULARY_IDS_LIMIT) {\n current.nodeIds.add(entry.stableId);\n }\n current.kinds.add(entry.kind);\n terms.set(term, current);\n }\n }\n\n return [...terms.entries()]\n .map(([term, value]) => ({\n term,\n frequency: value.count,\n nodeIds: [...value.nodeIds].sort(),\n kinds: [...value.kinds].sort(),\n }))\n .sort((left, right) => right.frequency - left.frequency || left.term.localeCompare(right.term));\n}\n\nfunction rankCandidates(\n index: SemanticIndex,\n intent: NormalizedIntent,\n options: SearchOptions & { readonly category: SearchCategory },\n): readonly SemanticCandidate[] {\n const candidateIds = candidateIdsFor(index, intent);\n const entryById = new Map(index.entries.map((entry) => [entry.stableId, entry] as const));\n const kinds = options.kinds?.length ? new Set(options.kinds) : categoryTypeSet(options.category);\n const candidates = candidateIds\n .map((id) => entryById.get(id))\n .filter(isEntry)\n .filter((entry) => includeEntryForCategory(entry, intent, options.category))\n .filter((entry) => !kinds || kinds.has(entry.kind))\n .filter((entry) => !options.packageScope || entry.package === options.packageScope || entry.filePath?.startsWith(options.packageScope))\n .map((entry) => scoreEntry(entry, intent, options.category))\n .filter((candidate) => candidate.score > 0)\n .sort(compareCandidates);\n\n return calibrateCandidateConfidences(candidates, intent, options.category).slice(0, options.limit ?? 20);\n}\n\nfunction candidateIdsFor(index: SemanticIndex, intent: NormalizedIntent): readonly string[] {\n const ids = new Set<string>();\n const terms = uniqueStrings([intent.normalized, ...intent.phrases, ...intent.tokens, ...intent.expandedTerms]);\n for (const term of terms) {\n for (const id of index.invertedIndex[term] ?? []) {\n ids.add(id);\n }\n }\n for (const id of repositoryVocabularyCandidateIds(index, terms)) {\n ids.add(id);\n }\n\n for (const id of priorityFuzzyCandidateIds(index, intent)) {\n ids.add(id);\n }\n\n const fuzzyIds = index.entries\n .filter((entry) => fuzzyEntryMatch(entry, intent))\n .map((entry) => entry.stableId)\n .sort();\n\n if (ids.size > 0) {\n for (const id of fuzzyIds.slice(0, 250)) {\n ids.add(id);\n }\n return [...expandCandidateIds(index, intent, [...ids])].sort();\n }\n return [...expandCandidateIds(index, intent, fuzzyIds)].sort();\n}\n\nfunction priorityFuzzyCandidateIds(index: SemanticIndex, intent: NormalizedIntent): readonly string[] {\n const queryTerms = new Set(intent.tokens.map(singularize).flatMap((term) => relatedLocationTerms(term)));\n const queryCompact = compactTokenString(intent.raw);\n return index.entries\n .filter((entry) => {\n const nameTerms = tokenize(entry.displayName).map(singularize).filter((term) => term.length > 1);\n const meaningfulNameTerms = nameTerms.filter((term) => ![\"src\", \"ts\"].includes(term));\n if (meaningfulNameTerms.length > 0 && meaningfulNameTerms.every((term) => queryTerms.has(term))) {\n return true;\n }\n const compactName = compactTokenString(entry.displayName);\n return compactName.length >= 6 && queryCompact.includes(compactName);\n })\n .map((entry) => entry.stableId)\n .sort();\n}\n\nfunction repositoryVocabularyCandidateIds(index: SemanticIndex, terms: readonly string[]): readonly string[] {\n const termSet = new Set(terms);\n const ids = new Set<string>();\n for (const vocabularyTerm of index.vocabulary) {\n if (termSet.has(vocabularyTerm.term)) {\n for (const id of vocabularyTerm.nodeIds) {\n ids.add(id);\n }\n }\n }\n for (const vocabularyTerm of index.vocabulary) {\n if (ids.size >= 300) {\n break;\n }\n if (!termSet.has(vocabularyTerm.term) && vocabularyTerm.term.length > 3 && terms.some((term) => term.length > 3 && (term.includes(vocabularyTerm.term) || vocabularyTerm.term.includes(term)))) {\n for (const id of vocabularyTerm.nodeIds.slice(0, 20)) {\n ids.add(id);\n }\n }\n }\n return [...ids].sort();\n}\n\nfunction expandCandidateIds(index: SemanticIndex, intent: NormalizedIntent, seedIds: readonly string[]): readonly string[] {\n const ids = new Set(seedIds);\n const entryById = new Map(index.entries.map((entry) => [entry.stableId, entry] as const));\n for (const id of seedIds.slice(0, 300)) {\n const entry = entryById.get(id);\n if (!entry || semanticFeatureAgreement(entry, intent) < 0.35) {\n continue;\n }\n for (const neighborId of entry.relationships.neighborIds) {\n const neighbor = entryById.get(neighborId);\n if (!neighbor) {\n continue;\n }\n if (semanticFeatureAgreement(neighbor, intent) >= 0.25 || architectureAgreementConfidence(neighbor, \"feature\") >= 0.75) {\n ids.add(neighborId);\n }\n }\n }\n return [...ids];\n}\n\nfunction scoreEntry(entry: SemanticIndexEntry, intent: NormalizedIntent, category: SearchCategory): SemanticCandidate {\n const reasons: ScoreReason[] = [];\n const matchedTerms = new Set<string>();\n const entryTerms = new Set([entry.normalizedName, ...entry.aliases, ...entry.keywords]);\n const normalizedId = normalizePhrase(entry.stableId);\n\n addScore(reasons, \"exact-symbol\", intent.raw === entry.stableId ? 1000 : 0, entry.stableId);\n if (intent.raw === entry.stableId) {\n matchedTerms.add(entry.stableId);\n }\n\n if (entry.normalizedName === intent.normalized || normalizedId === intent.normalized) {\n addScore(reasons, \"exact-normalized-name\", 500, entry.displayName);\n matchedTerms.add(intent.normalized);\n }\n\n if (entry.aliases.includes(intent.normalized)) {\n addScore(reasons, \"exact-alias\", 420, intent.normalized);\n matchedTerms.add(intent.normalized);\n }\n\n const nameTokens = tokenize(entry.displayName);\n if (nameTokens.length > 0 && nameTokens.every((token) => intent.expandedTerms.includes(token))) {\n addScore(reasons, \"complete-name-token-match\", 260, nameTokens.join(\", \"));\n for (const token of nameTokens) {\n matchedTerms.add(token);\n }\n }\n\n for (const phrase of intent.phrases) {\n if (entry.aliases.includes(phrase) || entry.normalizedName === phrase) {\n addScore(reasons, \"phrase-match\", 180, phrase);\n matchedTerms.add(phrase);\n } else if (phrase.length > 2 && [...entryTerms].some((term) => term.includes(phrase) || phrase.includes(term))) {\n addScore(reasons, \"partial-phrase-match\", 80, phrase);\n matchedTerms.add(phrase);\n }\n }\n\n const tokenMatches = intent.tokens.filter((token) => entryTerms.has(token) || entryTerms.has(singularize(token)));\n for (const token of tokenMatches) {\n matchedTerms.add(token);\n }\n addScore(reasons, \"token-overlap\", tokenMatches.length * 55, tokenMatches.join(\", \"));\n\n const expandedMatches = intent.expandedTerms\n .filter((term) => !intent.tokens.includes(term))\n .filter((term) => entryTerms.has(term));\n for (const term of expandedMatches) {\n matchedTerms.add(term);\n }\n addScore(reasons, \"intent-expansion\", expandedMatches.length * 32, expandedMatches.join(\", \"));\n\n const relationshipMatches = intent.expandedTerms\n .filter((term) => entry.relationships.neighborNames.some((name) => tokenize(name).includes(term)));\n addScore(reasons, \"relationship-context\", Math.min(120, relationshipMatches.length * 18), relationshipMatches.join(\", \"));\n\n const semanticSimilarity = semanticSimilarityConfidence(entry, intent);\n addScore(reasons, \"semantic-similarity\", semanticSimilarity * 140, `${Math.round(semanticSimilarity * 100)}% lexical/semantic coverage`);\n\n const featureAgreement = semanticFeatureAgreement(entry, intent);\n addScore(reasons, \"feature-agreement\", featureAgreement * 120, `${Math.round(featureAgreement * 100)}% repository feature agreement`);\n\n const queryCoverage = originalQueryCoverage(entry, intent);\n addScore(reasons, \"query-token-coverage\", queryCoverage.ratio * 110, `${Math.round(queryCoverage.ratio * 100)}% original query token coverage`);\n addScore(reasons, \"executable-action-match\", executableActionBoostFor(entry, intent, queryCoverage), \"executable symbol matches action-oriented code query\");\n addScore(reasons, \"file-location-match\", fileLocationBoostFor(entry, intent, category, queryCoverage), \"file path and definition intent match query\");\n\n const architectureAgreement = architectureAgreementConfidence(entry, category);\n addScore(reasons, \"architecture-agreement\", architectureAgreement * 90, `${entry.kind} agreement for ${category}`);\n\n const categoryBoost = categoryBoostFor(entry, category);\n addScore(reasons, \"architecture-layer\", categoryBoost, `${entry.kind} in ${entry.architectureLayer}`);\n\n addScore(reasons, \"feature-owner\", featureOwnerBoostFor(entry, category), `${entry.displayName} owns repository feature behavior`);\n addScore(reasons, \"graph-importance\", Math.min(90, entry.importance * 18), `degree ${entry.relationships.degree}`);\n addScore(reasons, \"usage-frequency\", Math.min(60, entry.usageFrequency * 8), `${entry.usageFrequency} incoming edges`);\n addScore(reasons, \"repository-locality\", repositoryLocalityBoost(entry), repositoryLocalityEvidence(entry));\n\n const penalty = repositoryRankingPenalty(entry) + queryCoverage.missing.length * 120 + semanticFeaturePenalty(entry, intent);\n const score = Math.max(0, reasons.reduce((total, reason) => total + reason.score, 0) - penalty);\n const returnedReasons = penalty > 0\n ? [...reasons, { factor: \"repository-noise-demotion\", score: -penalty, evidence: repositoryNoiseEvidence(entry, queryCoverage.missing) }]\n : reasons;\n return {\n nodeId: entry.stableId,\n stableId: entry.stableId,\n displayName: entry.displayName,\n kind: entry.kind,\n score: round(score, 3),\n confidence: round(confidenceFromCandidateSignals(entry, intent, category, score), 3),\n matchedTerms: uniqueStrings([...matchedTerms]),\n reasons: returnedReasons.filter((reason) => reason.score !== 0).sort(compareReasons),\n entry,\n };\n}\n\nfunction calibrateCandidateConfidences(\n candidates: readonly SemanticCandidate[],\n intent: NormalizedIntent,\n category: SearchCategory,\n): readonly SemanticCandidate[] {\n if (candidates.length === 0) {\n return candidates;\n }\n const topScore = candidates[0]?.score ?? 0;\n const secondScore = candidates[1]?.score ?? 0;\n const closeAlternatives = candidates.filter((candidate, index) =>\n index > 0 && isPlausibleAlternative(candidate, topScore, secondScore)\n );\n\n return candidates.map((candidate, index) => {\n const baseConfidence = confidenceFromCandidateSignals(candidate.entry, intent, category, candidate.score);\n const ratio = topScore > 0 ? Math.min(1, candidate.score / topScore) : 0;\n const confidence = round(calibratedConfidenceCap(candidate, baseConfidence * (index === 0 ? 1 : ratio), {\n index,\n topScore,\n secondScore,\n closeAlternatives,\n intent,\n category,\n }), 3);\n const reasons: ScoreReason[] = [\n ...candidate.reasons,\n {\n factor: \"confidence-calibration\",\n score: round(confidence * 100),\n evidence: confidenceCalibrationEvidence(candidate.entry, confidence, closeAlternatives.length),\n },\n ];\n if (index === 0 && closeAlternatives.length > 0) {\n reasons.push({\n factor: \"ambiguity-calibration\",\n score: -Math.min(30, closeAlternatives.length * 8),\n evidence: `${closeAlternatives.length} plausible alternative seed(s) were retained.`,\n });\n }\n return {\n ...candidate,\n confidence,\n reasons: reasons.filter((reason) => reason.score !== 0).sort(compareReasons),\n };\n });\n}\n\nfunction calibratedConfidenceCap(\n candidate: SemanticCandidate,\n confidence: number,\n context: {\n readonly index: number;\n readonly topScore: number;\n readonly secondScore: number;\n readonly closeAlternatives: readonly SemanticCandidate[];\n readonly intent: NormalizedIntent;\n readonly category: SearchCategory;\n },\n): number {\n let capped = Math.max(0, Math.min(1, confidence));\n const isExact = candidate.reasons.some((reason) => reason.factor === \"exact-symbol\" || reason.factor === \"exact-normalized-name\");\n const scoreGap = context.topScore - context.secondScore;\n\n if (isExternalOrFrameworkEntry(candidate.entry)) {\n capped = Math.min(capped, hasRepositoryLocalAlternative(context.closeAlternatives) ? 0.52 : 0.58);\n }\n if (isGenericUtilityEntry(candidate.entry) && !isExact) {\n capped = Math.min(capped, 0.72);\n }\n if (context.closeAlternatives.length > 0 && !isExact) {\n capped = Math.min(capped, Math.max(0.72, 0.9 - context.closeAlternatives.length * 0.06));\n }\n if (context.index === 0 && scoreGap > 0 && scoreGap < 45 && !isExact) {\n capped = Math.min(capped, 0.78);\n } else if (context.index === 0 && scoreGap > 0 && scoreGap < 90 && !isExact) {\n capped = Math.min(capped, 0.86);\n }\n if (context.intent.tokens.length >= 2 && originalTokenCoverage(candidate.entry, context.intent) < 0.5 && !isExact) {\n capped = Math.min(capped, 0.62);\n }\n if (context.index > 0) {\n capped = Math.min(capped, 0.84);\n }\n if (context.category === \"feature\" && architectureAgreementConfidence(candidate.entry, context.category) < 0.4 && !isExact) {\n capped = Math.min(capped, 0.6);\n }\n return capped;\n}\n\nfunction isPlausibleAlternative(candidate: SemanticCandidate, topScore: number, secondScore: number): boolean {\n return candidate.score >= Math.max(secondScore, topScore - 90) || candidate.score >= topScore * 0.84;\n}\n\nfunction hasRepositoryLocalAlternative(candidates: readonly SemanticCandidate[]): boolean {\n return candidates.some((candidate) => isRepositoryLocalEntry(candidate.entry));\n}\n\nfunction confidenceCalibrationEvidence(entry: SemanticIndexEntry, confidence: number, alternativeCount: number): string {\n const locality = isRepositoryLocalEntry(entry) ? \"repository-local\" : \"external/framework\";\n const ambiguity = alternativeCount > 0 ? ` with ${alternativeCount} plausible alternative(s)` : \"\";\n return `${locality} ${entry.kind} calibrated to ${confidence.toFixed(3)}${ambiguity}`;\n}\n\nfunction confidenceFromCandidateSignals(\n entry: SemanticIndexEntry,\n intent: NormalizedIntent,\n category: SearchCategory,\n score: number,\n): number {\n const semantic = semanticSimilarityConfidence(entry, intent);\n const locality = repositoryLocalityConfidence(entry);\n const architecture = architectureAgreementConfidence(entry, category);\n const feature = semanticFeatureAgreement(entry, intent);\n const connectivity = graphConnectivityConfidence(entry);\n const scoreConfidence = Math.min(1, score / 760);\n const confidence =\n semantic * 0.32 +\n locality * 0.22 +\n architecture * 0.16 +\n feature * 0.16 +\n connectivity * 0.08 +\n scoreConfidence * 0.06;\n const exact = entry.normalizedName === intent.normalized || normalizePhrase(entry.stableId) === intent.normalized || entry.aliases.includes(intent.normalized);\n return exact ? Math.max(confidence, isRepositoryLocalEntry(entry) ? 0.78 : 0.55) : confidence;\n}\n\nfunction semanticSimilarityConfidence(entry: SemanticIndexEntry, intent: NormalizedIntent): number {\n const entryTerms = new Set([entry.normalizedName, ...entry.aliases, ...entry.keywords]);\n if (!intent.normalized) {\n return 0;\n }\n if (entry.normalizedName === intent.normalized || entry.aliases.includes(intent.normalized) || normalizePhrase(entry.stableId) === intent.normalized) {\n return 1;\n }\n const originalCoverage = originalTokenCoverage(entry, intent);\n const expandedTerms = intent.expandedTerms.filter((term) => !intent.tokens.includes(term));\n const expandedCoverage = expandedTerms.length === 0\n ? 0\n : expandedTerms.filter((term) => entryTerms.has(term)).length / expandedTerms.length;\n const phraseCoverage = intent.phrases.some((phrase) => entryTerms.has(phrase))\n ? 0.9\n : intent.phrases.some((phrase) => [...entryTerms].some((term) => term.includes(phrase) || phrase.includes(term)))\n ? 0.55\n : 0;\n return Math.min(1, Math.max(phraseCoverage, originalCoverage * 0.78 + expandedCoverage * 0.22));\n}\n\nfunction originalTokenCoverage(entry: SemanticIndexEntry, intent: NormalizedIntent): number {\n if (intent.tokens.length === 0) {\n return 0;\n }\n const entryTerms = new Set([entry.normalizedName, ...entry.aliases, ...entry.keywords]);\n const searchableText = [\n entry.stableId,\n entry.displayName,\n entry.filePath ?? \"\",\n entry.folderPath ?? \"\",\n entry.parentChain.join(\" \"),\n entry.relationships.neighborNames.join(\" \"),\n entry.documentation ?? \"\",\n entry.comments ?? \"\",\n ].join(\" \").toLowerCase();\n const matches = intent.tokens.filter((token) =>\n entryTerms.has(token) ||\n entryTerms.has(singularize(token)) ||\n searchableText.includes(token)\n );\n return matches.length / intent.tokens.length;\n}\n\nfunction originalQueryCoverage(\n entry: SemanticIndexEntry,\n intent: NormalizedIntent,\n): { readonly matched: readonly string[]; readonly missing: readonly string[]; readonly ratio: number } {\n const required = uniqueStrings(intent.tokens.map((token) => singularize(token)).filter((token) => token.length > 2));\n if (required.length === 0) {\n return { matched: [], missing: [], ratio: 1 };\n }\n const entryTerms = new Set([entry.normalizedName, ...entry.aliases, ...entry.keywords].flatMap((term) => tokenize(term).map(singularize)));\n const searchableTerms = new Set(tokenize([\n entry.stableId,\n entry.displayName,\n entry.filePath ?? \"\",\n entry.folderPath ?? \"\",\n entry.parentChain.join(\" \"),\n entry.relationships.neighborNames.join(\" \"),\n entry.documentation ?? \"\",\n entry.comments ?? \"\",\n ].join(\" \")).map(singularize));\n const matched = required.filter((term) => entryTerms.has(term) || searchableTerms.has(term));\n const missing = required.filter((term) => !matched.includes(term));\n return { matched, missing, ratio: matched.length / required.length };\n}\n\nfunction semanticFeatureAgreement(entry: SemanticIndexEntry, intent: NormalizedIntent): number {\n if (intent.tokens.length === 0) {\n return 0;\n }\n const featureText = tokenize([\n entry.stableId,\n entry.displayName,\n entry.filePath ?? \"\",\n entry.folderPath ?? \"\",\n entry.parentChain.join(\" \"),\n entry.relationships.neighborNames.join(\" \"),\n entry.documentation ?? \"\",\n entry.comments ?? \"\",\n ].join(\" \"));\n const featureTerms = new Set(featureText);\n const original = intent.tokens.filter((token) => featureTerms.has(token) || featureTerms.has(singularize(token))).length / intent.tokens.length;\n const expanded = intent.expandedTerms.length === 0\n ? 0\n : intent.expandedTerms.filter((term) => featureTerms.has(term)).length / intent.expandedTerms.length;\n return Math.min(1, original * 0.82 + expanded * 0.18);\n}\n\nfunction semanticFeaturePenalty(entry: SemanticIndexEntry, intent: NormalizedIntent): number {\n const required = new Set(intent.tokens.map(singularize));\n const terms = new Set(tokenize([\n entry.stableId,\n entry.displayName,\n entry.filePath ?? \"\",\n entry.folderPath ?? \"\",\n entry.parentChain.join(\" \"),\n entry.relationships.neighborNames.join(\" \"),\n entry.documentation ?? \"\",\n entry.comments ?? \"\",\n ].join(\" \")).map(singularize));\n let penalty = 0;\n if (required.has(\"threshold\") && !terms.has(\"threshold\")) {\n penalty += 130;\n }\n if (required.has(\"threshold\") && (terms.has(\"statistic\") || terms.has(\"observation\")) && !terms.has(\"threshold\")) {\n penalty += 220;\n }\n if (required.has(\"duration\") && required.has(\"sleep\") && !terms.has(\"duration\")) {\n penalty += 80;\n }\n return penalty;\n}\n\nfunction executableActionBoostFor(\n entry: SemanticIndexEntry,\n intent: NormalizedIntent,\n queryCoverage: ReturnType<typeof originalQueryCoverage>,\n): number {\n if (!EXECUTABLE_CODE_KINDS.has(entry.kind)) {\n return 0;\n }\n const queryTerms = uniqueStrings(intent.tokens.map(singularize));\n const actionMatches = queryTerms.filter((term) => EXECUTABLE_ACTION_TERMS.has(term));\n if (actionMatches.length === 0) {\n return 0;\n }\n const asksForCode = queryTerms.some((term) => EXECUTABLE_QUERY_TERMS.has(term));\n const domainTerms = queryTerms.filter((term) =>\n term.length > 2 &&\n !EXECUTABLE_ACTION_TERMS.has(term) &&\n !EXECUTABLE_QUERY_TERMS.has(term)\n );\n if (!asksForCode && domainTerms.length === 0) {\n return 0;\n }\n\n const executableTerms = new Set(tokenize([\n entry.stableId,\n entry.displayName,\n entry.normalizedName,\n entry.filePath ?? \"\",\n entry.documentation ?? \"\",\n entry.comments ?? \"\",\n ].join(\" \")).map(singularize));\n const executableActionMatches = actionMatches.filter((term) => executableTerms.has(term));\n if (executableActionMatches.length === 0) {\n return 0;\n }\n\n const coveredDomainTerms = domainTerms.filter((term) =>\n executableTerms.has(term) ||\n queryCoverage.matched.includes(term)\n );\n const domainCoverage = domainTerms.length === 0 ? 1 : coveredDomainTerms.length / domainTerms.length;\n if (domainCoverage < 0.45) {\n return 0;\n }\n\n const codeIntentBoost = asksForCode ? 40 : 0;\n return Math.min(260, 105 + codeIntentBoost + executableActionMatches.length * 45 + coveredDomainTerms.length * 20);\n}\n\nfunction fileLocationBoostFor(\n entry: SemanticIndexEntry,\n intent: NormalizedIntent,\n category: SearchCategory,\n queryCoverage: ReturnType<typeof originalQueryCoverage>,\n): number {\n if (!isRepositoryLocalEntry(entry) || !hasFileLocationIntent(intent)) {\n return 0;\n }\n\n const queryTerms = uniqueStrings(intent.tokens.map(singularize));\n const entryTerms = fileLocationTerms(entry);\n const domainTerms = queryTerms.filter((term) =>\n term.length > 2 &&\n !LOCATION_DOMAIN_NOISE_TERMS.has(term)\n );\n const matchedDomainTerms = domainTerms.filter((term) => relatedLocationTerms(term).some((related) => entryTerms.has(related)));\n const domainCoverage = domainTerms.length === 0 ? 0 : matchedDomainTerms.length / domainTerms.length;\n const stemMatch = fileStemMatchesIntent(entry, intent);\n const locationTermMatches = queryTerms.filter((term) => LOCATION_QUERY_TERMS.has(term) && relatedLocationTerms(term).some((related) => entryTerms.has(related)));\n\n if (!stemMatch && matchedDomainTerms.length < 2 && locationTermMatches.length === 0) {\n return 0;\n }\n\n let score = matchedDomainTerms.length * 34 + domainCoverage * 90 + locationTermMatches.length * 24;\n if (stemMatch) {\n score += entry.kind === \"Module\" ? 300 : 220;\n }\n if (entry.kind === \"Module\") {\n score += 72;\n }\n if (hasDefinitionIntent(intent) && isDefinitionEntry(entry)) {\n score += 150;\n }\n if (hasUtilityIntent(intent) && hasAnyTerm(entryTerms, [\"util\", \"utils\", \"utility\"])) {\n score += 190;\n }\n if (hasMappingIntent(intent) && hasAnyTerm(entryTerms, [\"map\", \"mapper\", \"mapping\", \"dto\", \"fhir\"])) {\n score += hasAnyTerm(entryTerms, [\"fhir\", \"map\", \"mapper\"]) ? 170 : 80;\n }\n if (hasParameterIntent(intent) && hasAnyTerm(entryTerms, [\"param\", \"params\", \"parameter\", \"parameters\", \"dto\", \"query\"])) {\n score += 180;\n }\n if (category === \"feature\" && entry.kind === \"Service\" && hasAnyTerm(entryTerms, [\"query\"]) && queryTerms.includes(\"query\")) {\n score += 55;\n }\n\n const missingPenalty = queryCoverage.missing.filter((term) => !LOCATION_DOMAIN_NOISE_TERMS.has(term)).length * 18;\n return Math.min(520, Math.max(0, score - missingPenalty));\n}\n\nfunction hasFileLocationIntent(intent: NormalizedIntent): boolean {\n return /\\b(where|defined|definition|implemented|implementation|mapping|mappings|utilities|utility|utils?|params?|parameters?)\\b/i.test(intent.raw) ||\n intent.tokens.some((term) => LOCATION_QUERY_TERMS.has(singularize(term)));\n}\n\nfunction hasDefinitionIntent(intent: NormalizedIntent): boolean {\n const terms = new Set(intent.tokens.map(singularize));\n return /\\b(defined|definition|types?|keys?)\\b/i.test(intent.raw) ||\n terms.has(\"defined\") ||\n terms.has(\"definition\") ||\n terms.has(\"type\") ||\n terms.has(\"key\");\n}\n\nfunction hasUtilityIntent(intent: NormalizedIntent): boolean {\n const terms = new Set(intent.tokens.map(singularize));\n return /\\b(utilities|utility|utils?)\\b/i.test(intent.raw) ||\n terms.has(\"utility\") ||\n terms.has(\"util\");\n}\n\nfunction hasMappingIntent(intent: NormalizedIntent): boolean {\n const terms = new Set(intent.tokens.map(singularize));\n return /\\b(mapping|mappings|mapper|mappers)\\b/i.test(intent.raw) ||\n terms.has(\"mapping\") ||\n terms.has(\"mapper\");\n}\n\nfunction hasParameterIntent(intent: NormalizedIntent): boolean {\n const terms = new Set(intent.tokens.map(singularize));\n return /\\b(params?|parameters?)\\b/i.test(intent.raw) ||\n terms.has(\"param\") ||\n terms.has(\"parameter\");\n}\n\nfunction isDefinitionEntry(entry: SemanticIndexEntry): boolean {\n return DEFINITION_KINDS.has(entry.kind) ||\n hasAnyTerm(fileLocationTerms(entry), [\"type\", \"types\", \"const\", \"constants\", \"enum\", \"schema\"]);\n}\n\nfunction fileLocationTerms(entry: SemanticIndexEntry): ReadonlySet<string> {\n return new Set(tokenize([\n entry.stableId,\n entry.displayName,\n entry.normalizedName,\n entry.filePath ?? \"\",\n entry.folderPath ?? \"\",\n ].join(\" \")).map(singularize));\n}\n\nfunction fileStemMatchesIntent(entry: SemanticIndexEntry, intent: NormalizedIntent): boolean {\n const stem = fileStem(entry);\n if (!stem) {\n return false;\n }\n const stemTerms = tokenize(stem).map(singularize).filter((term) => term.length > 1 && ![\"src\", \"ts\"].includes(term));\n if (stemTerms.length === 0) {\n return false;\n }\n const queryTerms = new Set(intent.tokens.map(singularize).flatMap((term) => relatedLocationTerms(term)));\n const matchedTerms = stemTerms.filter((term) => queryTerms.has(term));\n if (matchedTerms.length === stemTerms.length) {\n return true;\n }\n\n const stemCompact = compactTokenString(stem);\n const queryCompact = compactTokenString(intent.raw);\n return stemCompact.length >= 6 && queryCompact.includes(stemCompact);\n}\n\nfunction fileStem(entry: SemanticIndexEntry): string {\n const source = entry.filePath || entry.displayName;\n const last = source.split(\"/\").pop() ?? source;\n return last.replace(/\\.[^.]+$/, \"\");\n}\n\nfunction compactTokenString(value: string): string {\n return tokenize(value).map(singularize).join(\"\");\n}\n\nfunction relatedLocationTerms(term: string): readonly string[] {\n switch (singularize(term)) {\n case \"mapping\":\n case \"mapper\":\n return [\"map\", \"mapper\", \"mapping\"];\n case \"utilities\":\n case \"utility\":\n case \"util\":\n case \"utils\":\n return [\"util\", \"utils\", \"utility\"];\n case \"params\":\n case \"param\":\n case \"parameter\":\n case \"parameters\":\n return [\"param\", \"params\", \"parameter\", \"parameters\"];\n case \"types\":\n case \"type\":\n return [\"type\", \"types\"];\n case \"keys\":\n case \"key\":\n return [\"key\", \"keys\"];\n default:\n return [singularize(term)];\n }\n}\n\nfunction hasAnyTerm(terms: ReadonlySet<string>, values: readonly string[]): boolean {\n return values.some((value) => terms.has(value));\n}\n\nfunction repositoryLocalityConfidence(entry: SemanticIndexEntry): number {\n if (!isRepositoryLocalEntry(entry)) {\n return 0.08;\n }\n if (isGenericUtilityEntry(entry)) {\n return 0.72;\n }\n if (!entry.filePath && (entry.kind === \"Dependency\" || entry.kind === \"Framework\")) {\n return 0.2;\n }\n return 1;\n}\n\nfunction architectureAgreementConfidence(entry: SemanticIndexEntry, category: SearchCategory): number {\n if (isExternalOrFrameworkEntry(entry)) {\n return 0.12;\n }\n if (isPreferredRepositorySeedEntry(entry)) {\n return 1;\n }\n if (categoryTypeSet(category)?.has(entry.kind)) {\n return 0.82;\n }\n if (entry.architectureLayer === \"architecture\" && category === \"feature\") {\n return 0.4;\n }\n return entry.architectureLayer === \"language\" ? 0.55 : 0.65;\n}\n\nfunction graphConnectivityConfidence(entry: SemanticIndexEntry): number {\n return Math.min(1, 0.25 + Math.log2(entry.relationships.degree + 1) / 4);\n}\n\nfunction repositoryLocalityBoost(entry: SemanticIndexEntry): number {\n let score = 0;\n if (isRepositoryLocalEntry(entry)) {\n score += 56;\n score += REPOSITORY_LOCAL_KIND_BOOSTS[entry.kind] ?? 0;\n }\n if (isDtoLikeEntry(entry)) {\n score += 46;\n }\n if (isMapperEntry(entry)) {\n score += 34;\n }\n if (isFeatureModuleEntry(entry)) {\n score += 22;\n }\n if (isTestEntry(entry)) {\n score += 28;\n }\n return score;\n}\n\nfunction repositoryRankingPenalty(entry: SemanticIndexEntry): number {\n let penalty = 0;\n const text = `${entry.stableId} ${entry.filePath ?? \"\"} ${entry.package ?? \"\"} ${entry.displayName}`.toLowerCase();\n if (text.includes(\"node_modules\") || entry.stableId.startsWith(\"dep:\")) {\n penalty += 260;\n }\n if (/(\\bdto\\b|dto$|schema$|type$|types$|generated|__generated__)/i.test(entry.displayName) && !isRepositoryLocalEntry(entry)) {\n penalty += 90;\n }\n if (/node_modules|@nestjs\\/|@medplum\\/|next\\/dist|react\\/|typescript\\/lib|@types\\//i.test(text)) {\n penalty += 180;\n }\n if (isExternalOrFrameworkEntry(entry)) {\n penalty += 120;\n }\n if (/^framework:|framework|adapter|platform|runtime/.test(entry.stableId.toLowerCase()) && !isRepositoryLocalEntry(entry)) {\n penalty += 90;\n }\n if (isGenericUtilityEntry(entry)) {\n penalty += 55;\n }\n return penalty;\n}\n\nfunction repositoryLocalityEvidence(entry: SemanticIndexEntry): string {\n return isRepositoryLocalEntry(entry)\n ? `${entry.kind} from repository-local graph evidence`\n : `${entry.kind} from external or generated boundary`;\n}\n\nfunction repositoryNoiseEvidence(entry: SemanticIndexEntry, missingTerms: readonly string[] = []): string {\n const missing = missingTerms.length > 0 ? `; missing query term(s): ${missingTerms.join(\", \")}` : \"\";\n return `${entry.displayName} is external, generated, generic framework-adjacent, or lower-coverage evidence${missing}`;\n}\n\nfunction isRepositoryLocalEntry(entry: SemanticIndexEntry): boolean {\n const text = `${entry.stableId} ${entry.filePath ?? \"\"} ${entry.package ?? \"\"}`.toLowerCase();\n return !text.includes(\"node_modules\") &&\n !entry.stableId.startsWith(\"dep:\") &&\n !entry.stableId.startsWith(\"framework:\") &&\n !isKnownExternalPackageEntry(entry);\n}\n\nfunction isRepositorySymbolEntry(entry: SemanticIndexEntry): boolean {\n return [\"Function\", \"Method\", \"Class\", \"Interface\", \"TypeAlias\", \"Enum\", \"Field\", \"Model\", \"Resource\"].includes(entry.kind);\n}\n\nfunction isDtoLikeEntry(entry: SemanticIndexEntry): boolean {\n const text = `${entry.displayName} ${entry.filePath ?? \"\"} ${entry.keywords.join(\" \")}`;\n return [\"Model\", \"Interface\", \"TypeAlias\", \"Class\"].includes(entry.kind) && /\\bdto\\b|dto$|data transfer|payload|request|response/i.test(text);\n}\n\nfunction featureOwnerBoostFor(entry: SemanticIndexEntry, category: SearchCategory): number {\n if ((category !== \"feature\" && category !== \"concept\") || !isRepositoryLocalEntry(entry)) {\n return 0;\n }\n if (entry.kind === \"Service\" || entry.kind === \"Provider\") {\n return 170;\n }\n if (entry.kind === \"Class\" && /service$/i.test(entry.displayName)) {\n return 170;\n }\n if (entry.kind === \"Controller\") {\n return 90;\n }\n return 0;\n}\n\nfunction isFeatureModuleEntry(entry: SemanticIndexEntry): boolean {\n return entry.kind === \"Module\" && isRepositoryLocalEntry(entry) && !isGenericUtilityEntry(entry);\n}\n\nfunction isPreferredRepositorySeedEntry(entry: SemanticIndexEntry): boolean {\n return isRepositoryLocalEntry(entry) && (\n [\"Service\", \"Controller\", \"Repository\", \"Method\", \"Route\", \"Operation\", \"Configuration\", \"EnvironmentVariable\", \"Guard\", \"Permission\", \"Middleware\"].includes(entry.kind) ||\n isDtoLikeEntry(entry) ||\n isFeatureModuleEntry(entry) ||\n isTestEntry(entry) ||\n isMapperEntry(entry)\n );\n}\n\nfunction isMapperEntry(entry: SemanticIndexEntry): boolean {\n return isRepositoryLocalEntry(entry) && /\\bmapper\\b|mapper$/i.test(`${entry.displayName} ${entry.filePath ?? \"\"}`);\n}\n\nfunction isTestEntry(entry: SemanticIndexEntry): boolean {\n return /(^|[/.])(test|tests|spec|__tests__)([/.]|$)|\\.(test|spec)\\./i.test(`${entry.filePath ?? \"\"} ${entry.displayName}`);\n}\n\nfunction isExternalOrFrameworkEntry(entry: SemanticIndexEntry): boolean {\n return !isRepositoryLocalEntry(entry) ||\n entry.kind === \"Dependency\" ||\n entry.kind === \"Framework\" ||\n isKnownExternalPackageEntry(entry);\n}\n\nfunction isKnownExternalPackageEntry(entry: SemanticIndexEntry): boolean {\n const text = `${entry.stableId} ${entry.displayName} ${entry.package ?? \"\"} ${entry.filePath ?? \"\"}`.toLowerCase();\n return FRAMEWORK_PACKAGE_PATTERN.test(text) ||\n /(^|[/:])(@nestjs|@medplum|@types|@angular|next|react|typescript|express|fastify)([/:-]|$)/.test(text) ||\n /(^|[/:])(node|npm):/.test(text);\n}\n\nfunction isGenericUtilityEntry(entry: SemanticIndexEntry): boolean {\n const text = `${entry.stableId} ${entry.displayName} ${entry.filePath ?? \"\"}`.toLowerCase();\n return /(^|[/.:-])(common|shared|utils?|helpers?|internal|misc|core|index)([/.:-]|$)/.test(text) ||\n /\\b(base|abstract|generic|utility|utils?|helpers?)\\b/.test(entry.displayName);\n}\n\nfunction fuzzyEntryMatch(entry: SemanticIndexEntry, intent: NormalizedIntent): boolean {\n const haystack = `${entry.stableId} ${entry.displayName} ${entry.aliases.join(\" \")} ${entry.keywords.join(\" \")}`.toLowerCase();\n return intent.tokens.some((token) => haystack.includes(token));\n}\n\nfunction recommendCapability(\n intent: NormalizedIntent,\n candidates: readonly SemanticCandidate[],\n category: SearchCategory,\n): string {\n if (category === \"configuration\") {\n return \"ConfigurationUsage\";\n }\n if (category === \"environment\") {\n return \"EnvironmentUsage\";\n }\n if (category === \"route\") {\n return \"RequestTrace\";\n }\n const terms = new Set(intent.expandedTerms);\n const matched = RELATIONSHIP_CAPABILITIES\n .map((item) => ({\n capability: item.capability,\n score: item.terms.filter((term) => terms.has(term)).length,\n }))\n .sort((left, right) => right.score - left.score || left.capability.localeCompare(right.capability))[0];\n if (matched && matched.score > 0) {\n return matched.capability;\n }\n const topKind = candidates[0]?.kind;\n if (topKind === \"Route\" || topKind === \"Controller\") {\n return \"RequestTrace\";\n }\n if (topKind === \"Configuration\" || topKind === \"EnvironmentVariable\") {\n return \"ConfigurationUsage\";\n }\n return category === \"repository\" ? \"ArchitectureSummary\" : \"FeatureTouchpoints\";\n}\n\nfunction tokenize(value: string): readonly string[] {\n return uniqueStrings(splitIdentifier(value)\n .map((part) => normalizeToken(part))\n .filter((part) => part.length > 0)\n .filter((part) => !STOP_WORDS.has(part))\n .flatMap((part) => uniqueStrings([part, singularize(part)])));\n}\n\nfunction splitIdentifier(value: string): readonly string[] {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/([A-Z]+)([A-Z][a-z])/g, \"$1 $2\")\n .replace(/[@#]/g, \" \")\n .replace(/[:./\\\\|()[\\]{}<>,;'\"`~!$%^&*+=?]+/g, \" \")\n .replace(/[-_]+/g, \" \")\n .split(/\\s+/g)\n .filter(Boolean);\n}\n\nfunction normalizeToken(token: string): string {\n return token\n .normalize(\"NFKD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]/g, \"\");\n}\n\nfunction normalizePhrase(value: string): string {\n return tokenize(value).join(\" \");\n}\n\nfunction phraseVariants(raw: string, tokens: readonly string[]): readonly string[] {\n const variants = new Set<string>();\n const normalized = normalizePhrase(raw);\n if (normalized) {\n variants.add(normalized);\n }\n if (tokens.length > 0) {\n variants.add(tokens.join(\" \"));\n variants.add(tokens.join(\"\"));\n variants.add(tokens.join(\"-\"));\n variants.add(tokens.join(\"_\"));\n }\n const withoutSuffix = stripFrameworkSuffix(tokens);\n if (withoutSuffix.length > 0) {\n variants.add(withoutSuffix.join(\" \"));\n variants.add(withoutSuffix.join(\"\"));\n }\n return uniqueStrings([...variants]);\n}\n\nfunction stripFrameworkSuffix(tokens: readonly string[]): readonly string[] {\n let stripped = [...tokens];\n while (stripped.length > 1 && FRAMEWORK_SUFFIXES.has(stripped[stripped.length - 1] ?? \"\")) {\n stripped = stripped.slice(0, -1);\n }\n return stripped;\n}\n\nfunction singularize(value: string): string {\n if (value.endsWith(\"ies\") && value.length > 4) {\n return `${value.slice(0, -3)}y`;\n }\n if (value.endsWith(\"sses\")) {\n return value.slice(0, -2);\n }\n if (value.endsWith(\"s\") && !value.endsWith(\"ss\") && value.length > 3) {\n return value.slice(0, -1);\n }\n return value;\n}\n\nfunction pluralize(value: string): string {\n if (value.endsWith(\"y\") && value.length > 2) {\n return `${value.slice(0, -1)}ies`;\n }\n if (value.endsWith(\"s\")) {\n return value;\n }\n return `${value}s`;\n}\n\nfunction aliasesForNodeType(type: NodeType): readonly string[] {\n switch (type) {\n case \"Route\":\n case \"Operation\":\n return [\"api\", \"endpoint\", \"route\", \"request\"];\n case \"Controller\":\n return [\"controller\", \"handler\", \"route\"];\n case \"Service\":\n case \"Provider\":\n return [\"service\", \"provider\", \"injectable\"];\n case \"Repository\":\n return [\"repository\", \"repo\", \"persistence\", \"database\"];\n case \"Model\":\n return [\"model\", \"dto\", \"schema\", \"contract\", \"payload\"];\n case \"Resource\":\n return [\"resource\", \"model\"];\n case \"Configuration\":\n return [\"config\", \"configuration\", \"setting\"];\n case \"EnvironmentVariable\":\n return [\"env\", \"environment\", \"secret\", \"variable\"];\n case \"Framework\":\n return [\"framework\", \"library\"];\n case \"Package\":\n return [\"package\", \"workspace\"];\n default:\n return [type.toLowerCase()];\n }\n}\n\nfunction isDtoLikeNode(node: SoftwareGraphNode): boolean {\n const text = `${node.name} ${node.file ?? \"\"}`;\n return [\"Model\", \"Interface\", \"TypeAlias\", \"Class\"].includes(node.type) && /\\bdto\\b|dto$|data transfer|payload|request|response/i.test(text);\n}\n\nfunction isTestNode(node: SoftwareGraphNode): boolean {\n return /(^|[/.])(test|tests|spec|__tests__)([/.]|$)|\\.(test|spec)\\./i.test(`${node.file ?? \"\"} ${node.name}`);\n}\n\nfunction isFeatureModuleNode(node: SoftwareGraphNode): boolean {\n return node.type === \"Module\" && !/(^|[/.:-])(common|shared|utils?|helpers?|internal|misc|core|index)([/.:-]|$)/i.test(`${node.id} ${node.name} ${node.file ?? \"\"}`);\n}\n\nfunction expansionsFor(token: string): readonly string[] {\n return Object.prototype.hasOwnProperty.call(SEMANTIC_EXPANSIONS, token)\n ? SEMANTIC_EXPANSIONS[token] ?? []\n : [];\n}\n\nfunction categoryTypeSet(category: SearchCategory): ReadonlySet<NodeType> | undefined {\n const types = CATEGORY_TYPES[category];\n return types.length > 0 ? new Set(types) : undefined;\n}\n\nfunction includeEntryForCategory(\n entry: SemanticIndexEntry,\n intent: NormalizedIntent,\n category: SearchCategory,\n): boolean {\n if (category !== \"concept\") {\n return true;\n }\n if (![\"Import\", \"Export\", \"Decorator\"].includes(entry.kind)) {\n return true;\n }\n const kind = entry.kind.toLowerCase();\n return intent.tokens.includes(kind) || intent.raw === entry.stableId || intent.normalized === entry.normalizedName;\n}\n\nfunction categoryBoostFor(entry: SemanticIndexEntry, category: SearchCategory): number {\n if (category === \"concept\") {\n return [\"Service\", \"Provider\", \"Controller\", \"Route\", \"Operation\", \"Repository\", \"Model\", \"Resource\", \"Function\", \"Method\", \"Class\", \"Interface\", \"TypeAlias\", \"Module\", \"Configuration\", \"EnvironmentVariable\"].includes(entry.kind)\n ? 45\n : 0;\n }\n const types = CATEGORY_TYPES[category];\n if (types.length === 0) {\n return 0;\n }\n const base = types.includes(entry.kind) ? 75 : 0;\n if (category === \"feature\" && isFeatureModuleEntry(entry)) {\n return base + 10;\n }\n if (category === \"feature\" && isDtoLikeEntry(entry)) {\n return base + 20;\n }\n return base;\n}\n\nfunction nodeImportance(node: SoftwareGraphNode, degree: number, inbound: number): number {\n const layerWeight = {\n Workspace: 5,\n Application: 5,\n Package: 4,\n Module: 4,\n Controller: 4,\n Route: 4,\n Service: 4,\n Provider: 3,\n Repository: 3,\n Configuration: 3,\n EnvironmentVariable: 3,\n } as Partial<Record<NodeType, number>>;\n return round((layerWeight[node.type] ?? 1) + Math.log2(degree + 1) + Math.log2(inbound + 1), 3);\n}\n\nfunction architectureLayer(node: SoftwareGraphNode): string {\n if ([\"Route\", \"Controller\", \"Operation\", \"Middleware\", \"Guard\"].includes(node.type)) {\n return \"application-boundary\";\n }\n if ([\"Service\", \"Provider\", \"Factory\"].includes(node.type)) {\n return \"application-service\";\n }\n if ([\"Repository\", \"DatabaseTable\", \"Model\", \"Resource\"].includes(node.type)) {\n return \"persistence\";\n }\n if ([\"Configuration\", \"EnvironmentVariable\", \"BuildTarget\", \"Script\", \"Task\"].includes(node.type)) {\n return \"configuration\";\n }\n if ([\"Package\", \"Workspace\", \"Application\", \"Framework\", \"Dependency\"].includes(node.type)) {\n return \"architecture\";\n }\n return \"language\";\n}\n\nfunction parentChainFor(\n node: SoftwareGraphNode,\n nodeById: ReadonlyMap<string, SoftwareGraphNode>,\n incomingEdges: readonly SoftwareGraphEdge[],\n): readonly string[] {\n const parents: string[] = [];\n let current = node;\n const seen = new Set<string>([node.id]);\n for (let depth = 0; depth < 8; depth += 1) {\n const parentEdge = incomingEdges.find((edge) =>\n edge.to === current.id && (edge.type === \"CONTAINS\" || edge.type === \"BELONGS_TO\" || edge.type === \"DECLARES\" || edge.type === \"REGISTERS\")\n );\n if (!parentEdge || seen.has(parentEdge.from)) {\n break;\n }\n const parent = nodeById.get(parentEdge.from);\n if (!parent) {\n break;\n }\n parents.push(`${parent.type}:${parent.name}`);\n seen.add(parent.id);\n current = parent;\n }\n return parents;\n}\n\nfunction containingName(parentChain: readonly string[], type: NodeType): string | undefined {\n const prefix = `${type}:`;\n return parentChain.find((item) => item.startsWith(prefix))?.slice(prefix.length);\n}\n\nfunction metadataTextValues(metadata: JsonObject | undefined): readonly string[] {\n if (!metadata) {\n return [];\n }\n const values: string[] = [];\n collectMetadataText(metadata, values, 0, new WeakSet<object>());\n return values;\n}\n\nfunction collectMetadataText(value: unknown, values: string[], depth: number, seen: WeakSet<object>): void {\n if (\n depth > SEMANTIC_METADATA_DEPTH_LIMIT ||\n values.length >= SEMANTIC_METADATA_VALUES_LIMIT ||\n value === null ||\n value === undefined\n ) {\n return;\n }\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n values.push(truncateSemanticText(String(value)));\n return;\n }\n if (Array.isArray(value)) {\n if (seen.has(value)) {\n return;\n }\n seen.add(value);\n for (const item of value.slice(0, SEMANTIC_METADATA_ARRAY_LIMIT)) {\n collectMetadataText(item, values, depth + 1, seen);\n if (values.length >= SEMANTIC_METADATA_VALUES_LIMIT) {\n break;\n }\n }\n return;\n }\n if (typeof value === \"object\") {\n if (seen.has(value)) {\n return;\n }\n seen.add(value);\n for (const [key, entry] of Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .slice(0, SEMANTIC_METADATA_ENTRY_LIMIT)) {\n if (isNoisyMetadataKey(key)) {\n continue;\n }\n values.push(truncateSemanticText(key));\n collectMetadataText(entry, values, depth + 1, seen);\n if (values.length >= SEMANTIC_METADATA_VALUES_LIMIT) {\n break;\n }\n }\n }\n}\n\nfunction isNoisyMetadataKey(key: string): boolean {\n return [\n \"abstract\",\n \"async\",\n \"declarationKind\",\n \"language\",\n \"parameters\",\n \"parser\",\n \"parserVersion\",\n \"passId\",\n \"provenance\",\n \"source\",\n \"static\",\n \"typeParameters\",\n ].includes(key);\n}\n\nfunction routeTextValues(node: SoftwareGraphNode): readonly string[] {\n if (node.type !== \"Route\" && node.type !== \"Operation\") {\n return [];\n }\n return [\n stringMetadata(node.metadata, \"method\") ?? \"\",\n stringMetadata(node.metadata, \"path\") ?? \"\",\n stringMetadata(node.metadata, \"route\") ?? \"\",\n node.name,\n ].filter(Boolean);\n}\n\nfunction deterministicDocumentation(metadata: JsonObject | undefined): string | undefined {\n return firstTruncatedMetadata(metadata, [\"documentation\", \"description\", \"summary\"]);\n}\n\nfunction deterministicComments(metadata: JsonObject | undefined): string | undefined {\n return firstTruncatedMetadata(metadata, [\"comments\", \"comment\", \"jsdoc\"]);\n}\n\nfunction stringMetadata(metadata: JsonObject | undefined, key: string): string | undefined {\n const value = metadata?.[key];\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nfunction firstTruncatedMetadata(metadata: JsonObject | undefined, keys: readonly string[]): string | undefined {\n for (const key of keys) {\n const value = stringMetadata(metadata, key);\n if (value) {\n return truncateSemanticText(value);\n }\n }\n return undefined;\n}\n\nfunction truncateSemanticText(value: string): string {\n const normalized = value.replace(/\\s+/g, \" \").trim();\n return normalized.length > SEMANTIC_TEXT_LIMIT\n ? `${normalized.slice(0, SEMANTIC_TEXT_LIMIT)}...[truncated]`\n : normalized;\n}\n\nfunction frameworkFromNeighbors(neighbors: readonly SoftwareGraphNode[]): string | undefined {\n return neighbors.find((node) => node.type === \"Framework\")?.name;\n}\n\nfunction folderPath(file: string): string {\n const normalized = normalizePath(file);\n const parts = normalized.split(\"/\");\n parts.pop();\n return parts.join(\"/\") || \".\";\n}\n\nfunction countEdgesByType(edges: readonly SoftwareGraphEdge[]): Record<string, number> {\n const counts = new Map<string, number>();\n for (const edge of edges) {\n counts.set(edge.type, (counts.get(edge.type) ?? 0) + 1);\n }\n return Object.fromEntries([...counts.entries()].sort(([left], [right]) => left.localeCompare(right)));\n}\n\nfunction groupEdges(edges: readonly SoftwareGraphEdge[], side: \"from\" | \"to\"): ReadonlyMap<string, readonly SoftwareGraphEdge[]> {\n const grouped = new Map<string, SoftwareGraphEdge[]>();\n for (const edge of edges) {\n const current = grouped.get(edge[side]) ?? [];\n current.push(edge);\n grouped.set(edge[side], current);\n }\n return new Map([...grouped.entries()].map(([key, values]) => [key, values.sort(compareEdges)] as const));\n}\n\nfunction addInverted(map: Map<string, Set<string>>, term: string, id: string): void {\n if (!term || STOP_WORDS.has(term) || isSemanticNoiseTerm(term) || isNoisySemanticAlias(term)) {\n return;\n }\n const current = map.get(term) ?? new Set<string>();\n if (current.size >= SEMANTIC_INVERTED_IDS_LIMIT) {\n return;\n }\n current.add(id);\n map.set(term, current);\n}\n\nfunction addScore(reasons: ScoreReason[], factor: string, score: number, evidence: string): void {\n if (score <= 0) {\n return;\n }\n reasons.push({ factor, score: round(score, 3), evidence });\n}\n\nfunction compareCandidates(left: SemanticCandidate, right: SemanticCandidate): number {\n return right.score - left.score || left.kind.localeCompare(right.kind) || left.stableId.localeCompare(right.stableId);\n}\n\nfunction compareReasons(left: ScoreReason, right: ScoreReason): number {\n return right.score - left.score || left.factor.localeCompare(right.factor);\n}\n\nfunction compareEntries(left: SemanticIndexEntry, right: SemanticIndexEntry): number {\n return left.stableId.localeCompare(right.stableId);\n}\n\nfunction compareEdges(left: SoftwareGraphEdge, right: SoftwareGraphEdge): number {\n return left.id.localeCompare(right.id);\n}\n\nfunction uniqueStrings(values: readonly string[]): readonly string[] {\n return [...new Set(values.map((value) => value.trim()).filter(Boolean))].sort((left, right) => left.localeCompare(right));\n}\n\nfunction isSemanticNoiseTerm(term: string): boolean {\n return SEMANTIC_NOISE_TERMS.has(term) || /^\\d+[a-z]*$/i.test(term);\n}\n\nfunction isNoisySemanticAlias(alias: string): boolean {\n const tokens = tokenize(alias);\n if (tokens.length === 0) {\n return true;\n }\n if (tokens.length > 14) {\n return true;\n }\n return tokens.every(isSemanticNoiseTerm);\n}\n\nfunction sum(values: readonly number[]): number {\n return values.reduce((total, value) => total + value, 0);\n}\n\nfunction round(value: number, places = 3): number {\n const factor = 10 ** places;\n return Math.round(value * factor) / factor;\n}\n\nfunction performanceNow(): number {\n return typeof performance !== \"undefined\" ? performance.now() : Date.now();\n}\n\nfunction isNode(value: SoftwareGraphNode | undefined): value is SoftwareGraphNode {\n return Boolean(value);\n}\n\nfunction isEntry(value: SemanticIndexEntry | undefined): value is SemanticIndexEntry {\n return Boolean(value);\n}\n\nfunction withOptionalProperties<T extends object, O extends object>(target: T, optional: O): T & O {\n return {\n ...target,\n ...Object.fromEntries(Object.entries(optional).filter(([, value]) => value !== undefined)),\n } as T & O;\n}\n","export const SOFTWARE_GRAPH_VERSION = \"1.0.0\";\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonValue = JsonPrimitive | JsonObject | JsonValue[];\nexport type JsonObject = {\n readonly [key: string]: JsonValue | undefined;\n};\n\nexport const NODE_TYPES = [\n \"Workspace\",\n \"Application\",\n \"Function\",\n \"Method\",\n \"Class\",\n \"Interface\",\n \"TypeAlias\",\n \"Enum\",\n \"Namespace\",\n \"Module\",\n \"Package\",\n \"Script\",\n \"Dependency\",\n \"Task\",\n \"Pipeline\",\n \"BuildTarget\",\n \"Configuration\",\n \"Container\",\n \"Workflow\",\n \"Job\",\n \"Step\",\n \"Framework\",\n \"Decorator\",\n \"Import\",\n \"Export\",\n \"Route\",\n \"Resource\",\n \"Operation\",\n \"Model\",\n \"Field\",\n \"Middleware\",\n \"Provider\",\n \"Factory\",\n \"Service\",\n \"Repository\",\n \"DatabaseTable\",\n \"EnvironmentVariable\",\n \"Event\",\n \"Permission\",\n \"Exception\",\n \"Controller\",\n \"Guard\",\n] as const;\n\nexport type NodeType = (typeof NODE_TYPES)[number];\n\nexport const RELATIONSHIP_TYPES = [\n \"CALLS\",\n \"IMPORTS\",\n \"EXPORTS\",\n \"USES\",\n \"RETURNS\",\n \"THROWS\",\n \"READS\",\n \"WRITES\",\n \"CREATES\",\n \"IMPLEMENTS\",\n \"EXTENDS\",\n \"DEPENDS_ON\",\n \"DECORATES\",\n \"INJECTS\",\n \"REGISTERED_IN\",\n \"REGISTERS\",\n \"DECLARES\",\n \"MOUNTS\",\n \"PROVIDES\",\n \"CONSUMES\",\n \"CONFIGURES\",\n \"EXECUTES\",\n \"GENERATES\",\n \"HANDLES\",\n \"OVERRIDES\",\n \"AUTHORIZES\",\n \"BELONGS_TO\",\n \"PUBLISHES\",\n \"SUBSCRIBES\",\n \"CONTAINS\",\n \"EXPOSES\",\n \"REFERENCES\",\n] as const;\n\nexport type RelationshipType = (typeof RELATIONSHIP_TYPES)[number];\n\nexport type DiagnosticSeverity = \"info\" | \"warning\" | \"error\";\n\nexport interface SourceSpan {\n readonly file: string;\n readonly startLine: number;\n readonly startColumn: number;\n readonly endLine: number;\n readonly endColumn: number;\n}\n\nexport interface SoftwareGraphRepository {\n readonly root: string;\n readonly name: string;\n readonly packageManager?: string | undefined;\n readonly packageName?: string | undefined;\n}\n\nexport interface SoftwareGraphNode {\n readonly id: string;\n readonly type: NodeType;\n readonly name: string;\n readonly file?: string | undefined;\n readonly package?: string | undefined;\n readonly span?: SourceSpan | undefined;\n readonly metadata?: JsonObject | undefined;\n}\n\nexport interface EdgeEvidence {\n readonly kind: \"syntax\" | \"resolver\" | \"config\" | \"semantic\" | \"plugin\";\n readonly confidence: \"exact\" | \"inferred\" | \"low\";\n readonly span?: SourceSpan | undefined;\n readonly description?: string | undefined;\n}\n\nexport interface SoftwareGraphEdge {\n readonly id: string;\n readonly type: RelationshipType;\n readonly from: string;\n readonly to: string;\n readonly evidence?: readonly EdgeEvidence[] | undefined;\n readonly metadata?: JsonObject | undefined;\n}\n\nexport interface SoftwareGraphDiagnostic {\n readonly id: string;\n readonly code: string;\n readonly severity: DiagnosticSeverity;\n readonly message: string;\n readonly nodeId?: string | undefined;\n readonly edgeId?: string | undefined;\n readonly span?: SourceSpan | undefined;\n readonly metadata?: JsonObject | undefined;\n}\n\nexport interface GraphIndexes {\n readonly nodeIdsByType: Partial<Record<NodeType, readonly string[]>>;\n readonly edgeIdsByType: Partial<Record<RelationshipType, readonly string[]>>;\n readonly inboundEdgeIdsByNodeId: Record<string, readonly string[]>;\n readonly outboundEdgeIdsByNodeId: Record<string, readonly string[]>;\n readonly edgeIdsBySourceAndType: Record<string, readonly string[]>;\n}\n\nexport interface SoftwareGraphMetadata {\n readonly generatedAt: string;\n readonly deterministicHash: string;\n readonly fileCount: number;\n readonly nodeCount: number;\n readonly edgeCount: number;\n readonly parserVersions: Record<string, string>;\n readonly durationMs?: number | undefined;\n}\n\nexport interface SoftwareGraph {\n readonly version: string;\n readonly repository: SoftwareGraphRepository;\n readonly nodes: readonly SoftwareGraphNode[];\n readonly edges: readonly SoftwareGraphEdge[];\n readonly diagnostics: readonly SoftwareGraphDiagnostic[];\n readonly indexes: GraphIndexes;\n readonly metadata: SoftwareGraphMetadata;\n}\n\nexport interface CreateNodeIdInput {\n readonly type: NodeType;\n readonly name: string;\n readonly file?: string | undefined;\n readonly signature?: string | undefined;\n}\n\nexport interface OntolyPluginContext {\n readonly graph: SoftwareGraph;\n}\n\nexport interface OntolyPluginResult {\n readonly artifacts?: readonly PluginArtifact[] | undefined;\n readonly diagnostics?: readonly SoftwareGraphDiagnostic[] | undefined;\n}\n\nexport interface PluginArtifact {\n readonly path: string;\n readonly contents: string;\n readonly mediaType: string;\n}\n\nexport interface OntolyPlugin {\n readonly name: string;\n readonly version: string;\n readonly run: (context: OntolyPluginContext) => Promise<OntolyPluginResult> | OntolyPluginResult;\n}\n\nconst NODE_TYPE_PREFIX: Record<NodeType, string> = {\n Workspace: \"workspace\",\n Application: \"app\",\n Function: \"fn\",\n Method: \"method\",\n Class: \"class\",\n Interface: \"iface\",\n TypeAlias: \"type\",\n Enum: \"enum\",\n Namespace: \"ns\",\n Module: \"mod\",\n Package: \"pkg\",\n Script: \"script\",\n Dependency: \"dep\",\n Task: \"task\",\n Pipeline: \"pipeline\",\n BuildTarget: \"target\",\n Configuration: \"config\",\n Container: \"container\",\n Workflow: \"workflow\",\n Job: \"job\",\n Step: \"step\",\n Framework: \"framework\",\n Decorator: \"decorator\",\n Import: \"import\",\n Export: \"export\",\n Route: \"route\",\n Resource: \"resource\",\n Operation: \"op\",\n Model: \"model\",\n Field: \"field\",\n Middleware: \"middleware\",\n Provider: \"provider\",\n Factory: \"factory\",\n Service: \"service\",\n Repository: \"repo\",\n DatabaseTable: \"table\",\n EnvironmentVariable: \"env\",\n Event: \"event\",\n Permission: \"permission\",\n Exception: \"exception\",\n Controller: \"controller\",\n Guard: \"guard\",\n};\n\nexport function normalizePath(path: string): string {\n return path.replace(/\\\\/g, \"/\").replace(/\\/+/g, \"/\").replace(/^\\.\\//, \"\");\n}\n\nexport function stableStringify(value: unknown): string {\n if (value === null || typeof value !== \"object\") {\n return JSON.stringify(value);\n }\n\n if (Array.isArray(value)) {\n return `[${value.map((item) => stableStringify(item)).join(\",\")}]`;\n }\n\n const entries = Object.entries(value as Record<string, unknown>)\n .filter(([, entryValue]) => entryValue !== undefined)\n .sort(([left], [right]) => left.localeCompare(right));\n\n return `{${entries\n .map(([key, entryValue]) => `${JSON.stringify(key)}:${stableStringify(entryValue)}`)\n .join(\",\")}}`;\n}\n\nexport function stableHash(input: string): string {\n let hash = 0x811c9dc5;\n\n for (let index = 0; index < input.length; index += 1) {\n hash ^= input.charCodeAt(index);\n hash = Math.imul(hash, 0x01000193);\n }\n\n return (hash >>> 0).toString(36).padStart(7, \"0\");\n}\n\nexport function createNodeId(input: CreateNodeIdInput): string {\n const prefix = NODE_TYPE_PREFIX[input.type];\n const name = input.name.trim();\n const normalizedFile = input.file ? normalizePath(input.file) : undefined;\n\n if (normalizedFile) {\n return `${prefix}:${normalizedFile}:${name}`;\n }\n\n if (input.signature) {\n return `${prefix}:${name}:${stableHash(input.signature)}`;\n }\n\n return `${prefix}:${name}`;\n}\n\nexport function createEdgeId(type: RelationshipType, from: string, to: string): string {\n return `edge:${type.toLowerCase()}:${stableHash(`${type}|${from}|${to}`)}`;\n}\n\nexport function createDiagnosticId(code: string, message: string, location = \"\"): string {\n return `diag:${code.toLowerCase()}:${stableHash(`${code}|${message}|${location}`)}`;\n}\n\nexport function createSyntaxEvidence(\n span: SourceSpan,\n description?: string,\n confidence: EdgeEvidence[\"confidence\"] = \"exact\",\n): EdgeEvidence {\n const evidence: EdgeEvidence = {\n kind: \"syntax\",\n confidence,\n span,\n };\n\n if (description) {\n return { ...evidence, description };\n }\n\n return evidence;\n}\n\nexport function createGraphBuilder(repository: SoftwareGraphRepository): GraphBuilder {\n return new GraphBuilder(repository);\n}\n\nexport class GraphBuilder {\n readonly #repository: SoftwareGraphRepository;\n readonly #nodes = new Map<string, SoftwareGraphNode>();\n readonly #edges = new Map<string, SoftwareGraphEdge>();\n readonly #diagnostics = new Map<string, SoftwareGraphDiagnostic>();\n #fileCount = 0;\n #parserVersions: Record<string, string> = {};\n\n constructor(repository: SoftwareGraphRepository) {\n this.#repository = repository;\n }\n\n setFileCount(fileCount: number): void {\n this.#fileCount = fileCount;\n }\n\n setParserVersion(name: string, version: string): void {\n this.#parserVersions = {\n ...this.#parserVersions,\n [name]: version,\n };\n }\n\n addNode(node: SoftwareGraphNode): SoftwareGraphNode {\n const normalizedNode = normalizeNode(node);\n const existing = this.#nodes.get(normalizedNode.id);\n\n if (!existing) {\n this.#nodes.set(normalizedNode.id, normalizedNode);\n return normalizedNode;\n }\n\n const merged = mergeNode(existing, normalizedNode);\n this.#nodes.set(merged.id, merged);\n return merged;\n }\n\n addEdge(edge: Omit<SoftwareGraphEdge, \"id\"> & { readonly id?: string | undefined }): SoftwareGraphEdge {\n const normalizedEdge = normalizeEdge({\n ...edge,\n id: edge.id ?? createEdgeId(edge.type, edge.from, edge.to),\n });\n const existing = this.#edges.get(normalizedEdge.id);\n\n if (!existing) {\n this.#edges.set(normalizedEdge.id, normalizedEdge);\n return normalizedEdge;\n }\n\n const merged = mergeEdge(existing, normalizedEdge);\n this.#edges.set(merged.id, merged);\n return merged;\n }\n\n addDiagnostic(diagnostic: SoftwareGraphDiagnostic): SoftwareGraphDiagnostic {\n const existing = this.#diagnostics.get(diagnostic.id);\n\n if (existing) {\n return existing;\n }\n\n this.#diagnostics.set(diagnostic.id, diagnostic);\n return diagnostic;\n }\n\n toGraph(durationMs?: number): SoftwareGraph {\n return createSoftwareGraph({\n repository: this.#repository,\n nodes: [...this.#nodes.values()],\n edges: [...this.#edges.values()],\n diagnostics: [...this.#diagnostics.values()],\n fileCount: this.#fileCount,\n parserVersions: this.#parserVersions,\n durationMs,\n });\n }\n}\n\nexport interface CreateSoftwareGraphInput {\n readonly repository: SoftwareGraphRepository;\n readonly nodes: readonly SoftwareGraphNode[];\n readonly edges: readonly SoftwareGraphEdge[];\n readonly diagnostics?: readonly SoftwareGraphDiagnostic[] | undefined;\n readonly fileCount?: number | undefined;\n readonly parserVersions?: Record<string, string> | undefined;\n readonly durationMs?: number | undefined;\n}\n\nexport function createSoftwareGraph(input: CreateSoftwareGraphInput): SoftwareGraph {\n const nodes = [...input.nodes].map(normalizeNode).sort(compareNodes);\n const edges = [...input.edges].map(normalizeEdge).sort(compareEdges);\n const diagnostics = [...(input.diagnostics ?? [])].sort(compareDiagnostics);\n const indexes = buildIndexes(nodes, edges);\n const deterministicHash = stableHash(\n stableStringify({\n repository: input.repository,\n nodes,\n edges,\n diagnostics,\n version: SOFTWARE_GRAPH_VERSION,\n }),\n );\n\n const metadata: SoftwareGraphMetadata = {\n generatedAt: \"1970-01-01T00:00:00.000Z\",\n deterministicHash,\n fileCount: input.fileCount ?? 0,\n nodeCount: nodes.length,\n edgeCount: edges.length,\n parserVersions: input.parserVersions ?? {},\n };\n\n const metadataWithDuration =\n input.durationMs === undefined ? metadata : { ...metadata, durationMs: input.durationMs };\n\n return {\n version: SOFTWARE_GRAPH_VERSION,\n repository: input.repository,\n nodes,\n edges,\n diagnostics,\n indexes,\n metadata: metadataWithDuration,\n };\n}\n\nexport function buildIndexes(\n nodes: readonly SoftwareGraphNode[],\n edges: readonly SoftwareGraphEdge[],\n): GraphIndexes {\n const nodeIdsByType: Partial<Record<NodeType, string[]>> = {};\n const edgeIdsByType: Partial<Record<RelationshipType, string[]>> = {};\n const inboundEdgeIdsByNodeId: Record<string, string[]> = {};\n const outboundEdgeIdsByNodeId: Record<string, string[]> = {};\n const edgeIdsBySourceAndType: Record<string, string[]> = {};\n\n for (const node of nodes) {\n pushIndexValue(nodeIdsByType, node.type, node.id);\n }\n\n for (const edge of edges) {\n pushIndexValue(edgeIdsByType, edge.type, edge.id);\n pushRecordValue(outboundEdgeIdsByNodeId, edge.from, edge.id);\n pushRecordValue(inboundEdgeIdsByNodeId, edge.to, edge.id);\n pushRecordValue(edgeIdsBySourceAndType, `${edge.from}:${edge.type}`, edge.id);\n }\n\n return {\n nodeIdsByType: sortIndex(nodeIdsByType),\n edgeIdsByType: sortIndex(edgeIdsByType),\n inboundEdgeIdsByNodeId: sortRecord(inboundEdgeIdsByNodeId),\n outboundEdgeIdsByNodeId: sortRecord(outboundEdgeIdsByNodeId),\n edgeIdsBySourceAndType: sortRecord(edgeIdsBySourceAndType),\n };\n}\n\nexport function summarizeGraph(graph: SoftwareGraph): string {\n const nodeSummary = summarizeCounts(graph.nodes.map((node) => node.type));\n const edgeSummary = summarizeCounts(graph.edges.map((edge) => edge.type));\n\n return [\n `Repository: ${graph.repository.name}`,\n `Files: ${graph.metadata.fileCount}`,\n `Nodes: ${graph.nodes.length}${nodeSummary ? ` (${nodeSummary})` : \"\"}`,\n `Edges: ${graph.edges.length}${edgeSummary ? ` (${edgeSummary})` : \"\"}`,\n `Diagnostics: ${graph.diagnostics.length}`,\n `Hash: ${graph.metadata.deterministicHash}`,\n ].join(\"\\n\");\n}\n\nexport function getNode(graph: SoftwareGraph, id: string): SoftwareGraphNode | undefined {\n return graph.nodes.find((node) => node.id === id);\n}\n\nexport function getEdge(graph: SoftwareGraph, id: string): SoftwareGraphEdge | undefined {\n return graph.edges.find((edge) => edge.id === id);\n}\n\nexport * from \"./semantic-index\";\n\nfunction normalizeNode(node: SoftwareGraphNode): SoftwareGraphNode {\n const normalized: SoftwareGraphNode = {\n id: node.id,\n type: node.type,\n name: node.name,\n };\n\n return withOptionalProperties(normalized, {\n file: node.file ? normalizePath(node.file) : undefined,\n package: node.package,\n span: node.span ? normalizeSpan(node.span) : undefined,\n metadata: node.metadata,\n });\n}\n\nfunction normalizeEdge(edge: SoftwareGraphEdge): SoftwareGraphEdge {\n const normalized: SoftwareGraphEdge = {\n id: edge.id,\n type: edge.type,\n from: edge.from,\n to: edge.to,\n };\n\n return withOptionalProperties(normalized, {\n evidence: edge.evidence?.map((item) => ({\n ...item,\n span: item.span ? normalizeSpan(item.span) : undefined,\n })),\n metadata: edge.metadata,\n });\n}\n\nfunction normalizeSpan(span: SourceSpan): SourceSpan {\n return {\n ...span,\n file: normalizePath(span.file),\n };\n}\n\nfunction mergeNode(left: SoftwareGraphNode, right: SoftwareGraphNode): SoftwareGraphNode {\n const merged: SoftwareGraphNode = {\n ...left,\n metadata: mergeJsonObject(left.metadata, right.metadata),\n };\n\n return withOptionalProperties(merged, {\n span: left.span ?? right.span,\n file: left.file ?? right.file,\n package: left.package ?? right.package,\n });\n}\n\nfunction mergeEdge(left: SoftwareGraphEdge, right: SoftwareGraphEdge): SoftwareGraphEdge {\n const evidence = dedupeEvidence([...(left.evidence ?? []), ...(right.evidence ?? [])]);\n const merged: SoftwareGraphEdge = {\n ...left,\n metadata: mergeJsonObject(left.metadata, right.metadata),\n };\n\n return withOptionalProperties(merged, {\n evidence: evidence.length > 0 ? evidence : undefined,\n });\n}\n\nfunction mergeJsonObject(\n left: JsonObject | undefined,\n right: JsonObject | undefined,\n): JsonObject | undefined {\n if (!left && !right) {\n return undefined;\n }\n\n return {\n ...(left ?? {}),\n ...(right ?? {}),\n };\n}\n\nfunction dedupeEvidence(evidence: readonly EdgeEvidence[]): readonly EdgeEvidence[] {\n const seen = new Set<string>();\n const deduped: EdgeEvidence[] = [];\n\n for (const item of evidence) {\n const key = stableStringify(item);\n\n if (!seen.has(key)) {\n seen.add(key);\n deduped.push(item);\n }\n }\n\n return deduped.sort((left, right) => stableStringify(left).localeCompare(stableStringify(right)));\n}\n\nfunction pushIndexValue<T extends string>(\n index: Partial<Record<T, string[]>>,\n key: T,\n value: string,\n): void {\n const values = index[key] ?? [];\n values.push(value);\n index[key] = values;\n}\n\nfunction pushRecordValue(index: Record<string, string[]>, key: string, value: string): void {\n const values = index[key] ?? [];\n values.push(value);\n index[key] = values;\n}\n\nfunction sortIndex<T extends string>(\n index: Partial<Record<T, string[]>>,\n): Partial<Record<T, readonly string[]>> {\n const sortedEntries = Object.entries(index)\n .map(([key, values]) => [key, [...(values as string[])].sort()] as const)\n .sort(([left], [right]) => left.localeCompare(right));\n\n return Object.fromEntries(sortedEntries) as unknown as Partial<Record<T, readonly string[]>>;\n}\n\nfunction sortRecord(index: Record<string, string[]>): Record<string, readonly string[]> {\n return Object.fromEntries(\n Object.entries(index)\n .map(([key, values]) => [key, [...values].sort()] as const)\n .sort(([left], [right]) => left.localeCompare(right)),\n );\n}\n\nfunction summarizeCounts(values: readonly string[]): string {\n const counts = new Map<string, number>();\n\n for (const value of values) {\n counts.set(value, (counts.get(value) ?? 0) + 1);\n }\n\n return [...counts.entries()]\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([value, count]) => `${value} ${count}`)\n .join(\", \");\n}\n\nfunction compareNodes(left: SoftwareGraphNode, right: SoftwareGraphNode): number {\n return left.id.localeCompare(right.id);\n}\n\nfunction compareEdges(left: SoftwareGraphEdge, right: SoftwareGraphEdge): number {\n return left.id.localeCompare(right.id);\n}\n\nfunction compareDiagnostics(\n left: SoftwareGraphDiagnostic,\n right: SoftwareGraphDiagnostic,\n): number {\n return left.id.localeCompare(right.id);\n}\n\nfunction withOptionalProperties<T extends object, O extends object>(target: T, optional: O): T & O {\n const entries = Object.entries(optional).filter(([, value]) => value !== undefined);\n return {\n ...target,\n ...Object.fromEntries(entries),\n } as T & O;\n}\n"],"mappings":"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","names":["compareEdges","withOptionalProperties"]}
@@ -1 +1 @@
1
- {"version":3,"file":"semantic-index.d.ts","sourceRoot":"","sources":["../src/semantic-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,QAAQ,EAEb,KAAK,aAAa,EAGnB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,QAAQ,GACR,SAAS,GACT,eAAe,GACf,aAAa,GACb,OAAO,GACP,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,gCAAgC,CAAC;IACzD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC3C,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IAC1D,QAAQ,CAAC,UAAU,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC;KAC9C,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAgND,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CA0CvE;AAoCD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,MAAM,EAAE,CAuBpG;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAmB/D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,oBAAoB,CAwBpH;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,oBAAoB,CAElH;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,oBAAoB,CAEjH;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,oBAAoB,CAElH;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,oBAAoB,CAMxH;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,oBAAoB,CAEtH;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,oBAAoB,CAEhH;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,oBAAoB,CAErH;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,oBAAoB,CAE5H"}
1
+ {"version":3,"file":"semantic-index.d.ts","sourceRoot":"","sources":["../src/semantic-index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xsarwagya/ontoly-core",
3
- "version": "0.1.0-alpha.15",
3
+ "version": "0.1.0-alpha.16",
4
4
  "description": "Software Graph schema, stable IDs, indexes, and graph helpers for Ontoly.",
5
5
  "type": "module",
6
6
  "license": "MIT",