@clawdstrike/broker-client 0.2.6

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.
@@ -0,0 +1,94 @@
1
+ export type BrokerProvider = "openai" | "github" | "slack" | "generic_https";
2
+ export type BrokerHttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
3
+ export type BrokerProofBindingMode = "loopback" | "dpop";
4
+ export type BrokerIntentRiskLevel = "low" | "medium" | "high";
5
+ export type BrokerApprovalState = "not_required" | "pending" | "approved" | "rejected";
6
+ export interface BrokerIntentResource {
7
+ kind: string;
8
+ value: string;
9
+ }
10
+ export interface BrokerIntentPreview {
11
+ previewId: string;
12
+ provider: BrokerProvider;
13
+ operation: string;
14
+ summary: string;
15
+ createdAt: string;
16
+ riskLevel: BrokerIntentRiskLevel;
17
+ dataClasses: string[];
18
+ resources: BrokerIntentResource[];
19
+ egressHost: string;
20
+ estimatedCostUsdMicros?: number;
21
+ approvalRequired: boolean;
22
+ approvalState: BrokerApprovalState;
23
+ approvedAt?: string;
24
+ approver?: string;
25
+ }
26
+ export interface BrokerExecutionIntent {
27
+ provider: BrokerProvider;
28
+ secretRef: string;
29
+ request: {
30
+ url: string;
31
+ method: BrokerHttpMethod;
32
+ headers?: Record<string, string>;
33
+ body?: string;
34
+ bodySha256?: string;
35
+ };
36
+ sessionId?: string;
37
+ endpointAgentId?: string;
38
+ runtimeAgentId?: string;
39
+ runtimeAgentKind?: string;
40
+ originFingerprint?: string;
41
+ previewId?: string;
42
+ delegationToken?: string;
43
+ }
44
+ export interface BrokerExecutionResponse {
45
+ executionId: string;
46
+ capabilityId: string;
47
+ provider: BrokerProvider;
48
+ status: number;
49
+ headers: Record<string, string>;
50
+ body?: string;
51
+ contentType?: string;
52
+ }
53
+ export interface BrokerExecutionStreamResponse {
54
+ executionId: string;
55
+ capabilityId: string;
56
+ provider: BrokerProvider;
57
+ status: number;
58
+ headers: Record<string, string>;
59
+ body: ReadableStream<Uint8Array>;
60
+ contentType?: string;
61
+ }
62
+ export interface SecretBrokerClientOptions {
63
+ hushdBaseUrl: string;
64
+ brokerdBaseUrl: string;
65
+ token?: string;
66
+ timeoutMs?: number;
67
+ proofBindingMode?: BrokerProofBindingMode;
68
+ previewBeforeExecute?: boolean;
69
+ fetchImpl?: typeof fetch;
70
+ }
71
+ export declare class BrokerPreviewApprovalRequiredError extends Error {
72
+ readonly preview: BrokerIntentPreview;
73
+ constructor(preview: BrokerIntentPreview);
74
+ }
75
+ export declare class SecretBrokerClient {
76
+ private readonly hushdBaseUrl;
77
+ private readonly brokerdBaseUrl;
78
+ private readonly token?;
79
+ private readonly timeoutMs;
80
+ private readonly proofBindingMode?;
81
+ private readonly previewBeforeExecute;
82
+ private readonly fetchImpl;
83
+ constructor(options: SecretBrokerClientOptions);
84
+ previewIntent(intent: BrokerExecutionIntent): Promise<BrokerIntentPreview>;
85
+ execute(intent: BrokerExecutionIntent): Promise<BrokerExecutionResponse>;
86
+ executeStream(intent: BrokerExecutionIntent): Promise<BrokerExecutionStreamResponse>;
87
+ private issueCapability;
88
+ private postJson;
89
+ private postResponse;
90
+ private prepareExecution;
91
+ private requestHeaders;
92
+ }
93
+ export declare function sha256Hex(input: string): string;
94
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js ADDED
@@ -0,0 +1,254 @@
1
+ import { createHash, randomBytes, randomUUID } from "node:crypto";
2
+ import * as ed25519 from "@noble/ed25519";
3
+ const BROKER_EXECUTION_ID_HEADER = "x-clawdstrike-execution-id";
4
+ const BROKER_CAPABILITY_ID_HEADER = "x-clawdstrike-capability-id";
5
+ const BROKER_PROVIDER_HEADER = "x-clawdstrike-provider";
6
+ export class BrokerPreviewApprovalRequiredError extends Error {
7
+ preview;
8
+ constructor(preview) {
9
+ super(`BROKER_PREVIEW_APPROVAL_REQUIRED:${preview.previewId}`);
10
+ this.name = "BrokerPreviewApprovalRequiredError";
11
+ this.preview = preview;
12
+ }
13
+ }
14
+ export class SecretBrokerClient {
15
+ hushdBaseUrl;
16
+ brokerdBaseUrl;
17
+ token;
18
+ timeoutMs;
19
+ proofBindingMode;
20
+ previewBeforeExecute;
21
+ fetchImpl;
22
+ constructor(options) {
23
+ this.hushdBaseUrl = options.hushdBaseUrl.replace(/\/+$/, "");
24
+ this.brokerdBaseUrl = options.brokerdBaseUrl.replace(/\/+$/, "");
25
+ this.token = options.token;
26
+ this.timeoutMs = options.timeoutMs ?? 10_000;
27
+ this.proofBindingMode = options.proofBindingMode;
28
+ this.previewBeforeExecute = options.previewBeforeExecute ?? true;
29
+ this.fetchImpl = options.fetchImpl ?? fetch;
30
+ }
31
+ async previewIntent(intent) {
32
+ const payload = await this.postJson(`${this.hushdBaseUrl}/api/v1/broker/previews`, {
33
+ provider: intent.provider,
34
+ url: intent.request.url,
35
+ method: intent.request.method,
36
+ secret_ref: intent.secretRef,
37
+ body: intent.request.body,
38
+ body_sha256: intent.request.bodySha256,
39
+ session_id: intent.sessionId,
40
+ endpoint_agent_id: intent.endpointAgentId,
41
+ runtime_agent_id: intent.runtimeAgentId,
42
+ runtime_agent_kind: intent.runtimeAgentKind,
43
+ origin_fingerprint: intent.originFingerprint,
44
+ }, "BROKER_PREVIEW_REQUEST_FAILED");
45
+ return normalizePreview(payload.preview);
46
+ }
47
+ async execute(intent) {
48
+ const prepared = await this.prepareExecution(intent);
49
+ const executed = await this.postJson(`${this.brokerdBaseUrl}/v1/execute`, prepared.executePayload, "BROKER_EXECUTE_FAILED");
50
+ return {
51
+ executionId: executed.execution_id,
52
+ capabilityId: executed.capability_id,
53
+ provider: executed.provider,
54
+ status: executed.status,
55
+ headers: executed.headers ?? {},
56
+ body: executed.body,
57
+ contentType: executed.content_type,
58
+ };
59
+ }
60
+ async executeStream(intent) {
61
+ const prepared = await this.prepareExecution(intent);
62
+ const response = await this.postResponse(`${this.brokerdBaseUrl}/v1/execute/stream`, prepared.executePayload, "BROKER_EXECUTE_STREAM_FAILED");
63
+ if (!response.body) {
64
+ throw new Error("BROKER_EXECUTE_STREAM_EMPTY");
65
+ }
66
+ return {
67
+ executionId: response.headers.get(BROKER_EXECUTION_ID_HEADER) ?? prepared.capabilityId,
68
+ capabilityId: response.headers.get(BROKER_CAPABILITY_ID_HEADER) ?? prepared.capabilityId,
69
+ provider: response.headers.get(BROKER_PROVIDER_HEADER) ?? intent.provider,
70
+ status: response.status,
71
+ headers: headersToObject(response.headers),
72
+ body: response.body,
73
+ contentType: response.headers.get("content-type") ?? undefined,
74
+ };
75
+ }
76
+ async issueCapability(intent, proofBinding, previewId) {
77
+ return this.postJson(`${this.hushdBaseUrl}/api/v1/broker/capabilities`, {
78
+ provider: intent.provider,
79
+ url: intent.request.url,
80
+ method: intent.request.method,
81
+ secret_ref: intent.secretRef,
82
+ body_sha256: intent.request.bodySha256,
83
+ session_id: intent.sessionId,
84
+ endpoint_agent_id: intent.endpointAgentId,
85
+ runtime_agent_id: intent.runtimeAgentId,
86
+ runtime_agent_kind: intent.runtimeAgentKind,
87
+ origin_fingerprint: intent.originFingerprint,
88
+ proof_binding: proofBinding,
89
+ preview_id: previewId,
90
+ delegation_token: intent.delegationToken,
91
+ }, "BROKER_CAPABILITY_REQUEST_FAILED");
92
+ }
93
+ async postJson(url, body, errorCode) {
94
+ const response = await this.postResponse(url, body, errorCode);
95
+ try {
96
+ return (await response.json());
97
+ }
98
+ catch (error) {
99
+ const cause = error instanceof Error ? error.message : String(error);
100
+ throw new Error(`${errorCode}:${cause}`);
101
+ }
102
+ }
103
+ async postResponse(url, body, errorCode) {
104
+ const controller = new AbortController();
105
+ const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
106
+ timeoutId.unref?.();
107
+ try {
108
+ const response = await this.fetchImpl(url, {
109
+ method: "POST",
110
+ headers: this.requestHeaders(),
111
+ body: JSON.stringify(body),
112
+ signal: controller.signal,
113
+ });
114
+ if (!response.ok) {
115
+ throw new Error(`${errorCode}:${response.status}`);
116
+ }
117
+ return response;
118
+ }
119
+ catch (error) {
120
+ const cause = error instanceof Error ? error.message : String(error);
121
+ throw new Error(`${errorCode}:${cause}`);
122
+ }
123
+ finally {
124
+ clearTimeout(timeoutId);
125
+ }
126
+ }
127
+ async prepareExecution(intent) {
128
+ const proofBindingMode = this.proofBindingMode ?? defaultProofBindingMode(this.brokerdBaseUrl);
129
+ const loopbackBindingSecret = proofBindingMode === "loopback" ? randomUUID() : undefined;
130
+ const dpopBinding = proofBindingMode === "dpop" ? await createDpopBindingMaterial() : undefined;
131
+ const preview = intent.previewId || !this.previewBeforeExecute ? undefined : await this.previewIntent(intent);
132
+ if (preview &&
133
+ preview.approvalRequired &&
134
+ preview.approvalState !== "approved" &&
135
+ preview.approvalState !== "not_required") {
136
+ throw new BrokerPreviewApprovalRequiredError(preview);
137
+ }
138
+ const capability = await this.issueCapability(intent, proofBindingMode === "loopback"
139
+ ? {
140
+ mode: "loopback",
141
+ binding_sha256: sha256Hex(loopbackBindingSecret),
142
+ }
143
+ : {
144
+ mode: "dpop",
145
+ key_thumbprint: dpopBinding.keyThumbprint,
146
+ }, intent.previewId ?? preview?.previewId);
147
+ const executePayload = {
148
+ capability: capability.capability,
149
+ request: {
150
+ url: intent.request.url,
151
+ method: intent.request.method,
152
+ headers: intent.request.headers ?? {},
153
+ body: intent.request.body,
154
+ body_sha256: intent.request.bodySha256,
155
+ },
156
+ };
157
+ if (loopbackBindingSecret) {
158
+ executePayload.binding_secret = loopbackBindingSecret;
159
+ }
160
+ if (dpopBinding) {
161
+ executePayload.binding_proof = await createDpopBindingProof(dpopBinding, capability.capability_id, intent.request);
162
+ }
163
+ return {
164
+ capabilityId: capability.capability_id,
165
+ executePayload,
166
+ };
167
+ }
168
+ requestHeaders() {
169
+ const headers = {
170
+ "content-type": "application/json",
171
+ };
172
+ if (this.token) {
173
+ headers.authorization = `Bearer ${this.token}`;
174
+ }
175
+ return headers;
176
+ }
177
+ }
178
+ export function sha256Hex(input) {
179
+ return createHash("sha256").update(input).digest("hex");
180
+ }
181
+ async function createDpopBindingMaterial() {
182
+ const privateKey = randomBytes(32);
183
+ const publicKey = await ed25519.getPublicKeyAsync(privateKey);
184
+ const publicKeyHex = bytesToHex(publicKey);
185
+ return {
186
+ privateKey,
187
+ publicKeyHex,
188
+ keyThumbprint: sha256Hex(publicKeyHex),
189
+ };
190
+ }
191
+ async function createDpopBindingProof(material, capabilityId, request) {
192
+ const issuedAt = new Date().toISOString();
193
+ const nonce = randomUUID();
194
+ const message = bindingProofMessage(capabilityId, request.method, request.url, request.bodySha256, issuedAt, nonce);
195
+ const signature = await ed25519.signAsync(Buffer.from(message, "utf8"), material.privateKey);
196
+ return {
197
+ mode: "dpop",
198
+ public_key: material.publicKeyHex,
199
+ signature: bytesToHex(signature),
200
+ issued_at: issuedAt,
201
+ nonce,
202
+ };
203
+ }
204
+ function defaultProofBindingMode(brokerdBaseUrl) {
205
+ try {
206
+ const host = new URL(brokerdBaseUrl).hostname;
207
+ return isLoopbackHost(host) ? "loopback" : "dpop";
208
+ }
209
+ catch {
210
+ return "dpop";
211
+ }
212
+ }
213
+ function isLoopbackHost(host) {
214
+ return host === "localhost" || host === "127.0.0.1" || host === "::1";
215
+ }
216
+ function bindingProofMessage(capabilityId, method, url, bodySha256, issuedAt, nonce) {
217
+ return [
218
+ `broker-capability:${capabilityId}`,
219
+ `method:${method}`,
220
+ `url:${url}`,
221
+ `body-sha256:${bodySha256 ?? "-"}`,
222
+ `issued-at:${issuedAt}`,
223
+ `nonce:${nonce}`,
224
+ ].join("\n");
225
+ }
226
+ function bytesToHex(value) {
227
+ return Buffer.from(value).toString("hex");
228
+ }
229
+ function headersToObject(headers) {
230
+ const result = {};
231
+ headers.forEach((value, key) => {
232
+ result[key] = value;
233
+ });
234
+ return result;
235
+ }
236
+ function normalizePreview(payload) {
237
+ return {
238
+ previewId: payload.preview_id,
239
+ provider: payload.provider,
240
+ operation: payload.operation,
241
+ summary: payload.summary,
242
+ createdAt: payload.created_at,
243
+ riskLevel: payload.risk_level,
244
+ dataClasses: payload.data_classes ?? [],
245
+ resources: payload.resources ?? [],
246
+ egressHost: payload.egress_host,
247
+ estimatedCostUsdMicros: payload.estimated_cost_usd_micros,
248
+ approvalRequired: payload.approval_required,
249
+ approvalState: payload.approval_state,
250
+ approvedAt: payload.approved_at,
251
+ approver: payload.approver,
252
+ };
253
+ }
254
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAElE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAmH1C,MAAM,0BAA0B,GAAG,4BAA4B,CAAC;AAChE,MAAM,2BAA2B,GAAG,6BAA6B,CAAC;AAClE,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AA0BxD,MAAM,OAAO,kCAAmC,SAAQ,KAAK;IAClD,OAAO,CAAsB;IAEtC,YAAY,OAA4B;QACtC,KAAK,CAAC,oCAAoC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,oCAAoC,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IACZ,YAAY,CAAS;IACrB,cAAc,CAAS;IACvB,KAAK,CAAU;IACf,SAAS,CAAS;IAClB,gBAAgB,CAA0B;IAC1C,oBAAoB,CAAU;IAC9B,SAAS,CAAe;IAEzC,YAAY,OAAkC;QAC5C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,IAAI,CAAC;QACjE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAA6B;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CACjC,GAAG,IAAI,CAAC,YAAY,yBAAyB,EAC7C;YACE,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG;YACvB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;YAC7B,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;YACzB,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;YACtC,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,iBAAiB,EAAE,MAAM,CAAC,eAAe;YACzC,gBAAgB,EAAE,MAAM,CAAC,cAAc;YACvC,kBAAkB,EAAE,MAAM,CAAC,gBAAgB;YAC3C,kBAAkB,EAAE,MAAM,CAAC,iBAAiB;SAC7C,EACD,+BAA+B,CAChC,CAAC;QACF,OAAO,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAA6B;QACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAClC,GAAG,IAAI,CAAC,cAAc,aAAa,EACnC,QAAQ,CAAC,cAAc,EACvB,uBAAuB,CACxB,CAAC;QAEF,OAAO;YACL,WAAW,EAAE,QAAQ,CAAC,YAAY;YAClC,YAAY,EAAE,QAAQ,CAAC,aAAa;YACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;YAC/B,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,WAAW,EAAE,QAAQ,CAAC,YAAY;SACnC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAA6B;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CACtC,GAAG,IAAI,CAAC,cAAc,oBAAoB,EAC1C,QAAQ,CAAC,cAAc,EACvB,8BAA8B,CAC/B,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QAED,OAAO;YACL,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,QAAQ,CAAC,YAAY;YACtF,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,QAAQ,CAAC,YAAY;YACxF,QAAQ,EACL,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAA2B,IAAI,MAAM,CAAC,QAAQ;YAC5F,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC1C,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,SAAS;SAC/D,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,MAA6B,EAC7B,YAAoC,EACpC,SAAkB;QAElB,OAAO,IAAI,CAAC,QAAQ,CAClB,GAAG,IAAI,CAAC,YAAY,6BAA6B,EACjD;YACE,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG;YACvB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;YAC7B,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;YACtC,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,iBAAiB,EAAE,MAAM,CAAC,eAAe;YACzC,gBAAgB,EAAE,MAAM,CAAC,cAAc;YACvC,kBAAkB,EAAE,MAAM,CAAC,gBAAgB;YAC3C,kBAAkB,EAAE,MAAM,CAAC,iBAAiB;YAC5C,aAAa,EAAE,YAAY;YAC3B,UAAU,EAAE,SAAS;YACrB,gBAAgB,EAAE,MAAM,CAAC,eAAe;SACzC,EACD,kCAAkC,CACnC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,GAAW,EACX,IAAa,EACb,SAAiB;QAEjB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,GAAW,EACX,IAAa,EACb,SAAiB;QAEjB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACvE,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;QAEpB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;gBACzC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE;gBAC9B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACrD,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,MAA6B;QAE7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/F,MAAM,qBAAqB,GAAG,gBAAgB,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,MAAM,WAAW,GAAG,gBAAgB,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,yBAAyB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAChG,MAAM,OAAO,GACX,MAAM,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAChG,IACE,OAAO;YACP,OAAO,CAAC,gBAAgB;YACxB,OAAO,CAAC,aAAa,KAAK,UAAU;YACpC,OAAO,CAAC,aAAa,KAAK,cAAc,EACxC,CAAC;YACD,MAAM,IAAI,kCAAkC,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAC3C,MAAM,EACN,gBAAgB,KAAK,UAAU;YAC7B,CAAC,CAAC;gBACE,IAAI,EAAE,UAAU;gBAChB,cAAc,EAAE,SAAS,CAAC,qBAAsB,CAAC;aAClD;YACH,CAAC,CAAC;gBACE,IAAI,EAAE,MAAM;gBACZ,cAAc,EAAE,WAAY,CAAC,aAAa;aAC3C,EACL,MAAM,CAAC,SAAS,IAAI,OAAO,EAAE,SAAS,CACvC,CAAC;QACF,MAAM,cAAc,GAA4B;YAC9C,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,OAAO,EAAE;gBACP,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG;gBACvB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;gBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE;gBACrC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;gBACzB,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;aACvC;SACF,CAAC;QACF,IAAI,qBAAqB,EAAE,CAAC;YAC1B,cAAc,CAAC,cAAc,GAAG,qBAAqB,CAAC;QACxD,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YAChB,cAAc,CAAC,aAAa,GAAG,MAAM,sBAAsB,CACzD,WAAW,EACX,UAAU,CAAC,aAAa,EACxB,MAAM,CAAC,OAAO,CACf,CAAC;QACJ,CAAC;QAED,OAAO;YACL,YAAY,EAAE,UAAU,CAAC,aAAa;YACtC,cAAc;SACf,CAAC;IACJ,CAAC;IAEO,cAAc;QACpB,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,aAAa,GAAG,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;QACjD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,yBAAyB;IACtC,MAAM,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO;QACL,UAAU;QACV,YAAY;QACZ,aAAa,EAAE,SAAS,CAAC,YAAY,CAAC;KACvC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,QAA6B,EAC7B,YAAoB,EACpB,OAAyC;IAEzC,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,mBAAmB,CACjC,YAAY,EACZ,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,UAAU,EAClB,QAAQ,EACR,KAAK,CACN,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC7F,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,QAAQ,CAAC,YAAY;QACjC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC;QAChC,SAAS,EAAE,QAAQ;QACnB,KAAK;KACN,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,cAAsB;IACrD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC;QAC9C,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,CAAC;AACxE,CAAC;AAED,SAAS,mBAAmB,CAC1B,YAAoB,EACpB,MAAwB,EACxB,GAAW,EACX,UAA8B,EAC9B,QAAgB,EAChB,KAAa;IAEb,OAAO;QACL,qBAAqB,YAAY,EAAE;QACnC,UAAU,MAAM,EAAE;QAClB,OAAO,GAAG,EAAE;QACZ,eAAe,UAAU,IAAI,GAAG,EAAE;QAClC,aAAa,QAAQ,EAAE;QACvB,SAAS,KAAK,EAAE;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB;IACnC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACvC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAyC;IACjE,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,UAAU;QAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,OAAO,CAAC,UAAU;QAC7B,SAAS,EAAE,OAAO,CAAC,UAAU;QAC7B,WAAW,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;QACvC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;QAClC,UAAU,EAAE,OAAO,CAAC,WAAW;QAC/B,sBAAsB,EAAE,OAAO,CAAC,yBAAyB;QACzD,gBAAgB,EAAE,OAAO,CAAC,iBAAiB;QAC3C,aAAa,EAAE,OAAO,CAAC,cAAc;QACrC,UAAU,EAAE,OAAO,CAAC,WAAW;QAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { BrokerExecutionIntent, BrokerExecutionResponse, BrokerExecutionStreamResponse, BrokerHttpMethod, BrokerProofBindingMode, BrokerProvider, SecretBrokerClientOptions, } from "./client.js";
2
+ export { SecretBrokerClient } from "./client.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,6BAA6B,EAC7B,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { SecretBrokerClient } from "./client.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@clawdstrike/broker-client",
3
+ "version": "0.2.6",
4
+ "description": "Capability issuance and execute client for the Clawdstrike secret broker",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ }
13
+ },
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "prepare": "npm run build",
17
+ "test": "vitest run",
18
+ "test:watch": "vitest",
19
+ "typecheck": "tsc --noEmit",
20
+ "format": "biome check --write src/",
21
+ "format:check": "biome check src/"
22
+ },
23
+ "dependencies": {
24
+ "@noble/ed25519": "^3.0.0"
25
+ },
26
+ "devDependencies": {
27
+ "@types/node": "^25.2.0",
28
+ "typescript": "^5.9.3",
29
+ "vitest": "^4.0.18"
30
+ },
31
+ "files": [
32
+ "dist",
33
+ "README.md"
34
+ ],
35
+ "license": "Apache-2.0",
36
+ "author": "Clawdstrike Contributors",
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "https://github.com/backbay-labs/clawdstrike.git",
40
+ "directory": "packages/adapters/clawdstrike-broker-client"
41
+ },
42
+ "homepage": "https://github.com/backbay-labs/clawdstrike",
43
+ "bugs": {
44
+ "url": "https://github.com/backbay-labs/clawdstrike/issues"
45
+ },
46
+ "keywords": [
47
+ "clawdstrike",
48
+ "security",
49
+ "broker",
50
+ "secret"
51
+ ],
52
+ "publishConfig": {
53
+ "access": "public"
54
+ },
55
+ "engines": {
56
+ "node": ">=18"
57
+ }
58
+ }