@alexnetrebskii/hive-agent 0.5.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/README.md +425 -0
- package/dist/agent.d.ts +24 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +277 -0
- package/dist/agent.js.map +1 -0
- package/dist/context.d.ts +52 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +124 -0
- package/dist/context.js.map +1 -0
- package/dist/executor.d.ts +29 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +349 -0
- package/dist/executor.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/prompt.d.ts +31 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +84 -0
- package/dist/prompt.js.map +1 -0
- package/dist/providers/index.d.ts +11 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +8 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/llm/base.d.ts +7 -0
- package/dist/providers/llm/base.d.ts.map +1 -0
- package/dist/providers/llm/base.js +7 -0
- package/dist/providers/llm/base.js.map +1 -0
- package/dist/providers/llm/claude.d.ts +31 -0
- package/dist/providers/llm/claude.d.ts.map +1 -0
- package/dist/providers/llm/claude.js +180 -0
- package/dist/providers/llm/claude.js.map +1 -0
- package/dist/providers/llm/openai.d.ts +25 -0
- package/dist/providers/llm/openai.d.ts.map +1 -0
- package/dist/providers/llm/openai.js +171 -0
- package/dist/providers/llm/openai.js.map +1 -0
- package/dist/providers/logger/base.d.ts +7 -0
- package/dist/providers/logger/base.d.ts.map +1 -0
- package/dist/providers/logger/base.js +7 -0
- package/dist/providers/logger/base.js.map +1 -0
- package/dist/providers/logger/console.d.ts +29 -0
- package/dist/providers/logger/console.d.ts.map +1 -0
- package/dist/providers/logger/console.js +71 -0
- package/dist/providers/logger/console.js.map +1 -0
- package/dist/providers/repository/base.d.ts +7 -0
- package/dist/providers/repository/base.d.ts.map +1 -0
- package/dist/providers/repository/base.js +7 -0
- package/dist/providers/repository/base.js.map +1 -0
- package/dist/providers/repository/memory.d.ts +21 -0
- package/dist/providers/repository/memory.d.ts.map +1 -0
- package/dist/providers/repository/memory.js +50 -0
- package/dist/providers/repository/memory.js.map +1 -0
- package/dist/review.d.ts +68 -0
- package/dist/review.d.ts.map +1 -0
- package/dist/review.js +263 -0
- package/dist/review.js.map +1 -0
- package/dist/todo.d.ts +73 -0
- package/dist/todo.d.ts.map +1 -0
- package/dist/todo.js +320 -0
- package/dist/todo.js.map +1 -0
- package/dist/types.d.ts +257 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +43 -0
package/dist/todo.js
ADDED
|
@@ -0,0 +1,320 @@
|
|
|
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 and execute tasks step by step.
|
|
175
|
+
|
|
176
|
+
Use this tool to:
|
|
177
|
+
- Create a list of tasks to complete for complex requests
|
|
178
|
+
- Mark tasks as completed as you finish them
|
|
179
|
+
- Track your progress through a multi-step process
|
|
180
|
+
|
|
181
|
+
Actions:
|
|
182
|
+
- "set": Replace the entire todo list with new items
|
|
183
|
+
- "complete": Mark the current task as done and move to next
|
|
184
|
+
- "list": Show current todo list status
|
|
185
|
+
|
|
186
|
+
Items format:
|
|
187
|
+
Each item should have:
|
|
188
|
+
- content: What needs to be done (imperative form, e.g., "Run tests")
|
|
189
|
+
- activeForm: What's happening (present continuous, e.g., "Running tests")
|
|
190
|
+
|
|
191
|
+
Examples:
|
|
192
|
+
- Set todos: { "action": "set", "items": [{"content": "Run tests", "activeForm": "Running tests"}, {"content": "Build project", "activeForm": "Building project"}] }
|
|
193
|
+
- Complete current: { "action": "complete" }
|
|
194
|
+
- Show list: { "action": "list" }
|
|
195
|
+
|
|
196
|
+
Best practices:
|
|
197
|
+
- Create a todo list at the start of complex tasks
|
|
198
|
+
- Complete each task before moving to the next
|
|
199
|
+
- Keep task descriptions concise but clear
|
|
200
|
+
- Use activeForm to show dynamic status during execution`,
|
|
201
|
+
parameters: {
|
|
202
|
+
type: 'object',
|
|
203
|
+
properties: {
|
|
204
|
+
action: {
|
|
205
|
+
type: 'string',
|
|
206
|
+
enum: ['set', 'complete', 'list'],
|
|
207
|
+
description: 'The action to perform'
|
|
208
|
+
},
|
|
209
|
+
items: {
|
|
210
|
+
type: 'string',
|
|
211
|
+
description: 'Array of task descriptions (for "set" action)'
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
required: ['action']
|
|
215
|
+
},
|
|
216
|
+
execute: async (params) => {
|
|
217
|
+
const { action, items: rawItems } = params;
|
|
218
|
+
let items;
|
|
219
|
+
if (rawItems) {
|
|
220
|
+
let parsed = rawItems;
|
|
221
|
+
// Parse JSON string if needed
|
|
222
|
+
if (typeof rawItems === 'string') {
|
|
223
|
+
try {
|
|
224
|
+
parsed = JSON.parse(rawItems);
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
// Single string item
|
|
228
|
+
parsed = [rawItems];
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// Convert to TodoInput array
|
|
232
|
+
if (Array.isArray(parsed)) {
|
|
233
|
+
items = parsed.map(item => {
|
|
234
|
+
if (typeof item === 'string') {
|
|
235
|
+
return { content: item };
|
|
236
|
+
}
|
|
237
|
+
if (typeof item === 'object' && item !== null && 'content' in item) {
|
|
238
|
+
return {
|
|
239
|
+
content: item.content,
|
|
240
|
+
activeForm: item.activeForm
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
return { content: String(item) };
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
switch (action) {
|
|
248
|
+
case 'set': {
|
|
249
|
+
if (!items || items.length === 0) {
|
|
250
|
+
return { success: false, error: 'Items array is required for "set" action' };
|
|
251
|
+
}
|
|
252
|
+
const todos = manager.setAll(items);
|
|
253
|
+
const current = manager.getCurrentTask();
|
|
254
|
+
const currentLabel = current?.activeForm || current?.content;
|
|
255
|
+
return {
|
|
256
|
+
success: true,
|
|
257
|
+
data: {
|
|
258
|
+
message: `Created ${todos.length} tasks. Starting: "${currentLabel}"`,
|
|
259
|
+
todos: manager.getAll(),
|
|
260
|
+
current: currentLabel
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
case 'complete': {
|
|
265
|
+
const { completed, next } = manager.completeCurrentAndNext();
|
|
266
|
+
if (!completed && !next) {
|
|
267
|
+
return {
|
|
268
|
+
success: true,
|
|
269
|
+
data: {
|
|
270
|
+
message: 'No tasks to complete.',
|
|
271
|
+
todos: manager.getAll()
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
const progress = manager.getProgress();
|
|
276
|
+
let message = '';
|
|
277
|
+
if (completed) {
|
|
278
|
+
message = `Completed: "${completed.content}". `;
|
|
279
|
+
}
|
|
280
|
+
if (next) {
|
|
281
|
+
const nextLabel = next.activeForm || next.content;
|
|
282
|
+
message += `Next: "${nextLabel}". `;
|
|
283
|
+
}
|
|
284
|
+
else if (manager.isAllCompleted()) {
|
|
285
|
+
message += 'All tasks completed!';
|
|
286
|
+
}
|
|
287
|
+
message += `Progress: ${progress.completed}/${progress.total}`;
|
|
288
|
+
const nextLabel = next ? (next.activeForm || next.content) : undefined;
|
|
289
|
+
return {
|
|
290
|
+
success: true,
|
|
291
|
+
data: {
|
|
292
|
+
message,
|
|
293
|
+
todos: manager.getAll(),
|
|
294
|
+
current: nextLabel,
|
|
295
|
+
progress
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
case 'list': {
|
|
300
|
+
const todos = manager.getAll();
|
|
301
|
+
const current = manager.getCurrentTask();
|
|
302
|
+
const progress = manager.getProgress();
|
|
303
|
+
const currentLabel = current ? (current.activeForm || current.content) : undefined;
|
|
304
|
+
return {
|
|
305
|
+
success: true,
|
|
306
|
+
data: {
|
|
307
|
+
message: formatTodoList(todos),
|
|
308
|
+
todos,
|
|
309
|
+
current: currentLabel,
|
|
310
|
+
progress
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
default:
|
|
315
|
+
return { success: false, error: `Unknown action: ${action}` };
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=todo.js.map
|
package/dist/todo.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todo.js","sourceRoot":"","sources":["../src/todo.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hive Agent Framework - Type Definitions
|
|
3
|
+
*/
|
|
4
|
+
export type MessageRole = 'user' | 'assistant';
|
|
5
|
+
export interface TextBlock {
|
|
6
|
+
type: 'text';
|
|
7
|
+
text: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ThinkingBlock {
|
|
10
|
+
type: 'thinking';
|
|
11
|
+
thinking: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ToolUseBlock {
|
|
14
|
+
type: 'tool_use';
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
input: Record<string, unknown>;
|
|
18
|
+
}
|
|
19
|
+
export interface ToolResultBlock {
|
|
20
|
+
type: 'tool_result';
|
|
21
|
+
tool_use_id: string;
|
|
22
|
+
content: string;
|
|
23
|
+
is_error?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export type ContentBlock = TextBlock | ThinkingBlock | ToolUseBlock | ToolResultBlock;
|
|
26
|
+
export interface Message {
|
|
27
|
+
role: MessageRole;
|
|
28
|
+
content: string | ContentBlock[];
|
|
29
|
+
}
|
|
30
|
+
export interface JSONSchema {
|
|
31
|
+
type: 'object';
|
|
32
|
+
properties: Record<string, {
|
|
33
|
+
type: string;
|
|
34
|
+
description?: string;
|
|
35
|
+
enum?: string[];
|
|
36
|
+
items?: JSONSchema;
|
|
37
|
+
}>;
|
|
38
|
+
required?: string[];
|
|
39
|
+
additionalProperties?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface ToolResult {
|
|
42
|
+
success: boolean;
|
|
43
|
+
data?: unknown;
|
|
44
|
+
error?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface ToolContext {
|
|
47
|
+
remainingTokens: number;
|
|
48
|
+
conversationId?: string;
|
|
49
|
+
userId?: string;
|
|
50
|
+
metadata?: Record<string, unknown>;
|
|
51
|
+
}
|
|
52
|
+
export interface Tool {
|
|
53
|
+
name: string;
|
|
54
|
+
description: string;
|
|
55
|
+
parameters: JSONSchema;
|
|
56
|
+
execute: (params: Record<string, unknown>, context: ToolContext) => Promise<ToolResult>;
|
|
57
|
+
}
|
|
58
|
+
export interface ToolSchema {
|
|
59
|
+
name: string;
|
|
60
|
+
description: string;
|
|
61
|
+
input_schema: JSONSchema;
|
|
62
|
+
}
|
|
63
|
+
export interface ToolCallLog {
|
|
64
|
+
name: string;
|
|
65
|
+
input: Record<string, unknown>;
|
|
66
|
+
output: ToolResult;
|
|
67
|
+
durationMs: number;
|
|
68
|
+
}
|
|
69
|
+
export interface SubAgentConfig {
|
|
70
|
+
name: string;
|
|
71
|
+
description: string;
|
|
72
|
+
systemPrompt: string;
|
|
73
|
+
tools: Tool[];
|
|
74
|
+
/** Override model for this agent (e.g., 'gpt-4o', 'claude-3-haiku') */
|
|
75
|
+
model?: string;
|
|
76
|
+
/** Override LLM provider for this agent (use different provider than parent) */
|
|
77
|
+
llm?: LLMProvider;
|
|
78
|
+
/** Override max iterations for this agent */
|
|
79
|
+
maxIterations?: number;
|
|
80
|
+
}
|
|
81
|
+
export type StopReason = 'end_turn' | 'tool_use' | 'max_tokens';
|
|
82
|
+
export interface LLMResponse {
|
|
83
|
+
content: ContentBlock[];
|
|
84
|
+
stopReason: StopReason;
|
|
85
|
+
usage?: {
|
|
86
|
+
inputTokens: number;
|
|
87
|
+
outputTokens: number;
|
|
88
|
+
};
|
|
89
|
+
cacheUsage?: CacheUsage;
|
|
90
|
+
}
|
|
91
|
+
export interface CacheConfig {
|
|
92
|
+
enabled: boolean;
|
|
93
|
+
cacheSystemPrompt?: boolean;
|
|
94
|
+
cacheTools?: boolean;
|
|
95
|
+
cacheHistory?: boolean;
|
|
96
|
+
}
|
|
97
|
+
export interface CacheUsage {
|
|
98
|
+
cacheCreationInputTokens: number;
|
|
99
|
+
cacheReadInputTokens: number;
|
|
100
|
+
}
|
|
101
|
+
export interface LLMOptions {
|
|
102
|
+
thinkingMode?: 'none' | 'enabled';
|
|
103
|
+
thinkingBudget?: number;
|
|
104
|
+
model?: string;
|
|
105
|
+
cache?: CacheConfig;
|
|
106
|
+
}
|
|
107
|
+
export interface LLMProvider {
|
|
108
|
+
chat(systemPrompt: string, messages: Message[], tools: ToolSchema[], options?: LLMOptions): Promise<LLMResponse>;
|
|
109
|
+
}
|
|
110
|
+
export interface ProgressUpdate {
|
|
111
|
+
type: 'thinking' | 'tool_start' | 'tool_end' | 'sub_agent_start' | 'sub_agent_end' | 'status';
|
|
112
|
+
message: string;
|
|
113
|
+
details?: {
|
|
114
|
+
toolName?: string;
|
|
115
|
+
agentName?: string;
|
|
116
|
+
duration?: number;
|
|
117
|
+
success?: boolean;
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
export interface LogProvider {
|
|
121
|
+
debug(message: string, data?: unknown): void;
|
|
122
|
+
info(message: string, data?: unknown): void;
|
|
123
|
+
warn(message: string, data?: unknown): void;
|
|
124
|
+
error(message: string, data?: unknown): void;
|
|
125
|
+
onToolCall?(toolName: string, params: unknown): void;
|
|
126
|
+
onToolResult?(toolName: string, result: ToolResult, durationMs: number): void;
|
|
127
|
+
onIteration?(iteration: number, messageCount: number): void;
|
|
128
|
+
onComplete?(result: AgentResult): void;
|
|
129
|
+
/** Called with progress updates for real-time UI feedback */
|
|
130
|
+
onProgress?(update: ProgressUpdate): void;
|
|
131
|
+
}
|
|
132
|
+
export interface RepositoryProvider {
|
|
133
|
+
getHistory(conversationId: string): Promise<Message[]>;
|
|
134
|
+
saveHistory(conversationId: string, messages: Message[]): Promise<void>;
|
|
135
|
+
getState?(conversationId: string): Promise<Record<string, unknown> | null>;
|
|
136
|
+
saveState?(conversationId: string, state: Record<string, unknown>): Promise<void>;
|
|
137
|
+
getCached?(key: string): Promise<unknown | null>;
|
|
138
|
+
setCached?(key: string, value: unknown, ttlMs?: number): Promise<void>;
|
|
139
|
+
}
|
|
140
|
+
export type ContextStrategy = 'truncate_old' | 'summarize' | 'error';
|
|
141
|
+
export interface HiveConfig {
|
|
142
|
+
systemPrompt: string;
|
|
143
|
+
tools: Tool[];
|
|
144
|
+
agents?: SubAgentConfig[];
|
|
145
|
+
llm: LLMProvider;
|
|
146
|
+
logger?: LogProvider;
|
|
147
|
+
repository?: RepositoryProvider;
|
|
148
|
+
maxIterations?: number;
|
|
149
|
+
maxContextTokens?: number;
|
|
150
|
+
contextStrategy?: ContextStrategy;
|
|
151
|
+
thinkingMode?: 'none' | 'enabled';
|
|
152
|
+
thinkingBudget?: number;
|
|
153
|
+
review?: ReviewConfig;
|
|
154
|
+
/** Disable __ask_user__ tool (used for sub-agents that shouldn't pause for input) */
|
|
155
|
+
disableAskUser?: boolean;
|
|
156
|
+
}
|
|
157
|
+
export interface RunOptions {
|
|
158
|
+
conversationId?: string;
|
|
159
|
+
userId?: string;
|
|
160
|
+
metadata?: Record<string, unknown>;
|
|
161
|
+
history?: Message[];
|
|
162
|
+
/**
|
|
163
|
+
* AbortSignal for cancellation (e.g., from AbortController)
|
|
164
|
+
* When aborted, agent stops and returns partial results
|
|
165
|
+
*/
|
|
166
|
+
signal?: AbortSignal;
|
|
167
|
+
/**
|
|
168
|
+
* Async function to check if agent should continue
|
|
169
|
+
* Called before each iteration and between tool calls
|
|
170
|
+
* Return false to stop execution
|
|
171
|
+
*
|
|
172
|
+
* Example (Firestore):
|
|
173
|
+
* ```typescript
|
|
174
|
+
* shouldContinue: async () => {
|
|
175
|
+
* const doc = await db.doc(`tasks/${taskId}`).get()
|
|
176
|
+
* return doc.data()?.status !== 'stopped'
|
|
177
|
+
* }
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
shouldContinue?: () => Promise<boolean>;
|
|
181
|
+
}
|
|
182
|
+
export interface PendingQuestion {
|
|
183
|
+
question: string;
|
|
184
|
+
options?: string[];
|
|
185
|
+
}
|
|
186
|
+
export type AgentStatus = 'complete' | 'needs_input' | 'interrupted';
|
|
187
|
+
export interface AgentResult {
|
|
188
|
+
response: string;
|
|
189
|
+
history: Message[];
|
|
190
|
+
toolCalls: ToolCallLog[];
|
|
191
|
+
thinking?: string[];
|
|
192
|
+
pendingQuestion?: PendingQuestion;
|
|
193
|
+
todos?: TodoItem[];
|
|
194
|
+
review?: ReviewResult;
|
|
195
|
+
status: AgentStatus;
|
|
196
|
+
/**
|
|
197
|
+
* Present when status is 'interrupted'
|
|
198
|
+
* Contains partial work that can be continued or discarded
|
|
199
|
+
*/
|
|
200
|
+
interrupted?: {
|
|
201
|
+
/** Reason for interruption */
|
|
202
|
+
reason: 'aborted' | 'stopped' | 'max_iterations';
|
|
203
|
+
/** Number of iterations completed before interruption */
|
|
204
|
+
iterationsCompleted: number;
|
|
205
|
+
};
|
|
206
|
+
usage?: {
|
|
207
|
+
totalInputTokens: number;
|
|
208
|
+
totalOutputTokens: number;
|
|
209
|
+
cacheCreationInputTokens?: number;
|
|
210
|
+
cacheReadInputTokens?: number;
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
export type TodoStatus = 'pending' | 'in_progress' | 'completed';
|
|
214
|
+
export interface TodoItem {
|
|
215
|
+
id: string;
|
|
216
|
+
content: string;
|
|
217
|
+
/** Present continuous form shown when task is in_progress (e.g., "Running tests") */
|
|
218
|
+
activeForm?: string;
|
|
219
|
+
status: TodoStatus;
|
|
220
|
+
createdAt: number;
|
|
221
|
+
completedAt?: number;
|
|
222
|
+
}
|
|
223
|
+
export interface TodoList {
|
|
224
|
+
items: TodoItem[];
|
|
225
|
+
currentTaskId?: string;
|
|
226
|
+
}
|
|
227
|
+
export type ReviewSeverity = 'info' | 'warning' | 'error' | 'critical';
|
|
228
|
+
export interface ReviewIssue {
|
|
229
|
+
severity: ReviewSeverity;
|
|
230
|
+
message: string;
|
|
231
|
+
suggestion?: string;
|
|
232
|
+
location?: string;
|
|
233
|
+
}
|
|
234
|
+
export interface ReviewResult {
|
|
235
|
+
passed: boolean;
|
|
236
|
+
issues: ReviewIssue[];
|
|
237
|
+
summary: string;
|
|
238
|
+
reviewedAt: number;
|
|
239
|
+
}
|
|
240
|
+
export interface ReviewConfig {
|
|
241
|
+
enabled: boolean;
|
|
242
|
+
autoReview?: boolean;
|
|
243
|
+
requireApproval?: boolean;
|
|
244
|
+
categories?: string[];
|
|
245
|
+
}
|
|
246
|
+
export interface EnvironmentInfo {
|
|
247
|
+
workingDirectory?: string;
|
|
248
|
+
platform?: string;
|
|
249
|
+
date?: string;
|
|
250
|
+
customVars?: Record<string, string>;
|
|
251
|
+
}
|
|
252
|
+
export interface SystemPromptConfig {
|
|
253
|
+
basePrompt: string;
|
|
254
|
+
environment?: EnvironmentInfo;
|
|
255
|
+
reminders?: string[];
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@alexnetrebskii/hive-agent",
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Minimal TypeScript agent framework inspired by Claude Code architecture",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"keywords": [
|
|
18
|
+
"ai",
|
|
19
|
+
"agent",
|
|
20
|
+
"llm",
|
|
21
|
+
"claude",
|
|
22
|
+
"openai",
|
|
23
|
+
"tools",
|
|
24
|
+
"framework"
|
|
25
|
+
],
|
|
26
|
+
"author": "",
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"engines": {
|
|
29
|
+
"node": ">=20.0.0"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@anthropic-ai/sdk": "^0.71.0"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@types/node": "^20.0.0",
|
|
36
|
+
"typescript": "^5.7.0"
|
|
37
|
+
},
|
|
38
|
+
"scripts": {
|
|
39
|
+
"build": "tsc",
|
|
40
|
+
"dev": "tsc --watch",
|
|
41
|
+
"clean": "rm -rf dist"
|
|
42
|
+
}
|
|
43
|
+
}
|