@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.
Files changed (112) hide show
  1. package/README.md +258 -105
  2. package/dist/branching.d.ts +56 -0
  3. package/dist/branching.d.ts.map +1 -0
  4. package/dist/branching.js +211 -0
  5. package/dist/branching.js.map +1 -0
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +235 -2
  8. package/dist/cli.js.map +1 -1
  9. package/dist/completion.d.ts +75 -0
  10. package/dist/completion.d.ts.map +1 -0
  11. package/dist/completion.js +234 -0
  12. package/dist/completion.js.map +1 -0
  13. package/dist/config.d.ts +36 -0
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +90 -0
  16. package/dist/config.js.map +1 -1
  17. package/dist/diff.d.ts +73 -0
  18. package/dist/diff.d.ts.map +1 -0
  19. package/dist/diff.js +317 -0
  20. package/dist/diff.js.map +1 -0
  21. package/dist/errors.d.ts +41 -0
  22. package/dist/errors.d.ts.map +1 -0
  23. package/dist/errors.js +199 -0
  24. package/dist/errors.js.map +1 -0
  25. package/dist/file-watcher.d.ts +91 -0
  26. package/dist/file-watcher.d.ts.map +1 -0
  27. package/dist/file-watcher.js +269 -0
  28. package/dist/file-watcher.js.map +1 -0
  29. package/dist/files.d.ts +49 -0
  30. package/dist/files.d.ts.map +1 -0
  31. package/dist/files.js +191 -0
  32. package/dist/files.js.map +1 -0
  33. package/dist/fuzzy-search.d.ts +75 -0
  34. package/dist/fuzzy-search.d.ts.map +1 -0
  35. package/dist/fuzzy-search.js +240 -0
  36. package/dist/fuzzy-search.js.map +1 -0
  37. package/dist/hooks.d.ts +79 -0
  38. package/dist/hooks.d.ts.map +1 -0
  39. package/dist/hooks.js +271 -0
  40. package/dist/hooks.js.map +1 -0
  41. package/dist/keyboard.d.ts +57 -0
  42. package/dist/keyboard.d.ts.map +1 -0
  43. package/dist/keyboard.js +265 -0
  44. package/dist/keyboard.js.map +1 -0
  45. package/dist/markdown.d.ts +14 -0
  46. package/dist/markdown.d.ts.map +1 -0
  47. package/dist/markdown.js +248 -0
  48. package/dist/markdown.js.map +1 -0
  49. package/dist/mcp.d.ts +90 -0
  50. package/dist/mcp.d.ts.map +1 -0
  51. package/dist/mcp.js +290 -0
  52. package/dist/mcp.js.map +1 -0
  53. package/dist/memory.d.ts +104 -0
  54. package/dist/memory.d.ts.map +1 -0
  55. package/dist/memory.js +394 -0
  56. package/dist/memory.js.map +1 -0
  57. package/dist/model-router.d.ts +67 -0
  58. package/dist/model-router.d.ts.map +1 -0
  59. package/dist/model-router.js +289 -0
  60. package/dist/model-router.js.map +1 -0
  61. package/dist/parallel-tools.d.ts +51 -0
  62. package/dist/parallel-tools.d.ts.map +1 -0
  63. package/dist/parallel-tools.js +278 -0
  64. package/dist/parallel-tools.js.map +1 -0
  65. package/dist/project-config.d.ts +84 -0
  66. package/dist/project-config.d.ts.map +1 -0
  67. package/dist/project-config.js +250 -0
  68. package/dist/project-config.js.map +1 -0
  69. package/dist/providers.d.ts +10 -2
  70. package/dist/providers.d.ts.map +1 -1
  71. package/dist/providers.js +240 -38
  72. package/dist/providers.js.map +1 -1
  73. package/dist/risk.d.ts +31 -0
  74. package/dist/risk.d.ts.map +1 -0
  75. package/dist/risk.js +367 -0
  76. package/dist/risk.js.map +1 -0
  77. package/dist/sandbox.d.ts +49 -0
  78. package/dist/sandbox.d.ts.map +1 -0
  79. package/dist/sandbox.js +347 -0
  80. package/dist/sandbox.js.map +1 -0
  81. package/dist/skills.d.ts +71 -0
  82. package/dist/skills.d.ts.map +1 -0
  83. package/dist/skills.js +383 -0
  84. package/dist/skills.js.map +1 -0
  85. package/dist/storage.d.ts +139 -0
  86. package/dist/storage.d.ts.map +1 -0
  87. package/dist/storage.js +508 -0
  88. package/dist/storage.js.map +1 -0
  89. package/dist/streaming.d.ts +94 -0
  90. package/dist/streaming.d.ts.map +1 -0
  91. package/dist/streaming.js +305 -0
  92. package/dist/streaming.js.map +1 -0
  93. package/dist/summarization.d.ts +76 -0
  94. package/dist/summarization.d.ts.map +1 -0
  95. package/dist/summarization.js +242 -0
  96. package/dist/summarization.js.map +1 -0
  97. package/dist/themes.d.ts +110 -0
  98. package/dist/themes.d.ts.map +1 -0
  99. package/dist/themes.js +329 -0
  100. package/dist/themes.js.map +1 -0
  101. package/dist/tools.d.ts.map +1 -1
  102. package/dist/tools.js +335 -1
  103. package/dist/tools.js.map +1 -1
  104. package/dist/types.d.ts +56 -1
  105. package/dist/types.d.ts.map +1 -1
  106. package/dist/types.js +105 -0
  107. package/dist/types.js.map +1 -1
  108. package/dist/ui-cli.d.ts +9 -2
  109. package/dist/ui-cli.d.ts.map +1 -1
  110. package/dist/ui-cli.js +1315 -220
  111. package/dist/ui-cli.js.map +1 -1
  112. 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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"}