@task-mcp/shared 1.0.28 → 1.0.30

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 (94) hide show
  1. package/dist/algorithms/index.d.ts +1 -1
  2. package/dist/algorithms/index.d.ts.map +1 -1
  3. package/dist/algorithms/index.js +1 -1
  4. package/dist/algorithms/index.js.map +1 -1
  5. package/dist/algorithms/topological-sort.d.ts +21 -1
  6. package/dist/algorithms/topological-sort.d.ts.map +1 -1
  7. package/dist/algorithms/topological-sort.js +12 -1
  8. package/dist/algorithms/topological-sort.js.map +1 -1
  9. package/dist/schemas/inbox.d.ts +2 -2
  10. package/dist/schemas/index.d.ts +1 -0
  11. package/dist/schemas/index.d.ts.map +1 -1
  12. package/dist/schemas/index.js +2 -0
  13. package/dist/schemas/index.js.map +1 -1
  14. package/dist/schemas/response-format.d.ts +11 -0
  15. package/dist/schemas/response-format.d.ts.map +1 -1
  16. package/dist/schemas/response-format.js.map +1 -1
  17. package/dist/schemas/session.d.ts +521 -0
  18. package/dist/schemas/session.d.ts.map +1 -0
  19. package/dist/schemas/session.js +79 -0
  20. package/dist/schemas/session.js.map +1 -0
  21. package/dist/schemas/state.d.ts +2 -2
  22. package/dist/schemas/task.d.ts +9 -0
  23. package/dist/schemas/task.d.ts.map +1 -1
  24. package/dist/schemas/task.js +23 -6
  25. package/dist/schemas/task.js.map +1 -1
  26. package/dist/schemas/view.d.ts +18 -18
  27. package/dist/utils/clustering.d.ts +60 -0
  28. package/dist/utils/clustering.d.ts.map +1 -0
  29. package/dist/utils/clustering.js +283 -0
  30. package/dist/utils/clustering.js.map +1 -0
  31. package/dist/utils/clustering.test.d.ts +2 -0
  32. package/dist/utils/clustering.test.d.ts.map +1 -0
  33. package/dist/utils/clustering.test.js +237 -0
  34. package/dist/utils/clustering.test.js.map +1 -0
  35. package/dist/utils/env.d.ts +24 -0
  36. package/dist/utils/env.d.ts.map +1 -0
  37. package/dist/utils/env.js +40 -0
  38. package/dist/utils/env.js.map +1 -0
  39. package/dist/utils/hierarchy.d.ts.map +1 -1
  40. package/dist/utils/hierarchy.js +13 -6
  41. package/dist/utils/hierarchy.js.map +1 -1
  42. package/dist/utils/index.d.ts +6 -2
  43. package/dist/utils/index.d.ts.map +1 -1
  44. package/dist/utils/index.js +24 -2
  45. package/dist/utils/index.js.map +1 -1
  46. package/dist/utils/intent-extractor.d.ts +30 -0
  47. package/dist/utils/intent-extractor.d.ts.map +1 -0
  48. package/dist/utils/intent-extractor.js +135 -0
  49. package/dist/utils/intent-extractor.js.map +1 -0
  50. package/dist/utils/intent-extractor.test.d.ts +2 -0
  51. package/dist/utils/intent-extractor.test.d.ts.map +1 -0
  52. package/dist/utils/intent-extractor.test.js +69 -0
  53. package/dist/utils/intent-extractor.test.js.map +1 -0
  54. package/dist/utils/natural-language.d.ts.map +1 -1
  55. package/dist/utils/natural-language.js +9 -8
  56. package/dist/utils/natural-language.js.map +1 -1
  57. package/dist/utils/natural-language.test.js +22 -0
  58. package/dist/utils/natural-language.test.js.map +1 -1
  59. package/dist/utils/plan-parser.d.ts +57 -0
  60. package/dist/utils/plan-parser.d.ts.map +1 -0
  61. package/dist/utils/plan-parser.js +371 -0
  62. package/dist/utils/plan-parser.js.map +1 -0
  63. package/dist/utils/projection.d.ts.map +1 -1
  64. package/dist/utils/projection.js +43 -1
  65. package/dist/utils/projection.js.map +1 -1
  66. package/dist/utils/projection.test.js +57 -7
  67. package/dist/utils/projection.test.js.map +1 -1
  68. package/dist/utils/terminal-ui.d.ts +129 -0
  69. package/dist/utils/terminal-ui.d.ts.map +1 -1
  70. package/dist/utils/terminal-ui.js +191 -0
  71. package/dist/utils/terminal-ui.js.map +1 -1
  72. package/dist/utils/terminal-ui.test.js +227 -0
  73. package/dist/utils/terminal-ui.test.js.map +1 -1
  74. package/package.json +2 -2
  75. package/src/algorithms/index.ts +3 -0
  76. package/src/algorithms/topological-sort.ts +31 -1
  77. package/src/schemas/index.ts +11 -0
  78. package/src/schemas/response-format.ts +15 -2
  79. package/src/schemas/session.ts +100 -0
  80. package/src/schemas/task.ts +33 -16
  81. package/src/utils/clustering.test.ts +285 -0
  82. package/src/utils/clustering.ts +336 -0
  83. package/src/utils/env.ts +41 -0
  84. package/src/utils/hierarchy.ts +17 -8
  85. package/src/utils/index.ts +48 -0
  86. package/src/utils/intent-extractor.test.ts +84 -0
  87. package/src/utils/intent-extractor.ts +156 -0
  88. package/src/utils/natural-language.test.ts +27 -0
  89. package/src/utils/natural-language.ts +10 -9
  90. package/src/utils/plan-parser.ts +466 -0
  91. package/src/utils/projection.test.ts +61 -7
  92. package/src/utils/projection.ts +44 -1
  93. package/src/utils/terminal-ui.test.ts +277 -0
  94. package/src/utils/terminal-ui.ts +315 -0
@@ -0,0 +1,521 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Session - Captures work context for resumption
4
+ *
5
+ * When a work session is interrupted and resumed later, this schema
6
+ * enables immediate context restoration without manual review.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * {
11
+ * id: "session_abc123",
12
+ * name: "Phase 2 리팩토링",
13
+ * startedAt: "2025-01-02T10:00:00Z",
14
+ * endedAt: "2025-01-02T12:30:00Z",
15
+ * tasksWorked: ["task_123", "task_456"],
16
+ * tasksSummary: { completed: 2, inProgress: 1, created: 0 },
17
+ * context: "API 레이어 서비스 패턴 마이그레이션 진행 중"
18
+ * }
19
+ * ```
20
+ */
21
+ export declare const SessionSummary: z.ZodObject<{
22
+ completed: z.ZodDefault<z.ZodNumber>;
23
+ inProgress: z.ZodDefault<z.ZodNumber>;
24
+ created: z.ZodDefault<z.ZodNumber>;
25
+ cancelled: z.ZodDefault<z.ZodNumber>;
26
+ }, "strip", z.ZodTypeAny, {
27
+ completed: number;
28
+ cancelled: number;
29
+ inProgress: number;
30
+ created: number;
31
+ }, {
32
+ completed?: number | undefined;
33
+ cancelled?: number | undefined;
34
+ inProgress?: number | undefined;
35
+ created?: number | undefined;
36
+ }>;
37
+ export type SessionSummary = z.infer<typeof SessionSummary>;
38
+ export declare const SessionTaskSnapshot: z.ZodObject<{
39
+ taskId: z.ZodString;
40
+ title: z.ZodString;
41
+ status: z.ZodEnum<["pending", "in_progress", "blocked", "completed", "cancelled"]>;
42
+ priority: z.ZodOptional<z.ZodEnum<["critical", "high", "medium", "low"]>>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ title: string;
45
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
46
+ taskId: string;
47
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
48
+ }, {
49
+ title: string;
50
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
51
+ taskId: string;
52
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
53
+ }>;
54
+ export type SessionTaskSnapshot = z.infer<typeof SessionTaskSnapshot>;
55
+ export declare const Session: z.ZodObject<{
56
+ id: z.ZodString;
57
+ workspace: z.ZodString;
58
+ name: z.ZodOptional<z.ZodString>;
59
+ startedAt: z.ZodString;
60
+ endedAt: z.ZodOptional<z.ZodString>;
61
+ tasksWorked: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
62
+ tasksSummary: z.ZodOptional<z.ZodObject<{
63
+ completed: z.ZodDefault<z.ZodNumber>;
64
+ inProgress: z.ZodDefault<z.ZodNumber>;
65
+ created: z.ZodDefault<z.ZodNumber>;
66
+ cancelled: z.ZodDefault<z.ZodNumber>;
67
+ }, "strip", z.ZodTypeAny, {
68
+ completed: number;
69
+ cancelled: number;
70
+ inProgress: number;
71
+ created: number;
72
+ }, {
73
+ completed?: number | undefined;
74
+ cancelled?: number | undefined;
75
+ inProgress?: number | undefined;
76
+ created?: number | undefined;
77
+ }>>;
78
+ taskSnapshots: z.ZodOptional<z.ZodArray<z.ZodObject<{
79
+ taskId: z.ZodString;
80
+ title: z.ZodString;
81
+ status: z.ZodEnum<["pending", "in_progress", "blocked", "completed", "cancelled"]>;
82
+ priority: z.ZodOptional<z.ZodEnum<["critical", "high", "medium", "low"]>>;
83
+ }, "strip", z.ZodTypeAny, {
84
+ title: string;
85
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
86
+ taskId: string;
87
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
88
+ }, {
89
+ title: string;
90
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
91
+ taskId: string;
92
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
93
+ }>, "many">>;
94
+ context: z.ZodOptional<z.ZodString>;
95
+ durationMinutes: z.ZodOptional<z.ZodNumber>;
96
+ }, "strip", z.ZodTypeAny, {
97
+ id: string;
98
+ workspace: string;
99
+ startedAt: string;
100
+ tasksWorked: string[];
101
+ context?: string | undefined;
102
+ name?: string | undefined;
103
+ endedAt?: string | undefined;
104
+ tasksSummary?: {
105
+ completed: number;
106
+ cancelled: number;
107
+ inProgress: number;
108
+ created: number;
109
+ } | undefined;
110
+ taskSnapshots?: {
111
+ title: string;
112
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
113
+ taskId: string;
114
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
115
+ }[] | undefined;
116
+ durationMinutes?: number | undefined;
117
+ }, {
118
+ id: string;
119
+ workspace: string;
120
+ startedAt: string;
121
+ context?: string | undefined;
122
+ name?: string | undefined;
123
+ endedAt?: string | undefined;
124
+ tasksWorked?: string[] | undefined;
125
+ tasksSummary?: {
126
+ completed?: number | undefined;
127
+ cancelled?: number | undefined;
128
+ inProgress?: number | undefined;
129
+ created?: number | undefined;
130
+ } | undefined;
131
+ taskSnapshots?: {
132
+ title: string;
133
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
134
+ taskId: string;
135
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
136
+ }[] | undefined;
137
+ durationMinutes?: number | undefined;
138
+ }>;
139
+ export type Session = z.infer<typeof Session>;
140
+ export declare const SessionCreateInput: z.ZodObject<{
141
+ name: z.ZodOptional<z.ZodString>;
142
+ context: z.ZodOptional<z.ZodString>;
143
+ }, "strip", z.ZodTypeAny, {
144
+ context?: string | undefined;
145
+ name?: string | undefined;
146
+ }, {
147
+ context?: string | undefined;
148
+ name?: string | undefined;
149
+ }>;
150
+ export type SessionCreateInput = z.infer<typeof SessionCreateInput>;
151
+ export declare const SessionEndInput: z.ZodObject<{
152
+ context: z.ZodOptional<z.ZodString>;
153
+ }, "strip", z.ZodTypeAny, {
154
+ context?: string | undefined;
155
+ }, {
156
+ context?: string | undefined;
157
+ }>;
158
+ export type SessionEndInput = z.infer<typeof SessionEndInput>;
159
+ export declare const SessionListFilter: z.ZodObject<{
160
+ limit: z.ZodDefault<z.ZodNumber>;
161
+ workspace: z.ZodOptional<z.ZodString>;
162
+ includeActive: z.ZodDefault<z.ZodBoolean>;
163
+ }, "strip", z.ZodTypeAny, {
164
+ limit: number;
165
+ includeActive: boolean;
166
+ workspace?: string | undefined;
167
+ }, {
168
+ workspace?: string | undefined;
169
+ limit?: number | undefined;
170
+ includeActive?: boolean | undefined;
171
+ }>;
172
+ export type SessionListFilter = z.infer<typeof SessionListFilter>;
173
+ export declare const SessionResumeInfo: z.ZodObject<{
174
+ lastSession: z.ZodOptional<z.ZodObject<{
175
+ id: z.ZodString;
176
+ workspace: z.ZodString;
177
+ name: z.ZodOptional<z.ZodString>;
178
+ startedAt: z.ZodString;
179
+ endedAt: z.ZodOptional<z.ZodString>;
180
+ tasksWorked: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
181
+ tasksSummary: z.ZodOptional<z.ZodObject<{
182
+ completed: z.ZodDefault<z.ZodNumber>;
183
+ inProgress: z.ZodDefault<z.ZodNumber>;
184
+ created: z.ZodDefault<z.ZodNumber>;
185
+ cancelled: z.ZodDefault<z.ZodNumber>;
186
+ }, "strip", z.ZodTypeAny, {
187
+ completed: number;
188
+ cancelled: number;
189
+ inProgress: number;
190
+ created: number;
191
+ }, {
192
+ completed?: number | undefined;
193
+ cancelled?: number | undefined;
194
+ inProgress?: number | undefined;
195
+ created?: number | undefined;
196
+ }>>;
197
+ taskSnapshots: z.ZodOptional<z.ZodArray<z.ZodObject<{
198
+ taskId: z.ZodString;
199
+ title: z.ZodString;
200
+ status: z.ZodEnum<["pending", "in_progress", "blocked", "completed", "cancelled"]>;
201
+ priority: z.ZodOptional<z.ZodEnum<["critical", "high", "medium", "low"]>>;
202
+ }, "strip", z.ZodTypeAny, {
203
+ title: string;
204
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
205
+ taskId: string;
206
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
207
+ }, {
208
+ title: string;
209
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
210
+ taskId: string;
211
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
212
+ }>, "many">>;
213
+ context: z.ZodOptional<z.ZodString>;
214
+ durationMinutes: z.ZodOptional<z.ZodNumber>;
215
+ }, "strip", z.ZodTypeAny, {
216
+ id: string;
217
+ workspace: string;
218
+ startedAt: string;
219
+ tasksWorked: string[];
220
+ context?: string | undefined;
221
+ name?: string | undefined;
222
+ endedAt?: string | undefined;
223
+ tasksSummary?: {
224
+ completed: number;
225
+ cancelled: number;
226
+ inProgress: number;
227
+ created: number;
228
+ } | undefined;
229
+ taskSnapshots?: {
230
+ title: string;
231
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
232
+ taskId: string;
233
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
234
+ }[] | undefined;
235
+ durationMinutes?: number | undefined;
236
+ }, {
237
+ id: string;
238
+ workspace: string;
239
+ startedAt: string;
240
+ context?: string | undefined;
241
+ name?: string | undefined;
242
+ endedAt?: string | undefined;
243
+ tasksWorked?: string[] | undefined;
244
+ tasksSummary?: {
245
+ completed?: number | undefined;
246
+ cancelled?: number | undefined;
247
+ inProgress?: number | undefined;
248
+ created?: number | undefined;
249
+ } | undefined;
250
+ taskSnapshots?: {
251
+ title: string;
252
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
253
+ taskId: string;
254
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
255
+ }[] | undefined;
256
+ durationMinutes?: number | undefined;
257
+ }>>;
258
+ currentSession: z.ZodOptional<z.ZodObject<{
259
+ id: z.ZodString;
260
+ workspace: z.ZodString;
261
+ name: z.ZodOptional<z.ZodString>;
262
+ startedAt: z.ZodString;
263
+ endedAt: z.ZodOptional<z.ZodString>;
264
+ tasksWorked: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
265
+ tasksSummary: z.ZodOptional<z.ZodObject<{
266
+ completed: z.ZodDefault<z.ZodNumber>;
267
+ inProgress: z.ZodDefault<z.ZodNumber>;
268
+ created: z.ZodDefault<z.ZodNumber>;
269
+ cancelled: z.ZodDefault<z.ZodNumber>;
270
+ }, "strip", z.ZodTypeAny, {
271
+ completed: number;
272
+ cancelled: number;
273
+ inProgress: number;
274
+ created: number;
275
+ }, {
276
+ completed?: number | undefined;
277
+ cancelled?: number | undefined;
278
+ inProgress?: number | undefined;
279
+ created?: number | undefined;
280
+ }>>;
281
+ taskSnapshots: z.ZodOptional<z.ZodArray<z.ZodObject<{
282
+ taskId: z.ZodString;
283
+ title: z.ZodString;
284
+ status: z.ZodEnum<["pending", "in_progress", "blocked", "completed", "cancelled"]>;
285
+ priority: z.ZodOptional<z.ZodEnum<["critical", "high", "medium", "low"]>>;
286
+ }, "strip", z.ZodTypeAny, {
287
+ title: string;
288
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
289
+ taskId: string;
290
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
291
+ }, {
292
+ title: string;
293
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
294
+ taskId: string;
295
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
296
+ }>, "many">>;
297
+ context: z.ZodOptional<z.ZodString>;
298
+ durationMinutes: z.ZodOptional<z.ZodNumber>;
299
+ }, "strip", z.ZodTypeAny, {
300
+ id: string;
301
+ workspace: string;
302
+ startedAt: string;
303
+ tasksWorked: string[];
304
+ context?: string | undefined;
305
+ name?: string | undefined;
306
+ endedAt?: string | undefined;
307
+ tasksSummary?: {
308
+ completed: number;
309
+ cancelled: number;
310
+ inProgress: number;
311
+ created: number;
312
+ } | undefined;
313
+ taskSnapshots?: {
314
+ title: string;
315
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
316
+ taskId: string;
317
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
318
+ }[] | undefined;
319
+ durationMinutes?: number | undefined;
320
+ }, {
321
+ id: string;
322
+ workspace: string;
323
+ startedAt: string;
324
+ context?: string | undefined;
325
+ name?: string | undefined;
326
+ endedAt?: string | undefined;
327
+ tasksWorked?: string[] | undefined;
328
+ tasksSummary?: {
329
+ completed?: number | undefined;
330
+ cancelled?: number | undefined;
331
+ inProgress?: number | undefined;
332
+ created?: number | undefined;
333
+ } | undefined;
334
+ taskSnapshots?: {
335
+ title: string;
336
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
337
+ taskId: string;
338
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
339
+ }[] | undefined;
340
+ durationMinutes?: number | undefined;
341
+ }>>;
342
+ inProgressTasks: z.ZodDefault<z.ZodArray<z.ZodObject<{
343
+ taskId: z.ZodString;
344
+ title: z.ZodString;
345
+ status: z.ZodEnum<["pending", "in_progress", "blocked", "completed", "cancelled"]>;
346
+ priority: z.ZodOptional<z.ZodEnum<["critical", "high", "medium", "low"]>>;
347
+ }, "strip", z.ZodTypeAny, {
348
+ title: string;
349
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
350
+ taskId: string;
351
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
352
+ }, {
353
+ title: string;
354
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
355
+ taskId: string;
356
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
357
+ }>, "many">>;
358
+ recentlyCompleted: z.ZodDefault<z.ZodArray<z.ZodObject<{
359
+ taskId: z.ZodString;
360
+ title: z.ZodString;
361
+ status: z.ZodEnum<["pending", "in_progress", "blocked", "completed", "cancelled"]>;
362
+ priority: z.ZodOptional<z.ZodEnum<["critical", "high", "medium", "low"]>>;
363
+ }, "strip", z.ZodTypeAny, {
364
+ title: string;
365
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
366
+ taskId: string;
367
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
368
+ }, {
369
+ title: string;
370
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
371
+ taskId: string;
372
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
373
+ }>, "many">>;
374
+ suggestedNextTask: z.ZodOptional<z.ZodObject<{
375
+ taskId: z.ZodString;
376
+ title: z.ZodString;
377
+ status: z.ZodEnum<["pending", "in_progress", "blocked", "completed", "cancelled"]>;
378
+ priority: z.ZodOptional<z.ZodEnum<["critical", "high", "medium", "low"]>>;
379
+ }, "strip", z.ZodTypeAny, {
380
+ title: string;
381
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
382
+ taskId: string;
383
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
384
+ }, {
385
+ title: string;
386
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
387
+ taskId: string;
388
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
389
+ }>>;
390
+ timeSinceLastSession: z.ZodOptional<z.ZodString>;
391
+ }, "strip", z.ZodTypeAny, {
392
+ inProgressTasks: {
393
+ title: string;
394
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
395
+ taskId: string;
396
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
397
+ }[];
398
+ recentlyCompleted: {
399
+ title: string;
400
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
401
+ taskId: string;
402
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
403
+ }[];
404
+ lastSession?: {
405
+ id: string;
406
+ workspace: string;
407
+ startedAt: string;
408
+ tasksWorked: string[];
409
+ context?: string | undefined;
410
+ name?: string | undefined;
411
+ endedAt?: string | undefined;
412
+ tasksSummary?: {
413
+ completed: number;
414
+ cancelled: number;
415
+ inProgress: number;
416
+ created: number;
417
+ } | undefined;
418
+ taskSnapshots?: {
419
+ title: string;
420
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
421
+ taskId: string;
422
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
423
+ }[] | undefined;
424
+ durationMinutes?: number | undefined;
425
+ } | undefined;
426
+ currentSession?: {
427
+ id: string;
428
+ workspace: string;
429
+ startedAt: string;
430
+ tasksWorked: string[];
431
+ context?: string | undefined;
432
+ name?: string | undefined;
433
+ endedAt?: string | undefined;
434
+ tasksSummary?: {
435
+ completed: number;
436
+ cancelled: number;
437
+ inProgress: number;
438
+ created: number;
439
+ } | undefined;
440
+ taskSnapshots?: {
441
+ title: string;
442
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
443
+ taskId: string;
444
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
445
+ }[] | undefined;
446
+ durationMinutes?: number | undefined;
447
+ } | undefined;
448
+ suggestedNextTask?: {
449
+ title: string;
450
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
451
+ taskId: string;
452
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
453
+ } | undefined;
454
+ timeSinceLastSession?: string | undefined;
455
+ }, {
456
+ lastSession?: {
457
+ id: string;
458
+ workspace: string;
459
+ startedAt: string;
460
+ context?: string | undefined;
461
+ name?: string | undefined;
462
+ endedAt?: string | undefined;
463
+ tasksWorked?: string[] | undefined;
464
+ tasksSummary?: {
465
+ completed?: number | undefined;
466
+ cancelled?: number | undefined;
467
+ inProgress?: number | undefined;
468
+ created?: number | undefined;
469
+ } | undefined;
470
+ taskSnapshots?: {
471
+ title: string;
472
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
473
+ taskId: string;
474
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
475
+ }[] | undefined;
476
+ durationMinutes?: number | undefined;
477
+ } | undefined;
478
+ currentSession?: {
479
+ id: string;
480
+ workspace: string;
481
+ startedAt: string;
482
+ context?: string | undefined;
483
+ name?: string | undefined;
484
+ endedAt?: string | undefined;
485
+ tasksWorked?: string[] | undefined;
486
+ tasksSummary?: {
487
+ completed?: number | undefined;
488
+ cancelled?: number | undefined;
489
+ inProgress?: number | undefined;
490
+ created?: number | undefined;
491
+ } | undefined;
492
+ taskSnapshots?: {
493
+ title: string;
494
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
495
+ taskId: string;
496
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
497
+ }[] | undefined;
498
+ durationMinutes?: number | undefined;
499
+ } | undefined;
500
+ inProgressTasks?: {
501
+ title: string;
502
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
503
+ taskId: string;
504
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
505
+ }[] | undefined;
506
+ recentlyCompleted?: {
507
+ title: string;
508
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
509
+ taskId: string;
510
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
511
+ }[] | undefined;
512
+ suggestedNextTask?: {
513
+ title: string;
514
+ status: "pending" | "in_progress" | "blocked" | "completed" | "cancelled";
515
+ taskId: string;
516
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
517
+ } | undefined;
518
+ timeSinceLastSession?: string | undefined;
519
+ }>;
520
+ export type SessionResumeInfo = z.infer<typeof SessionResumeInfo>;
521
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/schemas/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;GAkBG;AAGH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;EAKzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAG5D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGtE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBlB,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAG9C,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAGpE,eAAO,MAAM,eAAe;;;;;;EAE1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAG9D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAI5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAGlE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Session - Captures work context for resumption
4
+ *
5
+ * When a work session is interrupted and resumed later, this schema
6
+ * enables immediate context restoration without manual review.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * {
11
+ * id: "session_abc123",
12
+ * name: "Phase 2 리팩토링",
13
+ * startedAt: "2025-01-02T10:00:00Z",
14
+ * endedAt: "2025-01-02T12:30:00Z",
15
+ * tasksWorked: ["task_123", "task_456"],
16
+ * tasksSummary: { completed: 2, inProgress: 1, created: 0 },
17
+ * context: "API 레이어 서비스 패턴 마이그레이션 진행 중"
18
+ * }
19
+ * ```
20
+ */
21
+ // Session summary - snapshot at session end
22
+ export const SessionSummary = z.object({
23
+ completed: z.number().default(0),
24
+ inProgress: z.number().default(0),
25
+ created: z.number().default(0),
26
+ cancelled: z.number().default(0),
27
+ });
28
+ // Task snapshot for session history (lightweight)
29
+ export const SessionTaskSnapshot = z.object({
30
+ taskId: z.string(),
31
+ title: z.string(),
32
+ status: z.enum(["pending", "in_progress", "blocked", "completed", "cancelled"]),
33
+ priority: z.enum(["critical", "high", "medium", "low"]).optional(),
34
+ });
35
+ // Core Session schema
36
+ export const Session = z.object({
37
+ id: z.string(),
38
+ workspace: z.string(),
39
+ // Optional session name for easy identification
40
+ name: z.string().optional(),
41
+ // Timestamps
42
+ startedAt: z.string(), // ISO datetime
43
+ endedAt: z.string().optional(), // ISO datetime, undefined if active
44
+ // Tasks worked during this session
45
+ tasksWorked: z.array(z.string()).default([]), // Task IDs
46
+ // Summary at session end
47
+ tasksSummary: SessionSummary.optional(),
48
+ // Detailed snapshots of tasks (for context restoration)
49
+ taskSnapshots: z.array(SessionTaskSnapshot).optional(),
50
+ // Free-form context memo (what was being worked on)
51
+ context: z.string().optional(),
52
+ // Duration in minutes (calculated at end)
53
+ durationMinutes: z.number().optional(),
54
+ });
55
+ // Session creation input
56
+ export const SessionCreateInput = z.object({
57
+ name: z.string().optional(),
58
+ context: z.string().optional(),
59
+ });
60
+ // Session update input (for ending session)
61
+ export const SessionEndInput = z.object({
62
+ context: z.string().optional(), // Update context memo at end
63
+ });
64
+ // Session list filter
65
+ export const SessionListFilter = z.object({
66
+ limit: z.number().min(1).max(100).default(10),
67
+ workspace: z.string().optional(), // Filter by workspace
68
+ includeActive: z.boolean().default(true), // Include sessions without endedAt
69
+ });
70
+ // Session resume response (for session_resume tool)
71
+ export const SessionResumeInfo = z.object({
72
+ lastSession: Session.optional(),
73
+ currentSession: Session.optional(),
74
+ inProgressTasks: z.array(SessionTaskSnapshot).default([]),
75
+ recentlyCompleted: z.array(SessionTaskSnapshot).default([]),
76
+ suggestedNextTask: SessionTaskSnapshot.optional(),
77
+ timeSinceLastSession: z.string().optional(), // Human-readable: "2 hours ago"
78
+ });
79
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/schemas/session.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,12 @@ export declare const State: z.ZodObject<{
5
5
  updatedAt: z.ZodOptional<z.ZodString>;
6
6
  }, "strip", z.ZodTypeAny, {
7
7
  activeTag: string;
8
- gitBranch?: string | undefined;
9
8
  updatedAt?: string | undefined;
9
+ gitBranch?: string | undefined;
10
10
  }, {
11
11
  activeTag: string;
12
- gitBranch?: string | undefined;
13
12
  updatedAt?: string | undefined;
13
+ gitBranch?: string | undefined;
14
14
  }>;
15
15
  export type State = z.infer<typeof State>;
16
16
  export declare const DEFAULT_STATE: State;