@sascha384/tic 1.34.0 → 2.0.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/.claude-plugin/plugin.json +1 -1
- package/dist/backends/availability.js +4 -2
- package/dist/backends/availability.js.map +1 -1
- package/dist/backends/factory.d.ts +5 -3
- package/dist/backends/factory.js +28 -43
- package/dist/backends/factory.js.map +1 -1
- package/dist/backends/files/hash.d.ts +1 -0
- package/dist/backends/files/hash.js +5 -0
- package/dist/backends/files/hash.js.map +1 -0
- package/dist/backends/files/index.d.ts +48 -0
- package/dist/backends/files/index.js +174 -0
- package/dist/backends/files/index.js.map +1 -0
- package/dist/backends/files/sync.d.ts +13 -0
- package/dist/backends/files/sync.js +69 -0
- package/dist/backends/files/sync.js.map +1 -0
- package/dist/backends/jira/config.d.ts +1 -1
- package/dist/backends/jira/config.js +6 -9
- package/dist/backends/jira/config.js.map +1 -1
- package/dist/backends/types.d.ts +12 -0
- package/dist/backends/types.js +5 -1
- package/dist/backends/types.js.map +1 -1
- package/dist/cli/commands/config.js +27 -14
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/init.js +10 -3
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts +4 -4
- package/dist/cli/commands/mcp.js +16 -25
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/index.js +16 -19
- package/dist/cli/index.js.map +1 -1
- package/dist/commands.d.ts +2 -0
- package/dist/commands.js +33 -0
- package/dist/commands.js.map +1 -1
- package/dist/components/Header.js +9 -2
- package/dist/components/Header.js.map +1 -1
- package/dist/components/HelpScreen.js +3 -0
- package/dist/components/HelpScreen.js.map +1 -1
- package/dist/components/OverlayPanel.d.ts +2 -1
- package/dist/components/OverlayPanel.js +14 -1
- package/dist/components/OverlayPanel.js.map +1 -1
- package/dist/components/Settings.js +6 -11
- package/dist/components/Settings.js.map +1 -1
- package/dist/components/StatusScreen.js +29 -4
- package/dist/components/StatusScreen.js.map +1 -1
- package/dist/components/WorkItemForm.js +6 -9
- package/dist/components/WorkItemForm.js.map +1 -1
- package/dist/components/WorkItemList.js +353 -36
- package/dist/components/WorkItemList.js.map +1 -1
- package/dist/filters.d.ts +28 -0
- package/dist/filters.js +47 -0
- package/dist/filters.js.map +1 -0
- package/dist/implement.js +4 -56
- package/dist/implement.js.map +1 -1
- package/dist/index.js +20 -8
- package/dist/index.js.map +1 -1
- package/dist/storage/config.d.ts +61 -0
- package/dist/storage/config.js +309 -0
- package/dist/storage/config.js.map +1 -0
- package/dist/storage/db.d.ts +11 -0
- package/dist/storage/db.js +34 -0
- package/dist/storage/db.js.map +1 -0
- package/dist/storage/index.d.ts +73 -0
- package/dist/storage/index.js +966 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/mappers.d.ts +35 -0
- package/dist/storage/mappers.js +70 -0
- package/dist/storage/mappers.js.map +1 -0
- package/dist/storage/schema.d.ts +1844 -0
- package/dist/storage/schema.js +197 -0
- package/dist/storage/schema.js.map +1 -0
- package/dist/storage/syncQueue.d.ts +13 -0
- package/dist/storage/syncQueue.js +98 -0
- package/dist/storage/syncQueue.js.map +1 -0
- package/dist/storage/undo.d.ts +22 -0
- package/dist/storage/undo.js +129 -0
- package/dist/storage/undo.js.map +1 -0
- package/dist/stores/backendDataStore.d.ts +4 -1
- package/dist/stores/backendDataStore.js +61 -40
- package/dist/stores/backendDataStore.js.map +1 -1
- package/dist/stores/configStore.d.ts +3 -1
- package/dist/stores/configStore.js +25 -65
- package/dist/stores/configStore.js.map +1 -1
- package/dist/stores/filterStore.d.ts +13 -0
- package/dist/stores/filterStore.js +38 -0
- package/dist/stores/filterStore.js.map +1 -0
- package/dist/stores/listViewStore.d.ts +1 -0
- package/dist/stores/listViewStore.js +1 -0
- package/dist/stores/listViewStore.js.map +1 -1
- package/dist/stores/uiStore.d.ts +8 -0
- package/dist/stores/uiStore.js.map +1 -1
- package/dist/stores/undoStore.d.ts +4 -0
- package/dist/stores/undoStore.js +32 -0
- package/dist/stores/undoStore.js.map +1 -1
- package/dist/sync/SyncManager.d.ts +5 -4
- package/dist/sync/SyncManager.js +129 -36
- package/dist/sync/SyncManager.js.map +1 -1
- package/dist/sync/types.d.ts +25 -1
- package/package.json +5 -1
- package/dist/backends/local/config.d.ts +0 -23
- package/dist/backends/local/config.js +0 -42
- package/dist/backends/local/config.js.map +0 -1
- package/dist/backends/local/index.d.ts +0 -45
- package/dist/backends/local/index.js +0 -291
- package/dist/backends/local/index.js.map +0 -1
- package/dist/sync/queue.d.ts +0 -12
- package/dist/sync/queue.js +0 -56
- package/dist/sync/queue.js.map +0 -1
package/dist/sync/SyncManager.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { writeTemplate, deleteTemplate as removeTemplateFile, } from '../backends/local/templates.js';
|
|
1
|
+
import { isSyncableBackend } from '../backends/types.js';
|
|
3
2
|
export class SyncManager {
|
|
4
|
-
|
|
3
|
+
primary;
|
|
5
4
|
remote;
|
|
6
5
|
queue;
|
|
7
6
|
status;
|
|
8
7
|
listeners = [];
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
syncLog = [];
|
|
9
|
+
constructor(primary, remote, queue) {
|
|
10
|
+
this.primary = primary;
|
|
11
11
|
this.remote = remote;
|
|
12
12
|
this.queue = queue;
|
|
13
13
|
this.status = {
|
|
@@ -15,6 +15,8 @@ export class SyncManager {
|
|
|
15
15
|
pendingCount: 0,
|
|
16
16
|
lastSyncTime: null,
|
|
17
17
|
errors: [],
|
|
18
|
+
progress: null,
|
|
19
|
+
syncLog: [],
|
|
18
20
|
};
|
|
19
21
|
}
|
|
20
22
|
getStatus() {
|
|
@@ -29,28 +31,61 @@ export class SyncManager {
|
|
|
29
31
|
cb(this.getStatus());
|
|
30
32
|
}
|
|
31
33
|
}
|
|
34
|
+
appendLog(entry) {
|
|
35
|
+
this.syncLog.push(entry);
|
|
36
|
+
if (this.syncLog.length > 50) {
|
|
37
|
+
this.syncLog = this.syncLog.slice(-50);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
32
40
|
async pushPending() {
|
|
33
41
|
this.updateStatus({ state: 'syncing' });
|
|
34
|
-
const
|
|
42
|
+
const total = (await this.queue.read()).pending.length;
|
|
43
|
+
let current = 0;
|
|
35
44
|
let pushed = 0;
|
|
36
45
|
const errors = [];
|
|
37
46
|
const idMappings = new Map();
|
|
38
|
-
|
|
47
|
+
const failedEntries = [];
|
|
48
|
+
while (true) {
|
|
49
|
+
const entry = await this.queue.claimNext();
|
|
50
|
+
if (!entry)
|
|
51
|
+
break;
|
|
52
|
+
current++;
|
|
53
|
+
this.updateStatus({
|
|
54
|
+
state: 'syncing',
|
|
55
|
+
progress: { phase: 'push', current, total },
|
|
56
|
+
syncLog: [...this.syncLog],
|
|
57
|
+
});
|
|
39
58
|
try {
|
|
40
59
|
const resolvedId = await this.pushEntry(entry);
|
|
41
|
-
await this.queue.remove(resolvedId, entry.action);
|
|
42
60
|
if (resolvedId !== entry.itemId) {
|
|
43
61
|
idMappings.set(entry.itemId, resolvedId);
|
|
44
62
|
}
|
|
45
63
|
pushed++;
|
|
64
|
+
this.appendLog({
|
|
65
|
+
phase: 'push',
|
|
66
|
+
action: entry.action,
|
|
67
|
+
itemId: entry.itemId,
|
|
68
|
+
result: 'success',
|
|
69
|
+
timestamp: new Date().toISOString(),
|
|
70
|
+
});
|
|
46
71
|
}
|
|
47
72
|
catch (e) {
|
|
48
73
|
const isLocalMissing = e instanceof Error &&
|
|
49
74
|
'code' in e &&
|
|
50
75
|
e.code === 'ENOENT';
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
76
|
+
const isNotFound = e instanceof Error &&
|
|
77
|
+
(e.message.includes('not found') ||
|
|
78
|
+
e.message.includes('does not exist'));
|
|
79
|
+
if (isLocalMissing || isNotFound) {
|
|
80
|
+
// Local item was deleted or never synced — already claimed (removed) from queue
|
|
81
|
+
this.appendLog({
|
|
82
|
+
phase: 'push',
|
|
83
|
+
action: entry.action,
|
|
84
|
+
itemId: entry.itemId,
|
|
85
|
+
result: 'success',
|
|
86
|
+
message: 'skipped (local item missing)',
|
|
87
|
+
timestamp: new Date().toISOString(),
|
|
88
|
+
});
|
|
54
89
|
}
|
|
55
90
|
else {
|
|
56
91
|
errors.push({
|
|
@@ -58,13 +93,29 @@ export class SyncManager {
|
|
|
58
93
|
message: e instanceof Error ? e.message : String(e),
|
|
59
94
|
timestamp: new Date().toISOString(),
|
|
60
95
|
});
|
|
96
|
+
this.appendLog({
|
|
97
|
+
phase: 'push',
|
|
98
|
+
action: entry.action,
|
|
99
|
+
itemId: entry.itemId,
|
|
100
|
+
result: 'error',
|
|
101
|
+
message: e instanceof Error ? e.message : String(e),
|
|
102
|
+
timestamp: new Date().toISOString(),
|
|
103
|
+
});
|
|
104
|
+
// Collect failed entry for re-queuing after the loop
|
|
105
|
+
failedEntries.push(entry);
|
|
61
106
|
}
|
|
62
107
|
}
|
|
63
108
|
}
|
|
109
|
+
// Re-queue all failed entries after the loop to avoid infinite re-claiming
|
|
110
|
+
for (const failed of failedEntries) {
|
|
111
|
+
await this.queue.append(failed);
|
|
112
|
+
}
|
|
64
113
|
this.updateStatus({
|
|
65
114
|
state: errors.length > 0 ? 'error' : 'idle',
|
|
66
115
|
pendingCount: (await this.queue.read()).pending.length,
|
|
67
116
|
errors,
|
|
117
|
+
progress: null,
|
|
118
|
+
syncLog: [...this.syncLog],
|
|
68
119
|
});
|
|
69
120
|
return { pushed, failed: errors.length, errors, idMappings };
|
|
70
121
|
}
|
|
@@ -92,7 +143,7 @@ export class SyncManager {
|
|
|
92
143
|
async pushEntry(entry) {
|
|
93
144
|
switch (entry.action) {
|
|
94
145
|
case 'create': {
|
|
95
|
-
const localItem = await this.
|
|
146
|
+
const localItem = await this.primary.getWorkItem(entry.itemId);
|
|
96
147
|
const remoteItem = await this.remote.createWorkItem(this.stripUnsupportedFields({
|
|
97
148
|
title: localItem.title,
|
|
98
149
|
type: localItem.type,
|
|
@@ -113,7 +164,7 @@ export class SyncManager {
|
|
|
113
164
|
return entry.itemId;
|
|
114
165
|
}
|
|
115
166
|
case 'update': {
|
|
116
|
-
const localItem = await this.
|
|
167
|
+
const localItem = await this.primary.getWorkItem(entry.itemId);
|
|
117
168
|
await this.remote.updateWorkItem(entry.itemId, this.stripUnsupportedFields({
|
|
118
169
|
title: localItem.title,
|
|
119
170
|
type: localItem.type,
|
|
@@ -154,12 +205,12 @@ export class SyncManager {
|
|
|
154
205
|
return entry.itemId;
|
|
155
206
|
}
|
|
156
207
|
case 'template-create': {
|
|
157
|
-
const template = await this.
|
|
208
|
+
const template = await this.primary.getTemplate(entry.templateSlug);
|
|
158
209
|
await this.remote.createTemplate(template);
|
|
159
210
|
return entry.itemId;
|
|
160
211
|
}
|
|
161
212
|
case 'template-update': {
|
|
162
|
-
const template = await this.
|
|
213
|
+
const template = await this.primary.getTemplate(entry.templateSlug);
|
|
163
214
|
await this.remote.updateTemplate(entry.templateSlug, template);
|
|
164
215
|
return entry.itemId;
|
|
165
216
|
}
|
|
@@ -182,24 +233,30 @@ export class SyncManager {
|
|
|
182
233
|
msg.includes('404'));
|
|
183
234
|
}
|
|
184
235
|
async renameLocalItem(oldId, newId) {
|
|
185
|
-
const item = await this.
|
|
186
|
-
const root = this.local.getRoot();
|
|
236
|
+
const item = await this.primary.getWorkItem(oldId);
|
|
187
237
|
const renamedItem = { ...item, id: newId };
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
238
|
+
if (isSyncableBackend(this.primary)) {
|
|
239
|
+
await this.primary.importWorkItem(renamedItem);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
await this.primary.createWorkItem(renamedItem);
|
|
243
|
+
}
|
|
244
|
+
await this.primary.deleteWorkItem(oldId);
|
|
245
|
+
// Fix references from other items
|
|
246
|
+
const allItems = await this.primary.listWorkItems();
|
|
191
247
|
for (const other of allItems) {
|
|
248
|
+
const changes = {};
|
|
192
249
|
let changed = false;
|
|
193
250
|
if (other.parent === oldId) {
|
|
194
|
-
|
|
251
|
+
changes.parent = newId;
|
|
195
252
|
changed = true;
|
|
196
253
|
}
|
|
197
254
|
if (other.dependsOn.includes(oldId)) {
|
|
198
|
-
|
|
255
|
+
changes.dependsOn = other.dependsOn.map((d) => d === oldId ? newId : d);
|
|
199
256
|
changed = true;
|
|
200
257
|
}
|
|
201
258
|
if (changed) {
|
|
202
|
-
await
|
|
259
|
+
await this.primary.updateWorkItem(other.id, changes);
|
|
203
260
|
}
|
|
204
261
|
}
|
|
205
262
|
}
|
|
@@ -211,40 +268,68 @@ export class SyncManager {
|
|
|
211
268
|
state: push.errors.length > 0 ? 'error' : 'idle',
|
|
212
269
|
pendingCount: (await this.queue.read()).pending.length,
|
|
213
270
|
lastSyncTime: new Date(),
|
|
271
|
+
progress: null,
|
|
272
|
+
syncLog: [...this.syncLog],
|
|
214
273
|
});
|
|
215
274
|
return { push, pullCount };
|
|
216
275
|
}
|
|
217
276
|
async pull() {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
277
|
+
// Sync config from remote via configStore
|
|
278
|
+
const [remoteIterations, remoteCurrentIteration, remoteStatuses, remoteTypes,] = await Promise.all([
|
|
279
|
+
this.remote.getIterations(),
|
|
280
|
+
this.remote.getCurrentIteration(),
|
|
281
|
+
this.remote.getStatuses(),
|
|
282
|
+
this.remote.getWorkItemTypes(),
|
|
283
|
+
]);
|
|
284
|
+
const { configStore } = await import('../stores/configStore.js');
|
|
285
|
+
await configStore.getState().update({
|
|
286
|
+
iterations: remoteIterations,
|
|
287
|
+
current_iteration: remoteCurrentIteration,
|
|
288
|
+
statuses: remoteStatuses,
|
|
289
|
+
types: remoteTypes,
|
|
223
290
|
});
|
|
224
291
|
const remoteItems = await this.remote.listWorkItems();
|
|
225
|
-
const root = this.local.getRoot();
|
|
226
292
|
const pendingIds = new Set((await this.queue.read()).pending.map((e) => e.itemId));
|
|
227
|
-
const localItems = await this.
|
|
293
|
+
const localItems = await this.primary.listWorkItems();
|
|
228
294
|
const localIds = new Set(localItems.map((i) => i.id));
|
|
229
295
|
const remoteIds = new Set(remoteItems.map((i) => i.id));
|
|
230
|
-
|
|
231
|
-
|
|
296
|
+
// Upsert remote items locally
|
|
297
|
+
if (isSyncableBackend(this.primary)) {
|
|
298
|
+
for (const item of remoteItems) {
|
|
299
|
+
await this.primary.importWorkItem(item);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
for (const item of remoteItems) {
|
|
304
|
+
if (localIds.has(item.id)) {
|
|
305
|
+
await this.primary.updateWorkItem(item.id, item);
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
await this.primary.createWorkItem(item);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
232
311
|
}
|
|
312
|
+
// Delete local items not on remote (unless pending)
|
|
233
313
|
for (const localId of localIds) {
|
|
234
314
|
if (!remoteIds.has(localId) && !pendingIds.has(localId)) {
|
|
235
|
-
await
|
|
315
|
+
await this.primary.deleteWorkItem(localId);
|
|
236
316
|
}
|
|
237
317
|
}
|
|
238
318
|
// Pull templates if supported by remote
|
|
239
319
|
const remoteCaps = this.remote.getCapabilities();
|
|
240
320
|
if (remoteCaps.templates) {
|
|
241
321
|
const remoteTemplates = await this.remote.listTemplates();
|
|
242
|
-
const localTemplates = await this.
|
|
322
|
+
const localTemplates = await this.primary.listTemplates();
|
|
243
323
|
const localSlugs = new Set(localTemplates.map((t) => t.slug));
|
|
244
324
|
const remoteSlugs = new Set(remoteTemplates.map((t) => t.slug));
|
|
245
325
|
// Write/update remote templates locally
|
|
246
326
|
for (const rt of remoteTemplates) {
|
|
247
|
-
|
|
327
|
+
if (localSlugs.has(rt.slug)) {
|
|
328
|
+
await this.primary.updateTemplate(rt.slug, rt);
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
await this.primary.createTemplate(rt);
|
|
332
|
+
}
|
|
248
333
|
}
|
|
249
334
|
// Delete local templates not on remote (unless pending in queue)
|
|
250
335
|
const pendingTemplateSlugs = new Set((await this.queue.read()).pending
|
|
@@ -253,10 +338,18 @@ export class SyncManager {
|
|
|
253
338
|
.filter(Boolean));
|
|
254
339
|
for (const slug of localSlugs) {
|
|
255
340
|
if (!remoteSlugs.has(slug) && !pendingTemplateSlugs.has(slug)) {
|
|
256
|
-
await
|
|
341
|
+
await this.primary.deleteTemplate(slug);
|
|
257
342
|
}
|
|
258
343
|
}
|
|
259
344
|
}
|
|
345
|
+
this.appendLog({
|
|
346
|
+
phase: 'pull',
|
|
347
|
+
action: 'update',
|
|
348
|
+
itemId: '',
|
|
349
|
+
result: 'success',
|
|
350
|
+
message: `${remoteItems.length} item${remoteItems.length === 1 ? '' : 's'}`,
|
|
351
|
+
timestamp: new Date().toISOString(),
|
|
352
|
+
});
|
|
260
353
|
return remoteItems.length;
|
|
261
354
|
}
|
|
262
355
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncManager.js","sourceRoot":"","sources":["../../src/sync/SyncManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SyncManager.js","sourceRoot":"","sources":["../../src/sync/SyncManager.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/types.d.ts
CHANGED
|
@@ -11,19 +11,43 @@ export interface QueueEntry {
|
|
|
11
11
|
/** For templates: the template slug */
|
|
12
12
|
templateSlug?: string;
|
|
13
13
|
}
|
|
14
|
-
export interface
|
|
14
|
+
export interface SyncQueueData {
|
|
15
15
|
pending: QueueEntry[];
|
|
16
16
|
}
|
|
17
|
+
export interface SyncQueueAdapter {
|
|
18
|
+
read(): SyncQueueData | Promise<SyncQueueData>;
|
|
19
|
+
append(entry: QueueEntry): void | Promise<void>;
|
|
20
|
+
remove(itemId: string, action: QueueAction): void | Promise<void>;
|
|
21
|
+
removeByIds(itemIds: string[], action: QueueAction): void | Promise<void>;
|
|
22
|
+
claimNext(): QueueEntry | null | Promise<QueueEntry | null>;
|
|
23
|
+
clear(): void | Promise<void>;
|
|
24
|
+
renameItem(oldId: string, newId: string): void | Promise<void>;
|
|
25
|
+
}
|
|
17
26
|
export interface SyncError {
|
|
18
27
|
entry: QueueEntry;
|
|
19
28
|
message: string;
|
|
20
29
|
timestamp: string;
|
|
21
30
|
}
|
|
31
|
+
export interface SyncProgress {
|
|
32
|
+
phase: 'push' | 'pull';
|
|
33
|
+
current: number;
|
|
34
|
+
total: number;
|
|
35
|
+
}
|
|
36
|
+
export interface SyncLogEntry {
|
|
37
|
+
phase: 'push' | 'pull';
|
|
38
|
+
action: QueueAction;
|
|
39
|
+
itemId: string;
|
|
40
|
+
result: 'success' | 'error';
|
|
41
|
+
message?: string;
|
|
42
|
+
timestamp: string;
|
|
43
|
+
}
|
|
22
44
|
export interface SyncStatus {
|
|
23
45
|
state: 'idle' | 'syncing' | 'error';
|
|
24
46
|
pendingCount: number;
|
|
25
47
|
lastSyncTime: Date | null;
|
|
26
48
|
errors: SyncError[];
|
|
49
|
+
progress: SyncProgress | null;
|
|
50
|
+
syncLog: SyncLogEntry[];
|
|
27
51
|
}
|
|
28
52
|
export interface PushResult {
|
|
29
53
|
pushed: number;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sascha384/tic",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Terminal UI for issue tracking",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -35,7 +35,9 @@
|
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
38
|
+
"better-sqlite3": "^12.6.2",
|
|
38
39
|
"commander": "^14.0.3",
|
|
40
|
+
"drizzle-orm": "^0.45.1",
|
|
39
41
|
"ink": "^6.6.0",
|
|
40
42
|
"ink-select-input": "^6.2.0",
|
|
41
43
|
"ink-spinner": "^5.0.0",
|
|
@@ -52,10 +54,12 @@
|
|
|
52
54
|
"@semantic-release/exec": "^7.1.0",
|
|
53
55
|
"@semantic-release/git": "^10.0.1",
|
|
54
56
|
"@sindresorhus/tsconfig": "^8.1.0",
|
|
57
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
55
58
|
"@types/node": "^25.1.0",
|
|
56
59
|
"@types/react": "^19.2.10",
|
|
57
60
|
"@types/semver": "^7.7.1",
|
|
58
61
|
"@types/turndown": "^5.0.6",
|
|
62
|
+
"drizzle-kit": "^0.31.9",
|
|
59
63
|
"eslint": "^9.39.2",
|
|
60
64
|
"eslint-config-prettier": "^10.1.8",
|
|
61
65
|
"husky": "^9.1.7",
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export interface Config {
|
|
2
|
-
backend: string;
|
|
3
|
-
types: string[];
|
|
4
|
-
statuses: string[];
|
|
5
|
-
current_iteration: string;
|
|
6
|
-
iterations: string[];
|
|
7
|
-
next_id: number;
|
|
8
|
-
branchMode: 'worktree' | 'branch';
|
|
9
|
-
autoUpdate: boolean;
|
|
10
|
-
defaultType?: string;
|
|
11
|
-
showDetailPanel?: boolean;
|
|
12
|
-
branchCommand?: string;
|
|
13
|
-
copyToClipboard?: boolean;
|
|
14
|
-
jira?: {
|
|
15
|
-
site: string;
|
|
16
|
-
project: string;
|
|
17
|
-
boardId?: number;
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
export declare const defaultConfig: Config;
|
|
21
|
-
export declare function readConfig(root: string): Promise<Config>;
|
|
22
|
-
export declare function readConfigSync(root: string): Config;
|
|
23
|
-
export declare function writeConfig(root: string, config: Config): Promise<void>;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs/promises';
|
|
2
|
-
import fsSync from 'node:fs';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
import yaml from 'yaml';
|
|
5
|
-
export const defaultConfig = {
|
|
6
|
-
backend: 'local',
|
|
7
|
-
types: ['epic', 'issue', 'task'],
|
|
8
|
-
statuses: ['backlog', 'todo', 'in-progress', 'review', 'done'],
|
|
9
|
-
current_iteration: 'default',
|
|
10
|
-
iterations: ['default'],
|
|
11
|
-
next_id: 1,
|
|
12
|
-
branchMode: 'worktree',
|
|
13
|
-
autoUpdate: true,
|
|
14
|
-
branchCommand: `claude "Brainstorm the implementation of issue #$TIC_ITEM_ID: $TIC_ITEM_TITLE. $TIC_ITEM_DESCRIPTION"`,
|
|
15
|
-
copyToClipboard: true,
|
|
16
|
-
};
|
|
17
|
-
function configPath(root) {
|
|
18
|
-
return path.join(root, '.tic', 'config.yml');
|
|
19
|
-
}
|
|
20
|
-
export async function readConfig(root) {
|
|
21
|
-
const p = configPath(root);
|
|
22
|
-
try {
|
|
23
|
-
const raw = await fs.readFile(p, 'utf-8');
|
|
24
|
-
return yaml.parse(raw);
|
|
25
|
-
}
|
|
26
|
-
catch {
|
|
27
|
-
return { ...defaultConfig };
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
export function readConfigSync(root) {
|
|
31
|
-
const p = configPath(root);
|
|
32
|
-
if (!fsSync.existsSync(p))
|
|
33
|
-
return { ...defaultConfig };
|
|
34
|
-
const raw = fsSync.readFileSync(p, 'utf-8');
|
|
35
|
-
return yaml.parse(raw);
|
|
36
|
-
}
|
|
37
|
-
export async function writeConfig(root, config) {
|
|
38
|
-
const dir = path.join(root, '.tic');
|
|
39
|
-
await fs.mkdir(dir, { recursive: true });
|
|
40
|
-
await fs.writeFile(configPath(root), yaml.stringify(config));
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/backends/local/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAsBxB,MAAM,CAAC,MAAM,aAAa,GAAW;IACnC,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC;IAC9D,iBAAiB,EAAE,SAAS;IAC5B,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,uGAAuG;IACtH,eAAe,EAAE,IAAI;CACtB,CAAC;AAEF,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAW,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;IACvD,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAW,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,MAAc;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { BaseBackend } from '../types.js';
|
|
2
|
-
import type { BackendCapabilities } from '../types.js';
|
|
3
|
-
import type { WorkItem, NewWorkItem, NewComment, Comment, Template } from '../../types.js';
|
|
4
|
-
export interface LocalBackendOptions {
|
|
5
|
-
tempIds?: boolean;
|
|
6
|
-
}
|
|
7
|
-
export declare class LocalBackend extends BaseBackend {
|
|
8
|
-
private root;
|
|
9
|
-
private tempIds;
|
|
10
|
-
private constructor();
|
|
11
|
-
static create(root: string, options?: LocalBackendOptions): Promise<LocalBackend>;
|
|
12
|
-
getRoot(): string;
|
|
13
|
-
getCapabilities(): BackendCapabilities;
|
|
14
|
-
getStatuses(): Promise<string[]>;
|
|
15
|
-
getIterations(): Promise<string[]>;
|
|
16
|
-
getWorkItemTypes(): Promise<string[]>;
|
|
17
|
-
getAssignees(): Promise<string[]>;
|
|
18
|
-
getLabels(): Promise<string[]>;
|
|
19
|
-
getCurrentIteration(): Promise<string>;
|
|
20
|
-
setCurrentIteration(name: string): Promise<void>;
|
|
21
|
-
syncConfigFromRemote(remote: {
|
|
22
|
-
iterations: string[];
|
|
23
|
-
currentIteration: string;
|
|
24
|
-
statuses: string[];
|
|
25
|
-
types: string[];
|
|
26
|
-
}): Promise<void>;
|
|
27
|
-
private validateRelationships;
|
|
28
|
-
listWorkItems(iteration?: string): Promise<WorkItem[]>;
|
|
29
|
-
getWorkItem(id: string): Promise<WorkItem>;
|
|
30
|
-
createWorkItem(data: NewWorkItem): Promise<WorkItem>;
|
|
31
|
-
updateWorkItem(id: string, data: Partial<WorkItem>): Promise<WorkItem>;
|
|
32
|
-
deleteWorkItem(id: string): Promise<void>;
|
|
33
|
-
softDeleteWorkItem(id: string): Promise<void>;
|
|
34
|
-
restoreWorkItem(id: string): Promise<void>;
|
|
35
|
-
permanentlyDeleteWorkItem(id: string): Promise<void>;
|
|
36
|
-
cleanupTrash(): Promise<void>;
|
|
37
|
-
addComment(workItemId: string, comment: NewComment): Promise<Comment>;
|
|
38
|
-
getItemUrl(id: string): string;
|
|
39
|
-
openItem(id: string): Promise<void>;
|
|
40
|
-
listTemplates(): Promise<Template[]>;
|
|
41
|
-
getTemplate(slug: string): Promise<Template>;
|
|
42
|
-
createTemplate(template: Template): Promise<Template>;
|
|
43
|
-
updateTemplate(oldSlug: string, template: Template): Promise<Template>;
|
|
44
|
-
deleteTemplate(slug: string): Promise<void>;
|
|
45
|
-
}
|