@llumiverse/core 0.23.0 → 0.24.0-dev.20260203.164053Z

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 (80) hide show
  1. package/README.md +141 -218
  2. package/package.json +3 -3
  3. package/src/CompletionStream.ts +70 -1
  4. package/src/Driver.ts +20 -0
  5. package/src/conversation-utils.ts +497 -0
  6. package/src/index.ts +1 -0
  7. package/src/stream.ts +1 -0
  8. package/lib/cjs/CompletionStream.js +0 -179
  9. package/lib/cjs/CompletionStream.js.map +0 -1
  10. package/lib/cjs/Driver.js +0 -180
  11. package/lib/cjs/Driver.js.map +0 -1
  12. package/lib/cjs/async.js +0 -131
  13. package/lib/cjs/async.js.map +0 -1
  14. package/lib/cjs/formatters/commons.js +0 -7
  15. package/lib/cjs/formatters/commons.js.map +0 -1
  16. package/lib/cjs/formatters/generic.js +0 -59
  17. package/lib/cjs/formatters/generic.js.map +0 -1
  18. package/lib/cjs/formatters/index.js +0 -20
  19. package/lib/cjs/formatters/index.js.map +0 -1
  20. package/lib/cjs/formatters/nova.js +0 -99
  21. package/lib/cjs/formatters/nova.js.map +0 -1
  22. package/lib/cjs/index.js +0 -21
  23. package/lib/cjs/index.js.map +0 -1
  24. package/lib/cjs/json.js +0 -29
  25. package/lib/cjs/json.js.map +0 -1
  26. package/lib/cjs/package.json +0 -3
  27. package/lib/cjs/resolver.js +0 -45
  28. package/lib/cjs/resolver.js.map +0 -1
  29. package/lib/cjs/stream.js +0 -30
  30. package/lib/cjs/stream.js.map +0 -1
  31. package/lib/cjs/validation.js +0 -96
  32. package/lib/cjs/validation.js.map +0 -1
  33. package/lib/esm/CompletionStream.js +0 -174
  34. package/lib/esm/CompletionStream.js.map +0 -1
  35. package/lib/esm/Driver.js +0 -175
  36. package/lib/esm/Driver.js.map +0 -1
  37. package/lib/esm/async.js +0 -123
  38. package/lib/esm/async.js.map +0 -1
  39. package/lib/esm/formatters/commons.js +0 -4
  40. package/lib/esm/formatters/commons.js.map +0 -1
  41. package/lib/esm/formatters/generic.js +0 -55
  42. package/lib/esm/formatters/generic.js.map +0 -1
  43. package/lib/esm/formatters/index.js +0 -4
  44. package/lib/esm/formatters/index.js.map +0 -1
  45. package/lib/esm/formatters/nova.js +0 -96
  46. package/lib/esm/formatters/nova.js.map +0 -1
  47. package/lib/esm/index.js +0 -5
  48. package/lib/esm/index.js.map +0 -1
  49. package/lib/esm/json.js +0 -25
  50. package/lib/esm/json.js.map +0 -1
  51. package/lib/esm/resolver.js +0 -42
  52. package/lib/esm/resolver.js.map +0 -1
  53. package/lib/esm/stream.js +0 -25
  54. package/lib/esm/stream.js.map +0 -1
  55. package/lib/esm/validation.js +0 -88
  56. package/lib/esm/validation.js.map +0 -1
  57. package/lib/types/CompletionStream.d.ts +0 -20
  58. package/lib/types/CompletionStream.d.ts.map +0 -1
  59. package/lib/types/Driver.d.ts +0 -75
  60. package/lib/types/Driver.d.ts.map +0 -1
  61. package/lib/types/async.d.ts +0 -27
  62. package/lib/types/async.d.ts.map +0 -1
  63. package/lib/types/formatters/commons.d.ts +0 -3
  64. package/lib/types/formatters/commons.d.ts.map +0 -1
  65. package/lib/types/formatters/generic.d.ts +0 -13
  66. package/lib/types/formatters/generic.d.ts.map +0 -1
  67. package/lib/types/formatters/index.d.ts +0 -4
  68. package/lib/types/formatters/index.d.ts.map +0 -1
  69. package/lib/types/formatters/nova.d.ts +0 -40
  70. package/lib/types/formatters/nova.d.ts.map +0 -1
  71. package/lib/types/index.d.ts +0 -5
  72. package/lib/types/index.d.ts.map +0 -1
  73. package/lib/types/json.d.ts +0 -4
  74. package/lib/types/json.d.ts.map +0 -1
  75. package/lib/types/resolver.d.ts +0 -2
  76. package/lib/types/resolver.d.ts.map +0 -1
  77. package/lib/types/stream.d.ts +0 -4
  78. package/lib/types/stream.d.ts.map +0 -1
  79. package/lib/types/validation.d.ts +0 -7
  80. package/lib/types/validation.d.ts.map +0 -1
package/lib/esm/async.js DELETED
@@ -1,123 +0,0 @@
1
- export async function* asyncMap(asyncIterable, callback) {
2
- let i = 0;
3
- for await (const val of asyncIterable)
4
- yield callback(val, i++);
5
- }
6
- export function oneAsyncIterator(value) {
7
- return {
8
- async *[Symbol.asyncIterator]() {
9
- yield value;
10
- }
11
- };
12
- }
13
- /**
14
- * Given a ReadableStream of server sent events, tran
15
- */
16
- export function transformSSEStream(stream, transform) {
17
- // on node and bun the ReadableStream is an async iterable
18
- return stream.pipeThrough(new TransformStream({
19
- transform(event, controller) {
20
- if (event.type === 'event' && event.data && event.data !== '[DONE]') {
21
- try {
22
- const result = transform(event.data) ?? '';
23
- controller.enqueue(result);
24
- }
25
- catch (err) {
26
- // double check for the last event which is not a JSON - at this time togetherai and mistralai returns the string [DONE]
27
- // do nothing - happens if data is not a JSON - the last event data is the [DONE] string
28
- }
29
- }
30
- }
31
- }));
32
- }
33
- export class EventStream {
34
- queue = [];
35
- pending;
36
- done = false;
37
- push(event) {
38
- if (this.done) {
39
- throw new Error('Cannot push to a closed stream');
40
- }
41
- if (this.pending) {
42
- this.pending.resolve({ value: event });
43
- this.pending = undefined;
44
- }
45
- else {
46
- this.queue.push(event);
47
- }
48
- }
49
- /**
50
- * Close the stream. This means the stream cannot be fed anymore.
51
- * But the consumer can still consume the remaining events.
52
- */
53
- close(value) {
54
- this.done = true;
55
- if (this.pending) {
56
- this.pending.resolve({ done: true, value });
57
- this.pending = undefined;
58
- }
59
- }
60
- [Symbol.asyncIterator]() {
61
- const self = this;
62
- return {
63
- next() {
64
- const next = self.queue.shift();
65
- if (next !== undefined) {
66
- return Promise.resolve({ value: next });
67
- }
68
- else if (self.done) {
69
- return Promise.resolve({ done: true, value: undefined });
70
- }
71
- else {
72
- return new Promise((resolve, reject) => {
73
- self.pending = { resolve, reject };
74
- });
75
- }
76
- },
77
- async return(value) {
78
- self.done = true;
79
- self.queue = [];
80
- if (value === undefined) {
81
- return { done: true, value: undefined };
82
- }
83
- const _value = await value;
84
- return { done: true, value: _value };
85
- }
86
- };
87
- }
88
- }
89
- /**
90
- * Transform an async iterator by applying a function to each value.
91
- * @param originalGenerator
92
- * @param transform
93
- **/
94
- export async function* transformAsyncIterator(originalGenerator, transform, initCallback) {
95
- if (initCallback) {
96
- yield initCallback();
97
- }
98
- for await (const value of originalGenerator) {
99
- yield transform(value);
100
- }
101
- }
102
- //TODO move in a test file
103
- // const max = 10; let cnt = 0;
104
- // function feedStream(stream: EventStream<string>) {
105
- // setTimeout(() => {
106
- // cnt++;
107
- // console.log('push: ', cnt, max);
108
- // stream.push('event ' + cnt);
109
- // if (cnt < max) {
110
- // console.log('next: ', cnt, max);
111
- // setTimeout(() => feedStream(stream), 1000);
112
- // } else {
113
- // console.log('end of stream');
114
- // stream.close();
115
- // }
116
- // }, 1000);
117
- // }
118
- // const stream = new EventStream<string>();
119
- // feedStream(stream);
120
- // for await (const chunk of stream) {
121
- // console.log('++++chunk:', chunk);
122
- // }
123
- //# sourceMappingURL=async.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/async.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export function getJSONSafetyNotice(schema) {
2
- return "The answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(schema, undefined, 2);
3
- }
4
- //# sourceMappingURL=commons.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../src/formatters/commons.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CAAC,MAAkB;IAClD,OAAO,qEAAqE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AACxH,CAAC"}
@@ -1,55 +0,0 @@
1
- import { PromptRole } from "@llumiverse/common";
2
- import { getJSONSafetyNotice } from "./commons.js";
3
- export function createTextPromptFormatter(labels = {
4
- user: "USER",
5
- system: "CONTEXT",
6
- assistant: "ASSISTANT",
7
- safety: "IMPORTANT",
8
- instruction: "INSTRUCTION"
9
- }) {
10
- return function genericTextPrompt(segments, schema) {
11
- const isChat = segments.find(m => m.role === PromptRole.assistant);
12
- const context = [];
13
- const content = [];
14
- const safety = [];
15
- for (const segment of segments) {
16
- switch (segment.role) {
17
- case PromptRole.user:
18
- if (isChat) {
19
- content.push(`${labels.user}: ${segment.content}`);
20
- }
21
- else {
22
- content.push(segment.content);
23
- }
24
- break;
25
- case PromptRole.assistant:
26
- content.push(`${labels.assistant}: ${segment.content}`);
27
- break;
28
- case PromptRole.system:
29
- context.push(segment.content);
30
- break;
31
- case PromptRole.safety:
32
- safety.push(segment.content);
33
- break;
34
- }
35
- }
36
- if (schema) {
37
- safety.push(getJSONSafetyNotice(schema));
38
- }
39
- const out = [];
40
- if (context.length > 0) {
41
- out.push(`${labels.system}: ${context.join('\n')}`);
42
- }
43
- if (content.length > 0) {
44
- const prefix = context.length > 0 && !isChat ? `${labels.instruction}: ` : '';
45
- out.push(prefix + content.join('\n'));
46
- }
47
- if (safety.length > 0) {
48
- out.push(`${labels.safety}: ${safety.join('\n')}`);
49
- }
50
- return out.join('\n');
51
- };
52
- }
53
- const formatTextPrompt = createTextPromptFormatter();
54
- export { formatTextPrompt };
55
- //# sourceMappingURL=generic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../src/formatters/generic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAUnD,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACvD,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,aAAa;CAC7B;IACG,OAAO,SAAS,iBAAiB,CAAC,QAAyB,EAAE,MAAmB;QAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,SAAS,CAAC,CAAC;QACnE,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,UAAU,CAAC,IAAI;oBAChB,IAAI,MAAM,EAAE,CAAC;wBACT,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBACvD,CAAC;yBAAM,CAAC;wBACJ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAClC,CAAC;oBACD,MAAM;gBACV,KAAK,UAAU,CAAC,SAAS;oBACrB,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBACxD,MAAM;gBACV,KAAK,UAAU,CAAC,MAAM;oBAClB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC9B,MAAM;gBACV,KAAK,UAAU,CAAC,MAAM;oBAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC7B,MAAM;YACd,CAAC;QACL,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAA;AACL,CAAC;AAED,MAAM,gBAAgB,GAAG,yBAAyB,EAAE,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -1,4 +0,0 @@
1
- export * from "./commons.js";
2
- export * from "./generic.js";
3
- export * from "./nova.js";
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formatters/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
@@ -1,96 +0,0 @@
1
- import { PromptRole } from "@llumiverse/common";
2
- import { readStreamAsBase64 } from "../stream.js";
3
- import { getJSONSafetyNotice } from "./commons.js";
4
- /**
5
- * A formatter used by Bedrock to format prompts for nova related models
6
- */
7
- export async function formatNovaPrompt(segments, schema) {
8
- const system = [];
9
- const safety = [];
10
- const messages = [];
11
- let negative = "";
12
- let mask = "";
13
- for (const segment of segments) {
14
- const parts = [];
15
- if (segment.files)
16
- for (const f of segment.files) {
17
- //TODO add video support
18
- if (!f.mime_type?.startsWith('image')) {
19
- continue;
20
- }
21
- const source = await f.getStream();
22
- const data = await readStreamAsBase64(source);
23
- const format = f.mime_type?.split('/')[1] || 'png';
24
- parts.push({
25
- image: {
26
- format: format,
27
- source: {
28
- bytes: data
29
- }
30
- }
31
- });
32
- }
33
- if (segment.content) {
34
- parts.push({
35
- text: segment.content
36
- });
37
- }
38
- if (segment.role === PromptRole.system) {
39
- system.push(segment.content);
40
- }
41
- else if (segment.role === PromptRole.safety) {
42
- safety.push(segment.content);
43
- }
44
- else if (messages.length > 0 && messages[messages.length - 1].role === segment.role) {
45
- //Maybe can remove for nova?
46
- //concatenate messages of the same role (Claude requires alternative user and assistant roles)
47
- messages[messages.length - 1].content.push(...parts);
48
- }
49
- else if (segment.role === PromptRole.negative) {
50
- negative = negative.concat(segment.content, ', ');
51
- }
52
- else if (segment.role === PromptRole.mask) {
53
- mask = mask.concat(segment.content, ' ');
54
- }
55
- else if (segment.role !== PromptRole.tool) {
56
- messages.push({
57
- role: segment.role,
58
- content: parts
59
- });
60
- }
61
- }
62
- if (schema) {
63
- safety.push("IMPORTANT: " + getJSONSafetyNotice(schema));
64
- }
65
- // messages must contains at least 1 item. If the prompt does not contains a user message (but only system messages)
66
- // we need to put the system messages in the messages array
67
- let systemMessage = system.join('\n').trim();
68
- if (messages.length === 0) {
69
- if (!systemMessage) {
70
- throw new Error('Prompt must contain at least one message');
71
- }
72
- messages.push({ content: [{ text: systemMessage }], role: 'user' });
73
- systemMessage = safety.join('\n');
74
- }
75
- else if (safety.length > 0) {
76
- systemMessage = systemMessage + '\n\nIMPORTANT: ' + safety.join('\n');
77
- }
78
- /*start Nova's message to make sure it answers properly in JSON
79
- if enabled, this requires to add the { to Nova's response*/
80
- if (schema) {
81
- messages.push({
82
- role: "assistant",
83
- content: [{
84
- text: "{"
85
- }]
86
- });
87
- }
88
- // put system messages first and safety last
89
- return {
90
- system: systemMessage ? [{ text: systemMessage }] : [{ text: "" }],
91
- messages: messages,
92
- negative: negative || undefined,
93
- mask: mask || undefined,
94
- };
95
- }
96
- //# sourceMappingURL=nova.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nova.js","sourceRoot":"","sources":["../../../src/formatters/nova.ts"],"names":[],"mappings":"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"}
package/lib/esm/index.js DELETED
@@ -1,5 +0,0 @@
1
- export * from "./Driver.js";
2
- export * from "./json.js";
3
- export * from "./stream.js";
4
- export * from "@llumiverse/common";
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
package/lib/esm/json.js DELETED
@@ -1,25 +0,0 @@
1
- import { jsonrepair } from 'jsonrepair';
2
- function extractJsonFromText(text) {
3
- const start = text.indexOf("{");
4
- const end = text.lastIndexOf("}");
5
- return text.substring(start, end + 1);
6
- }
7
- export function extractAndParseJSON(text) {
8
- return parseJSON(extractJsonFromText(text));
9
- }
10
- export function parseJSON(text) {
11
- text = text.trim();
12
- try {
13
- return JSON.parse(text);
14
- }
15
- catch (err) {
16
- // use a relaxed parser
17
- try {
18
- return JSON.parse(jsonrepair(text));
19
- }
20
- catch (err2) { // throw the original error
21
- throw err;
22
- }
23
- }
24
- }
25
- //# sourceMappingURL=json.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/json.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,SAAS,mBAAmB,CAAC,IAAY;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC5C,OAAO,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IAClC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,uBAAuB;QACvB,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,IAAS,EAAE,CAAC,CAAC,2BAA2B;YAC7C,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Get the property named by "name" of the given object
3
- * If an array is indexed using a string key then a map is done and an array with the content of the properties with that name are returned
4
- * Ex: docs.text => will return an array of text properties of the docs array
5
- * @param object the object
6
- * @param name the name of the property.
7
- * @returns the property value
8
- */
9
- function _prop(object, name) {
10
- if (object === undefined) {
11
- return undefined;
12
- }
13
- if (Array.isArray(object)) {
14
- const index = +name;
15
- if (isNaN(index)) {
16
- // map array to property
17
- return object.map(item => item[name]);
18
- }
19
- else {
20
- return object[index];
21
- }
22
- }
23
- else {
24
- return object[name];
25
- }
26
- }
27
- export function resolveField(object, path) {
28
- let p = object;
29
- if (!p)
30
- return p;
31
- if (!path.length)
32
- return p;
33
- const last = path.length - 1;
34
- for (let i = 0; i < last; i++) {
35
- p = _prop(p, path[i]);
36
- if (!p) {
37
- return undefined;
38
- }
39
- }
40
- return _prop(p, path[last]);
41
- }
42
- //# sourceMappingURL=resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,SAAS,KAAK,CAAC,MAAW,EAAE,IAAY;IACpC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC;QACpB,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACf,wBAAwB;YACxB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACJ,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;AAEL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAW,EAAE,IAAc;IACpD,IAAI,CAAC,GAAG,MAAa,CAAC;IACtB,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,CAAC,CAAC,EAAE,CAAC;YACL,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,CAAC"}
package/lib/esm/stream.js DELETED
@@ -1,25 +0,0 @@
1
- export async function readStreamAsBase64(stream) {
2
- const uint8Array = await readStreamAsUint8Array(stream);
3
- return Buffer.from(uint8Array).toString('base64');
4
- }
5
- export async function readStreamAsString(stream) {
6
- const uint8Array = await readStreamAsUint8Array(stream);
7
- return Buffer.from(uint8Array).toString();
8
- }
9
- export async function readStreamAsUint8Array(stream) {
10
- const chunks = [];
11
- let totalLength = 0;
12
- for await (const chunk of stream) {
13
- const uint8Chunk = chunk instanceof Uint8Array ? chunk : new Uint8Array(chunk);
14
- chunks.push(uint8Chunk);
15
- totalLength += uint8Chunk.length;
16
- }
17
- const combined = new Uint8Array(totalLength);
18
- let offset = 0;
19
- for (const chunk of chunks) {
20
- combined.set(chunk, offset);
21
- offset += chunk.length;
22
- }
23
- return combined;
24
- }
25
- //# sourceMappingURL=stream.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAsB;IAC3D,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAsB;IAC3D,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAsB;IAC/D,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/E,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,WAAW,IAAI,UAAU,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC"}
@@ -1,88 +0,0 @@
1
- import { Ajv } from 'ajv';
2
- import addFormats from 'ajv-formats';
3
- import { extractAndParseJSON } from "./json.js";
4
- import { resolveField } from './resolver.js';
5
- const ajv = new Ajv({
6
- coerceTypes: 'array',
7
- allowDate: true,
8
- strict: false,
9
- useDefaults: true,
10
- removeAdditional: "failing"
11
- });
12
- //use ts ignore to avoid error with ESM and ajv-formats
13
- // @ts-ignore This expression is not callable
14
- addFormats(ajv);
15
- export class ValidationError extends Error {
16
- code;
17
- constructor(code, message) {
18
- super(message);
19
- this.code = code;
20
- this.name = 'ValidationError';
21
- }
22
- }
23
- function parseCompletionAsJson(data) {
24
- let lastError;
25
- for (const part of data) {
26
- if (part.type === "text") {
27
- const text = part.value.trim();
28
- try {
29
- return extractAndParseJSON(text);
30
- }
31
- catch (error) {
32
- lastError = new ValidationError("json_error", error.message);
33
- }
34
- }
35
- }
36
- if (!lastError) {
37
- lastError = new ValidationError("json_error", "No JSON compatible response found in completion result");
38
- }
39
- throw lastError;
40
- }
41
- export function validateResult(data, schema) {
42
- let json;
43
- if (Array.isArray(data)) {
44
- const jsonResults = data.filter(r => r.type === "json");
45
- if (jsonResults.length > 0) {
46
- json = jsonResults[0].value;
47
- }
48
- else {
49
- try {
50
- json = parseCompletionAsJson(data);
51
- }
52
- catch (error) {
53
- throw new ValidationError("json_error", error.message);
54
- }
55
- }
56
- }
57
- else {
58
- throw new Error("Data to validate must be an array");
59
- }
60
- const validate = ajv.compile(schema);
61
- const valid = validate(json);
62
- if (!valid && validate.errors) {
63
- let errors = [];
64
- for (const e of validate.errors) {
65
- const path = e.instancePath.split("/").slice(1);
66
- const value = resolveField(json, path);
67
- const schemaPath = e.schemaPath.split("/").slice(1);
68
- const schemaFieldFormat = resolveField(schema, schemaPath);
69
- const schemaField = resolveField(schema, schemaPath.slice(0, -3));
70
- //ignore date if empty or null
71
- if (!value
72
- && ["date", "date-time"].includes(schemaFieldFormat)
73
- && !schemaField?.required?.includes(path[path.length - 1])) {
74
- continue;
75
- }
76
- else {
77
- errors.push(e);
78
- }
79
- }
80
- //console.log("Errors", errors)
81
- if (errors.length > 0) {
82
- const errorsMessage = errors.map(e => `${e.instancePath}: ${e.message}\n${JSON.stringify(e.params)}`).join(",\n\n");
83
- throw new ValidationError("validation_error", errorsMessage);
84
- }
85
- }
86
- return [{ type: "json", value: json }];
87
- }
88
- //# sourceMappingURL=validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { CompletionStream, DriverOptions, ExecutionOptions, ExecutionResponse } from "@llumiverse/common";
2
- import { AbstractDriver } from "./Driver.js";
3
- export declare class DefaultCompletionStream<PromptT = any> implements CompletionStream<PromptT> {
4
- driver: AbstractDriver<DriverOptions, PromptT>;
5
- prompt: PromptT;
6
- options: ExecutionOptions;
7
- chunks: number;
8
- completion: ExecutionResponse<PromptT> | undefined;
9
- constructor(driver: AbstractDriver<DriverOptions, PromptT>, prompt: PromptT, options: ExecutionOptions);
10
- [Symbol.asyncIterator](): AsyncGenerator<string, void, unknown>;
11
- }
12
- export declare class FallbackCompletionStream<PromptT = any> implements CompletionStream<PromptT> {
13
- driver: AbstractDriver<DriverOptions, PromptT>;
14
- prompt: PromptT;
15
- options: ExecutionOptions;
16
- completion: ExecutionResponse<PromptT> | undefined;
17
- constructor(driver: AbstractDriver<DriverOptions, PromptT>, prompt: PromptT, options: ExecutionOptions);
18
- [Symbol.asyncIterator](): AsyncGenerator<string, void, unknown>;
19
- }
20
- //# sourceMappingURL=CompletionStream.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CompletionStream.d.ts","sourceRoot":"","sources":["../../src/CompletionStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAuB,MAAM,oBAAoB,CAAC;AAC/H,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,qBAAa,uBAAuB,CAAC,OAAO,GAAG,GAAG,CAAE,YAAW,gBAAgB,CAAC,OAAO,CAAC;IAKjE,MAAM,EAAE,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC;IACtD,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,gBAAgB;IALpC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;gBAEhC,MAAM,EAAE,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,EACtD,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,gBAAgB;IAI7B,CAAC,MAAM,CAAC,aAAa,CAAC;CA6HhC;AAED,qBAAa,wBAAwB,CAAC,OAAO,GAAG,GAAG,CAAE,YAAW,gBAAgB,CAAC,OAAO,CAAC;IAIlE,MAAM,EAAE,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC;IACtD,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,gBAAgB;IAJpC,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;gBAEhC,MAAM,EAAE,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,EACtD,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,gBAAgB;IAG7B,CAAC,MAAM,CAAC,aAAa,CAAC;CA8BhC"}
@@ -1,75 +0,0 @@
1
- /**
2
- * Classes to handle the execution of an interaction in an execution environment.
3
- * Base abstract class is then implemented by each environment
4
- * (eg: OpenAI, HuggingFace, etc.)
5
- */
6
- import { AIModel, Completion, CompletionChunkObject, CompletionStream, DataSource, DriverOptions, EmbeddingsOptions, EmbeddingsResult, ExecutionOptions, ExecutionResponse, Logger, ModelSearchPayload, PromptOptions, PromptSegment, TrainingJob, TrainingOptions, TrainingPromptOptions } from "@llumiverse/common";
7
- export declare function createLogger(logger: Logger | "console" | undefined): Logger;
8
- export interface Driver<PromptT = unknown> {
9
- /**
10
- *
11
- * @param segments
12
- * @param completion
13
- * @param model the model to train
14
- */
15
- createTrainingPrompt(options: TrainingPromptOptions): Promise<string>;
16
- createPrompt(segments: PromptSegment[], opts: ExecutionOptions): Promise<PromptT>;
17
- execute(segments: PromptSegment[], options: ExecutionOptions): Promise<ExecutionResponse<PromptT>>;
18
- stream(segments: PromptSegment[], options: ExecutionOptions): Promise<CompletionStream<PromptT>>;
19
- startTraining(dataset: DataSource, options: TrainingOptions): Promise<TrainingJob>;
20
- cancelTraining(jobId: string): Promise<TrainingJob>;
21
- getTrainingJob(jobId: string): Promise<TrainingJob>;
22
- listModels(params?: ModelSearchPayload): Promise<AIModel[]>;
23
- listTrainableModels(): Promise<AIModel[]>;
24
- validateConnection(): Promise<boolean>;
25
- generateEmbeddings(options: EmbeddingsOptions): Promise<EmbeddingsResult>;
26
- }
27
- /**
28
- * To be implemented by each driver
29
- */
30
- export declare abstract class AbstractDriver<OptionsT extends DriverOptions = DriverOptions, PromptT = unknown> implements Driver<PromptT> {
31
- options: OptionsT;
32
- logger: Logger;
33
- abstract provider: string;
34
- constructor(opts: OptionsT);
35
- createTrainingPrompt(options: TrainingPromptOptions): Promise<string>;
36
- startTraining(_dataset: DataSource, _options: TrainingOptions): Promise<TrainingJob>;
37
- cancelTraining(_jobId: string): Promise<TrainingJob>;
38
- getTrainingJob(_jobId: string): Promise<TrainingJob>;
39
- validateResult(result: Completion, options: ExecutionOptions): void;
40
- execute(segments: PromptSegment[], options: ExecutionOptions): Promise<ExecutionResponse<PromptT>>;
41
- _execute(prompt: PromptT, options: ExecutionOptions): Promise<ExecutionResponse<PromptT>>;
42
- protected isImageModel(_model: string): boolean;
43
- stream(segments: PromptSegment[], options: ExecutionOptions): Promise<CompletionStream<PromptT>>;
44
- /**
45
- * Override this method to provide a custom prompt formatter
46
- * @param segments
47
- * @param options
48
- * @returns
49
- */
50
- protected formatPrompt(segments: PromptSegment[], opts: PromptOptions): Promise<PromptT>;
51
- createPrompt(segments: PromptSegment[], opts: PromptOptions): Promise<PromptT>;
52
- /**
53
- * Must be overridden if the implementation cannot stream.
54
- * Some implementation may be able to stream for certain models but not for others.
55
- * You must overwrite and return false if the current model doesn't support streaming.
56
- * The default implementation returns true, so it is assumed that the streaming can be done.
57
- * If this method returns false then the streaming execution will fallback on a blocking execution streaming the entire response as a single event.
58
- * @param options the execution options containing the target model name.
59
- * @returns true if the execution can be streamed false otherwise.
60
- */
61
- protected canStream(_options: ExecutionOptions): Promise<boolean>;
62
- /**
63
- * Get a list of models that can be trained.
64
- * The default is to return an empty array
65
- * @returns
66
- */
67
- listTrainableModels(): Promise<AIModel[]>;
68
- abstract requestTextCompletion(prompt: PromptT, options: ExecutionOptions): Promise<Completion>;
69
- abstract requestTextCompletionStream(prompt: PromptT, options: ExecutionOptions): Promise<AsyncIterable<CompletionChunkObject>>;
70
- requestImageGeneration(_prompt: PromptT, _options: ExecutionOptions): Promise<Completion>;
71
- abstract listModels(params?: ModelSearchPayload): Promise<AIModel[]>;
72
- abstract validateConnection(): Promise<boolean>;
73
- abstract generateEmbeddings(options: EmbeddingsOptions): Promise<EmbeddingsResult>;
74
- }
75
- //# sourceMappingURL=Driver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Driver.d.ts","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":"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"}