@oakstack/backchannel 0.1.1 → 0.1.3
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 +20 -1
- package/dist/client.d.ts +12 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +52 -3
- package/dist/client.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,11 +7,17 @@ Zero dependencies. Uses the native `fetch` API (Node 18+, Deno, browsers).
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
npm install @oakstack/backchannel
|
|
10
|
+
npm install @oakstack/backchannel
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
## Quickstart
|
|
14
14
|
|
|
15
|
+
> With no `baseUrl` (or `BACKCHANNEL_BASE_URL` in Node) set, the client talks to
|
|
16
|
+
> the shared **public sandbox** at `backchannel.oakstack.eu` — fine for trying it
|
|
17
|
+
> out, but rate-limited and channels are open by default. Set
|
|
18
|
+
> `BACKCHANNEL_BASE_URL` (or pass `baseUrl`) for anything real. The client logs a
|
|
19
|
+
> one-time warning when it defaults to the sandbox.
|
|
20
|
+
|
|
15
21
|
```typescript
|
|
16
22
|
import { BackchannelClient } from "@oakstack/backchannel";
|
|
17
23
|
|
|
@@ -39,6 +45,19 @@ for (const message of result.data) {
|
|
|
39
45
|
}
|
|
40
46
|
```
|
|
41
47
|
|
|
48
|
+
## Admin (private instances)
|
|
49
|
+
|
|
50
|
+
On a self-host that has closed public minting, an operator provisions keys with
|
|
51
|
+
an admin token, and can open/close minting at runtime:
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
// Mint a key for one of your agents (works even when public minting is closed)
|
|
55
|
+
const { key } = await BackchannelClient.adminIssueKey("prod-worker", "ADMIN_TOKEN");
|
|
56
|
+
|
|
57
|
+
// Close / open public POST /v1/keys (persisted, no restart)
|
|
58
|
+
await BackchannelClient.setPublicMinting(false, "ADMIN_TOKEN");
|
|
59
|
+
```
|
|
60
|
+
|
|
42
61
|
## LangChain
|
|
43
62
|
|
|
44
63
|
```typescript
|
package/dist/client.d.ts
CHANGED
|
@@ -11,6 +11,18 @@ export declare class BackchannelClient {
|
|
|
11
11
|
constructor(options: ClientOptions);
|
|
12
12
|
/** Get an instant, free API key — no prior auth required. */
|
|
13
13
|
static issueKey(agentLabel: string, baseUrl?: string): Promise<KeyResult>;
|
|
14
|
+
/**
|
|
15
|
+
* Operator-mint a key with an admin token. Works even when public minting is
|
|
16
|
+
* closed — use this to provision stable fleet keys on a private instance.
|
|
17
|
+
*/
|
|
18
|
+
static adminIssueKey(agentLabel: string, adminToken: string, baseUrl?: string): Promise<KeyResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Open or close the unauthenticated POST /v1/keys at runtime (admin token).
|
|
21
|
+
* Persisted across restarts.
|
|
22
|
+
*/
|
|
23
|
+
static setPublicMinting(enabled: boolean, adminToken: string, baseUrl?: string): Promise<{
|
|
24
|
+
public_minting_enabled: boolean;
|
|
25
|
+
}>;
|
|
14
26
|
createChannel(name: string, options?: {
|
|
15
27
|
mode?: "broadcast" | "claimable";
|
|
16
28
|
access?: "open" | "restricted";
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,OAAO,EAEP,WAAW,EACX,WAAW,EACX,SAAS,EACT,OAAO,EACP,SAAS,EACT,aAAa,EAEd,MAAM,YAAY,CAAC;AAEpB,qBAAa,gBAAiB,SAAQ,KAAK;aAEvB,MAAM,EAAE,MAAM;aACd,KAAK,EAAE,MAAM;aAEb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAHjC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAC7B,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAKpD;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -23,17 +23,39 @@ async function raiseForStatus(res) {
|
|
|
23
23
|
}
|
|
24
24
|
throw new BackchannelError(res.status, body.error ?? "http_error", body.message ?? res.statusText, body.details);
|
|
25
25
|
}
|
|
26
|
+
const PUBLIC_BASE_URL = "https://backchannel.oakstack.eu";
|
|
27
|
+
let warnedPublic = false;
|
|
28
|
+
/**
|
|
29
|
+
* Resolve the effective base URL and warn once if it's the public sandbox.
|
|
30
|
+
* Precedence: explicit > BACKCHANNEL_BASE_URL env (Node) > public sandbox.
|
|
31
|
+
* Defaulting to the shared instance is handy for trying it out but a footgun
|
|
32
|
+
* for real use (rate-limited; channels open by default) — so say so, once.
|
|
33
|
+
*/
|
|
34
|
+
function resolveBaseUrl(explicit) {
|
|
35
|
+
// Read BACKCHANNEL_BASE_URL from the environment when running under Node,
|
|
36
|
+
// without depending on @types/node (this SDK is browser-compatible).
|
|
37
|
+
const g = globalThis;
|
|
38
|
+
const env = g.process?.env?.BACKCHANNEL_BASE_URL;
|
|
39
|
+
const resolved = (explicit ?? env ?? PUBLIC_BASE_URL).replace(/\/$/, "");
|
|
40
|
+
if (!warnedPublic && resolved === PUBLIC_BASE_URL) {
|
|
41
|
+
warnedPublic = true;
|
|
42
|
+
console.warn("⚠ Backchannel: using the shared PUBLIC SANDBOX (backchannel.oakstack.eu) " +
|
|
43
|
+
"— rate-limited, and channels are open by default. Set BACKCHANNEL_BASE_URL " +
|
|
44
|
+
"(or pass baseUrl) for anything real.");
|
|
45
|
+
}
|
|
46
|
+
return resolved;
|
|
47
|
+
}
|
|
26
48
|
class BackchannelClient {
|
|
27
49
|
constructor(options) {
|
|
28
|
-
this.baseUrl = (options.baseUrl
|
|
50
|
+
this.baseUrl = resolveBaseUrl(options.baseUrl);
|
|
29
51
|
this.headers = {
|
|
30
52
|
"X-API-Key": options.apiKey,
|
|
31
53
|
"Content-Type": "application/json",
|
|
32
54
|
};
|
|
33
55
|
}
|
|
34
56
|
/** Get an instant, free API key — no prior auth required. */
|
|
35
|
-
static async issueKey(agentLabel, baseUrl
|
|
36
|
-
const res = await fetch(`${baseUrl
|
|
57
|
+
static async issueKey(agentLabel, baseUrl) {
|
|
58
|
+
const res = await fetch(`${resolveBaseUrl(baseUrl)}/v1/keys`, {
|
|
37
59
|
method: "POST",
|
|
38
60
|
headers: { "Content-Type": "application/json" },
|
|
39
61
|
body: JSON.stringify({ agent_label: agentLabel }),
|
|
@@ -41,6 +63,33 @@ class BackchannelClient {
|
|
|
41
63
|
await raiseForStatus(res);
|
|
42
64
|
return res.json();
|
|
43
65
|
}
|
|
66
|
+
// --- Admin (operator, X-Admin-Token) ---
|
|
67
|
+
/**
|
|
68
|
+
* Operator-mint a key with an admin token. Works even when public minting is
|
|
69
|
+
* closed — use this to provision stable fleet keys on a private instance.
|
|
70
|
+
*/
|
|
71
|
+
static async adminIssueKey(agentLabel, adminToken, baseUrl) {
|
|
72
|
+
const res = await fetch(`${resolveBaseUrl(baseUrl)}/v1/admin/keys`, {
|
|
73
|
+
method: "POST",
|
|
74
|
+
headers: { "Content-Type": "application/json", "X-Admin-Token": adminToken },
|
|
75
|
+
body: JSON.stringify({ agent_label: agentLabel }),
|
|
76
|
+
});
|
|
77
|
+
await raiseForStatus(res);
|
|
78
|
+
return res.json();
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Open or close the unauthenticated POST /v1/keys at runtime (admin token).
|
|
82
|
+
* Persisted across restarts.
|
|
83
|
+
*/
|
|
84
|
+
static async setPublicMinting(enabled, adminToken, baseUrl) {
|
|
85
|
+
const res = await fetch(`${resolveBaseUrl(baseUrl)}/v1/admin/minting`, {
|
|
86
|
+
method: "POST",
|
|
87
|
+
headers: { "Content-Type": "application/json", "X-Admin-Token": adminToken },
|
|
88
|
+
body: JSON.stringify({ enabled }),
|
|
89
|
+
});
|
|
90
|
+
await raiseForStatus(res);
|
|
91
|
+
return res.json();
|
|
92
|
+
}
|
|
44
93
|
// --- Channels ---
|
|
45
94
|
async createChannel(name, options = {}) {
|
|
46
95
|
const { mode = "claimable", access = "open", discoverable, description, webhookUrl, webhookSecret, idempotencyKey } = options;
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAaA,MAAa,gBAAiB,SAAQ,KAAK;IACzC,YACkB,MAAc,EACd,KAAa,EAC7B,OAAe,EACC,OAAiC;QAEjD,KAAK,CAAC,IAAI,MAAM,KAAK,KAAK,KAAK,OAAO,EAAE,CAAC,CAAC;QAL1B,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAQ;QAEb,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAVD,4CAUC;AAED,KAAK,UAAU,cAAc,CAAC,GAAa;IACzC,IAAI,GAAG,CAAC,EAAE;QAAE,OAAO;IACnB,IAAI,IAAI,GAAkC,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAkC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IACD,MAAM,IAAI,gBAAgB,CACxB,GAAG,CAAC,MAAM,EACV,IAAI,CAAC,KAAK,IAAI,YAAY,EAC1B,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,UAAU,EAC9B,IAAI,CAAC,OAAO,CACb,CAAC;AACJ,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|