@push.rocks/smartai 0.0.2 → 0.0.3

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.
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartai',
6
- version: '0.0.2',
6
+ version: '0.0.3',
7
7
  description: 'a standardaized interface to talk to AI models'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLGdEQUFnRDtDQUM5RCxDQUFBIn0=
@@ -1,2 +1,43 @@
1
+ class SmartAi {
2
+ constructor(options) {
3
+ this.inputStreamWriter = null;
4
+ this.outputStreamController = null;
5
+ this.processFunction = options.processFunction;
6
+ }
7
+ setupOutputStream() {
8
+ return new ReadableStream({
9
+ start: (controller) => {
10
+ this.outputStreamController = controller;
11
+ }
12
+ });
13
+ }
14
+ setupInputStream() {
15
+ return new WritableStream({
16
+ write: async (chunk) => {
17
+ const processedData = await this.processFunction(chunk);
18
+ if (this.outputStreamController) {
19
+ this.outputStreamController.enqueue(processedData);
20
+ }
21
+ },
22
+ close: () => {
23
+ this.outputStreamController?.close();
24
+ },
25
+ abort: (err) => {
26
+ console.error('Stream aborted', err);
27
+ this.outputStreamController?.error(err);
28
+ }
29
+ });
30
+ }
31
+ getInputStreamWriter() {
32
+ if (!this.inputStreamWriter) {
33
+ const inputStream = this.setupInputStream();
34
+ this.inputStreamWriter = inputStream.getWriter();
35
+ }
36
+ return this.inputStreamWriter;
37
+ }
38
+ getOutputStream() {
39
+ return this.setupOutputStream();
40
+ }
41
+ }
1
42
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhaS5jbGFzc2VzLnNtYXJ0YWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGFpLmNsYXNzZXMuc21hcnRhaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhaS5jbGFzc2VzLnNtYXJ0YWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGFpLmNsYXNzZXMuc21hcnRhaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLE9BQU87SUFLWCxZQUFZLE9BQXdCO1FBSDVCLHNCQUFpQixHQUErQyxJQUFJLENBQUM7UUFDckUsMkJBQXNCLEdBQW1ELElBQUksQ0FBQztRQUdwRixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUM7SUFDakQsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixPQUFPLElBQUksY0FBYyxDQUFTO1lBQ2hDLEtBQUssRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsVUFBVSxDQUFDO1lBQzNDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLE9BQU8sSUFBSSxjQUFjLENBQVM7WUFDaEMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDckIsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sb0JBQW9CO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25ELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRU0sZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xDLENBQUM7Q0FDRiJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@push.rocks/smartai",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "private": false,
5
5
  "description": "a standardaized interface to talk to AI models",
6
6
  "main": "dist_ts/index.js",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartai',
6
- version: '0.0.2',
6
+ version: '0.0.3',
7
7
  description: 'a standardaized interface to talk to AI models'
8
8
  }
@@ -0,0 +1,53 @@
1
+ type TProcessFunction = (input: string) => Promise<string>;
2
+
3
+ interface ISmartAiOptions {
4
+ processFunction: TProcessFunction;
5
+ }
6
+
7
+ class SmartAi {
8
+ private processFunction: TProcessFunction;
9
+ private inputStreamWriter: WritableStreamDefaultWriter<string> | null = null;
10
+ private outputStreamController: ReadableStreamDefaultController<string> | null = null;
11
+
12
+ constructor(options: ISmartAiOptions) {
13
+ this.processFunction = options.processFunction;
14
+ }
15
+
16
+ private setupOutputStream(): ReadableStream<string> {
17
+ return new ReadableStream<string>({
18
+ start: (controller) => {
19
+ this.outputStreamController = controller;
20
+ }
21
+ });
22
+ }
23
+
24
+ private setupInputStream(): WritableStream<string> {
25
+ return new WritableStream<string>({
26
+ write: async (chunk) => {
27
+ const processedData = await this.processFunction(chunk);
28
+ if (this.outputStreamController) {
29
+ this.outputStreamController.enqueue(processedData);
30
+ }
31
+ },
32
+ close: () => {
33
+ this.outputStreamController?.close();
34
+ },
35
+ abort: (err) => {
36
+ console.error('Stream aborted', err);
37
+ this.outputStreamController?.error(err);
38
+ }
39
+ });
40
+ }
41
+
42
+ public getInputStreamWriter(): WritableStreamDefaultWriter<string> {
43
+ if (!this.inputStreamWriter) {
44
+ const inputStream = this.setupInputStream();
45
+ this.inputStreamWriter = inputStream.getWriter();
46
+ }
47
+ return this.inputStreamWriter;
48
+ }
49
+
50
+ public getOutputStream(): ReadableStream<string> {
51
+ return this.setupOutputStream();
52
+ }
53
+ }