@xapp/arachne-web-service 1.31.0 → 1.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/ArachneWebService.d.ts +16 -3
- package/lib/ArachneWebService.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/llm/LLMProvider.d.ts +42 -5
- package/lib/llm/LLMProvider.js +61 -8
- package/lib/llm/LLMProvider.js.map +1 -1
- package/lib/taxonomy/ServiceTaxonomy.d.ts +134 -0
- package/lib/taxonomy/ServiceTaxonomy.js +95 -0
- package/lib/taxonomy/ServiceTaxonomy.js.map +1 -0
- package/lib/taxonomy/v1.json +4453 -0
- package/package.json +2 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ServiceTaxonomy = exports.SERVICE_TAXONOMY_V1 = void 0;
|
|
7
|
+
/*! Copyright (c) 2026, XAPP AI */
|
|
8
|
+
const v1_json_1 = __importDefault(require("./v1.json"));
|
|
9
|
+
/**
|
|
10
|
+
* Service Taxonomy v1, the vocabulary shared by website extraction and homeowner lead labeling.
|
|
11
|
+
*/
|
|
12
|
+
exports.SERVICE_TAXONOMY_V1 = v1_json_1.default;
|
|
13
|
+
/**
|
|
14
|
+
* Lookups over a taxonomy: canonical slugs, aliases and the family a job is scored in.
|
|
15
|
+
*/
|
|
16
|
+
class ServiceTaxonomy {
|
|
17
|
+
constructor(taxonomy = exports.SERVICE_TAXONOMY_V1) {
|
|
18
|
+
var _a, _b;
|
|
19
|
+
this.taxonomy = taxonomy;
|
|
20
|
+
this.version = taxonomy.version;
|
|
21
|
+
this.jobs = [];
|
|
22
|
+
this.families = new Set();
|
|
23
|
+
this.trades = new Set();
|
|
24
|
+
for (const trade of taxonomy.trades) {
|
|
25
|
+
this.trades.add(trade.slug);
|
|
26
|
+
for (const job of (_a = trade.jobs) !== null && _a !== void 0 ? _a : []) {
|
|
27
|
+
this.jobs.push(Object.assign(Object.assign({}, job), { trade: trade.slug }));
|
|
28
|
+
}
|
|
29
|
+
for (const family of (_b = trade.families) !== null && _b !== void 0 ? _b : []) {
|
|
30
|
+
this.families.add(family.slug);
|
|
31
|
+
for (const job of family.jobs) {
|
|
32
|
+
this.jobs.push(Object.assign(Object.assign({}, job), { trade: trade.slug, family: family.slug }));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
this.bySlug = new Map(this.jobs.map((job) => [job.slug, job]));
|
|
37
|
+
}
|
|
38
|
+
job(slug) {
|
|
39
|
+
return this.bySlug.get(slug);
|
|
40
|
+
}
|
|
41
|
+
isFamily(slug) {
|
|
42
|
+
return this.families.has(slug);
|
|
43
|
+
}
|
|
44
|
+
isTrade(slug) {
|
|
45
|
+
return this.trades.has(slug);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Jobs a business website can be tagged with: not homeowner-only, not deprecated.
|
|
49
|
+
*
|
|
50
|
+
* @param trades Limit to these trades
|
|
51
|
+
*/
|
|
52
|
+
extractableJobs(trades) {
|
|
53
|
+
return this.jobs.filter((job) => !job.homeowner_only && !job.deprecated_by && (!trades || trades.includes(job.trade)));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Maps a slug, alias or deprecated slug to the current canonical slug.
|
|
57
|
+
*
|
|
58
|
+
* @returns The canonical slug, or undefined when the slug is not in the taxonomy
|
|
59
|
+
*/
|
|
60
|
+
resolve(slug) {
|
|
61
|
+
var _a;
|
|
62
|
+
let candidate = slug === null || slug === void 0 ? void 0 : slug.trim().toLowerCase();
|
|
63
|
+
if (!candidate) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
candidate = (_a = this.taxonomy.aliases[candidate]) !== null && _a !== void 0 ? _a : candidate;
|
|
67
|
+
if (!this.bySlug.has(candidate)) {
|
|
68
|
+
const prefix = Object.keys(this.taxonomy.alias_prefixes).find((p) => candidate.startsWith(p));
|
|
69
|
+
if (prefix) {
|
|
70
|
+
candidate = this.taxonomy.alias_prefixes[prefix] + candidate.slice(prefix.length);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Follow deprecations, guarding against a cycle
|
|
74
|
+
const seen = new Set();
|
|
75
|
+
let job = this.bySlug.get(candidate);
|
|
76
|
+
while ((job === null || job === void 0 ? void 0 : job.deprecated_by) && !seen.has(job.slug)) {
|
|
77
|
+
seen.add(job.slug);
|
|
78
|
+
job = this.bySlug.get(job.deprecated_by);
|
|
79
|
+
}
|
|
80
|
+
return job === null || job === void 0 ? void 0 : job.slug;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The family a job is scored in, or its trade when the trade has no families.
|
|
84
|
+
*
|
|
85
|
+
* @returns The family or trade slug, or undefined when the slug is not in the taxonomy
|
|
86
|
+
*/
|
|
87
|
+
familyOf(slug) {
|
|
88
|
+
var _a;
|
|
89
|
+
const canonical = this.resolve(slug);
|
|
90
|
+
const job = canonical ? this.bySlug.get(canonical) : undefined;
|
|
91
|
+
return job ? (_a = job.family) !== null && _a !== void 0 ? _a : job.trade : undefined;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
exports.ServiceTaxonomy = ServiceTaxonomy;
|
|
95
|
+
//# sourceMappingURL=ServiceTaxonomy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServiceTaxonomy.js","sourceRoot":"","sources":["../../src/taxonomy/ServiceTaxonomy.ts"],"names":[],"mappings":"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"}
|