@blacklake-systems/surface-sdk 0.1.5
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 +177 -0
- package/dist/index.d.ts +326 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +305 -0
- package/dist/index.js.map +1 -0
- package/package.json +44 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 BlackLake Systems Ltd.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# @blacklake-systems/sdk
|
|
2
|
+
|
|
3
|
+
TypeScript SDK for [BlackLake Surface](https://blacklake.systems/product) — integrate governance directly into custom agent code.
|
|
4
|
+
|
|
5
|
+
> **Note:** If you are routing tool calls through the MCP proxy, you do not need this SDK. The proxy handles governance automatically. Use the SDK when you want to call the governance API directly from your own code.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @blacklake-systems/sdk
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Quick Start
|
|
14
|
+
|
|
15
|
+
### Local Surface (self-hosted)
|
|
16
|
+
|
|
17
|
+
Run `npx @blacklake-systems/cli` first to start Surface on your machine, then point the SDK at it:
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { BlackLake } from '@blacklake-systems/sdk';
|
|
21
|
+
|
|
22
|
+
const bl = new BlackLake({
|
|
23
|
+
baseUrl: 'http://localhost:3100',
|
|
24
|
+
apiKey: process.env.BLACKLAKE_API_KEY!,
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
// Evaluate governance before executing a tool call
|
|
28
|
+
const result = await bl.govern({
|
|
29
|
+
agent: 'expense-bot',
|
|
30
|
+
tool: 'payments.send',
|
|
31
|
+
action: { amount: 4200, vendor: 'Acme Corp' },
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
if (result.decision === 'allow') {
|
|
35
|
+
// proceed with tool call
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Cloud Surface
|
|
40
|
+
|
|
41
|
+
Sign up at [console.blacklake.systems](https://console.blacklake.systems) to get your API key:
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { BlackLake } from '@blacklake-systems/sdk';
|
|
45
|
+
|
|
46
|
+
const bl = new BlackLake({
|
|
47
|
+
apiKey: process.env.BLACKLAKE_API_KEY!,
|
|
48
|
+
// baseUrl defaults to https://api.blacklake.systems
|
|
49
|
+
});
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## API Reference
|
|
53
|
+
|
|
54
|
+
### `new BlackLake(config)`
|
|
55
|
+
|
|
56
|
+
| Option | Type | Default | Description |
|
|
57
|
+
|--------|------|---------|-------------|
|
|
58
|
+
| `apiKey` | `string` | — | Your BlackLake API key (required) |
|
|
59
|
+
| `baseUrl` | `string` | `https://api.blacklake.systems` | API base URL. Override only for local development (e.g. `http://localhost:3100`). |
|
|
60
|
+
|
|
61
|
+
### `bl.govern(request)`
|
|
62
|
+
|
|
63
|
+
Evaluate whether an agent is allowed to invoke a tool.
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
const result = await bl.govern({
|
|
67
|
+
agent: 'expense-bot', // agent name
|
|
68
|
+
tool: 'payments.send', // tool name
|
|
69
|
+
action: { amount: 4200 }, // optional: tool invocation payload
|
|
70
|
+
context: { ip: '10.0.0.1' } // optional: request metadata
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// result.decision: 'allow' | 'deny' | 'approval_required' | 'default_deny'
|
|
74
|
+
// result.evaluation_id: string
|
|
75
|
+
// result.policy_id: string | null
|
|
76
|
+
// result.reason: string
|
|
77
|
+
// result.evaluated_at: string (ISO 8601)
|
|
78
|
+
// result.approval_id: string | undefined (set when decision === 'approval_required')
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### `bl.agents`
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
await bl.agents.create({ name, environment, risk_classification, description?, approval_mode? });
|
|
85
|
+
await bl.agents.list({ environment?, status? });
|
|
86
|
+
await bl.agents.get(id);
|
|
87
|
+
await bl.agents.update(id, { name?, description?, environment?, risk_classification?, status?, approval_mode? });
|
|
88
|
+
await bl.agents.suspend(id);
|
|
89
|
+
await bl.agents.activate(id);
|
|
90
|
+
await bl.agents.bindTool(agentId, toolId);
|
|
91
|
+
await bl.agents.listTools(agentId); // returns ToolBinding[] — each item has { binding_id, binding_created_at, tool: Tool }
|
|
92
|
+
await bl.agents.unbindTool(agentId, toolId);
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### `bl.tools`
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
await bl.tools.create({ name, risk_classification, description? });
|
|
99
|
+
await bl.tools.list();
|
|
100
|
+
await bl.tools.get(id);
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### `bl.policies`
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
await bl.policies.create({ name, priority, outcome, agent_selector?, tool_selector?, enabled? });
|
|
107
|
+
await bl.policies.list();
|
|
108
|
+
await bl.policies.get(id);
|
|
109
|
+
await bl.policies.update(id, { name?, priority?, outcome?, agent_selector?, tool_selector?, enabled? });
|
|
110
|
+
await bl.policies.delete(id);
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### `bl.evaluations`
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
await bl.evaluations.list({ agent_id?, tool_id?, outcome?, limit?, offset? });
|
|
117
|
+
await bl.evaluations.get(id);
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### `bl.organisation`
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
await bl.organisation.get(); // fetch the current organisation (derived from the API key)
|
|
124
|
+
await bl.organisation.delete(confirmation); // permanently delete the organisation; pass the organisation's exact name as confirmation
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### `bl.apiKeys`
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
await bl.apiKeys.list(); // returns { keys: ApiKey[] } — each item has { id, name, key_suffix, created_at, revoked_at }
|
|
131
|
+
await bl.apiKeys.create('prod-key'); // returns { id, name, key, created_at, warning } — the raw key is shown ONCE; store it securely
|
|
132
|
+
await bl.apiKeys.revoke(id); // sets revoked_at on the key; the API rejects revoking the key in use
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### `bl.approvals`
|
|
136
|
+
|
|
137
|
+
```typescript
|
|
138
|
+
await bl.approvals.list({ status?, agent_id?, tool_id?, limit?, offset? }); // returns PaginatedResponse<Approval>
|
|
139
|
+
await bl.approvals.get(id);
|
|
140
|
+
await bl.approvals.status(id); // returns ApprovalStatusResponse — lightweight poll target
|
|
141
|
+
await bl.approvals.approve(id, { decided_by, reason });
|
|
142
|
+
await bl.approvals.reject(id, { decided_by, reason });
|
|
143
|
+
await bl.approvals.wait(id, { interval?, timeout? }); // polls status until approved/rejected/expired; throws BlackLakeError on timeout
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
`wait()` defaults to polling every 2 000 ms with a 5-minute total timeout. Returns the fully-populated `Approval` once the status leaves `'pending'`.
|
|
147
|
+
|
|
148
|
+
### `bl.webhooks`
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
await bl.webhooks.list(); // returns { webhooks: Webhook[] }
|
|
152
|
+
await bl.webhooks.create({ url, events, enabled? }); // returns CreatedWebhook — the raw signing secret is shown ONCE; store it securely
|
|
153
|
+
await bl.webhooks.get(id);
|
|
154
|
+
await bl.webhooks.update(id, { url?, events?, enabled? });
|
|
155
|
+
await bl.webhooks.delete(id);
|
|
156
|
+
await bl.webhooks.listDeliveries(id, { limit?, offset? }); // returns PaginatedResponse<WebhookDelivery>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Webhooks fire on `'approval.created'`, `'approval.approved'`, and `'approval.rejected'`. Each request is signed with HMAC-SHA256; the signature is sent in the `X-BlackLake-Signature` header.
|
|
160
|
+
|
|
161
|
+
### Error Handling
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
import { BlackLake, BlackLakeError } from '@blacklake-systems/sdk';
|
|
165
|
+
|
|
166
|
+
try {
|
|
167
|
+
await bl.govern({ agent: 'unknown', tool: 'unknown' });
|
|
168
|
+
} catch (err) {
|
|
169
|
+
if (err instanceof BlackLakeError) {
|
|
170
|
+
console.error(err.status, err.code, err.message);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Documentation
|
|
176
|
+
|
|
177
|
+
Full documentation at [blacklake.systems/docs](https://blacklake.systems/docs).
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
export interface Organisation {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
contact_email: string | null;
|
|
5
|
+
created_at: string;
|
|
6
|
+
}
|
|
7
|
+
export interface Agent {
|
|
8
|
+
id: string;
|
|
9
|
+
organisation_id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
description: string | null;
|
|
12
|
+
environment: 'development' | 'staging' | 'production';
|
|
13
|
+
risk_classification: 'low' | 'medium' | 'high' | 'critical';
|
|
14
|
+
status: 'active' | 'suspended' | 'disabled';
|
|
15
|
+
approval_mode: 'auto_approve' | 'require_approval' | 'block';
|
|
16
|
+
created_at: string;
|
|
17
|
+
updated_at: string;
|
|
18
|
+
}
|
|
19
|
+
export interface Tool {
|
|
20
|
+
id: string;
|
|
21
|
+
organisation_id: string;
|
|
22
|
+
name: string;
|
|
23
|
+
description: string | null;
|
|
24
|
+
risk_classification: 'low' | 'medium' | 'high' | 'critical';
|
|
25
|
+
created_at: string;
|
|
26
|
+
}
|
|
27
|
+
export interface Policy {
|
|
28
|
+
id: string;
|
|
29
|
+
organisation_id: string;
|
|
30
|
+
name: string;
|
|
31
|
+
priority: number;
|
|
32
|
+
agent_selector: Record<string, unknown>;
|
|
33
|
+
tool_selector: Record<string, unknown>;
|
|
34
|
+
outcome: 'allow' | 'deny' | 'approval_required';
|
|
35
|
+
enabled: boolean;
|
|
36
|
+
created_at: string;
|
|
37
|
+
updated_at: string;
|
|
38
|
+
}
|
|
39
|
+
export interface GovernRequest {
|
|
40
|
+
agent: string;
|
|
41
|
+
tool: string;
|
|
42
|
+
action?: Record<string, unknown>;
|
|
43
|
+
context?: Record<string, unknown>;
|
|
44
|
+
}
|
|
45
|
+
export interface GovernResponse {
|
|
46
|
+
decision: 'allow' | 'deny' | 'approval_required' | 'default_deny';
|
|
47
|
+
evaluation_id: string;
|
|
48
|
+
policy_id: string | null;
|
|
49
|
+
reason: string;
|
|
50
|
+
evaluated_at: string;
|
|
51
|
+
approval_id?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface Evaluation {
|
|
54
|
+
id: string;
|
|
55
|
+
organisation_id: string;
|
|
56
|
+
agent_id: string;
|
|
57
|
+
tool_id: string;
|
|
58
|
+
policy_id: string | null;
|
|
59
|
+
action_payload: Record<string, unknown> | null;
|
|
60
|
+
outcome: 'allow' | 'deny' | 'approval_required' | 'default_deny';
|
|
61
|
+
evaluated_at: string;
|
|
62
|
+
request_context: Record<string, unknown> | null;
|
|
63
|
+
}
|
|
64
|
+
export interface PaginatedResponse<T> {
|
|
65
|
+
data: T[];
|
|
66
|
+
total: number;
|
|
67
|
+
}
|
|
68
|
+
export interface ToolBinding {
|
|
69
|
+
binding_id: string;
|
|
70
|
+
binding_created_at: string;
|
|
71
|
+
tool: Tool;
|
|
72
|
+
}
|
|
73
|
+
export interface ApiKey {
|
|
74
|
+
id: string;
|
|
75
|
+
name: string;
|
|
76
|
+
key_suffix: string | null;
|
|
77
|
+
created_at: string;
|
|
78
|
+
revoked_at: string | null;
|
|
79
|
+
}
|
|
80
|
+
export interface CreatedApiKey {
|
|
81
|
+
id: string;
|
|
82
|
+
name: string;
|
|
83
|
+
key: string;
|
|
84
|
+
created_at: string;
|
|
85
|
+
warning: string;
|
|
86
|
+
}
|
|
87
|
+
export type ApprovalStatus = 'pending' | 'approved' | 'rejected' | 'expired';
|
|
88
|
+
export interface Approval {
|
|
89
|
+
id: string;
|
|
90
|
+
organisation_id: string;
|
|
91
|
+
evaluation_id: string;
|
|
92
|
+
agent_id: string;
|
|
93
|
+
tool_id: string;
|
|
94
|
+
policy_id: string | null;
|
|
95
|
+
action_payload: Record<string, unknown> | null;
|
|
96
|
+
request_context: Record<string, unknown> | null;
|
|
97
|
+
status: ApprovalStatus;
|
|
98
|
+
decided_by: string | null;
|
|
99
|
+
decision_reason: string | null;
|
|
100
|
+
decided_at: string | null;
|
|
101
|
+
created_at: string;
|
|
102
|
+
expires_at: string;
|
|
103
|
+
}
|
|
104
|
+
export interface ApprovalStatusResponse {
|
|
105
|
+
status: ApprovalStatus;
|
|
106
|
+
decided_at: string | null;
|
|
107
|
+
expires_at: string;
|
|
108
|
+
}
|
|
109
|
+
export type WebhookEvent = 'approval.created' | 'approval.approved' | 'approval.rejected';
|
|
110
|
+
export interface Webhook {
|
|
111
|
+
id: string;
|
|
112
|
+
organisation_id: string;
|
|
113
|
+
url: string;
|
|
114
|
+
secret_suffix: string | null;
|
|
115
|
+
events: WebhookEvent[];
|
|
116
|
+
enabled: boolean;
|
|
117
|
+
created_at: string;
|
|
118
|
+
}
|
|
119
|
+
export interface CreatedWebhook {
|
|
120
|
+
id: string;
|
|
121
|
+
url: string;
|
|
122
|
+
secret: string;
|
|
123
|
+
secret_suffix: string;
|
|
124
|
+
events: WebhookEvent[];
|
|
125
|
+
enabled: boolean;
|
|
126
|
+
created_at: string;
|
|
127
|
+
warning: string;
|
|
128
|
+
}
|
|
129
|
+
export interface WebhookDelivery {
|
|
130
|
+
id: string;
|
|
131
|
+
webhook_id: string;
|
|
132
|
+
event: WebhookEvent;
|
|
133
|
+
payload: Record<string, unknown>;
|
|
134
|
+
status_code: number | null;
|
|
135
|
+
response_body: string | null;
|
|
136
|
+
error: string | null;
|
|
137
|
+
delivered_at: string;
|
|
138
|
+
duration_ms: number | null;
|
|
139
|
+
}
|
|
140
|
+
export declare class BlackLakeError extends Error {
|
|
141
|
+
readonly status: number;
|
|
142
|
+
readonly code: string;
|
|
143
|
+
constructor(status: number, code: string, message: string);
|
|
144
|
+
}
|
|
145
|
+
export interface BlackLakeConfig {
|
|
146
|
+
apiKey: string;
|
|
147
|
+
baseUrl?: string;
|
|
148
|
+
}
|
|
149
|
+
declare class AgentsResource {
|
|
150
|
+
private client;
|
|
151
|
+
constructor(client: BlackLakeClient);
|
|
152
|
+
create(data: {
|
|
153
|
+
name: string;
|
|
154
|
+
description?: string;
|
|
155
|
+
environment: Agent['environment'];
|
|
156
|
+
risk_classification: Agent['risk_classification'];
|
|
157
|
+
approval_mode?: Agent['approval_mode'];
|
|
158
|
+
}): Promise<Agent>;
|
|
159
|
+
list(params?: {
|
|
160
|
+
environment?: string;
|
|
161
|
+
status?: string;
|
|
162
|
+
}): Promise<Agent[]>;
|
|
163
|
+
get(id: string): Promise<Agent>;
|
|
164
|
+
update(id: string, data: Partial<Pick<Agent, 'name' | 'description' | 'environment' | 'risk_classification' | 'status' | 'approval_mode'>>): Promise<Agent>;
|
|
165
|
+
suspend(id: string): Promise<Agent>;
|
|
166
|
+
activate(id: string): Promise<Agent>;
|
|
167
|
+
bindTool(agentId: string, toolId: string): Promise<{
|
|
168
|
+
id: string;
|
|
169
|
+
agent_id: string;
|
|
170
|
+
tool_id: string;
|
|
171
|
+
created_at: string;
|
|
172
|
+
}>;
|
|
173
|
+
listTools(agentId: string): Promise<ToolBinding[]>;
|
|
174
|
+
unbindTool(agentId: string, toolId: string): Promise<void>;
|
|
175
|
+
}
|
|
176
|
+
declare class ToolsResource {
|
|
177
|
+
private client;
|
|
178
|
+
constructor(client: BlackLakeClient);
|
|
179
|
+
create(data: {
|
|
180
|
+
name: string;
|
|
181
|
+
description?: string;
|
|
182
|
+
risk_classification: Tool['risk_classification'];
|
|
183
|
+
}): Promise<Tool>;
|
|
184
|
+
list(): Promise<Tool[]>;
|
|
185
|
+
get(id: string): Promise<Tool>;
|
|
186
|
+
}
|
|
187
|
+
declare class PoliciesResource {
|
|
188
|
+
private client;
|
|
189
|
+
constructor(client: BlackLakeClient);
|
|
190
|
+
create(data: {
|
|
191
|
+
name: string;
|
|
192
|
+
priority: number;
|
|
193
|
+
agent_selector?: Record<string, unknown>;
|
|
194
|
+
tool_selector?: Record<string, unknown>;
|
|
195
|
+
outcome: Policy['outcome'];
|
|
196
|
+
enabled?: boolean;
|
|
197
|
+
}): Promise<Policy>;
|
|
198
|
+
list(): Promise<Policy[]>;
|
|
199
|
+
get(id: string): Promise<Policy>;
|
|
200
|
+
update(id: string, data: Partial<Pick<Policy, 'name' | 'priority' | 'agent_selector' | 'tool_selector' | 'outcome' | 'enabled'>>): Promise<Policy>;
|
|
201
|
+
delete(id: string): Promise<void>;
|
|
202
|
+
}
|
|
203
|
+
declare class EvaluationsResource {
|
|
204
|
+
private client;
|
|
205
|
+
constructor(client: BlackLakeClient);
|
|
206
|
+
list(params?: {
|
|
207
|
+
agent_id?: string;
|
|
208
|
+
tool_id?: string;
|
|
209
|
+
outcome?: string;
|
|
210
|
+
limit?: number;
|
|
211
|
+
offset?: number;
|
|
212
|
+
}): Promise<PaginatedResponse<Evaluation>>;
|
|
213
|
+
get(id: string): Promise<Evaluation>;
|
|
214
|
+
}
|
|
215
|
+
declare class OrganisationResource {
|
|
216
|
+
private client;
|
|
217
|
+
constructor(client: BlackLakeClient);
|
|
218
|
+
/** Fetch the current organisation (derived from the API key). */
|
|
219
|
+
get(): Promise<Organisation>;
|
|
220
|
+
/**
|
|
221
|
+
* Permanently delete the organisation and all associated data.
|
|
222
|
+
*
|
|
223
|
+
* This deletes agents, tools, policies, bindings, the audit log, and all API keys.
|
|
224
|
+
* The deletion is irreversible. The caller must pass the organisation's exact
|
|
225
|
+
* name as `confirmation` — any other value will be rejected.
|
|
226
|
+
*/
|
|
227
|
+
delete(confirmation: string): Promise<void>;
|
|
228
|
+
}
|
|
229
|
+
declare class ApiKeysResource {
|
|
230
|
+
private client;
|
|
231
|
+
constructor(client: BlackLakeClient);
|
|
232
|
+
/** List all API keys for the current organisation (active and revoked). */
|
|
233
|
+
list(): Promise<{
|
|
234
|
+
keys: ApiKey[];
|
|
235
|
+
}>;
|
|
236
|
+
/**
|
|
237
|
+
* Generate a new API key. The raw key is returned ONCE in the `key` field
|
|
238
|
+
* and cannot be retrieved again. Store it securely.
|
|
239
|
+
*/
|
|
240
|
+
create(name: string): Promise<CreatedApiKey>;
|
|
241
|
+
/**
|
|
242
|
+
* Revoke an API key by its id. Returns void on success. The API rejects
|
|
243
|
+
* attempts to revoke the key currently being used to make the request.
|
|
244
|
+
*/
|
|
245
|
+
revoke(id: string): Promise<void>;
|
|
246
|
+
}
|
|
247
|
+
declare class ApprovalsResource {
|
|
248
|
+
private client;
|
|
249
|
+
constructor(client: BlackLakeClient);
|
|
250
|
+
list(params?: {
|
|
251
|
+
status?: ApprovalStatus;
|
|
252
|
+
agent_id?: string;
|
|
253
|
+
tool_id?: string;
|
|
254
|
+
limit?: number;
|
|
255
|
+
offset?: number;
|
|
256
|
+
}): Promise<PaginatedResponse<Approval>>;
|
|
257
|
+
get(id: string): Promise<Approval>;
|
|
258
|
+
status(id: string): Promise<ApprovalStatusResponse>;
|
|
259
|
+
approve(id: string, args: {
|
|
260
|
+
decided_by: string;
|
|
261
|
+
reason: string;
|
|
262
|
+
}): Promise<Approval>;
|
|
263
|
+
reject(id: string, args: {
|
|
264
|
+
decided_by: string;
|
|
265
|
+
reason: string;
|
|
266
|
+
}): Promise<Approval>;
|
|
267
|
+
/**
|
|
268
|
+
* Poll an approval until it is resolved (approved, rejected, or expired).
|
|
269
|
+
*
|
|
270
|
+
* Polls /v1/approvals/:id/status at `interval` ms (default 2000). Throws if
|
|
271
|
+
* the overall wait exceeds `timeout` ms (default 5 minutes). Returns the
|
|
272
|
+
* fully-populated Approval object once it resolves.
|
|
273
|
+
*
|
|
274
|
+
* @example
|
|
275
|
+
* const result = await bl.approvals.wait(approvalId);
|
|
276
|
+
* if (result.status === 'approved') { ... }
|
|
277
|
+
*/
|
|
278
|
+
wait(id: string, options?: {
|
|
279
|
+
interval?: number;
|
|
280
|
+
timeout?: number;
|
|
281
|
+
}): Promise<Approval>;
|
|
282
|
+
}
|
|
283
|
+
declare class WebhooksResource {
|
|
284
|
+
private client;
|
|
285
|
+
constructor(client: BlackLakeClient);
|
|
286
|
+
list(): Promise<{
|
|
287
|
+
webhooks: Webhook[];
|
|
288
|
+
}>;
|
|
289
|
+
create(args: {
|
|
290
|
+
url: string;
|
|
291
|
+
events: WebhookEvent[];
|
|
292
|
+
enabled?: boolean;
|
|
293
|
+
}): Promise<CreatedWebhook>;
|
|
294
|
+
get(id: string): Promise<Webhook>;
|
|
295
|
+
update(id: string, patch: Partial<{
|
|
296
|
+
url: string;
|
|
297
|
+
events: WebhookEvent[];
|
|
298
|
+
enabled: boolean;
|
|
299
|
+
}>): Promise<Webhook>;
|
|
300
|
+
delete(id: string): Promise<void>;
|
|
301
|
+
listDeliveries(id: string, params?: {
|
|
302
|
+
limit?: number;
|
|
303
|
+
offset?: number;
|
|
304
|
+
}): Promise<PaginatedResponse<WebhookDelivery>>;
|
|
305
|
+
}
|
|
306
|
+
declare class BlackLakeClient {
|
|
307
|
+
private baseUrl;
|
|
308
|
+
private apiKey;
|
|
309
|
+
constructor(config: BlackLakeConfig);
|
|
310
|
+
request<T>(method: string, path: string, body?: unknown): Promise<T>;
|
|
311
|
+
}
|
|
312
|
+
export declare class BlackLake {
|
|
313
|
+
private client;
|
|
314
|
+
readonly agents: AgentsResource;
|
|
315
|
+
readonly tools: ToolsResource;
|
|
316
|
+
readonly policies: PoliciesResource;
|
|
317
|
+
readonly evaluations: EvaluationsResource;
|
|
318
|
+
readonly organisation: OrganisationResource;
|
|
319
|
+
readonly apiKeys: ApiKeysResource;
|
|
320
|
+
readonly approvals: ApprovalsResource;
|
|
321
|
+
readonly webhooks: WebhooksResource;
|
|
322
|
+
constructor(config: BlackLakeConfig);
|
|
323
|
+
govern(request: GovernRequest): Promise<GovernResponse>;
|
|
324
|
+
}
|
|
325
|
+
export {};
|
|
326
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
// Error types
|
|
2
|
+
const DOCS_URL = 'https://blacklake.systems/docs';
|
|
3
|
+
export class BlackLakeError extends Error {
|
|
4
|
+
status;
|
|
5
|
+
code;
|
|
6
|
+
constructor(status, code, message) {
|
|
7
|
+
super(`${message} — Need help? ${DOCS_URL}`);
|
|
8
|
+
this.status = status;
|
|
9
|
+
this.code = code;
|
|
10
|
+
this.name = 'BlackLakeError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
// Resource classes for namespaced methods
|
|
14
|
+
class AgentsResource {
|
|
15
|
+
client;
|
|
16
|
+
constructor(client) {
|
|
17
|
+
this.client = client;
|
|
18
|
+
}
|
|
19
|
+
async create(data) {
|
|
20
|
+
return this.client.request('POST', '/v1/agents', data);
|
|
21
|
+
}
|
|
22
|
+
async list(params) {
|
|
23
|
+
const query = new URLSearchParams();
|
|
24
|
+
if (params?.environment)
|
|
25
|
+
query.set('environment', params.environment);
|
|
26
|
+
if (params?.status)
|
|
27
|
+
query.set('status', params.status);
|
|
28
|
+
const qs = query.toString();
|
|
29
|
+
return this.client.request('GET', `/v1/agents${qs ? `?${qs}` : ''}`);
|
|
30
|
+
}
|
|
31
|
+
async get(id) {
|
|
32
|
+
return this.client.request('GET', `/v1/agents/${id}`);
|
|
33
|
+
}
|
|
34
|
+
async update(id, data) {
|
|
35
|
+
return this.client.request('PATCH', `/v1/agents/${id}`, data);
|
|
36
|
+
}
|
|
37
|
+
async suspend(id) {
|
|
38
|
+
return this.client.request('POST', `/v1/agents/${id}/suspend`);
|
|
39
|
+
}
|
|
40
|
+
async activate(id) {
|
|
41
|
+
return this.client.request('POST', `/v1/agents/${id}/activate`);
|
|
42
|
+
}
|
|
43
|
+
async bindTool(agentId, toolId) {
|
|
44
|
+
return this.client.request('POST', `/v1/agents/${agentId}/tools`, { tool_id: toolId });
|
|
45
|
+
}
|
|
46
|
+
async listTools(agentId) {
|
|
47
|
+
return this.client.request('GET', `/v1/agents/${agentId}/tools`);
|
|
48
|
+
}
|
|
49
|
+
async unbindTool(agentId, toolId) {
|
|
50
|
+
await this.client.request('DELETE', `/v1/agents/${agentId}/tools/${toolId}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
class ToolsResource {
|
|
54
|
+
client;
|
|
55
|
+
constructor(client) {
|
|
56
|
+
this.client = client;
|
|
57
|
+
}
|
|
58
|
+
async create(data) {
|
|
59
|
+
return this.client.request('POST', '/v1/tools', data);
|
|
60
|
+
}
|
|
61
|
+
async list() {
|
|
62
|
+
return this.client.request('GET', '/v1/tools');
|
|
63
|
+
}
|
|
64
|
+
async get(id) {
|
|
65
|
+
return this.client.request('GET', `/v1/tools/${id}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
class PoliciesResource {
|
|
69
|
+
client;
|
|
70
|
+
constructor(client) {
|
|
71
|
+
this.client = client;
|
|
72
|
+
}
|
|
73
|
+
async create(data) {
|
|
74
|
+
return this.client.request('POST', '/v1/policies', data);
|
|
75
|
+
}
|
|
76
|
+
async list() {
|
|
77
|
+
return this.client.request('GET', '/v1/policies');
|
|
78
|
+
}
|
|
79
|
+
async get(id) {
|
|
80
|
+
return this.client.request('GET', `/v1/policies/${id}`);
|
|
81
|
+
}
|
|
82
|
+
async update(id, data) {
|
|
83
|
+
return this.client.request('PATCH', `/v1/policies/${id}`, data);
|
|
84
|
+
}
|
|
85
|
+
async delete(id) {
|
|
86
|
+
await this.client.request('DELETE', `/v1/policies/${id}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
class EvaluationsResource {
|
|
90
|
+
client;
|
|
91
|
+
constructor(client) {
|
|
92
|
+
this.client = client;
|
|
93
|
+
}
|
|
94
|
+
async list(params) {
|
|
95
|
+
const query = new URLSearchParams();
|
|
96
|
+
if (params?.agent_id)
|
|
97
|
+
query.set('agent_id', params.agent_id);
|
|
98
|
+
if (params?.tool_id)
|
|
99
|
+
query.set('tool_id', params.tool_id);
|
|
100
|
+
if (params?.outcome)
|
|
101
|
+
query.set('outcome', params.outcome);
|
|
102
|
+
if (params?.limit)
|
|
103
|
+
query.set('limit', String(params.limit));
|
|
104
|
+
if (params?.offset)
|
|
105
|
+
query.set('offset', String(params.offset));
|
|
106
|
+
const qs = query.toString();
|
|
107
|
+
return this.client.request('GET', `/v1/evaluations${qs ? `?${qs}` : ''}`);
|
|
108
|
+
}
|
|
109
|
+
async get(id) {
|
|
110
|
+
return this.client.request('GET', `/v1/evaluations/${id}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
class OrganisationResource {
|
|
114
|
+
client;
|
|
115
|
+
constructor(client) {
|
|
116
|
+
this.client = client;
|
|
117
|
+
}
|
|
118
|
+
/** Fetch the current organisation (derived from the API key). */
|
|
119
|
+
async get() {
|
|
120
|
+
return this.client.request('GET', '/v1/organisation');
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Permanently delete the organisation and all associated data.
|
|
124
|
+
*
|
|
125
|
+
* This deletes agents, tools, policies, bindings, the audit log, and all API keys.
|
|
126
|
+
* The deletion is irreversible. The caller must pass the organisation's exact
|
|
127
|
+
* name as `confirmation` — any other value will be rejected.
|
|
128
|
+
*/
|
|
129
|
+
async delete(confirmation) {
|
|
130
|
+
await this.client.request('POST', '/v1/organisation/delete', { confirmation });
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
class ApiKeysResource {
|
|
134
|
+
client;
|
|
135
|
+
constructor(client) {
|
|
136
|
+
this.client = client;
|
|
137
|
+
}
|
|
138
|
+
/** List all API keys for the current organisation (active and revoked). */
|
|
139
|
+
async list() {
|
|
140
|
+
return this.client.request('GET', '/v1/api-keys');
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Generate a new API key. The raw key is returned ONCE in the `key` field
|
|
144
|
+
* and cannot be retrieved again. Store it securely.
|
|
145
|
+
*/
|
|
146
|
+
async create(name) {
|
|
147
|
+
return this.client.request('POST', '/v1/api-keys', { name });
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Revoke an API key by its id. Returns void on success. The API rejects
|
|
151
|
+
* attempts to revoke the key currently being used to make the request.
|
|
152
|
+
*/
|
|
153
|
+
async revoke(id) {
|
|
154
|
+
await this.client.request('DELETE', `/v1/api-keys/${id}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
class ApprovalsResource {
|
|
158
|
+
client;
|
|
159
|
+
constructor(client) {
|
|
160
|
+
this.client = client;
|
|
161
|
+
}
|
|
162
|
+
async list(params) {
|
|
163
|
+
const query = new URLSearchParams();
|
|
164
|
+
if (params?.status)
|
|
165
|
+
query.set('status', params.status);
|
|
166
|
+
if (params?.agent_id)
|
|
167
|
+
query.set('agent_id', params.agent_id);
|
|
168
|
+
if (params?.tool_id)
|
|
169
|
+
query.set('tool_id', params.tool_id);
|
|
170
|
+
if (params?.limit)
|
|
171
|
+
query.set('limit', String(params.limit));
|
|
172
|
+
if (params?.offset)
|
|
173
|
+
query.set('offset', String(params.offset));
|
|
174
|
+
const qs = query.toString();
|
|
175
|
+
return this.client.request('GET', `/v1/approvals${qs ? `?${qs}` : ''}`);
|
|
176
|
+
}
|
|
177
|
+
async get(id) {
|
|
178
|
+
return this.client.request('GET', `/v1/approvals/${id}`);
|
|
179
|
+
}
|
|
180
|
+
async status(id) {
|
|
181
|
+
return this.client.request('GET', `/v1/approvals/${id}/status`);
|
|
182
|
+
}
|
|
183
|
+
async approve(id, args) {
|
|
184
|
+
return this.client.request('POST', `/v1/approvals/${id}/approve`, args);
|
|
185
|
+
}
|
|
186
|
+
async reject(id, args) {
|
|
187
|
+
return this.client.request('POST', `/v1/approvals/${id}/reject`, args);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Poll an approval until it is resolved (approved, rejected, or expired).
|
|
191
|
+
*
|
|
192
|
+
* Polls /v1/approvals/:id/status at `interval` ms (default 2000). Throws if
|
|
193
|
+
* the overall wait exceeds `timeout` ms (default 5 minutes). Returns the
|
|
194
|
+
* fully-populated Approval object once it resolves.
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* const result = await bl.approvals.wait(approvalId);
|
|
198
|
+
* if (result.status === 'approved') { ... }
|
|
199
|
+
*/
|
|
200
|
+
async wait(id, options = {}) {
|
|
201
|
+
const interval = options.interval ?? 2000;
|
|
202
|
+
const timeout = options.timeout ?? 5 * 60 * 1000;
|
|
203
|
+
const deadline = Date.now() + timeout;
|
|
204
|
+
while (Date.now() < deadline) {
|
|
205
|
+
const statusResponse = await this.status(id);
|
|
206
|
+
if (statusResponse.status !== 'pending') {
|
|
207
|
+
// Resolved — fetch the full record to return to the caller
|
|
208
|
+
return this.get(id);
|
|
209
|
+
}
|
|
210
|
+
const remaining = deadline - Date.now();
|
|
211
|
+
if (remaining <= 0)
|
|
212
|
+
break;
|
|
213
|
+
await new Promise((resolve) => setTimeout(resolve, Math.min(interval, remaining)));
|
|
214
|
+
}
|
|
215
|
+
throw new BlackLakeError(408, 'APPROVAL_WAIT_TIMEOUT', `Approval ${id} did not resolve within ${timeout}ms`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
class WebhooksResource {
|
|
219
|
+
client;
|
|
220
|
+
constructor(client) {
|
|
221
|
+
this.client = client;
|
|
222
|
+
}
|
|
223
|
+
async list() {
|
|
224
|
+
return this.client.request('GET', '/v1/webhooks');
|
|
225
|
+
}
|
|
226
|
+
async create(args) {
|
|
227
|
+
return this.client.request('POST', '/v1/webhooks', args);
|
|
228
|
+
}
|
|
229
|
+
async get(id) {
|
|
230
|
+
return this.client.request('GET', `/v1/webhooks/${id}`);
|
|
231
|
+
}
|
|
232
|
+
async update(id, patch) {
|
|
233
|
+
return this.client.request('PATCH', `/v1/webhooks/${id}`, patch);
|
|
234
|
+
}
|
|
235
|
+
async delete(id) {
|
|
236
|
+
await this.client.request('DELETE', `/v1/webhooks/${id}`);
|
|
237
|
+
}
|
|
238
|
+
async listDeliveries(id, params) {
|
|
239
|
+
const query = new URLSearchParams();
|
|
240
|
+
if (params?.limit)
|
|
241
|
+
query.set('limit', String(params.limit));
|
|
242
|
+
if (params?.offset)
|
|
243
|
+
query.set('offset', String(params.offset));
|
|
244
|
+
const qs = query.toString();
|
|
245
|
+
return this.client.request('GET', `/v1/webhooks/${id}/deliveries${qs ? `?${qs}` : ''}`);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// Internal HTTP client
|
|
249
|
+
class BlackLakeClient {
|
|
250
|
+
baseUrl;
|
|
251
|
+
apiKey;
|
|
252
|
+
constructor(config) {
|
|
253
|
+
this.apiKey = config.apiKey;
|
|
254
|
+
this.baseUrl = (config.baseUrl ?? 'https://api.blacklake.systems').replace(/\/$/, '');
|
|
255
|
+
}
|
|
256
|
+
async request(method, path, body) {
|
|
257
|
+
const headers = {
|
|
258
|
+
'x-api-key': this.apiKey,
|
|
259
|
+
};
|
|
260
|
+
if (body !== undefined) {
|
|
261
|
+
headers['Content-Type'] = 'application/json';
|
|
262
|
+
}
|
|
263
|
+
const response = await fetch(`${this.baseUrl}${path}`, {
|
|
264
|
+
method,
|
|
265
|
+
headers,
|
|
266
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
267
|
+
});
|
|
268
|
+
if (response.status === 204) {
|
|
269
|
+
return undefined;
|
|
270
|
+
}
|
|
271
|
+
const data = await response.json();
|
|
272
|
+
if (!response.ok) {
|
|
273
|
+
const error = data['error'];
|
|
274
|
+
throw new BlackLakeError(response.status, error?.code ?? 'UNKNOWN_ERROR', error?.message ?? 'An unknown error occurred');
|
|
275
|
+
}
|
|
276
|
+
return data;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
// Main SDK class
|
|
280
|
+
export class BlackLake {
|
|
281
|
+
client;
|
|
282
|
+
agents;
|
|
283
|
+
tools;
|
|
284
|
+
policies;
|
|
285
|
+
evaluations;
|
|
286
|
+
organisation;
|
|
287
|
+
apiKeys;
|
|
288
|
+
approvals;
|
|
289
|
+
webhooks;
|
|
290
|
+
constructor(config) {
|
|
291
|
+
this.client = new BlackLakeClient(config);
|
|
292
|
+
this.agents = new AgentsResource(this.client);
|
|
293
|
+
this.tools = new ToolsResource(this.client);
|
|
294
|
+
this.policies = new PoliciesResource(this.client);
|
|
295
|
+
this.evaluations = new EvaluationsResource(this.client);
|
|
296
|
+
this.organisation = new OrganisationResource(this.client);
|
|
297
|
+
this.apiKeys = new ApiKeysResource(this.client);
|
|
298
|
+
this.approvals = new ApprovalsResource(this.client);
|
|
299
|
+
this.webhooks = new WebhooksResource(this.client);
|
|
300
|
+
}
|
|
301
|
+
async govern(request) {
|
|
302
|
+
return this.client.request('POST', '/v1/govern', request);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
//# 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,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@blacklake-systems/surface-sdk",
|
|
3
|
+
"version": "0.1.5",
|
|
4
|
+
"description": "TypeScript SDK for BlackLake Surface — agent governance infrastructure",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"prepublishOnly": "tsc"
|
|
20
|
+
},
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"homepage": "https://blacklake.systems/product",
|
|
23
|
+
"bugs": {
|
|
24
|
+
"url": "https://blacklake.systems/support"
|
|
25
|
+
},
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "https://github.com/blacklake-systems/control-plane",
|
|
29
|
+
"directory": "packages/sdk"
|
|
30
|
+
},
|
|
31
|
+
"keywords": [
|
|
32
|
+
"blacklake",
|
|
33
|
+
"agent",
|
|
34
|
+
"governance",
|
|
35
|
+
"control-plane",
|
|
36
|
+
"sdk"
|
|
37
|
+
],
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"typescript": "^5.8.3"
|
|
40
|
+
},
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": ">=18"
|
|
43
|
+
}
|
|
44
|
+
}
|