cast-code 1.0.0
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/LICENSE +21 -0
- package/README.md +217 -0
- package/dist/app.module.js +45 -0
- package/dist/app.module.js.map +1 -0
- package/dist/common/common.module.js +49 -0
- package/dist/common/common.module.js.map +1 -0
- package/dist/common/constants/index.js +105 -0
- package/dist/common/constants/index.js.map +1 -0
- package/dist/common/index.js +24 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/services/config.service.js +119 -0
- package/dist/common/services/config.service.js.map +1 -0
- package/dist/common/services/llm.service.js +56 -0
- package/dist/common/services/llm.service.js.map +1 -0
- package/dist/common/services/markdown-parser.service.js +101 -0
- package/dist/common/services/markdown-parser.service.js.map +1 -0
- package/dist/common/services/markdown-renderer.service.js +220 -0
- package/dist/common/services/markdown-renderer.service.js.map +1 -0
- package/dist/common/services/multi-llm.service.js +115 -0
- package/dist/common/services/multi-llm.service.js.map +1 -0
- package/dist/common/types/index.js +20 -0
- package/dist/common/types/index.js.map +1 -0
- package/dist/common/types/markdown.types.js +6 -0
- package/dist/common/types/markdown.types.js.map +1 -0
- package/dist/main.js +84 -0
- package/dist/main.js.map +1 -0
- package/dist/modules/agents/agents.module.js +43 -0
- package/dist/modules/agents/agents.module.js.map +1 -0
- package/dist/modules/agents/definitions/architect.md +35 -0
- package/dist/modules/agents/definitions/backend.md +43 -0
- package/dist/modules/agents/definitions/coder.md +34 -0
- package/dist/modules/agents/definitions/devops.md +42 -0
- package/dist/modules/agents/definitions/frontend.md +46 -0
- package/dist/modules/agents/definitions/reviewer.md +35 -0
- package/dist/modules/agents/definitions/tester.md +41 -0
- package/dist/modules/agents/index.js +23 -0
- package/dist/modules/agents/index.js.map +1 -0
- package/dist/modules/agents/services/agent-loader.service.js +150 -0
- package/dist/modules/agents/services/agent-loader.service.js.map +1 -0
- package/dist/modules/agents/services/agent-registry.service.js +108 -0
- package/dist/modules/agents/services/agent-registry.service.js.map +1 -0
- package/dist/modules/agents/types/agent.types.js +6 -0
- package/dist/modules/agents/types/agent.types.js.map +1 -0
- package/dist/modules/agents/types/index.js +20 -0
- package/dist/modules/agents/types/index.js.map +1 -0
- package/dist/modules/config/config.module.js +38 -0
- package/dist/modules/config/config.module.js.map +1 -0
- package/dist/modules/config/index.js +24 -0
- package/dist/modules/config/index.js.map +1 -0
- package/dist/modules/config/services/config-commands.service.js +405 -0
- package/dist/modules/config/services/config-commands.service.js.map +1 -0
- package/dist/modules/config/services/config-manager.service.js +175 -0
- package/dist/modules/config/services/config-manager.service.js.map +1 -0
- package/dist/modules/config/services/init-config.service.js +238 -0
- package/dist/modules/config/services/init-config.service.js.map +1 -0
- package/dist/modules/config/types/config.types.js +163 -0
- package/dist/modules/config/types/config.types.js.map +1 -0
- package/dist/modules/config/types/index.js +20 -0
- package/dist/modules/config/types/index.js.map +1 -0
- package/dist/modules/core/core.module.js +60 -0
- package/dist/modules/core/core.module.js.map +1 -0
- package/dist/modules/core/index.js +22 -0
- package/dist/modules/core/index.js.map +1 -0
- package/dist/modules/core/services/deep-agent.service.js +575 -0
- package/dist/modules/core/services/deep-agent.service.js.map +1 -0
- package/dist/modules/core/services/plan-mode.service.js +225 -0
- package/dist/modules/core/services/plan-mode.service.js.map +1 -0
- package/dist/modules/git/git.module.js +48 -0
- package/dist/modules/git/git.module.js.map +1 -0
- package/dist/modules/git/index.js +23 -0
- package/dist/modules/git/index.js.map +1 -0
- package/dist/modules/git/services/code-review.service.js +330 -0
- package/dist/modules/git/services/code-review.service.js.map +1 -0
- package/dist/modules/git/services/commit-generator.service.js +403 -0
- package/dist/modules/git/services/commit-generator.service.js.map +1 -0
- package/dist/modules/git/services/index.js +21 -0
- package/dist/modules/git/services/index.js.map +1 -0
- package/dist/modules/git/services/monorepo-detector.service.js +338 -0
- package/dist/modules/git/services/monorepo-detector.service.js.map +1 -0
- package/dist/modules/git/services/pr-generator.service.js +429 -0
- package/dist/modules/git/services/pr-generator.service.js.map +1 -0
- package/dist/modules/git/services/release-notes.service.js +426 -0
- package/dist/modules/git/services/release-notes.service.js.map +1 -0
- package/dist/modules/git/types/git.types.js +6 -0
- package/dist/modules/git/types/git.types.js.map +1 -0
- package/dist/modules/git/types/index.js +20 -0
- package/dist/modules/git/types/index.js.map +1 -0
- package/dist/modules/mcp/catalog/mcp-templates.js +606 -0
- package/dist/modules/mcp/catalog/mcp-templates.js.map +1 -0
- package/dist/modules/mcp/index.js +23 -0
- package/dist/modules/mcp/index.js.map +1 -0
- package/dist/modules/mcp/mcp.module.js +35 -0
- package/dist/modules/mcp/mcp.module.js.map +1 -0
- package/dist/modules/mcp/services/mcp-client.service.js +289 -0
- package/dist/modules/mcp/services/mcp-client.service.js.map +1 -0
- package/dist/modules/mcp/services/mcp-registry.service.js +197 -0
- package/dist/modules/mcp/services/mcp-registry.service.js.map +1 -0
- package/dist/modules/mcp/types/index.js +20 -0
- package/dist/modules/mcp/types/index.js.map +1 -0
- package/dist/modules/mcp/types/mcp.types.js +6 -0
- package/dist/modules/mcp/types/mcp.types.js.map +1 -0
- package/dist/modules/memory/index.js +23 -0
- package/dist/modules/memory/index.js.map +1 -0
- package/dist/modules/memory/memory.module.js +35 -0
- package/dist/modules/memory/memory.module.js.map +1 -0
- package/dist/modules/memory/services/memory-tools.service.js +78 -0
- package/dist/modules/memory/services/memory-tools.service.js.map +1 -0
- package/dist/modules/memory/services/memory.service.js +169 -0
- package/dist/modules/memory/services/memory.service.js.map +1 -0
- package/dist/modules/memory/types/index.js +20 -0
- package/dist/modules/memory/types/index.js.map +1 -0
- package/dist/modules/memory/types/memory.types.js +6 -0
- package/dist/modules/memory/types/memory.types.js.map +1 -0
- package/dist/modules/mentions/index.js +22 -0
- package/dist/modules/mentions/index.js.map +1 -0
- package/dist/modules/mentions/mentions.module.js +32 -0
- package/dist/modules/mentions/mentions.module.js.map +1 -0
- package/dist/modules/mentions/services/mentions.service.js +336 -0
- package/dist/modules/mentions/services/mentions.service.js.map +1 -0
- package/dist/modules/mentions/types/index.js +20 -0
- package/dist/modules/mentions/types/index.js.map +1 -0
- package/dist/modules/mentions/types/mention.types.js +19 -0
- package/dist/modules/mentions/types/mention.types.js.map +1 -0
- package/dist/modules/permissions/index.js +23 -0
- package/dist/modules/permissions/index.js.map +1 -0
- package/dist/modules/permissions/permissions.module.js +35 -0
- package/dist/modules/permissions/permissions.module.js.map +1 -0
- package/dist/modules/permissions/services/permission.service.js +269 -0
- package/dist/modules/permissions/services/permission.service.js.map +1 -0
- package/dist/modules/permissions/services/prompt.service.js +116 -0
- package/dist/modules/permissions/services/prompt.service.js.map +1 -0
- package/dist/modules/permissions/types/permission.types.js +32 -0
- package/dist/modules/permissions/types/permission.types.js.map +1 -0
- package/dist/modules/project/index.js +24 -0
- package/dist/modules/project/index.js.map +1 -0
- package/dist/modules/project/project.module.js +38 -0
- package/dist/modules/project/project.module.js.map +1 -0
- package/dist/modules/project/services/project-analyzer.service.js +1063 -0
- package/dist/modules/project/services/project-analyzer.service.js.map +1 -0
- package/dist/modules/project/services/project-context.service.js +62 -0
- package/dist/modules/project/services/project-context.service.js.map +1 -0
- package/dist/modules/project/services/project-loader.service.js +147 -0
- package/dist/modules/project/services/project-loader.service.js.map +1 -0
- package/dist/modules/project/types/index.js +20 -0
- package/dist/modules/project/types/index.js.map +1 -0
- package/dist/modules/project/types/project.types.js +6 -0
- package/dist/modules/project/types/project.types.js.map +1 -0
- package/dist/modules/repl/index.js +21 -0
- package/dist/modules/repl/index.js.map +1 -0
- package/dist/modules/repl/repl.module.js +66 -0
- package/dist/modules/repl/repl.module.js.map +1 -0
- package/dist/modules/repl/services/commands/agent-commands.service.js +196 -0
- package/dist/modules/repl/services/commands/agent-commands.service.js.map +1 -0
- package/dist/modules/repl/services/commands/git-commands.service.js +500 -0
- package/dist/modules/repl/services/commands/git-commands.service.js.map +1 -0
- package/dist/modules/repl/services/commands/mcp-commands.service.js +579 -0
- package/dist/modules/repl/services/commands/mcp-commands.service.js.map +1 -0
- package/dist/modules/repl/services/commands/project-commands.service.js +226 -0
- package/dist/modules/repl/services/commands/project-commands.service.js.map +1 -0
- package/dist/modules/repl/services/commands/repl-commands.service.js +254 -0
- package/dist/modules/repl/services/commands/repl-commands.service.js.map +1 -0
- package/dist/modules/repl/services/repl.service.js +647 -0
- package/dist/modules/repl/services/repl.service.js.map +1 -0
- package/dist/modules/repl/services/smart-input.js +544 -0
- package/dist/modules/repl/services/smart-input.js.map +1 -0
- package/dist/modules/repl/services/welcome-screen.service.js +117 -0
- package/dist/modules/repl/services/welcome-screen.service.js.map +1 -0
- package/dist/modules/repl/utils/prompts-with-esc.js +187 -0
- package/dist/modules/repl/utils/prompts-with-esc.js.map +1 -0
- package/dist/modules/repl/utils/theme.js +185 -0
- package/dist/modules/repl/utils/theme.js.map +1 -0
- package/dist/modules/skills/definitions/general/file-operations.md +60 -0
- package/dist/modules/skills/definitions/general/git-operations.md +59 -0
- package/dist/modules/skills/definitions/general/planning.md +86 -0
- package/dist/modules/skills/definitions/general/search.md +59 -0
- package/dist/modules/skills/definitions/specialized/api-design.md +85 -0
- package/dist/modules/skills/definitions/specialized/database-operations.md +78 -0
- package/dist/modules/skills/definitions/specialized/frontend-bootstrap.md +71 -0
- package/dist/modules/skills/definitions/specialized/react-patterns.md +77 -0
- package/dist/modules/skills/definitions/specialized/testing-strategies.md +79 -0
- package/dist/modules/skills/index.js +23 -0
- package/dist/modules/skills/index.js.map +1 -0
- package/dist/modules/skills/services/skill-loader.service.js +130 -0
- package/dist/modules/skills/services/skill-loader.service.js.map +1 -0
- package/dist/modules/skills/services/skill-registry.service.js +96 -0
- package/dist/modules/skills/services/skill-registry.service.js.map +1 -0
- package/dist/modules/skills/skills.module.js +38 -0
- package/dist/modules/skills/skills.module.js.map +1 -0
- package/dist/modules/skills/types/index.js +20 -0
- package/dist/modules/skills/types/index.js.map +1 -0
- package/dist/modules/skills/types/skill.types.js +6 -0
- package/dist/modules/skills/types/skill.types.js.map +1 -0
- package/dist/modules/tasks/index.js +24 -0
- package/dist/modules/tasks/index.js.map +1 -0
- package/dist/modules/tasks/services/plan-executor.service.js +199 -0
- package/dist/modules/tasks/services/plan-executor.service.js.map +1 -0
- package/dist/modules/tasks/services/plan-mode.service.js +118 -0
- package/dist/modules/tasks/services/plan-mode.service.js.map +1 -0
- package/dist/modules/tasks/services/plan-persistence.service.js +148 -0
- package/dist/modules/tasks/services/plan-persistence.service.js.map +1 -0
- package/dist/modules/tasks/services/task-management.service.js +255 -0
- package/dist/modules/tasks/services/task-management.service.js.map +1 -0
- package/dist/modules/tasks/services/task-tools.service.js +270 -0
- package/dist/modules/tasks/services/task-tools.service.js.map +1 -0
- package/dist/modules/tasks/tasks.module.js +49 -0
- package/dist/modules/tasks/tasks.module.js.map +1 -0
- package/dist/modules/tasks/types/task.types.js +21 -0
- package/dist/modules/tasks/types/task.types.js.map +1 -0
- package/dist/modules/tools/index.js +24 -0
- package/dist/modules/tools/index.js.map +1 -0
- package/dist/modules/tools/services/filesystem-tools.service.js +450 -0
- package/dist/modules/tools/services/filesystem-tools.service.js.map +1 -0
- package/dist/modules/tools/services/search-tools.service.js +63 -0
- package/dist/modules/tools/services/search-tools.service.js.map +1 -0
- package/dist/modules/tools/services/shell-tools.service.js +194 -0
- package/dist/modules/tools/services/shell-tools.service.js.map +1 -0
- package/dist/modules/tools/services/tools-registry.service.js +83 -0
- package/dist/modules/tools/services/tools-registry.service.js.map +1 -0
- package/dist/modules/tools/tools.module.js +46 -0
- package/dist/modules/tools/tools.module.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "ShellToolsService", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return ShellToolsService;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _common = require("@nestjs/common");
|
|
12
|
+
const _tools = require("@langchain/core/tools");
|
|
13
|
+
const _zod = require("zod");
|
|
14
|
+
const _child_process = require("child_process");
|
|
15
|
+
const _util = require("util");
|
|
16
|
+
const _permissionservice = require("../../permissions/services/permission.service");
|
|
17
|
+
const _promises = /*#__PURE__*/ _interop_require_wildcard(require("node:fs/promises"));
|
|
18
|
+
const _path = /*#__PURE__*/ _interop_require_wildcard(require("path"));
|
|
19
|
+
const _os = /*#__PURE__*/ _interop_require_wildcard(require("os"));
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
21
|
+
if (typeof WeakMap !== "function") return null;
|
|
22
|
+
var cacheBabelInterop = new WeakMap();
|
|
23
|
+
var cacheNodeInterop = new WeakMap();
|
|
24
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
25
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
26
|
+
})(nodeInterop);
|
|
27
|
+
}
|
|
28
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
29
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
30
|
+
return obj;
|
|
31
|
+
}
|
|
32
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
33
|
+
return {
|
|
34
|
+
default: obj
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
38
|
+
if (cache && cache.has(obj)) {
|
|
39
|
+
return cache.get(obj);
|
|
40
|
+
}
|
|
41
|
+
var newObj = {
|
|
42
|
+
__proto__: null
|
|
43
|
+
};
|
|
44
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
45
|
+
for(var key in obj){
|
|
46
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
47
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
48
|
+
if (desc && (desc.get || desc.set)) {
|
|
49
|
+
Object.defineProperty(newObj, key, desc);
|
|
50
|
+
} else {
|
|
51
|
+
newObj[key] = obj[key];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
newObj.default = obj;
|
|
56
|
+
if (cache) {
|
|
57
|
+
cache.set(obj, newObj);
|
|
58
|
+
}
|
|
59
|
+
return newObj;
|
|
60
|
+
}
|
|
61
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
62
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
63
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
64
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
65
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
66
|
+
}
|
|
67
|
+
function _ts_metadata(k, v) {
|
|
68
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
69
|
+
}
|
|
70
|
+
const execAsync = (0, _util.promisify)(_child_process.exec);
|
|
71
|
+
let ShellToolsService = class ShellToolsService {
|
|
72
|
+
getTools() {
|
|
73
|
+
return [
|
|
74
|
+
this.createShellTool(),
|
|
75
|
+
this.createBackgroundShellTool()
|
|
76
|
+
];
|
|
77
|
+
}
|
|
78
|
+
createShellTool() {
|
|
79
|
+
return (0, _tools.tool)(async ({ command, cwd, timeout, description })=>{
|
|
80
|
+
const allowed = await this.permissionService.checkPermission(command);
|
|
81
|
+
if (!allowed) {
|
|
82
|
+
return 'Command execution denied by user';
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
const { stdout, stderr } = await execAsync(command, {
|
|
86
|
+
cwd: cwd || process.cwd(),
|
|
87
|
+
timeout: timeout || 120000,
|
|
88
|
+
maxBuffer: 10 * 1024 * 1024
|
|
89
|
+
});
|
|
90
|
+
const output = stdout || stderr;
|
|
91
|
+
if (output.length > 30000) {
|
|
92
|
+
return output.slice(0, 30000) + '\n... (truncated)';
|
|
93
|
+
}
|
|
94
|
+
return output || 'Command completed with no output';
|
|
95
|
+
} catch (error) {
|
|
96
|
+
const execError = error;
|
|
97
|
+
if (execError.stdout || execError.stderr) {
|
|
98
|
+
return `Exit with error:\n${execError.stderr || execError.stdout}`;
|
|
99
|
+
}
|
|
100
|
+
return `Error: ${execError.message}`;
|
|
101
|
+
}
|
|
102
|
+
}, {
|
|
103
|
+
name: 'shell',
|
|
104
|
+
description: 'Execute a shell command with permission checking. Use for git, npm, docker, etc. Dangerous commands will require user approval.',
|
|
105
|
+
schema: _zod.z.object({
|
|
106
|
+
command: _zod.z.string().describe('Command to execute'),
|
|
107
|
+
cwd: _zod.z.string().optional().describe('Working directory'),
|
|
108
|
+
timeout: _zod.z.number().optional().describe('Timeout in ms (default 120000, max 600000)'),
|
|
109
|
+
description: _zod.z.string().optional().describe('Brief description of what this command does')
|
|
110
|
+
})
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
createBackgroundShellTool() {
|
|
114
|
+
return (0, _tools.tool)(async ({ command, cwd })=>{
|
|
115
|
+
const allowed = await this.permissionService.checkPermission(command);
|
|
116
|
+
if (!allowed) {
|
|
117
|
+
return 'Command execution denied by user';
|
|
118
|
+
}
|
|
119
|
+
const processId = `bg-${++this.processCounter}`;
|
|
120
|
+
const outputFile = _path.join(_os.tmpdir(), `cast-bg-${processId}.log`);
|
|
121
|
+
return new Promise((resolve)=>{
|
|
122
|
+
const logFd = require('fs').openSync(outputFile, 'w');
|
|
123
|
+
const child = (0, _child_process.spawn)(command, {
|
|
124
|
+
cwd: cwd || process.cwd(),
|
|
125
|
+
shell: true,
|
|
126
|
+
detached: true,
|
|
127
|
+
stdio: [
|
|
128
|
+
'ignore',
|
|
129
|
+
logFd,
|
|
130
|
+
logFd
|
|
131
|
+
]
|
|
132
|
+
});
|
|
133
|
+
this.backgroundProcesses.set(processId, {
|
|
134
|
+
process: child,
|
|
135
|
+
command,
|
|
136
|
+
outputFile,
|
|
137
|
+
startedAt: Date.now()
|
|
138
|
+
});
|
|
139
|
+
child.unref();
|
|
140
|
+
require('fs').closeSync(logFd);
|
|
141
|
+
resolve(JSON.stringify({
|
|
142
|
+
success: true,
|
|
143
|
+
processId,
|
|
144
|
+
outputFile,
|
|
145
|
+
message: 'Command started in background. Use task_output to check progress.'
|
|
146
|
+
}));
|
|
147
|
+
});
|
|
148
|
+
}, {
|
|
149
|
+
name: 'shell_background',
|
|
150
|
+
description: 'Execute a command in background. Use for long-running tasks like dev servers, watch mode, builds.',
|
|
151
|
+
schema: _zod.z.object({
|
|
152
|
+
command: _zod.z.string().describe('Command to execute in background'),
|
|
153
|
+
cwd: _zod.z.string().optional().describe('Working directory')
|
|
154
|
+
})
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
async getBackgroundOutput(processId) {
|
|
158
|
+
const bgProcess = this.backgroundProcesses.get(processId);
|
|
159
|
+
if (!bgProcess) {
|
|
160
|
+
return 'Process not found';
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
const content = await _promises.readFile(bgProcess.outputFile, 'utf-8');
|
|
164
|
+
return content || 'No output yet';
|
|
165
|
+
} catch (error) {
|
|
166
|
+
return 'Error reading output: ' + error.message;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
killBackgroundProcess(processId) {
|
|
170
|
+
const bgProcess = this.backgroundProcesses.get(processId);
|
|
171
|
+
if (!bgProcess) return false;
|
|
172
|
+
try {
|
|
173
|
+
process.kill(-bgProcess.process.pid);
|
|
174
|
+
this.backgroundProcesses.delete(processId);
|
|
175
|
+
return true;
|
|
176
|
+
} catch {
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
constructor(permissionService){
|
|
181
|
+
this.permissionService = permissionService;
|
|
182
|
+
this.backgroundProcesses = new Map();
|
|
183
|
+
this.processCounter = 0;
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
ShellToolsService = _ts_decorate([
|
|
187
|
+
(0, _common.Injectable)(),
|
|
188
|
+
_ts_metadata("design:type", Function),
|
|
189
|
+
_ts_metadata("design:paramtypes", [
|
|
190
|
+
typeof _permissionservice.PermissionService === "undefined" ? Object : _permissionservice.PermissionService
|
|
191
|
+
])
|
|
192
|
+
], ShellToolsService);
|
|
193
|
+
|
|
194
|
+
//# sourceMappingURL=shell-tools.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/tools/services/shell-tools.service.ts"],"sourcesContent":["import { Injectable } from '@nestjs/common';\nimport { tool } from '@langchain/core/tools';\nimport { z } from 'zod';\nimport { exec, spawn } from 'child_process';\nimport { promisify } from 'util';\nimport { PermissionService } from '../../permissions/services/permission.service';\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport * as os from 'os';\n\nconst execAsync = promisify(exec);\n\ninterface ExecError extends Error {\n stdout?: string;\n stderr?: string;\n}\n\n@Injectable()\nexport class ShellToolsService {\n private backgroundProcesses: Map<string, any> = new Map();\n private processCounter = 0;\n\n constructor(private permissionService: PermissionService) {}\n\n getTools() {\n return [this.createShellTool(), this.createBackgroundShellTool()];\n }\n\n private createShellTool() {\n return tool(\n async ({ command, cwd, timeout, description }) => {\n const allowed = await this.permissionService.checkPermission(command);\n\n if (!allowed) {\n return 'Command execution denied by user';\n }\n\n try {\n const { stdout, stderr } = await execAsync(command, {\n cwd: cwd || process.cwd(),\n timeout: timeout || 120000, // Default 2min, max 10min\n maxBuffer: 10 * 1024 * 1024,\n });\n\n const output = stdout || stderr;\n\n if (output.length > 30000) {\n return output.slice(0, 30000) + '\\n... (truncated)';\n }\n\n return output || 'Command completed with no output';\n } catch (error) {\n const execError = error as ExecError;\n\n if (execError.stdout || execError.stderr) {\n return `Exit with error:\\n${execError.stderr || execError.stdout}`;\n }\n\n return `Error: ${execError.message}`;\n }\n },\n {\n name: 'shell',\n description:\n 'Execute a shell command with permission checking. Use for git, npm, docker, etc. Dangerous commands will require user approval.',\n schema: z.object({\n command: z.string().describe('Command to execute'),\n cwd: z.string().optional().describe('Working directory'),\n timeout: z\n .number()\n .optional()\n .describe('Timeout in ms (default 120000, max 600000)'),\n description: z\n .string()\n .optional()\n .describe('Brief description of what this command does'),\n }),\n },\n );\n }\n\n private createBackgroundShellTool() {\n return tool(\n async ({ command, cwd }) => {\n const allowed = await this.permissionService.checkPermission(command);\n\n if (!allowed) {\n return 'Command execution denied by user';\n }\n\n const processId = `bg-${++this.processCounter}`;\n const outputFile = path.join(os.tmpdir(), `cast-bg-${processId}.log`);\n\n return new Promise((resolve) => {\n const logFd = require('fs').openSync(outputFile, 'w');\n\n const child = spawn(command, {\n cwd: cwd || process.cwd(),\n shell: true,\n detached: true,\n stdio: ['ignore', logFd, logFd],\n });\n\n this.backgroundProcesses.set(processId, {\n process: child,\n command,\n outputFile,\n startedAt: Date.now(),\n });\n\n child.unref();\n require('fs').closeSync(logFd);\n\n resolve(\n JSON.stringify({\n success: true,\n processId,\n outputFile,\n message: 'Command started in background. Use task_output to check progress.',\n }),\n );\n });\n },\n {\n name: 'shell_background',\n description:\n 'Execute a command in background. Use for long-running tasks like dev servers, watch mode, builds.',\n schema: z.object({\n command: z.string().describe('Command to execute in background'),\n cwd: z.string().optional().describe('Working directory'),\n }),\n },\n );\n }\n\n async getBackgroundOutput(processId: string): Promise<string> {\n const bgProcess = this.backgroundProcesses.get(processId);\n if (!bgProcess) {\n return 'Process not found';\n }\n\n try {\n const content = await fs.readFile(bgProcess.outputFile, 'utf-8');\n return content || 'No output yet';\n } catch (error) {\n return 'Error reading output: ' + (error as Error).message;\n }\n }\n\n killBackgroundProcess(processId: string): boolean {\n const bgProcess = this.backgroundProcesses.get(processId);\n if (!bgProcess) return false;\n\n try {\n process.kill(-bgProcess.process.pid);\n this.backgroundProcesses.delete(processId);\n return true;\n } catch {\n return false;\n }\n }\n}\n"],"names":["ShellToolsService","execAsync","promisify","exec","getTools","createShellTool","createBackgroundShellTool","tool","command","cwd","timeout","description","allowed","permissionService","checkPermission","stdout","stderr","process","maxBuffer","output","length","slice","error","execError","message","name","schema","z","object","string","describe","optional","number","processId","processCounter","outputFile","path","join","os","tmpdir","Promise","resolve","logFd","require","openSync","child","spawn","shell","detached","stdio","backgroundProcesses","set","startedAt","Date","now","unref","closeSync","JSON","stringify","success","getBackgroundOutput","bgProcess","get","content","fs","readFile","killBackgroundProcess","kill","pid","delete","Map"],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "ToolsRegistryService", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return ToolsRegistryService;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _common = require("@nestjs/common");
|
|
12
|
+
const _filesystemtoolsservice = require("./filesystem-tools.service");
|
|
13
|
+
const _shelltoolsservice = require("./shell-tools.service");
|
|
14
|
+
const _searchtoolsservice = require("./search-tools.service");
|
|
15
|
+
const _tasktoolsservice = require("../../tasks/services/task-tools.service");
|
|
16
|
+
const _memorytoolsservice = require("../../memory/services/memory-tools.service");
|
|
17
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
18
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
19
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
20
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
21
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
|
+
}
|
|
23
|
+
function _ts_metadata(k, v) {
|
|
24
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
25
|
+
}
|
|
26
|
+
function _ts_param(paramIndex, decorator) {
|
|
27
|
+
return function(target, key) {
|
|
28
|
+
decorator(target, key, paramIndex);
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
let ToolsRegistryService = class ToolsRegistryService {
|
|
32
|
+
registerBuiltInTools() {
|
|
33
|
+
const allTools = [
|
|
34
|
+
...this.filesystemTools.getTools(),
|
|
35
|
+
...this.shellTools.getTools(),
|
|
36
|
+
...this.searchTools.getTools(),
|
|
37
|
+
...this.taskTools.getTools(),
|
|
38
|
+
...this.memoryTools.getTools()
|
|
39
|
+
];
|
|
40
|
+
for (const t of allTools){
|
|
41
|
+
this.tools.set(t.name, t);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
getTool(name) {
|
|
45
|
+
return this.tools.get(name);
|
|
46
|
+
}
|
|
47
|
+
getTools(names) {
|
|
48
|
+
return names.map((name)=>this.tools.get(name)).filter((t)=>t !== undefined);
|
|
49
|
+
}
|
|
50
|
+
getAllTools() {
|
|
51
|
+
return Array.from(this.tools.values());
|
|
52
|
+
}
|
|
53
|
+
getToolNames() {
|
|
54
|
+
return Array.from(this.tools.keys());
|
|
55
|
+
}
|
|
56
|
+
registerTool(t) {
|
|
57
|
+
this.tools.set(t.name, t);
|
|
58
|
+
}
|
|
59
|
+
constructor(filesystemTools, shellTools, searchTools, taskTools, memoryTools){
|
|
60
|
+
this.filesystemTools = filesystemTools;
|
|
61
|
+
this.shellTools = shellTools;
|
|
62
|
+
this.searchTools = searchTools;
|
|
63
|
+
this.taskTools = taskTools;
|
|
64
|
+
this.memoryTools = memoryTools;
|
|
65
|
+
this.tools = new Map();
|
|
66
|
+
this.registerBuiltInTools();
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
ToolsRegistryService = _ts_decorate([
|
|
70
|
+
(0, _common.Injectable)(),
|
|
71
|
+
_ts_param(3, (0, _common.Inject)((0, _common.forwardRef)(()=>_tasktoolsservice.TaskToolsService))),
|
|
72
|
+
_ts_param(4, (0, _common.Inject)((0, _common.forwardRef)(()=>_memorytoolsservice.MemoryToolsService))),
|
|
73
|
+
_ts_metadata("design:type", Function),
|
|
74
|
+
_ts_metadata("design:paramtypes", [
|
|
75
|
+
typeof _filesystemtoolsservice.FilesystemToolsService === "undefined" ? Object : _filesystemtoolsservice.FilesystemToolsService,
|
|
76
|
+
typeof _shelltoolsservice.ShellToolsService === "undefined" ? Object : _shelltoolsservice.ShellToolsService,
|
|
77
|
+
typeof _searchtoolsservice.SearchToolsService === "undefined" ? Object : _searchtoolsservice.SearchToolsService,
|
|
78
|
+
typeof _tasktoolsservice.TaskToolsService === "undefined" ? Object : _tasktoolsservice.TaskToolsService,
|
|
79
|
+
typeof _memorytoolsservice.MemoryToolsService === "undefined" ? Object : _memorytoolsservice.MemoryToolsService
|
|
80
|
+
])
|
|
81
|
+
], ToolsRegistryService);
|
|
82
|
+
|
|
83
|
+
//# sourceMappingURL=tools-registry.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/tools/services/tools-registry.service.ts"],"sourcesContent":["import { Injectable, Inject, forwardRef } from '@nestjs/common';\nimport { StructuredTool } from '@langchain/core/tools';\nimport { FilesystemToolsService } from './filesystem-tools.service';\nimport { ShellToolsService } from './shell-tools.service';\nimport { SearchToolsService } from './search-tools.service';\nimport { TaskToolsService } from '../../tasks/services/task-tools.service';\nimport { MemoryToolsService } from '../../memory/services/memory-tools.service';\n\n@Injectable()\nexport class ToolsRegistryService {\n private tools: Map<string, StructuredTool> = new Map();\n\n constructor(\n private readonly filesystemTools: FilesystemToolsService,\n private readonly shellTools: ShellToolsService,\n private readonly searchTools: SearchToolsService,\n @Inject(forwardRef(() => TaskToolsService))\n private readonly taskTools: TaskToolsService,\n @Inject(forwardRef(() => MemoryToolsService))\n private readonly memoryTools: MemoryToolsService,\n ) {\n this.registerBuiltInTools();\n }\n\n private registerBuiltInTools() {\n const allTools = [\n ...this.filesystemTools.getTools(),\n ...this.shellTools.getTools(),\n ...this.searchTools.getTools(),\n ...this.taskTools.getTools(),\n ...this.memoryTools.getTools(),\n ];\n\n for (const t of allTools) {\n this.tools.set(t.name, t);\n }\n }\n\n getTool(name: string): StructuredTool | undefined {\n return this.tools.get(name);\n }\n\n getTools(names: string[]): StructuredTool[] {\n return names\n .map((name) => this.tools.get(name))\n .filter((t): t is StructuredTool => t !== undefined);\n }\n\n getAllTools(): StructuredTool[] {\n return Array.from(this.tools.values());\n }\n\n getToolNames(): string[] {\n return Array.from(this.tools.keys());\n }\n\n registerTool(t: StructuredTool) {\n this.tools.set(t.name, t);\n }\n}\n"],"names":["ToolsRegistryService","registerBuiltInTools","allTools","filesystemTools","getTools","shellTools","searchTools","taskTools","memoryTools","t","tools","set","name","getTool","get","names","map","filter","undefined","getAllTools","Array","from","values","getToolNames","keys","registerTool","Map","TaskToolsService","MemoryToolsService"],"mappings":";;;;+BASaA;;;eAAAA;;;wBATkC;wCAER;mCACL;oCACC;kCACF;oCACE;;;;;;;;;;;;;;;AAG5B,IAAA,AAAMA,uBAAN,MAAMA;IAeHC,uBAAuB;QAC7B,MAAMC,WAAW;eACZ,IAAI,CAACC,eAAe,CAACC,QAAQ;eAC7B,IAAI,CAACC,UAAU,CAACD,QAAQ;eACxB,IAAI,CAACE,WAAW,CAACF,QAAQ;eACzB,IAAI,CAACG,SAAS,CAACH,QAAQ;eACvB,IAAI,CAACI,WAAW,CAACJ,QAAQ;SAC7B;QAED,KAAK,MAAMK,KAAKP,SAAU;YACxB,IAAI,CAACQ,KAAK,CAACC,GAAG,CAACF,EAAEG,IAAI,EAAEH;QACzB;IACF;IAEAI,QAAQD,IAAY,EAA8B;QAChD,OAAO,IAAI,CAACF,KAAK,CAACI,GAAG,CAACF;IACxB;IAEAR,SAASW,KAAe,EAAoB;QAC1C,OAAOA,MACJC,GAAG,CAAC,CAACJ,OAAS,IAAI,CAACF,KAAK,CAACI,GAAG,CAACF,OAC7BK,MAAM,CAAC,CAACR,IAA2BA,MAAMS;IAC9C;IAEAC,cAAgC;QAC9B,OAAOC,MAAMC,IAAI,CAAC,IAAI,CAACX,KAAK,CAACY,MAAM;IACrC;IAEAC,eAAyB;QACvB,OAAOH,MAAMC,IAAI,CAAC,IAAI,CAACX,KAAK,CAACc,IAAI;IACnC;IAEAC,aAAahB,CAAiB,EAAE;QAC9B,IAAI,CAACC,KAAK,CAACC,GAAG,CAACF,EAAEG,IAAI,EAAEH;IACzB;IA9CA,YACE,AAAiBN,eAAuC,EACxD,AAAiBE,UAA6B,EAC9C,AAAiBC,WAA+B,EAChD,AACiBC,SAA2B,EAC5C,AACiBC,WAA+B,CAChD;aAPiBL,kBAAAA;aACAE,aAAAA;aACAC,cAAAA;aAEAC,YAAAA;aAEAC,cAAAA;aATXE,QAAqC,IAAIgB;QAW/C,IAAI,CAACzB,oBAAoB;IAC3B;AAqCF;;;iEA3C6B0B,kCAAgB;iEAEhBC,sCAAkB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "ToolsModule", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return ToolsModule;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _common = require("@nestjs/common");
|
|
12
|
+
const _filesystemtoolsservice = require("./services/filesystem-tools.service");
|
|
13
|
+
const _shelltoolsservice = require("./services/shell-tools.service");
|
|
14
|
+
const _searchtoolsservice = require("./services/search-tools.service");
|
|
15
|
+
const _toolsregistryservice = require("./services/tools-registry.service");
|
|
16
|
+
const _permissionsmodule = require("../permissions/permissions.module");
|
|
17
|
+
const _tasksmodule = require("../tasks/tasks.module");
|
|
18
|
+
const _memorymodule = require("../memory/memory.module");
|
|
19
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
20
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
21
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
22
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
23
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
24
|
+
}
|
|
25
|
+
let ToolsModule = class ToolsModule {
|
|
26
|
+
};
|
|
27
|
+
ToolsModule = _ts_decorate([
|
|
28
|
+
(0, _common.Module)({
|
|
29
|
+
imports: [
|
|
30
|
+
_permissionsmodule.PermissionsModule,
|
|
31
|
+
(0, _common.forwardRef)(()=>_tasksmodule.TasksModule),
|
|
32
|
+
(0, _common.forwardRef)(()=>_memorymodule.MemoryModule)
|
|
33
|
+
],
|
|
34
|
+
providers: [
|
|
35
|
+
_filesystemtoolsservice.FilesystemToolsService,
|
|
36
|
+
_shelltoolsservice.ShellToolsService,
|
|
37
|
+
_searchtoolsservice.SearchToolsService,
|
|
38
|
+
_toolsregistryservice.ToolsRegistryService
|
|
39
|
+
],
|
|
40
|
+
exports: [
|
|
41
|
+
_toolsregistryservice.ToolsRegistryService
|
|
42
|
+
]
|
|
43
|
+
})
|
|
44
|
+
], ToolsModule);
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=tools.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/modules/tools/tools.module.ts"],"sourcesContent":["import { Module, forwardRef } from '@nestjs/common';\nimport { FilesystemToolsService } from './services/filesystem-tools.service';\nimport { ShellToolsService } from './services/shell-tools.service';\nimport { SearchToolsService } from './services/search-tools.service';\nimport { ToolsRegistryService } from './services/tools-registry.service';\nimport { PermissionsModule } from '../permissions/permissions.module';\nimport { TasksModule } from '../tasks/tasks.module';\nimport { MemoryModule } from '../memory/memory.module';\n\n@Module({\n imports: [PermissionsModule, forwardRef(() => TasksModule), forwardRef(() => MemoryModule)],\n providers: [\n FilesystemToolsService,\n ShellToolsService,\n SearchToolsService,\n ToolsRegistryService,\n ],\n exports: [ToolsRegistryService],\n})\nexport class ToolsModule {}\n"],"names":["ToolsModule","imports","PermissionsModule","forwardRef","TasksModule","MemoryModule","providers","FilesystemToolsService","ShellToolsService","SearchToolsService","ToolsRegistryService","exports"],"mappings":";;;;+BAmBaA;;;eAAAA;;;wBAnBsB;wCACI;mCACL;oCACC;sCACE;mCACH;6BACN;8BACC;;;;;;;AAYtB,IAAA,AAAMA,cAAN,MAAMA;AAAa;;;QATxBC,SAAS;YAACC,oCAAiB;YAAEC,IAAAA,kBAAU,EAAC,IAAMC,wBAAW;YAAGD,IAAAA,kBAAU,EAAC,IAAME,0BAAY;SAAE;QAC3FC,WAAW;YACTC,8CAAsB;YACtBC,oCAAiB;YACjBC,sCAAkB;YAClBC,0CAAoB;SACrB;QACDC,SAAS;YAACD,0CAAoB;SAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cast-code",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Multi-agent CLI system powered by DeepAgents",
|
|
5
|
+
"main": "dist/main.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"cast": "./dist/main.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"templates"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "nest build && chmod +x dist/main.js",
|
|
15
|
+
"start": "node dist/main.js",
|
|
16
|
+
"start:dev": "nest start --watch",
|
|
17
|
+
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
|
|
18
|
+
"lint:check": "eslint \"{src,apps,libs,test}/**/*.ts\"",
|
|
19
|
+
"format": "prettier --write .",
|
|
20
|
+
"format:check": "prettier --check .",
|
|
21
|
+
"prepublishOnly": "npm run build"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"ai",
|
|
25
|
+
"agents",
|
|
26
|
+
"cli",
|
|
27
|
+
"langchain",
|
|
28
|
+
"deepagents",
|
|
29
|
+
"multi-agent"
|
|
30
|
+
],
|
|
31
|
+
"author": "pedrocastanha",
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "https://github.com/pedrocastanha/cast-code"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"@inquirer/prompts": "^8.2.0",
|
|
39
|
+
"@langchain/anthropic": "^1.3.12",
|
|
40
|
+
"@langchain/core": "^1.1.24",
|
|
41
|
+
"@langchain/google-genai": "^2.1.18",
|
|
42
|
+
"@langchain/langgraph": "latest",
|
|
43
|
+
"@langchain/ollama": "^1.2.2",
|
|
44
|
+
"@langchain/openai": "latest",
|
|
45
|
+
"@nestjs/common": "^10.0.0",
|
|
46
|
+
"@nestjs/core": "^10.0.0",
|
|
47
|
+
"@nestjs/platform-express": "^10.0.0",
|
|
48
|
+
"@types/js-yaml": "^4.0.9",
|
|
49
|
+
"chalk": "^4.1.2",
|
|
50
|
+
"deepagents": "latest",
|
|
51
|
+
"dotenv": "^17.2.3",
|
|
52
|
+
"glob": "^11.0.0",
|
|
53
|
+
"gray-matter": "^4.0.3",
|
|
54
|
+
"js-yaml": "^4.1.1",
|
|
55
|
+
"langchain": "latest",
|
|
56
|
+
"reflect-metadata": "^0.2.0",
|
|
57
|
+
"rxjs": "^7.8.0",
|
|
58
|
+
"zod": "^3.23.0"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@nestjs/cli": "^10.0.0",
|
|
62
|
+
"@nestjs/schematics": "^10.0.0",
|
|
63
|
+
"@swc/cli": "^0.5.2",
|
|
64
|
+
"@swc/core": "^1.15.11",
|
|
65
|
+
"@types/node": "^20.0.0",
|
|
66
|
+
"esbuild": "^0.27.2",
|
|
67
|
+
"ts-node": "^10.9.0",
|
|
68
|
+
"tsconfig-paths": "^4.2.0",
|
|
69
|
+
"typescript": "^5.3.0"
|
|
70
|
+
},
|
|
71
|
+
"engines": {
|
|
72
|
+
"node": ">=20.0.0"
|
|
73
|
+
}
|
|
74
|
+
}
|