@calliopelabs/cli 0.4.6 → 0.6.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 +258 -105
- package/dist/branching.d.ts +56 -0
- package/dist/branching.d.ts.map +1 -0
- package/dist/branching.js +211 -0
- package/dist/branching.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +235 -2
- package/dist/cli.js.map +1 -1
- package/dist/completion.d.ts +75 -0
- package/dist/completion.d.ts.map +1 -0
- package/dist/completion.js +234 -0
- package/dist/completion.js.map +1 -0
- package/dist/config.d.ts +36 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +90 -0
- package/dist/config.js.map +1 -1
- package/dist/diff.d.ts +73 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +317 -0
- package/dist/diff.js.map +1 -0
- package/dist/errors.d.ts +41 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +199 -0
- package/dist/errors.js.map +1 -0
- package/dist/file-watcher.d.ts +91 -0
- package/dist/file-watcher.d.ts.map +1 -0
- package/dist/file-watcher.js +269 -0
- package/dist/file-watcher.js.map +1 -0
- package/dist/files.d.ts +49 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +191 -0
- package/dist/files.js.map +1 -0
- package/dist/fuzzy-search.d.ts +75 -0
- package/dist/fuzzy-search.d.ts.map +1 -0
- package/dist/fuzzy-search.js +240 -0
- package/dist/fuzzy-search.js.map +1 -0
- package/dist/hooks.d.ts +79 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +271 -0
- package/dist/hooks.js.map +1 -0
- package/dist/keyboard.d.ts +57 -0
- package/dist/keyboard.d.ts.map +1 -0
- package/dist/keyboard.js +265 -0
- package/dist/keyboard.js.map +1 -0
- package/dist/markdown.d.ts +14 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +248 -0
- package/dist/markdown.js.map +1 -0
- package/dist/mcp.d.ts +90 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +290 -0
- package/dist/mcp.js.map +1 -0
- package/dist/memory.d.ts +104 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +394 -0
- package/dist/memory.js.map +1 -0
- package/dist/model-router.d.ts +67 -0
- package/dist/model-router.d.ts.map +1 -0
- package/dist/model-router.js +289 -0
- package/dist/model-router.js.map +1 -0
- package/dist/parallel-tools.d.ts +51 -0
- package/dist/parallel-tools.d.ts.map +1 -0
- package/dist/parallel-tools.js +278 -0
- package/dist/parallel-tools.js.map +1 -0
- package/dist/project-config.d.ts +84 -0
- package/dist/project-config.d.ts.map +1 -0
- package/dist/project-config.js +250 -0
- package/dist/project-config.js.map +1 -0
- package/dist/providers.d.ts +10 -2
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +240 -38
- package/dist/providers.js.map +1 -1
- package/dist/risk.d.ts +31 -0
- package/dist/risk.d.ts.map +1 -0
- package/dist/risk.js +367 -0
- package/dist/risk.js.map +1 -0
- package/dist/sandbox.d.ts +49 -0
- package/dist/sandbox.d.ts.map +1 -0
- package/dist/sandbox.js +347 -0
- package/dist/sandbox.js.map +1 -0
- package/dist/skills.d.ts +71 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +383 -0
- package/dist/skills.js.map +1 -0
- package/dist/storage.d.ts +139 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +508 -0
- package/dist/storage.js.map +1 -0
- package/dist/streaming.d.ts +94 -0
- package/dist/streaming.d.ts.map +1 -0
- package/dist/streaming.js +305 -0
- package/dist/streaming.js.map +1 -0
- package/dist/summarization.d.ts +76 -0
- package/dist/summarization.d.ts.map +1 -0
- package/dist/summarization.js +242 -0
- package/dist/summarization.js.map +1 -0
- package/dist/themes.d.ts +110 -0
- package/dist/themes.d.ts.map +1 -0
- package/dist/themes.js +329 -0
- package/dist/themes.js.map +1 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +335 -1
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +56 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +105 -0
- package/dist/types.js.map +1 -1
- package/dist/ui-cli.d.ts +9 -2
- package/dist/ui-cli.d.ts.map +1 -1
- package/dist/ui-cli.js +1315 -220
- package/dist/ui-cli.js.map +1 -1
- package/package.json +1 -1
package/dist/skills.js
ADDED
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calliope CLI - AgentSkills.io Integration
|
|
3
|
+
*
|
|
4
|
+
* Implements AgentSkills standard for extending agent capabilities.
|
|
5
|
+
* See: https://agentskills.io/specification
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import * as os from 'os';
|
|
10
|
+
import * as https from 'https';
|
|
11
|
+
// Skills storage directory
|
|
12
|
+
const SKILLS_DIR = path.join(os.homedir(), '.calliope-cli', 'skills');
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Storage
|
|
15
|
+
// ============================================================================
|
|
16
|
+
function ensureSkillsDir() {
|
|
17
|
+
if (!fs.existsSync(SKILLS_DIR)) {
|
|
18
|
+
fs.mkdirSync(SKILLS_DIR, { recursive: true });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function getSkillsIndexFile() {
|
|
22
|
+
return path.join(SKILLS_DIR, 'index.json');
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Load skills index
|
|
26
|
+
*/
|
|
27
|
+
function loadSkillsIndex() {
|
|
28
|
+
const file = getSkillsIndexFile();
|
|
29
|
+
if (!fs.existsSync(file)) {
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
return JSON.parse(fs.readFileSync(file, 'utf-8'));
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return {};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Save skills index
|
|
41
|
+
*/
|
|
42
|
+
function saveSkillsIndex(index) {
|
|
43
|
+
ensureSkillsDir();
|
|
44
|
+
fs.writeFileSync(getSkillsIndexFile(), JSON.stringify(index, null, 2));
|
|
45
|
+
}
|
|
46
|
+
// ============================================================================
|
|
47
|
+
// SKILL.md Parsing
|
|
48
|
+
// ============================================================================
|
|
49
|
+
/**
|
|
50
|
+
* Parse SKILL.md file
|
|
51
|
+
*/
|
|
52
|
+
function parseSkillFile(content) {
|
|
53
|
+
// Check for YAML frontmatter
|
|
54
|
+
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
|
|
55
|
+
if (!frontmatterMatch) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
const [, frontmatter, instructions] = frontmatterMatch;
|
|
59
|
+
// Simple YAML parsing (for the basic fields we need)
|
|
60
|
+
const metadata = {
|
|
61
|
+
name: '',
|
|
62
|
+
description: '',
|
|
63
|
+
};
|
|
64
|
+
const lines = frontmatter.split('\n');
|
|
65
|
+
let currentKey = '';
|
|
66
|
+
let inMultiline = false;
|
|
67
|
+
let multilineValue = '';
|
|
68
|
+
for (const line of lines) {
|
|
69
|
+
// Simple key: value parsing
|
|
70
|
+
const match = line.match(/^(\w[\w-]*)\s*:\s*(.*)$/);
|
|
71
|
+
if (match && !inMultiline) {
|
|
72
|
+
const [, key, value] = match;
|
|
73
|
+
currentKey = key;
|
|
74
|
+
if (value.startsWith('"') && value.endsWith('"')) {
|
|
75
|
+
metadata[key] = value.slice(1, -1);
|
|
76
|
+
}
|
|
77
|
+
else if (value.startsWith("'") && value.endsWith("'")) {
|
|
78
|
+
metadata[key] = value.slice(1, -1);
|
|
79
|
+
}
|
|
80
|
+
else if (value === '' || value === '|' || value === '>') {
|
|
81
|
+
inMultiline = true;
|
|
82
|
+
multilineValue = '';
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
metadata[key] = value;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else if (inMultiline && line.startsWith(' ')) {
|
|
89
|
+
multilineValue += (multilineValue ? '\n' : '') + line.trim();
|
|
90
|
+
}
|
|
91
|
+
else if (inMultiline && !line.startsWith(' ')) {
|
|
92
|
+
metadata[currentKey] = multilineValue;
|
|
93
|
+
inMultiline = false;
|
|
94
|
+
// Re-process this line
|
|
95
|
+
const newMatch = line.match(/^(\w[\w-]*)\s*:\s*(.*)$/);
|
|
96
|
+
if (newMatch) {
|
|
97
|
+
const [, key, value] = newMatch;
|
|
98
|
+
currentKey = key;
|
|
99
|
+
metadata[key] = value;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (inMultiline) {
|
|
104
|
+
metadata[currentKey] = multilineValue;
|
|
105
|
+
}
|
|
106
|
+
// Handle allowed-tools as array
|
|
107
|
+
if (typeof metadata['allowed-tools'] === 'string') {
|
|
108
|
+
metadata.allowedTools = metadata['allowed-tools'].split(/\s+/);
|
|
109
|
+
}
|
|
110
|
+
if (!metadata.name || !metadata.description) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
return { metadata, instructions: instructions.trim() };
|
|
114
|
+
}
|
|
115
|
+
// ============================================================================
|
|
116
|
+
// Skill Loading
|
|
117
|
+
// ============================================================================
|
|
118
|
+
/**
|
|
119
|
+
* Load a skill from a directory
|
|
120
|
+
*/
|
|
121
|
+
export function loadSkillFromDir(dir) {
|
|
122
|
+
const skillFile = path.join(dir, 'SKILL.md');
|
|
123
|
+
if (!fs.existsSync(skillFile)) {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
const content = fs.readFileSync(skillFile, 'utf-8');
|
|
127
|
+
const parsed = parseSkillFile(content);
|
|
128
|
+
if (!parsed) {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
id: parsed.metadata.name,
|
|
133
|
+
path: dir,
|
|
134
|
+
metadata: parsed.metadata,
|
|
135
|
+
instructions: parsed.instructions,
|
|
136
|
+
loaded: true,
|
|
137
|
+
source: 'local',
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get all loaded skills
|
|
142
|
+
*/
|
|
143
|
+
export function getSkills() {
|
|
144
|
+
ensureSkillsDir();
|
|
145
|
+
const index = loadSkillsIndex();
|
|
146
|
+
const skills = [];
|
|
147
|
+
for (const [name, info] of Object.entries(index)) {
|
|
148
|
+
const skill = loadSkillFromDir(info.path);
|
|
149
|
+
if (skill) {
|
|
150
|
+
skill.source = info.source;
|
|
151
|
+
skill.sourceUrl = info.sourceUrl;
|
|
152
|
+
skills.push(skill);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return skills;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get skill by name
|
|
159
|
+
*/
|
|
160
|
+
export function getSkill(name) {
|
|
161
|
+
const index = loadSkillsIndex();
|
|
162
|
+
const info = index[name];
|
|
163
|
+
if (!info)
|
|
164
|
+
return null;
|
|
165
|
+
const skill = loadSkillFromDir(info.path);
|
|
166
|
+
if (skill) {
|
|
167
|
+
skill.source = info.source;
|
|
168
|
+
skill.sourceUrl = info.sourceUrl;
|
|
169
|
+
}
|
|
170
|
+
return skill;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get skill references (scripts, references, assets)
|
|
174
|
+
*/
|
|
175
|
+
export function getSkillReferences(skill) {
|
|
176
|
+
const refs = [];
|
|
177
|
+
const dirs = ['scripts', 'references', 'assets'];
|
|
178
|
+
for (const dir of dirs) {
|
|
179
|
+
const fullPath = path.join(skill.path, dir);
|
|
180
|
+
if (fs.existsSync(fullPath)) {
|
|
181
|
+
const files = fs.readdirSync(fullPath);
|
|
182
|
+
for (const file of files) {
|
|
183
|
+
refs.push({
|
|
184
|
+
type: dir,
|
|
185
|
+
name: file,
|
|
186
|
+
path: path.join(fullPath, file),
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return refs;
|
|
192
|
+
}
|
|
193
|
+
// ============================================================================
|
|
194
|
+
// Skill Installation
|
|
195
|
+
// ============================================================================
|
|
196
|
+
/**
|
|
197
|
+
* Install skill from a local directory
|
|
198
|
+
*/
|
|
199
|
+
export function installLocalSkill(dir) {
|
|
200
|
+
const skill = loadSkillFromDir(dir);
|
|
201
|
+
if (!skill) {
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
ensureSkillsDir();
|
|
205
|
+
const destDir = path.join(SKILLS_DIR, skill.id);
|
|
206
|
+
// Copy skill directory
|
|
207
|
+
copyDir(dir, destDir);
|
|
208
|
+
// Update index
|
|
209
|
+
const index = loadSkillsIndex();
|
|
210
|
+
index[skill.id] = { path: destDir, source: 'local' };
|
|
211
|
+
saveSkillsIndex(index);
|
|
212
|
+
skill.path = destDir;
|
|
213
|
+
return skill;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Install skill from GitHub URL
|
|
217
|
+
*/
|
|
218
|
+
export async function installFromGithub(url) {
|
|
219
|
+
// Parse GitHub URL: https://github.com/user/repo/tree/branch/path
|
|
220
|
+
const match = url.match(/github\.com\/([^/]+)\/([^/]+)(?:\/tree\/([^/]+)\/(.+))?/);
|
|
221
|
+
if (!match) {
|
|
222
|
+
throw new Error('Invalid GitHub URL');
|
|
223
|
+
}
|
|
224
|
+
const [, owner, repo, branch = 'main', skillPath = ''] = match;
|
|
225
|
+
// Fetch SKILL.md from raw content
|
|
226
|
+
const rawUrl = `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/${skillPath}/SKILL.md`.replace(/\/+/g, '/').replace(':/', '://');
|
|
227
|
+
const content = await fetchUrl(rawUrl);
|
|
228
|
+
const parsed = parseSkillFile(content);
|
|
229
|
+
if (!parsed) {
|
|
230
|
+
throw new Error('Invalid SKILL.md');
|
|
231
|
+
}
|
|
232
|
+
ensureSkillsDir();
|
|
233
|
+
const destDir = path.join(SKILLS_DIR, parsed.metadata.name);
|
|
234
|
+
// Create skill directory
|
|
235
|
+
if (!fs.existsSync(destDir)) {
|
|
236
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
237
|
+
}
|
|
238
|
+
// Write SKILL.md
|
|
239
|
+
fs.writeFileSync(path.join(destDir, 'SKILL.md'), content);
|
|
240
|
+
// Update index
|
|
241
|
+
const index = loadSkillsIndex();
|
|
242
|
+
index[parsed.metadata.name] = { path: destDir, source: 'github', sourceUrl: url };
|
|
243
|
+
saveSkillsIndex(index);
|
|
244
|
+
return {
|
|
245
|
+
id: parsed.metadata.name,
|
|
246
|
+
path: destDir,
|
|
247
|
+
metadata: parsed.metadata,
|
|
248
|
+
instructions: parsed.instructions,
|
|
249
|
+
loaded: true,
|
|
250
|
+
source: 'github',
|
|
251
|
+
sourceUrl: url,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Install from agentskills.io registry
|
|
256
|
+
*/
|
|
257
|
+
export async function installFromRegistry(skillName) {
|
|
258
|
+
// Fetch from agentskills.io
|
|
259
|
+
const registryUrl = `https://agentskills.io/api/skills/${skillName}`;
|
|
260
|
+
try {
|
|
261
|
+
const data = await fetchUrl(registryUrl);
|
|
262
|
+
const info = JSON.parse(data);
|
|
263
|
+
if (info.github) {
|
|
264
|
+
return installFromGithub(info.github);
|
|
265
|
+
}
|
|
266
|
+
else if (info.content) {
|
|
267
|
+
ensureSkillsDir();
|
|
268
|
+
const destDir = path.join(SKILLS_DIR, skillName);
|
|
269
|
+
if (!fs.existsSync(destDir)) {
|
|
270
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
271
|
+
}
|
|
272
|
+
fs.writeFileSync(path.join(destDir, 'SKILL.md'), info.content);
|
|
273
|
+
const parsed = parseSkillFile(info.content);
|
|
274
|
+
if (!parsed) {
|
|
275
|
+
throw new Error('Invalid skill content');
|
|
276
|
+
}
|
|
277
|
+
const index = loadSkillsIndex();
|
|
278
|
+
index[skillName] = { path: destDir, source: 'registry', sourceUrl: registryUrl };
|
|
279
|
+
saveSkillsIndex(index);
|
|
280
|
+
return {
|
|
281
|
+
id: skillName,
|
|
282
|
+
path: destDir,
|
|
283
|
+
metadata: parsed.metadata,
|
|
284
|
+
instructions: parsed.instructions,
|
|
285
|
+
loaded: true,
|
|
286
|
+
source: 'registry',
|
|
287
|
+
sourceUrl: registryUrl,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
throw new Error('Skill not found in registry');
|
|
291
|
+
}
|
|
292
|
+
catch (e) {
|
|
293
|
+
if (e instanceof Error && e.message.includes('404')) {
|
|
294
|
+
throw new Error(`Skill "${skillName}" not found in registry`);
|
|
295
|
+
}
|
|
296
|
+
throw e;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Uninstall a skill
|
|
301
|
+
*/
|
|
302
|
+
export function uninstallSkill(name) {
|
|
303
|
+
const index = loadSkillsIndex();
|
|
304
|
+
const info = index[name];
|
|
305
|
+
if (!info)
|
|
306
|
+
return false;
|
|
307
|
+
// Remove directory
|
|
308
|
+
if (fs.existsSync(info.path)) {
|
|
309
|
+
fs.rmSync(info.path, { recursive: true });
|
|
310
|
+
}
|
|
311
|
+
// Update index
|
|
312
|
+
delete index[name];
|
|
313
|
+
saveSkillsIndex(index);
|
|
314
|
+
return true;
|
|
315
|
+
}
|
|
316
|
+
// ============================================================================
|
|
317
|
+
// Skill Context
|
|
318
|
+
// ============================================================================
|
|
319
|
+
/**
|
|
320
|
+
* Get skill context for the LLM system prompt
|
|
321
|
+
*/
|
|
322
|
+
export function getSkillsContext() {
|
|
323
|
+
const skills = getSkills();
|
|
324
|
+
if (skills.length === 0)
|
|
325
|
+
return '';
|
|
326
|
+
let context = '\n\n## Available Skills\n\n';
|
|
327
|
+
context += 'You have access to the following skills:\n\n';
|
|
328
|
+
for (const skill of skills) {
|
|
329
|
+
context += `### ${skill.metadata.name}\n`;
|
|
330
|
+
context += `${skill.metadata.description}\n\n`;
|
|
331
|
+
}
|
|
332
|
+
context += '\nTo use a skill, follow its instructions when relevant to the user\'s request.\n';
|
|
333
|
+
return context;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Get full skill instructions when activated
|
|
337
|
+
*/
|
|
338
|
+
export function getSkillInstructions(name) {
|
|
339
|
+
const skill = getSkill(name);
|
|
340
|
+
if (!skill || !skill.instructions)
|
|
341
|
+
return null;
|
|
342
|
+
return skill.instructions;
|
|
343
|
+
}
|
|
344
|
+
// ============================================================================
|
|
345
|
+
// Utilities
|
|
346
|
+
// ============================================================================
|
|
347
|
+
function copyDir(src, dest) {
|
|
348
|
+
if (!fs.existsSync(dest)) {
|
|
349
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
350
|
+
}
|
|
351
|
+
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
352
|
+
for (const entry of entries) {
|
|
353
|
+
const srcPath = path.join(src, entry.name);
|
|
354
|
+
const destPath = path.join(dest, entry.name);
|
|
355
|
+
if (entry.isDirectory()) {
|
|
356
|
+
copyDir(srcPath, destPath);
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
fs.copyFileSync(srcPath, destPath);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
async function fetchUrl(url) {
|
|
364
|
+
return new Promise((resolve, reject) => {
|
|
365
|
+
https.get(url, {
|
|
366
|
+
headers: { 'User-Agent': 'Calliope-CLI/1.0' },
|
|
367
|
+
timeout: 10000,
|
|
368
|
+
}, (res) => {
|
|
369
|
+
if (res.statusCode === 404) {
|
|
370
|
+
reject(new Error('404 Not Found'));
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
if (res.statusCode !== 200) {
|
|
374
|
+
reject(new Error(`HTTP ${res.statusCode}`));
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
let data = '';
|
|
378
|
+
res.on('data', chunk => data += chunk);
|
|
379
|
+
res.on('end', () => resolve(data));
|
|
380
|
+
}).on('error', reject);
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calliope CLI - Storage System
|
|
3
|
+
*
|
|
4
|
+
* Manages ~/.calliope-cli/ directory structure for sessions, todos, and history.
|
|
5
|
+
*/
|
|
6
|
+
export interface Session {
|
|
7
|
+
id: string;
|
|
8
|
+
projectPath: string;
|
|
9
|
+
projectName: string;
|
|
10
|
+
createdAt: string;
|
|
11
|
+
lastAccessedAt: string;
|
|
12
|
+
messageCount: number;
|
|
13
|
+
provider: string;
|
|
14
|
+
model: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ChatMessage {
|
|
17
|
+
id: string;
|
|
18
|
+
timestamp: string;
|
|
19
|
+
role: 'user' | 'assistant' | 'system' | 'tool';
|
|
20
|
+
content: string;
|
|
21
|
+
toolCallId?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface Todo {
|
|
24
|
+
id: string;
|
|
25
|
+
content: string;
|
|
26
|
+
status: 'pending' | 'in_progress' | 'completed';
|
|
27
|
+
priority: 'low' | 'normal' | 'high';
|
|
28
|
+
tags: string[];
|
|
29
|
+
createdAt: string;
|
|
30
|
+
completedAt?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface Plan {
|
|
33
|
+
id: string;
|
|
34
|
+
title: string;
|
|
35
|
+
phases: PlanPhase[];
|
|
36
|
+
createdAt: string;
|
|
37
|
+
status: 'draft' | 'approved' | 'in_progress' | 'completed' | 'cancelled';
|
|
38
|
+
}
|
|
39
|
+
export interface PlanPhase {
|
|
40
|
+
name: string;
|
|
41
|
+
steps: string[];
|
|
42
|
+
risk: 'low' | 'medium' | 'high';
|
|
43
|
+
status: 'pending' | 'in_progress' | 'completed' | 'skipped';
|
|
44
|
+
}
|
|
45
|
+
export declare const paths: {
|
|
46
|
+
root: string;
|
|
47
|
+
config: string;
|
|
48
|
+
sessions: string;
|
|
49
|
+
currentSession: string;
|
|
50
|
+
todos: string;
|
|
51
|
+
globalTodos: string;
|
|
52
|
+
projectTodos: string;
|
|
53
|
+
templates: string;
|
|
54
|
+
planTemplates: string;
|
|
55
|
+
plugins: string;
|
|
56
|
+
history: string;
|
|
57
|
+
commandHistory: string;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Initialize the storage directory structure
|
|
61
|
+
*/
|
|
62
|
+
export declare function initStorage(): void;
|
|
63
|
+
/**
|
|
64
|
+
* Create or resume a session for the current project
|
|
65
|
+
*/
|
|
66
|
+
export declare function getOrCreateSession(projectPath: string): Session;
|
|
67
|
+
/**
|
|
68
|
+
* Get current session info
|
|
69
|
+
*/
|
|
70
|
+
export declare function getCurrentSession(): Session | null;
|
|
71
|
+
/**
|
|
72
|
+
* List recent sessions
|
|
73
|
+
*/
|
|
74
|
+
export declare function listSessions(limit?: number): Session[];
|
|
75
|
+
/**
|
|
76
|
+
* Add a message to the current session's chat history
|
|
77
|
+
*/
|
|
78
|
+
export declare function addChatMessage(message: Omit<ChatMessage, 'id' | 'timestamp'>): void;
|
|
79
|
+
/**
|
|
80
|
+
* Get chat history for current session
|
|
81
|
+
*/
|
|
82
|
+
export declare function getChatHistory(limit?: number): ChatMessage[];
|
|
83
|
+
/**
|
|
84
|
+
* Search chat history
|
|
85
|
+
*/
|
|
86
|
+
export declare function searchChatHistory(query: string): ChatMessage[];
|
|
87
|
+
/**
|
|
88
|
+
* Get todos for current session
|
|
89
|
+
*/
|
|
90
|
+
export declare function getSessionTodos(): Todo[];
|
|
91
|
+
/**
|
|
92
|
+
* Get global todos
|
|
93
|
+
*/
|
|
94
|
+
export declare function getGlobalTodos(): Todo[];
|
|
95
|
+
/**
|
|
96
|
+
* Add a todo
|
|
97
|
+
*/
|
|
98
|
+
export declare function addTodo(content: string, options?: {
|
|
99
|
+
priority?: 'low' | 'normal' | 'high';
|
|
100
|
+
tags?: string[];
|
|
101
|
+
global?: boolean;
|
|
102
|
+
}): Todo;
|
|
103
|
+
/**
|
|
104
|
+
* Update a todo's status
|
|
105
|
+
*/
|
|
106
|
+
export declare function updateTodo(id: string, updates: Partial<Pick<Todo, 'status' | 'content' | 'priority' | 'tags'>>, global?: boolean): Todo | null;
|
|
107
|
+
/**
|
|
108
|
+
* Delete a todo
|
|
109
|
+
*/
|
|
110
|
+
export declare function deleteTodo(id: string, global?: boolean): boolean;
|
|
111
|
+
/**
|
|
112
|
+
* Get plans for current session
|
|
113
|
+
*/
|
|
114
|
+
export declare function getPlans(): Plan[];
|
|
115
|
+
/**
|
|
116
|
+
* Save a plan
|
|
117
|
+
*/
|
|
118
|
+
export declare function savePlan(plan: Plan): void;
|
|
119
|
+
/**
|
|
120
|
+
* Get active plan
|
|
121
|
+
*/
|
|
122
|
+
export declare function getActivePlan(): Plan | null;
|
|
123
|
+
/**
|
|
124
|
+
* Set active plan
|
|
125
|
+
*/
|
|
126
|
+
export declare function setActivePlan(plan: Plan | null): void;
|
|
127
|
+
/**
|
|
128
|
+
* Add a command to history
|
|
129
|
+
*/
|
|
130
|
+
export declare function addCommandToHistory(command: string): void;
|
|
131
|
+
/**
|
|
132
|
+
* Get command history
|
|
133
|
+
*/
|
|
134
|
+
export declare function getCommandHistory(limit?: number): string[];
|
|
135
|
+
/**
|
|
136
|
+
* Search command history
|
|
137
|
+
*/
|
|
138
|
+
export declare function searchCommandHistory(query: string): string[];
|
|
139
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|