@agentsean/providers 1.0.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.
Files changed (62) hide show
  1. package/LICENSE +661 -0
  2. package/dist/autocomplete.d.ts +14 -0
  3. package/dist/autocomplete.d.ts.map +1 -0
  4. package/dist/autocomplete.js +40 -0
  5. package/dist/autocomplete.js.map +1 -0
  6. package/dist/bing.d.ts +23 -0
  7. package/dist/bing.d.ts.map +1 -0
  8. package/dist/bing.js +128 -0
  9. package/dist/bing.js.map +1 -0
  10. package/dist/dataforseo.d.ts +33 -0
  11. package/dist/dataforseo.d.ts.map +1 -0
  12. package/dist/dataforseo.js +267 -0
  13. package/dist/dataforseo.js.map +1 -0
  14. package/dist/gsc.d.ts +4 -0
  15. package/dist/gsc.d.ts.map +1 -0
  16. package/dist/gsc.js +26 -0
  17. package/dist/gsc.js.map +1 -0
  18. package/dist/index.d.ts +16 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +15 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/jina.d.ts +6 -0
  23. package/dist/jina.d.ts.map +1 -0
  24. package/dist/jina.js +18 -0
  25. package/dist/jina.js.map +1 -0
  26. package/dist/ledger.d.ts +13 -0
  27. package/dist/ledger.d.ts.map +1 -0
  28. package/dist/ledger.js +64 -0
  29. package/dist/ledger.js.map +1 -0
  30. package/dist/openpagerank.d.ts +11 -0
  31. package/dist/openpagerank.d.ts.map +1 -0
  32. package/dist/openpagerank.js +44 -0
  33. package/dist/openpagerank.js.map +1 -0
  34. package/dist/rates.d.ts +28 -0
  35. package/dist/rates.d.ts.map +1 -0
  36. package/dist/rates.js +47 -0
  37. package/dist/rates.js.map +1 -0
  38. package/dist/refuse.d.ts +33 -0
  39. package/dist/refuse.d.ts.map +1 -0
  40. package/dist/refuse.js +52 -0
  41. package/dist/refuse.js.map +1 -0
  42. package/dist/registry.d.ts +15 -0
  43. package/dist/registry.d.ts.map +1 -0
  44. package/dist/registry.js +71 -0
  45. package/dist/registry.js.map +1 -0
  46. package/dist/types.d.ts +119 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +3 -0
  49. package/dist/types.js.map +1 -0
  50. package/dist/unavailable.d.ts +10 -0
  51. package/dist/unavailable.d.ts.map +1 -0
  52. package/dist/unavailable.js +65 -0
  53. package/dist/unavailable.js.map +1 -0
  54. package/dist/wayback.d.ts +6 -0
  55. package/dist/wayback.d.ts.map +1 -0
  56. package/dist/wayback.js +25 -0
  57. package/dist/wayback.js.map +1 -0
  58. package/dist/wikidata.d.ts +6 -0
  59. package/dist/wikidata.d.ts.map +1 -0
  60. package/dist/wikidata.js +23 -0
  61. package/dist/wikidata.js.map +1 -0
  62. package/package.json +52 -0
@@ -0,0 +1,65 @@
1
+ import { ProviderRefusedError } from "./refuse.js";
2
+ import { freeEstimate } from "./rates.js";
3
+ export function unavailableSerp() {
4
+ return {
5
+ id: "none",
6
+ available: false,
7
+ serp() {
8
+ return {
9
+ estimate: freeEstimate("none", "serp", "unavailable", 0, "no licensed SERP provider"),
10
+ async run() {
11
+ throw new ProviderRefusedError("no_licensed_serp", "No licensed SERP provider configured. Sean never scrapes Google. Add a DataForSEO key to upgrade in place.");
12
+ },
13
+ };
14
+ },
15
+ };
16
+ }
17
+ export function unavailableVolume() {
18
+ return {
19
+ id: "none",
20
+ volume() {
21
+ return {
22
+ estimate: freeEstimate("none", "volume", "unavailable", 0, "no volume provider"),
23
+ async run() {
24
+ return [];
25
+ },
26
+ };
27
+ },
28
+ };
29
+ }
30
+ export function unavailableBacklinks() {
31
+ return {
32
+ id: "none",
33
+ available: false,
34
+ overview() {
35
+ return {
36
+ estimate: freeEstimate("none", "backlinks", "unavailable", 0),
37
+ async run() {
38
+ throw new ProviderRefusedError("no_backlinks_provider", "No backlink/authority provider configured. OpenPageRank is the free authority proxy; DataForSEO is the paid graph.");
39
+ },
40
+ };
41
+ },
42
+ };
43
+ }
44
+ export function emptyKeywords() {
45
+ return {
46
+ id: "none",
47
+ demand() {
48
+ return {
49
+ estimate: freeEstimate("none", "keywords", "empty", 0),
50
+ async run() {
51
+ return [];
52
+ },
53
+ };
54
+ },
55
+ related() {
56
+ return {
57
+ estimate: freeEstimate("none", "keywords", "empty", 0),
58
+ async run() {
59
+ return [];
60
+ },
61
+ };
62
+ },
63
+ };
64
+ }
65
+ //# sourceMappingURL=unavailable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unavailable.js","sourceRoot":"","sources":["../src/unavailable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAY1C,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,EAAE,EAAE,MAAM;QACV,SAAS,EAAE,KAAK;QAChB,IAAI;YACF,OAAO;gBACL,QAAQ,EAAE,YAAY,CACpB,MAAM,EACN,MAAM,EACN,aAAa,EACb,CAAC,EACD,2BAA2B,CAC5B;gBACD,KAAK,CAAC,GAAG;oBACP,MAAM,IAAI,oBAAoB,CAC5B,kBAAkB,EAClB,4GAA4G,CAC7G,CAAC;gBACJ,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,EAAE,EAAE,MAAM;QACV,MAAM;YACJ,OAAO;gBACL,QAAQ,EAAE,YAAY,CACpB,MAAM,EACN,QAAQ,EACR,aAAa,EACb,CAAC,EACD,oBAAoB,CACrB;gBACD,KAAK,CAAC,GAAG;oBACP,OAAO,EAAE,CAAC;gBACZ,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,EAAE,EAAE,MAAM;QACV,SAAS,EAAE,KAAK;QAChB,QAAQ;YACN,OAAO;gBACL,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC7D,KAAK,CAAC,GAAG;oBACP,MAAM,IAAI,oBAAoB,CAC5B,uBAAuB,EACvB,oHAAoH,CACrH,CAAC;gBACJ,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa;IAK3B,OAAO;QACL,EAAE,EAAE,MAAM;QACV,MAAM;YACJ,OAAO;gBACL,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;gBACtD,KAAK,CAAC,GAAG;oBACP,OAAO,EAAE,CAAC;gBACZ,CAAC;aACF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO;gBACL,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;gBACtD,KAAK,CAAC,GAAG;oBACP,OAAO,EAAE,CAAC;gBACZ,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { WaybackCapture } from "./types.js";
2
+ export declare function waybackCdx(url: string, opts?: {
3
+ fetch?: typeof fetch;
4
+ limit?: number;
5
+ }): Promise<WaybackCapture[]>;
6
+ //# sourceMappingURL=wayback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wayback.d.ts","sourceRoot":"","sources":["../src/wayback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,cAAc,EAAE,CAAC,CAkB3B"}
@@ -0,0 +1,25 @@
1
+ const CDX = "https://web.archive.org/cdx/search/cdx";
2
+ export async function waybackCdx(url, opts) {
3
+ const fetchFn = opts?.fetch ?? fetch;
4
+ const endpoint = new URL(CDX);
5
+ endpoint.searchParams.set("url", url);
6
+ endpoint.searchParams.set("output", "json");
7
+ endpoint.searchParams.set("limit", String(opts?.limit ?? 5));
8
+ endpoint.searchParams.set("fl", "original,timestamp,statuscode");
9
+ const res = await fetchFn(endpoint, { headers: { accept: "application/json" } });
10
+ if (!res.ok)
11
+ throw new Error(`Wayback CDX HTTP ${res.status}`);
12
+ const json = (await res.json());
13
+ if (!Array.isArray(json) || json.length < 2)
14
+ return [];
15
+ const rows = json.slice(1);
16
+ return rows.map((row) => {
17
+ const cap = { url, timestamp: row[1] ?? "" };
18
+ if (row[0])
19
+ cap.original = row[0];
20
+ if (row[2])
21
+ cap.status = row[2];
22
+ return cap;
23
+ });
24
+ }
25
+ //# sourceMappingURL=wayback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wayback.js","sourceRoot":"","sources":["../src/wayback.ts"],"names":[],"mappings":"AAEA,MAAM,GAAG,GAAG,wCAAwC,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,IAA+C;IAE/C,MAAM,OAAO,GAAG,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,+BAA+B,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACjF,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAY,CAAC;IAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAe,CAAC;IACzC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,GAAG,GAAmB,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7D,IAAI,GAAG,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,GAAG,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { EntityHit } from "./types.js";
2
+ export declare function wikidataSearch(q: string, opts?: {
3
+ fetch?: typeof fetch;
4
+ limit?: number;
5
+ }): Promise<EntityHit[]>;
6
+ //# sourceMappingURL=wikidata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wikidata.d.ts","sourceRoot":"","sources":["../src/wikidata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,wBAAsB,cAAc,CAClC,CAAC,EAAE,MAAM,EACT,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,SAAS,EAAE,CAAC,CAwBtB"}
@@ -0,0 +1,23 @@
1
+ const WD = "https://www.wikidata.org/w/api.php";
2
+ export async function wikidataSearch(q, opts) {
3
+ const fetchFn = opts?.fetch ?? fetch;
4
+ const url = new URL(WD);
5
+ url.searchParams.set("action", "wbsearchentities");
6
+ url.searchParams.set("search", q);
7
+ url.searchParams.set("language", "en");
8
+ url.searchParams.set("format", "json");
9
+ url.searchParams.set("limit", String(opts?.limit ?? 5));
10
+ const res = await fetchFn(url, { headers: { accept: "application/json" } });
11
+ if (!res.ok)
12
+ throw new Error(`Wikidata HTTP ${res.status}`);
13
+ const json = (await res.json());
14
+ return (json.search ?? []).map((hit) => {
15
+ const row = { id: hit.id, label: hit.label ?? hit.id };
16
+ if (hit.description)
17
+ row.description = hit.description;
18
+ if (hit.concepturi)
19
+ row.url = hit.concepturi;
20
+ return row;
21
+ });
22
+ }
23
+ //# sourceMappingURL=wikidata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wikidata.js","sourceRoot":"","sources":["../src/wikidata.ts"],"names":[],"mappings":"AAEA,MAAM,EAAE,GAAG,oCAAoC,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,CAAS,EACT,IAA+C;IAE/C,MAAM,OAAO,GAAG,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;IACxB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IACnD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACvC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAC5E,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAO7B,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACrC,MAAM,GAAG,GAAc,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;QAClE,IAAI,GAAG,CAAC,WAAW;YAAE,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QACvD,IAAI,GAAG,CAAC,UAAU;YAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC;QAC7C,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@agentsean/providers",
3
+ "version": "1.0.0",
4
+ "license": "AGPL-3.0-only",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js"
10
+ }
11
+ },
12
+ "files": [
13
+ "dist"
14
+ ],
15
+ "engines": {
16
+ "node": ">=22.19.0"
17
+ },
18
+ "dependencies": {
19
+ "drizzle-orm": "0.45.2",
20
+ "@agentsean/credentials": "1.0.0",
21
+ "@agentsean/db": "1.0.0"
22
+ },
23
+ "devDependencies": {
24
+ "typescript": "~5.9.3",
25
+ "vitest": "^4.1.11"
26
+ },
27
+ "publishConfig": {
28
+ "access": "public"
29
+ },
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "git+https://github.com/seziro-team/agentsean.git",
33
+ "directory": "packages/providers"
34
+ },
35
+ "homepage": "https://github.com/seziro-team/agentsean#readme",
36
+ "bugs": {
37
+ "url": "https://github.com/seziro-team/agentsean/issues"
38
+ },
39
+ "author": "Seziro (https://seziro.com)",
40
+ "description": "Agent Sean — providers module",
41
+ "keywords": [
42
+ "seo",
43
+ "agent",
44
+ "agentsean",
45
+ "seo-automation"
46
+ ],
47
+ "scripts": {
48
+ "build": "tsc -p tsconfig.json",
49
+ "typecheck": "tsc -p tsconfig.json --noEmit",
50
+ "test": "vitest run --config ../../vitest.config.ts"
51
+ }
52
+ }