@attrove/sdk 0.1.5 → 0.1.7

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.
Files changed (143) hide show
  1. package/cjs/{src/__mocks__ → __mocks__}/version.js +1 -2
  2. package/cjs/{src/admin-client.js → admin-client.js} +23 -22
  3. package/cjs/{src/client.js → client.js} +40 -39
  4. package/cjs/{src/constants.js → constants.js} +20 -22
  5. package/cjs/{src/errors → errors}/index.js +26 -27
  6. package/cjs/{src/index.js → index.js} +35 -36
  7. package/cjs/package.json +1 -56
  8. package/cjs/{src/resources → resources}/conversations.js +1 -2
  9. package/cjs/{src/resources → resources}/index.js +10 -11
  10. package/cjs/{src/resources → resources}/integrations.js +0 -1
  11. package/cjs/{src/resources → resources}/messages.js +3 -4
  12. package/cjs/{src/resources → resources}/query.js +4 -5
  13. package/cjs/{src/resources → resources}/users.js +0 -1
  14. package/cjs/{src/types → types}/index.js +88 -61
  15. package/cjs/{src/utils → utils}/fetch.js +67 -55
  16. package/cjs/{src/utils → utils}/index.js +5 -6
  17. package/cjs/{src/utils → utils}/streaming.js +59 -45
  18. package/cjs/{src/version.js → version.js} +3 -4
  19. package/esm/__mocks__/version.d.ts.map +1 -0
  20. package/esm/{src/__mocks__ → __mocks__}/version.js +1 -1
  21. package/esm/__mocks__/version.js.map +1 -0
  22. package/{types/src → esm}/admin-client.d.ts +2 -2
  23. package/esm/admin-client.d.ts.map +1 -0
  24. package/esm/{src/admin-client.js → admin-client.js} +18 -16
  25. package/esm/admin-client.js.map +1 -0
  26. package/{types/src → esm}/client.d.ts +6 -6
  27. package/esm/client.d.ts.map +1 -0
  28. package/esm/{src/client.js → client.js} +28 -26
  29. package/esm/client.js.map +1 -0
  30. package/{types/src → esm}/constants.d.ts +3 -4
  31. package/esm/constants.d.ts.map +1 -0
  32. package/esm/{src/constants.js → constants.js} +20 -21
  33. package/esm/constants.js.map +1 -0
  34. package/{types/src → esm}/errors/index.d.ts +1 -1
  35. package/{types/src → esm}/errors/index.d.ts.map +1 -1
  36. package/esm/{src/errors → errors}/index.js +13 -13
  37. package/esm/errors/index.js.map +1 -0
  38. package/{types/src → esm}/index.d.ts +14 -14
  39. package/esm/index.d.ts.map +1 -0
  40. package/esm/{src/index.js → index.js} +8 -8
  41. package/esm/index.js.map +1 -0
  42. package/esm/package.json +1 -56
  43. package/{types/src → esm}/resources/conversations.d.ts +2 -2
  44. package/esm/resources/conversations.d.ts.map +1 -0
  45. package/esm/{src/resources → resources}/conversations.js +1 -1
  46. package/esm/resources/conversations.js.map +1 -0
  47. package/esm/resources/index.d.ts +12 -0
  48. package/esm/resources/index.d.ts.map +1 -0
  49. package/esm/resources/index.js +9 -0
  50. package/esm/resources/index.js.map +1 -0
  51. package/{types/src → esm}/resources/integrations.d.ts +2 -2
  52. package/esm/resources/integrations.d.ts.map +1 -0
  53. package/esm/resources/integrations.js.map +1 -0
  54. package/{types/src → esm}/resources/messages.d.ts +2 -2
  55. package/esm/resources/messages.d.ts.map +1 -0
  56. package/esm/{src/resources → resources}/messages.js +3 -3
  57. package/{cjs/src → esm}/resources/messages.js.map +1 -1
  58. package/{types/src → esm}/resources/query.d.ts +2 -2
  59. package/esm/resources/query.d.ts.map +1 -0
  60. package/esm/{src/resources → resources}/query.js +4 -4
  61. package/esm/resources/query.js.map +1 -0
  62. package/{types/src → esm}/resources/users.d.ts +2 -2
  63. package/esm/resources/users.d.ts.map +1 -0
  64. package/esm/resources/users.js.map +1 -0
  65. package/{types/src → esm}/types/index.d.ts +28 -28
  66. package/esm/types/index.d.ts.map +1 -0
  67. package/esm/{src/types → types}/index.js +88 -60
  68. package/esm/types/index.js.map +1 -0
  69. package/{types/src → esm}/utils/fetch.d.ts +10 -10
  70. package/esm/utils/fetch.d.ts.map +1 -0
  71. package/esm/{src/utils → utils}/fetch.js +57 -44
  72. package/esm/utils/fetch.js.map +1 -0
  73. package/esm/utils/index.d.ts +8 -0
  74. package/esm/utils/index.d.ts.map +1 -0
  75. package/esm/utils/index.js +6 -0
  76. package/esm/utils/index.js.map +1 -0
  77. package/{types/src → esm}/utils/streaming.d.ts +5 -5
  78. package/esm/utils/streaming.d.ts.map +1 -0
  79. package/esm/{src/utils → utils}/streaming.js +47 -32
  80. package/esm/utils/streaming.js.map +1 -0
  81. package/{types/src → esm}/version.d.ts +1 -1
  82. package/esm/version.d.ts.map +1 -0
  83. package/esm/{src/version.js → version.js} +2 -2
  84. package/esm/version.js.map +1 -0
  85. package/package.json +13 -10
  86. package/cjs/README.md +0 -247
  87. package/cjs/src/__mocks__/version.js.map +0 -1
  88. package/cjs/src/admin-client.js.map +0 -1
  89. package/cjs/src/client.js.map +0 -1
  90. package/cjs/src/constants.js.map +0 -1
  91. package/cjs/src/errors/index.js.map +0 -1
  92. package/cjs/src/index.js.map +0 -1
  93. package/cjs/src/resources/conversations.js.map +0 -1
  94. package/cjs/src/resources/index.js.map +0 -1
  95. package/cjs/src/resources/integrations.js.map +0 -1
  96. package/cjs/src/resources/query.js.map +0 -1
  97. package/cjs/src/resources/users.js.map +0 -1
  98. package/cjs/src/types/index.js.map +0 -1
  99. package/cjs/src/utils/fetch.js.map +0 -1
  100. package/cjs/src/utils/index.js.map +0 -1
  101. package/cjs/src/utils/streaming.js.map +0 -1
  102. package/cjs/src/version.js.map +0 -1
  103. package/esm/README.md +0 -247
  104. package/esm/src/__mocks__/version.js.map +0 -1
  105. package/esm/src/admin-client.js.map +0 -1
  106. package/esm/src/client.js.map +0 -1
  107. package/esm/src/constants.js.map +0 -1
  108. package/esm/src/errors/index.js.map +0 -1
  109. package/esm/src/index.js.map +0 -1
  110. package/esm/src/resources/conversations.js.map +0 -1
  111. package/esm/src/resources/index.js +0 -9
  112. package/esm/src/resources/index.js.map +0 -1
  113. package/esm/src/resources/integrations.js.map +0 -1
  114. package/esm/src/resources/messages.js.map +0 -1
  115. package/esm/src/resources/query.js.map +0 -1
  116. package/esm/src/resources/users.js.map +0 -1
  117. package/esm/src/types/index.js.map +0 -1
  118. package/esm/src/utils/fetch.js.map +0 -1
  119. package/esm/src/utils/index.js +0 -6
  120. package/esm/src/utils/index.js.map +0 -1
  121. package/esm/src/utils/streaming.js.map +0 -1
  122. package/esm/src/version.js.map +0 -1
  123. package/types/src/__mocks__/version.d.ts.map +0 -1
  124. package/types/src/admin-client.d.ts.map +0 -1
  125. package/types/src/client.d.ts.map +0 -1
  126. package/types/src/constants.d.ts.map +0 -1
  127. package/types/src/index.d.ts.map +0 -1
  128. package/types/src/resources/conversations.d.ts.map +0 -1
  129. package/types/src/resources/index.d.ts +0 -12
  130. package/types/src/resources/index.d.ts.map +0 -1
  131. package/types/src/resources/integrations.d.ts.map +0 -1
  132. package/types/src/resources/messages.d.ts.map +0 -1
  133. package/types/src/resources/query.d.ts.map +0 -1
  134. package/types/src/resources/users.d.ts.map +0 -1
  135. package/types/src/types/index.d.ts.map +0 -1
  136. package/types/src/utils/fetch.d.ts.map +0 -1
  137. package/types/src/utils/index.d.ts +0 -8
  138. package/types/src/utils/index.d.ts.map +0 -1
  139. package/types/src/utils/streaming.d.ts.map +0 -1
  140. package/types/src/version.d.ts.map +0 -1
  141. /package/{types/src → esm}/__mocks__/version.d.ts +0 -0
  142. /package/esm/{src/resources → resources}/integrations.js +0 -0
  143. /package/esm/{src/resources → resources}/users.js +0 -0
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Utility exports
3
+ */
4
+ export { HttpClient } from "./fetch.js";
5
+ export type { HttpMethod, RequestConfig, HttpClientConfig } from "./fetch.js";
6
+ export { StreamingClient, generateMessageId } from "./streaming.js";
7
+ export type { StreamOptions, StreamResult } from "./streaming.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/sdk/src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Utility exports
3
+ */
4
+ export { HttpClient } from "./fetch.js";
5
+ export { StreamingClient, generateMessageId } from "./streaming.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/sdk/src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -10,7 +10,7 @@
10
10
  * - Tokens may be visible in network inspection tools
11
11
  * - Using short-lived tokens is recommended for production use
12
12
  */
13
- import { ConversationMessage, QueryOptions, StreamState, StreamEndReason } from '../types';
13
+ import { ConversationMessage, QueryOptions, StreamState, StreamEndReason } from "../types/index.js";
14
14
  /**
15
15
  * Options for streaming queries.
16
16
  *
@@ -75,15 +75,15 @@ export interface StreamOptions {
75
75
  export type CancelResult = {
76
76
  /** Cancel message was sent successfully. */
77
77
  success: true;
78
- reason: 'sent';
78
+ reason: "sent";
79
79
  } | {
80
80
  /** No stream is currently active to cancel. */
81
81
  success: false;
82
- reason: 'no_active_stream';
82
+ reason: "no_active_stream";
83
83
  } | {
84
84
  /** Failed to send the cancel message (connection may be closed). */
85
85
  success: false;
86
- reason: 'send_failed';
86
+ reason: "send_failed";
87
87
  /** Error message describing the failure. */
88
88
  error: string;
89
89
  };
@@ -158,7 +158,7 @@ export declare class StreamingClient {
158
158
  * @throws {TimeoutError} If connection times out
159
159
  * @throws {AttroveError} If the server returns an error
160
160
  */
161
- stream(query: string, messageId: string, history: ConversationMessage[], queryOptions?: Omit<QueryOptions, 'history'>, streamOptions?: StreamOptions): Promise<StreamResult>;
161
+ stream(query: string, messageId: string, history: ConversationMessage[], queryOptions?: Omit<QueryOptions, "history">, streamOptions?: StreamOptions): Promise<StreamResult>;
162
162
  /**
163
163
  * Cancel the current stream.
164
164
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../../../../packages/sdk/src/utils/streaming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAGL,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,eAAe,EAEhB,MAAM,mBAAmB,CAAC;AAoB3B;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAEvC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAE1C;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAEzE;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB;IACE,4CAA4C;IAC5C,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,+CAA+C;IAC/C,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,kBAAkB,CAAC;CAC5B,GACD;IACE,oEAAoE;IACpE,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEN;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAE/B;;OAEG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,SAAS,CAAC,CAGR;gBAEE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAO1C;;;;;OAKG;YACW,OAAO;IAqDrB;;;;;;;;;;;;;OAaG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,YAAY,GAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAM,EAChD,aAAa,GAAE,aAAkB,GAChC,OAAO,CAAC,YAAY,CAAC;IAqOxB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,IAAI,YAAY;IAiCtB;;;;;;OAMG;IACH,OAAO,CAAC,OAAO;IAsBf;;;;;OAKG;IACH,KAAK,IAAI,IAAI;CAGd;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
@@ -10,10 +10,10 @@
10
10
  * - Tokens may be visible in network inspection tools
11
11
  * - Using short-lived tokens is recommended for production use
12
12
  */
13
- import { isValidStreamFrame } from '../types';
14
- import { AttroveError, NetworkError, TimeoutError } from '../errors';
15
- import { ErrorCodes } from '../types';
16
- import { getWsCloseReason, DEFAULT_TIMEOUT } from '../constants';
13
+ import { isValidStreamFrame, } from "../types/index.js";
14
+ import { AttroveError, NetworkError, TimeoutError } from "../errors/index.js";
15
+ import { ErrorCodes } from "../types/index.js";
16
+ import { getWsCloseReason, DEFAULT_TIMEOUT } from "../constants.js";
17
17
  /**
18
18
  * Streaming query client for WebSocket-based LLM responses.
19
19
  *
@@ -41,7 +41,7 @@ export class StreamingClient {
41
41
  this.ws = null;
42
42
  this.currentMessageId = null;
43
43
  // Convert HTTP URL to WebSocket URL
44
- const wsBaseUrl = baseUrl.replace(/^http/, 'ws');
44
+ const wsBaseUrl = baseUrl.replace(/^http/, "ws");
45
45
  this.wsUrl = `${wsBaseUrl}/ws/llm-stream`;
46
46
  this.token = token;
47
47
  }
@@ -61,7 +61,7 @@ export class StreamingClient {
61
61
  // doesn't support custom headers in browsers. This is a common pattern
62
62
  // but means the token may appear in server logs.
63
63
  const url = new URL(this.wsUrl);
64
- url.searchParams.set('token', this.token);
64
+ url.searchParams.set("token", this.token);
65
65
  const ws = new WebSocket(url.toString());
66
66
  ws.onopen = () => {
67
67
  clearTimeout(timeoutId);
@@ -100,10 +100,10 @@ export class StreamingClient {
100
100
  * @throws {AttroveError} If the server returns an error
101
101
  */
102
102
  async stream(query, messageId, history, queryOptions = {}, streamOptions = {}) {
103
- const { onChunk, onState, onStart, onError, onEnd, onWarning, signal, timeout = DEFAULT_TIMEOUT } = streamOptions;
103
+ const { onChunk, onState, onStart, onError, onEnd, onWarning, signal, timeout = DEFAULT_TIMEOUT, } = streamOptions;
104
104
  // Store warning callback for use in cancel() and cleanup()
105
105
  this.onWarning = onWarning;
106
- let answer = '';
106
+ let answer = "";
107
107
  let usedMessageIds = [];
108
108
  let cancelled = false;
109
109
  let completed = false;
@@ -112,7 +112,7 @@ export class StreamingClient {
112
112
  this.currentMessageId = messageId;
113
113
  return new Promise((resolve, reject) => {
114
114
  if (!this.ws) {
115
- reject(new NetworkError('WebSocket not connected'));
115
+ reject(new NetworkError("WebSocket not connected"));
116
116
  return;
117
117
  }
118
118
  const ws = this.ws;
@@ -122,7 +122,7 @@ export class StreamingClient {
122
122
  const cleanupAndFinish = () => {
123
123
  completed = true;
124
124
  if (signal && abortHandler) {
125
- signal.removeEventListener('abort', abortHandler);
125
+ signal.removeEventListener("abort", abortHandler);
126
126
  }
127
127
  this.cleanup();
128
128
  };
@@ -134,7 +134,7 @@ export class StreamingClient {
134
134
  cancelled = true;
135
135
  }
136
136
  };
137
- signal.addEventListener('abort', abortHandler);
137
+ signal.addEventListener("abort", abortHandler);
138
138
  // Check if already aborted
139
139
  if (signal.aborted) {
140
140
  this.cancel();
@@ -143,15 +143,16 @@ export class StreamingClient {
143
143
  }
144
144
  // Send the query to the server after connection is established
145
145
  const queryPayload = {
146
- type: 'query',
146
+ type: "query",
147
147
  message_id: messageId,
148
148
  query,
149
- client_timezone: queryOptions.timezone || Intl.DateTimeFormat().resolvedOptions().timeZone,
149
+ client_timezone: queryOptions.timezone ||
150
+ Intl.DateTimeFormat().resolvedOptions().timeZone,
150
151
  history: history.length > 0 ? history : undefined,
151
152
  integration_ids: queryOptions.integrationIds,
152
153
  conversation_ids: queryOptions.conversationIds,
153
154
  allow_bot_messages: queryOptions.allowBotMessages,
154
- expand: queryOptions.includeSources ? 'sources' : undefined,
155
+ expand: queryOptions.includeSources ? "sources" : undefined,
155
156
  };
156
157
  try {
157
158
  ws.send(JSON.stringify(queryPayload));
@@ -170,7 +171,10 @@ export class StreamingClient {
170
171
  parsed = JSON.parse(event.data);
171
172
  }
172
173
  catch (parseErr) {
173
- const error = new AttroveError(`Failed to parse stream message: ${parseErr instanceof Error ? parseErr.message : String(parseErr)}`, ErrorCodes.INTERNAL_ERROR, undefined, { category: 'parse', rawDataPreview: String(event.data).substring(0, 200) });
174
+ const error = new AttroveError(`Failed to parse stream message: ${parseErr instanceof Error ? parseErr.message : String(parseErr)}`, ErrorCodes.INTERNAL_ERROR, undefined, {
175
+ category: "parse",
176
+ rawDataPreview: String(event.data).substring(0, 200),
177
+ });
174
178
  onError?.(error);
175
179
  cleanupAndFinish();
176
180
  reject(error);
@@ -178,7 +182,10 @@ export class StreamingClient {
178
182
  }
179
183
  // Validate the frame structure at runtime
180
184
  if (!isValidStreamFrame(parsed)) {
181
- const error = new AttroveError('Received invalid stream frame format from server', ErrorCodes.INTERNAL_ERROR, undefined, { category: 'parse', rawDataPreview: JSON.stringify(parsed).substring(0, 200) });
185
+ const error = new AttroveError("Received invalid stream frame format from server", ErrorCodes.INTERNAL_ERROR, undefined, {
186
+ category: "parse",
187
+ rawDataPreview: JSON.stringify(parsed).substring(0, 200),
188
+ });
182
189
  onError?.(error);
183
190
  cleanupAndFinish();
184
191
  reject(error);
@@ -193,7 +200,7 @@ export class StreamingClient {
193
200
  frameType: frame.type,
194
201
  };
195
202
  if (onWarning) {
196
- onWarning('Received message with mismatched message_id, ignoring', warningContext);
203
+ onWarning("Received message with mismatched message_id, ignoring", warningContext);
197
204
  }
198
205
  else {
199
206
  // prettier-ignore
@@ -203,28 +210,28 @@ export class StreamingClient {
203
210
  }
204
211
  // Process the parsed frame - callback errors will propagate naturally
205
212
  switch (frame.type) {
206
- case 'stream_start':
213
+ case "stream_start":
207
214
  onStart?.();
208
215
  break;
209
- case 'state':
216
+ case "state":
210
217
  onState?.(frame.state);
211
218
  break;
212
- case 'chunk':
219
+ case "chunk":
213
220
  answer += frame.content;
214
221
  onChunk?.(frame.content);
215
222
  break;
216
- case 'message_ids':
223
+ case "message_ids":
217
224
  usedMessageIds = frame.used_message_ids;
218
225
  break;
219
- case 'error': {
226
+ case "error": {
220
227
  const error = new AttroveError(frame.error, ErrorCodes.INTERNAL_ERROR);
221
228
  onError?.(error);
222
229
  cleanupAndFinish();
223
230
  reject(error);
224
231
  break;
225
232
  }
226
- case 'end': {
227
- cancelled = frame.reason === 'cancelled';
233
+ case "end": {
234
+ cancelled = frame.reason === "cancelled";
228
235
  if (frame.used_message_ids) {
229
236
  usedMessageIds = frame.used_message_ids;
230
237
  }
@@ -232,7 +239,7 @@ export class StreamingClient {
232
239
  // Build updated history
233
240
  const updatedHistory = [
234
241
  ...history,
235
- { role: 'assistant', content: answer },
242
+ { role: "assistant", content: answer },
236
243
  ];
237
244
  cleanupAndFinish();
238
245
  resolve({
@@ -288,27 +295,33 @@ export class StreamingClient {
288
295
  */
289
296
  cancel() {
290
297
  if (!this.ws || !this.currentMessageId) {
291
- return { success: false, reason: 'no_active_stream' };
298
+ return { success: false, reason: "no_active_stream" };
292
299
  }
293
300
  try {
294
301
  this.ws.send(JSON.stringify({
295
- type: 'stop',
302
+ type: "stop",
296
303
  message_id: this.currentMessageId,
297
304
  }));
298
- return { success: true, reason: 'sent' };
305
+ return { success: true, reason: "sent" };
299
306
  }
300
307
  catch (err) {
301
308
  // Cancellation is best-effort - the WebSocket may already be closed
302
309
  const errorMessage = err instanceof Error ? err.message : String(err);
303
- const context = { messageId: this.currentMessageId, wsReadyState: this.ws?.readyState };
310
+ const context = {
311
+ messageId: this.currentMessageId,
312
+ wsReadyState: this.ws?.readyState,
313
+ };
304
314
  if (this.onWarning) {
305
- this.onWarning('Failed to send cancel message', { error: errorMessage, ...context });
315
+ this.onWarning("Failed to send cancel message", {
316
+ error: errorMessage,
317
+ ...context,
318
+ });
306
319
  }
307
320
  else {
308
321
  // prettier-ignore
309
322
  console.warn('[AttroveSDK] Failed to send cancel message:', errorMessage, context);
310
323
  }
311
- return { success: false, reason: 'send_failed', error: errorMessage };
324
+ return { success: false, reason: "send_failed", error: errorMessage };
312
325
  }
313
326
  }
314
327
  /**
@@ -327,7 +340,9 @@ export class StreamingClient {
327
340
  // Cleanup is best-effort - the WebSocket may already be closed
328
341
  const errorMessage = err instanceof Error ? err.message : String(err);
329
342
  if (this.onWarning) {
330
- this.onWarning('Failed to close WebSocket cleanly', { error: errorMessage });
343
+ this.onWarning("Failed to close WebSocket cleanly", {
344
+ error: errorMessage,
345
+ });
331
346
  }
332
347
  else {
333
348
  // prettier-ignore
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../../../../packages/sdk/src/utils/streaming.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  * Get the SDK version.
9
9
  *
10
10
  * Returns the SDK version string from the hardcoded constant.
11
- * This value should be kept in sync with package.json during releases.
11
+ * This value is automatically synced with package.json during releases.
12
12
  */
13
13
  export declare function getVersion(): string;
14
14
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../packages/sdk/src/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
@@ -4,12 +4,12 @@
4
4
  * Provides version information for the SDK using a static constant.
5
5
  * This ensures browser compatibility while keeping the API consistent.
6
6
  */
7
- import { SDK_VERSION } from './constants';
7
+ import { SDK_VERSION } from "./constants.js";
8
8
  /**
9
9
  * Get the SDK version.
10
10
  *
11
11
  * Returns the SDK version string from the hardcoded constant.
12
- * This value should be kept in sync with package.json during releases.
12
+ * This value is automatically synced with package.json during releases.
13
13
  */
14
14
  export function getVersion() {
15
15
  return SDK_VERSION;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../packages/sdk/src/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB;IAC/B,2CAA2C;AAC7C,CAAC"}
package/package.json CHANGED
@@ -1,26 +1,26 @@
1
1
  {
2
2
  "name": "@attrove/sdk",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "Official TypeScript SDK for the Attrove API - AI-powered context retrieval for your apps",
5
- "main": "./cjs/src/index.js",
6
- "module": "./esm/src/index.js",
7
- "types": "./types/src/index.d.ts",
5
+ "type": "module",
6
+ "main": "./cjs/index.js",
7
+ "module": "./esm/index.js",
8
+ "types": "./esm/index.d.ts",
8
9
  "exports": {
9
10
  ".": {
10
11
  "import": {
11
- "types": "./types/src/index.d.ts",
12
- "default": "./esm/src/index.js"
12
+ "types": "./esm/index.d.ts",
13
+ "default": "./esm/index.js"
13
14
  },
14
15
  "require": {
15
- "types": "./types/src/index.d.ts",
16
- "default": "./cjs/src/index.js"
16
+ "types": "./esm/index.d.ts",
17
+ "default": "./cjs/index.js"
17
18
  }
18
19
  }
19
20
  },
20
21
  "files": [
21
22
  "cjs",
22
23
  "esm",
23
- "types",
24
24
  "README.md"
25
25
  ],
26
26
  "sideEffects": false,
@@ -52,6 +52,9 @@
52
52
  "build": "nx build sdk",
53
53
  "test": "nx test sdk"
54
54
  },
55
+ "dependencies": {
56
+ "tslib": "^2.6.0"
57
+ },
55
58
  "devDependencies": {
56
59
  "@types/node": "^20.0.0",
57
60
  "typescript": "~5.7.0"
@@ -59,4 +62,4 @@
59
62
  "publishConfig": {
60
63
  "access": "public"
61
64
  }
62
- }
65
+ }
package/cjs/README.md DELETED
@@ -1,247 +0,0 @@
1
- # @attrove/sdk
2
-
3
- Official TypeScript SDK for the Attrove API. Access AI-powered context from your users' Gmail, Slack, Google Calendar, and more.
4
-
5
- ## Installation
6
-
7
- ```bash
8
- npm install @attrove/sdk
9
- # or
10
- yarn add @attrove/sdk
11
- # or
12
- pnpm add @attrove/sdk
13
- ```
14
-
15
- ## Quick Start
16
-
17
- ```typescript
18
- import { Attrove } from '@attrove/sdk';
19
-
20
- // Create a client
21
- const attrove = new Attrove({
22
- apiKey: 'sk_...', // API key from your dashboard
23
- userId: 'user-uuid' // User ID from provisioning
24
- });
25
-
26
- // Query user's context
27
- const response = await attrove.query('What meetings do I have tomorrow?');
28
- console.log(response.answer);
29
-
30
- // Search for specific information
31
- const results = await attrove.search('quarterly report');
32
- ```
33
-
34
- ## Core Methods
35
-
36
- ### `query(prompt, options?)`
37
-
38
- Ask questions about the user's unified context with AI-generated answers.
39
-
40
- ```typescript
41
- // Simple query
42
- const response = await attrove.query('What did Sarah say about the Q4 budget?');
43
- console.log(response.answer);
44
-
45
- // Multi-turn conversation - pass history from previous response
46
- let history = response.history;
47
- const followUp = await attrove.query('What about Q3?', { history });
48
- // Update history for subsequent queries
49
- history = followUp.history;
50
-
51
- // With filters
52
- const filtered = await attrove.query('Latest updates', {
53
- integrationIds: ['integration-uuid'], // Only search specific integration
54
- includeSources: true // Include source snippets
55
- });
56
- ```
57
-
58
- ### `search(query, options?)`
59
-
60
- Semantic search that returns raw messages without AI summarization.
61
-
62
- ```typescript
63
- const results = await attrove.search('product launch', {
64
- afterDate: '2024-01-01T00:00:00Z',
65
- senderDomains: ['acme.com'],
66
- includeBodyText: true
67
- });
68
-
69
- for (const [convId, conv] of Object.entries(results.conversations)) {
70
- console.log(`Conversation: ${conv.conversation_name}`);
71
- }
72
- ```
73
-
74
- ## Resource Namespaces
75
-
76
- ### Users
77
-
78
- ```typescript
79
- // Get user profile and integrations
80
- const { user, integrations } = await attrove.users.get();
81
-
82
- // Update user profile
83
- await attrove.users.update({
84
- timezone: 'America/New_York'
85
- });
86
-
87
- // Get sync statistics
88
- const stats = await attrove.users.syncStats();
89
- console.log(`Messages: ${stats.totals.messages.count}`);
90
- ```
91
-
92
- ### Messages
93
-
94
- ```typescript
95
- // List messages
96
- const { data, pagination } = await attrove.messages.list({
97
- limit: 20,
98
- expand: ['body_text']
99
- });
100
-
101
- // Get specific messages (e.g., after a query)
102
- const { data: messages } = await attrove.messages.list({
103
- ids: response.used_message_ids,
104
- expand: ['body_text']
105
- });
106
-
107
- // Get a single message by ID
108
- const message = await attrove.messages.get('message-uuid');
109
- ```
110
-
111
- ### Conversations
112
-
113
- ```typescript
114
- // List conversations
115
- const { data: conversations } = await attrove.conversations.list({
116
- syncedOnly: true
117
- });
118
-
119
- // Update sync settings
120
- await attrove.conversations.updateSync([
121
- { id: 'conversation-uuid-1', importMessages: true },
122
- { id: 'conversation-uuid-2', importMessages: false }
123
- ]);
124
- ```
125
-
126
- ### Integrations
127
-
128
- ```typescript
129
- // List integrations
130
- const integrations = await attrove.integrations.list();
131
-
132
- // Disconnect an integration
133
- await attrove.integrations.disconnect('integration-uuid');
134
- ```
135
-
136
- ## Server-to-Server (Admin) API
137
-
138
- Use the admin client for operations that require partner authentication:
139
-
140
- ```typescript
141
- import { Attrove } from '@attrove/sdk';
142
-
143
- // Create admin client
144
- const admin = Attrove.admin({
145
- clientId: 'your-client-id',
146
- clientSecret: 'your-client-secret'
147
- });
148
-
149
- // Create a user
150
- const { id, apiKey } = await admin.users.create({
151
- email: 'user@example.com',
152
- firstName: 'John',
153
- lastName: 'Doe'
154
- });
155
-
156
- // Generate integration token for OAuth flow
157
- const { token: connectToken, expires_at } = await admin.users.createConnectToken(id);
158
-
159
- // Use the apiKey for subsequent API calls
160
- const attrove = new Attrove({ apiKey, userId: id });
161
-
162
- // Redirect user to OAuth flow
163
- // The URL format depends on your deployment - check your dashboard for the exact URL
164
- // Example: const oauthUrl = `${YOUR_BASE_URL}/connect/gmail?token=${connectToken}`;
165
- ```
166
-
167
- ## Error Handling
168
-
169
- The SDK provides typed errors for better error handling:
170
-
171
- ```typescript
172
- import {
173
- Attrove,
174
- AttroveError,
175
- AuthenticationError,
176
- NotFoundError,
177
- RateLimitError
178
- } from '@attrove/sdk';
179
-
180
- try {
181
- const response = await attrove.query('...');
182
- } catch (error) {
183
- if (error instanceof AuthenticationError) {
184
- console.log('Invalid API key');
185
- } else if (error instanceof RateLimitError) {
186
- console.log(`Rate limited. Retry after ${error.retryAfter}s`);
187
- } else if (error instanceof NotFoundError) {
188
- console.log('Resource not found');
189
- } else if (error instanceof AttroveError) {
190
- console.log(`Error: ${error.code} - ${error.message}`);
191
- }
192
- }
193
- ```
194
-
195
- ## Streaming (Advanced)
196
-
197
- For real-time streaming of query responses:
198
-
199
- ```typescript
200
- const result = await attrove.stream('What happened in the meeting?', {
201
- onChunk: (chunk) => process.stdout.write(chunk),
202
- onState: (state) => console.log('State:', state),
203
- onEnd: (reason) => console.log('Stream ended:', reason)
204
- });
205
-
206
- console.log('Full answer:', result.answer);
207
- ```
208
-
209
- > **Note:** Streaming uses WebSocket connections and requires the same API key authentication as other SDK methods. It is primarily intended for end-user facing applications where progressive display of responses improves the user experience.
210
-
211
- ## Configuration
212
-
213
- ```typescript
214
- const attrove = new Attrove({
215
- apiKey: 'sk_...', // Required: API key
216
- userId: 'user-uuid', // Required: User ID
217
- baseUrl: 'https://api.attrove.com', // Optional: API base URL
218
- timeout: 30000, // Optional: Request timeout (ms)
219
- maxRetries: 3 // Optional: Retry attempts
220
- });
221
- ```
222
-
223
- ## TypeScript Support
224
-
225
- The SDK is fully typed. Import types as needed:
226
-
227
- ```typescript
228
- import {
229
- QueryOptions,
230
- QueryResponse,
231
- SearchOptions,
232
- SearchResponse,
233
- User,
234
- Message,
235
- Integration,
236
- ConversationMessage
237
- } from '@attrove/sdk';
238
- ```
239
-
240
- ## Requirements
241
-
242
- - Node.js 18.0.0 or later
243
- - TypeScript 4.7+ (if using TypeScript)
244
-
245
- ## License
246
-
247
- MIT
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../../../packages/sdk/src/__mocks__/version.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,SAAgB,UAAU;IACxB,OAAO,YAAY,CAAC;AACtB,CAAC;AAFD,gCAEC;AAED,SAAgB,iBAAiB;IAC/B,gBAAgB;AAClB,CAAC;AAFD,8CAEC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin-client.js","sourceRoot":"","sources":["../../../../../packages/sdk/src/admin-client.ts"],"names":[],"mappings":"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"}