@alexnetrebskii/hive-agent 0.24.0 → 0.25.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/dist/agent.d.ts +2 -2
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +48 -360
- package/dist/agent.js.map +1 -1
- package/dist/executor.d.ts +1 -1
- package/dist/executor.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/prompt/index.d.ts +10 -0
- package/dist/prompt/index.d.ts.map +1 -0
- package/dist/prompt/index.js +11 -0
- package/dist/prompt/index.js.map +1 -0
- package/dist/prompt/main-agent-builder.d.ts +92 -0
- package/dist/prompt/main-agent-builder.d.ts.map +1 -0
- package/dist/prompt/main-agent-builder.js +244 -0
- package/dist/prompt/main-agent-builder.js.map +1 -0
- package/dist/prompt/sub-agent-builder.d.ts +137 -0
- package/dist/prompt/sub-agent-builder.d.ts.map +1 -0
- package/dist/prompt/sub-agent-builder.js +342 -0
- package/dist/prompt/sub-agent-builder.js.map +1 -0
- package/dist/prompt/templates.d.ts +87 -0
- package/dist/prompt/templates.d.ts.map +1 -0
- package/dist/prompt/templates.js +338 -0
- package/dist/prompt/templates.js.map +1 -0
- package/dist/prompt/types.d.ts +159 -0
- package/dist/prompt/types.d.ts.map +1 -0
- package/dist/prompt/types.js +5 -0
- package/dist/prompt/types.js.map +1 -0
- package/dist/prompt.d.ts +1 -0
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +2 -0
- package/dist/prompt.js.map +1 -1
- package/dist/providers/dataset/recorder.d.ts.map +1 -1
- package/dist/providers/dataset/recorder.js +8 -2
- package/dist/providers/dataset/recorder.js.map +1 -1
- package/dist/tools/ask-user.d.ts +11 -0
- package/dist/tools/ask-user.d.ts.map +1 -0
- package/dist/tools/ask-user.js +88 -0
- package/dist/tools/ask-user.js.map +1 -0
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +14 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/output.d.ts +15 -0
- package/dist/tools/output.d.ts.map +1 -0
- package/dist/tools/output.js +40 -0
- package/dist/tools/output.js.map +1 -0
- package/dist/tools/task.d.ts +25 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +292 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/{todo.d.ts → tools/todo.d.ts} +1 -1
- package/dist/tools/todo.d.ts.map +1 -0
- package/dist/tools/todo.js +476 -0
- package/dist/tools/todo.js.map +1 -0
- package/package.json +1 -1
- package/dist/todo.d.ts.map +0 -1
- package/dist/todo.js +0 -325
- package/dist/todo.js.map +0 -1
package/dist/todo.js
DELETED
|
@@ -1,325 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Todo List Management
|
|
3
|
-
*
|
|
4
|
-
* Provides todo list functionality for agents to track and execute tasks.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Generate unique ID for todo items
|
|
8
|
-
*/
|
|
9
|
-
function generateId() {
|
|
10
|
-
return Math.random().toString(36).substring(2, 9);
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Format todo list for display
|
|
14
|
-
*/
|
|
15
|
-
export function formatTodoList(todos) {
|
|
16
|
-
if (todos.length === 0) {
|
|
17
|
-
return 'No tasks in the todo list.';
|
|
18
|
-
}
|
|
19
|
-
const statusEmoji = {
|
|
20
|
-
pending: '⬜',
|
|
21
|
-
in_progress: '🔄',
|
|
22
|
-
completed: '✅'
|
|
23
|
-
};
|
|
24
|
-
return todos
|
|
25
|
-
.map((todo, index) => {
|
|
26
|
-
const emoji = statusEmoji[todo.status];
|
|
27
|
-
// Show activeForm when in_progress, otherwise show content
|
|
28
|
-
const label = todo.status === 'in_progress' && todo.activeForm
|
|
29
|
-
? todo.activeForm
|
|
30
|
-
: todo.content;
|
|
31
|
-
return `${index + 1}. ${emoji} ${label}`;
|
|
32
|
-
})
|
|
33
|
-
.join('\n');
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Create the TodoManager class for tracking todos during execution
|
|
37
|
-
*/
|
|
38
|
-
export class TodoManager {
|
|
39
|
-
items = new Map();
|
|
40
|
-
currentTaskId;
|
|
41
|
-
/**
|
|
42
|
-
* Get all todo items
|
|
43
|
-
*/
|
|
44
|
-
getAll() {
|
|
45
|
-
return Array.from(this.items.values());
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Get current task being worked on
|
|
49
|
-
*/
|
|
50
|
-
getCurrentTask() {
|
|
51
|
-
if (!this.currentTaskId)
|
|
52
|
-
return undefined;
|
|
53
|
-
return this.items.get(this.currentTaskId);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Add a new todo item
|
|
57
|
-
*/
|
|
58
|
-
add(content, activeForm) {
|
|
59
|
-
const item = {
|
|
60
|
-
id: generateId(),
|
|
61
|
-
content,
|
|
62
|
-
activeForm,
|
|
63
|
-
status: 'pending',
|
|
64
|
-
createdAt: Date.now()
|
|
65
|
-
};
|
|
66
|
-
this.items.set(item.id, item);
|
|
67
|
-
return item;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Set multiple todos at once (replaces existing)
|
|
71
|
-
*/
|
|
72
|
-
setAll(todos) {
|
|
73
|
-
this.items.clear();
|
|
74
|
-
this.currentTaskId = undefined;
|
|
75
|
-
const items = todos.map(todo => {
|
|
76
|
-
const item = {
|
|
77
|
-
id: generateId(),
|
|
78
|
-
content: todo.content,
|
|
79
|
-
activeForm: todo.activeForm,
|
|
80
|
-
status: todo.status || 'pending',
|
|
81
|
-
createdAt: Date.now()
|
|
82
|
-
};
|
|
83
|
-
this.items.set(item.id, item);
|
|
84
|
-
return item;
|
|
85
|
-
});
|
|
86
|
-
// Set first pending as in_progress
|
|
87
|
-
const firstPending = items.find(i => i.status === 'pending');
|
|
88
|
-
if (firstPending) {
|
|
89
|
-
firstPending.status = 'in_progress';
|
|
90
|
-
this.currentTaskId = firstPending.id;
|
|
91
|
-
}
|
|
92
|
-
return items;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Mark a todo as in progress
|
|
96
|
-
*/
|
|
97
|
-
startTask(id) {
|
|
98
|
-
const item = this.items.get(id);
|
|
99
|
-
if (!item)
|
|
100
|
-
return undefined;
|
|
101
|
-
// Mark previous current as pending if not completed
|
|
102
|
-
if (this.currentTaskId && this.currentTaskId !== id) {
|
|
103
|
-
const current = this.items.get(this.currentTaskId);
|
|
104
|
-
if (current && current.status === 'in_progress') {
|
|
105
|
-
current.status = 'pending';
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
item.status = 'in_progress';
|
|
109
|
-
this.currentTaskId = id;
|
|
110
|
-
return item;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Mark a todo as completed and start next
|
|
114
|
-
*/
|
|
115
|
-
completeTask(id) {
|
|
116
|
-
const item = this.items.get(id);
|
|
117
|
-
if (!item)
|
|
118
|
-
return undefined;
|
|
119
|
-
item.status = 'completed';
|
|
120
|
-
item.completedAt = Date.now();
|
|
121
|
-
if (this.currentTaskId === id) {
|
|
122
|
-
this.currentTaskId = undefined;
|
|
123
|
-
}
|
|
124
|
-
// Find and start next pending task
|
|
125
|
-
const nextPending = Array.from(this.items.values()).find(i => i.status === 'pending');
|
|
126
|
-
if (nextPending) {
|
|
127
|
-
nextPending.status = 'in_progress';
|
|
128
|
-
this.currentTaskId = nextPending.id;
|
|
129
|
-
return { completed: item, next: nextPending };
|
|
130
|
-
}
|
|
131
|
-
return { completed: item };
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Complete current task and move to next
|
|
135
|
-
*/
|
|
136
|
-
completeCurrentAndNext() {
|
|
137
|
-
if (!this.currentTaskId) {
|
|
138
|
-
// No current task, find first pending
|
|
139
|
-
const pending = Array.from(this.items.values()).find(i => i.status === 'pending');
|
|
140
|
-
if (pending) {
|
|
141
|
-
pending.status = 'in_progress';
|
|
142
|
-
this.currentTaskId = pending.id;
|
|
143
|
-
return { next: pending };
|
|
144
|
-
}
|
|
145
|
-
return {};
|
|
146
|
-
}
|
|
147
|
-
return this.completeTask(this.currentTaskId) || {};
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Check if all tasks are completed
|
|
151
|
-
*/
|
|
152
|
-
isAllCompleted() {
|
|
153
|
-
return Array.from(this.items.values()).every(i => i.status === 'completed');
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Get progress stats
|
|
157
|
-
*/
|
|
158
|
-
getProgress() {
|
|
159
|
-
const items = Array.from(this.items.values());
|
|
160
|
-
return {
|
|
161
|
-
total: items.length,
|
|
162
|
-
completed: items.filter(i => i.status === 'completed').length,
|
|
163
|
-
pending: items.filter(i => i.status === 'pending').length,
|
|
164
|
-
inProgress: items.filter(i => i.status === 'in_progress').length
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Create the __todo__ tool
|
|
170
|
-
*/
|
|
171
|
-
export function createTodoTool(manager) {
|
|
172
|
-
return {
|
|
173
|
-
name: '__todo__',
|
|
174
|
-
description: `Manage a todo list to track REAL tasks you are performing.
|
|
175
|
-
|
|
176
|
-
IMPORTANT: Only use for tasks YOU will actually execute using tools. Do NOT:
|
|
177
|
-
- Create fictional tasks you cannot perform (cooking, gym, etc.)
|
|
178
|
-
- Create tasks about what the USER is doing
|
|
179
|
-
- Mark tasks complete without actually doing work
|
|
180
|
-
|
|
181
|
-
Use this tool to:
|
|
182
|
-
- Track multi-step work YOU are doing (code changes, file edits, searches)
|
|
183
|
-
- Mark tasks complete AFTER you've actually performed them with other tools
|
|
184
|
-
- Show progress through complex technical tasks
|
|
185
|
-
|
|
186
|
-
Actions:
|
|
187
|
-
- "set": Create a list of tasks (only for work you'll do with tools)
|
|
188
|
-
- "complete": Mark current task done (only AFTER you've done it)
|
|
189
|
-
- "list": Show current progress
|
|
190
|
-
|
|
191
|
-
Items format:
|
|
192
|
-
- content: Task description (e.g., "Update config file")
|
|
193
|
-
- activeForm: Active form (e.g., "Updating config file")
|
|
194
|
-
|
|
195
|
-
Example (correct - actual work):
|
|
196
|
-
{ "action": "set", "items": [
|
|
197
|
-
{"content": "Search for error handling", "activeForm": "Searching for error handling"},
|
|
198
|
-
{"content": "Fix the bug in auth.ts", "activeForm": "Fixing the bug"},
|
|
199
|
-
{"content": "Run tests", "activeForm": "Running tests"}
|
|
200
|
-
]}
|
|
201
|
-
|
|
202
|
-
WRONG - do NOT create:
|
|
203
|
-
- "Make breakfast" (you can't cook)
|
|
204
|
-
- "Go to gym" (you can't move)
|
|
205
|
-
- "User will review" (that's not your task)`,
|
|
206
|
-
parameters: {
|
|
207
|
-
type: 'object',
|
|
208
|
-
properties: {
|
|
209
|
-
action: {
|
|
210
|
-
type: 'string',
|
|
211
|
-
enum: ['set', 'complete', 'list'],
|
|
212
|
-
description: 'The action to perform'
|
|
213
|
-
},
|
|
214
|
-
items: {
|
|
215
|
-
type: 'string',
|
|
216
|
-
description: 'Array of task descriptions (for "set" action)'
|
|
217
|
-
}
|
|
218
|
-
},
|
|
219
|
-
required: ['action']
|
|
220
|
-
},
|
|
221
|
-
execute: async (params) => {
|
|
222
|
-
const { action, items: rawItems } = params;
|
|
223
|
-
let items;
|
|
224
|
-
if (rawItems) {
|
|
225
|
-
let parsed = rawItems;
|
|
226
|
-
// Parse JSON string if needed
|
|
227
|
-
if (typeof rawItems === 'string') {
|
|
228
|
-
try {
|
|
229
|
-
parsed = JSON.parse(rawItems);
|
|
230
|
-
}
|
|
231
|
-
catch {
|
|
232
|
-
// Single string item
|
|
233
|
-
parsed = [rawItems];
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
// Convert to TodoInput array
|
|
237
|
-
if (Array.isArray(parsed)) {
|
|
238
|
-
items = parsed.map(item => {
|
|
239
|
-
if (typeof item === 'string') {
|
|
240
|
-
return { content: item };
|
|
241
|
-
}
|
|
242
|
-
if (typeof item === 'object' && item !== null && 'content' in item) {
|
|
243
|
-
return {
|
|
244
|
-
content: item.content,
|
|
245
|
-
activeForm: item.activeForm
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
return { content: String(item) };
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
switch (action) {
|
|
253
|
-
case 'set': {
|
|
254
|
-
if (!items || items.length === 0) {
|
|
255
|
-
return { success: false, error: 'Items array is required for "set" action' };
|
|
256
|
-
}
|
|
257
|
-
const todos = manager.setAll(items);
|
|
258
|
-
const current = manager.getCurrentTask();
|
|
259
|
-
const currentLabel = current?.activeForm || current?.content;
|
|
260
|
-
return {
|
|
261
|
-
success: true,
|
|
262
|
-
data: {
|
|
263
|
-
message: `Created ${todos.length} tasks. Starting: "${currentLabel}"`,
|
|
264
|
-
todos: manager.getAll(),
|
|
265
|
-
current: currentLabel
|
|
266
|
-
}
|
|
267
|
-
};
|
|
268
|
-
}
|
|
269
|
-
case 'complete': {
|
|
270
|
-
const { completed, next } = manager.completeCurrentAndNext();
|
|
271
|
-
if (!completed && !next) {
|
|
272
|
-
return {
|
|
273
|
-
success: true,
|
|
274
|
-
data: {
|
|
275
|
-
message: 'No tasks to complete.',
|
|
276
|
-
todos: manager.getAll()
|
|
277
|
-
}
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
const progress = manager.getProgress();
|
|
281
|
-
let message = '';
|
|
282
|
-
if (completed) {
|
|
283
|
-
message = `Completed: "${completed.content}". `;
|
|
284
|
-
}
|
|
285
|
-
if (next) {
|
|
286
|
-
const nextLabel = next.activeForm || next.content;
|
|
287
|
-
message += `Next: "${nextLabel}". `;
|
|
288
|
-
}
|
|
289
|
-
else if (manager.isAllCompleted()) {
|
|
290
|
-
message += 'All tasks completed!';
|
|
291
|
-
}
|
|
292
|
-
message += `Progress: ${progress.completed}/${progress.total}`;
|
|
293
|
-
const nextLabel = next ? (next.activeForm || next.content) : undefined;
|
|
294
|
-
return {
|
|
295
|
-
success: true,
|
|
296
|
-
data: {
|
|
297
|
-
message,
|
|
298
|
-
todos: manager.getAll(),
|
|
299
|
-
current: nextLabel,
|
|
300
|
-
progress
|
|
301
|
-
}
|
|
302
|
-
};
|
|
303
|
-
}
|
|
304
|
-
case 'list': {
|
|
305
|
-
const todos = manager.getAll();
|
|
306
|
-
const current = manager.getCurrentTask();
|
|
307
|
-
const progress = manager.getProgress();
|
|
308
|
-
const currentLabel = current ? (current.activeForm || current.content) : undefined;
|
|
309
|
-
return {
|
|
310
|
-
success: true,
|
|
311
|
-
data: {
|
|
312
|
-
message: formatTodoList(todos),
|
|
313
|
-
todos,
|
|
314
|
-
current: currentLabel,
|
|
315
|
-
progress
|
|
316
|
-
}
|
|
317
|
-
};
|
|
318
|
-
}
|
|
319
|
-
default:
|
|
320
|
-
return { success: false, error: `Unknown action: ${action}` };
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
};
|
|
324
|
-
}
|
|
325
|
-
//# sourceMappingURL=todo.js.map
|
package/dist/todo.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"todo.js","sourceRoot":"","sources":["../src/todo.ts"],"names":[],"mappings":"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"}
|