@nurama/sdk 1.4.0 → 1.4.1
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/dist/NuramaClient.d.ts +32 -0
- package/dist/NuramaClient.d.ts.map +1 -1
- package/dist/NuramaClient.js +38 -0
- package/dist/NuramaClient.js.map +1 -1
- package/dist/browser/nurama-bot-sdk.js +299 -28
- package/dist/browser/nurama-bot-sdk.min.js +1 -1
- package/dist/browser/nurama-sdk.js +299 -28
- package/dist/browser/nurama-sdk.min.js +1 -1
- package/dist/routes/bot.d.ts +60 -5
- package/dist/routes/bot.d.ts.map +1 -1
- package/dist/routes/bot.js +72 -0
- package/dist/routes/bot.js.map +1 -1
- package/dist/routes/joinLink.d.ts +51 -1
- package/dist/routes/joinLink.d.ts.map +1 -1
- package/dist/routes/joinLink.js +124 -0
- package/dist/routes/joinLink.js.map +1 -1
- package/dist/routes/oauthGrant.d.ts +45 -0
- package/dist/routes/oauthGrant.d.ts.map +1 -0
- package/dist/routes/oauthGrant.js +32 -0
- package/dist/routes/oauthGrant.js.map +1 -0
- package/dist/routes/socket.d.ts.map +1 -1
- package/dist/routes/socket.js +47 -29
- package/dist/routes/socket.js.map +1 -1
- package/dist/routes/token.d.ts +23 -1
- package/dist/routes/token.d.ts.map +1 -1
- package/dist/routes/token.js +22 -0
- package/dist/routes/token.js.map +1 -1
- package/dist/version.js +4 -4
- package/package.json +2 -2
- package/src/NuramaClient.ts +60 -0
- package/src/routes/bot.ts +104 -5
- package/src/routes/joinLink.ts +133 -0
- package/src/routes/oauthGrant.ts +64 -0
- package/src/routes/socket.ts +51 -33
- package/src/routes/token.ts +40 -1
- package/src/version.ts +4 -4
package/dist/routes/socket.js
CHANGED
|
@@ -14,6 +14,31 @@ const LIFECYCLE_LISTENER_EVENTS = new Set([
|
|
|
14
14
|
'reconnect_failed',
|
|
15
15
|
'reconnect',
|
|
16
16
|
]);
|
|
17
|
+
/** First reconnect delay; socket.io doubles it per failed attempt, up to RECONNECTION_DELAY_MAX, ±50% jitter. */
|
|
18
|
+
const RECONNECTION_DELAY = 1000;
|
|
19
|
+
const RECONNECTION_DELAY_MAX = 30000;
|
|
20
|
+
/**
|
|
21
|
+
* Extra first-retry delay, up to this, after the SERVER closed the connection ("transport close"): a ws deploy
|
|
22
|
+
* or restart drops every client of that server at once, and without it they would all reconnect within the
|
|
23
|
+
* same second. Network drops ("ping timeout", "transport error") keep the normal 1s retry.
|
|
24
|
+
*/
|
|
25
|
+
const SERVER_CLOSE_RECONNECT_SPREAD = 10000;
|
|
26
|
+
/**
|
|
27
|
+
* Spread reconnects after a server-side close (see SERVER_CLOSE_RECONNECT_SPREAD). Sets the manager's next
|
|
28
|
+
* delay from the socket's 'disconnect', which socket.io emits before it schedules the retry, and restores the
|
|
29
|
+
* normal delay on 'connect'. Channels share one manager, so the last channel's draw wins, which is fine.
|
|
30
|
+
*/
|
|
31
|
+
const spreadReconnectAfterServerClose = (socket) => {
|
|
32
|
+
const manager = socket.io;
|
|
33
|
+
if (typeof manager?.reconnectionDelay !== 'function')
|
|
34
|
+
return;
|
|
35
|
+
socket.on('disconnect', (reason) => {
|
|
36
|
+
if (reason === 'transport close') {
|
|
37
|
+
manager.reconnectionDelay(RECONNECTION_DELAY + Math.random() * SERVER_CLOSE_RECONNECT_SPREAD);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
socket.on('connect', () => manager.reconnectionDelay(RECONNECTION_DELAY));
|
|
41
|
+
};
|
|
17
42
|
export default function createSocketMethods(client) {
|
|
18
43
|
// Track active socket connections
|
|
19
44
|
const activeConnections = {};
|
|
@@ -104,9 +129,12 @@ export default function createSocketMethods(client) {
|
|
|
104
129
|
query: { token },
|
|
105
130
|
// Reconnection configuration for resilience
|
|
106
131
|
reconnection: socketOptions.autoReconnect,
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
132
|
+
// Never give up: the server may refuse connections for a while (busy, or a deploy draining), and after a
|
|
133
|
+
// final failure socket.io stops for good without telling the app (the manager's 'reconnect_failed' never
|
|
134
|
+
// reaches socket listeners). Retries settle at one every ~30s.
|
|
135
|
+
reconnectionAttempts: Infinity,
|
|
136
|
+
reconnectionDelay: RECONNECTION_DELAY,
|
|
137
|
+
reconnectionDelayMax: RECONNECTION_DELAY_MAX,
|
|
110
138
|
randomizationFactor: 0.5, // Add jitter to avoid thundering herd problem
|
|
111
139
|
// Connection timeout
|
|
112
140
|
timeout: 20000, // 20 seconds to establish initial connection
|
|
@@ -127,13 +155,25 @@ export default function createSocketMethods(client) {
|
|
|
127
155
|
// even before the connection is fully established. Socket.io preserves
|
|
128
156
|
// handlers across reconnections, so they will fire once connected.
|
|
129
157
|
activeConnections[channel] = socketChannel;
|
|
158
|
+
spreadReconnectAfterServerClose(socket);
|
|
130
159
|
// Setup event listeners
|
|
131
160
|
return new Promise((resolve, reject) => {
|
|
132
161
|
let settled = false;
|
|
162
|
+
let hasConnected = false;
|
|
133
163
|
// Handle connection (initial or after reconnection)
|
|
134
164
|
socket.on('connect', () => {
|
|
135
165
|
_log(`Connected to channel: ${channel}`);
|
|
136
166
|
activeConnections[channel] = socketChannel;
|
|
167
|
+
if (hasConnected) {
|
|
168
|
+
// A second 'connect' on the same socket is socket.io reconnecting it (the manager emits 'reconnect',
|
|
169
|
+
// but socket listeners never see that). Notify app-level onReconnect listeners so they can
|
|
170
|
+
// REST-refetch any gap of server->client messages missed while the transport was down (socket.io has
|
|
171
|
+
// no replay across a reconnect).
|
|
172
|
+
_log(`Reconnected to channel ${channel}`);
|
|
173
|
+
const reconnectListeners = socketChannel.listeners['reconnect'] || new Set();
|
|
174
|
+
reconnectListeners.forEach(listener => listener({ type: 'reconnect' }));
|
|
175
|
+
}
|
|
176
|
+
hasConnected = true;
|
|
137
177
|
if (!settled) {
|
|
138
178
|
settled = true;
|
|
139
179
|
resolve(socketChannel);
|
|
@@ -150,21 +190,6 @@ export default function createSocketMethods(client) {
|
|
|
150
190
|
resolve(socketChannel);
|
|
151
191
|
}
|
|
152
192
|
});
|
|
153
|
-
// Handle reconnection attempts
|
|
154
|
-
socket.on('reconnect_attempt', (attempt) => {
|
|
155
|
-
_log(`Reconnection attempt ${attempt} for channel: ${channel}`);
|
|
156
|
-
});
|
|
157
|
-
// Handle successful reconnection
|
|
158
|
-
socket.on('reconnect', (attempt) => {
|
|
159
|
-
_log(`Reconnected to channel ${channel} after ${attempt} attempts`);
|
|
160
|
-
// Ensure activeConnections is up to date after reconnect
|
|
161
|
-
activeConnections[channel] = socketChannel;
|
|
162
|
-
// Notify app-level onReconnect listeners so they can REST-refetch any
|
|
163
|
-
// gap of server->client messages missed while the transport was down
|
|
164
|
-
// (socket.io has no replay across a reconnect).
|
|
165
|
-
const reconnectListeners = socketChannel.listeners['reconnect'] || new Set();
|
|
166
|
-
reconnectListeners.forEach(listener => listener({ type: 'reconnect', attempt }));
|
|
167
|
-
});
|
|
168
193
|
// Handle reconnection failure — only reject when socket.io gives up entirely
|
|
169
194
|
socket.on('reconnect_failed', () => {
|
|
170
195
|
_log(`Reconnection failed for channel ${channel} after maximum attempts`);
|
|
@@ -287,9 +312,9 @@ export default function createSocketMethods(client) {
|
|
|
287
312
|
query: { publicToken },
|
|
288
313
|
// Reconnection configuration for resilience
|
|
289
314
|
reconnection: socketOptions.autoReconnect,
|
|
290
|
-
reconnectionAttempts:
|
|
291
|
-
reconnectionDelay:
|
|
292
|
-
reconnectionDelayMax:
|
|
315
|
+
reconnectionAttempts: Infinity, // as connect(): never give up silently
|
|
316
|
+
reconnectionDelay: RECONNECTION_DELAY,
|
|
317
|
+
reconnectionDelayMax: RECONNECTION_DELAY_MAX,
|
|
293
318
|
randomizationFactor: 0.5,
|
|
294
319
|
// Connection timeout
|
|
295
320
|
timeout: 20000,
|
|
@@ -305,6 +330,7 @@ export default function createSocketMethods(client) {
|
|
|
305
330
|
channel,
|
|
306
331
|
listeners: {},
|
|
307
332
|
};
|
|
333
|
+
spreadReconnectAfterServerClose(socket);
|
|
308
334
|
// Setup event listeners
|
|
309
335
|
return new Promise((resolve, reject) => {
|
|
310
336
|
// Handle connection
|
|
@@ -318,14 +344,6 @@ export default function createSocketMethods(client) {
|
|
|
318
344
|
_log(`Connection error for public channel ${channel}:`, error);
|
|
319
345
|
reject(error);
|
|
320
346
|
});
|
|
321
|
-
// Handle reconnection attempts
|
|
322
|
-
socket.on('reconnect_attempt', (attempt) => {
|
|
323
|
-
_log(`Reconnection attempt ${attempt} for public channel: ${channel}`);
|
|
324
|
-
});
|
|
325
|
-
// Handle successful reconnection
|
|
326
|
-
socket.on('reconnect', (attempt) => {
|
|
327
|
-
_log(`Reconnected to public channel ${channel} after ${attempt} attempts`);
|
|
328
|
-
});
|
|
329
347
|
// Handle reconnection failure
|
|
330
348
|
socket.on('reconnect_failed', () => {
|
|
331
349
|
_log(`Reconnection failed for public channel ${channel} after maximum attempts`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/routes/socket.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/routes/socket.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/token.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export type TokenKind = 'pat' | 'oauthAccess' | 'oauthRefresh' | 'botAccess';
|
|
|
12
12
|
* adding it here too (or callers fall back to `string` when they
|
|
13
13
|
* accept arbitrary scopes from configuration).
|
|
14
14
|
*/
|
|
15
|
-
export type TokenScope = 'chat:read' | 'chat:write' | 'tasks:read' | 'tasks:write' | 'assets:read' | 'assets:write' | 'projects:read' | 'workspaces:read';
|
|
15
|
+
export type TokenScope = 'chat:read' | 'chat:write' | 'tasks:read' | 'tasks:write' | 'assets:read' | 'assets:write' | 'projects:read' | 'projects:write' | 'workspaces:read' | 'workspaces:write' | 'convos:read' | 'convos:write' | 'notifications:read' | 'notifications:write' | 'ai:use';
|
|
16
16
|
/**
|
|
17
17
|
* The shape returned by `listTokens` and (without the `token` field)
|
|
18
18
|
* the metadata half of `createToken`. Never includes the raw secret —
|
|
@@ -37,6 +37,15 @@ export interface CreateTokenData {
|
|
|
37
37
|
/** Optional ISO date. Null / omitted = non-expiring. */
|
|
38
38
|
expiresAt?: string | null;
|
|
39
39
|
}
|
|
40
|
+
export interface UpdateTokenScopesData {
|
|
41
|
+
/**
|
|
42
|
+
* The COMPLETE new scope set, not a delta — the same shape
|
|
43
|
+
* `createToken` takes, so what a token may do is always stated in
|
|
44
|
+
* full rather than accumulated through edits nobody can review.
|
|
45
|
+
* At least one scope.
|
|
46
|
+
*/
|
|
47
|
+
scopes: TokenScope[];
|
|
48
|
+
}
|
|
40
49
|
export interface CreateTokenResponse extends TokenSummary {
|
|
41
50
|
/**
|
|
42
51
|
* The raw secret. Returned ONLY in this response. The server keeps a
|
|
@@ -66,6 +75,19 @@ export default function createTokenMethods(client: NuramaClient): {
|
|
|
66
75
|
* management screens instead.
|
|
67
76
|
*/
|
|
68
77
|
listTokens(): Promise<TokenSummary[]>;
|
|
78
|
+
/**
|
|
79
|
+
* Replace the scopes on one of the caller's Personal Access Tokens.
|
|
80
|
+
*
|
|
81
|
+
* `scopes` is the complete new set, not a delta. This exists because
|
|
82
|
+
* the scope registry grows over time: a token minted before a scope
|
|
83
|
+
* existed cannot hold it, and without this the only remedy is minting
|
|
84
|
+
* a replacement and reconfiguring everywhere the old one is used.
|
|
85
|
+
*
|
|
86
|
+
* The change takes effect on the token's very next request. Scopes
|
|
87
|
+
* remain a ceiling, never a floor — widening a token never lets it do
|
|
88
|
+
* anything its owner cannot already do.
|
|
89
|
+
*/
|
|
90
|
+
updateTokenScopes(tokenId: string, data: UpdateTokenScopesData): Promise<TokenSummary>;
|
|
69
91
|
/**
|
|
70
92
|
* Revoke one of the caller's Personal Access Tokens. The revocation
|
|
71
93
|
* is immediate — the token will return 401 on the very next request.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/routes/token.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,aAAa,GAAG,cAAc,GAAG,WAAW,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,aAAa,GACb,cAAc,GACd,eAAe,GACf,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/routes/token.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,aAAa,GAAG,cAAc,GAAG,WAAW,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,aAAa,GACb,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,iBAAiB,GACjB,kBAAkB,GAClB,aAAa,GACb,cAAc,GACd,oBAAoB,GACpB,qBAAqB,GACrB,QAAQ,CAAC;AAEb;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,MAAM,EAAE,YAAY;IAE3D;;;;OAIG;sBACqB,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAStE;;;;;OAKG;kBACiB,OAAO,CAAC,YAAY,EAAE,CAAC;IAS3C;;;;;;;;;;;OAWG;+BAC8B,MAAM,QAAQ,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IAU5F;;;OAGG;yBACwB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;EASpD"}
|
package/dist/routes/token.js
CHANGED
|
@@ -33,6 +33,28 @@ export default function createTokenMethods(client) {
|
|
|
33
33
|
bypassCache: true,
|
|
34
34
|
});
|
|
35
35
|
},
|
|
36
|
+
/**
|
|
37
|
+
* Replace the scopes on one of the caller's Personal Access Tokens.
|
|
38
|
+
*
|
|
39
|
+
* `scopes` is the complete new set, not a delta. This exists because
|
|
40
|
+
* the scope registry grows over time: a token minted before a scope
|
|
41
|
+
* existed cannot hold it, and without this the only remedy is minting
|
|
42
|
+
* a replacement and reconfiguring everywhere the old one is used.
|
|
43
|
+
*
|
|
44
|
+
* The change takes effect on the token's very next request. Scopes
|
|
45
|
+
* remain a ceiling, never a floor — widening a token never lets it do
|
|
46
|
+
* anything its owner cannot already do.
|
|
47
|
+
*/
|
|
48
|
+
async updateTokenScopes(tokenId, data) {
|
|
49
|
+
if (!tokenId)
|
|
50
|
+
throw new Error('tokenId is required.');
|
|
51
|
+
return client._request({
|
|
52
|
+
method: 'PATCH',
|
|
53
|
+
endpoint: `/v1/tokens/${tokenId}`,
|
|
54
|
+
body: data,
|
|
55
|
+
sendJWT: true,
|
|
56
|
+
});
|
|
57
|
+
},
|
|
36
58
|
/**
|
|
37
59
|
* Revoke one of the caller's Personal Access Tokens. The revocation
|
|
38
60
|
* is immediate — the token will return 401 on the very next request.
|
package/dist/routes/token.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/routes/token.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/routes/token.ts"],"names":[],"mappings":"AA+EA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,MAAoB;IAC7D,OAAO;QACL;;;;WAIG;QACH,KAAK,CAAC,WAAW,CAAC,IAAqB;YACrC,OAAO,MAAM,CAAC,QAAQ,CAAsB;gBAC1C,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,YAAY;gBACtB,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;;WAKG;QACH,KAAK,CAAC,UAAU;YACd,OAAO,MAAM,CAAC,QAAQ,CAAiB;gBACrC,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;QAED;;;;;;;;;;;WAWG;QACH,KAAK,CAAC,iBAAiB,CAAC,OAAe,EAAE,IAA2B;YAClE,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACtD,OAAO,MAAM,CAAC,QAAQ,CAAe;gBACnC,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,cAAc,OAAO,EAAE;gBACjC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;WAGG;QACH,KAAK,CAAC,WAAW,CAAC,OAAe;YAC/B,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACtD,OAAO,MAAM,CAAC,QAAQ,CAAO;gBAC3B,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,cAAc,OAAO,EAAE;gBACjC,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/version.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* AUTO-GENERATED by scripts/generate-version-info.cjs - DO NOT EDIT MANUALLY
|
|
4
4
|
*/
|
|
5
5
|
export const SDK_VERSION = {
|
|
6
|
-
version: '1.4.
|
|
7
|
-
buildTimestamp: '2026-10-
|
|
8
|
-
buildHash: '
|
|
9
|
-
gitCommit: '
|
|
6
|
+
version: '1.4.1',
|
|
7
|
+
buildTimestamp: '2026-10-10T06:58:40.258Z',
|
|
8
|
+
buildHash: 'f6505e2eb9725dc8d239bb401ced8f88',
|
|
9
|
+
gitCommit: '1c00e18',
|
|
10
10
|
dirty: false,
|
|
11
11
|
};
|
|
12
12
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nurama/sdk",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "Provides API, web-socket, and additional utilities for interfacing with the Nurama platform.",
|
|
5
5
|
"main": "dist/NuramaClient.js",
|
|
6
6
|
"module": "dist/NuramaClient.js",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"jwt-decode": "^4.0.0",
|
|
35
35
|
"socket.io-client": "^4.7.2",
|
|
36
|
-
"@nurama/types": "1.4.
|
|
36
|
+
"@nurama/types": "1.4.1"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/jest": "^29.5.14",
|
package/src/NuramaClient.ts
CHANGED
|
@@ -36,6 +36,7 @@ import createBlogPostsMethods from './routes/blogPosts.js';
|
|
|
36
36
|
import createCreditsMethods from './routes/credits.js';
|
|
37
37
|
import createScratchMethods from './routes/scratch.js';
|
|
38
38
|
import createTokenMethods from './routes/token.js';
|
|
39
|
+
import createOAuthGrantMethods from './routes/oauthGrant.js';
|
|
39
40
|
import createWebhookMethods from './routes/webhook.js';
|
|
40
41
|
import createSupportTicketMethods from './routes/supportTicket.js';
|
|
41
42
|
import { SDK_VERSION, type SDKVersionInfo } from './version.js';
|
|
@@ -100,6 +101,14 @@ export interface NuramaClientOptions {
|
|
|
100
101
|
* message instead of failing silently. */
|
|
101
102
|
onMaintenance?: () => void;
|
|
102
103
|
|
|
104
|
+
/**
|
|
105
|
+
* Invoked whenever the client's tokens change (login, MFA completion, refresh,
|
|
106
|
+
* logout, or a failed refresh clearing the session). Lets non-browser hosts
|
|
107
|
+
* (e.g. React Native) persist the session in their own secure storage; pair
|
|
108
|
+
* with `restoreSession()` on startup. Not called by `restoreSession()` itself.
|
|
109
|
+
*/
|
|
110
|
+
onTokensChanged?: (session: NuramaSession | null) => void;
|
|
111
|
+
|
|
103
112
|
/**
|
|
104
113
|
* Long-lived API key to use for every request (e.g., a bot API key starting with `nrm_bot_`).
|
|
105
114
|
* When set, the client skips JWT refresh logic and uses the key as the bearer token.
|
|
@@ -107,6 +116,14 @@ export interface NuramaClientOptions {
|
|
|
107
116
|
apiKey?: string;
|
|
108
117
|
}
|
|
109
118
|
|
|
119
|
+
/** A persisted session: the token pair plus their ISO expiry timestamps. */
|
|
120
|
+
export interface NuramaSession {
|
|
121
|
+
accessToken: string | null;
|
|
122
|
+
refreshToken: string | null;
|
|
123
|
+
accessTokenExpiry: string | null;
|
|
124
|
+
refreshTokenExpiry: string | null;
|
|
125
|
+
}
|
|
126
|
+
|
|
110
127
|
interface RequestParams {
|
|
111
128
|
[key: string]: any; // Allows any query parameters
|
|
112
129
|
}
|
|
@@ -199,6 +216,7 @@ type BlogPostsMethods = ReturnType<typeof createBlogPostsMethods>;
|
|
|
199
216
|
type CreditsMethods = ReturnType<typeof createCreditsMethods>;
|
|
200
217
|
type ScratchMethods = ReturnType<typeof createScratchMethods>;
|
|
201
218
|
type TokenMethods = ReturnType<typeof createTokenMethods>;
|
|
219
|
+
type OAuthGrantMethods = ReturnType<typeof createOAuthGrantMethods>;
|
|
202
220
|
type WebhookMethods = ReturnType<typeof createWebhookMethods>;
|
|
203
221
|
type SupportTicketMethods = ReturnType<typeof createSupportTicketMethods>;
|
|
204
222
|
|
|
@@ -223,6 +241,7 @@ class NuramaClient {
|
|
|
223
241
|
readonly invalidateCacheOnMutation: boolean;
|
|
224
242
|
private readonly _onUnauthorized?: (reason?: { type?: string }) => void;
|
|
225
243
|
private readonly _onMaintenance?: () => void;
|
|
244
|
+
private readonly _onTokensChanged?: (session: NuramaSession | null) => void;
|
|
226
245
|
|
|
227
246
|
private _accessToken: string | null = null;
|
|
228
247
|
private _refreshTokenValue: string | null = null;
|
|
@@ -273,6 +292,9 @@ class NuramaClient {
|
|
|
273
292
|
public credits: CreditsMethods;
|
|
274
293
|
public scratch: ScratchMethods;
|
|
275
294
|
public token: TokenMethods;
|
|
295
|
+
|
|
296
|
+
/** Connected applications: what the user has authorised over OAuth. */
|
|
297
|
+
public oauthGrant: OAuthGrantMethods;
|
|
276
298
|
public webhook: WebhookMethods;
|
|
277
299
|
public supportTicket: SupportTicketMethods;
|
|
278
300
|
|
|
@@ -325,6 +347,7 @@ class NuramaClient {
|
|
|
325
347
|
this.invalidateCacheOnMutation = options.invalidateCacheOnMutation === undefined ? true : options.invalidateCacheOnMutation;
|
|
326
348
|
this._onUnauthorized = options.onUnauthorized;
|
|
327
349
|
this._onMaintenance = options.onMaintenance;
|
|
350
|
+
this._onTokensChanged = options.onTokensChanged;
|
|
328
351
|
this._apiKey = options.apiKey || null;
|
|
329
352
|
|
|
330
353
|
if (this.browserMode && !this._apiKey) {
|
|
@@ -367,6 +390,7 @@ class NuramaClient {
|
|
|
367
390
|
this.credits = createCreditsMethods(this);
|
|
368
391
|
this.scratch = createScratchMethods(this);
|
|
369
392
|
this.token = createTokenMethods(this);
|
|
393
|
+
this.oauthGrant = createOAuthGrantMethods(this);
|
|
370
394
|
this.webhook = createWebhookMethods(this);
|
|
371
395
|
this.supportTicket = createSupportTicketMethods(this);
|
|
372
396
|
}
|
|
@@ -642,6 +666,42 @@ class NuramaClient {
|
|
|
642
666
|
console.error('Failed to save tokens to localStorage:', e);
|
|
643
667
|
}
|
|
644
668
|
}
|
|
669
|
+
|
|
670
|
+
if (this._onTokensChanged) {
|
|
671
|
+
try {
|
|
672
|
+
this._onTokensChanged(accessToken || refreshToken ? this.getSession() : null);
|
|
673
|
+
} catch (e) {
|
|
674
|
+
console.error('onTokensChanged handler threw:', e);
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
/**
|
|
680
|
+
* Returns the current session (tokens and expiries), or null when signed out.
|
|
681
|
+
* @public
|
|
682
|
+
*/
|
|
683
|
+
public getSession(): NuramaSession | null {
|
|
684
|
+
if (!this._accessToken && !this._refreshTokenValue) return null;
|
|
685
|
+
return {
|
|
686
|
+
accessToken: this._accessToken,
|
|
687
|
+
refreshToken: this._refreshTokenValue,
|
|
688
|
+
accessTokenExpiry: this._accessTokenExpiry,
|
|
689
|
+
refreshTokenExpiry: this._refreshTokenExpiry,
|
|
690
|
+
};
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
/**
|
|
694
|
+
* Restores a session previously captured through `onTokensChanged` /
|
|
695
|
+
* `getSession()` — for hosts that persist tokens outside localStorage.
|
|
696
|
+
* Does not fire `onTokensChanged`. A missing or expired access token is
|
|
697
|
+
* refreshed on the next authenticated request.
|
|
698
|
+
* @public
|
|
699
|
+
*/
|
|
700
|
+
public restoreSession(session: NuramaSession | null): void {
|
|
701
|
+
this._accessToken = session?.accessToken ?? null;
|
|
702
|
+
this._refreshTokenValue = session?.refreshToken ?? null;
|
|
703
|
+
this._accessTokenExpiry = session?.accessTokenExpiry ?? null;
|
|
704
|
+
this._refreshTokenExpiry = session?.refreshTokenExpiry ?? null;
|
|
645
705
|
}
|
|
646
706
|
|
|
647
707
|
/**
|
package/src/routes/bot.ts
CHANGED
|
@@ -6,7 +6,7 @@ export interface BotApiKeySummary {
|
|
|
6
6
|
name: string;
|
|
7
7
|
/** Discriminator. Bot keys mint as 'botAccess'. */
|
|
8
8
|
kind?: 'botAccess' | 'pat' | 'oauthAccess' | 'oauthRefresh' | null;
|
|
9
|
-
/** Granted
|
|
9
|
+
/** Granted scopes. A bot key is minted with the full registry when none are chosen. */
|
|
10
10
|
scopes?: string[];
|
|
11
11
|
lastUsed?: string | null;
|
|
12
12
|
expiresAt?: string | null;
|
|
@@ -49,10 +49,10 @@ export interface CreateBotData {
|
|
|
49
49
|
* workspaceAdmin, workspaceMember, workspaceChatMember. */
|
|
50
50
|
roles: Array<'workspaceAdmin' | 'workspaceMember' | 'workspaceChatMember'>;
|
|
51
51
|
/**
|
|
52
|
-
* Optional API-key scopes.
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
52
|
+
* Optional API-key scopes. Omit (or pass an empty array) to mint the key
|
|
53
|
+
* with the full scope registry, which is what the bot's roles already allow
|
|
54
|
+
* — every route declares a scope now, so a genuinely empty set would leave
|
|
55
|
+
* the key unable to call anything. Pass a subset to narrow it.
|
|
56
56
|
*/
|
|
57
57
|
scopes?: string[];
|
|
58
58
|
}
|
|
@@ -75,6 +75,30 @@ export interface RotateBotKeyResponse {
|
|
|
75
75
|
rawKey: string;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
export interface CreateBotKeyData {
|
|
79
|
+
/** Label shown in the bot's key list. */
|
|
80
|
+
name: string;
|
|
81
|
+
/** Validated server-side against the token-scope registry. Omit for the full set. */
|
|
82
|
+
scopes?: string[];
|
|
83
|
+
/** Optional expiry, ISO 8601. Must be in the future. */
|
|
84
|
+
expiresAt?: string;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface CreateBotKeyResponse {
|
|
88
|
+
apiKey: BotApiKeySummary;
|
|
89
|
+
/** Raw API key. Returned once and not recoverable afterwards. */
|
|
90
|
+
rawKey: string;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface UpdateBotKeyScopesData {
|
|
94
|
+
/**
|
|
95
|
+
* The COMPLETE new scope set, not a delta — the same shape `createBotKey`
|
|
96
|
+
* takes. At least one scope; a scopeless key authenticates and is then
|
|
97
|
+
* refused by every gated route, so revoke it instead of emptying it.
|
|
98
|
+
*/
|
|
99
|
+
scopes: string[];
|
|
100
|
+
}
|
|
101
|
+
|
|
78
102
|
export interface UpdateBotAvatarFileData {
|
|
79
103
|
name: string;
|
|
80
104
|
sizeInMB: number;
|
|
@@ -174,6 +198,10 @@ export default function createBotMethods(client: NuramaClient) {
|
|
|
174
198
|
/**
|
|
175
199
|
* Revoke the bot's current API key and issue a new one.
|
|
176
200
|
* The new raw key is returned once.
|
|
201
|
+
*
|
|
202
|
+
* The replacement carries the old key's scopes verbatim, so this is not a
|
|
203
|
+
* way to pick up scopes added to the registry since the key was minted —
|
|
204
|
+
* `updateBotKeyScopes` is.
|
|
177
205
|
*/
|
|
178
206
|
async rotateBotKey(workspaceId: string, botId: string): Promise<RotateBotKeyResponse> {
|
|
179
207
|
if (!workspaceId) throw new Error('workspaceId is required.');
|
|
@@ -185,6 +213,77 @@ export default function createBotMethods(client: NuramaClient) {
|
|
|
185
213
|
});
|
|
186
214
|
},
|
|
187
215
|
|
|
216
|
+
/**
|
|
217
|
+
* Mint an ADDITIONAL API key for the bot, up to 5 live keys.
|
|
218
|
+
*
|
|
219
|
+
* Unlike `rotateBotKey`, the bot's existing keys keep working — which is
|
|
220
|
+
* what makes a zero-downtime changeover possible: mint, move traffic over,
|
|
221
|
+
* then revoke the old key. The raw key is returned once.
|
|
222
|
+
*/
|
|
223
|
+
async createBotKey(
|
|
224
|
+
workspaceId: string,
|
|
225
|
+
botId: string,
|
|
226
|
+
keyData: CreateBotKeyData,
|
|
227
|
+
): Promise<CreateBotKeyResponse> {
|
|
228
|
+
if (!workspaceId) throw new Error('workspaceId is required.');
|
|
229
|
+
if (!botId) throw new Error('botId is required.');
|
|
230
|
+
if (!keyData?.name) throw new Error('name is required.');
|
|
231
|
+
return client._request<CreateBotKeyResponse>({
|
|
232
|
+
method: 'POST',
|
|
233
|
+
endpoint: `/v1/workspaces/${workspaceId}/bots/${botId}/keys`,
|
|
234
|
+
body: keyData,
|
|
235
|
+
sendJWT: true,
|
|
236
|
+
});
|
|
237
|
+
},
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Replace the scopes on one of the bot's API keys, in place.
|
|
241
|
+
*
|
|
242
|
+
* A key's scopes are a snapshot taken when it was minted, and the registry
|
|
243
|
+
* grows — a key created before a scope existed cannot hold it. Rotation is
|
|
244
|
+
* not a substitute: `rotateBotKey` copies the old scope set onto the
|
|
245
|
+
* replacement, so a stale key stays stale through every rotation.
|
|
246
|
+
*
|
|
247
|
+
* This matters most for keys minted with `scopes` omitted, which means
|
|
248
|
+
* "the full registry" as it stood that day, not "whatever the full registry
|
|
249
|
+
* becomes".
|
|
250
|
+
*
|
|
251
|
+
* The secret is unchanged — every caller configured with this key keeps
|
|
252
|
+
* working, which is the whole point. Requires `canManageBots`.
|
|
253
|
+
*/
|
|
254
|
+
async updateBotKeyScopes(
|
|
255
|
+
workspaceId: string,
|
|
256
|
+
botId: string,
|
|
257
|
+
keyId: string,
|
|
258
|
+
data: UpdateBotKeyScopesData,
|
|
259
|
+
): Promise<BotApiKeySummary> {
|
|
260
|
+
if (!workspaceId) throw new Error('workspaceId is required.');
|
|
261
|
+
if (!botId) throw new Error('botId is required.');
|
|
262
|
+
if (!keyId) throw new Error('keyId is required.');
|
|
263
|
+
return client._request<BotApiKeySummary>({
|
|
264
|
+
method: 'PATCH',
|
|
265
|
+
endpoint: `/v1/workspaces/${workspaceId}/bots/${botId}/keys/${keyId}`,
|
|
266
|
+
body: data,
|
|
267
|
+
sendJWT: true,
|
|
268
|
+
});
|
|
269
|
+
},
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Revoke one of the bot's API keys, leaving its others working.
|
|
273
|
+
* A revoked key stops authenticating immediately and frees a slot
|
|
274
|
+
* against the 5-key cap.
|
|
275
|
+
*/
|
|
276
|
+
async revokeBotKey(workspaceId: string, botId: string, keyId: string): Promise<void> {
|
|
277
|
+
if (!workspaceId) throw new Error('workspaceId is required.');
|
|
278
|
+
if (!botId) throw new Error('botId is required.');
|
|
279
|
+
if (!keyId) throw new Error('keyId is required.');
|
|
280
|
+
return client._request<void>({
|
|
281
|
+
method: 'DELETE',
|
|
282
|
+
endpoint: `/v1/workspaces/${workspaceId}/bots/${botId}/keys/${keyId}`,
|
|
283
|
+
sendJWT: true,
|
|
284
|
+
});
|
|
285
|
+
},
|
|
286
|
+
|
|
188
287
|
/**
|
|
189
288
|
* Request signed URL data to upload a new avatar for the bot.
|
|
190
289
|
* Caller multipart-uploads the file to S3 using the returned `signedUrlData`,
|