@base44-preview/sdk 0.7.0-pr.26.fe973bb → 0.7.0-pr.27.15b5e4d
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 +100 -549
- package/dist/client.d.ts +45 -55
- package/dist/client.js +34 -4
- package/dist/index.d.ts +3 -2
- package/dist/index.js +1 -0
- package/dist/modules/agents.d.ts +18 -83
- package/dist/modules/agents.js +39 -247
- package/dist/modules/auth.js +1 -0
- package/dist/modules/types.d.ts +44 -0
- package/dist/modules/types.js +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.js +1 -0
- package/dist/utils/axios-client.d.ts +2 -1
- package/dist/utils/axios-client.js +2 -1
- package/dist/utils/socket-utils.d.ts +47 -0
- package/dist/utils/socket-utils.js +108 -0
- package/package.json +3 -2
package/dist/modules/auth.js
CHANGED
|
@@ -77,6 +77,7 @@ export function createAuthModule(axios, functionsAxiosClient, appId) {
|
|
|
77
77
|
setToken(token, saveToStorage = true) {
|
|
78
78
|
if (!token)
|
|
79
79
|
return;
|
|
80
|
+
// handle token change for axios clients
|
|
80
81
|
axios.defaults.headers.common["Authorization"] = `Bearer ${token}`;
|
|
81
82
|
functionsAxiosClient.defaults.headers.common["Authorization"] = `Bearer ${token}`;
|
|
82
83
|
// Save token to localStorage if requested
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export type AgentConversation = {
|
|
2
|
+
id: string;
|
|
3
|
+
app_id: string;
|
|
4
|
+
agent_name: string;
|
|
5
|
+
created_by_id: string;
|
|
6
|
+
messages: AgentMessage[];
|
|
7
|
+
metadata?: Record<string, any>;
|
|
8
|
+
};
|
|
9
|
+
export type AgentMessage = {
|
|
10
|
+
id: string;
|
|
11
|
+
role: "user" | "assistant" | "system";
|
|
12
|
+
reasoning?: {
|
|
13
|
+
start_date: string;
|
|
14
|
+
end_date?: string;
|
|
15
|
+
content: string;
|
|
16
|
+
};
|
|
17
|
+
content?: string | Record<string, any> | null;
|
|
18
|
+
file_urls?: string[] | null;
|
|
19
|
+
tool_calls?: {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
arguments_string: string;
|
|
23
|
+
status: "running" | "success" | "error" | "stopped";
|
|
24
|
+
results?: string | null;
|
|
25
|
+
}[] | null;
|
|
26
|
+
usage?: {
|
|
27
|
+
prompt_tokens?: number;
|
|
28
|
+
completion_tokens?: number;
|
|
29
|
+
} | null;
|
|
30
|
+
hidden?: boolean;
|
|
31
|
+
custom_context?: {
|
|
32
|
+
message: string;
|
|
33
|
+
data: Record<string, any>;
|
|
34
|
+
type: string;
|
|
35
|
+
}[] | null;
|
|
36
|
+
model?: string | null;
|
|
37
|
+
checkpoint_id?: string | null;
|
|
38
|
+
metadata?: {
|
|
39
|
+
created_date: string;
|
|
40
|
+
created_by_email: string;
|
|
41
|
+
created_by_full_name: string | null;
|
|
42
|
+
};
|
|
43
|
+
additional_message_params?: Record<string, any>;
|
|
44
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/types.d.ts
ADDED
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./modules/types.js";
|
|
@@ -23,7 +23,7 @@ export declare class Base44Error extends Error {
|
|
|
23
23
|
* @param {string} options.serverUrl - Server URL (needed for login redirect)
|
|
24
24
|
* @returns {import('axios').AxiosInstance} Configured axios instance
|
|
25
25
|
*/
|
|
26
|
-
export declare function createAxiosClient({ baseURL, headers, token, requiresAuth, appId, serverUrl, interceptResponses, }: {
|
|
26
|
+
export declare function createAxiosClient({ baseURL, headers, token, requiresAuth, appId, serverUrl, interceptResponses, onError, }: {
|
|
27
27
|
baseURL: string;
|
|
28
28
|
headers?: Record<string, string>;
|
|
29
29
|
token?: string;
|
|
@@ -31,4 +31,5 @@ export declare function createAxiosClient({ baseURL, headers, token, requiresAut
|
|
|
31
31
|
appId: string;
|
|
32
32
|
serverUrl: string;
|
|
33
33
|
interceptResponses?: boolean;
|
|
34
|
+
onError?: (error: Error) => void;
|
|
34
35
|
}): import("axios").AxiosInstance;
|
|
@@ -64,7 +64,7 @@ function redirectToLogin(serverUrl, appId) {
|
|
|
64
64
|
* @param {string} options.serverUrl - Server URL (needed for login redirect)
|
|
65
65
|
* @returns {import('axios').AxiosInstance} Configured axios instance
|
|
66
66
|
*/
|
|
67
|
-
export function createAxiosClient({ baseURL, headers = {}, token, requiresAuth = false, appId, serverUrl, interceptResponses = true, }) {
|
|
67
|
+
export function createAxiosClient({ baseURL, headers = {}, token, requiresAuth = false, appId, serverUrl, interceptResponses = true, onError, }) {
|
|
68
68
|
const client = axios.create({
|
|
69
69
|
baseURL,
|
|
70
70
|
headers: {
|
|
@@ -107,6 +107,7 @@ export function createAxiosClient({ baseURL, headers = {}, token, requiresAuth =
|
|
|
107
107
|
redirectToLogin(serverUrl, appId);
|
|
108
108
|
}, 100);
|
|
109
109
|
}
|
|
110
|
+
onError === null || onError === void 0 ? void 0 : onError(base44Error);
|
|
110
111
|
return Promise.reject(base44Error);
|
|
111
112
|
});
|
|
112
113
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Socket } from "socket.io-client";
|
|
2
|
+
export type RoomsSocketConfig = {
|
|
3
|
+
serverUrl: string;
|
|
4
|
+
mountPath: string;
|
|
5
|
+
transports: string[];
|
|
6
|
+
appId: string;
|
|
7
|
+
token?: string;
|
|
8
|
+
};
|
|
9
|
+
export type TSocketRoom = string;
|
|
10
|
+
export type TJsonStr = string;
|
|
11
|
+
type RoomsSocketEventsMap = {
|
|
12
|
+
listen: {
|
|
13
|
+
connect: () => Promise<void> | void;
|
|
14
|
+
update_model: (msg: {
|
|
15
|
+
room: string;
|
|
16
|
+
data: TJsonStr;
|
|
17
|
+
}) => Promise<void> | void;
|
|
18
|
+
error: (error: Error) => Promise<void> | void;
|
|
19
|
+
};
|
|
20
|
+
emit: {
|
|
21
|
+
join: (room: string) => void;
|
|
22
|
+
leave: (room: string) => void;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
type TEvent = keyof RoomsSocketEventsMap["listen"];
|
|
26
|
+
type THandler<E extends TEvent> = RoomsSocketEventsMap["listen"][E];
|
|
27
|
+
export type RoomsSocket = ReturnType<typeof RoomsSocket>;
|
|
28
|
+
export declare function RoomsSocket({ config }: {
|
|
29
|
+
config: RoomsSocketConfig;
|
|
30
|
+
}): {
|
|
31
|
+
socket: Socket<{
|
|
32
|
+
connect: () => Promise<void> | void;
|
|
33
|
+
update_model: (msg: {
|
|
34
|
+
room: string;
|
|
35
|
+
data: TJsonStr;
|
|
36
|
+
}) => Promise<void> | void;
|
|
37
|
+
error: (error: Error) => Promise<void> | void;
|
|
38
|
+
}, {
|
|
39
|
+
join: (room: string) => void;
|
|
40
|
+
leave: (room: string) => void;
|
|
41
|
+
}>;
|
|
42
|
+
subscribeToRoom: (room: TSocketRoom, handlers: Partial<{ [k in TEvent]: THandler<k>; }>) => () => void;
|
|
43
|
+
updateConfig: (config: Partial<RoomsSocketConfig>) => void;
|
|
44
|
+
updateModel: (room: string, data: any) => Promise<void>;
|
|
45
|
+
disconnect: () => void;
|
|
46
|
+
};
|
|
47
|
+
export {};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { io } from "socket.io-client";
|
|
2
|
+
import { getAccessToken } from "./auth-utils.js";
|
|
3
|
+
function initializeSocket(config, handlers) {
|
|
4
|
+
var _a;
|
|
5
|
+
const socket = io(config.serverUrl, {
|
|
6
|
+
path: config.mountPath,
|
|
7
|
+
transports: config.transports,
|
|
8
|
+
query: {
|
|
9
|
+
app_id: config.appId,
|
|
10
|
+
token: (_a = config.token) !== null && _a !== void 0 ? _a : getAccessToken(),
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
socket.on("connect", () => {
|
|
14
|
+
var _a;
|
|
15
|
+
console.log("connect", socket.id);
|
|
16
|
+
(_a = handlers.connect) === null || _a === void 0 ? void 0 : _a.call(handlers);
|
|
17
|
+
});
|
|
18
|
+
socket.on("update_model", (msg) => {
|
|
19
|
+
var _a;
|
|
20
|
+
(_a = handlers.update_model) === null || _a === void 0 ? void 0 : _a.call(handlers, msg);
|
|
21
|
+
});
|
|
22
|
+
socket.on("error", (error) => {
|
|
23
|
+
var _a;
|
|
24
|
+
(_a = handlers.error) === null || _a === void 0 ? void 0 : _a.call(handlers, error);
|
|
25
|
+
});
|
|
26
|
+
socket.on("connect_error", (error) => {
|
|
27
|
+
var _a;
|
|
28
|
+
console.error("connect_error", error);
|
|
29
|
+
(_a = handlers.error) === null || _a === void 0 ? void 0 : _a.call(handlers, error);
|
|
30
|
+
});
|
|
31
|
+
return socket;
|
|
32
|
+
}
|
|
33
|
+
export function RoomsSocket({ config }) {
|
|
34
|
+
let currentConfig = { ...config };
|
|
35
|
+
const roomsToListeners = {};
|
|
36
|
+
const handlers = {
|
|
37
|
+
connect: async () => {
|
|
38
|
+
const promises = [];
|
|
39
|
+
Object.keys(roomsToListeners).forEach((room) => {
|
|
40
|
+
joinRoom(room);
|
|
41
|
+
const listeners = getListeners(room);
|
|
42
|
+
listeners === null || listeners === void 0 ? void 0 : listeners.forEach(({ connect }) => {
|
|
43
|
+
const promise = async () => connect === null || connect === void 0 ? void 0 : connect();
|
|
44
|
+
promises.push(promise());
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
await Promise.all(promises);
|
|
48
|
+
},
|
|
49
|
+
update_model: async (msg) => {
|
|
50
|
+
const listeners = getListeners(msg.room);
|
|
51
|
+
const promises = listeners.map((listener) => { var _a; return (_a = listener.update_model) === null || _a === void 0 ? void 0 : _a.call(listener, msg); });
|
|
52
|
+
await Promise.all(promises);
|
|
53
|
+
},
|
|
54
|
+
error: async (error) => {
|
|
55
|
+
var _a;
|
|
56
|
+
console.error("error", error);
|
|
57
|
+
await ((_a = handlers.error) === null || _a === void 0 ? void 0 : _a.call(handlers, error));
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
let socket = initializeSocket(config, handlers);
|
|
61
|
+
function cleanup() {
|
|
62
|
+
disconnect();
|
|
63
|
+
}
|
|
64
|
+
function disconnect() {
|
|
65
|
+
if (socket) {
|
|
66
|
+
socket.disconnect();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function updateConfig(config) {
|
|
70
|
+
cleanup();
|
|
71
|
+
currentConfig = {
|
|
72
|
+
...currentConfig,
|
|
73
|
+
...config,
|
|
74
|
+
};
|
|
75
|
+
socket = initializeSocket(currentConfig, handlers);
|
|
76
|
+
}
|
|
77
|
+
function joinRoom(room) {
|
|
78
|
+
socket.emit("join", room);
|
|
79
|
+
}
|
|
80
|
+
function leaveRoom(room) {
|
|
81
|
+
socket.emit("leave", room);
|
|
82
|
+
}
|
|
83
|
+
async function updateModel(room, data) {
|
|
84
|
+
var _a;
|
|
85
|
+
const dataStr = JSON.stringify(data);
|
|
86
|
+
return (_a = handlers.update_model) === null || _a === void 0 ? void 0 : _a.call(handlers, { room, data: dataStr });
|
|
87
|
+
}
|
|
88
|
+
function getListeners(room) {
|
|
89
|
+
return roomsToListeners[room];
|
|
90
|
+
}
|
|
91
|
+
const subscribeToRoom = (room, handlers) => {
|
|
92
|
+
if (!roomsToListeners[room]) {
|
|
93
|
+
joinRoom(room);
|
|
94
|
+
roomsToListeners[room] = [];
|
|
95
|
+
}
|
|
96
|
+
roomsToListeners[room].push(handlers);
|
|
97
|
+
return () => {
|
|
98
|
+
roomsToListeners[room] = roomsToListeners[room].filter((listener) => listener !== handlers);
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
return {
|
|
102
|
+
socket,
|
|
103
|
+
subscribeToRoom,
|
|
104
|
+
updateConfig,
|
|
105
|
+
updateModel,
|
|
106
|
+
disconnect,
|
|
107
|
+
};
|
|
108
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@base44-preview/sdk",
|
|
3
|
-
"version": "0.7.0-pr.
|
|
3
|
+
"version": "0.7.0-pr.27.15b5e4d",
|
|
4
4
|
"description": "JavaScript SDK for Base44 API",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
"prepublishOnly": "npm run build"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"axios": "^1.6.2"
|
|
22
|
+
"axios": "^1.6.2",
|
|
23
|
+
"socket.io-client": "^4.7.5"
|
|
23
24
|
},
|
|
24
25
|
"devDependencies": {
|
|
25
26
|
"@vitest/coverage-istanbul": "^1.0.0",
|