@yourgpt/llm-sdk 2.1.4-alpha.1 → 2.1.4-alpha.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.
- package/dist/adapters/index.d.mts +4 -2
- package/dist/adapters/index.d.ts +4 -2
- package/dist/base-5n-UuPfS.d.mts +768 -0
- package/dist/base-Di31iy_8.d.ts +768 -0
- package/dist/fallback/index.d.mts +96 -0
- package/dist/fallback/index.d.ts +96 -0
- package/dist/fallback/index.js +284 -0
- package/dist/fallback/index.mjs +280 -0
- package/dist/index.d.mts +62 -3
- package/dist/index.d.ts +62 -3
- package/dist/index.js +117 -2
- package/dist/index.mjs +116 -3
- package/dist/providers/anthropic/index.d.mts +3 -1
- package/dist/providers/anthropic/index.d.ts +3 -1
- package/dist/providers/azure/index.d.mts +3 -1
- package/dist/providers/azure/index.d.ts +3 -1
- package/dist/providers/google/index.d.mts +3 -1
- package/dist/providers/google/index.d.ts +3 -1
- package/dist/providers/ollama/index.d.mts +4 -2
- package/dist/providers/ollama/index.d.ts +4 -2
- package/dist/providers/openai/index.d.mts +3 -1
- package/dist/providers/openai/index.d.ts +3 -1
- package/dist/providers/openrouter/index.d.mts +3 -1
- package/dist/providers/openrouter/index.d.ts +3 -1
- package/dist/providers/xai/index.d.mts +3 -1
- package/dist/providers/xai/index.d.ts +3 -1
- package/dist/types-BQl1suAv.d.mts +212 -0
- package/dist/types-C0vLXzuw.d.ts +355 -0
- package/dist/types-CNL8ZRne.d.ts +212 -0
- package/dist/types-CR8mi9I0.d.mts +417 -0
- package/dist/types-CR8mi9I0.d.ts +417 -0
- package/dist/types-VDgiUvH2.d.mts +355 -0
- package/dist/yourgpt/index.d.mts +77 -0
- package/dist/yourgpt/index.d.ts +77 -0
- package/dist/yourgpt/index.js +167 -0
- package/dist/yourgpt/index.mjs +164 -0
- package/package.json +12 -1
- package/dist/adapters/index.js.map +0 -1
- package/dist/adapters/index.mjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/providers/anthropic/index.js.map +0 -1
- package/dist/providers/anthropic/index.mjs.map +0 -1
- package/dist/providers/azure/index.js.map +0 -1
- package/dist/providers/azure/index.mjs.map +0 -1
- package/dist/providers/google/index.js.map +0 -1
- package/dist/providers/google/index.mjs.map +0 -1
- package/dist/providers/ollama/index.js.map +0 -1
- package/dist/providers/ollama/index.mjs.map +0 -1
- package/dist/providers/openai/index.js.map +0 -1
- package/dist/providers/openai/index.mjs.map +0 -1
- package/dist/providers/openrouter/index.js.map +0 -1
- package/dist/providers/openrouter/index.mjs.map +0 -1
- package/dist/providers/xai/index.js.map +0 -1
- package/dist/providers/xai/index.mjs.map +0 -1
- package/dist/types-COAOEe_y.d.mts +0 -1460
- package/dist/types-COAOEe_y.d.ts +0 -1460
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
// src/yourgpt/index.ts
|
|
2
|
+
function createYourGPT(config) {
|
|
3
|
+
const base = (config.endpoint ?? "https://api.yourgpt.ai").replace(/\/$/, "");
|
|
4
|
+
const headers = {
|
|
5
|
+
"Content-Type": "application/json",
|
|
6
|
+
"api-key": config.apiKey
|
|
7
|
+
};
|
|
8
|
+
const onError = config.onError;
|
|
9
|
+
async function call(path, body = {}) {
|
|
10
|
+
const payload = { widget_uid: config.widgetUid, ...body };
|
|
11
|
+
const res = await fetch(`${base}${path}`, {
|
|
12
|
+
method: "POST",
|
|
13
|
+
headers,
|
|
14
|
+
body: JSON.stringify(payload)
|
|
15
|
+
});
|
|
16
|
+
if (!res.ok) {
|
|
17
|
+
const text = await res.text().catch(() => res.statusText);
|
|
18
|
+
throw new Error(`YourGPT API [${res.status}] ${path}: ${text}`);
|
|
19
|
+
}
|
|
20
|
+
return res.json();
|
|
21
|
+
}
|
|
22
|
+
async function safe(operation, params, fn) {
|
|
23
|
+
try {
|
|
24
|
+
return await fn();
|
|
25
|
+
} catch (err) {
|
|
26
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
27
|
+
if (onError) {
|
|
28
|
+
onError(error, operation, params);
|
|
29
|
+
}
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
async createSession(data = {}) {
|
|
35
|
+
return safe("createSession", { title: data.title }, async () => {
|
|
36
|
+
const raw = await call(
|
|
37
|
+
"/chatbot/v1/copilot-sdk/createSession",
|
|
38
|
+
data
|
|
39
|
+
);
|
|
40
|
+
const d = raw.data ?? raw;
|
|
41
|
+
return {
|
|
42
|
+
id: String(d.session_uid ?? d.id),
|
|
43
|
+
title: d.title ?? void 0,
|
|
44
|
+
createdAt: new Date(d.createdAt ?? d.created_at),
|
|
45
|
+
updatedAt: new Date(d.updatedAt ?? d.updated_at)
|
|
46
|
+
};
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
async saveMessages(sessionId, messages) {
|
|
50
|
+
return safe(
|
|
51
|
+
"saveMessages",
|
|
52
|
+
{
|
|
53
|
+
sessionId,
|
|
54
|
+
messageCount: messages.length,
|
|
55
|
+
roles: messages.map((m) => m.role)
|
|
56
|
+
},
|
|
57
|
+
async () => {
|
|
58
|
+
const num = Number(sessionId);
|
|
59
|
+
const sessionUid = Number.isSafeInteger(num) ? num : sessionId;
|
|
60
|
+
const toolResults = /* @__PURE__ */ new Map();
|
|
61
|
+
for (const msg of messages) {
|
|
62
|
+
if (msg.role === "tool" && msg.toolCallId) {
|
|
63
|
+
toolResults.set(msg.toolCallId, msg.content ?? "");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
for (const msg of messages) {
|
|
67
|
+
if (msg.role === "tool") {
|
|
68
|
+
continue;
|
|
69
|
+
} else if (msg.role === "assistant" && msg.toolCalls?.length) {
|
|
70
|
+
if (msg.content) {
|
|
71
|
+
await call("/chatbot/v1/copilot-sdk/createMessage", {
|
|
72
|
+
session_uid: sessionUid,
|
|
73
|
+
message: msg.content,
|
|
74
|
+
send_by: "assistant",
|
|
75
|
+
content_type: "text"
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
for (const tc of msg.toolCalls) {
|
|
79
|
+
const toolName = tc.function?.name ?? "unknown";
|
|
80
|
+
let toolArgs = {};
|
|
81
|
+
try {
|
|
82
|
+
toolArgs = typeof tc.function?.arguments === "string" ? JSON.parse(tc.function.arguments) : tc.function?.arguments ?? {};
|
|
83
|
+
} catch {
|
|
84
|
+
}
|
|
85
|
+
const response = tc.id ? toolResults.get(tc.id) ?? null : null;
|
|
86
|
+
await call("/chatbot/v1/copilot-sdk/createToolMessage", {
|
|
87
|
+
session_uid: sessionUid,
|
|
88
|
+
skill: "copilot-tool",
|
|
89
|
+
extra_data: {
|
|
90
|
+
tool_name: toolName,
|
|
91
|
+
tool_arguments: toolArgs,
|
|
92
|
+
tool_call_id: tc.id ?? null,
|
|
93
|
+
status: "completed",
|
|
94
|
+
tool_response: response
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
} else if (msg.role === "user" || msg.role === "assistant") {
|
|
99
|
+
await call("/chatbot/v1/copilot-sdk/createMessage", {
|
|
100
|
+
session_uid: sessionUid,
|
|
101
|
+
message: msg.content,
|
|
102
|
+
send_by: msg.role === "user" ? "user" : "assistant",
|
|
103
|
+
content_type: msg.contentType || "text",
|
|
104
|
+
...msg.url ? { url: msg.url } : {}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
);
|
|
110
|
+
},
|
|
111
|
+
async uploadFile(file) {
|
|
112
|
+
return safe(
|
|
113
|
+
"uploadFile",
|
|
114
|
+
{
|
|
115
|
+
filename: file.filename,
|
|
116
|
+
mimeType: file.mimeType,
|
|
117
|
+
dataLength: file.data?.length
|
|
118
|
+
},
|
|
119
|
+
async () => {
|
|
120
|
+
const raw = await call("/chatbot/v1/copilot-sdk/getSignedUrl", {
|
|
121
|
+
file_name: file.filename || `upload_${Date.now()}`
|
|
122
|
+
});
|
|
123
|
+
const signedUrl = raw.data?.upload_url ?? raw.data?.url ?? raw.url;
|
|
124
|
+
const successUrl = raw.data?.file_url ?? raw.data?.success_url ?? raw.success_url;
|
|
125
|
+
if (!signedUrl) {
|
|
126
|
+
throw new Error(
|
|
127
|
+
"uploadFile: no signed URL in response \u2014 " + JSON.stringify(raw)
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
let body;
|
|
131
|
+
let rawData = file.data;
|
|
132
|
+
const dataUriMatch = rawData.match(/^data:[^;]+;base64,(.+)$/);
|
|
133
|
+
if (dataUriMatch) rawData = dataUriMatch[1];
|
|
134
|
+
if (typeof Buffer !== "undefined") {
|
|
135
|
+
body = Buffer.from(rawData, "base64");
|
|
136
|
+
} else {
|
|
137
|
+
const binary = atob(rawData);
|
|
138
|
+
const bytes = new Uint8Array(binary.length);
|
|
139
|
+
for (let i = 0; i < binary.length; i++)
|
|
140
|
+
bytes[i] = binary.charCodeAt(i);
|
|
141
|
+
body = new Blob([bytes], { type: file.mimeType });
|
|
142
|
+
}
|
|
143
|
+
const uploadRes = await fetch(signedUrl, {
|
|
144
|
+
method: "PUT",
|
|
145
|
+
headers: { "Content-Type": file.mimeType },
|
|
146
|
+
body
|
|
147
|
+
});
|
|
148
|
+
if (!uploadRes.ok) {
|
|
149
|
+
throw new Error(
|
|
150
|
+
`uploadFile: PUT to signed URL failed with ${uploadRes.status}`
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
const finalUrl = successUrl || signedUrl.split("?")[0];
|
|
154
|
+
return { url: finalUrl };
|
|
155
|
+
}
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
var createYourGPTAdapter = createYourGPT;
|
|
161
|
+
|
|
162
|
+
export { createYourGPT, createYourGPTAdapter };
|
|
163
|
+
//# sourceMappingURL=index.mjs.map
|
|
164
|
+
//# sourceMappingURL=index.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yourgpt/llm-sdk",
|
|
3
|
-
"version": "2.1.4-alpha.
|
|
3
|
+
"version": "2.1.4-alpha.3",
|
|
4
4
|
"description": "AI SDK for building AI Agents with any LLM",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -50,11 +50,22 @@
|
|
|
50
50
|
"types": "./dist/adapters/index.d.ts",
|
|
51
51
|
"import": "./dist/adapters/index.mjs",
|
|
52
52
|
"require": "./dist/adapters/index.js"
|
|
53
|
+
},
|
|
54
|
+
"./yourgpt": {
|
|
55
|
+
"types": "./dist/yourgpt/index.d.ts",
|
|
56
|
+
"import": "./dist/yourgpt/index.mjs",
|
|
57
|
+
"require": "./dist/yourgpt/index.js"
|
|
58
|
+
},
|
|
59
|
+
"./fallback": {
|
|
60
|
+
"types": "./dist/fallback/index.d.ts",
|
|
61
|
+
"import": "./dist/fallback/index.mjs",
|
|
62
|
+
"require": "./dist/fallback/index.js"
|
|
53
63
|
}
|
|
54
64
|
},
|
|
55
65
|
"homepage": "https://copilot-sdk.yourgpt.ai",
|
|
56
66
|
"files": [
|
|
57
67
|
"dist",
|
|
68
|
+
"!dist/**/*.map",
|
|
58
69
|
"README.md"
|
|
59
70
|
],
|
|
60
71
|
"dependencies": {
|