@element47/ag 4.5.4 → 4.5.5

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.
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Agent tool — spawn in-process sub-agents for parallel work
3
+ */
4
+ import { loadTasks, saveTasks } from '../memory/memory.js';
5
+ export function agentTool(parentAgent) {
6
+ return {
7
+ type: 'function',
8
+ function: {
9
+ name: 'agent',
10
+ description: 'Spawn a sub-agent to work on a task independently. Sub-agents get project memory, plan, skills, and tools but start with a clean context (no conversation history). Use for parallel work: spawn multiple agents to tackle different tasks simultaneously. Each agent runs autonomously and returns its result.',
11
+ parameters: {
12
+ type: 'object',
13
+ properties: {
14
+ prompt: {
15
+ type: 'string',
16
+ description: 'What the sub-agent should do. Be specific — the sub-agent has no conversation history.'
17
+ },
18
+ taskId: {
19
+ type: 'number',
20
+ description: 'Task ID to assign. Auto-marks in_progress at start, done on completion.'
21
+ },
22
+ model: {
23
+ type: 'string',
24
+ description: 'Override model for this agent (e.g. anthropic/claude-haiku for cheaper work)'
25
+ }
26
+ },
27
+ required: ['prompt']
28
+ }
29
+ },
30
+ execute: async ({ prompt, taskId, model }) => {
31
+ const cwd = parentAgent.getCwd();
32
+ // If taskId provided, validate and mark in_progress
33
+ let taskTitle;
34
+ let taskDescription;
35
+ if (taskId != null) {
36
+ const tasks = loadTasks(cwd);
37
+ const task = tasks.find(t => t.id === taskId);
38
+ if (!task)
39
+ return `Error: task #${taskId} not found`;
40
+ taskTitle = task.title;
41
+ taskDescription = task.description;
42
+ task.status = 'in_progress';
43
+ saveTasks(tasks, cwd);
44
+ }
45
+ // Build system prompt suffix with task context
46
+ let suffix = '';
47
+ if (taskId != null && taskTitle) {
48
+ const descLine = taskDescription ? `\n${taskDescription}` : '';
49
+ suffix = `<assigned-task id="${taskId}">\n${taskTitle}${descLine}\n</assigned-task>`;
50
+ }
51
+ // Dynamically import Agent to avoid circular dependency at module level
52
+ const { Agent } = await import('../core/agent.js');
53
+ // Create sub-agent — same project, clean history, no sub-agent tool (depth limit)
54
+ const child = new Agent({
55
+ apiKey: parentAgent.getApiKey(),
56
+ model: model || parentAgent.getModel(),
57
+ baseURL: parentAgent.getBaseURL(),
58
+ cwd,
59
+ maxIterations: 50,
60
+ noHistory: true,
61
+ noSubAgents: true,
62
+ silent: true,
63
+ systemPromptSuffix: suffix,
64
+ });
65
+ // Load extensions so sub-agent events fire for extension observers
66
+ await child.initExtensions();
67
+ try {
68
+ const result = await child.chat(prompt);
69
+ // Mark task done on success
70
+ if (taskId != null) {
71
+ const tasks = loadTasks(cwd);
72
+ const task = tasks.find(t => t.id === taskId);
73
+ if (task) {
74
+ task.status = 'done';
75
+ saveTasks(tasks, cwd);
76
+ }
77
+ }
78
+ // Get usage info from child
79
+ const tracker = child.getContextTracker();
80
+ const tokens = tracker.getUsedTokens();
81
+ const usageLine = tokens ? `\n[sub-agent used ~${Math.round(tokens / 1000)}K tokens]` : '';
82
+ return result + usageLine;
83
+ }
84
+ catch (error) {
85
+ return `Sub-agent error: ${error}`;
86
+ }
87
+ }
88
+ };
89
+ }
90
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/tools/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Task tool — structured task tracking for plans and sub-agents
3
+ */
4
+ import { Tool } from '../core/types.js';
5
+ export declare function taskTool(cwd: string): Tool;
6
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/tools/task.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAWxC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CA+G1C"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Task tool — structured task tracking for plans and sub-agents
3
+ */
4
+ import { loadTasks, saveTasks, getActivePlanName } from '../memory/memory.js';
5
+ const VALID_STATUSES = ['pending', 'in_progress', 'done'];
6
+ function formatTask(t) {
7
+ const plan = t.plan ? ` (plan: ${t.plan})` : '';
8
+ const desc = t.description ? `\n ${t.description}` : '';
9
+ return `${t.id}. [${t.status}] ${t.title}${plan} (created ${t.created.slice(0, 10)})${desc}`;
10
+ }
11
+ export function taskTool(cwd) {
12
+ return {
13
+ type: 'function',
14
+ function: {
15
+ name: 'task',
16
+ description: 'Manage tasks — the executable steps of a plan. Use to track progress on multi-step work. Tasks appear in context so you always know what\'s done and what remains.',
17
+ parameters: {
18
+ type: 'object',
19
+ properties: {
20
+ action: {
21
+ type: 'string',
22
+ enum: ['create', 'list', 'update', 'read', 'remove', 'clear'],
23
+ description: 'create: new task. list: show all. update: change status. read: task details. remove: delete. clear: remove all done tasks.'
24
+ },
25
+ title: {
26
+ type: 'string',
27
+ description: 'Task title (for create)'
28
+ },
29
+ id: {
30
+ type: 'number',
31
+ description: 'Task ID (for update, read, remove)'
32
+ },
33
+ description: {
34
+ type: 'string',
35
+ description: 'Detailed description of what needs to be done (for create). Gives sub-agents enough context to work independently.'
36
+ },
37
+ status: {
38
+ type: 'string',
39
+ enum: ['pending', 'in_progress', 'done'],
40
+ description: 'New status (for update)'
41
+ }
42
+ },
43
+ required: ['action']
44
+ }
45
+ },
46
+ execute: ({ action, title, description: desc, id, status }) => {
47
+ const tasks = loadTasks(cwd);
48
+ switch (action) {
49
+ case 'create': {
50
+ if (!title)
51
+ return 'Error: title is required for create';
52
+ const nextId = tasks.length > 0 ? Math.max(...tasks.map(t => t.id)) + 1 : 1;
53
+ const task = {
54
+ id: nextId,
55
+ title,
56
+ description: desc || undefined,
57
+ status: 'pending',
58
+ plan: getActivePlanName(cwd) || undefined,
59
+ created: new Date().toISOString(),
60
+ };
61
+ tasks.push(task);
62
+ saveTasks(tasks, cwd);
63
+ return `Task #${nextId} created: ${title}`;
64
+ }
65
+ case 'list': {
66
+ if (tasks.length === 0)
67
+ return 'No tasks.';
68
+ const pending = tasks.filter(t => t.status === 'pending');
69
+ const inProgress = tasks.filter(t => t.status === 'in_progress');
70
+ const done = tasks.filter(t => t.status === 'done');
71
+ const sections = [];
72
+ if (inProgress.length > 0)
73
+ sections.push('In Progress:\n' + inProgress.map(formatTask).join('\n'));
74
+ if (pending.length > 0)
75
+ sections.push('Pending:\n' + pending.map(formatTask).join('\n'));
76
+ if (done.length > 0)
77
+ sections.push('Done:\n' + done.map(formatTask).join('\n'));
78
+ return sections.join('\n\n');
79
+ }
80
+ case 'update': {
81
+ if (id == null)
82
+ return 'Error: id is required for update';
83
+ if (!status)
84
+ return 'Error: status is required for update';
85
+ if (!VALID_STATUSES.includes(status)) {
86
+ return `Error: invalid status "${status}". Use: ${VALID_STATUSES.join(', ')}`;
87
+ }
88
+ const task = tasks.find(t => t.id === id);
89
+ if (!task)
90
+ return `Error: task #${id} not found`;
91
+ task.status = status;
92
+ saveTasks(tasks, cwd);
93
+ return `Task #${id} updated: [${status}] ${task.title}`;
94
+ }
95
+ case 'read': {
96
+ if (id == null)
97
+ return 'Error: id is required for read';
98
+ const task = tasks.find(t => t.id === id);
99
+ if (!task)
100
+ return `Error: task #${id} not found`;
101
+ return formatTask(task);
102
+ }
103
+ case 'remove': {
104
+ if (id == null)
105
+ return 'Error: id is required for remove';
106
+ const idx = tasks.findIndex(t => t.id === id);
107
+ if (idx === -1)
108
+ return `Error: task #${id} not found`;
109
+ const removed = tasks.splice(idx, 1)[0];
110
+ saveTasks(tasks, cwd);
111
+ return `Task #${removed.id} removed: ${removed.title}`;
112
+ }
113
+ case 'clear': {
114
+ const before = tasks.length;
115
+ const remaining = tasks.filter(t => t.status !== 'done');
116
+ saveTasks(remaining, cwd);
117
+ const cleared = before - remaining.length;
118
+ return cleared > 0
119
+ ? `Cleared ${cleared} done task(s). ${remaining.length} remaining.`
120
+ : 'No done tasks to clear.';
121
+ }
122
+ default:
123
+ return `Error: unknown action "${action}". Use: create, list, update, read, remove, clear`;
124
+ }
125
+ }
126
+ };
127
+ }
128
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/tools/task.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@element47/ag",
3
- "version": "4.5.4",
3
+ "version": "4.5.5",
4
4
  "description": "Persistent AI coding agent with memory - any model via OpenRouter",
5
5
  "type": "module",
6
6
  "bin": {