@kaban-board/core 0.3.1 → 0.3.2

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 (44) hide show
  1. package/dist/db/bun-adapter.d.ts.map +1 -1
  2. package/dist/db/index.d.ts.map +1 -1
  3. package/dist/db/migrate.d.ts.map +1 -1
  4. package/dist/db/migrator.d.ts.map +1 -1
  5. package/dist/db/recovery.d.ts +59 -0
  6. package/dist/db/recovery.d.ts.map +1 -0
  7. package/dist/db/schema.d.ts +344 -0
  8. package/dist/db/schema.d.ts.map +1 -1
  9. package/dist/index-bun.d.ts +1 -0
  10. package/dist/index-bun.d.ts.map +1 -1
  11. package/dist/index-bun.js +811 -65
  12. package/dist/index.d.ts +6 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1267 -66
  15. package/dist/schemas.d.ts +61 -0
  16. package/dist/schemas.d.ts.map +1 -1
  17. package/dist/services/audit.d.ts +45 -0
  18. package/dist/services/audit.d.ts.map +1 -0
  19. package/dist/services/board.d.ts.map +1 -1
  20. package/dist/services/dependency.d.ts +20 -0
  21. package/dist/services/dependency.d.ts.map +1 -0
  22. package/dist/services/index.d.ts +4 -0
  23. package/dist/services/index.d.ts.map +1 -1
  24. package/dist/services/link.d.ts +21 -0
  25. package/dist/services/link.d.ts.map +1 -0
  26. package/dist/services/markdown.d.ts +37 -0
  27. package/dist/services/markdown.d.ts.map +1 -0
  28. package/dist/services/scoring/index.d.ts +17 -0
  29. package/dist/services/scoring/index.d.ts.map +1 -0
  30. package/dist/services/scoring/scorers/blocking.d.ts +7 -0
  31. package/dist/services/scoring/scorers/blocking.d.ts.map +1 -0
  32. package/dist/services/scoring/scorers/due-date.d.ts +7 -0
  33. package/dist/services/scoring/scorers/due-date.d.ts.map +1 -0
  34. package/dist/services/scoring/scorers/fifo.d.ts +7 -0
  35. package/dist/services/scoring/scorers/fifo.d.ts.map +1 -0
  36. package/dist/services/scoring/scorers/priority.d.ts +7 -0
  37. package/dist/services/scoring/scorers/priority.d.ts.map +1 -0
  38. package/dist/services/scoring/types.d.ts +27 -0
  39. package/dist/services/scoring/types.d.ts.map +1 -0
  40. package/dist/services/task.d.ts +6 -1
  41. package/dist/services/task.d.ts.map +1 -1
  42. package/dist/utils/date-parser.d.ts +14 -0
  43. package/dist/utils/date-parser.d.ts.map +1 -0
  44. package/package.json +2 -1
package/dist/schemas.d.ts CHANGED
@@ -5,6 +5,7 @@ export declare const AgentNameSchema: z.ZodPipe<z.ZodString, z.ZodTransform<stri
5
5
  export declare const ColumnIdSchema: z.ZodString;
6
6
  export declare const TaskSchema: z.ZodObject<{
7
7
  id: z.ZodString;
8
+ boardTaskId: z.ZodNullable<z.ZodNumber>;
8
9
  title: z.ZodString;
9
10
  description: z.ZodNullable<z.ZodString>;
10
11
  columnId: z.ZodString;
@@ -21,9 +22,53 @@ export declare const TaskSchema: z.ZodObject<{
21
22
  updatedAt: z.ZodDate;
22
23
  startedAt: z.ZodNullable<z.ZodDate>;
23
24
  completedAt: z.ZodNullable<z.ZodDate>;
25
+ dueDate: z.ZodNullable<z.ZodDate>;
24
26
  archived: z.ZodDefault<z.ZodBoolean>;
25
27
  archivedAt: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
28
+ updatedBy: z.ZodNullable<z.ZodString>;
26
29
  }, z.core.$strip>;
30
+ export declare function formatTaskId(task: {
31
+ boardTaskId: number | null;
32
+ id: string;
33
+ }): string;
34
+ export declare const AuditSchema: z.ZodObject<{
35
+ id: z.ZodNumber;
36
+ timestamp: z.ZodDate;
37
+ eventType: z.ZodEnum<{
38
+ CREATE: "CREATE";
39
+ UPDATE: "UPDATE";
40
+ DELETE: "DELETE";
41
+ }>;
42
+ objectType: z.ZodEnum<{
43
+ task: "task";
44
+ column: "column";
45
+ board: "board";
46
+ }>;
47
+ objectId: z.ZodString;
48
+ fieldName: z.ZodNullable<z.ZodString>;
49
+ oldValue: z.ZodNullable<z.ZodString>;
50
+ newValue: z.ZodNullable<z.ZodString>;
51
+ actor: z.ZodNullable<z.ZodString>;
52
+ }, z.core.$strip>;
53
+ export type Audit = z.infer<typeof AuditSchema>;
54
+ export declare const LinkTypeSchema: z.ZodEnum<{
55
+ blocks: "blocks";
56
+ blocked_by: "blocked_by";
57
+ related: "related";
58
+ }>;
59
+ export type LinkType = z.infer<typeof LinkTypeSchema>;
60
+ export declare const TaskLinkSchema: z.ZodObject<{
61
+ id: z.ZodNumber;
62
+ fromTaskId: z.ZodString;
63
+ toTaskId: z.ZodString;
64
+ linkType: z.ZodEnum<{
65
+ blocks: "blocks";
66
+ blocked_by: "blocked_by";
67
+ related: "related";
68
+ }>;
69
+ createdAt: z.ZodDate;
70
+ }, z.core.$strip>;
71
+ export type TaskLink = z.infer<typeof TaskLinkSchema>;
27
72
  export declare const ColumnSchema: z.ZodObject<{
28
73
  id: z.ZodString;
29
74
  name: z.ZodString;
@@ -34,6 +79,7 @@ export declare const ColumnSchema: z.ZodObject<{
34
79
  export declare const BoardSchema: z.ZodObject<{
35
80
  id: z.ZodString;
36
81
  name: z.ZodString;
82
+ maxBoardTaskId: z.ZodNumber;
37
83
  createdAt: z.ZodDate;
38
84
  updatedAt: z.ZodDate;
39
85
  }, z.core.$strip>;
@@ -74,6 +120,7 @@ export declare const AddTaskInputSchema: z.ZodObject<{
74
120
  dependsOn: z.ZodOptional<z.ZodArray<z.ZodString>>;
75
121
  files: z.ZodOptional<z.ZodArray<z.ZodString>>;
76
122
  labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
123
+ dueDate: z.ZodOptional<z.ZodString>;
77
124
  }, z.core.$strip>;
78
125
  export declare const UpdateTaskInputSchema: z.ZodObject<{
79
126
  title: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
@@ -81,6 +128,7 @@ export declare const UpdateTaskInputSchema: z.ZodObject<{
81
128
  assignedTo: z.ZodOptional<z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
82
129
  files: z.ZodOptional<z.ZodArray<z.ZodString>>;
83
130
  labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
131
+ dueDate: z.ZodOptional<z.ZodNullable<z.ZodString>>;
84
132
  }, z.core.$strip>;
85
133
  export declare const MoveTaskInputSchema: z.ZodObject<{
86
134
  id: z.ZodString;
@@ -103,6 +151,7 @@ export declare const DeleteTaskInputSchema: z.ZodObject<{
103
151
  }, z.core.$strip>;
104
152
  export declare const TaskResponseSchema: z.ZodObject<{
105
153
  id: z.ZodString;
154
+ boardTaskId: z.ZodNullable<z.ZodNumber>;
106
155
  title: z.ZodString;
107
156
  description: z.ZodNullable<z.ZodString>;
108
157
  columnId: z.ZodString;
@@ -116,10 +165,12 @@ export declare const TaskResponseSchema: z.ZodObject<{
116
165
  blockedReason: z.ZodNullable<z.ZodString>;
117
166
  version: z.ZodNumber;
118
167
  archived: z.ZodDefault<z.ZodBoolean>;
168
+ updatedBy: z.ZodNullable<z.ZodString>;
119
169
  createdAt: z.ZodString;
120
170
  updatedAt: z.ZodString;
121
171
  startedAt: z.ZodNullable<z.ZodString>;
122
172
  completedAt: z.ZodNullable<z.ZodString>;
173
+ dueDate: z.ZodNullable<z.ZodString>;
123
174
  archivedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
124
175
  }, z.core.$strip>;
125
176
  export declare const BoardStatusSchema: z.ZodObject<{
@@ -159,6 +210,7 @@ export type BoardStatus = z.infer<typeof BoardStatusSchema>;
159
210
  export declare const jsonSchemas: {
160
211
  readonly Task: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
161
212
  id: z.ZodString;
213
+ boardTaskId: z.ZodNullable<z.ZodNumber>;
162
214
  title: z.ZodString;
163
215
  description: z.ZodNullable<z.ZodString>;
164
216
  columnId: z.ZodString;
@@ -172,10 +224,12 @@ export declare const jsonSchemas: {
172
224
  blockedReason: z.ZodNullable<z.ZodString>;
173
225
  version: z.ZodNumber;
174
226
  archived: z.ZodDefault<z.ZodBoolean>;
227
+ updatedBy: z.ZodNullable<z.ZodString>;
175
228
  createdAt: z.ZodString;
176
229
  updatedAt: z.ZodString;
177
230
  startedAt: z.ZodNullable<z.ZodString>;
178
231
  completedAt: z.ZodNullable<z.ZodString>;
232
+ dueDate: z.ZodNullable<z.ZodString>;
179
233
  archivedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
180
234
  }, z.core.$strip>>;
181
235
  readonly Column: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
@@ -216,6 +270,7 @@ export declare const jsonSchemas: {
216
270
  dependsOn: z.ZodOptional<z.ZodArray<z.ZodString>>;
217
271
  files: z.ZodOptional<z.ZodArray<z.ZodString>>;
218
272
  labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
273
+ dueDate: z.ZodOptional<z.ZodString>;
219
274
  }, z.core.$strip>>;
220
275
  readonly UpdateTaskInput: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
221
276
  title: z.ZodOptional<z.ZodString>;
@@ -223,6 +278,7 @@ export declare const jsonSchemas: {
223
278
  assignedTo: z.ZodOptional<z.ZodNullable<z.ZodString>>;
224
279
  files: z.ZodOptional<z.ZodArray<z.ZodString>>;
225
280
  labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
281
+ dueDate: z.ZodOptional<z.ZodNullable<z.ZodString>>;
226
282
  }, z.core.$strip>>;
227
283
  readonly MoveTaskInput: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
228
284
  id: z.ZodString;
@@ -258,6 +314,7 @@ export declare const jsonSchemas: {
258
314
  export type SchemaName = keyof typeof jsonSchemas;
259
315
  export declare function getJsonSchema(name: SchemaName): z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
260
316
  id: z.ZodString;
317
+ boardTaskId: z.ZodNullable<z.ZodNumber>;
261
318
  title: z.ZodString;
262
319
  description: z.ZodNullable<z.ZodString>;
263
320
  columnId: z.ZodString;
@@ -271,10 +328,12 @@ export declare function getJsonSchema(name: SchemaName): z.core.ZodStandardJSONS
271
328
  blockedReason: z.ZodNullable<z.ZodString>;
272
329
  version: z.ZodNumber;
273
330
  archived: z.ZodDefault<z.ZodBoolean>;
331
+ updatedBy: z.ZodNullable<z.ZodString>;
274
332
  createdAt: z.ZodString;
275
333
  updatedAt: z.ZodString;
276
334
  startedAt: z.ZodNullable<z.ZodString>;
277
335
  completedAt: z.ZodNullable<z.ZodString>;
336
+ dueDate: z.ZodNullable<z.ZodString>;
278
337
  archivedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
279
338
  }, z.core.$strip>> | z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
280
339
  id: z.ZodString;
@@ -311,12 +370,14 @@ export declare function getJsonSchema(name: SchemaName): z.core.ZodStandardJSONS
311
370
  dependsOn: z.ZodOptional<z.ZodArray<z.ZodString>>;
312
371
  files: z.ZodOptional<z.ZodArray<z.ZodString>>;
313
372
  labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
373
+ dueDate: z.ZodOptional<z.ZodString>;
314
374
  }, z.core.$strip>> | z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
315
375
  title: z.ZodOptional<z.ZodString>;
316
376
  description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
317
377
  assignedTo: z.ZodOptional<z.ZodNullable<z.ZodString>>;
318
378
  files: z.ZodOptional<z.ZodArray<z.ZodString>>;
319
379
  labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
380
+ dueDate: z.ZodOptional<z.ZodNullable<z.ZodString>>;
320
381
  }, z.core.$strip>> | z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
321
382
  id: z.ZodString;
322
383
  columnId: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAI3B,eAAO,MAAM,UAAU,aAAsD,CAAC;AAO9E,eAAO,MAAM,WAAW,wDAA6C,CAAC;AAWtE,eAAO,MAAM,eAAe,wDAAwD,CAAC;AAErF,eAAO,MAAM,cAAc,aAI0D,CAAC;AAEtF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;iBAoBrB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;iBAMvB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;iBAKtB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;iBAK9B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;iBAK7B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;iBASvB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;iBAW7B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;iBAMhC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;iBAI9B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;iBAQhC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;iBAE7B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;iBAEhC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;iBAM7B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;iBAQ5B,CAAC;AAEH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC;;;;;;;iBAUhE,CAAC;AAEL,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAC9C,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAmD5D,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUd,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,WAAW,CAAC;AAElD,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAE7C"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { DB } from "../db/types.js";
2
+ export type AuditEventType = "CREATE" | "UPDATE" | "DELETE";
3
+ export type AuditObjectType = "task" | "column" | "board";
4
+ export interface AuditEntry {
5
+ id: number;
6
+ timestamp: Date;
7
+ eventType: AuditEventType;
8
+ objectType: AuditObjectType;
9
+ objectId: string;
10
+ fieldName: string | null;
11
+ oldValue: string | null;
12
+ newValue: string | null;
13
+ actor: string | null;
14
+ }
15
+ export interface AuditFilter {
16
+ objectType?: AuditObjectType;
17
+ objectId?: string;
18
+ eventType?: AuditEventType;
19
+ actor?: string;
20
+ since?: Date;
21
+ until?: Date;
22
+ limit?: number;
23
+ offset?: number;
24
+ }
25
+ export interface AuditHistoryResult {
26
+ entries: AuditEntry[];
27
+ total: number;
28
+ hasMore: boolean;
29
+ }
30
+ export interface AuditStats {
31
+ totalEntries: number;
32
+ byEventType: Record<AuditEventType, number>;
33
+ byObjectType: Record<AuditObjectType, number>;
34
+ recentActors: string[];
35
+ }
36
+ export declare class AuditService {
37
+ private db;
38
+ constructor(db: DB);
39
+ getHistory(filter?: AuditFilter): Promise<AuditHistoryResult>;
40
+ getTaskHistory(taskId: string, limit?: number): Promise<AuditEntry[]>;
41
+ getRecentChanges(limit?: number): Promise<AuditEntry[]>;
42
+ getChangesByActor(actor: string, limit?: number): Promise<AuditEntry[]>;
43
+ getStats(): Promise<AuditStats>;
44
+ }
45
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/services/audit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,cAAc,CAAC;IAC1B,UAAU,EAAE,eAAe,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC9C,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAEpB,UAAU,CAAC,MAAM,GAAE,WAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkDjE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IASjE,gBAAgB,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAKnD,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAKnE,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;CAuDtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../src/services/board.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEzD,qBAAa,YAAY;IACX,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAEpB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IA+B/C,QAAQ,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAKjC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI/B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK7C,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK3C,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAO9C"}
1
+ {"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../src/services/board.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEzD,qBAAa,YAAY;IACX,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAEpB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAgC/C,QAAQ,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAKjC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI/B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK7C,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK3C,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAO9C"}
@@ -0,0 +1,20 @@
1
+ import type { Task } from "../types.js";
2
+ export interface CycleCheckResult {
3
+ hasCycle: boolean;
4
+ cyclePath?: string[];
5
+ }
6
+ export declare class DependencyService {
7
+ private getTask;
8
+ constructor(getTask: (id: string) => Promise<Task | null>);
9
+ /**
10
+ * Check if adding a dependency would create a cycle.
11
+ * Uses DFS from dependsOnId to see if we can reach taskId.
12
+ *
13
+ * If taskId depends on dependsOnId, we check:
14
+ * "Can we reach taskId by following dependsOnId's dependency chain?"
15
+ * If yes, adding this dependency would create a cycle.
16
+ */
17
+ wouldCreateCycle(taskId: string, dependsOnId: string): Promise<CycleCheckResult>;
18
+ formatCyclePath(path: string[], getShortId?: (id: string) => string | number | null): string;
19
+ }
20
+ //# sourceMappingURL=dependency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency.d.ts","sourceRoot":"","sources":["../../src/services/dependency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,qBAAa,iBAAiB;IAChB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAEjE;;;;;;;OAOG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA8CtF,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;CAQ7F"}
@@ -1,3 +1,7 @@
1
1
  export * from "./board.js";
2
+ export * from "./dependency.js";
3
+ export * from "./link.js";
4
+ export * from "./markdown.js";
5
+ export * from "./scoring/index.js";
2
6
  export * from "./task.js";
3
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { type LinkType } from "../db/schema.js";
2
+ import type { DB } from "../db/types.js";
3
+ export interface TaskLink {
4
+ id: number;
5
+ fromTaskId: string;
6
+ toTaskId: string;
7
+ linkType: LinkType;
8
+ createdAt: Date;
9
+ }
10
+ export declare class LinkService {
11
+ private db;
12
+ constructor(db: DB);
13
+ addLink(fromTaskId: string, toTaskId: string, type: LinkType): Promise<TaskLink>;
14
+ removeLink(fromTaskId: string, toTaskId: string, type: LinkType): Promise<void>;
15
+ getLinksFrom(taskId: string, type?: LinkType): Promise<TaskLink[]>;
16
+ getLinksTo(taskId: string, type?: LinkType): Promise<TaskLink[]>;
17
+ getAllLinks(taskId: string): Promise<TaskLink[]>;
18
+ getBlockers(taskId: string): Promise<string[]>;
19
+ getBlocking(taskId: string): Promise<string[]>;
20
+ }
21
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/services/link.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAGzC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,qBAAa,WAAW;IACV,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAEpB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IA6ChF,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B/E,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAUlE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAUhE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAOhD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK9C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAIrD"}
@@ -0,0 +1,37 @@
1
+ import type { Column, Task } from "../types.js";
2
+ export interface ExportOptions {
3
+ includeArchived?: boolean;
4
+ includeMetadata?: boolean;
5
+ }
6
+ export interface ParsedTask {
7
+ title: string;
8
+ id?: string;
9
+ description: string | null;
10
+ dueDate: Date | null;
11
+ labels: string[];
12
+ assignedTo?: string;
13
+ }
14
+ export interface ParsedColumn {
15
+ name: string;
16
+ wipLimit?: number;
17
+ isTerminal?: boolean;
18
+ tasks: ParsedTask[];
19
+ }
20
+ export interface ParseResult {
21
+ boardName: string;
22
+ columns: ParsedColumn[];
23
+ errors: string[];
24
+ }
25
+ export declare class MarkdownService {
26
+ /**
27
+ * Export board to Markdown format (Taskell-compatible)
28
+ */
29
+ exportBoard(board: {
30
+ name: string;
31
+ }, columns: Column[], tasksByColumn: Map<string, Task[]>, options?: ExportOptions): string;
32
+ /**
33
+ * Parse Markdown into board structure
34
+ */
35
+ parseMarkdown(content: string): ParseResult;
36
+ }
37
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/services/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,eAAe;IAC1B;;OAEG;IACH,WAAW,CACT,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EACvB,OAAO,EAAE,MAAM,EAAE,EACjB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAClC,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM;IA2DT;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;CA4H5C"}
@@ -0,0 +1,17 @@
1
+ import type { Task } from "../../types.js";
2
+ import type { ScoredTask, TaskScorer } from "./types.js";
3
+ export * from "./types.js";
4
+ export { fifoScorer } from "./scorers/fifo.js";
5
+ export { priorityScorer } from "./scorers/priority.js";
6
+ export { dueDateScorer } from "./scorers/due-date.js";
7
+ export { createBlockingScorer } from "./scorers/blocking.js";
8
+ export declare class ScoringService {
9
+ private scorers;
10
+ addScorer(scorer: TaskScorer): void;
11
+ removeScorer(name: string): void;
12
+ getScorers(): TaskScorer[];
13
+ scoreTask(task: Task): Promise<ScoredTask>;
14
+ rankTasks(tasks: Task[]): Promise<ScoredTask[]>;
15
+ }
16
+ export declare function createDefaultScoringService(): ScoringService;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/scoring/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEzD,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAoB;IAEnC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAInC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC,UAAU,IAAI,UAAU,EAAE;IAIpB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;IAiB1C,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAItD;AAED,wBAAgB,2BAA2B,IAAI,cAAc,CAE5D"}
@@ -0,0 +1,7 @@
1
+ import type { TaskScorer } from "../types.js";
2
+ /**
3
+ * Blocking scorer - tasks that block others score higher.
4
+ * Requires external context about blocking relationships.
5
+ */
6
+ export declare function createBlockingScorer(getBlockingCount: (taskId: string) => Promise<number>): TaskScorer;
7
+ //# sourceMappingURL=blocking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocking.d.ts","sourceRoot":"","sources":["../../../../src/services/scoring/scorers/blocking.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GACpD,UAAU,CAYZ"}
@@ -0,0 +1,7 @@
1
+ import type { TaskScorer } from "../types.js";
2
+ /**
3
+ * Due date scorer - tasks closer to (or past) due date score higher.
4
+ * Tasks without due dates get 0.
5
+ */
6
+ export declare const dueDateScorer: TaskScorer;
7
+ //# sourceMappingURL=due-date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"due-date.d.ts","sourceRoot":"","sources":["../../../../src/services/scoring/scorers/due-date.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,UAgC3B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { TaskScorer } from "../types.js";
2
+ /**
3
+ * FIFO scorer - oldest tasks first.
4
+ * Score is based on creation time (older = higher).
5
+ */
6
+ export declare const fifoScorer: TaskScorer;
7
+ //# sourceMappingURL=fifo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fifo.d.ts","sourceRoot":"","sources":["../../../../src/services/scoring/scorers/fifo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,UAUxB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { TaskScorer } from "../types.js";
2
+ /**
3
+ * Priority scorer based on labels.
4
+ * Recognizes labels like "critical", "urgent", "high", "p0", etc.
5
+ */
6
+ export declare const priorityScorer: TaskScorer;
7
+ //# sourceMappingURL=priority.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priority.d.ts","sourceRoot":"","sources":["../../../../src/services/scoring/scorers/priority.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAe9C;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,UAiB5B,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { Task } from "../../types.js";
2
+ /**
3
+ * Interface for task scorers.
4
+ * Higher score = more important/urgent.
5
+ */
6
+ export interface TaskScorer {
7
+ /** Unique identifier */
8
+ name: string;
9
+ /** Human-readable description */
10
+ description: string;
11
+ /** Units for display (e.g., "pri/day", "score") */
12
+ units?: string;
13
+ /**
14
+ * Calculate score for task.
15
+ * Returns Promise to allow async operations (e.g., fetching related tasks).
16
+ */
17
+ score(task: Task): Promise<number>;
18
+ }
19
+ /**
20
+ * Scored task with score breakdown
21
+ */
22
+ export interface ScoredTask {
23
+ task: Task;
24
+ score: number;
25
+ breakdown?: Record<string, number>;
26
+ }
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/scoring/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IAEb,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IAEpB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC"}
@@ -8,6 +8,7 @@ export type UpdateTaskInput = UpdateTaskInputSchema;
8
8
  export interface MoveTaskOptions {
9
9
  force?: boolean;
10
10
  validateDeps?: boolean;
11
+ actor?: string;
11
12
  }
12
13
  export interface ArchiveTasksCriteria {
13
14
  status?: string;
@@ -53,6 +54,7 @@ export declare class TaskService {
53
54
  private db;
54
55
  private boardService;
55
56
  private duplicateConfig;
57
+ private depService;
56
58
  constructor(db: DB, boardService: BoardService);
57
59
  private getTaskOrThrow;
58
60
  addTask(input: AddTaskInput): Promise<Task>;
@@ -60,7 +62,7 @@ export declare class TaskService {
60
62
  listTasks(filter?: ListTasksFilter): Promise<Task[]>;
61
63
  deleteTask(id: string): Promise<void>;
62
64
  moveTask(id: string, columnId: string, options?: MoveTaskOptions): Promise<Task>;
63
- updateTask(id: string, input: UpdateTaskInput, expectedVersion?: number): Promise<Task>;
65
+ updateTask(id: string, input: UpdateTaskInput, expectedVersion?: number, actor?: string): Promise<Task>;
64
66
  private getTaskCountInColumn;
65
67
  archiveTasks(criteria: ArchiveTasksCriteria): Promise<ArchiveTasksResult>;
66
68
  /**
@@ -88,5 +90,8 @@ export declare class TaskService {
88
90
  byColumn: Record<string, number>;
89
91
  oldestArchivedAt: Date | null;
90
92
  }>;
93
+ resolveTask(idOrShortId: string, boardId?: string): Promise<Task | null>;
94
+ getTaskByBoardTaskId(boardId: string, boardTaskId: number): Promise<Task | null>;
95
+ getTaskByIdPrefix(prefix: string): Promise<Task | null>;
91
96
  }
92
97
  //# sourceMappingURL=task.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/services/task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/services/task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface ParsedDate {
2
+ date: Date;
3
+ hasTime: boolean;
4
+ dstAdjusted?: boolean;
5
+ }
6
+ export declare class DateParseError extends Error {
7
+ input: string;
8
+ suggestion?: string | undefined;
9
+ constructor(input: string, suggestion?: string | undefined);
10
+ }
11
+ export declare function parseDate(input: string, referenceDate?: Date): ParsedDate;
12
+ export declare function parseDateOrNull(input: string | null | undefined, referenceDate?: Date): Date | null;
13
+ export declare function formatRelativeDate(date: Date, now?: Date): string;
14
+ //# sourceMappingURL=date-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-parser.d.ts","sourceRoot":"","sources":["../../src/utils/date-parser.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,cAAe,SAAQ,KAAK;IAE9B,KAAK,EAAE,MAAM;IACb,UAAU,CAAC,EAAE,MAAM;gBADnB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,YAAA;CAK7B;AAID,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,IAAI,GAAG,UAAU,CAmDzE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,aAAa,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAOnG;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAYjE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaban-board/core",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Core database and services for Kaban - Terminal Kanban for AI Agents",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -26,6 +26,7 @@
26
26
  },
27
27
  "dependencies": {
28
28
  "@libsql/client": "^0.17.0",
29
+ "chrono-node": "^2.9.0",
29
30
  "drizzle-orm": "^0.45.1",
30
31
  "ulid": "^3.0.2",
31
32
  "zod": "^4.3.6"