@artchristech/fillin-client 0.1.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/README.md +61 -0
- package/dist/index.d.ts +87 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +96 -0
- package/dist/index.js.map +1 -0
- package/package.json +36 -0
package/README.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# @fillin/client
|
|
2
|
+
|
|
3
|
+
TypeScript client for [Fillin](https://fillin.glyphapi.dev) — search engine for AI agents. Closes the gap between an LLM's training cutoff and now across HN, arXiv, GitHub Releases, and curated RSS, plus daily snapshots of supply-chain CVEs, new research papers, and frontier AI lab releases.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @fillin/client
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quickstart
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import { FillinClient } from "@fillin/client";
|
|
15
|
+
|
|
16
|
+
const fillin = new FillinClient({
|
|
17
|
+
apiKey: process.env.FILLIN_API_KEY!,
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
// Generic post-cutoff vector search across all corpora — $0.01/call
|
|
21
|
+
const { results } = await fillin.query({
|
|
22
|
+
cutoff: "2026-01-01", // your model's training cutoff
|
|
23
|
+
query: "rust async runtime developments",
|
|
24
|
+
k: 5, // 1–20
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
for (const hit of results) {
|
|
28
|
+
console.log(`[${hit.source}] ${hit.title} ← ${hit.url}`);
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Get a bearer key at [fillin.glyphapi.dev/signup](https://fillin.glyphapi.dev/signup) (20 free queries, no card). For per-call pricing see [fillin.glyphapi.dev/pricing](https://fillin.glyphapi.dev/pricing).
|
|
33
|
+
|
|
34
|
+
## API
|
|
35
|
+
|
|
36
|
+
### `new FillinClient(options)`
|
|
37
|
+
|
|
38
|
+
| Option | Type | Default | Description |
|
|
39
|
+
|--------------|----------|------------------------------------|------------------------------------------|
|
|
40
|
+
| `apiKey` | `string` | — | Pre-issued bearer key. |
|
|
41
|
+
| `host` | `string` | `https://fillin.glyphapi.dev` | API base URL. |
|
|
42
|
+
| `timeoutMs` | `number` | `30000` | Per-request abort timeout. |
|
|
43
|
+
| `fetch` | function | `globalThis.fetch` | Inject for testing or custom transports. |
|
|
44
|
+
|
|
45
|
+
### Methods
|
|
46
|
+
|
|
47
|
+
- `query(params)` — generic post-cutoff vector search across all corpora. **$0.01/call.**
|
|
48
|
+
- `stats()` — bearer-gated corpus stats.
|
|
49
|
+
- `freshness()` — public corpus freshness (no auth).
|
|
50
|
+
- `health()` — liveness check (no auth).
|
|
51
|
+
- `paymentInfo()` — public x402 payment surface.
|
|
52
|
+
|
|
53
|
+
> **Slice routes** (`/query/cves` $0.02, `/query/papers` $0.03, `/query/frontier` $0.05) and `/answer` ($0.02) ship in the underlying API but aren't yet wrapped in this client. Hit them directly via `fetch`, or open an issue/PR if you want first-class methods.
|
|
54
|
+
|
|
55
|
+
### Errors
|
|
56
|
+
|
|
57
|
+
Non-2xx responses throw `FillinError` carrying `.status` and `.body` (truncated to 500 chars).
|
|
58
|
+
|
|
59
|
+
## License
|
|
60
|
+
|
|
61
|
+
MIT
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fillin/client — TypeScript client for Fillin.
|
|
3
|
+
*
|
|
4
|
+
* Two surfaces:
|
|
5
|
+
* - Bearer auth: pre-pay credits, paste your key, call .query().
|
|
6
|
+
* - x402 auth: agent-native, pays USDC per call (separate handshake — see /docs).
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { FillinClient } from "@fillin/client";
|
|
11
|
+
* const fillin = new FillinClient({ apiKey: process.env.FILLIN_API_KEY! });
|
|
12
|
+
* const { results } = await fillin.query({
|
|
13
|
+
* cutoff: "2026-01-01",
|
|
14
|
+
* query: "rust async runtime developments",
|
|
15
|
+
* k: 5,
|
|
16
|
+
* });
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare const DEFAULT_HOST = "https://fillin.glyphapi.dev";
|
|
20
|
+
export interface FillinOptions {
|
|
21
|
+
/** Pre-issued bearer key. Get one at https://fillin.glyphapi.dev/pricing */
|
|
22
|
+
apiKey?: string;
|
|
23
|
+
/** API host. Defaults to https://fillin.glyphapi.dev */
|
|
24
|
+
host?: string;
|
|
25
|
+
/** Per-request timeout in ms. Default 30000. */
|
|
26
|
+
timeoutMs?: number;
|
|
27
|
+
/** Override fetch (for testing or custom transports). */
|
|
28
|
+
fetch?: typeof fetch;
|
|
29
|
+
}
|
|
30
|
+
export interface QueryParams {
|
|
31
|
+
/** ISO-8601 date — your model's training cutoff. Documents on or before are excluded. */
|
|
32
|
+
cutoff: string;
|
|
33
|
+
/** Natural-language query. Max 512 chars (truncated server-side). */
|
|
34
|
+
query: string;
|
|
35
|
+
/** Number of results to return, 1–20. Default 5. */
|
|
36
|
+
k?: number;
|
|
37
|
+
}
|
|
38
|
+
export interface Hit {
|
|
39
|
+
id: string;
|
|
40
|
+
source: string;
|
|
41
|
+
url: string;
|
|
42
|
+
published_at: string;
|
|
43
|
+
title: string;
|
|
44
|
+
text: string;
|
|
45
|
+
score: number | null;
|
|
46
|
+
}
|
|
47
|
+
export interface QueryResult {
|
|
48
|
+
cutoff: string;
|
|
49
|
+
query: string;
|
|
50
|
+
gap_days: number;
|
|
51
|
+
results: Hit[];
|
|
52
|
+
}
|
|
53
|
+
export interface Stats {
|
|
54
|
+
rows: number;
|
|
55
|
+
earliest: string | null;
|
|
56
|
+
latest: string | null;
|
|
57
|
+
by_source: Record<string, number>;
|
|
58
|
+
}
|
|
59
|
+
export interface Freshness extends Stats {
|
|
60
|
+
now: string;
|
|
61
|
+
}
|
|
62
|
+
export declare class FillinError extends Error {
|
|
63
|
+
readonly status: number;
|
|
64
|
+
readonly body: string;
|
|
65
|
+
constructor(message: string, status: number, body: string);
|
|
66
|
+
}
|
|
67
|
+
export declare class FillinClient {
|
|
68
|
+
private readonly host;
|
|
69
|
+
private readonly apiKey;
|
|
70
|
+
private readonly timeoutMs;
|
|
71
|
+
private readonly fetchImpl;
|
|
72
|
+
constructor(opts?: FillinOptions);
|
|
73
|
+
/** Paid retrieval. Requires apiKey (bearer) or an x402-signed handshake. */
|
|
74
|
+
query(params: QueryParams): Promise<QueryResult>;
|
|
75
|
+
/** Bearer-gated corpus stats. Requires apiKey. */
|
|
76
|
+
stats(): Promise<Stats>;
|
|
77
|
+
/** Public corpus freshness. No auth. */
|
|
78
|
+
freshness(): Promise<Freshness>;
|
|
79
|
+
/** Liveness check. No auth. */
|
|
80
|
+
health(): Promise<{
|
|
81
|
+
ok: boolean;
|
|
82
|
+
}>;
|
|
83
|
+
/** Public payment surface (x402 wallet, asset, pricing). */
|
|
84
|
+
paymentInfo(): Promise<unknown>;
|
|
85
|
+
private request;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,eAAO,MAAM,YAAY,gCAAgC,CAAC;AAE1D,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,yFAAyF;IACzF,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,SAAU,SAAQ,KAAK;IACtC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,WAAY,SAAQ,KAAK;aAGlB,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,MAAM;gBAF5B,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM;CAK/B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBAE7B,IAAI,GAAE,aAAkB;IAUpC,4EAA4E;IACtE,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAWtD,kDAAkD;IAC5C,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAM7B,wCAAwC;IAClC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;IAIrC,+BAA+B;IACzB,MAAM,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC;IAIxC,4DAA4D;IACtD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;YAIvB,OAAO;CA2BtB"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fillin/client — TypeScript client for Fillin.
|
|
3
|
+
*
|
|
4
|
+
* Two surfaces:
|
|
5
|
+
* - Bearer auth: pre-pay credits, paste your key, call .query().
|
|
6
|
+
* - x402 auth: agent-native, pays USDC per call (separate handshake — see /docs).
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { FillinClient } from "@fillin/client";
|
|
11
|
+
* const fillin = new FillinClient({ apiKey: process.env.FILLIN_API_KEY! });
|
|
12
|
+
* const { results } = await fillin.query({
|
|
13
|
+
* cutoff: "2026-01-01",
|
|
14
|
+
* query: "rust async runtime developments",
|
|
15
|
+
* k: 5,
|
|
16
|
+
* });
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export const DEFAULT_HOST = "https://fillin.glyphapi.dev";
|
|
20
|
+
export class FillinError extends Error {
|
|
21
|
+
status;
|
|
22
|
+
body;
|
|
23
|
+
constructor(message, status, body) {
|
|
24
|
+
super(message);
|
|
25
|
+
this.status = status;
|
|
26
|
+
this.body = body;
|
|
27
|
+
this.name = "FillinError";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export class FillinClient {
|
|
31
|
+
host;
|
|
32
|
+
apiKey;
|
|
33
|
+
timeoutMs;
|
|
34
|
+
fetchImpl;
|
|
35
|
+
constructor(opts = {}) {
|
|
36
|
+
this.host = (opts.host ?? DEFAULT_HOST).replace(/\/+$/, "");
|
|
37
|
+
this.apiKey = opts.apiKey;
|
|
38
|
+
this.timeoutMs = opts.timeoutMs ?? 30000;
|
|
39
|
+
this.fetchImpl = opts.fetch ?? globalThis.fetch;
|
|
40
|
+
if (!this.fetchImpl) {
|
|
41
|
+
throw new Error("FillinClient: no global fetch — pass `fetch` in options or use Node 18+");
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Paid retrieval. Requires apiKey (bearer) or an x402-signed handshake. */
|
|
45
|
+
async query(params) {
|
|
46
|
+
const body = JSON.stringify({
|
|
47
|
+
cutoff: params.cutoff,
|
|
48
|
+
query: params.query,
|
|
49
|
+
k: params.k ?? 5,
|
|
50
|
+
});
|
|
51
|
+
const headers = { "content-type": "application/json" };
|
|
52
|
+
if (this.apiKey)
|
|
53
|
+
headers.authorization = `Bearer ${this.apiKey}`;
|
|
54
|
+
return this.request("POST", "/query", { headers, body });
|
|
55
|
+
}
|
|
56
|
+
/** Bearer-gated corpus stats. Requires apiKey. */
|
|
57
|
+
async stats() {
|
|
58
|
+
const headers = {};
|
|
59
|
+
if (this.apiKey)
|
|
60
|
+
headers.authorization = `Bearer ${this.apiKey}`;
|
|
61
|
+
return this.request("GET", "/stats", { headers });
|
|
62
|
+
}
|
|
63
|
+
/** Public corpus freshness. No auth. */
|
|
64
|
+
async freshness() {
|
|
65
|
+
return this.request("GET", "/freshness");
|
|
66
|
+
}
|
|
67
|
+
/** Liveness check. No auth. */
|
|
68
|
+
async health() {
|
|
69
|
+
return this.request("GET", "/healthz");
|
|
70
|
+
}
|
|
71
|
+
/** Public payment surface (x402 wallet, asset, pricing). */
|
|
72
|
+
async paymentInfo() {
|
|
73
|
+
return this.request("GET", "/v1/payment/info");
|
|
74
|
+
}
|
|
75
|
+
async request(method, path, init = {}) {
|
|
76
|
+
const ctl = new AbortController();
|
|
77
|
+
const timer = setTimeout(() => ctl.abort(), this.timeoutMs);
|
|
78
|
+
try {
|
|
79
|
+
const res = await this.fetchImpl(`${this.host}${path}`, {
|
|
80
|
+
method,
|
|
81
|
+
headers: init.headers,
|
|
82
|
+
body: init.body,
|
|
83
|
+
signal: ctl.signal,
|
|
84
|
+
});
|
|
85
|
+
const text = await res.text();
|
|
86
|
+
if (!res.ok) {
|
|
87
|
+
throw new FillinError(`fillin ${method} ${path} → HTTP ${res.status}`, res.status, text.slice(0, 500));
|
|
88
|
+
}
|
|
89
|
+
return JSON.parse(text);
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
clearTimeout(timer);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@artchristech/fillin-client",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "TypeScript client for Fillin — search engine for AI agents (post-cutoff retrieval + daily snapshot slices).",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": ["dist", "README.md", "LICENSE"],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"test": "node --test --import=tsx test/*.test.ts",
|
|
19
|
+
"prepublishOnly": "npm run build"
|
|
20
|
+
},
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=18"
|
|
23
|
+
},
|
|
24
|
+
"keywords": ["mcp", "llm", "retrieval", "rag", "x402", "agent"],
|
|
25
|
+
"homepage": "https://fillin.glyphapi.dev",
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "git+https://github.com/artchristech/fillin.git",
|
|
29
|
+
"directory": "clients/fillin-ts"
|
|
30
|
+
},
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"tsx": "^4.7.0",
|
|
34
|
+
"typescript": "^5.4.0"
|
|
35
|
+
}
|
|
36
|
+
}
|