psadk 1.1.2 → 1.1.4
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/build/main/lib/PSAI.js +23 -22
- package/build/main/lib/PSAgentLogger.js +12 -6
- package/build/main/lib/tests/PSAgent.spec copy.d.ts +1 -0
- package/build/main/lib/tests/PSAgent.spec copy.js +53 -0
- package/build/main/lib/tests/PSReadFileTool.spec copy.d.ts +1 -0
- package/build/main/lib/tests/PSReadFileTool.spec copy.js +92 -0
- package/build/main/lib/tools/PSMemoryTool.d.ts +8 -7
- package/build/main/lib/tools/PSMemoryTool.js +101 -74
- package/build/main/lib/tools/PSReadFileTool.js +4 -2
- package/build/main/lib/tools/PSSubAgentTool.d.ts +2 -1
- package/build/main/lib/tools/PSSubAgentTool.js +12 -6
- package/build/main/lib/tools/PSWriteFileTool.js +4 -2
- package/build/main/lib/tools/TodoTool.js +10 -8
- package/build/main/lib/utils/debuglogger.d.ts +2 -1
- package/build/main/lib/utils/debuglogger.js +1 -1
- package/package.json +14 -14
package/build/main/lib/PSAI.js
CHANGED
|
@@ -11,8 +11,9 @@ const express_1 = __importDefault(require("express"));
|
|
|
11
11
|
const fetch_retry_1 = __importDefault(require("fetch-retry"));
|
|
12
12
|
const PSAgentLogger_1 = require("./PSAgentLogger");
|
|
13
13
|
const jwt_1 = require("./jwt");
|
|
14
|
+
const debuglogger_1 = __importDefault(require("./utils/debuglogger"));
|
|
14
15
|
const fetch = (0, fetch_retry_1.default)(global.fetch);
|
|
15
|
-
const
|
|
16
|
+
const dlog = (0, debuglogger_1.default)('PSAI');
|
|
16
17
|
const existingToken = {
|
|
17
18
|
service_token: null,
|
|
18
19
|
refresh_token: null,
|
|
@@ -26,7 +27,7 @@ class PSAI {
|
|
|
26
27
|
this.baseUrl = baseUrl || process.env.PS_API_URL || '';
|
|
27
28
|
this.clientid = process.env.PS_CLIENT_ID || '';
|
|
28
29
|
this.dimensions = 1536; // default to 1536 dimensions (for text-embedding-3-small)
|
|
29
|
-
this.log = log || new PSAgentLogger_1.PSAgentLogger();
|
|
30
|
+
this.log = log || new PSAgentLogger_1.PSAgentLogger({ prefix: 'PSAI' });
|
|
30
31
|
}
|
|
31
32
|
getDimensions(embeddingModel = 'text-embedding-3-small') {
|
|
32
33
|
if (embeddingModel === 'text-embedding-3-small') {
|
|
@@ -132,8 +133,8 @@ class PSAI {
|
|
|
132
133
|
log.debug(errorData);
|
|
133
134
|
throw new Error(`LLM call failed.\n\n status: ${res.status}, details: ${errorData}`);
|
|
134
135
|
}
|
|
135
|
-
catch (
|
|
136
|
-
throw new Error(`LLM call failed.\n\n status: ${res.status},
|
|
136
|
+
catch (_a) {
|
|
137
|
+
throw new Error(`LLM call failed.\n\n status: ${res.status}, details: ${await res.text()}`);
|
|
137
138
|
}
|
|
138
139
|
}
|
|
139
140
|
const data = await res.json();
|
|
@@ -156,7 +157,7 @@ class PSAI {
|
|
|
156
157
|
}
|
|
157
158
|
const token = Buffer.from(`${clientid}:${clientsecret}`).toString('base64');
|
|
158
159
|
if (existingToken && existingToken.expires > currentTime) {
|
|
159
|
-
|
|
160
|
+
dlog.debug(`Found existing refresh token: ${existingToken.refresh_token}`);
|
|
160
161
|
const tres = await fetch(`${baseurl}/api/v2/auth/refreshtoken?client=machine`, {
|
|
161
162
|
headers: {
|
|
162
163
|
'Authorization': `Basic ${token}`,
|
|
@@ -172,11 +173,11 @@ class PSAI {
|
|
|
172
173
|
existingToken.refresh_token = refreshToken;
|
|
173
174
|
existingToken.expires = new Date((rpayload === null || rpayload === void 0 ? void 0 : rpayload.exp) * 1000);
|
|
174
175
|
existingToken.service_expires = new Date((spayload === null || spayload === void 0 ? void 0 : spayload.exp) * 1000);
|
|
175
|
-
|
|
176
|
+
dlog.debug(`Refreshed service token: expires at ${existingToken.service_expires}`);
|
|
176
177
|
return accessToken;
|
|
177
178
|
}
|
|
178
179
|
else {
|
|
179
|
-
|
|
180
|
+
dlog.debug(`Failed to refresh service token, status: ${tres.status}`);
|
|
180
181
|
}
|
|
181
182
|
}
|
|
182
183
|
const tres = await fetch(`${baseurl}/api/v2/auth/login?client=machine&source=custom`, {
|
|
@@ -188,8 +189,8 @@ class PSAI {
|
|
|
188
189
|
const { serviceToken, refreshToken } = (await tres.json());
|
|
189
190
|
const spayload = jwt_1.JwtUtils.decode(serviceToken);
|
|
190
191
|
const rpayload = jwt_1.JwtUtils.decode(refreshToken);
|
|
191
|
-
|
|
192
|
-
|
|
192
|
+
dlog.debug(`service token expires: ${JSON.stringify(new Date((spayload === null || spayload === void 0 ? void 0 : spayload.exp) * 1000))}`);
|
|
193
|
+
dlog.debug(`refresh token expires: ${JSON.stringify(new Date((rpayload === null || rpayload === void 0 ? void 0 : rpayload.exp) * 1000))}`);
|
|
193
194
|
existingToken.service_token = serviceToken;
|
|
194
195
|
existingToken.refresh_token = refreshToken;
|
|
195
196
|
existingToken.expires = new Date((rpayload === null || rpayload === void 0 ? void 0 : rpayload.exp) * 1000);
|
|
@@ -220,16 +221,16 @@ class PSAI {
|
|
|
220
221
|
router.get('/callback', (req, res) => {
|
|
221
222
|
const status = req.query.status;
|
|
222
223
|
if (status !== "success") {
|
|
223
|
-
|
|
224
|
+
dlog.error(`Authentication failed with status: ${status}`);
|
|
224
225
|
callBackError = `Authentication failed with status: ${status}`;
|
|
225
226
|
isCallbackFinished = true;
|
|
226
227
|
return res.status(400).send('Authentication failed');
|
|
227
228
|
}
|
|
228
|
-
|
|
229
|
+
dlog.debug("Authentication successful.");
|
|
229
230
|
accessToken = req.query["at"];
|
|
230
231
|
refreshToken = req.query["rt"];
|
|
231
232
|
if (!accessToken || !refreshToken) {
|
|
232
|
-
|
|
233
|
+
dlog.error('Missing access token or refresh token in callback');
|
|
233
234
|
callBackError = 'Missing access token or refresh token in callback';
|
|
234
235
|
isCallbackFinished = true;
|
|
235
236
|
return res.status(400).send('Missing tokens');
|
|
@@ -245,14 +246,14 @@ class PSAI {
|
|
|
245
246
|
headers: { 'app-key': appkey || '' }
|
|
246
247
|
});
|
|
247
248
|
if (lres.status >= 400) {
|
|
248
|
-
|
|
249
|
+
dlog.error(`Failed to initiate login: ${lres.status} ${lres.statusText}`);
|
|
249
250
|
callBackError = `Failed to initiate login: ${lres.status} ${lres.statusText}`;
|
|
250
251
|
isCallbackFinished = true;
|
|
251
252
|
return res.status(500).send('Failed to initiate login');
|
|
252
253
|
}
|
|
253
254
|
const data = lres.body;
|
|
254
255
|
if (!data) {
|
|
255
|
-
|
|
256
|
+
dlog.error('No response body from login initiation');
|
|
256
257
|
callBackError = 'No response body from login initiation';
|
|
257
258
|
isCallbackFinished = true;
|
|
258
259
|
return res.status(500).send('No response body from login initiation');
|
|
@@ -267,20 +268,20 @@ class PSAI {
|
|
|
267
268
|
lresText += decoder.decode(value);
|
|
268
269
|
}
|
|
269
270
|
if (!lresText || lresText.length === 0) {
|
|
270
|
-
|
|
271
|
+
dlog.error('Empty response body from login initiation');
|
|
271
272
|
callBackError = 'Empty response body from login initiation';
|
|
272
273
|
isCallbackFinished = true;
|
|
273
274
|
return res.status(500).send('Empty response body from login initiation');
|
|
274
275
|
}
|
|
275
|
-
|
|
276
|
+
dlog.debug('Redirecting to authentication provider');
|
|
276
277
|
return res.redirect(lresText);
|
|
277
278
|
});
|
|
278
279
|
app.use('', router);
|
|
279
280
|
app.listen(3133, () => {
|
|
280
|
-
|
|
281
|
+
dlog.debug('Listening on port 3133 for OAuth callback');
|
|
281
282
|
appInitialized = true;
|
|
282
283
|
}).on('error', (err) => {
|
|
283
|
-
|
|
284
|
+
dlog.error('Failed to start local server:', err);
|
|
284
285
|
callBackError = `Failed to start local server: ${err.message}`;
|
|
285
286
|
isCallbackFinished = true;
|
|
286
287
|
appInitialized = true;
|
|
@@ -303,19 +304,19 @@ class PSAI {
|
|
|
303
304
|
if (!accessToken || !refreshToken) {
|
|
304
305
|
throw new Error('Failed to obtain tokens from callback');
|
|
305
306
|
}
|
|
306
|
-
|
|
307
|
+
dlog.debug(`Obtained access token and refresh token from callback`);
|
|
307
308
|
return {
|
|
308
309
|
accessToken: accessToken,
|
|
309
310
|
refreshToken: refreshToken
|
|
310
311
|
};
|
|
311
312
|
}
|
|
312
313
|
catch (error) {
|
|
313
|
-
|
|
314
|
+
dlog.error('Error in getAccessToken:', error);
|
|
314
315
|
throw error;
|
|
315
316
|
}
|
|
316
317
|
}
|
|
317
318
|
static getLLMproxy({ headers, baseapiurl } = {}) {
|
|
318
|
-
const log =
|
|
319
|
+
const log = (0, debuglogger_1.default)('PSAI:LLMPROXY');
|
|
319
320
|
const app = (0, express_1.default)();
|
|
320
321
|
app.use(express_1.default.json());
|
|
321
322
|
app.use(express_1.default.urlencoded({ extended: true }));
|
|
@@ -380,4 +381,4 @@ class PSAI {
|
|
|
380
381
|
}
|
|
381
382
|
}
|
|
382
383
|
exports.PSAI = PSAI;
|
|
383
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUFNBSS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvUFNBSS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx1REFBdUQ7QUFDdkQsb0VBQW9FO0FBQ3BFLHVFQUF1RTtBQUN2RSxzREFBcUQ7QUFDckQsOERBQXFDO0FBRXJDLG1EQUE4QztBQUM5QywrQkFBK0M7QUFFL0MsTUFBTSxLQUFLLEdBQUcsSUFBQSxxQkFBVSxFQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUV2QyxNQUFNLEdBQUcsR0FBRyxJQUFJLDZCQUFhLEVBQUUsQ0FBQztBQUVoQyxNQUFNLGFBQWEsR0FLZjtJQUNGLGFBQWEsRUFBRSxJQUFJO0lBQ25CLGFBQWEsRUFBRSxJQUFJO0lBQ25CLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEIsZUFBZSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztDQUM3QixDQUFDO0FBRUYsZ0VBQWdFO0FBQ2hFLE1BQWEsSUFBSTtJQU9mLFlBQVksS0FBYSxFQUFFLE9BQWdCLEVBQUUsR0FBbUI7UUFDOUQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsMERBQTBEO1FBQ2xGLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksNkJBQWEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxhQUFhLENBQUMsY0FBYyxHQUFDLHdCQUF3QjtRQUMxRCxJQUFJLGNBQWMsS0FBSyx3QkFBd0IsRUFBRSxDQUFDO1lBQzlDLE9B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
|
|
384
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUFNBSS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvUFNBSS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx1REFBdUQ7QUFDdkQsb0VBQW9FO0FBQ3BFLHVFQUF1RTtBQUN2RSxzREFBcUQ7QUFDckQsOERBQXFDO0FBRXJDLG1EQUE4QztBQUM5QywrQkFBK0M7QUFDL0Msc0VBQWdFO0FBRWhFLE1BQU0sS0FBSyxHQUFHLElBQUEscUJBQVUsRUFBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFdkMsTUFBTSxJQUFJLEdBQUcsSUFBQSxxQkFBVyxFQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRWpDLE1BQU0sYUFBYSxHQUtmO0lBQ0YsYUFBYSxFQUFFLElBQUk7SUFDbkIsYUFBYSxFQUFFLElBQUk7SUFDbkIsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwQixlQUFlLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0NBQzdCLENBQUM7QUFFRixnRUFBZ0U7QUFDaEUsTUFBYSxJQUFJO0lBT2YsWUFBWSxLQUFhLEVBQUUsT0FBZ0IsRUFBRSxHQUFtQjtRQUM5RCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQywwREFBMEQ7UUFDbEYsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSw2QkFBYSxDQUFDLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVNLGFBQWEsQ0FBQyxjQUFjLEdBQUMs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
|
|
@@ -6,14 +6,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.PSAgentLogger = void 0;
|
|
7
7
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
8
8
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
|
-
const
|
|
9
|
+
const debuglogger_1 = __importDefault(require("./utils/debuglogger"));
|
|
10
10
|
class PSAgentLogger {
|
|
11
11
|
constructor(options) {
|
|
12
|
-
this.logFn = (0,
|
|
12
|
+
this.logFn = (0, debuglogger_1.default)('PSAgent:');
|
|
13
13
|
this.lastTimestamp = Date.now();
|
|
14
14
|
if (options === null || options === void 0 ? void 0 : options.prefix) {
|
|
15
|
-
this.logFn = (0,
|
|
16
|
-
this.logFn.enabled = true;
|
|
15
|
+
this.logFn = (0, debuglogger_1.default)(options.prefix);
|
|
17
16
|
}
|
|
18
17
|
this.logFilePath = options === null || options === void 0 ? void 0 : options.logFilePath;
|
|
19
18
|
this.taskId = options === null || options === void 0 ? void 0 : options.taskId;
|
|
@@ -26,7 +25,14 @@ class PSAgentLogger {
|
|
|
26
25
|
if (this.logFilePath) {
|
|
27
26
|
node_fs_1.default.appendFileSync(this.logFilePath, `data: ${JSON.stringify({ ts: type === 'todo' ? 0 : this.lastTimestamp, type, taskId: this.taskId, task: this.task, message })}\n\n`, { encoding: 'utf-8' });
|
|
28
27
|
}
|
|
29
|
-
|
|
28
|
+
switch (type) {
|
|
29
|
+
case 'debug': return this.logFn.debug(message, ...optionalParams);
|
|
30
|
+
case 'done': return this.logFn.done(`${message} (${duration}ms)`, ...optionalParams);
|
|
31
|
+
case 'warn': return this.logFn.warn(`${message}`, ...optionalParams);
|
|
32
|
+
case 'error': return this.logFn.error(`${message}`, ...optionalParams);
|
|
33
|
+
default:
|
|
34
|
+
this.logFn.info(`[${type}] ${message}`, ...optionalParams);
|
|
35
|
+
}
|
|
30
36
|
}
|
|
31
37
|
debug(message, ...optionalParams) {
|
|
32
38
|
this.log('debug', message, ...optionalParams);
|
|
@@ -45,4 +51,4 @@ class PSAgentLogger {
|
|
|
45
51
|
}
|
|
46
52
|
}
|
|
47
53
|
exports.PSAgentLogger = PSAgentLogger;
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUFNBZ2VudExvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvUFNBZ2VudExvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx1REFBdUQ7QUFDdkQsc0RBQXlCO0FBRXpCLHNFQUE4QztBQUk5QyxNQUFhLGFBQWE7SUFNeEIsWUFBWSxPQUErRTtRQUxuRixVQUFLLEdBQUcsSUFBQSxxQkFBVyxFQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWhDLGtCQUFhLEdBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBSS9CLElBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBQSxxQkFBVyxFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsV0FBVyxDQUFBO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELEdBQUcsQ0FBQyxJQUFZLEVBQUUsT0FBVyxFQUFFLEdBQUcsY0FBb0I7UUFDcEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNuRSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixpQkFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEtBQUcsTUFBTSxDQUFBLENBQUMsQ0FBQSxDQUFDLENBQUEsQ0FBQyxDQUFBLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdMLENBQUM7UUFFRCxRQUFPLElBQUksRUFBRSxDQUFDO1lBQ1osS0FBSyxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDO1lBQ2xFLEtBQUssTUFBTSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sS0FBSyxRQUFRLEtBQUssRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDO1lBQ3JGLEtBQUssTUFBTSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sRUFBRSxFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUM7WUFDckUsS0FBSyxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxFQUFFLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQztZQUN2RTtnQkFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQWUsRUFBRSxHQUFHLGNBQW9CO1FBQ25ELElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDTSxJQUFJLENBQUMsT0FBZSxFQUFFLEdBQUcsY0FBb0I7UUFDbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNNLEtBQUssQ0FBQyxPQUFlLEVBQUUsR0FBRyxjQUFvQjtRQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ00sSUFBSSxDQUFDLE9BQWUsRUFBRSxHQUFHLGNBQW9CO1FBQ2xELElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDTSxJQUFJLENBQUMsVUFBa0IsRUFBRSxFQUFFLEdBQUcsY0FBb0I7UUFDdkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGO0FBaERELHNDQWdEQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
7
|
+
const ava_1 = __importDefault(require("ava"));
|
|
8
|
+
const PSAgent_1 = require("../PSAgent");
|
|
9
|
+
const PSAgentTool_1 = require("../PSAgentTool");
|
|
10
|
+
(0, ava_1.default)('basic construct', (t) => {
|
|
11
|
+
const agent = new PSAgent_1.PSAgent({
|
|
12
|
+
name: "TestAgent",
|
|
13
|
+
description: "Test Agent",
|
|
14
|
+
instruction: "You are a test agent",
|
|
15
|
+
tools: []
|
|
16
|
+
});
|
|
17
|
+
t.is(agent.Name, "TestAgent");
|
|
18
|
+
t.is(agent.Description, "Test Agent");
|
|
19
|
+
t.is(agent.Instruction, "You are a test agent");
|
|
20
|
+
t.is(agent.Tools.length, 0);
|
|
21
|
+
t.pass();
|
|
22
|
+
});
|
|
23
|
+
(0, ava_1.default)('add tool', (t) => {
|
|
24
|
+
const agent = new PSAgent_1.PSAgent({
|
|
25
|
+
name: "TestAgent",
|
|
26
|
+
description: "Test Agent",
|
|
27
|
+
instruction: "You are a test agent",
|
|
28
|
+
tools: []
|
|
29
|
+
});
|
|
30
|
+
const tool = new PSAgentTool_1.PSAgentTool({
|
|
31
|
+
name: "TestTool",
|
|
32
|
+
description: "Test Tool",
|
|
33
|
+
inputschema: {
|
|
34
|
+
//title: "Test Tool Input",
|
|
35
|
+
//description: "Input for Test Tool",
|
|
36
|
+
requestBody: {
|
|
37
|
+
type: "object",
|
|
38
|
+
properties: {
|
|
39
|
+
query: { type: "string", description: "user query" },
|
|
40
|
+
},
|
|
41
|
+
required: ["query",]
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
runCallback: async (_input) => {
|
|
45
|
+
return { result: "Test Tool Executed ", output: _input.query };
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
agent.addTool(tool);
|
|
49
|
+
t.is(agent.Tools.length, 1);
|
|
50
|
+
t.is(agent.Tools[0].Name, "TestTool");
|
|
51
|
+
t.pass();
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUFNBZ2VudC5zcGVjIGNvcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3RzL1BTQWdlbnQuc3BlYyBjb3B5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdURBQXVEO0FBQ3ZELDhDQUF1QjtBQUV2Qix3Q0FBcUM7QUFDckMsZ0RBQTZDO0FBRzdDLElBQUEsYUFBSSxFQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDNUIsTUFBTSxLQUFLLEdBQUUsSUFBSSxpQkFBTyxDQUFDO1FBQ3ZCLElBQUksRUFBRSxXQUFXO1FBQ2pCLFdBQVcsRUFBRSxZQUFZO1FBQ3pCLFdBQVcsRUFBRSxzQkFBc0I7UUFDbkMsS0FBSyxFQUFFLEVBQUU7S0FDVixDQUFDLENBQUM7SUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1gsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFBLGFBQUksRUFBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUNyQixNQUFNLEtBQUssR0FBRSxJQUFJLGlCQUFPLENBQUM7UUFDdkIsSUFBSSxFQUFFLFdBQVc7UUFDakIsV0FBVyxFQUFFLFlBQVk7UUFDekIsV0FBVyxFQUFFLHNCQUFzQjtRQUNuQyxLQUFLLEVBQUUsRUFBRTtLQUNWLENBQUMsQ0FBQztJQUNILE1BQU0sSUFBSSxHQUFDLElBQUkseUJBQVcsQ0FBQztRQUN6QixJQUFJLEVBQUUsVUFBVTtRQUNoQixXQUFXLEVBQUUsV0FBVztRQUN4QixXQUFXLEVBQUU7WUFDWCwyQkFBMkI7WUFDM0IscUNBQXFDO1lBQ3JDLFdBQVcsRUFBRTtnQkFDWCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxVQUFVLEVBQUU7b0JBQ1YsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFO2lCQUNyRDtnQkFDRCxRQUFRLEVBQUUsQ0FBQyxPQUFPLEVBQUU7YUFDckI7U0FDRjtRQUNELFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBMkIsRUFBRSxFQUFFO1lBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUMsQ0FBQztRQUNoRSxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1gsQ0FBQyxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const ava_1 = __importDefault(require("ava"));
|
|
11
|
+
const uuid_1 = require("uuid");
|
|
12
|
+
const PSReadFileTool_1 = require("../tools/PSReadFileTool");
|
|
13
|
+
(0, ava_1.default)('basic construct', async (t) => {
|
|
14
|
+
const td = node_path_1.default.join(node_os_1.default.tmpdir(), (0, uuid_1.v4)());
|
|
15
|
+
const readTool = new PSReadFileTool_1.PSReadFileTool({
|
|
16
|
+
paths: [td],
|
|
17
|
+
});
|
|
18
|
+
t.not(readTool, null);
|
|
19
|
+
t.pass();
|
|
20
|
+
});
|
|
21
|
+
(0, ava_1.default)('read invalid file', async (t) => {
|
|
22
|
+
const td = node_path_1.default.join(node_os_1.default.tmpdir(), (0, uuid_1.v4)());
|
|
23
|
+
const readTool = new PSReadFileTool_1.PSReadFileTool({
|
|
24
|
+
paths: [td],
|
|
25
|
+
});
|
|
26
|
+
try {
|
|
27
|
+
await readTool.run({
|
|
28
|
+
'path': 'file1.txt',
|
|
29
|
+
});
|
|
30
|
+
t.fail('Should have failed as file does not exist');
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
t.is(err.message, 'File not found at path: file1.txt');
|
|
34
|
+
}
|
|
35
|
+
t.pass();
|
|
36
|
+
});
|
|
37
|
+
(0, ava_1.default)('read valid file', async (t) => {
|
|
38
|
+
const td = node_path_1.default.join(node_os_1.default.tmpdir(), (0, uuid_1.v4)());
|
|
39
|
+
node_fs_1.default.mkdirSync(td, { recursive: true });
|
|
40
|
+
const filePath = node_path_1.default.join(td, 'file1.txt');
|
|
41
|
+
node_fs_1.default.writeFileSync(filePath, 'This is a test file.', 'utf-8');
|
|
42
|
+
const readTool = new PSReadFileTool_1.PSReadFileTool({
|
|
43
|
+
paths: [td],
|
|
44
|
+
});
|
|
45
|
+
try {
|
|
46
|
+
const res = await readTool.run({
|
|
47
|
+
'path': 'file1.txt',
|
|
48
|
+
});
|
|
49
|
+
t.is(res.status, 'success');
|
|
50
|
+
t.is(res.size, 20);
|
|
51
|
+
t.is(res.content, 'This is a test file.');
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
console.error(err);
|
|
55
|
+
t.fail('Failed to read file');
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
node_fs_1.default.rmSync(td, { recursive: true, force: true });
|
|
59
|
+
}
|
|
60
|
+
t.pass();
|
|
61
|
+
});
|
|
62
|
+
// test('add tool', (t) => {
|
|
63
|
+
// const agent =new PSAgent({
|
|
64
|
+
// name: "TestAgent",
|
|
65
|
+
// description: "Test Agent",
|
|
66
|
+
// instruction: "You are a test agent",
|
|
67
|
+
// tools: []
|
|
68
|
+
// });
|
|
69
|
+
// const tool=new PSAgentTool({
|
|
70
|
+
// name: "TestTool",
|
|
71
|
+
// description: "Test Tool",
|
|
72
|
+
// inputschema: {
|
|
73
|
+
// //title: "Test Tool Input",
|
|
74
|
+
// //description: "Input for Test Tool",
|
|
75
|
+
// requestBody: {
|
|
76
|
+
// type: "object",
|
|
77
|
+
// properties: {
|
|
78
|
+
// query: { type: "string", description: "user query" },
|
|
79
|
+
// },
|
|
80
|
+
// required: ["query",]
|
|
81
|
+
// }
|
|
82
|
+
// },
|
|
83
|
+
// runCallback: async (_input: Record<string, any>) => {
|
|
84
|
+
// return { result: "Test Tool Executed ", output: _input.query};
|
|
85
|
+
// }
|
|
86
|
+
// });
|
|
87
|
+
// agent.addTool(tool);
|
|
88
|
+
// t.is(agent.Tools.length, 1);
|
|
89
|
+
// t.is(agent.Tools[0].Name, "TestTool");
|
|
90
|
+
// t.pass();
|
|
91
|
+
// });
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUFNSZWFkRmlsZVRvb2wuc3BlYyBjb3B5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0cy9QU1JlYWRGaWxlVG9vbC5zcGVjIGNvcHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx1REFBdUQ7QUFDdkQsc0RBQXlCO0FBQ3pCLHNEQUF5QjtBQUN6QiwwREFBNkI7QUFFN0IsOENBQXVCO0FBQ3ZCLCtCQUFvQztBQUVwQyw0REFBeUQ7QUFFekQsSUFBQSxhQUFJLEVBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xDLE1BQU0sRUFBRSxHQUFHLG1CQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBQSxTQUFNLEdBQUUsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sUUFBUSxHQUFFLElBQUksK0JBQWMsQ0FBQztRQUNqQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7S0FDWixDQUFDLENBQUM7SUFDSCxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDWCxDQUFDLENBQUMsQ0FBQztBQUNILElBQUEsYUFBSSxFQUFDLG1CQUFtQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNwQyxNQUFNLEVBQUUsR0FBRyxtQkFBSSxDQUFDLElBQUksQ0FBQyxpQkFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUEsU0FBTSxHQUFFLENBQUMsQ0FBQztJQUM1QyxNQUFNLFFBQVEsR0FBRSxJQUFJLCtCQUFjLENBQUM7UUFDakMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0tBQ1osQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDO1FBQ0gsTUFBTSxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxXQUFXO1NBQ3BCLENBQUMsQ0FB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
|
|
@@ -5,23 +5,24 @@ export interface Memory {
|
|
|
5
5
|
content?: string;
|
|
6
6
|
}
|
|
7
7
|
export interface IMemoryStore {
|
|
8
|
-
viewMemories(
|
|
9
|
-
getMemoryByPath(relativePath: string): Promise<
|
|
8
|
+
viewMemories(): Promise<string>;
|
|
9
|
+
getMemoryByPath(relativePath: string, view_range?: number[]): Promise<string | undefined>;
|
|
10
10
|
setMemory(mem: Memory): Promise<void>;
|
|
11
11
|
deleteMemory(relativePath: string): Promise<boolean>;
|
|
12
12
|
renameMemory(oldRelativePath: string, newRelativePath: string): Promise<boolean>;
|
|
13
13
|
insertIntoMemory(relativePath: string, lineNumber: number, text: string): Promise<boolean>;
|
|
14
14
|
replaceInMemory(relativePath: string, oldStr: string, newStr: string): Promise<boolean>;
|
|
15
15
|
}
|
|
16
|
-
export declare class
|
|
16
|
+
export declare class LocalFileMemoryStore implements IMemoryStore {
|
|
17
17
|
private lastModified;
|
|
18
|
-
private
|
|
18
|
+
private memoryRoot;
|
|
19
19
|
constructor(options?: {
|
|
20
20
|
initialmemories?: Memory[];
|
|
21
21
|
directory?: string;
|
|
22
22
|
});
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
private validatePath;
|
|
24
|
+
viewMemories(): Promise<string>;
|
|
25
|
+
getMemoryByPath(relativePath: string, view_range?: number[]): Promise<string | undefined>;
|
|
25
26
|
setMemory(mem: Memory): Promise<void>;
|
|
26
27
|
deleteMemory(relativePath: string): Promise<boolean>;
|
|
27
28
|
renameMemory(oldRelativePath: string, newRelativePath: string): Promise<boolean>;
|
|
@@ -33,7 +34,7 @@ export declare class PSMemoryTool extends PSAgentTool {
|
|
|
33
34
|
static readonly toolName = "memory_tool";
|
|
34
35
|
private store;
|
|
35
36
|
constructor(options: {
|
|
36
|
-
store:
|
|
37
|
+
store: IMemoryStore;
|
|
37
38
|
});
|
|
38
39
|
run(_input: Record<string, any>, log?: PSAgentLogger): Promise<Record<string, any>>;
|
|
39
40
|
private run_view;
|