@builder.io/ai-utils 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.
- package/README.md +3 -0
- package/dist/complete-json.d.ts +4 -0
- package/dist/complete-json.js +52 -0
- package/dist/completion.d.ts +64 -0
- package/dist/completion.js +1 -0
- package/dist/events.d.ts +190 -0
- package/dist/events.js +1 -0
- package/dist/fetch.d.ts +1 -0
- package/dist/fetch.js +54 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -0
- package/dist/messages.d.ts +74 -0
- package/dist/messages.js +1 -0
- package/dist/settings.d.ts +16 -0
- package/dist/settings.js +1 -0
- package/dist/thread.d.ts +16 -0
- package/dist/thread.js +1 -0
- package/package.json +19 -0
package/README.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Complete a partial JSON string with the necessary closing brackets and braces
|
|
3
|
+
*/
|
|
4
|
+
export function completeJson(input) {
|
|
5
|
+
const stack = [];
|
|
6
|
+
let isInString = false;
|
|
7
|
+
let lastQuote = "";
|
|
8
|
+
// Scan the string to determine the necessary closures
|
|
9
|
+
for (const char of input) {
|
|
10
|
+
switch (char) {
|
|
11
|
+
case '"':
|
|
12
|
+
case "'":
|
|
13
|
+
if (isInString && char === lastQuote) {
|
|
14
|
+
// Check for escaping
|
|
15
|
+
if (input.charAt(input.indexOf(char) - 1) !== "\\") {
|
|
16
|
+
isInString = false;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
else if (!isInString) {
|
|
20
|
+
isInString = true;
|
|
21
|
+
lastQuote = char;
|
|
22
|
+
}
|
|
23
|
+
break;
|
|
24
|
+
case "{":
|
|
25
|
+
case "[":
|
|
26
|
+
if (!isInString) {
|
|
27
|
+
stack.push(char === "{" ? "}" : "]");
|
|
28
|
+
}
|
|
29
|
+
break;
|
|
30
|
+
case "}":
|
|
31
|
+
case "]":
|
|
32
|
+
if (!isInString) {
|
|
33
|
+
if (stack.length > 0 && stack[stack.length - 1] === char) {
|
|
34
|
+
stack.pop();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
break;
|
|
38
|
+
default:
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Close any unclosed string
|
|
43
|
+
if (isInString) {
|
|
44
|
+
input += lastQuote;
|
|
45
|
+
}
|
|
46
|
+
// Close all remaining open brackets and braces
|
|
47
|
+
while (stack.length > 0) {
|
|
48
|
+
const charToClose = stack.pop();
|
|
49
|
+
input += charToClose;
|
|
50
|
+
}
|
|
51
|
+
return input;
|
|
52
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { BuilderElement, Component } from "@builder.io/sdk";
|
|
2
|
+
import type { MessageParam } from "./messages";
|
|
3
|
+
export type { BuilderElement, Component };
|
|
4
|
+
export interface CompletionOptions {
|
|
5
|
+
/**
|
|
6
|
+
* How this assistant is being used. For example, "content-editor"
|
|
7
|
+
* is used when the assistant is being used in the Builder.io content editor.
|
|
8
|
+
*/
|
|
9
|
+
assistantType?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Tools that the assistant can use to interact with the builder app,
|
|
12
|
+
* such as "createModel".
|
|
13
|
+
*/
|
|
14
|
+
tools?: ToolName[];
|
|
15
|
+
/**
|
|
16
|
+
* The unique LOCAL identifier of the thread to submit the user message to.
|
|
17
|
+
* This is used to identify the thread with our own id (openai assistant id is different)
|
|
18
|
+
*/
|
|
19
|
+
id: string;
|
|
20
|
+
/**
|
|
21
|
+
* The unique OPENAI assistant id of the thread to submit the user message to.
|
|
22
|
+
* If the assistantThreadId is not provided, a new thread will be created.
|
|
23
|
+
*/
|
|
24
|
+
assistantThreadId?: string;
|
|
25
|
+
/**
|
|
26
|
+
* The user message to submit to the assistant.
|
|
27
|
+
*/
|
|
28
|
+
messages: MessageParam[];
|
|
29
|
+
/**
|
|
30
|
+
* Which platform (framework) the the user has choosen to get help with.
|
|
31
|
+
*/
|
|
32
|
+
platformId?: string;
|
|
33
|
+
/**
|
|
34
|
+
* The user id of the user sending the message.
|
|
35
|
+
* This is used to track the user's progress in the conversation.
|
|
36
|
+
* User id is stored in localStorage for this domain, its not the builder user id.
|
|
37
|
+
*/
|
|
38
|
+
userId: string;
|
|
39
|
+
/**
|
|
40
|
+
* Builder custom components.
|
|
41
|
+
*/
|
|
42
|
+
builderComponents?: Component[];
|
|
43
|
+
/**
|
|
44
|
+
* Builder design tokens.
|
|
45
|
+
*/
|
|
46
|
+
builderDesignTokens?: Record<string, string>;
|
|
47
|
+
/**
|
|
48
|
+
* Builder element.
|
|
49
|
+
*/
|
|
50
|
+
builderElement?: BuilderElement;
|
|
51
|
+
/**
|
|
52
|
+
* Selected ids in the builder.
|
|
53
|
+
*/
|
|
54
|
+
builderSelectedIds?: string[];
|
|
55
|
+
/**
|
|
56
|
+
* Builder space id.
|
|
57
|
+
*/
|
|
58
|
+
builderSpaceId?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Additional console logs
|
|
61
|
+
*/
|
|
62
|
+
debug?: boolean;
|
|
63
|
+
}
|
|
64
|
+
export type ToolName = "editContent" | "editModel" | "createModel";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/events.d.ts
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import type { BuilderElement, Component } from "@builder.io/sdk";
|
|
2
|
+
import type { Thread } from "./thread";
|
|
3
|
+
import type { AssistantMessage } from "./messages";
|
|
4
|
+
export type BuilderAssistantEventHandler = (ev: BuilderAssistantEvent) => void;
|
|
5
|
+
export type BuilderAssistantEvent = AppCloseEvent | AppMessagesClickEvent | AppMessagesGenerationEvent | AppPromptFocusEvent | AppPromptTextEvent | AppReadyEvent | AppSettingsResetEvent | AppSettingsSetEvent | AppThreadNewEvent | BuiderEditorStateEvent | ContentCreateEvent | ContentUpdateEvent | ContentCompleteEvent | ModelCreateEvent | ModelUpdateEvent | ResultEvent | ThreadCreatedEvent | ThreadMessageDeltaEvent | ThreadMessageCompletedEvent | ThreadMessageFeedbackEvent | ThreadRunRequiresActionEvent | ThreadRunStepCreatedEvent | ThreadRunStepDeltaEvent;
|
|
6
|
+
export interface AppCloseEvent {
|
|
7
|
+
type: "assistant.app.close";
|
|
8
|
+
}
|
|
9
|
+
export interface AppMessagesClickEvent {
|
|
10
|
+
type: "assistant.app.messages.click";
|
|
11
|
+
}
|
|
12
|
+
export interface AppMessagesGenerationEvent {
|
|
13
|
+
type: "assistant.app.messages.generation";
|
|
14
|
+
data: {
|
|
15
|
+
state: GenerationState;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* idle - no messages are being generated or queued to be generated
|
|
20
|
+
* queued - messages have been sent, but no response has been received yet
|
|
21
|
+
* generating - messages are actively being generated
|
|
22
|
+
*/
|
|
23
|
+
export type GenerationState = "idle" | "queued" | "generating";
|
|
24
|
+
export interface AppPromptFocusEvent {
|
|
25
|
+
type: "assistant.app.prompt.focus";
|
|
26
|
+
}
|
|
27
|
+
export interface AppPromptTextEvent {
|
|
28
|
+
type: "assistant.app.prompt.text";
|
|
29
|
+
data: {
|
|
30
|
+
text: string;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export interface AppReadyEvent {
|
|
34
|
+
type: "assistant.app.ready";
|
|
35
|
+
}
|
|
36
|
+
export interface AppSettingsResetEvent {
|
|
37
|
+
type: "assistant.app.settings.reset";
|
|
38
|
+
}
|
|
39
|
+
export interface AppSettingsSetEvent<T = any> {
|
|
40
|
+
type: "assistant.app.settings.set";
|
|
41
|
+
data: DeepPartial<T>;
|
|
42
|
+
}
|
|
43
|
+
export interface AppThreadNewEvent {
|
|
44
|
+
type: "assistant.app.thread.new";
|
|
45
|
+
}
|
|
46
|
+
export interface BuiderEditorStateEvent extends AwaitResultEvent {
|
|
47
|
+
type: "assistant.editor.state";
|
|
48
|
+
}
|
|
49
|
+
export interface AwaitResultEvent {
|
|
50
|
+
resolveId?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface ResultEvent {
|
|
53
|
+
type: "assistant.result";
|
|
54
|
+
resolveId: string;
|
|
55
|
+
data: any;
|
|
56
|
+
}
|
|
57
|
+
export interface BuiderEditorState {
|
|
58
|
+
components?: Component[];
|
|
59
|
+
designTokens?: Record<string, string>;
|
|
60
|
+
element?: BuilderElement | undefined;
|
|
61
|
+
selectedIds?: string[];
|
|
62
|
+
spaceId?: string | undefined;
|
|
63
|
+
}
|
|
64
|
+
export interface ContentCreateEvent {
|
|
65
|
+
type: "assistant.content.create";
|
|
66
|
+
data: ContentCreatePatch;
|
|
67
|
+
}
|
|
68
|
+
export interface ContentCreatePatch {
|
|
69
|
+
parentId: string;
|
|
70
|
+
insertBeforeId: string;
|
|
71
|
+
element: BuilderElement;
|
|
72
|
+
}
|
|
73
|
+
export interface ContentUpdateEvent {
|
|
74
|
+
type: "assistant.content.update";
|
|
75
|
+
data: ContentUpdatePatch;
|
|
76
|
+
}
|
|
77
|
+
export type ContentUpdatePatch = ContentPropsUpdatePatch | ContentStyleUpdatePatch | ContentTextUpdatePatch;
|
|
78
|
+
export interface ContentPropsUpdatePatch {
|
|
79
|
+
type: "props";
|
|
80
|
+
id: string;
|
|
81
|
+
value: Record<string, any>;
|
|
82
|
+
}
|
|
83
|
+
export interface ContentStyleUpdatePatch {
|
|
84
|
+
type: "style";
|
|
85
|
+
id: string;
|
|
86
|
+
value: Record<string, any>;
|
|
87
|
+
}
|
|
88
|
+
export interface ContentTextUpdatePatch {
|
|
89
|
+
type: "content";
|
|
90
|
+
id: string;
|
|
91
|
+
value: string;
|
|
92
|
+
}
|
|
93
|
+
export interface ContentCompleteEvent {
|
|
94
|
+
type: "assistant.content.complete";
|
|
95
|
+
data: ContentComplete;
|
|
96
|
+
}
|
|
97
|
+
export interface ContentComplete {
|
|
98
|
+
threadId: string;
|
|
99
|
+
message: AssistantMessage;
|
|
100
|
+
}
|
|
101
|
+
export interface ModelCreateEvent {
|
|
102
|
+
type: "assistant.model.create";
|
|
103
|
+
data: DeepPartial<ModelInfo>;
|
|
104
|
+
}
|
|
105
|
+
export interface ModelUpdateEvent {
|
|
106
|
+
type: "assistant.model.update";
|
|
107
|
+
data: ModelUpdate;
|
|
108
|
+
}
|
|
109
|
+
export interface ModelUpdate {
|
|
110
|
+
patches: ModelPatch[];
|
|
111
|
+
}
|
|
112
|
+
export type ModelInfo = {
|
|
113
|
+
name: string;
|
|
114
|
+
description: string;
|
|
115
|
+
type: string;
|
|
116
|
+
fields: {
|
|
117
|
+
name: string;
|
|
118
|
+
type: string;
|
|
119
|
+
}[];
|
|
120
|
+
};
|
|
121
|
+
export type ModelPatch = {
|
|
122
|
+
op: "add" | "remove" | "replace";
|
|
123
|
+
path: string;
|
|
124
|
+
value?: any;
|
|
125
|
+
};
|
|
126
|
+
export interface ThreadMessageFeedbackEvent {
|
|
127
|
+
type: "assistant.thread.message.feedback";
|
|
128
|
+
data: ThreadMessageFeedback;
|
|
129
|
+
}
|
|
130
|
+
export interface ThreadMessageFeedback {
|
|
131
|
+
/**
|
|
132
|
+
* Same as "id" of message
|
|
133
|
+
*/
|
|
134
|
+
messageId: string;
|
|
135
|
+
userId: string;
|
|
136
|
+
feedbackText: string;
|
|
137
|
+
thread: Thread;
|
|
138
|
+
platformId: string;
|
|
139
|
+
sentiment?: "positive" | "negative";
|
|
140
|
+
}
|
|
141
|
+
export interface ThreadCreatedEvent {
|
|
142
|
+
type: "assistant.thread.created";
|
|
143
|
+
data: ThreadCreated;
|
|
144
|
+
}
|
|
145
|
+
export interface ThreadCreated {
|
|
146
|
+
platformId: string;
|
|
147
|
+
threadId: string;
|
|
148
|
+
vectorStoreId: string;
|
|
149
|
+
}
|
|
150
|
+
export interface ThreadMessageDeltaEvent {
|
|
151
|
+
type: "assistant.thread.message.delta";
|
|
152
|
+
data: ThreadMessageDelta;
|
|
153
|
+
}
|
|
154
|
+
export interface ThreadMessageDelta {
|
|
155
|
+
text: string;
|
|
156
|
+
}
|
|
157
|
+
export interface ThreadMessageCompletedEvent {
|
|
158
|
+
type: "assistant.thread.message.completed";
|
|
159
|
+
data: ThreadMessageCompleted;
|
|
160
|
+
}
|
|
161
|
+
export interface ThreadMessageCompleted {
|
|
162
|
+
platformId: string;
|
|
163
|
+
threadId: string;
|
|
164
|
+
message: AssistantMessage;
|
|
165
|
+
}
|
|
166
|
+
export interface ThreadRunRequiresActionEvent {
|
|
167
|
+
type: "assistant.thread.run.requires_action";
|
|
168
|
+
data: ThreadRunRequiredAction;
|
|
169
|
+
}
|
|
170
|
+
export interface ThreadRunRequiredAction {
|
|
171
|
+
platformId: string;
|
|
172
|
+
threadId: string;
|
|
173
|
+
action: {
|
|
174
|
+
name: string;
|
|
175
|
+
arguments: string;
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
export interface ThreadRunStepDeltaEvent {
|
|
179
|
+
type: "assistant.thread.run.step.delta";
|
|
180
|
+
data: ThreadMessageStepDelta;
|
|
181
|
+
}
|
|
182
|
+
export interface ThreadMessageStepDelta {
|
|
183
|
+
delta: any;
|
|
184
|
+
}
|
|
185
|
+
export interface ThreadRunStepCreatedEvent {
|
|
186
|
+
type: "assistant.thread.run.step.created";
|
|
187
|
+
}
|
|
188
|
+
export type DeepPartial<T> = T extends object ? {
|
|
189
|
+
[P in keyof T]?: DeepPartial<T[P]>;
|
|
190
|
+
} : T;
|
package/dist/events.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/fetch.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function fetchJsonl<T>(input: string | URL, init: RequestInit, onData: (ev: T) => void): Promise<Response>;
|
package/dist/fetch.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export async function fetchJsonl(input, init, onData) {
|
|
2
|
+
return new Promise(async (resolve, reject) => {
|
|
3
|
+
try {
|
|
4
|
+
init = {
|
|
5
|
+
...init,
|
|
6
|
+
headers: {
|
|
7
|
+
accept: "application/jsonl",
|
|
8
|
+
"content-type": "application/json",
|
|
9
|
+
...init.headers,
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
const rsp = await fetch(input, init);
|
|
13
|
+
if (!rsp.ok) {
|
|
14
|
+
reject(new Error(`${input}, status: ${rsp.status}`));
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (!rsp.body) {
|
|
18
|
+
reject(new Error(`${input}, missing body`));
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const reader = rsp.body.getReader();
|
|
22
|
+
const decoder = new TextDecoder();
|
|
23
|
+
let data = "";
|
|
24
|
+
const processStream = async () => {
|
|
25
|
+
const { done, value } = await reader.read();
|
|
26
|
+
data += decoder.decode(value, { stream: !done });
|
|
27
|
+
if (!done) {
|
|
28
|
+
let lines = data.split("\n");
|
|
29
|
+
if (!done) {
|
|
30
|
+
data = lines.pop() || "";
|
|
31
|
+
}
|
|
32
|
+
for (let line of lines) {
|
|
33
|
+
if (line) {
|
|
34
|
+
try {
|
|
35
|
+
onData(JSON.parse(line));
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
console.error(`Failed to parse JSONL: ${line}`);
|
|
39
|
+
reject(e);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
await processStream();
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
await processStream();
|
|
48
|
+
resolve(rsp);
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
reject(e);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message param does not know the id of the message.
|
|
3
|
+
* This is an input message.
|
|
4
|
+
*/
|
|
5
|
+
export type MessageParam = SystemMessageParam | UserMessageParam | AssistantMessageParam;
|
|
6
|
+
export interface SystemMessageParam {
|
|
7
|
+
/**
|
|
8
|
+
* The contents of the system message.
|
|
9
|
+
*/
|
|
10
|
+
content: string;
|
|
11
|
+
/**
|
|
12
|
+
* The role of the messages author, in this case `system`.
|
|
13
|
+
*/
|
|
14
|
+
role: "system";
|
|
15
|
+
id?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface UserMessageParam {
|
|
18
|
+
/**
|
|
19
|
+
* The contents of the user message.
|
|
20
|
+
*/
|
|
21
|
+
content: string;
|
|
22
|
+
/**
|
|
23
|
+
* The role of the messages author, in this case `user`.
|
|
24
|
+
*/
|
|
25
|
+
role: "user";
|
|
26
|
+
id?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface AssistantMessageParam {
|
|
29
|
+
/**
|
|
30
|
+
* The contents of the assistant message.
|
|
31
|
+
*/
|
|
32
|
+
content?: string;
|
|
33
|
+
/**
|
|
34
|
+
* The role of the messages author, in this case `assistant`.
|
|
35
|
+
*/
|
|
36
|
+
role: "assistant";
|
|
37
|
+
/**
|
|
38
|
+
* The function call name and arguments
|
|
39
|
+
*/
|
|
40
|
+
action?: {
|
|
41
|
+
/**
|
|
42
|
+
* The specific function name
|
|
43
|
+
*/
|
|
44
|
+
name: string;
|
|
45
|
+
/** This is arbitrary JSON */
|
|
46
|
+
arguments: any;
|
|
47
|
+
};
|
|
48
|
+
id?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface SystemMessage extends SystemMessageParam {
|
|
51
|
+
id: string;
|
|
52
|
+
}
|
|
53
|
+
export interface UserMessage extends UserMessageParam {
|
|
54
|
+
id: string;
|
|
55
|
+
}
|
|
56
|
+
export interface AssistantMessage extends AssistantMessageParam {
|
|
57
|
+
id: string;
|
|
58
|
+
}
|
|
59
|
+
export interface AssistantActionMessage {
|
|
60
|
+
/**
|
|
61
|
+
* The role of the messages author, in this case `assistant`.
|
|
62
|
+
*/
|
|
63
|
+
role: "assistant";
|
|
64
|
+
id: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Message DOES know the id of the message.
|
|
68
|
+
* This message is after an id has been assigned
|
|
69
|
+
* and is the output message.
|
|
70
|
+
*/
|
|
71
|
+
export type Message = SystemMessage | UserMessage | AssistantMessage;
|
|
72
|
+
export type GeneratingMessage = null | (Partial<AssistantActionMessage | AssistantMessage> & {
|
|
73
|
+
generating?: boolean;
|
|
74
|
+
});
|
package/dist/messages.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface AssistantSettings {
|
|
2
|
+
assistantType?: string;
|
|
3
|
+
hideFrameworkPicker?: boolean;
|
|
4
|
+
messagePlaceholder: string;
|
|
5
|
+
hideHeader?: boolean;
|
|
6
|
+
headingText: string;
|
|
7
|
+
cssOverrides?: string;
|
|
8
|
+
showCloseButton?: boolean;
|
|
9
|
+
showSparklesInInputBar?: boolean;
|
|
10
|
+
suggestedItems: {
|
|
11
|
+
text: string;
|
|
12
|
+
prompt: string;
|
|
13
|
+
icon: any;
|
|
14
|
+
iconColor?: string;
|
|
15
|
+
}[];
|
|
16
|
+
}
|
package/dist/settings.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/thread.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Message } from "./messages";
|
|
2
|
+
export interface Thread {
|
|
3
|
+
/**
|
|
4
|
+
* The unique LOCAL identifier of the thread.
|
|
5
|
+
*/
|
|
6
|
+
id: string;
|
|
7
|
+
/**
|
|
8
|
+
* The unique OPENAI identifier of the thread. This is only
|
|
9
|
+
* set after openai creates the thread.
|
|
10
|
+
*/
|
|
11
|
+
threadId?: string;
|
|
12
|
+
platformId?: string;
|
|
13
|
+
title?: string;
|
|
14
|
+
created: number;
|
|
15
|
+
messages: Message[];
|
|
16
|
+
}
|
package/dist/thread.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@builder.io/ai-utils",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Builder.io AI utils",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"import": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist"
|
|
15
|
+
],
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@builder.io/sdk": "^2.2.4"
|
|
18
|
+
}
|
|
19
|
+
}
|