infobroker 2026.8.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +529 -0
- package/bin/infobroker.js +5 -0
- package/dist/chain.d.ts +14 -0
- package/dist/chain.js +63 -0
- package/dist/chain.js.map +1 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.js +271 -0
- package/dist/config.js.map +1 -0
- package/dist/corroborate.d.ts +25 -0
- package/dist/corroborate.js +421 -0
- package/dist/corroborate.js.map +1 -0
- package/dist/http.d.ts +5 -0
- package/dist/http.js +25 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +909 -0
- package/dist/index.js.map +1 -0
- package/dist/kb-crypto.d.ts +43 -0
- package/dist/kb-crypto.js +199 -0
- package/dist/kb-crypto.js.map +1 -0
- package/dist/kb.d.ts +100 -0
- package/dist/kb.js +1009 -0
- package/dist/kb.js.map +1 -0
- package/dist/lib/html.d.ts +2 -0
- package/dist/lib/html.js +13 -0
- package/dist/lib/html.js.map +1 -0
- package/dist/lib/url-guard.d.ts +14 -0
- package/dist/lib/url-guard.js +75 -0
- package/dist/lib/url-guard.js.map +1 -0
- package/dist/normalizer.d.ts +2 -0
- package/dist/normalizer.js +53 -0
- package/dist/normalizer.js.map +1 -0
- package/dist/providers/arxiv.d.ts +2 -0
- package/dist/providers/arxiv.js +78 -0
- package/dist/providers/arxiv.js.map +1 -0
- package/dist/providers/brave.d.ts +2 -0
- package/dist/providers/brave.js +79 -0
- package/dist/providers/brave.js.map +1 -0
- package/dist/providers/core.d.ts +2 -0
- package/dist/providers/core.js +62 -0
- package/dist/providers/core.js.map +1 -0
- package/dist/providers/duckduckgo.d.ts +2 -0
- package/dist/providers/duckduckgo.js +93 -0
- package/dist/providers/duckduckgo.js.map +1 -0
- package/dist/providers/exa.d.ts +2 -0
- package/dist/providers/exa.js +68 -0
- package/dist/providers/exa.js.map +1 -0
- package/dist/providers/generic-http.d.ts +2 -0
- package/dist/providers/generic-http.js +96 -0
- package/dist/providers/generic-http.js.map +1 -0
- package/dist/providers/github.d.ts +2 -0
- package/dist/providers/github.js +58 -0
- package/dist/providers/github.js.map +1 -0
- package/dist/providers/index.d.ts +3 -0
- package/dist/providers/index.js +59 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/internet_archive.d.ts +2 -0
- package/dist/providers/internet_archive.js +59 -0
- package/dist/providers/internet_archive.js.map +1 -0
- package/dist/providers/jina.d.ts +2 -0
- package/dist/providers/jina.js +34 -0
- package/dist/providers/jina.js.map +1 -0
- package/dist/providers/marginalia.d.ts +2 -0
- package/dist/providers/marginalia.js +47 -0
- package/dist/providers/marginalia.js.map +1 -0
- package/dist/providers/mojeek.d.ts +2 -0
- package/dist/providers/mojeek.js +47 -0
- package/dist/providers/mojeek.js.map +1 -0
- package/dist/providers/openstreetmap.d.ts +2 -0
- package/dist/providers/openstreetmap.js +43 -0
- package/dist/providers/openstreetmap.js.map +1 -0
- package/dist/providers/searxng.d.ts +2 -0
- package/dist/providers/searxng.js +52 -0
- package/dist/providers/searxng.js.map +1 -0
- package/dist/providers/semantic_scholar.d.ts +2 -0
- package/dist/providers/semantic_scholar.js +54 -0
- package/dist/providers/semantic_scholar.js.map +1 -0
- package/dist/providers/stack_exchange.d.ts +2 -0
- package/dist/providers/stack_exchange.js +83 -0
- package/dist/providers/stack_exchange.js.map +1 -0
- package/dist/providers/tavily.d.ts +2 -0
- package/dist/providers/tavily.js +66 -0
- package/dist/providers/tavily.js.map +1 -0
- package/dist/providers/wiby.d.ts +2 -0
- package/dist/providers/wiby.js +46 -0
- package/dist/providers/wiby.js.map +1 -0
- package/dist/providers/wikidata.d.ts +2 -0
- package/dist/providers/wikidata.js +46 -0
- package/dist/providers/wikidata.js.map +1 -0
- package/dist/providers/wikipedia.d.ts +2 -0
- package/dist/providers/wikipedia.js +71 -0
- package/dist/providers/wikipedia.js.map +1 -0
- package/dist/providers/wiktionary.d.ts +2 -0
- package/dist/providers/wiktionary.js +48 -0
- package/dist/providers/wiktionary.js.map +1 -0
- package/dist/providers/yep.d.ts +2 -0
- package/dist/providers/yep.js +104 -0
- package/dist/providers/yep.js.map +1 -0
- package/dist/quota.d.ts +37 -0
- package/dist/quota.js +116 -0
- package/dist/quota.js.map +1 -0
- package/dist/rate-limiter.d.ts +7 -0
- package/dist/rate-limiter.js +37 -0
- package/dist/rate-limiter.js.map +1 -0
- package/dist/retry.d.ts +11 -0
- package/dist/retry.js +51 -0
- package/dist/retry.js.map +1 -0
- package/dist/types.d.ts +231 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +58 -0
package/dist/config.js
ADDED
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
// @implements REQ-010 REQ-011 REQ-012 REQ-013 REQ-014 REQ-015 REQ-026a REQ-037 REQ-040 REQ-042 REQ-043 REQ-067 REQ-074 REQ-084
|
|
2
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
let configPath;
|
|
5
|
+
let cachedConfig = null;
|
|
6
|
+
export function getConfigPath() {
|
|
7
|
+
if (!configPath) {
|
|
8
|
+
configPath = process.env["INFOBROKER_CONFIG"] || "./config.json";
|
|
9
|
+
}
|
|
10
|
+
return configPath;
|
|
11
|
+
}
|
|
12
|
+
export function getUserConfigPath() {
|
|
13
|
+
return process.env["INFOBROKER_CONFIG_LOCAL"] || join(dirname(getConfigPath()), "config.local.json");
|
|
14
|
+
}
|
|
15
|
+
function isPlainObject(v) {
|
|
16
|
+
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
17
|
+
}
|
|
18
|
+
// Deep-merge a user object over a shipped default object. Leaf values in the
|
|
19
|
+
// user layer replace the shipped values; arrays are replaced wholesale.
|
|
20
|
+
function mergeLayer(base, overlay) {
|
|
21
|
+
if (!isPlainObject(base) || !isPlainObject(overlay)) {
|
|
22
|
+
return (overlay === undefined ? base : overlay);
|
|
23
|
+
}
|
|
24
|
+
const out = { ...base };
|
|
25
|
+
for (const [key, value] of Object.entries(overlay)) {
|
|
26
|
+
if (value === undefined)
|
|
27
|
+
continue;
|
|
28
|
+
if (isPlainObject(value) && isPlainObject(out[key])) {
|
|
29
|
+
out[key] = mergeLayer(out[key], value);
|
|
30
|
+
}
|
|
31
|
+
else if (Array.isArray(value) && Array.isArray(out[key])) {
|
|
32
|
+
// Arrays are replaced wholesale (per REQ-010/DECISIONS.md). Warn when a
|
|
33
|
+
// user overlay replaces a non-empty shipped array so the takeover is not
|
|
34
|
+
// silent — an update to the shipped array will not reach this key.
|
|
35
|
+
if (out[key].length > 0 && !sameArray(out[key], value)) {
|
|
36
|
+
console.warn(`[infobroker] config overlay replaces shipped array "${key}" wholesale (shipped ${out[key].length} → user ${value.length}). Updates to the shipped default for this key will not apply.`);
|
|
37
|
+
}
|
|
38
|
+
out[key] = value;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
out[key] = value;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return out;
|
|
45
|
+
}
|
|
46
|
+
function sameArray(a, b) {
|
|
47
|
+
if (a.length !== b.length)
|
|
48
|
+
return false;
|
|
49
|
+
return a.every((v, i) => v === b[i]);
|
|
50
|
+
}
|
|
51
|
+
function readJson(path) {
|
|
52
|
+
if (!existsSync(path)) {
|
|
53
|
+
throw new Error(`Config file not found: ${path}`);
|
|
54
|
+
}
|
|
55
|
+
return JSON.parse(readFileSync(path, "utf-8"));
|
|
56
|
+
}
|
|
57
|
+
function loadConfigFromDisk() {
|
|
58
|
+
const base = readJson(getConfigPath());
|
|
59
|
+
const userPath = getUserConfigPath();
|
|
60
|
+
const merged = userPath && existsSync(userPath)
|
|
61
|
+
? mergeLayer(base, readJson(userPath))
|
|
62
|
+
: base;
|
|
63
|
+
return applyDefaults(merged);
|
|
64
|
+
}
|
|
65
|
+
function applyDefaults(config) {
|
|
66
|
+
const defaults = config.defaults;
|
|
67
|
+
if (!defaults)
|
|
68
|
+
return config;
|
|
69
|
+
for (const provider of Object.values(config.providers)) {
|
|
70
|
+
if (defaults.timeout !== undefined && provider.timeout === undefined)
|
|
71
|
+
provider.timeout = defaults.timeout;
|
|
72
|
+
if (defaults.retry_count !== undefined && provider.retry_count === undefined)
|
|
73
|
+
provider.retry_count = defaults.retry_count;
|
|
74
|
+
if (defaults.retry_backoff_ms !== undefined && provider.retry_backoff_ms === undefined)
|
|
75
|
+
provider.retry_backoff_ms = defaults.retry_backoff_ms;
|
|
76
|
+
}
|
|
77
|
+
return config;
|
|
78
|
+
}
|
|
79
|
+
function validateConfig(config) {
|
|
80
|
+
const errors = [];
|
|
81
|
+
for (const [slug, provider] of Object.entries(config.providers)) {
|
|
82
|
+
if (!provider.tier || !["builtin", "free_http", "keyed_http", "self_hosted_http", "generic_http"].includes(provider.tier)) {
|
|
83
|
+
errors.push(`Provider "${slug}": missing or invalid "tier"`);
|
|
84
|
+
}
|
|
85
|
+
if (!Array.isArray(provider.capabilities)) {
|
|
86
|
+
errors.push(`Provider "${slug}": missing or invalid "capabilities"`);
|
|
87
|
+
}
|
|
88
|
+
if (typeof provider.enabled !== "boolean") {
|
|
89
|
+
errors.push(`Provider "${slug}": missing or invalid "enabled"`);
|
|
90
|
+
}
|
|
91
|
+
if (typeof provider.priority !== "number") {
|
|
92
|
+
errors.push(`Provider "${slug}": missing or invalid "priority"`);
|
|
93
|
+
}
|
|
94
|
+
if (provider.rate_limit) {
|
|
95
|
+
for (const [key, value] of Object.entries(provider.rate_limit)) {
|
|
96
|
+
if (typeof value === "number" && value < 0) {
|
|
97
|
+
errors.push(`Provider "${slug}": rate_limit.${key} must be non-negative`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (provider.timeout !== undefined && (typeof provider.timeout !== "number" || provider.timeout < 0)) {
|
|
102
|
+
errors.push(`Provider "${slug}": timeout must be a non-negative number`);
|
|
103
|
+
}
|
|
104
|
+
if (provider.tier === "generic_http") {
|
|
105
|
+
if (typeof provider.endpoint !== "string" || !/^https?:\/\//i.test(provider.endpoint)) {
|
|
106
|
+
errors.push(`Provider "${slug}": generic_http requires an "endpoint" (http(s) URL)`);
|
|
107
|
+
}
|
|
108
|
+
if (typeof provider.query_param !== "string" || provider.query_param.length === 0) {
|
|
109
|
+
errors.push(`Provider "${slug}": generic_http requires "query_param"`);
|
|
110
|
+
}
|
|
111
|
+
if (provider.results_path !== undefined && (typeof provider.results_path !== "string" || provider.results_path.length === 0)) {
|
|
112
|
+
errors.push(`Provider "${slug}": "results_path" must be a non-empty string when present`);
|
|
113
|
+
}
|
|
114
|
+
if (provider.field_map !== undefined) {
|
|
115
|
+
if (typeof provider.field_map !== "object" || provider.field_map === null || Array.isArray(provider.field_map)) {
|
|
116
|
+
errors.push(`Provider "${slug}": "field_map" must be an object`);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
for (const [k, v] of Object.entries(provider.field_map)) {
|
|
120
|
+
if (typeof v !== "string" || v.length === 0) {
|
|
121
|
+
errors.push(`Provider "${slug}": field_map.${k} must be a non-empty string`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
for (const key of ["endpoint", "query_param", "results_path", "field_map"]) {
|
|
129
|
+
if (provider[key] !== undefined) {
|
|
130
|
+
errors.push(`Provider "${slug}": "${key}" is only valid for generic_http providers`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
for (const [taskType, chain] of Object.entries(config.dispatch)) {
|
|
136
|
+
for (const slug of chain) {
|
|
137
|
+
if (!config.providers[slug]) {
|
|
138
|
+
errors.push(`Dispatch chain "${taskType}" references undeclared provider "${slug}"`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (config.corroboration?.authority_weights) {
|
|
143
|
+
for (const [sourceType, weight] of Object.entries(config.corroboration.authority_weights)) {
|
|
144
|
+
if (typeof weight !== "number" || weight < 0) {
|
|
145
|
+
errors.push(`corroboration.authority_weights.${sourceType} must be a non-negative number`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (typeof config.output.fallback_depth !== "number" || config.output.fallback_depth < 1) {
|
|
150
|
+
errors.push("output.fallback_depth must be a positive number");
|
|
151
|
+
}
|
|
152
|
+
if (typeof config.output.max_redirect_hops !== "number" || config.output.max_redirect_hops < 1) {
|
|
153
|
+
errors.push("output.max_redirect_hops must be a positive number");
|
|
154
|
+
}
|
|
155
|
+
if (config.kb) {
|
|
156
|
+
const kb = config.kb;
|
|
157
|
+
if (typeof kb.chunk_size !== "number" || kb.chunk_size < 1) {
|
|
158
|
+
errors.push("kb.chunk_size must be a positive number");
|
|
159
|
+
}
|
|
160
|
+
if (typeof kb.chunk_overlap !== "number" || kb.chunk_overlap < 0) {
|
|
161
|
+
errors.push("kb.chunk_overlap must be a non-negative number");
|
|
162
|
+
}
|
|
163
|
+
if (typeof kb.max_results !== "number" || kb.max_results < 1) {
|
|
164
|
+
errors.push("kb.max_results must be a positive number");
|
|
165
|
+
}
|
|
166
|
+
if (typeof kb.maintenance_interval_minutes !== "number" || kb.maintenance_interval_minutes < 0) {
|
|
167
|
+
errors.push("kb.maintenance_interval_minutes must be a non-negative number");
|
|
168
|
+
}
|
|
169
|
+
if (typeof kb.auto_index !== "boolean") {
|
|
170
|
+
errors.push("kb.auto_index must be a boolean");
|
|
171
|
+
}
|
|
172
|
+
if (kb.reports_dir !== undefined && typeof kb.reports_dir !== "string") {
|
|
173
|
+
errors.push("kb.reports_dir must be a string");
|
|
174
|
+
}
|
|
175
|
+
if (kb.default_save_destination !== undefined && !["kb", "disk", "both"].includes(kb.default_save_destination)) {
|
|
176
|
+
errors.push("kb.default_save_destination must be one of: kb, disk, both");
|
|
177
|
+
}
|
|
178
|
+
if (kb.expiry && !kb.freshness) {
|
|
179
|
+
console.error("[infobroker] kb.expiry is deprecated — migrate to kb.freshness tiers");
|
|
180
|
+
}
|
|
181
|
+
if (!kb.freshness && !kb.expiry) {
|
|
182
|
+
errors.push("kb must define freshness or expiry");
|
|
183
|
+
}
|
|
184
|
+
if (kb.freshness) {
|
|
185
|
+
if (!kb.freshness.tiers || typeof kb.freshness.tiers !== "object") {
|
|
186
|
+
errors.push("kb.freshness.tiers must be an object");
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
for (const [tier, def] of Object.entries(kb.freshness.tiers)) {
|
|
190
|
+
if (typeof def.decay_hours !== "number" || def.decay_hours === undefined) {
|
|
191
|
+
errors.push(`kb.freshness.tiers.${tier}.decay_hours must be a number`);
|
|
192
|
+
}
|
|
193
|
+
if (typeof def.expiry_hours !== "number" || def.expiry_hours === undefined) {
|
|
194
|
+
errors.push(`kb.freshness.tiers.${tier}.expiry_hours must be a number`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (typeof kb.freshness.auto_classify !== "boolean") {
|
|
199
|
+
errors.push("kb.freshness.auto_classify must be a boolean");
|
|
200
|
+
}
|
|
201
|
+
if (typeof kb.freshness.default_tier !== "string") {
|
|
202
|
+
errors.push("kb.freshness.default_tier must be a string");
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
if (kb.kb_first_relevance_threshold !== undefined && typeof kb.kb_first_relevance_threshold !== "number") {
|
|
206
|
+
errors.push("kb.kb_first_relevance_threshold must be a number");
|
|
207
|
+
}
|
|
208
|
+
if (kb.kb_first_confidence_threshold !== undefined && typeof kb.kb_first_confidence_threshold !== "number") {
|
|
209
|
+
errors.push("kb.kb_first_confidence_threshold must be a number");
|
|
210
|
+
}
|
|
211
|
+
if (kb.encryption !== undefined) {
|
|
212
|
+
if (typeof kb.encryption !== "object" || kb.encryption === null || Array.isArray(kb.encryption)) {
|
|
213
|
+
errors.push("kb.encryption must be an object");
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
if (typeof kb.encryption.enabled !== "boolean") {
|
|
217
|
+
errors.push("kb.encryption.enabled must be a boolean");
|
|
218
|
+
}
|
|
219
|
+
if (kb.encryption.key_file !== undefined && (typeof kb.encryption.key_file !== "string" || kb.encryption.key_file.length === 0)) {
|
|
220
|
+
errors.push("kb.encryption.key_file must be a non-empty string when present");
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
if (errors.length > 0) {
|
|
226
|
+
throw new Error(`Config validation failed:\n${errors.join("\n")}`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
export function loadConfig() {
|
|
230
|
+
const config = loadConfigFromDisk();
|
|
231
|
+
validateConfig(config);
|
|
232
|
+
cachedConfig = config;
|
|
233
|
+
return config;
|
|
234
|
+
}
|
|
235
|
+
export function reloadConfig() {
|
|
236
|
+
const newConfig = loadConfigFromDisk();
|
|
237
|
+
validateConfig(newConfig);
|
|
238
|
+
cachedConfig = newConfig;
|
|
239
|
+
return newConfig;
|
|
240
|
+
}
|
|
241
|
+
export function getConfig() {
|
|
242
|
+
if (!cachedConfig) {
|
|
243
|
+
return loadConfig();
|
|
244
|
+
}
|
|
245
|
+
return cachedConfig;
|
|
246
|
+
}
|
|
247
|
+
export function getEnvVar(providerSlug, suffix) {
|
|
248
|
+
const key = `INFOBROKER_${providerSlug.toUpperCase()}${suffix}`;
|
|
249
|
+
return process.env[key];
|
|
250
|
+
}
|
|
251
|
+
export function getActiveProviders() {
|
|
252
|
+
const config = getConfig();
|
|
253
|
+
return Object.entries(config.providers).filter(([, p]) => p.enabled);
|
|
254
|
+
}
|
|
255
|
+
export function getDispatchChain(taskType) {
|
|
256
|
+
const config = getConfig();
|
|
257
|
+
const chain = config.dispatch[taskType];
|
|
258
|
+
if (!chain)
|
|
259
|
+
return [];
|
|
260
|
+
return chain.filter((slug) => {
|
|
261
|
+
const provider = config.providers[slug];
|
|
262
|
+
if (!provider || !provider.enabled)
|
|
263
|
+
return false;
|
|
264
|
+
if (provider.tier === "keyed_http" && provider.auth_env && !process.env[provider.auth_env])
|
|
265
|
+
return false;
|
|
266
|
+
if (provider.tier === "self_hosted_http" && provider.url_env && !process.env[provider.url_env])
|
|
267
|
+
return false;
|
|
268
|
+
return true;
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { SearchResult, CorroborationResult, CorroborationFinding } from "./types.js";
|
|
2
|
+
type Searcher = (query: string, opts?: {
|
|
3
|
+
max_results?: number;
|
|
4
|
+
}) => Promise<SearchResult[]>;
|
|
5
|
+
export declare const SEARCHERS: Record<string, Searcher>;
|
|
6
|
+
export declare function resolveSearcher(slug: string, searchers?: Record<string, Searcher>): Searcher | undefined;
|
|
7
|
+
export declare function extractTopic(title: string): string;
|
|
8
|
+
export declare function jaccardSimilarity(a: string, b: string): number;
|
|
9
|
+
interface Source {
|
|
10
|
+
title: string;
|
|
11
|
+
url: string;
|
|
12
|
+
snippet: string;
|
|
13
|
+
claim?: string;
|
|
14
|
+
source_type?: string;
|
|
15
|
+
original_source?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function reconcileClaims(findings: Map<string, CorroborationFinding>, results: SearchResult[], similarityThreshold?: number, authorityWeights?: Record<string, number>): void;
|
|
18
|
+
export declare function computeConfidence(sources: Source[], authorityWeights?: Record<string, number>): number;
|
|
19
|
+
export declare function corroborate(query: string, options?: {
|
|
20
|
+
max_iterations?: number;
|
|
21
|
+
confidence_threshold?: number;
|
|
22
|
+
providers?: string[];
|
|
23
|
+
searchers?: Record<string, Searcher>;
|
|
24
|
+
}): Promise<CorroborationResult>;
|
|
25
|
+
export {};
|