@saccolabs/tars 1.32.1 → 1.34.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/context/skills/create-extension/SKILL.md +32 -10
- package/dist/cli/commands/quota.js +0 -1
- package/dist/cli/commands/quota.js.map +1 -1
- package/dist/cli/commands/setup.js +49 -13
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/supervisor/main.js +60 -2
- package/dist/supervisor/main.js.map +1 -1
- package/dist/supervisor/supervisor.js +18 -2
- package/dist/supervisor/supervisor.js.map +1 -1
- package/dist/supervisor/tars-engine.js +8 -11
- package/dist/supervisor/tars-engine.js.map +1 -1
- package/dist/tools/get-quota.d.ts +1 -1
- package/dist/tools/get-quota.js +1 -1
- package/dist/tools/get-quota.js.map +1 -1
- package/extensions/memory/dist/server.js +99 -108
- package/extensions/memory/dist/server.js.map +1 -1
- package/extensions/memory/src/server.ts +95 -115
- package/extensions/tasks/dist/server.js +56 -66
- package/extensions/tasks/dist/server.js.map +1 -1
- package/extensions/tasks/src/server.ts +67 -66
- package/package.json +1 -1
- package/src/prompts/system.md +12 -30
- package/context/skills/swarm-ops/SKILL.md +0 -163
|
@@ -23,73 +23,49 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
23
23
|
return {
|
|
24
24
|
tools: [
|
|
25
25
|
{
|
|
26
|
-
name: '
|
|
26
|
+
name: 'manage_facts',
|
|
27
27
|
description:
|
|
28
|
-
'
|
|
28
|
+
'Manage core facts about the user. Facts are persistent key-value pairs representing preferences, rules, identity, and durable information.',
|
|
29
29
|
inputSchema: {
|
|
30
30
|
type: 'object',
|
|
31
31
|
properties: {
|
|
32
|
+
action: {
|
|
33
|
+
type: 'string',
|
|
34
|
+
enum: ['store', 'delete', 'list'],
|
|
35
|
+
description: 'The operation to perform: store, delete, or list facts'
|
|
36
|
+
},
|
|
32
37
|
key: {
|
|
33
38
|
type: 'string',
|
|
34
39
|
description:
|
|
35
|
-
'A unique, snake_case identifier for the fact (e.g. "favorite_color", "
|
|
40
|
+
'A unique, snake_case identifier for the fact (e.g. "favorite_color", "timezone"). Required for store and delete actions.'
|
|
36
41
|
},
|
|
37
42
|
value: {
|
|
38
43
|
type: 'string',
|
|
39
|
-
description: 'The value of the fact'
|
|
44
|
+
description: 'The value of the fact. Required for store action.'
|
|
40
45
|
}
|
|
41
46
|
},
|
|
42
|
-
required: ['
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: 'memory_delete_fact',
|
|
47
|
-
description: 'Delete a stored fact by its key.',
|
|
48
|
-
inputSchema: {
|
|
49
|
-
type: 'object',
|
|
50
|
-
properties: {
|
|
51
|
-
key: { type: 'string', description: 'The key of the fact to delete' }
|
|
52
|
-
},
|
|
53
|
-
required: ['key']
|
|
47
|
+
required: ['action']
|
|
54
48
|
}
|
|
55
49
|
},
|
|
56
50
|
{
|
|
57
|
-
name: '
|
|
51
|
+
name: 'manage_notes',
|
|
58
52
|
description:
|
|
59
|
-
'
|
|
60
|
-
inputSchema: {
|
|
61
|
-
type: 'object',
|
|
62
|
-
properties: {}
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
name: 'memory_add_note',
|
|
67
|
-
description:
|
|
68
|
-
"Append a timestamped note to today's daily log. Use for project context, decisions, observations, and anything that does not need to be loaded into every session. Notes are searchable but not injected into the main context window.",
|
|
53
|
+
'Append timestamped notes to the daily journal or search across all facts, daily notes, and past sessions.',
|
|
69
54
|
inputSchema: {
|
|
70
55
|
type: 'object',
|
|
71
56
|
properties: {
|
|
72
|
-
|
|
57
|
+
action: {
|
|
73
58
|
type: 'string',
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
name: 'memory_search',
|
|
82
|
-
description:
|
|
83
|
-
'Search across all stored facts and daily notes by keyword. Returns matching entries from both long-term facts and short-term daily notes.',
|
|
84
|
-
inputSchema: {
|
|
85
|
-
type: 'object',
|
|
86
|
-
properties: {
|
|
87
|
-
query: {
|
|
59
|
+
enum: ['add', 'search'],
|
|
60
|
+
description: 'The operation to perform: add a note, or search memory'
|
|
61
|
+
},
|
|
62
|
+
queryOrContent: {
|
|
88
63
|
type: 'string',
|
|
89
|
-
description:
|
|
64
|
+
description:
|
|
65
|
+
'The content of the note to add, or the keyword search query.'
|
|
90
66
|
}
|
|
91
67
|
},
|
|
92
|
-
required: ['
|
|
68
|
+
required: ['action', 'queryOrContent']
|
|
93
69
|
}
|
|
94
70
|
}
|
|
95
71
|
]
|
|
@@ -104,86 +80,90 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
104
80
|
|
|
105
81
|
try {
|
|
106
82
|
switch (name) {
|
|
107
|
-
case '
|
|
108
|
-
const { key, value } = args as any;
|
|
109
|
-
if (!
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
content: [
|
|
127
|
-
{
|
|
128
|
-
type: 'text',
|
|
129
|
-
text: deleted
|
|
130
|
-
? `✅ Deleted fact: "${key}"`
|
|
131
|
-
: `❌ Fact "${key}" not found.`
|
|
132
|
-
}
|
|
133
|
-
]
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
case 'memory_list_facts': {
|
|
138
|
-
const facts = await store.listFacts();
|
|
139
|
-
if (facts.length === 0) {
|
|
83
|
+
case 'manage_facts': {
|
|
84
|
+
const { action, key, value } = args as any;
|
|
85
|
+
if (!action) throw new Error('Action is required.');
|
|
86
|
+
|
|
87
|
+
if (action === 'store') {
|
|
88
|
+
if (!key || !value)
|
|
89
|
+
throw new Error('Both key and value are required to store a fact.');
|
|
90
|
+
const fact = await store.storeFact(key.trim(), value.trim());
|
|
91
|
+
return {
|
|
92
|
+
content: [
|
|
93
|
+
{
|
|
94
|
+
type: 'text',
|
|
95
|
+
text: `✅ Stored fact: "${fact.key}" = "${fact.value}"`
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
};
|
|
99
|
+
} else if (action === 'delete') {
|
|
100
|
+
if (!key) throw new Error('Key is required to delete a fact.');
|
|
101
|
+
const deleted = await store.deleteFact(key);
|
|
140
102
|
return {
|
|
141
|
-
content: [
|
|
103
|
+
content: [
|
|
104
|
+
{
|
|
105
|
+
type: 'text',
|
|
106
|
+
text: deleted
|
|
107
|
+
? `✅ Deleted fact: "${key}"`
|
|
108
|
+
: `❌ Fact "${key}" not found.`
|
|
109
|
+
}
|
|
110
|
+
]
|
|
142
111
|
};
|
|
112
|
+
} else if (action === 'list') {
|
|
113
|
+
const facts = await store.listFacts();
|
|
114
|
+
if (facts.length === 0) {
|
|
115
|
+
return {
|
|
116
|
+
content: [{ type: 'text', text: 'No facts stored yet.' }]
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const text = facts
|
|
121
|
+
.map((f) => `• **${f.key}**: ${f.value} _(updated ${f.updatedAt})_`)
|
|
122
|
+
.join('\n');
|
|
123
|
+
|
|
124
|
+
return { content: [{ type: 'text', text }] };
|
|
125
|
+
} else {
|
|
126
|
+
throw new Error(`Unknown action: ${action}`);
|
|
143
127
|
}
|
|
144
|
-
|
|
145
|
-
const text = facts
|
|
146
|
-
.map((f) => `• **${f.key}**: ${f.value} _(updated ${f.updatedAt})_`)
|
|
147
|
-
.join('\n');
|
|
148
|
-
|
|
149
|
-
return { content: [{ type: 'text', text }] };
|
|
150
128
|
}
|
|
151
129
|
|
|
152
|
-
case '
|
|
153
|
-
const {
|
|
154
|
-
if (!
|
|
155
|
-
|
|
156
|
-
const fileName = await store.addNote(content.trim());
|
|
157
|
-
return {
|
|
158
|
-
content: [
|
|
159
|
-
{
|
|
160
|
-
type: 'text',
|
|
161
|
-
text: `✅ Note added to ${fileName}`
|
|
162
|
-
}
|
|
163
|
-
]
|
|
164
|
-
};
|
|
165
|
-
}
|
|
130
|
+
case 'manage_notes': {
|
|
131
|
+
const { action, queryOrContent } = args as any;
|
|
132
|
+
if (!action) throw new Error('Action is required.');
|
|
133
|
+
if (!queryOrContent) throw new Error('queryOrContent is required.');
|
|
166
134
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
135
|
+
if (action === 'add') {
|
|
136
|
+
const fileName = await store.addNote(queryOrContent.trim());
|
|
137
|
+
return {
|
|
138
|
+
content: [
|
|
139
|
+
{
|
|
140
|
+
type: 'text',
|
|
141
|
+
text: `✅ Note added to ${fileName}`
|
|
142
|
+
}
|
|
143
|
+
]
|
|
144
|
+
};
|
|
145
|
+
} else if (action === 'search') {
|
|
146
|
+
const results = await store.search(queryOrContent.trim());
|
|
147
|
+
if (results.length === 0) {
|
|
148
|
+
return {
|
|
149
|
+
content: [
|
|
150
|
+
{ type: 'text', text: `No results found for "${queryOrContent}".` }
|
|
151
|
+
]
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
const text = results.map((r) => `• ${r}`).join('\n');
|
|
173
156
|
return {
|
|
174
|
-
content: [
|
|
157
|
+
content: [
|
|
158
|
+
{
|
|
159
|
+
type: 'text',
|
|
160
|
+
text: `Found ${results.length} result(s):\n${text}`
|
|
161
|
+
}
|
|
162
|
+
]
|
|
175
163
|
};
|
|
164
|
+
} else {
|
|
165
|
+
throw new Error(`Unknown action: ${action}`);
|
|
176
166
|
}
|
|
177
|
-
|
|
178
|
-
const text = results.map((r) => `• ${r}`).join('\n');
|
|
179
|
-
return {
|
|
180
|
-
content: [
|
|
181
|
-
{
|
|
182
|
-
type: 'text',
|
|
183
|
-
text: `Found ${results.length} result(s):\n${text}`
|
|
184
|
-
}
|
|
185
|
-
]
|
|
186
|
-
};
|
|
187
167
|
}
|
|
188
168
|
|
|
189
169
|
default:
|
|
@@ -20,70 +20,49 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
20
20
|
return {
|
|
21
21
|
tools: [
|
|
22
22
|
{
|
|
23
|
-
name: '
|
|
24
|
-
description: '
|
|
23
|
+
name: 'manage_tasks',
|
|
24
|
+
description: 'Manage scheduled tasks. Supports creating, listing, modifying, toggling, and deleting tasks.',
|
|
25
25
|
inputSchema: {
|
|
26
26
|
type: 'object',
|
|
27
27
|
properties: {
|
|
28
|
-
|
|
28
|
+
action: {
|
|
29
|
+
type: 'string',
|
|
30
|
+
enum: ['create', 'list', 'delete', 'toggle', 'modify'],
|
|
31
|
+
description: 'The task management operation to perform'
|
|
32
|
+
},
|
|
33
|
+
id: {
|
|
34
|
+
type: 'string',
|
|
35
|
+
description: 'Task ID. Required for delete, toggle, and modify actions.'
|
|
36
|
+
},
|
|
37
|
+
title: {
|
|
38
|
+
type: 'string',
|
|
39
|
+
description: 'Task title. Required for create.'
|
|
40
|
+
},
|
|
29
41
|
prompt: {
|
|
30
42
|
type: 'string',
|
|
31
|
-
description: 'The prompt for
|
|
43
|
+
description: 'The prompt instructions for Tars to execute on schedule. Required for create.'
|
|
44
|
+
},
|
|
45
|
+
schedule: {
|
|
46
|
+
type: 'string',
|
|
47
|
+
description: 'Cron expression or ISO date/time string. Required for create.'
|
|
32
48
|
},
|
|
33
|
-
schedule: { type: 'string', description: 'Cron expression or ISO date' },
|
|
34
|
-
mode: { type: 'string', enum: ['notify', 'silent'], default: 'silent' }
|
|
35
|
-
},
|
|
36
|
-
required: ['title', 'prompt', 'schedule']
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
name: 'list_tasks',
|
|
41
|
-
description: 'List all scheduled tasks',
|
|
42
|
-
inputSchema: {
|
|
43
|
-
type: 'object',
|
|
44
|
-
properties: {
|
|
45
|
-
enabledOnly: { type: 'boolean', default: false }
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: 'delete_task',
|
|
51
|
-
description: 'Delete a task by ID',
|
|
52
|
-
inputSchema: {
|
|
53
|
-
type: 'object',
|
|
54
|
-
properties: {
|
|
55
|
-
id: { type: 'string' }
|
|
56
|
-
},
|
|
57
|
-
required: ['id']
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
name: 'toggle_task',
|
|
62
|
-
description: 'Enable or disable a task',
|
|
63
|
-
inputSchema: {
|
|
64
|
-
type: 'object',
|
|
65
|
-
properties: {
|
|
66
|
-
id: { type: 'string', description: 'Task ID' },
|
|
67
49
|
enabled: {
|
|
68
50
|
type: 'boolean',
|
|
69
|
-
description: 'Whether the task
|
|
51
|
+
description: 'Whether the task is enabled. Required for toggle.'
|
|
52
|
+
},
|
|
53
|
+
mode: {
|
|
54
|
+
type: 'string',
|
|
55
|
+
enum: ['notify', 'silent'],
|
|
56
|
+
default: 'silent',
|
|
57
|
+
description: 'Notification mode for task execution results'
|
|
58
|
+
},
|
|
59
|
+
enabledOnly: {
|
|
60
|
+
type: 'boolean',
|
|
61
|
+
default: false,
|
|
62
|
+
description: 'When action is list, filter to enabled tasks only.'
|
|
70
63
|
}
|
|
71
64
|
},
|
|
72
|
-
required: ['
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
name: 'modify_task',
|
|
77
|
-
description: 'Modify an existing task',
|
|
78
|
-
inputSchema: {
|
|
79
|
-
type: 'object',
|
|
80
|
-
properties: {
|
|
81
|
-
id: { type: 'string', description: 'Task ID' },
|
|
82
|
-
title: { type: 'string', description: 'New title' },
|
|
83
|
-
prompt: { type: 'string', description: 'New prompt' },
|
|
84
|
-
schedule: { type: 'string', description: 'New cron or ISO date' }
|
|
85
|
-
},
|
|
86
|
-
required: ['id']
|
|
65
|
+
required: ['action']
|
|
87
66
|
}
|
|
88
67
|
}
|
|
89
68
|
]
|
|
@@ -95,9 +74,17 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
95
74
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
96
75
|
const { name, arguments: args } = request.params;
|
|
97
76
|
try {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
77
|
+
if (name !== 'manage_tasks') {
|
|
78
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
79
|
+
}
|
|
80
|
+
const { action, id, title, prompt, schedule, enabled, mode = 'silent', enabledOnly } = args;
|
|
81
|
+
if (!action)
|
|
82
|
+
throw new Error('Action is required.');
|
|
83
|
+
switch (action) {
|
|
84
|
+
case 'create': {
|
|
85
|
+
if (!title || !prompt || !schedule) {
|
|
86
|
+
throw new Error('title, prompt, and schedule are required for create action.');
|
|
87
|
+
}
|
|
101
88
|
// Calculate next run
|
|
102
89
|
let nextRun;
|
|
103
90
|
try {
|
|
@@ -141,8 +128,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
141
128
|
]
|
|
142
129
|
};
|
|
143
130
|
}
|
|
144
|
-
case '
|
|
145
|
-
const { enabledOnly } = args;
|
|
131
|
+
case 'list': {
|
|
146
132
|
const tasks = await store.loadTasks();
|
|
147
133
|
const filtered = enabledOnly ? tasks.filter((t) => t.enabled) : tasks;
|
|
148
134
|
if (filtered.length === 0) {
|
|
@@ -163,8 +149,9 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
163
149
|
.join('\n\n');
|
|
164
150
|
return { content: [{ type: 'text', text }] };
|
|
165
151
|
}
|
|
166
|
-
case '
|
|
167
|
-
|
|
152
|
+
case 'delete': {
|
|
153
|
+
if (!id)
|
|
154
|
+
throw new Error('Task ID is required for delete action.');
|
|
168
155
|
const success = await store.deleteTask(id);
|
|
169
156
|
return {
|
|
170
157
|
content: [
|
|
@@ -175,8 +162,10 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
175
162
|
]
|
|
176
163
|
};
|
|
177
164
|
}
|
|
178
|
-
case '
|
|
179
|
-
|
|
165
|
+
case 'toggle': {
|
|
166
|
+
if (!id || enabled === undefined) {
|
|
167
|
+
throw new Error('Task ID and enabled boolean are required for toggle action.');
|
|
168
|
+
}
|
|
180
169
|
const task = await store.updateTask(id, { enabled });
|
|
181
170
|
return {
|
|
182
171
|
content: [
|
|
@@ -189,8 +178,9 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
189
178
|
]
|
|
190
179
|
};
|
|
191
180
|
}
|
|
192
|
-
case '
|
|
193
|
-
|
|
181
|
+
case 'modify': {
|
|
182
|
+
if (!id)
|
|
183
|
+
throw new Error('Task ID is required for modify action.');
|
|
194
184
|
const updates = {};
|
|
195
185
|
if (title)
|
|
196
186
|
updates.title = title;
|
|
@@ -225,7 +215,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
225
215
|
};
|
|
226
216
|
}
|
|
227
217
|
default:
|
|
228
|
-
throw new Error(`Unknown
|
|
218
|
+
throw new Error(`Unknown action: ${action}`);
|
|
229
219
|
}
|
|
230
220
|
}
|
|
231
221
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,SAAS,EAAQ,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;AAC9B,MAAM,MAAM,GAAG,IAAI,MAAM,CACrB;IACI,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,OAAO;CACnB,EACD;IACI,YAAY,EAAE;QACV,KAAK,EAAE,EAAE;KACZ;CACJ,CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IACxD,OAAO;QACH,KAAK,EAAE;YACH;gBACI,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|