@xpert-ai/xpert-sdk 0.0.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.
Files changed (122) hide show
  1. package/LICENSE +21 -0
  2. package/dist/auth/error.d.ts +9 -0
  3. package/dist/auth/error.js +76 -0
  4. package/dist/auth/error.js.map +1 -0
  5. package/dist/auth/error.mjs +76 -0
  6. package/dist/auth/error.mjs.map +1 -0
  7. package/dist/auth/index.d.ts +18 -0
  8. package/dist/auth/index.js +35 -0
  9. package/dist/auth/index.js.map +1 -0
  10. package/dist/auth/index.mjs +35 -0
  11. package/dist/auth/index.mjs.map +1 -0
  12. package/dist/auth/types.d.ts +297 -0
  13. package/dist/auth/types.js +2 -0
  14. package/dist/auth/types.js.map +1 -0
  15. package/dist/auth/types.mjs +2 -0
  16. package/dist/auth/types.mjs.map +1 -0
  17. package/dist/client.d.ts +662 -0
  18. package/dist/client.js +1233 -0
  19. package/dist/client.js.map +1 -0
  20. package/dist/client.mjs +1233 -0
  21. package/dist/client.mjs.map +1 -0
  22. package/dist/index.d.ts +7 -0
  23. package/dist/index.js +3 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/index.mjs +3 -0
  26. package/dist/index.mjs.map +1 -0
  27. package/dist/logging/index.d.ts +43 -0
  28. package/dist/logging/index.js +33 -0
  29. package/dist/logging/index.js.map +1 -0
  30. package/dist/logging/index.mjs +33 -0
  31. package/dist/logging/index.mjs.map +1 -0
  32. package/dist/schema.d.ts +270 -0
  33. package/dist/schema.js +2 -0
  34. package/dist/schema.js.map +1 -0
  35. package/dist/schema.mjs +2 -0
  36. package/dist/schema.mjs.map +1 -0
  37. package/dist/singletons/fetch.d.ts +7 -0
  38. package/dist/singletons/fetch.js +24 -0
  39. package/dist/singletons/fetch.js.map +1 -0
  40. package/dist/singletons/fetch.mjs +24 -0
  41. package/dist/singletons/fetch.mjs.map +1 -0
  42. package/dist/tests/fetch.test.d.ts +1 -0
  43. package/dist/tests/fetch.test.js +154 -0
  44. package/dist/tests/fetch.test.js.map +1 -0
  45. package/dist/tests/fetch.test.mjs +154 -0
  46. package/dist/tests/fetch.test.mjs.map +1 -0
  47. package/dist/tests/sse.test.d.ts +1 -0
  48. package/dist/tests/sse.test.js +157 -0
  49. package/dist/tests/sse.test.js.map +1 -0
  50. package/dist/tests/sse.test.mjs +157 -0
  51. package/dist/tests/sse.test.mjs.map +1 -0
  52. package/dist/types.d.ts +176 -0
  53. package/dist/types.js +2 -0
  54. package/dist/types.js.map +1 -0
  55. package/dist/types.messages.d.ts +86 -0
  56. package/dist/types.messages.js +2 -0
  57. package/dist/types.messages.js.map +1 -0
  58. package/dist/types.messages.mjs +2 -0
  59. package/dist/types.messages.mjs.map +1 -0
  60. package/dist/types.mjs +2 -0
  61. package/dist/types.mjs.map +1 -0
  62. package/dist/types.stream.d.ts +212 -0
  63. package/dist/types.stream.js +2 -0
  64. package/dist/types.stream.js.map +1 -0
  65. package/dist/types.stream.mjs +2 -0
  66. package/dist/types.stream.mjs.map +1 -0
  67. package/dist/ui/branching.d.ts +35 -0
  68. package/dist/ui/branching.js +145 -0
  69. package/dist/ui/branching.js.map +1 -0
  70. package/dist/ui/branching.mjs +145 -0
  71. package/dist/ui/branching.mjs.map +1 -0
  72. package/dist/ui/branching.test.d.ts +1 -0
  73. package/dist/ui/branching.test.js +369 -0
  74. package/dist/ui/branching.test.js.map +1 -0
  75. package/dist/ui/branching.test.mjs +369 -0
  76. package/dist/ui/branching.test.mjs.map +1 -0
  77. package/dist/ui/errors.d.ts +12 -0
  78. package/dist/ui/errors.js +10 -0
  79. package/dist/ui/errors.js.map +1 -0
  80. package/dist/ui/errors.mjs +10 -0
  81. package/dist/ui/errors.mjs.map +1 -0
  82. package/dist/ui/manager.d.ts +87 -0
  83. package/dist/ui/manager.js +160 -0
  84. package/dist/ui/manager.js.map +1 -0
  85. package/dist/ui/manager.mjs +160 -0
  86. package/dist/ui/manager.mjs.map +1 -0
  87. package/dist/ui/messages.d.ts +18 -0
  88. package/dist/ui/messages.js +67 -0
  89. package/dist/ui/messages.js.map +1 -0
  90. package/dist/ui/messages.mjs +67 -0
  91. package/dist/ui/messages.mjs.map +1 -0
  92. package/dist/ui/utils.d.ts +2 -0
  93. package/dist/ui/utils.js +11 -0
  94. package/dist/ui/utils.js.map +1 -0
  95. package/dist/ui/utils.mjs +11 -0
  96. package/dist/ui/utils.mjs.map +1 -0
  97. package/dist/utils/async_caller.d.ts +48 -0
  98. package/dist/utils/async_caller.js +147 -0
  99. package/dist/utils/async_caller.js.map +1 -0
  100. package/dist/utils/async_caller.mjs +147 -0
  101. package/dist/utils/async_caller.mjs.map +1 -0
  102. package/dist/utils/env.d.ts +1 -0
  103. package/dist/utils/env.js +13 -0
  104. package/dist/utils/env.js.map +1 -0
  105. package/dist/utils/env.mjs +13 -0
  106. package/dist/utils/env.mjs.map +1 -0
  107. package/dist/utils/signals.d.ts +1 -0
  108. package/dist/utils/signals.js +19 -0
  109. package/dist/utils/signals.js.map +1 -0
  110. package/dist/utils/signals.mjs +19 -0
  111. package/dist/utils/signals.mjs.map +1 -0
  112. package/dist/utils/sse.d.ts +8 -0
  113. package/dist/utils/sse.js +151 -0
  114. package/dist/utils/sse.js.map +1 -0
  115. package/dist/utils/sse.mjs +151 -0
  116. package/dist/utils/sse.mjs.map +1 -0
  117. package/dist/utils/stream.d.ts +13 -0
  118. package/dist/utils/stream.js +109 -0
  119. package/dist/utils/stream.js.map +1 -0
  120. package/dist/utils/stream.mjs +109 -0
  121. package/dist/utils/stream.mjs.map +1 -0
  122. package/package.json +56 -0
@@ -0,0 +1,151 @@
1
+ const CR = "\r".charCodeAt(0);
2
+ const LF = "\n".charCodeAt(0);
3
+ const NULL = "\0".charCodeAt(0);
4
+ const COLON = ":".charCodeAt(0);
5
+ const SPACE = " ".charCodeAt(0);
6
+ const TRAILING_NEWLINE = [CR, LF];
7
+ export function BytesLineDecoder() {
8
+ let buffer = [];
9
+ let trailingCr = false;
10
+ return new TransformStream({
11
+ start() {
12
+ buffer = [];
13
+ trailingCr = false;
14
+ },
15
+ transform(chunk, controller) {
16
+ // See https://docs.python.org/3/glossary.html#term-universal-newlines
17
+ let text = chunk;
18
+ // Handle trailing CR from previous chunk
19
+ if (trailingCr) {
20
+ text = joinArrays([[CR], text]);
21
+ trailingCr = false;
22
+ }
23
+ // Check for trailing CR in current chunk
24
+ if (text.length > 0 && text.at(-1) === CR) {
25
+ trailingCr = true;
26
+ text = text.subarray(0, -1);
27
+ }
28
+ if (!text.length)
29
+ return;
30
+ const trailingNewline = TRAILING_NEWLINE.includes(text.at(-1));
31
+ const lastIdx = text.length - 1;
32
+ const { lines } = text.reduce((acc, cur, idx) => {
33
+ if (acc.from > idx)
34
+ return acc;
35
+ if (cur === CR || cur === LF) {
36
+ acc.lines.push(text.subarray(acc.from, idx));
37
+ if (cur === CR && text[idx + 1] === LF) {
38
+ acc.from = idx + 2;
39
+ }
40
+ else {
41
+ acc.from = idx + 1;
42
+ }
43
+ }
44
+ if (idx === lastIdx && acc.from <= lastIdx) {
45
+ acc.lines.push(text.subarray(acc.from));
46
+ }
47
+ return acc;
48
+ }, { lines: [], from: 0 });
49
+ if (lines.length === 1 && !trailingNewline) {
50
+ buffer.push(lines[0]);
51
+ return;
52
+ }
53
+ if (buffer.length) {
54
+ // Include existing buffer in first line
55
+ buffer.push(lines[0]);
56
+ lines[0] = joinArrays(buffer);
57
+ buffer = [];
58
+ }
59
+ if (!trailingNewline) {
60
+ // If the last segment is not newline terminated,
61
+ // buffer it for the next chunk
62
+ if (lines.length)
63
+ buffer = [lines.pop()];
64
+ }
65
+ // Enqueue complete lines
66
+ for (const line of lines) {
67
+ controller.enqueue(line);
68
+ }
69
+ },
70
+ flush(controller) {
71
+ if (buffer.length) {
72
+ controller.enqueue(joinArrays(buffer));
73
+ }
74
+ },
75
+ });
76
+ }
77
+ export function SSEDecoder() {
78
+ let event = "";
79
+ let data = [];
80
+ let lastEventId = "";
81
+ let retry = null;
82
+ const decoder = new TextDecoder();
83
+ return new TransformStream({
84
+ transform(chunk, controller) {
85
+ // Handle empty line case
86
+ if (!chunk.length) {
87
+ if (!event && !data.length && !lastEventId && retry == null)
88
+ return;
89
+ const sse = {
90
+ id: lastEventId || undefined,
91
+ event,
92
+ data: data.length ? decodeArraysToJson(decoder, data) : null,
93
+ };
94
+ // NOTE: as per the SSE spec, do not reset lastEventId
95
+ event = "";
96
+ data = [];
97
+ retry = null;
98
+ controller.enqueue(sse);
99
+ return;
100
+ }
101
+ // Ignore comments
102
+ if (chunk[0] === COLON)
103
+ return;
104
+ const sepIdx = chunk.indexOf(COLON);
105
+ if (sepIdx === -1)
106
+ return;
107
+ const fieldName = decoder.decode(chunk.subarray(0, sepIdx));
108
+ let value = chunk.subarray(sepIdx + 1);
109
+ if (value[0] === SPACE)
110
+ value = value.subarray(1);
111
+ if (fieldName === "event") {
112
+ event = decoder.decode(value);
113
+ }
114
+ else if (fieldName === "data") {
115
+ data.push(value);
116
+ }
117
+ else if (fieldName === "id") {
118
+ if (value.indexOf(NULL) === -1)
119
+ lastEventId = decoder.decode(value);
120
+ }
121
+ else if (fieldName === "retry") {
122
+ const retryNum = Number.parseInt(decoder.decode(value), 10);
123
+ if (!Number.isNaN(retryNum))
124
+ retry = retryNum;
125
+ }
126
+ },
127
+ flush(controller) {
128
+ if (event) {
129
+ controller.enqueue({
130
+ id: lastEventId || undefined,
131
+ event,
132
+ data: data.length ? decodeArraysToJson(decoder, data) : null,
133
+ });
134
+ }
135
+ },
136
+ });
137
+ }
138
+ function joinArrays(data) {
139
+ const totalLength = data.reduce((acc, curr) => acc + curr.length, 0);
140
+ const merged = new Uint8Array(totalLength);
141
+ let offset = 0;
142
+ for (const c of data) {
143
+ merged.set(c, offset);
144
+ offset += c.length;
145
+ }
146
+ return merged;
147
+ }
148
+ function decodeArraysToJson(decoder, data) {
149
+ return JSON.parse(decoder.decode(joinArrays(data)));
150
+ }
151
+ //# sourceMappingURL=sse.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.mjs","sourceRoot":"","sources":["../../src/utils/sse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ type IterableReadableStreamInterface<T> = ReadableStream<T> & AsyncIterable<T>;
2
+ export declare class IterableReadableStream<T> extends ReadableStream<T> implements IterableReadableStreamInterface<T> {
3
+ private reader;
4
+ private ensureReader;
5
+ next(): Promise<IteratorResult<T>>;
6
+ return(): Promise<IteratorResult<T>>;
7
+ throw(e: any): Promise<IteratorResult<T>>;
8
+ [Symbol.asyncDispose](): Promise<void>;
9
+ [Symbol.asyncIterator](): this;
10
+ static fromReadableStream<T>(stream: ReadableStream<T>): IterableReadableStream<T>;
11
+ static fromAsyncGenerator<T>(generator: AsyncGenerator<T>): IterableReadableStream<T>;
12
+ }
13
+ export {};
@@ -0,0 +1,109 @@
1
+ /*
2
+ * Support async iterator syntax for ReadableStreams in all environments.
3
+ * Source: https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490
4
+ */
5
+ export class IterableReadableStream extends ReadableStream {
6
+ reader = null;
7
+ ensureReader() {
8
+ if (!this.reader) {
9
+ this.reader = this.getReader();
10
+ }
11
+ return this.reader;
12
+ }
13
+ async next() {
14
+ const reader = this.ensureReader();
15
+ try {
16
+ const result = await reader.read();
17
+ if (result.done) {
18
+ reader.releaseLock(); // release lock when stream becomes closed
19
+ this.reader = null;
20
+ return {
21
+ done: true,
22
+ value: undefined,
23
+ };
24
+ }
25
+ else {
26
+ return {
27
+ done: false,
28
+ value: result.value,
29
+ };
30
+ }
31
+ }
32
+ catch (e) {
33
+ reader.releaseLock(); // release lock when stream becomes errored
34
+ this.reader = null;
35
+ throw e;
36
+ }
37
+ }
38
+ async return() {
39
+ const reader = this.ensureReader();
40
+ // If wrapped in a Node stream, cancel is already called.
41
+ if (this.locked) {
42
+ const cancelPromise = reader.cancel(); // cancel first, but don't await yet
43
+ reader.releaseLock(); // release lock first
44
+ await cancelPromise; // now await it
45
+ }
46
+ this.reader = null;
47
+ return { done: true, value: undefined };
48
+ }
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ async throw(e) {
51
+ const reader = this.ensureReader();
52
+ if (this.locked) {
53
+ const cancelPromise = reader.cancel(); // cancel first, but don't await yet
54
+ reader.releaseLock(); // release lock first
55
+ await cancelPromise; // now await it
56
+ }
57
+ this.reader = null;
58
+ throw e;
59
+ }
60
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
61
+ // @ts-ignore Not present in Node 18 types, required in latest Node 22
62
+ async [Symbol.asyncDispose]() {
63
+ await this.return();
64
+ }
65
+ [Symbol.asyncIterator]() {
66
+ return this;
67
+ }
68
+ static fromReadableStream(stream) {
69
+ // From https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams#reading_the_stream
70
+ const reader = stream.getReader();
71
+ return new IterableReadableStream({
72
+ start(controller) {
73
+ return pump();
74
+ function pump() {
75
+ return reader.read().then(({ done, value }) => {
76
+ // When no more data needs to be consumed, close the stream
77
+ if (done) {
78
+ controller.close();
79
+ return;
80
+ }
81
+ // Enqueue the next data chunk into our target stream
82
+ controller.enqueue(value);
83
+ return pump();
84
+ });
85
+ }
86
+ },
87
+ cancel() {
88
+ reader.releaseLock();
89
+ },
90
+ });
91
+ }
92
+ static fromAsyncGenerator(generator) {
93
+ return new IterableReadableStream({
94
+ async pull(controller) {
95
+ const { value, done } = await generator.next();
96
+ // When no more data needs to be consumed, close the stream
97
+ if (done) {
98
+ controller.close();
99
+ }
100
+ // Fix: `else if (value)` will hang the streaming when nullish value (e.g. empty string) is pulled
101
+ controller.enqueue(value);
102
+ },
103
+ async cancel(reason) {
104
+ await generator.return(reason);
105
+ },
106
+ });
107
+ }
108
+ }
109
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/utils/stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /*
2
+ * Support async iterator syntax for ReadableStreams in all environments.
3
+ * Source: https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490
4
+ */
5
+ export class IterableReadableStream extends ReadableStream {
6
+ reader = null;
7
+ ensureReader() {
8
+ if (!this.reader) {
9
+ this.reader = this.getReader();
10
+ }
11
+ return this.reader;
12
+ }
13
+ async next() {
14
+ const reader = this.ensureReader();
15
+ try {
16
+ const result = await reader.read();
17
+ if (result.done) {
18
+ reader.releaseLock(); // release lock when stream becomes closed
19
+ this.reader = null;
20
+ return {
21
+ done: true,
22
+ value: undefined,
23
+ };
24
+ }
25
+ else {
26
+ return {
27
+ done: false,
28
+ value: result.value,
29
+ };
30
+ }
31
+ }
32
+ catch (e) {
33
+ reader.releaseLock(); // release lock when stream becomes errored
34
+ this.reader = null;
35
+ throw e;
36
+ }
37
+ }
38
+ async return() {
39
+ const reader = this.ensureReader();
40
+ // If wrapped in a Node stream, cancel is already called.
41
+ if (this.locked) {
42
+ const cancelPromise = reader.cancel(); // cancel first, but don't await yet
43
+ reader.releaseLock(); // release lock first
44
+ await cancelPromise; // now await it
45
+ }
46
+ this.reader = null;
47
+ return { done: true, value: undefined };
48
+ }
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ async throw(e) {
51
+ const reader = this.ensureReader();
52
+ if (this.locked) {
53
+ const cancelPromise = reader.cancel(); // cancel first, but don't await yet
54
+ reader.releaseLock(); // release lock first
55
+ await cancelPromise; // now await it
56
+ }
57
+ this.reader = null;
58
+ throw e;
59
+ }
60
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
61
+ // @ts-ignore Not present in Node 18 types, required in latest Node 22
62
+ async [Symbol.asyncDispose]() {
63
+ await this.return();
64
+ }
65
+ [Symbol.asyncIterator]() {
66
+ return this;
67
+ }
68
+ static fromReadableStream(stream) {
69
+ // From https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams#reading_the_stream
70
+ const reader = stream.getReader();
71
+ return new IterableReadableStream({
72
+ start(controller) {
73
+ return pump();
74
+ function pump() {
75
+ return reader.read().then(({ done, value }) => {
76
+ // When no more data needs to be consumed, close the stream
77
+ if (done) {
78
+ controller.close();
79
+ return;
80
+ }
81
+ // Enqueue the next data chunk into our target stream
82
+ controller.enqueue(value);
83
+ return pump();
84
+ });
85
+ }
86
+ },
87
+ cancel() {
88
+ reader.releaseLock();
89
+ },
90
+ });
91
+ }
92
+ static fromAsyncGenerator(generator) {
93
+ return new IterableReadableStream({
94
+ async pull(controller) {
95
+ const { value, done } = await generator.next();
96
+ // When no more data needs to be consumed, close the stream
97
+ if (done) {
98
+ controller.close();
99
+ }
100
+ // Fix: `else if (value)` will hang the streaming when nullish value (e.g. empty string) is pulled
101
+ controller.enqueue(value);
102
+ },
103
+ async cancel(reason) {
104
+ await generator.return(reason);
105
+ },
106
+ });
107
+ }
108
+ }
109
+ //# sourceMappingURL=stream.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.mjs","sourceRoot":"","sources":["../../src/utils/stream.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@xpert-ai/xpert-sdk",
3
+ "version": "0.0.1",
4
+ "description": "SDK Core functionality package",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.mjs",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.mjs",
12
+ "require": "./dist/index.js",
13
+ "types": "./dist/index.d.ts"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "dependencies": {
20
+ "p-queue": "^6.6.2",
21
+ "p-retry": "4",
22
+ "uuid": "^9.0.0"
23
+ },
24
+ "devDependencies": {
25
+ "@types/node": "^22.16.3",
26
+ "@types/json-schema": "^7.0.15",
27
+ "rimraf": "^6.0.1",
28
+ "typescript": "^5.8.3",
29
+ "vitest": "^3.2.4",
30
+ "@langchain/core": "^1.0.1",
31
+ "@langchain/scripts": "^0.1.4",
32
+ "@tsconfig/recommended": "^1.0.2",
33
+ "@types/uuid": "^9.0.1",
34
+ "@typescript-eslint/eslint-plugin": "^6.12.0",
35
+ "@typescript-eslint/parser": "^6.12.0",
36
+ "eslint": "^8.33.0",
37
+ "eslint-config-airbnb-base": "^15.0.0",
38
+ "eslint-config-prettier": "^8.6.0",
39
+ "eslint-plugin-import": "^2.29.1",
40
+ "eslint-plugin-no-instanceof": "^1.0.1",
41
+ "eslint-plugin-prettier": "^4.2.1",
42
+ "json-schema": "^0.4.0",
43
+ "prettier": "^2.8.3"
44
+ },
45
+ "publishConfig": {
46
+ "access": "public"
47
+ },
48
+ "scripts": {
49
+ "prebuild": "rimraf dist",
50
+ "build": "tsc",
51
+ "bundle": "echo 'Bundle step for SDK core package'",
52
+ "dev": "tsc --watch",
53
+ "test": "vitest",
54
+ "test:run": "vitest run"
55
+ }
56
+ }