psadk 1.1.0 → 1.1.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.
Files changed (62) hide show
  1. package/README.md +6 -0
  2. package/build/main/index.d.ts +5 -0
  3. package/build/main/index.js +7 -1
  4. package/build/main/lib/PSAI.d.ts +1 -1
  5. package/build/main/lib/PSAgent.d.ts +11 -0
  6. package/build/main/lib/PSAgent.js +59 -30
  7. package/build/main/lib/PSAgentConfig.d.ts +1 -1
  8. package/build/main/lib/PSAgentLogger.d.ts +7 -0
  9. package/build/main/lib/PSAgentLogger.js +19 -4
  10. package/build/main/lib/jwt.js +3 -1
  11. package/build/main/lib/tools/BraveWebSearchTool.d.ts +11 -0
  12. package/build/main/lib/tools/BraveWebSearchTool.js +89 -0
  13. package/build/main/lib/tools/PSCommandLineTool.d.ts +10 -0
  14. package/build/main/lib/tools/PSCommandLineTool.js +74 -0
  15. package/build/main/lib/tools/PSReadFileTool.d.ts +10 -0
  16. package/build/main/lib/tools/PSReadFileTool.js +68 -0
  17. package/build/main/lib/tools/PSSubAgentTool.js +141 -14
  18. package/build/main/lib/tools/PSWriteFileTool.d.ts +10 -0
  19. package/build/main/lib/tools/PSWriteFileTool.js +74 -0
  20. package/build/main/lib/tools/ReadFileTool.d.ts +10 -0
  21. package/build/main/lib/tools/ReadFileTool.js +68 -0
  22. package/build/main/lib/tools/TodoTool.d.ts +57 -0
  23. package/build/main/lib/tools/TodoTool.js +220 -0
  24. package/build/main/lib/tools/WebSearchTool.d.ts +9 -0
  25. package/build/main/lib/tools/WebSearchTool.js +92 -0
  26. package/build/main/lib/tools/WriteFileTool.d.ts +10 -0
  27. package/build/main/lib/tools/WriteFileTool.js +74 -0
  28. package/build/main/lib/utils/helpers.d.ts +4 -0
  29. package/build/main/lib/utils/helpers.js +41 -0
  30. package/build/module/index.d.ts +5 -0
  31. package/build/module/index.js +29 -7
  32. package/build/module/lib/PSAI.d.ts +4 -0
  33. package/build/module/lib/PSAI.js +101 -24
  34. package/build/module/lib/PSAgent.d.ts +21 -10
  35. package/build/module/lib/PSAgent.js +126 -85
  36. package/build/module/lib/PSAgentConfig.d.ts +23 -0
  37. package/build/module/lib/PSAgentConfig.js +3 -0
  38. package/build/module/lib/PSAgentLogger.d.ts +20 -0
  39. package/build/module/lib/PSAgentLogger.js +51 -0
  40. package/build/module/lib/PSAgentTask.d.ts +12 -0
  41. package/build/module/lib/PSAgentTask.js +33 -0
  42. package/build/module/lib/PSAgentTool.d.ts +56 -0
  43. package/build/module/lib/PSAgentTool.js +91 -0
  44. package/build/module/lib/jwt.d.ts +41 -0
  45. package/build/module/lib/jwt.js +75 -0
  46. package/build/module/lib/tools/BraveWebSearchTool.d.ts +11 -0
  47. package/build/module/lib/tools/BraveWebSearchTool.js +90 -0
  48. package/build/module/lib/tools/PSArtifactTool.d.ts +7 -0
  49. package/build/module/lib/tools/PSArtifactTool.js +79 -0
  50. package/build/module/lib/tools/PSCommandLineTool.d.ts +10 -0
  51. package/build/module/lib/tools/PSCommandLineTool.js +75 -0
  52. package/build/module/lib/tools/PSReadFileTool.d.ts +10 -0
  53. package/build/module/lib/tools/PSReadFileTool.js +68 -0
  54. package/build/module/lib/tools/PSSubAgentTool.d.ts +20 -0
  55. package/build/module/lib/tools/PSSubAgentTool.js +289 -0
  56. package/build/module/lib/tools/PSWriteFileTool.d.ts +10 -0
  57. package/build/module/lib/tools/PSWriteFileTool.js +74 -0
  58. package/build/module/lib/tools/TodoTool.d.ts +57 -0
  59. package/build/module/lib/tools/TodoTool.js +224 -0
  60. package/build/module/lib/utils/helpers.d.ts +4 -0
  61. package/build/module/lib/utils/helpers.js +41 -0
  62. package/package.json +1 -1
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.PSTodoWriteTool = exports.PSTodoReadTool = exports.TaskStore = exports.TodoPriority = exports.TodoStatus = void 0;
8
+ const node_fs_1 = __importDefault(require("node:fs"));
9
+ const v4_1 = require("zod/v4");
10
+ const PSAgentTool_1 = require("../PSAgentTool");
11
+ var TodoStatus;
12
+ (function (TodoStatus) {
13
+ TodoStatus["PENDING"] = "pending";
14
+ TodoStatus["IN_PROGRESS"] = "in_progress";
15
+ TodoStatus["COMPLETED"] = "completed";
16
+ })(TodoStatus || (exports.TodoStatus = TodoStatus = {}));
17
+ var TodoPriority;
18
+ (function (TodoPriority) {
19
+ TodoPriority["HIGH"] = "high";
20
+ TodoPriority["MEDIUM"] = "medium";
21
+ TodoPriority["LOW"] = "low";
22
+ })(TodoPriority || (exports.TodoPriority = TodoPriority = {}));
23
+ class TaskStore {
24
+ constructor(todos, filename) {
25
+ this.lastModified = new Date().toISOString();
26
+ this.lastModified = new Date().toISOString();
27
+ this.todos = todos || [];
28
+ this.filename = filename;
29
+ if (filename) {
30
+ try {
31
+ if (node_fs_1.default.existsSync(filename)) {
32
+ const data = node_fs_1.default.readFileSync(filename, 'utf-8');
33
+ this.todos = JSON.parse(data);
34
+ this.lastModified = new Date().toISOString();
35
+ }
36
+ }
37
+ catch (error) {
38
+ console.error("Error loading todos from file:", error);
39
+ }
40
+ }
41
+ }
42
+ get LastModified() {
43
+ return this.lastModified;
44
+ }
45
+ get Todos() {
46
+ return this.todos;
47
+ }
48
+ set Todos(todos) {
49
+ this.todos = todos;
50
+ this.lastModified = new Date().toISOString();
51
+ if (this.filename) {
52
+ node_fs_1.default.writeFileSync(this.filename, JSON.stringify(this.todos, null, 2));
53
+ }
54
+ }
55
+ }
56
+ exports.TaskStore = TaskStore;
57
+ class PSTodoReadTool extends PSAgentTool_1.PSAgentTool {
58
+ constructor(options) {
59
+ super({
60
+ name: PSTodoReadTool.toolName,
61
+ description: `Read the current task list.\nReturns a list of todos with their current state.`,
62
+ type: "API",
63
+ local_execution: true,
64
+ hitl: true,
65
+ inputschema: {
66
+ url: "http://localhost/read_todo",
67
+ method: "POST",
68
+ requestBody: v4_1.z.toJSONSchema(v4_1.z.null().meta({
69
+ title: "read_todo_request_body",
70
+ description: "The request body parameters for the read_todo tool.",
71
+ }), { "io": "input" }),
72
+ },
73
+ });
74
+ this.store = options.store || new TaskStore([]);
75
+ }
76
+ run(_input, log) {
77
+ const logger = log || console;
78
+ return new Promise((resolve, reject) => {
79
+ try {
80
+ logger.info(`📋 Referring to tasks list.`);
81
+ const output = this.store.Todos;
82
+ return resolve({
83
+ status: 'success',
84
+ output,
85
+ });
86
+ }
87
+ catch (error) {
88
+ logger.error('Error reading todos:', error);
89
+ reject(error);
90
+ }
91
+ });
92
+ }
93
+ }
94
+ exports.PSTodoReadTool = PSTodoReadTool;
95
+ PSTodoReadTool.toolName = "read_todo";
96
+ class PSTodoWriteTool extends PSAgentTool_1.PSAgentTool {
97
+ constructor(options) {
98
+ super({
99
+ name: PSTodoWriteTool.toolName,
100
+ description: `Update the entire task list (complete replacement).
101
+ Parameters:
102
+ todos: List of todo items, each containing:
103
+ - id: Unique identifier for the task
104
+ - content: Task description
105
+ - status: Current status (pending, in_progress, completed)
106
+ - priority: Task priority (high, medium, low)
107
+ - metadata: Optional additional data
108
+
109
+ Returns success status and count of todos written.`,
110
+ type: "API",
111
+ local_execution: true,
112
+ hitl: true,
113
+ inputschema: {
114
+ url: "http://localhost/write_todo",
115
+ method: "POST",
116
+ requestBody: v4_1.z.toJSONSchema(v4_1.z.object({
117
+ todos: v4_1.z.array(v4_1.z.object({
118
+ id: v4_1.z.string().meta({
119
+ title: "id",
120
+ description: "The unique identifier for the todo item."
121
+ }),
122
+ content: v4_1.z.string().max(500).meta({
123
+ title: "content",
124
+ description: "The content of the todo item.",
125
+ }),
126
+ status: v4_1.z.enum(TodoStatus).meta({
127
+ title: "status",
128
+ description: "The current status of the todo item."
129
+ }),
130
+ priority: v4_1.z.enum(TodoPriority).meta({
131
+ title: "priority",
132
+ description: "The priority level of the todo item."
133
+ }),
134
+ created_at: v4_1.z.iso.date().meta({
135
+ title: "created_at",
136
+ description: "The creation date of the todo item."
137
+ }),
138
+ updated_at: v4_1.z.iso.date().meta({
139
+ title: "updated_at",
140
+ description: "The last update date of the todo item."
141
+ }),
142
+ metadata: v4_1.z.record(v4_1.z.string(), v4_1.z.any()).optional().meta({
143
+ description: "Additional metadata for the todo item."
144
+ })
145
+ })).meta({
146
+ title: "todos",
147
+ description: "The list of todos to write."
148
+ }),
149
+ }).meta({
150
+ title: "write_todo_request_body",
151
+ description: "The request body parameters for the write_todo tool.",
152
+ }), { "io": "input" }),
153
+ },
154
+ });
155
+ this.store = options.store || new TaskStore([]);
156
+ }
157
+ get Todos() {
158
+ return this.store.Todos;
159
+ }
160
+ run(input, log) {
161
+ if (!input.todos || !Array.isArray(input.todos)) {
162
+ throw new Error("Invalid todos provided.");
163
+ }
164
+ const logger = log || console;
165
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
166
+ let updateCount = 0;
167
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
168
+ let addCount = 0;
169
+ return new Promise((resolve, reject) => {
170
+ const todos = input.todos;
171
+ try {
172
+ //logger.info(`🛠️ Writing \`${todos.length}\` todos.`);
173
+ for (const t of todos) {
174
+ const idx = this.store.Todos.findIndex((todo) => todo.id === t.id);
175
+ if (idx >= 0) {
176
+ updateCount++;
177
+ this.store.Todos[idx] = {
178
+ id: t.id,
179
+ content: t.content,
180
+ status: t.status,
181
+ priority: t.priority,
182
+ created_at: t.created_at,
183
+ updated_at: t.updated_at,
184
+ metadata: t.metadata || {}
185
+ };
186
+ }
187
+ else {
188
+ addCount++;
189
+ this.store.Todos.push({
190
+ id: t.id,
191
+ content: t.content,
192
+ status: t.status,
193
+ priority: t.priority,
194
+ created_at: t.created_at,
195
+ updated_at: t.updated_at,
196
+ metadata: t.metadata || {}
197
+ });
198
+ }
199
+ }
200
+ const output = `📋 Updated task list with ${todos.length} items.`;
201
+ logger.info(output);
202
+ console.info("Tasks:");
203
+ for (const todo of this.store.Todos) {
204
+ console.info(`- [${todo.status === TodoStatus.COMPLETED ? '✅' : (todo.status === TodoStatus.IN_PROGRESS ? '⏳' : ' ')}] (${todo.priority}) ${todo.content} (ID: ${todo.id})`);
205
+ }
206
+ return resolve({
207
+ status: 'success',
208
+ output,
209
+ });
210
+ }
211
+ catch (error) {
212
+ logger.error('Error writing todos:', error);
213
+ reject(error);
214
+ }
215
+ });
216
+ }
217
+ }
218
+ exports.PSTodoWriteTool = PSTodoWriteTool;
219
+ PSTodoWriteTool.toolName = "write_todo";
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9kb1Rvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Rvb2xzL1RvZG9Ub29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1REFBdUQ7Ozs7OztBQUV2RCxzREFBeUI7QUFFekIsK0JBQTJCO0FBRzNCLGdEQUE2QztBQUU3QyxJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDbEIsaUNBQW1CLENBQUE7SUFDbkIseUNBQTJCLENBQUE7SUFDM0IscUNBQXVCLENBQUE7QUFDM0IsQ0FBQyxFQUpXLFVBQVUsMEJBQVYsVUFBVSxRQUlyQjtBQUVELElBQVksWUFJWDtBQUpELFdBQVksWUFBWTtJQUNwQiw2QkFBYSxDQUFBO0lBQ2IsaUNBQWlCLENBQUE7SUFDakIsMkJBQVcsQ0FBQTtBQUNmLENBQUMsRUFKVyxZQUFZLDRCQUFaLFlBQVksUUFJdkI7QUFZRCxNQUFhLFNBQVM7SUFJbEIsWUFBWSxLQUFhLEVBQUUsUUFBZ0I7UUFIbkMsaUJBQVksR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBSXBELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQztnQkFDSCxJQUFJLGlCQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQzVCLE1BQU0sSUFBSSxHQUFHLGlCQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDaEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUM5QixJQUFJLENBQUMs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
@@ -0,0 +1,9 @@
1
+ import { AgentTool } from "./AgentTool";
2
+ export declare class WebSearchTool extends AgentTool {
3
+ static readonly toolName = "search_web";
4
+ constructor(options: {
5
+ logger?: (message: string) => void;
6
+ });
7
+ static bravewebsearch(query: string): Promise<string>;
8
+ execute(input: Record<string, any>): Promise<Record<string, any>>;
9
+ }
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebSearchTool = void 0;
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
5
+ const AgentTool_1 = require("./AgentTool");
6
+ const v4_1 = require("zod/v4");
7
+ class WebSearchTool extends AgentTool_1.AgentTool {
8
+ constructor(options) {
9
+ super({
10
+ name: WebSearchTool.toolName,
11
+ description: "searches the web for the given query.",
12
+ type: "API",
13
+ local_execution: true,
14
+ hitl: true,
15
+ inputs: {
16
+ title: "search_inputs",
17
+ description: "Inputs for search tool.",
18
+ url: `http://localhost/${WebSearchTool.toolName}`,
19
+ method: "POST",
20
+ requestBody: v4_1.z.toJSONSchema(v4_1.z.object({
21
+ query: v4_1.z.url().meta({
22
+ title: "search query",
23
+ description: "The query to search the web for."
24
+ }),
25
+ }).meta({
26
+ title: "search_request_body",
27
+ description: "The request body parameters for the search tool.",
28
+ }), { "io": "input" }),
29
+ },
30
+ logger: options.logger,
31
+ });
32
+ }
33
+ static async bravewebsearch(query) {
34
+ try {
35
+ const params = new URLSearchParams({
36
+ q: query,
37
+ count: '10',
38
+ text_decorations: 'false',
39
+ result_filter: 'web',
40
+ summary: '1'
41
+ });
42
+ const response = await fetch(`https://api.search.brave.com/res/v1/web/search?${params}`, {
43
+ method: 'get',
44
+ headers: {
45
+ 'Accept': 'application/json',
46
+ 'Accept-Encoding': 'gzip',
47
+ 'x-subscription-token': process.env.BRAVE_SEARCH_API_KEY || '',
48
+ },
49
+ });
50
+ const body = await response.json();
51
+ //console.log("Brave Search Response:", body);
52
+ let output = '';
53
+ body.web.results.forEach((item) => {
54
+ output += `\n\n#### ${item.title}\n`;
55
+ output += `\n${item.description}\n`;
56
+ output += `\n[Read More](${item.url})\n\n`;
57
+ });
58
+ return output;
59
+ }
60
+ catch (error) {
61
+ console.error("Error in bravewebsearch:", error);
62
+ throw error;
63
+ }
64
+ }
65
+ execute(input) {
66
+ if (!input.query || typeof input.query !== "string") {
67
+ throw new Error("Invalid query provided.");
68
+ }
69
+ const log = this.logger || console.log;
70
+ return new Promise((resolve, reject) => {
71
+ try {
72
+ log(`\n\n> Searching web: ${input.query}:\n`);
73
+ const output = WebSearchTool.bravewebsearch(input.query);
74
+ return resolve({
75
+ status: 'success',
76
+ output
77
+ });
78
+ }
79
+ catch (error) {
80
+ if (error instanceof Error) {
81
+ reject(new Error(`Failed to search web: ${input.query}. Error: ${error.message}`));
82
+ }
83
+ else {
84
+ reject(new Error(`Failed to search web: ${input.query}. Unknown error.`));
85
+ }
86
+ }
87
+ });
88
+ }
89
+ }
90
+ exports.WebSearchTool = WebSearchTool;
91
+ WebSearchTool.toolName = "search_web";
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2ViU2VhcmNoVG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdG9vbHMvV2ViU2VhcmNoVG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1REFBdUQ7QUFDdkQsMkNBQXdDO0FBQ3hDLCtCQUEyQjtBQUUzQixNQUFhLGFBQWMsU0FBUSxxQkFBUztJQUUzQyxZQUFZLE9BRVg7UUFDQSxLQUFLLENBQUM7WUFDTCxJQUFJLEVBQUUsYUFBYSxDQUFDLFFBQVE7WUFDNUIsV0FBVyxFQUFFLHVDQUF1QztZQUNwRCxJQUFJLEVBQUUsS0FBSztZQUNYLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLElBQUksRUFBRSxJQUFJO1lBQ1YsTUFBTSxFQUFFO2dCQUNQLEtBQUssRUFBRSxlQUFlO2dCQUN0QixXQUFXLEVBQUUseUJBQXlCO2dCQUN0QyxHQUFHLEVBQUUsb0JBQW9CLGFBQWEsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pELE1BQU0sRUFBRSxNQUFNO2dCQUNkLFdBQVcsRUFBRSxNQUFDLENBQUMsWUFBWSxDQUFDLE1BQUMsQ0FBQyxNQUFNLENBQUM7b0JBQ3BDLEtBQUssRUFBRSxNQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO3dCQUNuQixLQUFLLEVBQUUsY0FBYzt3QkFDckIsV0FBVyxFQUFFLGtDQUFrQztxQkFDL0MsQ0FBQztpQkFDRixDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNQLEtBQUssRUFBRSxxQkFBcUI7b0JBQzVCLFdBQVcsRUFBRSxrREFBa0Q7aUJBQy9ELENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQzthQUN0QjtZQUNELE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtTQUN0QixDQUFDLENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBYTtRQUMvQyxJQUFJLENBQUM7WUFDSixNQUFNLE1BQU0sR0FBRyxJ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
@@ -0,0 +1,10 @@
1
+ import { AgentTool } from "./AgentTool";
2
+ import { TaskLogger } from "./TaskLogger";
3
+ export declare class WriteFileTool extends AgentTool {
4
+ static readonly toolName = "write_file";
5
+ private paths;
6
+ constructor(options: {
7
+ paths?: string[];
8
+ });
9
+ execute(input: Record<string, any>, log?: TaskLogger): Promise<Record<string, any>>;
10
+ }
@@ -0,0 +1,74 @@
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
+ exports.WriteFileTool = void 0;
7
+ /* eslint-disable @typescript-eslint/no-explicit-any */
8
+ const AgentTool_1 = require("./AgentTool");
9
+ const v4_1 = require("zod/v4");
10
+ const fs_1 = __importDefault(require("fs"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const helpers_1 = require("./helpers");
13
+ class WriteFileTool extends AgentTool_1.AgentTool {
14
+ constructor(options) {
15
+ super({
16
+ name: WriteFileTool.toolName,
17
+ description: "Writes content to a file in repository identified by 'path'.",
18
+ type: "API",
19
+ local_execution: true,
20
+ hitl: true,
21
+ inputs: {
22
+ url: `http://localhost/${WriteFileTool.toolName}`,
23
+ method: "POST",
24
+ requestBody: v4_1.z.toJSONSchema(v4_1.z.object({
25
+ path: v4_1.z.string().meta({
26
+ title: "File_Path",
27
+ description: "The path of the file to be write. This should be a valid file path in the repository."
28
+ }),
29
+ content: v4_1.z.string().meta({
30
+ title: "File_Content",
31
+ description: "The content to be written to the file. This should be a valid string content."
32
+ }),
33
+ }).meta({
34
+ title: `${WriteFileTool.toolName}_request_body`,
35
+ description: `The request body parameters for the ${WriteFileTool.toolName} tool.`,
36
+ }), { "io": "input" }),
37
+ },
38
+ });
39
+ this.paths = [];
40
+ this.paths = options.paths || [];
41
+ }
42
+ execute(input, log) {
43
+ if (!input.path || typeof input.path !== "string") {
44
+ throw new Error("Invalid file path provided.");
45
+ }
46
+ const logger = log || console;
47
+ return new Promise((resolve, reject) => {
48
+ const filePath = path_1.default.resolve(...this.paths, input.path);
49
+ const content = input.content;
50
+ // if (!filePath.startsWith(run.srcDir))
51
+ // filePath = path.join(run.srcDir, lastevent.toolInput.request_body.path);
52
+ try {
53
+ logger.info(`📝 Writing ${(0, helpers_1.formatFileSize)(content.length)} to file:\`${input.path}\``);
54
+ fs_1.default.mkdirSync(path_1.default.dirname(filePath), { recursive: true });
55
+ fs_1.default.writeFileSync(filePath, (0, helpers_1.unEscapeHTML)(content), 'utf-8');
56
+ // logger.info(`> Wrote ${content.length} bytes to file.`);
57
+ return resolve({
58
+ status: 'success'
59
+ });
60
+ }
61
+ catch (error) {
62
+ if (error instanceof Error) {
63
+ reject(new Error(`Failed to write file at path: ${input.path}. Error: ${error.message}`));
64
+ }
65
+ else {
66
+ reject(new Error(`Failed to write file at path: ${input.path}. Unknown error.`));
67
+ }
68
+ }
69
+ });
70
+ }
71
+ }
72
+ exports.WriteFileTool = WriteFileTool;
73
+ WriteFileTool.toolName = "write_file";
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV3JpdGVGaWxlVG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdG9vbHMvV3JpdGVGaWxlVG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx1REFBdUQ7QUFDdkQsMkNBQXdDO0FBQ3hDLCtCQUEyQjtBQUMzQiw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBRXhCLHVDQUF5RDtBQUV6RCxNQUFhLGFBQWMsU0FBUSxxQkFBUztJQUczQyxZQUFZLE9BRVg7UUFDQSxLQUFLLENBQUM7WUFDTCxJQUFJLEVBQUUsYUFBYSxDQUFDLFFBQVE7WUFDNUIsV0FBVyxFQUFFLDhEQUE4RDtZQUMzRSxJQUFJLEVBQUUsS0FBSztZQUNYLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLElBQUksRUFBRSxJQUFJO1lBQ1YsTUFBTSxFQUFFO2dCQUNQLEdBQUcsRUFBRSxvQkFBb0IsYUFBYSxDQUFDLFFBQVEsRUFBRTtnQkFDakQsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsV0FBVyxFQUFFLE1BQUMsQ0FBQyxZQUFZLENBQUMsTUFBQyxDQUFDLE1BQU0sQ0FBQztvQkFDcEMsSUFBSSxFQUFFLE1BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7d0JBQ3JCLEtBQUssRUFBRSxXQUFXO3dCQUNsQixXQUFXLEVBQUUsdUZBQXVGO3FCQUNwRyxDQUFDO29CQUNGLE9BQU8sRUFBRSxNQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO3dCQUN4QixLQUFLLEVBQUUsY0FBYzt3QkFDckIsV0FBVyxFQUFFLCtFQUErRTtxQkFDNUYsQ0FBQztpQkFDRixDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNQLEtBQUssRUFBRSxHQUFHLGFBQWEsQ0FBQyxRQUFRLGVBQWU7b0JBQy9DLFdBQVcsRUFBRSx1Q0FBdUMsYUFBYSxDQUFDLFFBQVEsUUFBUTtpQkFDbEYsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2FBQ3RCO1NBQ0QsQ0FBQyxDQUFDO1FBM0JJLFVBQUssR0FBYSxFQUFFLENBQUM7UUE0QjVCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUNNLE9BQU8sQ0FBQyxLQUEwQixFQUFFLEdBQWdCO1FBQzFELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuRCxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLENBQUM7UUFDOUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QyxNQUFNLFFBQVEsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUM5Qix3Q0FBd0M7WUFDeEMsNEVBQTRFO1lBQzVFLElBQUksQ0FBQztnQkFDSixNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBQSx3QkFBYyxFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsY0FBYyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztnQkFDdEYsWUFBRSxDQUFDLFNBQVMsQ0FBQyxjQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzFELFlBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUEsc0JBQVksRUFBQyxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDdkQsMkRBQTJEO2dCQUMvRCxPQUFPLE9BQU8sQ0FBQztvQkFDZCxNQUFNLEVBQUUsU0FBUztpQkFDakIsQ0FBQyxDQUFDO1lBQ0osQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2hCLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO29CQUM1QixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsaUNBQWlDLEtBQUssQ0FBQyxJQUFJLFlBQVksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDM0YsQ0FBQztxQkFBTSxDQUFDO29CQUNQLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsS0FBSyxDQUFDLElBQUksa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2dCQUNsRixDQUFDO1lBQ0YsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7QUExREYsc0NBMkRDO0FBMUR1QixzQkFBUSxHQUFHLFlBQVksQUFBZixDQUFnQiJ9
@@ -0,0 +1,4 @@
1
+ export declare function sleep(ms: number): Promise<unknown>;
2
+ export declare function formatFileSize(bytes: number, decimalPoint?: number): string;
3
+ export declare function truncateString(str: string, num: number): string;
4
+ export declare function unEscapeHTML(text: string): string;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sleep = sleep;
4
+ exports.formatFileSize = formatFileSize;
5
+ exports.truncateString = truncateString;
6
+ exports.unEscapeHTML = unEscapeHTML;
7
+ async function sleep(ms) {
8
+ return new Promise(resolve => setTimeout(resolve, ms));
9
+ }
10
+ function formatFileSize(bytes, decimalPoint = 2) {
11
+ if (bytes === 0)
12
+ return '0 Bytes';
13
+ const k = 1024;
14
+ const dm = decimalPoint < 0 ? 0 : decimalPoint;
15
+ const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
16
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
17
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
18
+ }
19
+ function truncateString(str, num) {
20
+ if (str.length <= num) {
21
+ return str;
22
+ }
23
+ return str.slice(0, num) + '...';
24
+ }
25
+ function unEscapeHTML(text) {
26
+ const map = {
27
+ '&amp;': '&',
28
+ '&lt;': '<',
29
+ '&gt;': '>',
30
+ '&quot;': '"',
31
+ '&#039;': "'",
32
+ };
33
+ let result = text.replace(/&amp;|&lt;|&gt;|&quot;|&#039;/g, function (m) { return map[m]; });
34
+ // Unescape Unicode sequences
35
+ result = result.replace(/\\u[\dA-Fa-f]{4}/g, (unicode) => {
36
+ const codePoint = parseInt(unicode.slice(2), 16);
37
+ return String.fromCharCode(codePoint);
38
+ });
39
+ return result;
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdXRpbHMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNCQUVDO0FBR0Qsd0NBT0M7QUFFRCx3Q0FLQztBQUVELG9DQWdCQztBQXJDTSxLQUFLLFVBQVUsS0FBSyxDQUFDLEVBQVU7SUFDcEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBR0QsU0FBZ0IsY0FBYyxDQUFDLEtBQWEsRUFBRSxZQUFZLEdBQUcsQ0FBQztJQUM1RCxJQUFJLEtBQUssS0FBSyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDbEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2YsTUFBTSxFQUFFLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDL0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsT0FBTyxVQUFVLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNFLENBQUM7QUFFRCxTQUFnQixjQUFjLENBQUMsR0FBVyxFQUFFLEdBQVc7SUFDckQsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ25DLENBQUM7QUFFRCxTQUFnQixZQUFZLENBQUMsSUFBWTtJQUV2QyxNQUFNLEdBQUcsR0FBMkI7UUFDbEMsT0FBTyxFQUFFLEdBQUc7UUFDWixNQUFNLEVBQUUsR0FBRztRQUNYLE1BQU0sRUFBRSxHQUFHO1FBQ1gsUUFBUSxFQUFFLEdBQUc7UUFDYixRQUFRLEVBQUUsR0FBRztLQUNkLENBQUM7SUFDRixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxFQUFFLFVBQVMsQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUYsNkJBQTZCO0lBQzdCLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDckQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakQsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyJ9
@@ -4,3 +4,8 @@ export * from './lib/PSAgentConfig';
4
4
  export * from './lib/PSAgentLogger';
5
5
  export * from './lib/PSAgentTool';
6
6
  export * from './lib/PSAgentTask';
7
+ export * from './lib/tools/TodoTool';
8
+ export * from './lib/tools/PSCommandLineTool';
9
+ export * from './lib/tools/PSReadFileTool';
10
+ export * from './lib/tools/PSWriteFileTool';
11
+ export * from './lib/tools/PSSubAgentTool';
@@ -1,7 +1,29 @@
1
- export * from './lib/PSAI';
2
- export * from './lib/PSAgent';
3
- export * from './lib/PSAgentConfig';
4
- export * from './lib/PSAgentLogger';
5
- export * from './lib/PSAgentTool';
6
- export * from './lib/PSAgentTask';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxtQkFBbUIsQ0FBQyJ9
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./lib/PSAI"), exports);
18
+ __exportStar(require("./lib/PSAgent"), exports);
19
+ __exportStar(require("./lib/PSAgentConfig"), exports);
20
+ __exportStar(require("./lib/PSAgentLogger"), exports);
21
+ __exportStar(require("./lib/PSAgentTool"), exports);
22
+ __exportStar(require("./lib/PSAgentTask"), exports);
23
+ __exportStar(require("./lib/tools/TodoTool"), exports);
24
+ __exportStar(require("./lib/tools/PSCommandLineTool"), exports);
25
+ __exportStar(require("./lib/tools/PSReadFileTool"), exports);
26
+ __exportStar(require("./lib/tools/PSWriteFileTool"), exports);
27
+ __exportStar(require("./lib/tools/PSSubAgentTool"), exports);
28
+ ;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEyQjtBQUMzQixnREFBOEI7QUFDOUIsc0RBQW9DO0FBQ3BDLHNEQUFvQztBQUNwQyxvREFBa0M7QUFDbEMsb0RBQWtDO0FBQ2xDLHVEQUFxQztBQUNyQyxnRUFBOEM7QUFDOUMsNkRBQTJDO0FBQzNDLDhEQUE0QztBQUM1Qyw2REFBMkM7QUFBQSxDQUFDIn0=
@@ -22,4 +22,8 @@ export declare class PSAI {
22
22
  accessToken: string;
23
23
  refreshToken: string;
24
24
  }>;
25
+ static getLLMproxy({ headers, baseapiurl }?: {
26
+ headers?: Record<string, string>;
27
+ baseapiurl?: string;
28
+ }): import("express-serve-static-core").Express;
25
29
  }