@beacon-build/sdk 1.15.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/CHANGELOG.md +36 -0
- package/LICENSE +21 -0
- package/dist/cli/backlog.d.ts +14 -0
- package/dist/cli/backlog.d.ts.map +1 -0
- package/dist/cli/backlog.js +228 -0
- package/dist/cli/backlog.js.map +1 -0
- package/dist/cli/claude-md-check.d.ts +18 -0
- package/dist/cli/claude-md-check.d.ts.map +1 -0
- package/dist/cli/claude-md-check.js +57 -0
- package/dist/cli/claude-md-check.js.map +1 -0
- package/dist/cli/context.d.ts +14 -0
- package/dist/cli/context.d.ts.map +1 -0
- package/dist/cli/context.js +465 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/help.d.ts +17 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +71 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +22 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +212 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/project-log.d.ts +16 -0
- package/dist/cli/project-log.d.ts.map +1 -0
- package/dist/cli/project-log.js +185 -0
- package/dist/cli/project-log.js.map +1 -0
- package/dist/cli/setup-worktree.d.ts +23 -0
- package/dist/cli/setup-worktree.d.ts.map +1 -0
- package/dist/cli/setup-worktree.js +396 -0
- package/dist/cli/setup-worktree.js.map +1 -0
- package/dist/cli/update-client.d.ts +14 -0
- package/dist/cli/update-client.d.ts.map +1 -0
- package/dist/cli/update-client.js +629 -0
- package/dist/cli/update-client.js.map +1 -0
- package/dist/cli/workflow-sync.d.ts +19 -0
- package/dist/cli/workflow-sync.d.ts.map +1 -0
- package/dist/cli/workflow-sync.js +133 -0
- package/dist/cli/workflow-sync.js.map +1 -0
- package/dist/clients/admin/agents.client.d.ts +38 -0
- package/dist/clients/admin/agents.client.d.ts.map +1 -0
- package/dist/clients/admin/agents.client.js +90 -0
- package/dist/clients/admin/agents.client.js.map +1 -0
- package/dist/clients/admin/alerts.client.d.ts +8 -0
- package/dist/clients/admin/alerts.client.d.ts.map +1 -0
- package/dist/clients/admin/alerts.client.js +11 -0
- package/dist/clients/admin/alerts.client.js.map +1 -0
- package/dist/clients/admin/assets.client.d.ts +19 -0
- package/dist/clients/admin/assets.client.d.ts.map +1 -0
- package/dist/clients/admin/assets.client.js +27 -0
- package/dist/clients/admin/assets.client.js.map +1 -0
- package/dist/clients/admin/board-messages.client.d.ts +13 -0
- package/dist/clients/admin/board-messages.client.d.ts.map +1 -0
- package/dist/clients/admin/board-messages.client.js +16 -0
- package/dist/clients/admin/board-messages.client.js.map +1 -0
- package/dist/clients/admin/conversation-messages.client.d.ts +11 -0
- package/dist/clients/admin/conversation-messages.client.d.ts.map +1 -0
- package/dist/clients/admin/conversation-messages.client.js +27 -0
- package/dist/clients/admin/conversation-messages.client.js.map +1 -0
- package/dist/clients/admin/db.client.d.ts +12 -0
- package/dist/clients/admin/db.client.d.ts.map +1 -0
- package/dist/clients/admin/db.client.js +13 -0
- package/dist/clients/admin/db.client.js.map +1 -0
- package/dist/clients/admin/documents.client.d.ts +23 -0
- package/dist/clients/admin/documents.client.d.ts.map +1 -0
- package/dist/clients/admin/documents.client.js +33 -0
- package/dist/clients/admin/documents.client.js.map +1 -0
- package/dist/clients/admin/github-proxy.client.d.ts +12 -0
- package/dist/clients/admin/github-proxy.client.d.ts.map +1 -0
- package/dist/clients/admin/github-proxy.client.js +10 -0
- package/dist/clients/admin/github-proxy.client.js.map +1 -0
- package/dist/clients/admin/memories.client.d.ts +25 -0
- package/dist/clients/admin/memories.client.d.ts.map +1 -0
- package/dist/clients/admin/memories.client.js +67 -0
- package/dist/clients/admin/memories.client.js.map +1 -0
- package/dist/clients/admin/organizations.client.d.ts +25 -0
- package/dist/clients/admin/organizations.client.d.ts.map +1 -0
- package/dist/clients/admin/organizations.client.js +33 -0
- package/dist/clients/admin/organizations.client.js.map +1 -0
- package/dist/clients/admin/planning.client.d.ts +16 -0
- package/dist/clients/admin/planning.client.d.ts.map +1 -0
- package/dist/clients/admin/planning.client.js +24 -0
- package/dist/clients/admin/planning.client.js.map +1 -0
- package/dist/clients/admin/projects.client.d.ts +10 -0
- package/dist/clients/admin/projects.client.d.ts.map +1 -0
- package/dist/clients/admin/projects.client.js +21 -0
- package/dist/clients/admin/projects.client.js.map +1 -0
- package/dist/clients/admin/sessions.client.d.ts +23 -0
- package/dist/clients/admin/sessions.client.d.ts.map +1 -0
- package/dist/clients/admin/sessions.client.js +53 -0
- package/dist/clients/admin/sessions.client.js.map +1 -0
- package/dist/clients/admin/tasks.client.d.ts +21 -0
- package/dist/clients/admin/tasks.client.d.ts.map +1 -0
- package/dist/clients/admin/tasks.client.js +44 -0
- package/dist/clients/admin/tasks.client.js.map +1 -0
- package/dist/clients/admin/tool-calls.client.d.ts +12 -0
- package/dist/clients/admin/tool-calls.client.d.ts.map +1 -0
- package/dist/clients/admin/tool-calls.client.js +29 -0
- package/dist/clients/admin/tool-calls.client.js.map +1 -0
- package/dist/clients/admin/usage.client.d.ts +23 -0
- package/dist/clients/admin/usage.client.d.ts.map +1 -0
- package/dist/clients/admin/usage.client.js +37 -0
- package/dist/clients/admin/usage.client.js.map +1 -0
- package/dist/clients/admin/users.client.d.ts +17 -0
- package/dist/clients/admin/users.client.d.ts.map +1 -0
- package/dist/clients/admin/users.client.js +24 -0
- package/dist/clients/admin/users.client.js.map +1 -0
- package/dist/clients/agent/messaging.client.d.ts +13 -0
- package/dist/clients/agent/messaging.client.d.ts.map +1 -0
- package/dist/clients/agent/messaging.client.js +37 -0
- package/dist/clients/agent/messaging.client.js.map +1 -0
- package/dist/clients/agent/tasks.client.d.ts +18 -0
- package/dist/clients/agent/tasks.client.d.ts.map +1 -0
- package/dist/clients/agent/tasks.client.js +68 -0
- package/dist/clients/agent/tasks.client.js.map +1 -0
- package/dist/clients/auth.client.d.ts +40 -0
- package/dist/clients/auth.client.d.ts.map +1 -0
- package/dist/clients/auth.client.js +78 -0
- package/dist/clients/auth.client.js.map +1 -0
- package/dist/clients/ops/agents-ops.client.d.ts +46 -0
- package/dist/clients/ops/agents-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/agents-ops.client.js +117 -0
- package/dist/clients/ops/agents-ops.client.js.map +1 -0
- package/dist/clients/ops/board-messages-ops.client.d.ts +14 -0
- package/dist/clients/ops/board-messages-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/board-messages-ops.client.js +26 -0
- package/dist/clients/ops/board-messages-ops.client.js.map +1 -0
- package/dist/clients/ops/conversation-messages-ops.client.d.ts +10 -0
- package/dist/clients/ops/conversation-messages-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/conversation-messages-ops.client.js +20 -0
- package/dist/clients/ops/conversation-messages-ops.client.js.map +1 -0
- package/dist/clients/ops/documents-ops.client.d.ts +20 -0
- package/dist/clients/ops/documents-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/documents-ops.client.js +31 -0
- package/dist/clients/ops/documents-ops.client.js.map +1 -0
- package/dist/clients/ops/memories-ops.client.d.ts +25 -0
- package/dist/clients/ops/memories-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/memories-ops.client.js +71 -0
- package/dist/clients/ops/memories-ops.client.js.map +1 -0
- package/dist/clients/ops/ops-db.client.d.ts +29 -0
- package/dist/clients/ops/ops-db.client.d.ts.map +1 -0
- package/dist/clients/ops/ops-db.client.js +35 -0
- package/dist/clients/ops/ops-db.client.js.map +1 -0
- package/dist/clients/ops/ops-logs.client.d.ts +22 -0
- package/dist/clients/ops/ops-logs.client.d.ts.map +1 -0
- package/dist/clients/ops/ops-logs.client.js +24 -0
- package/dist/clients/ops/ops-logs.client.js.map +1 -0
- package/dist/clients/ops/ops-mq.client.d.ts +19 -0
- package/dist/clients/ops/ops-mq.client.d.ts.map +1 -0
- package/dist/clients/ops/ops-mq.client.js +16 -0
- package/dist/clients/ops/ops-mq.client.js.map +1 -0
- package/dist/clients/ops/ops-northflank.client.d.ts +34 -0
- package/dist/clients/ops/ops-northflank.client.d.ts.map +1 -0
- package/dist/clients/ops/ops-northflank.client.js +42 -0
- package/dist/clients/ops/ops-northflank.client.js.map +1 -0
- package/dist/clients/ops/ops-storage.client.d.ts +34 -0
- package/dist/clients/ops/ops-storage.client.d.ts.map +1 -0
- package/dist/clients/ops/ops-storage.client.js +39 -0
- package/dist/clients/ops/ops-storage.client.js.map +1 -0
- package/dist/clients/ops/projects-ops.client.d.ts +20 -0
- package/dist/clients/ops/projects-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/projects-ops.client.js +18 -0
- package/dist/clients/ops/projects-ops.client.js.map +1 -0
- package/dist/clients/ops/realtime-ops.client.d.ts +14 -0
- package/dist/clients/ops/realtime-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/realtime-ops.client.js +10 -0
- package/dist/clients/ops/realtime-ops.client.js.map +1 -0
- package/dist/clients/ops/sessions-ops.client.d.ts +29 -0
- package/dist/clients/ops/sessions-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/sessions-ops.client.js +69 -0
- package/dist/clients/ops/sessions-ops.client.js.map +1 -0
- package/dist/clients/ops/tasks-ops.client.d.ts +18 -0
- package/dist/clients/ops/tasks-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/tasks-ops.client.js +37 -0
- package/dist/clients/ops/tasks-ops.client.js.map +1 -0
- package/dist/clients/ops/tool-calls-ops.client.d.ts +12 -0
- package/dist/clients/ops/tool-calls-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/tool-calls-ops.client.js +29 -0
- package/dist/clients/ops/tool-calls-ops.client.js.map +1 -0
- package/dist/clients/ops/usage-workflows-ops.client.d.ts +22 -0
- package/dist/clients/ops/usage-workflows-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/usage-workflows-ops.client.js +23 -0
- package/dist/clients/ops/usage-workflows-ops.client.js.map +1 -0
- package/dist/factory/admin-sdk.d.ts +53 -0
- package/dist/factory/admin-sdk.d.ts.map +1 -0
- package/dist/factory/admin-sdk.js +59 -0
- package/dist/factory/admin-sdk.js.map +1 -0
- package/dist/factory/agent-sdk.d.ts +22 -0
- package/dist/factory/agent-sdk.d.ts.map +1 -0
- package/dist/factory/agent-sdk.js +22 -0
- package/dist/factory/agent-sdk.js.map +1 -0
- package/dist/factory/ops-sdk.d.ts +53 -0
- package/dist/factory/ops-sdk.d.ts.map +1 -0
- package/dist/factory/ops-sdk.js +56 -0
- package/dist/factory/ops-sdk.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/legacy/sdk-factory.d.ts +34 -0
- package/dist/legacy/sdk-factory.d.ts.map +1 -0
- package/dist/legacy/sdk-factory.js +34 -0
- package/dist/legacy/sdk-factory.js.map +1 -0
- package/dist/lib/context.d.ts +69 -0
- package/dist/lib/context.d.ts.map +1 -0
- package/dist/lib/context.js +225 -0
- package/dist/lib/context.js.map +1 -0
- package/dist/lib/db.d.ts +16 -0
- package/dist/lib/db.d.ts.map +1 -0
- package/dist/lib/db.js +50 -0
- package/dist/lib/db.js.map +1 -0
- package/dist/lib/logger.d.ts +14 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +14 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/opencode.d.ts +33 -0
- package/dist/lib/opencode.d.ts.map +1 -0
- package/dist/lib/opencode.js +101 -0
- package/dist/lib/opencode.js.map +1 -0
- package/dist/lib/utils.d.ts +18 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +40 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/manifest.d.ts +26 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +700 -0
- package/dist/manifest.js.map +1 -0
- package/dist/realtime/realtime.client.d.ts +76 -0
- package/dist/realtime/realtime.client.d.ts.map +1 -0
- package/dist/realtime/realtime.client.js +168 -0
- package/dist/realtime/realtime.client.js.map +1 -0
- package/dist/transport/binary-client.d.ts +23 -0
- package/dist/transport/binary-client.d.ts.map +1 -0
- package/dist/transport/binary-client.js +69 -0
- package/dist/transport/binary-client.js.map +1 -0
- package/dist/transport/errors.d.ts +14 -0
- package/dist/transport/errors.d.ts.map +1 -0
- package/dist/transport/errors.js +57 -0
- package/dist/transport/errors.js.map +1 -0
- package/dist/transport/http-client.d.ts +23 -0
- package/dist/transport/http-client.d.ts.map +1 -0
- package/dist/transport/http-client.js +88 -0
- package/dist/transport/http-client.js.map +1 -0
- package/dist/transport/multipart-client.d.ts +25 -0
- package/dist/transport/multipart-client.d.ts.map +1 -0
- package/dist/transport/multipart-client.js +87 -0
- package/dist/transport/multipart-client.js.map +1 -0
- package/dist/transport/ops-api-client.d.ts +39 -0
- package/dist/transport/ops-api-client.d.ts.map +1 -0
- package/dist/transport/ops-api-client.js +153 -0
- package/dist/transport/ops-api-client.js.map +1 -0
- package/dist/transport/sse-client.d.ts +33 -0
- package/dist/transport/sse-client.d.ts.map +1 -0
- package/dist/transport/sse-client.js +127 -0
- package/dist/transport/sse-client.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RealtimeSdkClient — F141
|
|
3
|
+
*
|
|
4
|
+
* Browser-focused SSE client for GET /api/v1/realtime/subscribe.
|
|
5
|
+
* EventEmitter-based pattern with auto-reconnect.
|
|
6
|
+
*
|
|
7
|
+
* Uses event-source-polyfill for Authorization-header support.
|
|
8
|
+
* Native EventSource does not support custom request headers.
|
|
9
|
+
* INV-18: tokens are passed via Authorization header — never in the URL.
|
|
10
|
+
*/
|
|
11
|
+
import type { RealtimeChannel, RealtimePayload, RealtimeEventType } from '@beacon-build/core';
|
|
12
|
+
export interface RealtimeSdkClientConfig {
|
|
13
|
+
/** Base URL for the API, e.g. 'https://api.beacon.build' */
|
|
14
|
+
baseUrl: string;
|
|
15
|
+
/** User-JWT, Agent-JWT, or Ops-Key */
|
|
16
|
+
authToken: string;
|
|
17
|
+
/** Channels to subscribe to (max 10 — INV-10) */
|
|
18
|
+
channels: RealtimeChannel[];
|
|
19
|
+
onConnect?: () => void;
|
|
20
|
+
onDisconnect?: (reason: 'server-closed' | 'network-error' | 'manual') => void;
|
|
21
|
+
onError?: (error: Error) => void;
|
|
22
|
+
reconnect?: {
|
|
23
|
+
/** default: true */
|
|
24
|
+
enabled?: boolean;
|
|
25
|
+
/** default: Infinity */
|
|
26
|
+
maxAttempts?: number;
|
|
27
|
+
/** default: 1000ms */
|
|
28
|
+
baseDelayMs?: number;
|
|
29
|
+
/** default: 30000ms */
|
|
30
|
+
maxDelayMs?: number;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
type EventHandler = (data: Record<string, unknown>) => void;
|
|
34
|
+
type WildcardHandler = (payload: RealtimePayload) => void;
|
|
35
|
+
type LifecycleHandler = (...args: unknown[]) => void;
|
|
36
|
+
/**
|
|
37
|
+
* EventEmitter-style SSE client for the beacon Realtime API.
|
|
38
|
+
*
|
|
39
|
+
* Usage:
|
|
40
|
+
* ```ts
|
|
41
|
+
* const client = new RealtimeSdkClient({ baseUrl, authToken, channels: ['actor:<uuid>'] })
|
|
42
|
+
* client.on(RealtimeEventType.TASK_ASSIGNED, (data) => handleData(data))
|
|
43
|
+
* client.on('*', (payload) => handlePayload(payload))
|
|
44
|
+
* client.connect()
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare class RealtimeSdkClient {
|
|
48
|
+
private config;
|
|
49
|
+
private es;
|
|
50
|
+
private disconnected;
|
|
51
|
+
private reconnectAttempts;
|
|
52
|
+
private reconnectTimer;
|
|
53
|
+
private eventHandlers;
|
|
54
|
+
private wildcardHandlers;
|
|
55
|
+
private lifecycleHandlers;
|
|
56
|
+
constructor(config: RealtimeSdkClientConfig);
|
|
57
|
+
on(eventType: RealtimeEventType, handler: EventHandler): this;
|
|
58
|
+
on(wildcard: '*', handler: WildcardHandler): this;
|
|
59
|
+
on(lifecycle: 'connect' | 'disconnect' | 'error', handler: LifecycleHandler): this;
|
|
60
|
+
/**
|
|
61
|
+
* Open the SSE connection. Idempotent — no-op if already connected.
|
|
62
|
+
* INV-12: once disconnect() is called, connect() does nothing.
|
|
63
|
+
*/
|
|
64
|
+
connect(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Permanently close the connection. Idempotent — no-op on repeated calls.
|
|
67
|
+
* INV-12: final — no reconnect after disconnect().
|
|
68
|
+
*/
|
|
69
|
+
disconnect(): void;
|
|
70
|
+
private _open;
|
|
71
|
+
private _teardown;
|
|
72
|
+
private _scheduleReconnect;
|
|
73
|
+
private _emitLifecycle;
|
|
74
|
+
}
|
|
75
|
+
export {};
|
|
76
|
+
//# sourceMappingURL=realtime.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime.client.d.ts","sourceRoot":"","sources":["../../src/realtime/realtime.client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAI7F,MAAM,WAAW,uBAAuB;IACpC,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAA;IACf,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,GAAG,QAAQ,KAAK,IAAI,CAAA;IAC7E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,SAAS,CAAC,EAAE;QACR,oBAAoB;QACpB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,wBAAwB;QACxB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,sBAAsB;QACtB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,uBAAuB;QACvB,UAAU,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACJ;AAkBD,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;AAC3D,KAAK,eAAe,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAA;AACzD,KAAK,gBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;AAIpD;;;;;;;;;;GAUG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,EAAE,CAAwD;IAClE,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,cAAc,CAA6C;IAEnE,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,iBAAiB,CAAwC;gBAErD,MAAM,EAAE,uBAAuB;IAmB3C,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAC7D,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IACjD,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,GAAG,OAAO,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAmBlF;;;OAGG;IACH,OAAO,IAAI,IAAI;IAMf;;;OAGG;IACH,UAAU,IAAI,IAAI;IAQlB,OAAO,CAAC,KAAK;IAgDb,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,cAAc;CAIzB"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RealtimeSdkClient — F141
|
|
3
|
+
*
|
|
4
|
+
* Browser-focused SSE client for GET /api/v1/realtime/subscribe.
|
|
5
|
+
* EventEmitter-based pattern with auto-reconnect.
|
|
6
|
+
*
|
|
7
|
+
* Uses event-source-polyfill for Authorization-header support.
|
|
8
|
+
* Native EventSource does not support custom request headers.
|
|
9
|
+
* INV-18: tokens are passed via Authorization header — never in the URL.
|
|
10
|
+
*/
|
|
11
|
+
import { EventSourcePolyfill } from 'event-source-polyfill';
|
|
12
|
+
// ─── RealtimeSdkClient ────────────────────────────────────────────────────────
|
|
13
|
+
/**
|
|
14
|
+
* EventEmitter-style SSE client for the beacon Realtime API.
|
|
15
|
+
*
|
|
16
|
+
* Usage:
|
|
17
|
+
* ```ts
|
|
18
|
+
* const client = new RealtimeSdkClient({ baseUrl, authToken, channels: ['actor:<uuid>'] })
|
|
19
|
+
* client.on(RealtimeEventType.TASK_ASSIGNED, (data) => handleData(data))
|
|
20
|
+
* client.on('*', (payload) => handlePayload(payload))
|
|
21
|
+
* client.connect()
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export class RealtimeSdkClient {
|
|
25
|
+
config;
|
|
26
|
+
es = null;
|
|
27
|
+
disconnected = false;
|
|
28
|
+
reconnectAttempts = 0;
|
|
29
|
+
reconnectTimer = null;
|
|
30
|
+
eventHandlers = new Map();
|
|
31
|
+
wildcardHandlers = [];
|
|
32
|
+
lifecycleHandlers = new Map();
|
|
33
|
+
constructor(config) {
|
|
34
|
+
this.config = {
|
|
35
|
+
baseUrl: config.baseUrl,
|
|
36
|
+
authToken: config.authToken,
|
|
37
|
+
channels: config.channels,
|
|
38
|
+
onConnect: config.onConnect,
|
|
39
|
+
onDisconnect: config.onDisconnect,
|
|
40
|
+
onError: config.onError,
|
|
41
|
+
reconnect: {
|
|
42
|
+
enabled: config.reconnect?.enabled ?? true,
|
|
43
|
+
maxAttempts: config.reconnect?.maxAttempts ?? Infinity,
|
|
44
|
+
baseDelayMs: config.reconnect?.baseDelayMs ?? 1000,
|
|
45
|
+
maxDelayMs: config.reconnect?.maxDelayMs ?? 30000,
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
// Implementation signature — not visible outside class
|
|
50
|
+
on(event, handler) {
|
|
51
|
+
if (event === '*') {
|
|
52
|
+
this.wildcardHandlers.push(handler);
|
|
53
|
+
}
|
|
54
|
+
else if (event === 'connect' || event === 'disconnect' || event === 'error') {
|
|
55
|
+
const existing = this.lifecycleHandlers.get(event) ?? [];
|
|
56
|
+
existing.push(handler);
|
|
57
|
+
this.lifecycleHandlers.set(event, existing);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
const existing = this.eventHandlers.get(event) ?? [];
|
|
61
|
+
existing.push(handler);
|
|
62
|
+
this.eventHandlers.set(event, existing);
|
|
63
|
+
}
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
// ─── connect/disconnect ─────────────────────────────────────────────────
|
|
67
|
+
/**
|
|
68
|
+
* Open the SSE connection. Idempotent — no-op if already connected.
|
|
69
|
+
* INV-12: once disconnect() is called, connect() does nothing.
|
|
70
|
+
*/
|
|
71
|
+
connect() {
|
|
72
|
+
if (this.disconnected)
|
|
73
|
+
return;
|
|
74
|
+
if (this.es)
|
|
75
|
+
return;
|
|
76
|
+
this._open();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Permanently close the connection. Idempotent — no-op on repeated calls.
|
|
80
|
+
* INV-12: final — no reconnect after disconnect().
|
|
81
|
+
*/
|
|
82
|
+
disconnect() {
|
|
83
|
+
if (this.disconnected)
|
|
84
|
+
return;
|
|
85
|
+
this.disconnected = true;
|
|
86
|
+
this._teardown('manual');
|
|
87
|
+
}
|
|
88
|
+
// ─── Internal ───────────────────────────────────────────────────────────
|
|
89
|
+
_open() {
|
|
90
|
+
if (this.disconnected)
|
|
91
|
+
return;
|
|
92
|
+
const channelsParam = this.config.channels.map(encodeURIComponent).join(',');
|
|
93
|
+
const url = `${this.config.baseUrl}/api/v1/realtime/subscribe?channels=${channelsParam}`;
|
|
94
|
+
// INV-18: token in Authorization header — never in URL
|
|
95
|
+
const es = new EventSourcePolyfill(url, {
|
|
96
|
+
headers: {
|
|
97
|
+
Authorization: `Bearer ${this.config.authToken}`,
|
|
98
|
+
},
|
|
99
|
+
withCredentials: false,
|
|
100
|
+
});
|
|
101
|
+
this.es = es;
|
|
102
|
+
es.addEventListener('connected', () => {
|
|
103
|
+
this.reconnectAttempts = 0;
|
|
104
|
+
this.config.onConnect?.();
|
|
105
|
+
this._emitLifecycle('connect');
|
|
106
|
+
});
|
|
107
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
108
|
+
es.addEventListener('message', (e) => {
|
|
109
|
+
try {
|
|
110
|
+
const payload = JSON.parse(e.data);
|
|
111
|
+
// Wildcard handlers get full payload
|
|
112
|
+
for (const h of this.wildcardHandlers)
|
|
113
|
+
h(payload);
|
|
114
|
+
// Event-type handlers get only data
|
|
115
|
+
const typeHandlers = this.eventHandlers.get(payload.eventType);
|
|
116
|
+
if (typeHandlers) {
|
|
117
|
+
for (const h of typeHandlers)
|
|
118
|
+
h(payload.data);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// Unparseable message — ignore
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
es.onerror = () => {
|
|
126
|
+
const err = new Error('SSE connection error');
|
|
127
|
+
this.config.onError?.(err);
|
|
128
|
+
this._emitLifecycle('error', err);
|
|
129
|
+
this._teardown('network-error');
|
|
130
|
+
this._scheduleReconnect();
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
_teardown(reason) {
|
|
134
|
+
if (this.reconnectTimer) {
|
|
135
|
+
clearTimeout(this.reconnectTimer);
|
|
136
|
+
this.reconnectTimer = null;
|
|
137
|
+
}
|
|
138
|
+
if (this.es) {
|
|
139
|
+
this.es.close();
|
|
140
|
+
this.es = null;
|
|
141
|
+
}
|
|
142
|
+
this.config.onDisconnect?.(reason);
|
|
143
|
+
this._emitLifecycle('disconnect', reason);
|
|
144
|
+
}
|
|
145
|
+
_scheduleReconnect() {
|
|
146
|
+
if (this.disconnected)
|
|
147
|
+
return;
|
|
148
|
+
const { enabled, maxAttempts, baseDelayMs, maxDelayMs } = this.config.reconnect;
|
|
149
|
+
if (!enabled)
|
|
150
|
+
return;
|
|
151
|
+
if (this.reconnectAttempts >= maxAttempts) {
|
|
152
|
+
this.config.onError?.(new Error('SSE max reconnect attempts reached'));
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const delay = Math.min(baseDelayMs * Math.pow(2, this.reconnectAttempts), maxDelayMs);
|
|
156
|
+
this.reconnectAttempts++;
|
|
157
|
+
this.reconnectTimer = setTimeout(() => {
|
|
158
|
+
this.reconnectTimer = null;
|
|
159
|
+
this._open();
|
|
160
|
+
}, delay);
|
|
161
|
+
}
|
|
162
|
+
_emitLifecycle(event, arg) {
|
|
163
|
+
const handlers = this.lifecycleHandlers.get(event) ?? [];
|
|
164
|
+
for (const h of handlers)
|
|
165
|
+
h(arg);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=realtime.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime.client.js","sourceRoot":"","sources":["../../src/realtime/realtime.client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface BinaryDownloadResult {
|
|
2
|
+
blob: Blob;
|
|
3
|
+
contentType: string;
|
|
4
|
+
contentLength: number | null;
|
|
5
|
+
filename: string | null;
|
|
6
|
+
}
|
|
7
|
+
export interface BinaryClientConfig {
|
|
8
|
+
baseUrl: string;
|
|
9
|
+
basePath?: string;
|
|
10
|
+
getAuthHeader: () => Promise<string>;
|
|
11
|
+
onUnauthorized?: () => void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* BinaryClient — Binary download transport for storage proxy endpoints.
|
|
15
|
+
* Returns Blob + metadata (contentType, contentLength, filename from Content-Disposition).
|
|
16
|
+
* INV-15: binary-specific transport layer.
|
|
17
|
+
*/
|
|
18
|
+
export declare class BinaryClient {
|
|
19
|
+
private config;
|
|
20
|
+
constructor(config: BinaryClientConfig);
|
|
21
|
+
download(path: string): Promise<BinaryDownloadResult>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=binary-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary-client.d.ts","sourceRoot":"","sources":["../../src/transport/binary-client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,IAAI,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IACpC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;CAC9B;AAED;;;;GAIG;AACH,qBAAa,YAAY;IACT,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,kBAAkB;IAExC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAyC9D"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { SdkError, statusToSdkCode } from './errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* BinaryClient — Binary download transport for storage proxy endpoints.
|
|
4
|
+
* Returns Blob + metadata (contentType, contentLength, filename from Content-Disposition).
|
|
5
|
+
* INV-15: binary-specific transport layer.
|
|
6
|
+
*/
|
|
7
|
+
export class BinaryClient {
|
|
8
|
+
config;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.config = config;
|
|
11
|
+
}
|
|
12
|
+
async download(path) {
|
|
13
|
+
let authHeader;
|
|
14
|
+
try {
|
|
15
|
+
authHeader = await this.config.getAuthHeader();
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
throw new SdkError('unauthorized', 'Failed to retrieve access token');
|
|
19
|
+
}
|
|
20
|
+
const basePath = this.config.basePath ?? '/api/v1';
|
|
21
|
+
const url = `${this.config.baseUrl}${basePath}${path}`;
|
|
22
|
+
let res;
|
|
23
|
+
try {
|
|
24
|
+
res = await fetch(url, {
|
|
25
|
+
headers: { Authorization: authHeader },
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
throw new SdkError('network_error', err instanceof Error ? err.message : 'Network request failed');
|
|
30
|
+
}
|
|
31
|
+
if (res.status === 401) {
|
|
32
|
+
this.config.onUnauthorized?.();
|
|
33
|
+
throw new SdkError('unauthorized', 'Unauthorized', 401);
|
|
34
|
+
}
|
|
35
|
+
if (!res.ok) {
|
|
36
|
+
const code = statusToSdkCode(res.status);
|
|
37
|
+
throw new SdkError(code, `HTTP ${res.status}`, res.status);
|
|
38
|
+
}
|
|
39
|
+
const blob = await res.blob();
|
|
40
|
+
const contentType = res.headers.get('content-type') ?? 'application/octet-stream';
|
|
41
|
+
const contentLengthHeader = res.headers.get('content-length');
|
|
42
|
+
const contentLength = contentLengthHeader ? parseInt(contentLengthHeader, 10) : null;
|
|
43
|
+
const filename = parseFilenameFromContentDisposition(res.headers.get('content-disposition'));
|
|
44
|
+
return { blob, contentType, contentLength, filename };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function parseFilenameFromContentDisposition(header) {
|
|
48
|
+
if (!header)
|
|
49
|
+
return null;
|
|
50
|
+
// filename*=UTF-8''encoded or filename="quoted"
|
|
51
|
+
const utf8Match = header.match(/filename\*=UTF-8''([^;]+)/i);
|
|
52
|
+
if (utf8Match) {
|
|
53
|
+
try {
|
|
54
|
+
return decodeURIComponent(utf8Match[1]);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// Malformed percent-encoding — return the raw value rather than throwing
|
|
58
|
+
return utf8Match[1];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const quotedMatch = header.match(/filename="([^"]+)"/i);
|
|
62
|
+
if (quotedMatch)
|
|
63
|
+
return quotedMatch[1];
|
|
64
|
+
const plainMatch = header.match(/filename=([^;]+)/i);
|
|
65
|
+
if (plainMatch)
|
|
66
|
+
return plainMatch[1].trim();
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=binary-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary-client.js","sourceRoot":"","sources":["../../src/transport/binary-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type SdkErrorCode = 'unauthorized' | 'forbidden' | 'not_found' | 'conflict' | 'validation' | 'invalid_transition' | 'rate_limited' | 'server_error' | 'service_unavailable' | 'network_error';
|
|
2
|
+
export declare class SdkError extends Error {
|
|
3
|
+
readonly code: SdkErrorCode;
|
|
4
|
+
readonly status?: number | undefined;
|
|
5
|
+
constructor(code: SdkErrorCode, message: string, status?: number | undefined);
|
|
6
|
+
}
|
|
7
|
+
export declare function statusToSdkCode(status: number): SdkErrorCode;
|
|
8
|
+
/**
|
|
9
|
+
* Map an API-level error code (from response body `{ code: '...' }`) to an SdkErrorCode.
|
|
10
|
+
* Takes precedence over status-based mapping when the body code is present.
|
|
11
|
+
* Falls back to statusToSdkCode when the body code is unrecognised.
|
|
12
|
+
*/
|
|
13
|
+
export declare function apiCodeToSdkCode(apiCode: string, status: number): SdkErrorCode;
|
|
14
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/transport/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAClB,cAAc,GACd,WAAW,GACX,WAAW,GACX,UAAU,GACV,YAAY,GACZ,oBAAoB,GACpB,cAAc,GACd,cAAc,GACd,qBAAqB,GACrB,eAAe,CAAA;AAErB,qBAAa,QAAS,SAAQ,KAAK;aAEX,IAAI,EAAE,YAAY;aAElB,MAAM,CAAC,EAAE,MAAM;gBAFf,IAAI,EAAE,YAAY,EAClC,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA;CAKtC;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAoB5D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAmB9E"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export class SdkError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
status;
|
|
4
|
+
constructor(code, message, status) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.code = code;
|
|
7
|
+
this.status = status;
|
|
8
|
+
this.name = 'SdkError';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function statusToSdkCode(status) {
|
|
12
|
+
switch (status) {
|
|
13
|
+
case 401:
|
|
14
|
+
return 'unauthorized';
|
|
15
|
+
case 403:
|
|
16
|
+
return 'forbidden';
|
|
17
|
+
case 404:
|
|
18
|
+
return 'not_found';
|
|
19
|
+
case 409:
|
|
20
|
+
return 'conflict';
|
|
21
|
+
case 422:
|
|
22
|
+
// 422 is used for both VALIDATION and INVALID_TRANSITION — resolve via body.code
|
|
23
|
+
return 'invalid_transition';
|
|
24
|
+
case 429:
|
|
25
|
+
return 'rate_limited';
|
|
26
|
+
case 503:
|
|
27
|
+
return 'service_unavailable';
|
|
28
|
+
default:
|
|
29
|
+
return 'server_error';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Map an API-level error code (from response body `{ code: '...' }`) to an SdkErrorCode.
|
|
34
|
+
* Takes precedence over status-based mapping when the body code is present.
|
|
35
|
+
* Falls back to statusToSdkCode when the body code is unrecognised.
|
|
36
|
+
*/
|
|
37
|
+
export function apiCodeToSdkCode(apiCode, status) {
|
|
38
|
+
switch (apiCode.toUpperCase()) {
|
|
39
|
+
case 'VALIDATION':
|
|
40
|
+
return 'validation';
|
|
41
|
+
case 'INVALID_TRANSITION':
|
|
42
|
+
return 'invalid_transition';
|
|
43
|
+
case 'NOT_FOUND':
|
|
44
|
+
return 'not_found';
|
|
45
|
+
case 'CONFLICT':
|
|
46
|
+
return 'conflict';
|
|
47
|
+
case 'UNAUTHORIZED':
|
|
48
|
+
return 'unauthorized';
|
|
49
|
+
case 'FORBIDDEN':
|
|
50
|
+
return 'forbidden';
|
|
51
|
+
case 'RATE_LIMITED':
|
|
52
|
+
return 'rate_limited';
|
|
53
|
+
default:
|
|
54
|
+
return statusToSdkCode(status);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/transport/errors.ts"],"names":[],"mappings":"AAYA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEX;IAEA;IAHpB,YACoB,IAAkB,EAClC,OAAe,EACC,MAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAA;QAJE,SAAI,GAAJ,IAAI,CAAc;QAElB,WAAM,GAAN,MAAM,CAAS;QAG/B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;IAC1B,CAAC;CACJ;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC1C,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,GAAG;YACJ,OAAO,cAAc,CAAA;QACzB,KAAK,GAAG;YACJ,OAAO,WAAW,CAAA;QACtB,KAAK,GAAG;YACJ,OAAO,WAAW,CAAA;QACtB,KAAK,GAAG;YACJ,OAAO,UAAU,CAAA;QACrB,KAAK,GAAG;YACJ,iFAAiF;YACjF,OAAO,oBAAoB,CAAA;QAC/B,KAAK,GAAG;YACJ,OAAO,cAAc,CAAA;QACzB,KAAK,GAAG;YACJ,OAAO,qBAAqB,CAAA;QAChC;YACI,OAAO,cAAc,CAAA;IAC7B,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,MAAc;IAC5D,QAAQ,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QAC5B,KAAK,YAAY;YACb,OAAO,YAAY,CAAA;QACvB,KAAK,oBAAoB;YACrB,OAAO,oBAAoB,CAAA;QAC/B,KAAK,WAAW;YACZ,OAAO,WAAW,CAAA;QACtB,KAAK,UAAU;YACX,OAAO,UAAU,CAAA;QACrB,KAAK,cAAc;YACf,OAAO,cAAc,CAAA;QACzB,KAAK,WAAW;YACZ,OAAO,WAAW,CAAA;QACtB,KAAK,cAAc;YACf,OAAO,cAAc,CAAA;QACzB;YACI,OAAO,eAAe,CAAC,MAAM,CAAC,CAAA;IACtC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface HttpClientConfig {
|
|
2
|
+
baseUrl: string;
|
|
3
|
+
/** Base path prefix appended before each request path (e.g. '/api/agent/v1') */
|
|
4
|
+
basePath?: string;
|
|
5
|
+
getToken: () => string | Promise<string>;
|
|
6
|
+
onUnauthorized?: () => void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* HttpClient — JSON HTTP wrapper for User-JWT and Agent-JWT authenticated requests.
|
|
10
|
+
* No retry — POST idempotency is not guaranteed. Consumers handle retry themselves.
|
|
11
|
+
* INV-13: no automatic retry.
|
|
12
|
+
*/
|
|
13
|
+
export declare class HttpClient {
|
|
14
|
+
private config;
|
|
15
|
+
constructor(config: HttpClientConfig);
|
|
16
|
+
private request;
|
|
17
|
+
get<T>(path: string): Promise<T>;
|
|
18
|
+
post<T>(path: string, body?: unknown): Promise<T>;
|
|
19
|
+
patch<T>(path: string, body: unknown): Promise<T>;
|
|
20
|
+
put<T>(path: string, body?: unknown): Promise<T>;
|
|
21
|
+
delete<T>(path: string): Promise<T>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/transport/http-client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;CAC9B;AAED;;;;GAIG;AACH,qBAAa,UAAU;IACP,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;YAE9B,OAAO;IAsDrB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAOjD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAOjD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAOhD,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAGtC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { SdkError, apiCodeToSdkCode, statusToSdkCode } from './errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* HttpClient — JSON HTTP wrapper for User-JWT and Agent-JWT authenticated requests.
|
|
4
|
+
* No retry — POST idempotency is not guaranteed. Consumers handle retry themselves.
|
|
5
|
+
* INV-13: no automatic retry.
|
|
6
|
+
*/
|
|
7
|
+
export class HttpClient {
|
|
8
|
+
config;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.config = config;
|
|
11
|
+
}
|
|
12
|
+
async request(path, init = {}) {
|
|
13
|
+
let token;
|
|
14
|
+
try {
|
|
15
|
+
token = await this.config.getToken();
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
throw new SdkError('unauthorized', 'Failed to retrieve access token');
|
|
19
|
+
}
|
|
20
|
+
const basePath = this.config.basePath ?? '/api/agent/v1';
|
|
21
|
+
const url = `${this.config.baseUrl}${basePath}${path}`;
|
|
22
|
+
const headers = {
|
|
23
|
+
'Content-Type': 'application/json',
|
|
24
|
+
Authorization: `Bearer ${token}`,
|
|
25
|
+
...(init.headers ?? {}),
|
|
26
|
+
};
|
|
27
|
+
let res;
|
|
28
|
+
try {
|
|
29
|
+
res = await fetch(url, { ...init, headers });
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
throw new SdkError('network_error', err instanceof Error ? err.message : 'Network request failed');
|
|
33
|
+
}
|
|
34
|
+
if (res.status === 401) {
|
|
35
|
+
this.config.onUnauthorized?.();
|
|
36
|
+
throw new SdkError('unauthorized', 'Unauthorized', 401);
|
|
37
|
+
}
|
|
38
|
+
if (!res.ok) {
|
|
39
|
+
let code = statusToSdkCode(res.status);
|
|
40
|
+
let message = `HTTP ${res.status}`;
|
|
41
|
+
try {
|
|
42
|
+
const body = await res.json();
|
|
43
|
+
// Prefer body.code for precise error classification (e.g. 422 VALIDATION vs INVALID_TRANSITION)
|
|
44
|
+
if (typeof body?.code === 'string')
|
|
45
|
+
code = apiCodeToSdkCode(body.code, res.status);
|
|
46
|
+
if (body?.error?.message)
|
|
47
|
+
message = body.error.message;
|
|
48
|
+
else if (typeof body?.error === 'string')
|
|
49
|
+
message = body.error;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// ignore parse errors
|
|
53
|
+
}
|
|
54
|
+
throw new SdkError(code, message, res.status);
|
|
55
|
+
}
|
|
56
|
+
// 204 No Content
|
|
57
|
+
if (res.status === 204)
|
|
58
|
+
return undefined;
|
|
59
|
+
const body = await res.json();
|
|
60
|
+
// Support both bare responses and { data: ... } envelope
|
|
61
|
+
return (body?.data !== undefined ? body.data : body);
|
|
62
|
+
}
|
|
63
|
+
get(path) {
|
|
64
|
+
return this.request(path);
|
|
65
|
+
}
|
|
66
|
+
post(path, body) {
|
|
67
|
+
return this.request(path, {
|
|
68
|
+
method: 'POST',
|
|
69
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
patch(path, body) {
|
|
73
|
+
return this.request(path, {
|
|
74
|
+
method: 'PATCH',
|
|
75
|
+
body: JSON.stringify(body),
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
put(path, body) {
|
|
79
|
+
return this.request(path, {
|
|
80
|
+
method: 'PUT',
|
|
81
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
delete(path) {
|
|
85
|
+
return this.request(path, { method: 'DELETE' });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=http-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/transport/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface MultipartUploadOptions {
|
|
2
|
+
file: Blob | File | {
|
|
3
|
+
stream: ReadableStream;
|
|
4
|
+
filename: string;
|
|
5
|
+
contentType: string;
|
|
6
|
+
};
|
|
7
|
+
additionalFields?: Record<string, string>;
|
|
8
|
+
}
|
|
9
|
+
export interface MultipartClientConfig {
|
|
10
|
+
baseUrl: string;
|
|
11
|
+
basePath?: string;
|
|
12
|
+
getAuthHeader: () => Promise<string>;
|
|
13
|
+
onUnauthorized?: () => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* MultipartClient — Multipart/form-data upload transport.
|
|
17
|
+
* Used for asset uploads, avatar uploads, and storage uploads.
|
|
18
|
+
* INV-14: multipart-specific transport layer.
|
|
19
|
+
*/
|
|
20
|
+
export declare class MultipartClient {
|
|
21
|
+
private config;
|
|
22
|
+
constructor(config: MultipartClientConfig);
|
|
23
|
+
upload<T>(path: string, options: MultipartUploadOptions): Promise<T>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=multipart-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multipart-client.d.ts","sourceRoot":"","sources":["../../src/transport/multipart-client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG;QAAE,MAAM,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;IACrF,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC5C;AAED,MAAM,WAAW,qBAAqB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IACpC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;CAC9B;AAED;;;;GAIG;AACH,qBAAa,eAAe;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,qBAAqB;IAE3C,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,CAAC,CAAC;CA+E7E"}
|