@stackmemoryai/stackmemory 0.1.0 → 0.2.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/dist/scripts/initialize.js +15 -15
- package/dist/scripts/initialize.js.map +1 -1
- package/dist/scripts/status.js +21 -11
- package/dist/scripts/status.js.map +1 -1
- package/dist/src/beads/beads-task-store.d.ts +117 -0
- package/dist/src/beads/beads-task-store.d.ts.map +1 -0
- package/dist/src/beads/beads-task-store.js +318 -0
- package/dist/src/beads/beads-task-store.js.map +1 -0
- package/dist/src/beads/task-aware-context.d.ts +103 -0
- package/dist/src/beads/task-aware-context.d.ts.map +1 -0
- package/dist/src/beads/task-aware-context.js +395 -0
- package/dist/src/beads/task-aware-context.js.map +1 -0
- package/dist/src/beads-task-store.d.ts +117 -0
- package/dist/src/beads-task-store.d.ts.map +1 -0
- package/dist/src/beads-task-store.js +318 -0
- package/dist/src/beads-task-store.js.map +1 -0
- package/dist/src/cli/cli.d.ts +7 -0
- package/dist/src/cli/cli.d.ts.map +1 -0
- package/dist/src/cli/cli.js +471 -0
- package/dist/src/cli/cli.js.map +1 -0
- package/dist/src/core/error-handler.d.ts +46 -0
- package/dist/src/core/error-handler.d.ts.map +1 -0
- package/dist/src/core/error-handler.js +212 -0
- package/dist/src/core/error-handler.js.map +1 -0
- package/dist/src/core/frame-manager.d.ts +106 -0
- package/dist/src/core/frame-manager.d.ts.map +1 -0
- package/dist/src/core/frame-manager.js +387 -0
- package/dist/src/core/frame-manager.js.map +1 -0
- package/dist/src/core/logger.d.ts +24 -0
- package/dist/src/core/logger.d.ts.map +1 -0
- package/dist/src/core/logger.js +121 -0
- package/dist/src/core/logger.js.map +1 -0
- package/dist/src/core/logger.test.d.ts +2 -0
- package/dist/src/core/logger.test.d.ts.map +1 -0
- package/dist/src/core/logger.test.js +31 -0
- package/dist/src/core/logger.test.js.map +1 -0
- package/dist/src/index.d.ts +4 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/integrations/linear-auth.d.ts +99 -0
- package/dist/src/integrations/linear-auth.d.ts.map +1 -0
- package/dist/src/integrations/linear-auth.js +319 -0
- package/dist/src/integrations/linear-auth.js.map +1 -0
- package/dist/src/integrations/linear-auto-sync.d.ts +77 -0
- package/dist/src/integrations/linear-auto-sync.d.ts.map +1 -0
- package/dist/src/integrations/linear-auto-sync.js +268 -0
- package/dist/src/integrations/linear-auto-sync.js.map +1 -0
- package/dist/src/integrations/linear-client.d.ts +86 -0
- package/dist/src/integrations/linear-client.d.ts.map +1 -0
- package/dist/src/integrations/linear-client.js +275 -0
- package/dist/src/integrations/linear-client.js.map +1 -0
- package/dist/src/integrations/linear-config.d.ts +51 -0
- package/dist/src/integrations/linear-config.d.ts.map +1 -0
- package/dist/src/integrations/linear-config.js +103 -0
- package/dist/src/integrations/linear-config.js.map +1 -0
- package/dist/src/integrations/linear-sync.d.ts +95 -0
- package/dist/src/integrations/linear-sync.d.ts.map +1 -0
- package/dist/src/integrations/linear-sync.js +340 -0
- package/dist/src/integrations/linear-sync.js.map +1 -0
- package/dist/src/mcp/mcp-server.d.ts +38 -0
- package/dist/src/mcp/mcp-server.d.ts.map +1 -0
- package/dist/src/mcp/mcp-server.js +812 -0
- package/dist/src/mcp/mcp-server.js.map +1 -0
- package/dist/src/pebbles/pebbles-task-store.d.ts +117 -0
- package/dist/src/pebbles/pebbles-task-store.d.ts.map +1 -0
- package/dist/src/pebbles/pebbles-task-store.js +335 -0
- package/dist/src/pebbles/pebbles-task-store.js.map +1 -0
- package/dist/src/pebbles/task-aware-context.d.ts +103 -0
- package/dist/src/pebbles/task-aware-context.d.ts.map +1 -0
- package/dist/src/pebbles/task-aware-context.js +412 -0
- package/dist/src/pebbles/task-aware-context.js.map +1 -0
- package/dist/src/task-aware-context.d.ts +103 -0
- package/dist/src/task-aware-context.d.ts.map +1 -0
- package/dist/src/task-aware-context.js +395 -0
- package/dist/src/task-aware-context.js.map +1 -0
- package/package.json +40 -9
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Beads-Inspired Task Storage
|
|
3
|
+
* Git-native JSONL storage with SQLite cache for tasks
|
|
4
|
+
*/
|
|
5
|
+
import { createHash } from 'crypto';
|
|
6
|
+
import { appendFile, existsSync, mkdirSync, readFileSync } from 'fs';
|
|
7
|
+
import { join } from 'path';
|
|
8
|
+
import { logger } from './logger.js';
|
|
9
|
+
export class BeadsTaskStore {
|
|
10
|
+
db;
|
|
11
|
+
projectRoot;
|
|
12
|
+
tasksFile;
|
|
13
|
+
cacheFile;
|
|
14
|
+
constructor(projectRoot, db) {
|
|
15
|
+
this.projectRoot = projectRoot;
|
|
16
|
+
this.db = db;
|
|
17
|
+
// Ensure .stackmemory directory exists
|
|
18
|
+
const stackmemoryDir = join(projectRoot, '.stackmemory');
|
|
19
|
+
if (!existsSync(stackmemoryDir)) {
|
|
20
|
+
mkdirSync(stackmemoryDir, { recursive: true });
|
|
21
|
+
}
|
|
22
|
+
this.tasksFile = join(stackmemoryDir, 'tasks.jsonl');
|
|
23
|
+
this.cacheFile = join(stackmemoryDir, 'cache.db');
|
|
24
|
+
this.initializeCache();
|
|
25
|
+
this.loadFromJSONL();
|
|
26
|
+
}
|
|
27
|
+
initializeCache() {
|
|
28
|
+
this.db.exec(`
|
|
29
|
+
CREATE TABLE IF NOT EXISTS task_cache (
|
|
30
|
+
id TEXT PRIMARY KEY,
|
|
31
|
+
type TEXT NOT NULL,
|
|
32
|
+
timestamp INTEGER NOT NULL,
|
|
33
|
+
parent_id TEXT,
|
|
34
|
+
frame_id TEXT NOT NULL,
|
|
35
|
+
title TEXT NOT NULL,
|
|
36
|
+
description TEXT,
|
|
37
|
+
status TEXT NOT NULL,
|
|
38
|
+
priority TEXT NOT NULL,
|
|
39
|
+
assignee TEXT,
|
|
40
|
+
created_at INTEGER NOT NULL,
|
|
41
|
+
started_at INTEGER,
|
|
42
|
+
completed_at INTEGER,
|
|
43
|
+
estimated_effort INTEGER,
|
|
44
|
+
actual_effort INTEGER,
|
|
45
|
+
depends_on TEXT DEFAULT '[]',
|
|
46
|
+
blocks TEXT DEFAULT '[]',
|
|
47
|
+
tags TEXT DEFAULT '[]',
|
|
48
|
+
external_refs TEXT DEFAULT '{}',
|
|
49
|
+
context_score REAL DEFAULT 0.5,
|
|
50
|
+
last_accessed INTEGER
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
CREATE INDEX IF NOT EXISTS idx_task_status ON task_cache(status);
|
|
54
|
+
CREATE INDEX IF NOT EXISTS idx_task_priority ON task_cache(priority);
|
|
55
|
+
CREATE INDEX IF NOT EXISTS idx_task_frame ON task_cache(frame_id);
|
|
56
|
+
CREATE INDEX IF NOT EXISTS idx_task_timestamp ON task_cache(timestamp);
|
|
57
|
+
CREATE INDEX IF NOT EXISTS idx_task_parent ON task_cache(parent_id);
|
|
58
|
+
`);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Load existing tasks from JSONL into SQLite cache
|
|
62
|
+
*/
|
|
63
|
+
loadFromJSONL() {
|
|
64
|
+
if (!existsSync(this.tasksFile))
|
|
65
|
+
return;
|
|
66
|
+
const content = readFileSync(this.tasksFile, 'utf-8');
|
|
67
|
+
const lines = content.split('\n').filter(line => line.trim());
|
|
68
|
+
let loaded = 0;
|
|
69
|
+
for (const line of lines) {
|
|
70
|
+
try {
|
|
71
|
+
const task = JSON.parse(line);
|
|
72
|
+
this.upsertToCache(task);
|
|
73
|
+
loaded++;
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
logger.warn('Failed to parse task line', { line, error });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
logger.info('Loaded tasks from JSONL', { loaded, file: this.tasksFile });
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Create a new task with content-hash ID
|
|
83
|
+
*/
|
|
84
|
+
createTask(options) {
|
|
85
|
+
const now = Math.floor(Date.now() / 1000);
|
|
86
|
+
// Create content for hash (ensures deterministic ID)
|
|
87
|
+
const content = `${options.title}:${options.frameId}:${now}:${Math.random()}`;
|
|
88
|
+
const id = this.generateTaskId(content);
|
|
89
|
+
const task = {
|
|
90
|
+
id,
|
|
91
|
+
type: 'task_create',
|
|
92
|
+
timestamp: now,
|
|
93
|
+
parent_id: options.parentId,
|
|
94
|
+
frame_id: options.frameId,
|
|
95
|
+
title: options.title,
|
|
96
|
+
description: options.description,
|
|
97
|
+
status: 'pending',
|
|
98
|
+
priority: options.priority || 'medium',
|
|
99
|
+
assignee: options.assignee,
|
|
100
|
+
created_at: now,
|
|
101
|
+
estimated_effort: options.estimatedEffort,
|
|
102
|
+
depends_on: options.dependsOn || [],
|
|
103
|
+
blocks: [],
|
|
104
|
+
tags: options.tags || [],
|
|
105
|
+
context_score: 0.5
|
|
106
|
+
};
|
|
107
|
+
this.appendTask(task);
|
|
108
|
+
return id;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Update task status with new event
|
|
112
|
+
*/
|
|
113
|
+
updateTaskStatus(taskId, newStatus, reason) {
|
|
114
|
+
const existing = this.getTask(taskId);
|
|
115
|
+
if (!existing)
|
|
116
|
+
throw new Error(`Task not found: ${taskId}`);
|
|
117
|
+
const now = Math.floor(Date.now() / 1000);
|
|
118
|
+
const updates = {
|
|
119
|
+
status: newStatus,
|
|
120
|
+
timestamp: now
|
|
121
|
+
};
|
|
122
|
+
// Automatic time tracking
|
|
123
|
+
if (newStatus === 'in_progress' && existing.status === 'pending') {
|
|
124
|
+
updates.started_at = now;
|
|
125
|
+
updates.type = 'task_update';
|
|
126
|
+
}
|
|
127
|
+
else if (newStatus === 'completed' && existing.status === 'in_progress') {
|
|
128
|
+
updates.completed_at = now;
|
|
129
|
+
updates.type = 'task_complete';
|
|
130
|
+
if (existing.started_at) {
|
|
131
|
+
updates.actual_effort = Math.floor((now - existing.started_at) / 60); // Minutes
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else if (newStatus === 'blocked') {
|
|
135
|
+
updates.type = 'task_block';
|
|
136
|
+
}
|
|
137
|
+
const updatedTask = { ...existing, ...updates };
|
|
138
|
+
this.appendTask(updatedTask);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Add dependency relationship
|
|
142
|
+
*/
|
|
143
|
+
addDependency(taskId, dependsOnId) {
|
|
144
|
+
const task = this.getTask(taskId);
|
|
145
|
+
const dependsOnTask = this.getTask(dependsOnId);
|
|
146
|
+
if (!task)
|
|
147
|
+
throw new Error(`Task not found: ${taskId}`);
|
|
148
|
+
if (!dependsOnTask)
|
|
149
|
+
throw new Error(`Dependency task not found: ${dependsOnId}`);
|
|
150
|
+
// Update task dependencies
|
|
151
|
+
const updatedTask = {
|
|
152
|
+
...task,
|
|
153
|
+
depends_on: [...new Set([...task.depends_on, dependsOnId])],
|
|
154
|
+
timestamp: Math.floor(Date.now() / 1000),
|
|
155
|
+
type: 'task_update'
|
|
156
|
+
};
|
|
157
|
+
// Update blocking task
|
|
158
|
+
const updatedBlockingTask = {
|
|
159
|
+
...dependsOnTask,
|
|
160
|
+
blocks: [...new Set([...dependsOnTask.blocks, taskId])],
|
|
161
|
+
timestamp: Math.floor(Date.now() / 1000),
|
|
162
|
+
type: 'task_update'
|
|
163
|
+
};
|
|
164
|
+
this.appendTask(updatedTask);
|
|
165
|
+
this.appendTask(updatedBlockingTask);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get current active tasks
|
|
169
|
+
*/
|
|
170
|
+
getActiveTasks(frameId) {
|
|
171
|
+
let query = `
|
|
172
|
+
SELECT * FROM task_cache
|
|
173
|
+
WHERE status IN ('pending', 'in_progress')
|
|
174
|
+
`;
|
|
175
|
+
const params = [];
|
|
176
|
+
if (frameId) {
|
|
177
|
+
query += ` AND frame_id = ?`;
|
|
178
|
+
params.push(frameId);
|
|
179
|
+
}
|
|
180
|
+
query += ` ORDER BY priority DESC, created_at ASC`;
|
|
181
|
+
const rows = this.db.prepare(query).all(...params);
|
|
182
|
+
return this.hydrateTasks(rows);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Get task by ID (latest version)
|
|
186
|
+
*/
|
|
187
|
+
getTask(taskId) {
|
|
188
|
+
const row = this.db.prepare(`
|
|
189
|
+
SELECT * FROM task_cache WHERE id = ?
|
|
190
|
+
`).get(taskId);
|
|
191
|
+
return row ? this.hydrateTask(row) : undefined;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get tasks that are blocking other tasks
|
|
195
|
+
*/
|
|
196
|
+
getBlockingTasks() {
|
|
197
|
+
const rows = this.db.prepare(`
|
|
198
|
+
SELECT * FROM task_cache
|
|
199
|
+
WHERE JSON_ARRAY_LENGTH(blocks) > 0
|
|
200
|
+
AND status NOT IN ('completed', 'cancelled')
|
|
201
|
+
ORDER BY priority DESC
|
|
202
|
+
`).all();
|
|
203
|
+
return this.hydrateTasks(rows);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Get metrics for current project
|
|
207
|
+
*/
|
|
208
|
+
getMetrics() {
|
|
209
|
+
const statusCounts = this.db.prepare(`
|
|
210
|
+
SELECT status, COUNT(*) as count
|
|
211
|
+
FROM task_cache
|
|
212
|
+
GROUP BY status
|
|
213
|
+
`).all();
|
|
214
|
+
const priorityCounts = this.db.prepare(`
|
|
215
|
+
SELECT priority, COUNT(*) as count
|
|
216
|
+
FROM task_cache
|
|
217
|
+
GROUP BY priority
|
|
218
|
+
`).all();
|
|
219
|
+
const totalTasks = statusCounts.reduce((sum, s) => sum + s.count, 0);
|
|
220
|
+
const completedTasks = statusCounts.find(s => s.status === 'completed')?.count || 0;
|
|
221
|
+
const blockedTasks = statusCounts.find(s => s.status === 'blocked')?.count || 0;
|
|
222
|
+
// Calculate effort accuracy
|
|
223
|
+
const effortRows = this.db.prepare(`
|
|
224
|
+
SELECT estimated_effort, actual_effort
|
|
225
|
+
FROM task_cache
|
|
226
|
+
WHERE estimated_effort IS NOT NULL
|
|
227
|
+
AND actual_effort IS NOT NULL
|
|
228
|
+
`).all();
|
|
229
|
+
let avgEffortAccuracy = 0;
|
|
230
|
+
if (effortRows.length > 0) {
|
|
231
|
+
const accuracies = effortRows.map(r => 1 - Math.abs(r.estimated_effort - r.actual_effort) / Math.max(r.estimated_effort, 1));
|
|
232
|
+
avgEffortAccuracy = accuracies.reduce((sum, acc) => sum + acc, 0) / accuracies.length;
|
|
233
|
+
}
|
|
234
|
+
return {
|
|
235
|
+
total_tasks: totalTasks,
|
|
236
|
+
by_status: Object.fromEntries(statusCounts.map(s => [s.status, s.count])),
|
|
237
|
+
by_priority: Object.fromEntries(priorityCounts.map(p => [p.priority, p.count])),
|
|
238
|
+
completion_rate: totalTasks > 0 ? completedTasks / totalTasks : 0,
|
|
239
|
+
avg_effort_accuracy: avgEffortAccuracy,
|
|
240
|
+
blocked_tasks: blockedTasks,
|
|
241
|
+
overdue_tasks: 0 // TODO: implement due dates
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Export tasks for Linear integration (Phase 2)
|
|
246
|
+
*/
|
|
247
|
+
exportForLinear() {
|
|
248
|
+
const tasks = this.db.prepare(`
|
|
249
|
+
SELECT * FROM task_cache
|
|
250
|
+
WHERE external_refs IS NULL OR JSON_EXTRACT(external_refs, '$.linear') IS NULL
|
|
251
|
+
ORDER BY created_at ASC
|
|
252
|
+
`).all();
|
|
253
|
+
return tasks.map(task => ({
|
|
254
|
+
title: task.title,
|
|
255
|
+
description: task.description,
|
|
256
|
+
priority: this.mapPriorityToLinear(task.priority),
|
|
257
|
+
status: this.mapStatusToLinear(task.status),
|
|
258
|
+
estimate: task.estimated_effort,
|
|
259
|
+
dependencies: JSON.parse(task.depends_on || '[]')
|
|
260
|
+
}));
|
|
261
|
+
}
|
|
262
|
+
// Private methods
|
|
263
|
+
appendTask(task) {
|
|
264
|
+
// Append to JSONL file (git-tracked source of truth)
|
|
265
|
+
const jsonLine = JSON.stringify(task) + '\n';
|
|
266
|
+
appendFile(this.tasksFile, jsonLine, (err) => {
|
|
267
|
+
if (err)
|
|
268
|
+
logger.error('Failed to append task to JSONL', { error: err, taskId: task.id });
|
|
269
|
+
});
|
|
270
|
+
// Update SQLite cache (for fast queries)
|
|
271
|
+
this.upsertToCache(task);
|
|
272
|
+
logger.info('Appended task', {
|
|
273
|
+
id: task.id,
|
|
274
|
+
type: task.type,
|
|
275
|
+
title: task.title,
|
|
276
|
+
status: task.status
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
upsertToCache(task) {
|
|
280
|
+
this.db.prepare(`
|
|
281
|
+
INSERT OR REPLACE INTO task_cache (
|
|
282
|
+
id, type, timestamp, parent_id, frame_id, title, description,
|
|
283
|
+
status, priority, assignee, created_at, started_at, completed_at,
|
|
284
|
+
estimated_effort, actual_effort, depends_on, blocks, tags,
|
|
285
|
+
external_refs, context_score, last_accessed
|
|
286
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
287
|
+
`).run(task.id, task.type, task.timestamp, task.parent_id, task.frame_id, task.title, task.description, task.status, task.priority, task.assignee, task.created_at, task.started_at, task.completed_at, task.estimated_effort, task.actual_effort, JSON.stringify(task.depends_on), JSON.stringify(task.blocks), JSON.stringify(task.tags), JSON.stringify(task.external_refs || {}), task.context_score, task.last_accessed);
|
|
288
|
+
}
|
|
289
|
+
generateTaskId(content) {
|
|
290
|
+
const hash = createHash('sha256').update(content).digest('hex');
|
|
291
|
+
return `tsk-${hash.substring(0, 8)}`;
|
|
292
|
+
}
|
|
293
|
+
hydrateTask = (row) => ({
|
|
294
|
+
...row,
|
|
295
|
+
depends_on: JSON.parse(row.depends_on || '[]'),
|
|
296
|
+
blocks: JSON.parse(row.blocks || '[]'),
|
|
297
|
+
tags: JSON.parse(row.tags || '[]'),
|
|
298
|
+
external_refs: JSON.parse(row.external_refs || '{}')
|
|
299
|
+
});
|
|
300
|
+
hydrateTasks(rows) {
|
|
301
|
+
return rows.map(this.hydrateTask);
|
|
302
|
+
}
|
|
303
|
+
mapPriorityToLinear(priority) {
|
|
304
|
+
const map = { low: 1, medium: 2, high: 3, urgent: 4 };
|
|
305
|
+
return map[priority] || 2;
|
|
306
|
+
}
|
|
307
|
+
mapStatusToLinear(status) {
|
|
308
|
+
const map = {
|
|
309
|
+
pending: 'Backlog',
|
|
310
|
+
in_progress: 'In Progress',
|
|
311
|
+
completed: 'Done',
|
|
312
|
+
blocked: 'Blocked',
|
|
313
|
+
cancelled: 'Cancelled'
|
|
314
|
+
};
|
|
315
|
+
return map[status] || 'Backlog';
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=beads-task-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beads-task-store.js","sourceRoot":"","sources":["../../src/beads-task-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAoDrC,MAAM,OAAO,cAAc;IACjB,EAAE,CAAoB;IACtB,WAAW,CAAS;IACpB,SAAS,CAAS;IAClB,SAAS,CAAS;IAE1B,YAAY,WAAmB,EAAE,EAAqB;QACpD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QAEb,uCAAuC;QACvC,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAChC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAElD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8BZ,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO;QAExC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9D,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAc,CAAC;gBAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM,EAAE,CAAC;YACX,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,OAUjB;QACC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAE1C,qDAAqD;QACrD,MAAM,OAAO,GAAG,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9E,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAExC,MAAM,IAAI,GAAc;YACtB,EAAE;YACF,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,OAAO,CAAC,QAAQ;YAC3B,QAAQ,EAAE,OAAO,CAAC,OAAO;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ;YACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,GAAG;YACf,gBAAgB,EAAE,OAAO,CAAC,eAAe;YACzC,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;YACnC,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;YACxB,aAAa,EAAE,GAAG;SACnB,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,MAAc,EAAE,SAAqB,EAAE,MAAe;QAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;QAE5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAuB;YAClC,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,GAAG;SACf,CAAC;QAEF,0BAA0B;QAC1B,IAAI,SAAS,KAAK,aAAa,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjE,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC;YACzB,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC;QAC/B,CAAC;aAAM,IAAI,SAAS,KAAK,WAAW,IAAI,QAAQ,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YAC1E,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC;YAC3B,OAAO,CAAC,IAAI,GAAG,eAAe,CAAC;YAC/B,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACxB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU;YAClF,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;QAC9B,CAAC;QAED,MAAM,WAAW,GAAc,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,MAAc,EAAE,WAAmB;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEhD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,WAAW,EAAE,CAAC,CAAC;QAEjF,2BAA2B;QAC3B,MAAM,WAAW,GAAc;YAC7B,GAAG,IAAI;YACP,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;YAC3D,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YACxC,IAAI,EAAE,aAAa;SACpB,CAAC;QAEF,uBAAuB;QACvB,MAAM,mBAAmB,GAAc;YACrC,GAAG,aAAa;YAChB,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YACvD,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YACxC,IAAI,EAAE,aAAa;SACpB,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,OAAgB;QACpC,IAAI,KAAK,GAAG;;;KAGX,CAAC;QACF,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,IAAI,mBAAmB,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QAED,KAAK,IAAI,yCAAyC,CAAC;QAEnD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAU,CAAC;QAC5D,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,MAAc;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE3B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAQ,CAAC;QAEtB,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,CAAC;IAED;;OAEG;IACI,gBAAgB;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC,GAAG,EAAW,CAAC;QAElB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,UAAU;QACf,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAIpC,CAAC,CAAC,GAAG,EAA6C,CAAC;QAEpD,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAItC,CAAC,CAAC,GAAG,EAAiD,CAAC;QAExD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QACpF,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAEhF,4BAA4B;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAKlC,CAAC,CAAC,GAAG,EAA2D,CAAC;QAElE,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACpC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CACrF,CAAC;YACF,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;QACxF,CAAC;QAED,OAAO;YACL,WAAW,EAAE,UAAU;YACvB,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAQ;YAChF,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAQ;YACtF,eAAe,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YACjE,mBAAmB,EAAE,iBAAiB;YACtC,aAAa,EAAE,YAAY;YAC3B,aAAa,EAAE,CAAC,CAAC,4BAA4B;SAC9C,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,eAAe;QAQpB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAI7B,CAAC,CAAC,GAAG,EAAW,CAAC;QAElB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC;YACjD,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3C,QAAQ,EAAE,IAAI,CAAC,gBAAgB;YAC/B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;SAClD,CAAC,CAAC,CAAC;IACN,CAAC;IAED,kBAAkB;IACV,UAAU,CAAC,IAAe;QAChC,qDAAqD;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAC7C,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;YAC3C,IAAI,GAAG;gBAAE,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QAEH,yCAAyC;QACzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAEzB,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE;YAC3B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,IAAe;QACnC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;KAOf,CAAC,CAAC,GAAG,CACJ,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EACjE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,EACnD,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,EACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAC5D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,EACnE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CACvC,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,OAAe;QACpC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChE,OAAO,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACvC,CAAC;IAEO,WAAW,GAAG,CAAC,GAAQ,EAAa,EAAE,CAAC,CAAC;QAC9C,GAAG,GAAG;QACN,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC;QAC9C,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC;QACtC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;QAClC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC;KACrD,CAAC,CAAC;IAEK,YAAY,CAAC,IAAW;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAEO,mBAAmB,CAAC,QAAsB;QAChD,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACtD,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEO,iBAAiB,CAAC,MAAkB;QAC1C,MAAM,GAAG,GAAG;YACV,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,aAAa;YAC1B,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,WAAW;SACvB,CAAC;QACF,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/cli/cli.ts"],"names":[],"mappings":";AACA;;;GAGG"}
|