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,270 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "TaskToolsService", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return TaskToolsService;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _common = require("@nestjs/common");
|
|
12
|
+
const _tools = require("@langchain/core/tools");
|
|
13
|
+
const _zod = require("zod");
|
|
14
|
+
const _taskmanagementservice = require("./task-management.service");
|
|
15
|
+
const _planmodeservice = require("./plan-mode.service");
|
|
16
|
+
const _promptservice = require("../../permissions/services/prompt.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
|
+
let TaskToolsService = class TaskToolsService {
|
|
27
|
+
getTools() {
|
|
28
|
+
return [
|
|
29
|
+
this.createTaskCreateTool(),
|
|
30
|
+
this.createTaskUpdateTool(),
|
|
31
|
+
this.createTaskListTool(),
|
|
32
|
+
this.createTaskGetTool(),
|
|
33
|
+
this.createAskUserQuestionTool(),
|
|
34
|
+
this.createEnterPlanModeTool(),
|
|
35
|
+
this.createExitPlanModeTool()
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
createTaskCreateTool() {
|
|
39
|
+
return (0, _tools.tool)(async ({ subject, description, activeForm, dependencies, metadata })=>{
|
|
40
|
+
const task = this.taskService.createTask({
|
|
41
|
+
subject,
|
|
42
|
+
description,
|
|
43
|
+
activeForm,
|
|
44
|
+
dependencies: dependencies || [],
|
|
45
|
+
metadata: metadata || {}
|
|
46
|
+
});
|
|
47
|
+
return JSON.stringify({
|
|
48
|
+
success: true,
|
|
49
|
+
taskId: task.id,
|
|
50
|
+
task: {
|
|
51
|
+
id: task.id,
|
|
52
|
+
subject: task.subject,
|
|
53
|
+
status: task.status
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}, {
|
|
57
|
+
name: 'task_create',
|
|
58
|
+
description: 'Create a new task. Use this when breaking down complex work into trackable subtasks. The task will be shown to the user for approval.',
|
|
59
|
+
schema: _zod.z.object({
|
|
60
|
+
subject: _zod.z.string().describe('Brief task title (e.g., "Implement login endpoint")'),
|
|
61
|
+
description: _zod.z.string().describe('Detailed description of what needs to be done and why'),
|
|
62
|
+
activeForm: _zod.z.string().optional().describe('Present continuous form shown when in_progress (e.g., "Implementing login")'),
|
|
63
|
+
dependencies: _zod.z.array(_zod.z.string()).optional().describe('Array of task IDs that must complete before this one'),
|
|
64
|
+
metadata: _zod.z.record(_zod.z.any()).optional().describe('Additional metadata')
|
|
65
|
+
})
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
createTaskUpdateTool() {
|
|
69
|
+
return (0, _tools.tool)(async ({ taskId, status, subject, description, activeForm, addDependencies, metadata })=>{
|
|
70
|
+
const task = this.taskService.updateTask(taskId, {
|
|
71
|
+
status: status,
|
|
72
|
+
subject,
|
|
73
|
+
description,
|
|
74
|
+
activeForm,
|
|
75
|
+
addDependencies,
|
|
76
|
+
metadata
|
|
77
|
+
});
|
|
78
|
+
if (!task) {
|
|
79
|
+
return JSON.stringify({
|
|
80
|
+
success: false,
|
|
81
|
+
error: 'Task not found'
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
return JSON.stringify({
|
|
85
|
+
success: true,
|
|
86
|
+
task: {
|
|
87
|
+
id: task.id,
|
|
88
|
+
subject: task.subject,
|
|
89
|
+
status: task.status
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}, {
|
|
93
|
+
name: 'task_update',
|
|
94
|
+
description: 'Update an existing task. Use to change status, modify details, or add dependencies.',
|
|
95
|
+
schema: _zod.z.object({
|
|
96
|
+
taskId: _zod.z.string().describe('ID of the task to update'),
|
|
97
|
+
status: _zod.z.enum([
|
|
98
|
+
'pending',
|
|
99
|
+
'in_progress',
|
|
100
|
+
'completed',
|
|
101
|
+
'failed',
|
|
102
|
+
'blocked',
|
|
103
|
+
'cancelled'
|
|
104
|
+
]).optional().describe('New status for the task'),
|
|
105
|
+
subject: _zod.z.string().optional().describe('New subject'),
|
|
106
|
+
description: _zod.z.string().optional().describe('New description'),
|
|
107
|
+
activeForm: _zod.z.string().optional().describe('New active form'),
|
|
108
|
+
addDependencies: _zod.z.array(_zod.z.string()).optional().describe('Task IDs to add as dependencies'),
|
|
109
|
+
metadata: _zod.z.record(_zod.z.any()).optional().describe('Metadata to merge')
|
|
110
|
+
})
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
createTaskListTool() {
|
|
114
|
+
return (0, _tools.tool)(async ()=>{
|
|
115
|
+
const tasks = this.taskService.listTasks();
|
|
116
|
+
const pending = this.taskService.listPendingTasks();
|
|
117
|
+
return JSON.stringify({
|
|
118
|
+
total: tasks.length,
|
|
119
|
+
pending: pending.length,
|
|
120
|
+
tasks: tasks.map((t)=>({
|
|
121
|
+
id: t.id,
|
|
122
|
+
subject: t.subject,
|
|
123
|
+
status: t.status,
|
|
124
|
+
dependencies: t.dependencies,
|
|
125
|
+
blocks: t.blocks
|
|
126
|
+
}))
|
|
127
|
+
});
|
|
128
|
+
}, {
|
|
129
|
+
name: 'task_list',
|
|
130
|
+
description: 'List all tasks with their current status. Shows which tasks are ready to execute.',
|
|
131
|
+
schema: _zod.z.object({})
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
createTaskGetTool() {
|
|
135
|
+
return (0, _tools.tool)(async ({ taskId })=>{
|
|
136
|
+
const task = this.taskService.getTask(taskId);
|
|
137
|
+
if (!task) {
|
|
138
|
+
return JSON.stringify({
|
|
139
|
+
success: false,
|
|
140
|
+
error: 'Task not found'
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
return JSON.stringify({
|
|
144
|
+
success: true,
|
|
145
|
+
task
|
|
146
|
+
});
|
|
147
|
+
}, {
|
|
148
|
+
name: 'task_get',
|
|
149
|
+
description: 'Get full details of a specific task including description and metadata.',
|
|
150
|
+
schema: _zod.z.object({
|
|
151
|
+
taskId: _zod.z.string().describe('ID of the task to retrieve')
|
|
152
|
+
})
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
createAskUserQuestionTool() {
|
|
156
|
+
return (0, _tools.tool)(async ({ question, type, choices })=>{
|
|
157
|
+
console.log('');
|
|
158
|
+
if (type === 'confirm') {
|
|
159
|
+
const answer = await this.promptService.confirm(question);
|
|
160
|
+
return JSON.stringify({
|
|
161
|
+
answer
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
if (type === 'choice' && choices) {
|
|
165
|
+
const choiceObjects = choices.map((c, i)=>({
|
|
166
|
+
key: String(i),
|
|
167
|
+
label: c
|
|
168
|
+
}));
|
|
169
|
+
const selectedKey = await this.promptService.choice(question, choiceObjects);
|
|
170
|
+
const selectedIndex = parseInt(selectedKey);
|
|
171
|
+
return JSON.stringify({
|
|
172
|
+
answer: choices[selectedIndex]
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
if (type === 'text') {
|
|
176
|
+
const answer = await this.promptService.question(question);
|
|
177
|
+
return JSON.stringify({
|
|
178
|
+
answer
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
return JSON.stringify({
|
|
182
|
+
error: 'Invalid question type'
|
|
183
|
+
});
|
|
184
|
+
}, {
|
|
185
|
+
name: 'ask_user_question',
|
|
186
|
+
description: 'Ask the user a question interactively. Use this when you need clarification, preferences, or decisions from the user before proceeding. This is better than guessing!',
|
|
187
|
+
schema: _zod.z.object({
|
|
188
|
+
question: _zod.z.string().describe('The question to ask the user'),
|
|
189
|
+
type: _zod.z.enum([
|
|
190
|
+
'confirm',
|
|
191
|
+
'choice',
|
|
192
|
+
'text'
|
|
193
|
+
]).describe('Type of question: confirm (yes/no), choice (multiple options), or text (free form)'),
|
|
194
|
+
choices: _zod.z.array(_zod.z.string()).optional().describe('Array of choices for type=choice')
|
|
195
|
+
})
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
createEnterPlanModeTool() {
|
|
199
|
+
return (0, _tools.tool)(async ({ title, description })=>{
|
|
200
|
+
try {
|
|
201
|
+
await this.planModeService.enterPlanMode(title, description);
|
|
202
|
+
return JSON.stringify({
|
|
203
|
+
success: true,
|
|
204
|
+
message: 'Entered plan mode. Explore the codebase, design your approach, then use exit_plan_mode to present the plan for approval.'
|
|
205
|
+
});
|
|
206
|
+
} catch (error) {
|
|
207
|
+
return JSON.stringify({
|
|
208
|
+
success: false,
|
|
209
|
+
error: error.message
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
}, {
|
|
213
|
+
name: 'enter_plan_mode',
|
|
214
|
+
description: 'Enter planning mode for complex tasks. In plan mode, you should explore the codebase using read_file, glob, and grep to understand the architecture, then create a detailed plan. Use exit_plan_mode when ready to present the plan for user approval.',
|
|
215
|
+
schema: _zod.z.object({
|
|
216
|
+
title: _zod.z.string().describe('Title of the plan (e.g., "Implement user authentication")'),
|
|
217
|
+
description: _zod.z.string().describe('Brief description of what will be planned')
|
|
218
|
+
})
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
createExitPlanModeTool() {
|
|
222
|
+
return (0, _tools.tool)(async ({ tasks })=>{
|
|
223
|
+
try {
|
|
224
|
+
const approved = await this.planModeService.exitPlanMode(tasks.map((t)=>({
|
|
225
|
+
subject: t.subject,
|
|
226
|
+
description: t.description,
|
|
227
|
+
activeForm: t.activeForm,
|
|
228
|
+
dependencies: t.dependencies
|
|
229
|
+
})));
|
|
230
|
+
return JSON.stringify({
|
|
231
|
+
success: true,
|
|
232
|
+
approved,
|
|
233
|
+
message: approved ? 'Plan approved! You can now execute the tasks.' : 'Plan was not approved. Ask the user what they want to change.'
|
|
234
|
+
});
|
|
235
|
+
} catch (error) {
|
|
236
|
+
return JSON.stringify({
|
|
237
|
+
success: false,
|
|
238
|
+
error: error.message
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
}, {
|
|
242
|
+
name: 'exit_plan_mode',
|
|
243
|
+
description: 'Exit planning mode and present the plan for user approval. The user will see all tasks and can approve, modify, or cancel the plan.',
|
|
244
|
+
schema: _zod.z.object({
|
|
245
|
+
tasks: _zod.z.array(_zod.z.object({
|
|
246
|
+
subject: _zod.z.string().describe('Task title'),
|
|
247
|
+
description: _zod.z.string().describe('What this task does'),
|
|
248
|
+
activeForm: _zod.z.string().optional().describe('Present continuous form'),
|
|
249
|
+
dependencies: _zod.z.array(_zod.z.string()).optional().describe('Task IDs this depends on')
|
|
250
|
+
})).describe('Array of tasks that make up the plan')
|
|
251
|
+
})
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
constructor(taskService, planModeService, promptService){
|
|
255
|
+
this.taskService = taskService;
|
|
256
|
+
this.planModeService = planModeService;
|
|
257
|
+
this.promptService = promptService;
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
TaskToolsService = _ts_decorate([
|
|
261
|
+
(0, _common.Injectable)(),
|
|
262
|
+
_ts_metadata("design:type", Function),
|
|
263
|
+
_ts_metadata("design:paramtypes", [
|
|
264
|
+
typeof _taskmanagementservice.TaskManagementService === "undefined" ? Object : _taskmanagementservice.TaskManagementService,
|
|
265
|
+
typeof _planmodeservice.PlanModeService === "undefined" ? Object : _planmodeservice.PlanModeService,
|
|
266
|
+
typeof _promptservice.PromptService === "undefined" ? Object : _promptservice.PromptService
|
|
267
|
+
])
|
|
268
|
+
], TaskToolsService);
|
|
269
|
+
|
|
270
|
+
//# sourceMappingURL=task-tools.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/tasks/services/task-tools.service.ts"],"sourcesContent":["import { Injectable } from '@nestjs/common';\nimport { tool } from '@langchain/core/tools';\nimport { z } from 'zod';\nimport { TaskManagementService } from './task-management.service';\nimport { PlanModeService } from './plan-mode.service';\nimport { TaskStatus } from '../types/task.types';\nimport { PromptService } from '../../permissions/services/prompt.service';\n\n@Injectable()\nexport class TaskToolsService {\n constructor(\n private taskService: TaskManagementService,\n private planModeService: PlanModeService,\n private promptService: PromptService,\n ) {}\n\n getTools() {\n return [\n this.createTaskCreateTool(),\n this.createTaskUpdateTool(),\n this.createTaskListTool(),\n this.createTaskGetTool(),\n this.createAskUserQuestionTool(),\n this.createEnterPlanModeTool(),\n this.createExitPlanModeTool(),\n ];\n }\n\n private createTaskCreateTool() {\n return tool(\n async ({ subject, description, activeForm, dependencies, metadata }) => {\n const task = this.taskService.createTask({\n subject,\n description,\n activeForm,\n dependencies: dependencies || [],\n metadata: metadata || {},\n });\n\n return JSON.stringify({\n success: true,\n taskId: task.id,\n task: {\n id: task.id,\n subject: task.subject,\n status: task.status,\n },\n });\n },\n {\n name: 'task_create',\n description:\n 'Create a new task. Use this when breaking down complex work into trackable subtasks. The task will be shown to the user for approval.',\n schema: z.object({\n subject: z.string().describe('Brief task title (e.g., \"Implement login endpoint\")'),\n description: z\n .string()\n .describe('Detailed description of what needs to be done and why'),\n activeForm: z\n .string()\n .optional()\n .describe(\n 'Present continuous form shown when in_progress (e.g., \"Implementing login\")',\n ),\n dependencies: z\n .array(z.string())\n .optional()\n .describe('Array of task IDs that must complete before this one'),\n metadata: z.record(z.any()).optional().describe('Additional metadata'),\n }),\n },\n );\n }\n\n private createTaskUpdateTool() {\n return tool(\n async ({ taskId, status, subject, description, activeForm, addDependencies, metadata }) => {\n const task = this.taskService.updateTask(taskId, {\n status: status as TaskStatus,\n subject,\n description,\n activeForm,\n addDependencies,\n metadata,\n });\n\n if (!task) {\n return JSON.stringify({ success: false, error: 'Task not found' });\n }\n\n return JSON.stringify({\n success: true,\n task: {\n id: task.id,\n subject: task.subject,\n status: task.status,\n },\n });\n },\n {\n name: 'task_update',\n description:\n 'Update an existing task. Use to change status, modify details, or add dependencies.',\n schema: z.object({\n taskId: z.string().describe('ID of the task to update'),\n status: z\n .enum(['pending', 'in_progress', 'completed', 'failed', 'blocked', 'cancelled'])\n .optional()\n .describe('New status for the task'),\n subject: z.string().optional().describe('New subject'),\n description: z.string().optional().describe('New description'),\n activeForm: z.string().optional().describe('New active form'),\n addDependencies: z\n .array(z.string())\n .optional()\n .describe('Task IDs to add as dependencies'),\n metadata: z.record(z.any()).optional().describe('Metadata to merge'),\n }),\n },\n );\n }\n\n private createTaskListTool() {\n return tool(\n async () => {\n const tasks = this.taskService.listTasks();\n const pending = this.taskService.listPendingTasks();\n\n return JSON.stringify({\n total: tasks.length,\n pending: pending.length,\n tasks: tasks.map((t) => ({\n id: t.id,\n subject: t.subject,\n status: t.status,\n dependencies: t.dependencies,\n blocks: t.blocks,\n })),\n });\n },\n {\n name: 'task_list',\n description: 'List all tasks with their current status. Shows which tasks are ready to execute.',\n schema: z.object({}),\n },\n );\n }\n\n private createTaskGetTool() {\n return tool(\n async ({ taskId }) => {\n const task = this.taskService.getTask(taskId);\n\n if (!task) {\n return JSON.stringify({ success: false, error: 'Task not found' });\n }\n\n return JSON.stringify({\n success: true,\n task,\n });\n },\n {\n name: 'task_get',\n description: 'Get full details of a specific task including description and metadata.',\n schema: z.object({\n taskId: z.string().describe('ID of the task to retrieve'),\n }),\n },\n );\n }\n\n private createAskUserQuestionTool() {\n return tool(\n async ({ question, type, choices }) => {\n console.log('');\n\n if (type === 'confirm') {\n const answer = await this.promptService.confirm(question);\n return JSON.stringify({ answer });\n }\n\n if (type === 'choice' && choices) {\n const choiceObjects = choices.map((c, i) => ({\n key: String(i),\n label: c,\n }));\n\n const selectedKey = await this.promptService.choice(question, choiceObjects);\n const selectedIndex = parseInt(selectedKey);\n return JSON.stringify({ answer: choices[selectedIndex] });\n }\n\n if (type === 'text') {\n const answer = await this.promptService.question(question);\n return JSON.stringify({ answer });\n }\n\n return JSON.stringify({ error: 'Invalid question type' });\n },\n {\n name: 'ask_user_question',\n description:\n 'Ask the user a question interactively. Use this when you need clarification, preferences, or decisions from the user before proceeding. This is better than guessing!',\n schema: z.object({\n question: z.string().describe('The question to ask the user'),\n type: z\n .enum(['confirm', 'choice', 'text'])\n .describe('Type of question: confirm (yes/no), choice (multiple options), or text (free form)'),\n choices: z\n .array(z.string())\n .optional()\n .describe('Array of choices for type=choice'),\n }),\n },\n );\n }\n\n private createEnterPlanModeTool() {\n return tool(\n async ({ title, description }) => {\n try {\n await this.planModeService.enterPlanMode(title, description);\n return JSON.stringify({\n success: true,\n message: 'Entered plan mode. Explore the codebase, design your approach, then use exit_plan_mode to present the plan for approval.',\n });\n } catch (error) {\n return JSON.stringify({\n success: false,\n error: (error as Error).message,\n });\n }\n },\n {\n name: 'enter_plan_mode',\n description:\n 'Enter planning mode for complex tasks. In plan mode, you should explore the codebase using read_file, glob, and grep to understand the architecture, then create a detailed plan. Use exit_plan_mode when ready to present the plan for user approval.',\n schema: z.object({\n title: z.string().describe('Title of the plan (e.g., \"Implement user authentication\")'),\n description: z\n .string()\n .describe('Brief description of what will be planned'),\n }),\n },\n );\n }\n\n private createExitPlanModeTool() {\n return tool(\n async ({ tasks }) => {\n try {\n const approved = await this.planModeService.exitPlanMode(\n tasks.map((t) => ({\n subject: t.subject,\n description: t.description,\n activeForm: t.activeForm,\n dependencies: t.dependencies,\n })),\n );\n\n return JSON.stringify({\n success: true,\n approved,\n message: approved\n ? 'Plan approved! You can now execute the tasks.'\n : 'Plan was not approved. Ask the user what they want to change.',\n });\n } catch (error) {\n return JSON.stringify({\n success: false,\n error: (error as Error).message,\n });\n }\n },\n {\n name: 'exit_plan_mode',\n description:\n 'Exit planning mode and present the plan for user approval. The user will see all tasks and can approve, modify, or cancel the plan.',\n schema: z.object({\n tasks: z\n .array(\n z.object({\n subject: z.string().describe('Task title'),\n description: z.string().describe('What this task does'),\n activeForm: z.string().optional().describe('Present continuous form'),\n dependencies: z\n .array(z.string())\n .optional()\n .describe('Task IDs this depends on'),\n }),\n )\n .describe('Array of tasks that make up the plan'),\n }),\n },\n );\n }\n}\n"],"names":["TaskToolsService","getTools","createTaskCreateTool","createTaskUpdateTool","createTaskListTool","createTaskGetTool","createAskUserQuestionTool","createEnterPlanModeTool","createExitPlanModeTool","tool","subject","description","activeForm","dependencies","metadata","task","taskService","createTask","JSON","stringify","success","taskId","id","status","name","schema","z","object","string","describe","optional","array","record","any","addDependencies","updateTask","error","enum","tasks","listTasks","pending","listPendingTasks","total","length","map","t","blocks","getTask","question","type","choices","console","log","answer","promptService","confirm","choiceObjects","c","i","key","String","label","selectedKey","choice","selectedIndex","parseInt","title","planModeService","enterPlanMode","message","approved","exitPlanMode"],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "TasksModule", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return TasksModule;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _common = require("@nestjs/common");
|
|
12
|
+
const _taskmanagementservice = require("./services/task-management.service");
|
|
13
|
+
const _planmodeservice = require("./services/plan-mode.service");
|
|
14
|
+
const _planpersistenceservice = require("./services/plan-persistence.service");
|
|
15
|
+
const _planexecutorservice = require("./services/plan-executor.service");
|
|
16
|
+
const _tasktoolsservice = require("./services/task-tools.service");
|
|
17
|
+
const _permissionsmodule = require("../permissions/permissions.module");
|
|
18
|
+
const _coremodule = require("../core/core.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 TasksModule = class TasksModule {
|
|
26
|
+
};
|
|
27
|
+
TasksModule = _ts_decorate([
|
|
28
|
+
(0, _common.Module)({
|
|
29
|
+
imports: [
|
|
30
|
+
_permissionsmodule.PermissionsModule,
|
|
31
|
+
(0, _common.forwardRef)(()=>_coremodule.CoreModule)
|
|
32
|
+
],
|
|
33
|
+
providers: [
|
|
34
|
+
_taskmanagementservice.TaskManagementService,
|
|
35
|
+
_planmodeservice.PlanModeService,
|
|
36
|
+
_planpersistenceservice.PlanPersistenceService,
|
|
37
|
+
_planexecutorservice.PlanExecutorService,
|
|
38
|
+
_tasktoolsservice.TaskToolsService
|
|
39
|
+
],
|
|
40
|
+
exports: [
|
|
41
|
+
_taskmanagementservice.TaskManagementService,
|
|
42
|
+
_planmodeservice.PlanModeService,
|
|
43
|
+
_planexecutorservice.PlanExecutorService,
|
|
44
|
+
_tasktoolsservice.TaskToolsService
|
|
45
|
+
]
|
|
46
|
+
})
|
|
47
|
+
], TasksModule);
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=tasks.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/modules/tasks/tasks.module.ts"],"sourcesContent":["import { Module, forwardRef } from '@nestjs/common';\nimport { TaskManagementService } from './services/task-management.service';\nimport { PlanModeService } from './services/plan-mode.service';\nimport { PlanPersistenceService } from './services/plan-persistence.service';\nimport { PlanExecutorService } from './services/plan-executor.service';\nimport { TaskToolsService } from './services/task-tools.service';\nimport { PermissionsModule } from '../permissions/permissions.module';\nimport { CoreModule } from '../core/core.module';\n\n@Module({\n imports: [PermissionsModule, forwardRef(() => CoreModule)],\n providers: [\n TaskManagementService,\n PlanModeService,\n PlanPersistenceService,\n PlanExecutorService,\n TaskToolsService,\n ],\n exports: [\n TaskManagementService,\n PlanModeService,\n PlanExecutorService,\n TaskToolsService,\n ],\n})\nexport class TasksModule {}\n"],"names":["TasksModule","imports","PermissionsModule","forwardRef","CoreModule","providers","TaskManagementService","PlanModeService","PlanPersistenceService","PlanExecutorService","TaskToolsService","exports"],"mappings":";;;;+BAyBaA;;;eAAAA;;;wBAzBsB;uCACG;iCACN;wCACO;qCACH;kCACH;mCACC;4BACP;;;;;;;AAkBpB,IAAA,AAAMA,cAAN,MAAMA;AAAa;;;QAfxBC,SAAS;YAACC,oCAAiB;YAAEC,IAAAA,kBAAU,EAAC,IAAMC,sBAAU;SAAE;QAC1DC,WAAW;YACTC,4CAAqB;YACrBC,gCAAe;YACfC,8CAAsB;YACtBC,wCAAmB;YACnBC,kCAAgB;SACjB;QACDC,SAAS;YACPL,4CAAqB;YACrBC,gCAAe;YACfE,wCAAmB;YACnBC,kCAAgB;SACjB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "TaskStatus", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return TaskStatus;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var TaskStatus = /*#__PURE__*/ function(TaskStatus) {
|
|
12
|
+
TaskStatus["PENDING"] = "pending";
|
|
13
|
+
TaskStatus["IN_PROGRESS"] = "in_progress";
|
|
14
|
+
TaskStatus["COMPLETED"] = "completed";
|
|
15
|
+
TaskStatus["FAILED"] = "failed";
|
|
16
|
+
TaskStatus["BLOCKED"] = "blocked";
|
|
17
|
+
TaskStatus["CANCELLED"] = "cancelled";
|
|
18
|
+
return TaskStatus;
|
|
19
|
+
}({});
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=task.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/tasks/types/task.types.ts"],"sourcesContent":["export enum TaskStatus {\n PENDING = 'pending',\n IN_PROGRESS = 'in_progress',\n COMPLETED = 'completed',\n FAILED = 'failed',\n BLOCKED = 'blocked',\n CANCELLED = 'cancelled',\n}\n\nexport interface Task {\n id: string;\n subject: string;\n description: string;\n activeForm: string;\n status: TaskStatus;\n createdAt: number;\n updatedAt: number;\n dependencies: string[];\n blocks: string[];\n metadata?: Record<string, any>;\n}\n\nexport interface TaskPlan {\n id: string;\n title: string;\n description: string;\n tasks: Task[];\n status: 'draft' | 'approved' | 'executing' | 'completed' | 'cancelled';\n createdAt: number;\n}\n\nexport interface CreateTaskOptions {\n subject: string;\n description: string;\n activeForm?: string;\n dependencies?: string[];\n metadata?: Record<string, any>;\n}\n\nexport interface UpdateTaskOptions {\n status?: TaskStatus;\n subject?: string;\n description?: string;\n activeForm?: string;\n addDependencies?: string[];\n removeDependencies?: string[];\n metadata?: Record<string, any>;\n}\n\nexport interface PlanApprovalOptions {\n approved: boolean;\n autoApprove: boolean;\n modificationRequested?: string;\n}\n\nexport interface PlanExecutionContext {\n planId: string;\n autoApprove: boolean;\n currentTaskIndex: number;\n startedAt: number;\n}\n"],"names":["TaskStatus"],"mappings":";;;;+BAAYA;;;eAAAA;;;AAAL,IAAA,AAAKA,oCAAAA;;;;;;;WAAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
_export_star(require("./tools.module"), exports);
|
|
6
|
+
_export_star(require("./services/tools-registry.service"), exports);
|
|
7
|
+
_export_star(require("./services/filesystem-tools.service"), exports);
|
|
8
|
+
_export_star(require("./services/shell-tools.service"), exports);
|
|
9
|
+
_export_star(require("./services/search-tools.service"), exports);
|
|
10
|
+
function _export_star(from, to) {
|
|
11
|
+
Object.keys(from).forEach(function(k) {
|
|
12
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
13
|
+
Object.defineProperty(to, k, {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function() {
|
|
16
|
+
return from[k];
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
return from;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/modules/tools/index.ts"],"sourcesContent":["export * from './tools.module';\nexport * from './services/tools-registry.service';\nexport * from './services/filesystem-tools.service';\nexport * from './services/shell-tools.service';\nexport * from './services/search-tools.service';\n"],"names":[],"mappings":";;;;qBAAc;qBACA;qBACA;qBACA;qBACA"}
|