@task-mcp/shared 1.0.20 → 1.0.21

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 (167) hide show
  1. package/package.json +1 -6
  2. package/dist/algorithms/critical-path.d.ts +0 -46
  3. package/dist/algorithms/critical-path.d.ts.map +0 -1
  4. package/dist/algorithms/critical-path.js +0 -320
  5. package/dist/algorithms/critical-path.js.map +0 -1
  6. package/dist/algorithms/critical-path.test.d.ts +0 -2
  7. package/dist/algorithms/critical-path.test.d.ts.map +0 -1
  8. package/dist/algorithms/critical-path.test.js +0 -194
  9. package/dist/algorithms/critical-path.test.js.map +0 -1
  10. package/dist/algorithms/dependency-integrity.d.ts +0 -81
  11. package/dist/algorithms/dependency-integrity.d.ts.map +0 -1
  12. package/dist/algorithms/dependency-integrity.js +0 -207
  13. package/dist/algorithms/dependency-integrity.js.map +0 -1
  14. package/dist/algorithms/dependency-integrity.test.d.ts +0 -2
  15. package/dist/algorithms/dependency-integrity.test.d.ts.map +0 -1
  16. package/dist/algorithms/dependency-integrity.test.js +0 -309
  17. package/dist/algorithms/dependency-integrity.test.js.map +0 -1
  18. package/dist/algorithms/index.d.ts +0 -5
  19. package/dist/algorithms/index.d.ts.map +0 -1
  20. package/dist/algorithms/index.js +0 -5
  21. package/dist/algorithms/index.js.map +0 -1
  22. package/dist/algorithms/tech-analysis.d.ts +0 -106
  23. package/dist/algorithms/tech-analysis.d.ts.map +0 -1
  24. package/dist/algorithms/tech-analysis.js +0 -344
  25. package/dist/algorithms/tech-analysis.js.map +0 -1
  26. package/dist/algorithms/tech-analysis.test.d.ts +0 -2
  27. package/dist/algorithms/tech-analysis.test.d.ts.map +0 -1
  28. package/dist/algorithms/tech-analysis.test.js +0 -338
  29. package/dist/algorithms/tech-analysis.test.js.map +0 -1
  30. package/dist/algorithms/topological-sort.d.ts +0 -41
  31. package/dist/algorithms/topological-sort.d.ts.map +0 -1
  32. package/dist/algorithms/topological-sort.js +0 -165
  33. package/dist/algorithms/topological-sort.js.map +0 -1
  34. package/dist/algorithms/topological-sort.test.d.ts +0 -2
  35. package/dist/algorithms/topological-sort.test.d.ts.map +0 -1
  36. package/dist/algorithms/topological-sort.test.js +0 -162
  37. package/dist/algorithms/topological-sort.test.js.map +0 -1
  38. package/dist/index.d.ts +0 -4
  39. package/dist/index.d.ts.map +0 -1
  40. package/dist/index.js +0 -7
  41. package/dist/index.js.map +0 -1
  42. package/dist/schemas/inbox.d.ts +0 -55
  43. package/dist/schemas/inbox.d.ts.map +0 -1
  44. package/dist/schemas/inbox.js +0 -25
  45. package/dist/schemas/inbox.js.map +0 -1
  46. package/dist/schemas/index.d.ts +0 -7
  47. package/dist/schemas/index.d.ts.map +0 -1
  48. package/dist/schemas/index.js +0 -17
  49. package/dist/schemas/index.js.map +0 -1
  50. package/dist/schemas/project.d.ts +0 -177
  51. package/dist/schemas/project.d.ts.map +0 -1
  52. package/dist/schemas/project.js +0 -56
  53. package/dist/schemas/project.js.map +0 -1
  54. package/dist/schemas/response-format.d.ts +0 -148
  55. package/dist/schemas/response-format.d.ts.map +0 -1
  56. package/dist/schemas/response-format.js +0 -18
  57. package/dist/schemas/response-format.js.map +0 -1
  58. package/dist/schemas/response-schema.d.ts +0 -307
  59. package/dist/schemas/response-schema.d.ts.map +0 -1
  60. package/dist/schemas/response-schema.js +0 -75
  61. package/dist/schemas/response-schema.js.map +0 -1
  62. package/dist/schemas/response-schema.test.d.ts +0 -2
  63. package/dist/schemas/response-schema.test.d.ts.map +0 -1
  64. package/dist/schemas/response-schema.test.js +0 -256
  65. package/dist/schemas/response-schema.test.js.map +0 -1
  66. package/dist/schemas/state.d.ts +0 -17
  67. package/dist/schemas/state.d.ts.map +0 -1
  68. package/dist/schemas/state.js +0 -17
  69. package/dist/schemas/state.js.map +0 -1
  70. package/dist/schemas/task.d.ts +0 -881
  71. package/dist/schemas/task.d.ts.map +0 -1
  72. package/dist/schemas/task.js +0 -189
  73. package/dist/schemas/task.js.map +0 -1
  74. package/dist/schemas/view.d.ts +0 -143
  75. package/dist/schemas/view.d.ts.map +0 -1
  76. package/dist/schemas/view.js +0 -48
  77. package/dist/schemas/view.js.map +0 -1
  78. package/dist/utils/dashboard-renderer.d.ts +0 -93
  79. package/dist/utils/dashboard-renderer.d.ts.map +0 -1
  80. package/dist/utils/dashboard-renderer.js +0 -424
  81. package/dist/utils/dashboard-renderer.js.map +0 -1
  82. package/dist/utils/dashboard-renderer.test.d.ts +0 -2
  83. package/dist/utils/dashboard-renderer.test.d.ts.map +0 -1
  84. package/dist/utils/dashboard-renderer.test.js +0 -774
  85. package/dist/utils/dashboard-renderer.test.js.map +0 -1
  86. package/dist/utils/date.d.ts +0 -94
  87. package/dist/utils/date.d.ts.map +0 -1
  88. package/dist/utils/date.js +0 -323
  89. package/dist/utils/date.js.map +0 -1
  90. package/dist/utils/date.test.d.ts +0 -2
  91. package/dist/utils/date.test.d.ts.map +0 -1
  92. package/dist/utils/date.test.js +0 -276
  93. package/dist/utils/date.test.js.map +0 -1
  94. package/dist/utils/hierarchy.d.ts +0 -102
  95. package/dist/utils/hierarchy.d.ts.map +0 -1
  96. package/dist/utils/hierarchy.js +0 -236
  97. package/dist/utils/hierarchy.js.map +0 -1
  98. package/dist/utils/hierarchy.test.d.ts +0 -2
  99. package/dist/utils/hierarchy.test.d.ts.map +0 -1
  100. package/dist/utils/hierarchy.test.js +0 -436
  101. package/dist/utils/hierarchy.test.js.map +0 -1
  102. package/dist/utils/id.d.ts +0 -60
  103. package/dist/utils/id.d.ts.map +0 -1
  104. package/dist/utils/id.js +0 -118
  105. package/dist/utils/id.js.map +0 -1
  106. package/dist/utils/id.test.d.ts +0 -2
  107. package/dist/utils/id.test.d.ts.map +0 -1
  108. package/dist/utils/id.test.js +0 -193
  109. package/dist/utils/id.test.js.map +0 -1
  110. package/dist/utils/index.d.ts +0 -12
  111. package/dist/utils/index.d.ts.map +0 -1
  112. package/dist/utils/index.js +0 -34
  113. package/dist/utils/index.js.map +0 -1
  114. package/dist/utils/natural-language.d.ts +0 -57
  115. package/dist/utils/natural-language.d.ts.map +0 -1
  116. package/dist/utils/natural-language.js +0 -211
  117. package/dist/utils/natural-language.js.map +0 -1
  118. package/dist/utils/natural-language.test.d.ts +0 -2
  119. package/dist/utils/natural-language.test.d.ts.map +0 -1
  120. package/dist/utils/natural-language.test.js +0 -197
  121. package/dist/utils/natural-language.test.js.map +0 -1
  122. package/dist/utils/priority-queue.d.ts +0 -17
  123. package/dist/utils/priority-queue.d.ts.map +0 -1
  124. package/dist/utils/priority-queue.js +0 -62
  125. package/dist/utils/priority-queue.js.map +0 -1
  126. package/dist/utils/priority-queue.test.d.ts +0 -2
  127. package/dist/utils/priority-queue.test.d.ts.map +0 -1
  128. package/dist/utils/priority-queue.test.js +0 -82
  129. package/dist/utils/priority-queue.test.js.map +0 -1
  130. package/dist/utils/projection.d.ts +0 -65
  131. package/dist/utils/projection.d.ts.map +0 -1
  132. package/dist/utils/projection.js +0 -180
  133. package/dist/utils/projection.js.map +0 -1
  134. package/dist/utils/projection.test.d.ts +0 -2
  135. package/dist/utils/projection.test.d.ts.map +0 -1
  136. package/dist/utils/projection.test.js +0 -336
  137. package/dist/utils/projection.test.js.map +0 -1
  138. package/dist/utils/terminal-ui.d.ts +0 -208
  139. package/dist/utils/terminal-ui.d.ts.map +0 -1
  140. package/dist/utils/terminal-ui.js +0 -611
  141. package/dist/utils/terminal-ui.js.map +0 -1
  142. package/dist/utils/terminal-ui.test.d.ts +0 -2
  143. package/dist/utils/terminal-ui.test.d.ts.map +0 -1
  144. package/dist/utils/terminal-ui.test.js +0 -683
  145. package/dist/utils/terminal-ui.test.js.map +0 -1
  146. package/dist/utils/workspace.d.ts +0 -100
  147. package/dist/utils/workspace.d.ts.map +0 -1
  148. package/dist/utils/workspace.js +0 -173
  149. package/dist/utils/workspace.js.map +0 -1
  150. package/dist/utils/workspace.test.d.ts +0 -2
  151. package/dist/utils/workspace.test.d.ts.map +0 -1
  152. package/dist/utils/workspace.test.js +0 -97
  153. package/dist/utils/workspace.test.js.map +0 -1
  154. package/src/algorithms/critical-path.test.ts +0 -241
  155. package/src/algorithms/dependency-integrity.test.ts +0 -348
  156. package/src/algorithms/tech-analysis.test.ts +0 -413
  157. package/src/algorithms/topological-sort.test.ts +0 -190
  158. package/src/schemas/response-schema.test.ts +0 -314
  159. package/src/utils/dashboard-renderer.test.ts +0 -983
  160. package/src/utils/date.test.ts +0 -329
  161. package/src/utils/hierarchy.test.ts +0 -505
  162. package/src/utils/id.test.ts +0 -235
  163. package/src/utils/natural-language.test.ts +0 -242
  164. package/src/utils/priority-queue.test.ts +0 -103
  165. package/src/utils/projection.test.ts +0 -425
  166. package/src/utils/terminal-ui.test.ts +0 -831
  167. package/src/utils/workspace.test.ts +0 -125
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=id.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"id.test.d.ts","sourceRoot":"","sources":["../../src/utils/id.test.ts"],"names":[],"mappings":""}
@@ -1,193 +0,0 @@
1
- import { describe, test, expect } from "bun:test";
2
- import { generateId, generateTaskId, generateInboxId, isValidTaskId, isValidInboxId, validateTaskId, validateInboxId, assertValidTaskId, assertValidInboxId, InvalidIdError, } from "./id.js";
3
- describe("ID Generation", () => {
4
- describe("generateId", () => {
5
- test("generates ID without prefix", () => {
6
- const id = generateId();
7
- expect(id.length).toBe(12);
8
- expect(/^[a-z0-9]+$/.test(id)).toBe(true);
9
- });
10
- test("generates ID with prefix", () => {
11
- const id = generateId("test");
12
- expect(id).toMatch(/^test_[a-z0-9]+$/);
13
- });
14
- test("generates unique IDs", () => {
15
- const ids = new Set(Array.from({ length: 100 }, () => generateId("test")));
16
- expect(ids.size).toBe(100);
17
- });
18
- });
19
- describe("generateTaskId", () => {
20
- test("generates task ID with correct prefix", () => {
21
- const id = generateTaskId();
22
- expect(id).toMatch(/^task_[a-z0-9]+$/);
23
- });
24
- });
25
- describe("generateInboxId", () => {
26
- test("generates inbox ID with correct prefix", () => {
27
- const id = generateInboxId();
28
- expect(id).toMatch(/^inbox_[a-z0-9]+$/);
29
- });
30
- });
31
- });
32
- describe("Simple ID Validation (boolean)", () => {
33
- describe("isValidTaskId", () => {
34
- test("returns true for valid task IDs", () => {
35
- expect(isValidTaskId("task_abc123")).toBe(true);
36
- expect(isValidTaskId("task_a")).toBe(true);
37
- expect(isValidTaskId("task_123")).toBe(true);
38
- expect(isValidTaskId("task_abc123def456")).toBe(true);
39
- });
40
- test("returns false for invalid task IDs", () => {
41
- expect(isValidTaskId("")).toBe(false);
42
- expect(isValidTaskId("task_")).toBe(false);
43
- expect(isValidTaskId("abc123")).toBe(false);
44
- expect(isValidTaskId("proj_abc123")).toBe(false);
45
- expect(isValidTaskId("task_ABC123")).toBe(false);
46
- expect(isValidTaskId("task_abc-123")).toBe(false);
47
- expect(isValidTaskId("task_abc.123")).toBe(false);
48
- expect(isValidTaskId("task_abc/123")).toBe(false);
49
- expect(isValidTaskId("task_abc 123")).toBe(false);
50
- });
51
- });
52
- describe("isValidInboxId", () => {
53
- test("returns true for valid inbox IDs", () => {
54
- expect(isValidInboxId("inbox_abc123")).toBe(true);
55
- expect(isValidInboxId("inbox_a")).toBe(true);
56
- });
57
- test("returns false for invalid inbox IDs", () => {
58
- expect(isValidInboxId("")).toBe(false);
59
- expect(isValidInboxId("in_abc123")).toBe(false);
60
- expect(isValidInboxId("task_abc123")).toBe(false);
61
- });
62
- });
63
- });
64
- describe("Detailed ID Validation", () => {
65
- describe("validateTaskId", () => {
66
- test("returns valid: true for valid task IDs", () => {
67
- expect(validateTaskId("task_abc123")).toEqual({ valid: true });
68
- expect(validateTaskId("task_a1b2c3")).toEqual({ valid: true });
69
- });
70
- test("returns error for null/undefined", () => {
71
- const result = validateTaskId(null);
72
- expect(result.valid).toBe(false);
73
- expect(result.reason).toContain("required");
74
- const result2 = validateTaskId(undefined);
75
- expect(result2.valid).toBe(false);
76
- });
77
- test("returns error for non-string", () => {
78
- const result = validateTaskId(123);
79
- expect(result.valid).toBe(false);
80
- expect(result.reason).toContain("string");
81
- expect(result.reason).toContain("number");
82
- });
83
- test("returns error for empty string", () => {
84
- const result = validateTaskId("");
85
- expect(result.valid).toBe(false);
86
- expect(result.reason).toContain("empty");
87
- });
88
- test("returns error for missing prefix", () => {
89
- const result = validateTaskId("abc123");
90
- expect(result.valid).toBe(false);
91
- expect(result.reason).toContain("task_");
92
- });
93
- test("returns error for wrong prefix", () => {
94
- const result = validateTaskId("proj_abc123");
95
- expect(result.valid).toBe(false);
96
- expect(result.reason).toContain("task_");
97
- });
98
- test("returns error for invalid characters", () => {
99
- const result = validateTaskId("task_abc-123");
100
- expect(result.valid).toBe(false);
101
- expect(result.reason).toContain("invalid characters");
102
- });
103
- });
104
- describe("validateInboxId", () => {
105
- test("returns valid: true for valid inbox IDs", () => {
106
- expect(validateInboxId("inbox_abc123")).toEqual({ valid: true });
107
- });
108
- test("returns error for missing prefix", () => {
109
- const result = validateInboxId("in_abc");
110
- expect(result.valid).toBe(false);
111
- expect(result.reason).toContain("inbox_");
112
- });
113
- });
114
- });
115
- describe("Assert Functions", () => {
116
- describe("assertValidTaskId", () => {
117
- test("does not throw for valid ID", () => {
118
- expect(() => assertValidTaskId("task_abc123")).not.toThrow();
119
- });
120
- test("throws InvalidIdError for invalid ID", () => {
121
- expect(() => assertValidTaskId("")).toThrow(InvalidIdError);
122
- expect(() => assertValidTaskId("abc123")).toThrow(InvalidIdError);
123
- expect(() => assertValidTaskId(null)).toThrow(InvalidIdError);
124
- });
125
- test("InvalidIdError contains correct properties", () => {
126
- try {
127
- assertValidTaskId("invalid");
128
- }
129
- catch (error) {
130
- expect(error).toBeInstanceOf(InvalidIdError);
131
- if (error instanceof InvalidIdError) {
132
- expect(error.idType).toBe("task");
133
- expect(error.invalidValue).toBe("invalid");
134
- expect(error.reason).toBeDefined();
135
- expect(error.message).toContain("task");
136
- }
137
- }
138
- });
139
- });
140
- describe("assertValidInboxId", () => {
141
- test("does not throw for valid ID", () => {
142
- expect(() => assertValidInboxId("inbox_abc123")).not.toThrow();
143
- });
144
- test("throws InvalidIdError for invalid ID", () => {
145
- expect(() => assertValidInboxId("in_abc")).toThrow(InvalidIdError);
146
- });
147
- });
148
- });
149
- describe("InvalidIdError", () => {
150
- test("extends Error", () => {
151
- const error = new InvalidIdError("task", "bad_id", "test reason");
152
- expect(error).toBeInstanceOf(Error);
153
- expect(error).toBeInstanceOf(InvalidIdError);
154
- });
155
- test("has correct name", () => {
156
- const error = new InvalidIdError("task", "bad_id", "test reason");
157
- expect(error.name).toBe("InvalidIdError");
158
- });
159
- test("has correct message format", () => {
160
- const error = new InvalidIdError("task", "bad_id", "test reason");
161
- expect(error.message).toBe("Invalid task ID: test reason");
162
- });
163
- test("exposes idType, invalidValue, and reason", () => {
164
- const error = new InvalidIdError("task", "wrong", "missing prefix");
165
- expect(error.idType).toBe("task");
166
- expect(error.invalidValue).toBe("wrong");
167
- expect(error.reason).toBe("missing prefix");
168
- });
169
- });
170
- describe("Security: ID Injection Prevention", () => {
171
- test("rejects path traversal attempts", () => {
172
- expect(validateTaskId("task_../etc/passwd").valid).toBe(false);
173
- expect(validateTaskId("task_..%2F..%2Fetc").valid).toBe(false);
174
- });
175
- test("rejects null bytes", () => {
176
- expect(validateTaskId("task_abc\0def").valid).toBe(false);
177
- });
178
- test("rejects SQL injection attempts", () => {
179
- expect(validateTaskId("task_'; DROP TABLE tasks;--").valid).toBe(false);
180
- expect(validateTaskId("task_1 OR 1=1").valid).toBe(false);
181
- });
182
- test("rejects script injection attempts", () => {
183
- expect(validateTaskId("task_<script>alert(1)</script>").valid).toBe(false);
184
- });
185
- test("only allows safe alphanumeric characters", () => {
186
- // The regex ^task_[a-z0-9]+$ only allows lowercase letters and numbers
187
- expect(validateTaskId("task_abc123").valid).toBe(true);
188
- expect(validateTaskId("task_UPPERCASE").valid).toBe(false);
189
- expect(validateTaskId("task_with_underscore").valid).toBe(false);
190
- expect(validateTaskId("task_with-dash").valid).toBe(false);
191
- });
192
- });
193
- //# sourceMappingURL=id.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"id.test.js","sourceRoot":"","sources":["../../src/utils/id.test.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- export { generateId, generateTaskId, generateViewId, isValidTaskId, generateInboxId, isValidInboxId, InvalidIdError, type IdValidationResult, validateTaskId, validateInboxId, assertValidTaskId, assertValidInboxId, } from "./id.js";
2
- export { PriorityQueue } from "./priority-queue.js";
3
- export { now, parseRelativeDate, parseRelativeDateSafe, parseDateString, formatDate, formatDisplayDate, isToday, isPastDue, isWithinDays, isWithinDaysSafe, isValidDate, DateParseError, type DateParseErrorReason, type DateParseResult, type IsWithinDaysResult, } from "./date.js";
4
- export { parseTaskInput, parseInboxInput, parseInput, type ParseTarget, type ParsedInput } from "./natural-language.js";
5
- export { MAX_HIERARCHY_DEPTH, getTaskLevel, validateHierarchyDepth, getAncestorIds, getDescendantIds, getChildTasks, getRootTask, buildTaskTree, type TaskTreeNode, } from "./hierarchy.js";
6
- export { projectTask, projectTasks, projectTasksPaginated, projectInboxItem, projectInboxItems, formatResponse, applyPagination, truncate, summarizeList, sortTasks, } from "./projection.js";
7
- export { calculateStats, calculateDependencyMetrics, renderStatusWidget, renderActionsWidget, renderInboxWidget, renderWorkspacesTable, renderProjectsTable, // Legacy alias
8
- renderTasksTable, renderDashboard, renderWorkspaceDashboard, renderProjectDashboard, // Legacy alias
9
- renderGlobalDashboard, type DashboardStats, type DependencyMetrics, type WorkspaceInfo, type DashboardData, type RenderDashboardOptions, } from "./dashboard-renderer.js";
10
- export { color, style, styled, c, BOX, box, drawBox, hline, stripAnsi, displayWidth, visibleLength, pad, padEnd, padStart, center, truncateStr, progressBar, type ProgressBarOptions, sideBySide, sideBySideArrays, type BoxOptions, table, renderTable, type TableColumn, statusColors, statusIcons, icons, formatStatus, priorityColors, formatPriority, formatDependencies, banner, } from "./terminal-ui.js";
11
- export { normalizeWorkspace, getGitRepoRoot, getGitRepoRootSync, getWorkspaceFromGit, getWorkspaceFromGitSync, getWorkspaceFromPath, detectWorkspace, detectWorkspaceSync, } from "./workspace.js";
12
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EAEd,cAAc,EACd,KAAK,kBAAkB,EACvB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,GAAG,EACH,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxH,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,aAAa,EACb,KAAK,YAAY,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,QAAQ,EACR,aAAa,EACb,SAAS,GACV,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EAAE,eAAe;AACpC,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,sBAAsB,EAAE,eAAe;AACvC,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,sBAAsB,GAC5B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAEL,KAAK,EACL,KAAK,EACL,MAAM,EACN,CAAC,EAED,GAAG,EACH,GAAG,EACH,OAAO,EACP,KAAK,EAEL,SAAS,EACT,YAAY,EACZ,aAAa,EACb,GAAG,EACH,MAAM,EACN,QAAQ,EACR,MAAM,EACN,WAAW,EAEX,WAAW,EACX,KAAK,kBAAkB,EAEvB,UAAU,EACV,gBAAgB,EAChB,KAAK,UAAU,EAEf,KAAK,EACL,WAAW,EACX,KAAK,WAAW,EAEhB,YAAY,EACZ,WAAW,EACX,KAAK,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,kBAAkB,EAElB,MAAM,GACP,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAC"}
@@ -1,34 +0,0 @@
1
- export { generateId, generateTaskId, generateViewId, isValidTaskId, generateInboxId, isValidInboxId,
2
- // Validation utilities with detailed error information
3
- InvalidIdError, validateTaskId, validateInboxId, assertValidTaskId, assertValidInboxId, } from "./id.js";
4
- export { PriorityQueue } from "./priority-queue.js";
5
- export { now, parseRelativeDate, parseRelativeDateSafe, parseDateString, formatDate, formatDisplayDate, isToday, isPastDue, isWithinDays, isWithinDaysSafe, isValidDate, DateParseError, } from "./date.js";
6
- export { parseTaskInput, parseInboxInput, parseInput } from "./natural-language.js";
7
- export { MAX_HIERARCHY_DEPTH, getTaskLevel, validateHierarchyDepth, getAncestorIds, getDescendantIds, getChildTasks, getRootTask, buildTaskTree, } from "./hierarchy.js";
8
- // Projection utilities (token optimization)
9
- export { projectTask, projectTasks, projectTasksPaginated, projectInboxItem, projectInboxItems, formatResponse, applyPagination, truncate, summarizeList, sortTasks, } from "./projection.js";
10
- // Dashboard renderer
11
- export { calculateStats, calculateDependencyMetrics, renderStatusWidget, renderActionsWidget, renderInboxWidget, renderWorkspacesTable, renderProjectsTable, // Legacy alias
12
- renderTasksTable, renderDashboard, renderWorkspaceDashboard, renderProjectDashboard, // Legacy alias
13
- renderGlobalDashboard, } from "./dashboard-renderer.js";
14
- // Terminal UI utilities
15
- export {
16
- // Colors and styles
17
- color, style, styled, c,
18
- // Box drawing
19
- BOX, box, drawBox, hline,
20
- // String utilities
21
- stripAnsi, displayWidth, visibleLength, pad, padEnd, padStart, center, truncateStr,
22
- // Progress bar
23
- progressBar,
24
- // Layout
25
- sideBySide, sideBySideArrays,
26
- // Tables
27
- table, renderTable,
28
- // Formatters
29
- statusColors, statusIcons, icons, formatStatus, priorityColors, formatPriority, formatDependencies,
30
- // Banner
31
- banner, } from "./terminal-ui.js";
32
- // Workspace detection
33
- export { normalizeWorkspace, getGitRepoRoot, getGitRepoRootSync, getWorkspaceFromGit, getWorkspaceFromGitSync, getWorkspaceFromPath, detectWorkspace, detectWorkspaceSync, } from "./workspace.js";
34
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc;AACd,uDAAuD;AACvD,cAAc,EAEd,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,GAAG,EACH,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,cAAc,GAIf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAsC,MAAM,uBAAuB,CAAC;AACxH,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,aAAa,GAEd,MAAM,gBAAgB,CAAC;AAExB,4CAA4C;AAC5C,OAAO,EACL,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,QAAQ,EACR,aAAa,EACb,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,qBAAqB;AACrB,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EAAE,eAAe;AACpC,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,sBAAsB,EAAE,eAAe;AACvC,qBAAqB,GAMtB,MAAM,yBAAyB,CAAC;AAEjC,wBAAwB;AACxB,OAAO;AACL,oBAAoB;AACpB,KAAK,EACL,KAAK,EACL,MAAM,EACN,CAAC;AACD,cAAc;AACd,GAAG,EACH,GAAG,EACH,OAAO,EACP,KAAK;AACL,mBAAmB;AACnB,SAAS,EACT,YAAY,EACZ,aAAa,EACb,GAAG,EACH,MAAM,EACN,QAAQ,EACR,MAAM,EACN,WAAW;AACX,eAAe;AACf,WAAW;AAEX,SAAS;AACT,UAAU,EACV,gBAAgB;AAEhB,SAAS;AACT,KAAK,EACL,WAAW;AAEX,aAAa;AACb,YAAY,EACZ,WAAW,EACX,KAAK,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,kBAAkB;AAClB,SAAS;AACT,MAAM,GACP,MAAM,kBAAkB,CAAC;AAE1B,sBAAsB;AACtB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAC"}
@@ -1,57 +0,0 @@
1
- import type { TaskCreateInput } from "../schemas/task.js";
2
- import type { InboxCreateInput } from "../schemas/inbox.js";
3
- /**
4
- * Maximum allowed input length for natural language parsing.
5
- * Prevents DoS attacks from extremely long input strings.
6
- */
7
- export declare const MAX_INPUT_LENGTH = 1000;
8
- /**
9
- * Error thrown when input validation fails
10
- */
11
- export declare class InputValidationError extends Error {
12
- constructor(message: string);
13
- }
14
- /**
15
- * Target type for parsed input
16
- */
17
- export type ParseTarget = "task" | "inbox";
18
- /**
19
- * Extended parse result with target information
20
- */
21
- export interface ParsedInput {
22
- target: ParseTarget;
23
- task?: TaskCreateInput;
24
- inbox?: InboxCreateInput;
25
- }
26
- /**
27
- * Parse natural language input with target detection
28
- *
29
- * Target keywords:
30
- * - >>inbox, >>메모, >>아이디어 → capture to inbox
31
- * - >>task, >>태스크 (default) → create task
32
- *
33
- * Examples:
34
- * - "API 리팩토링 아이디어 >>inbox #backend"
35
- * - "Review PR tomorrow #dev !high" (default: task)
36
- * - "새 기능 구상 >>메모"
37
- */
38
- export declare function parseInput(input: string): ParsedInput;
39
- /**
40
- * Parse natural language inbox input
41
- *
42
- * Examples:
43
- * - "GraphQL 도입 검토 #backend #연구"
44
- * - "성능 개선 아이디어 #performance"
45
- */
46
- export declare function parseInboxInput(input: string): InboxCreateInput;
47
- /**
48
- * Parse natural language task input
49
- *
50
- * Examples:
51
- * - "Review PR tomorrow #dev !high"
52
- * - "내일까지 보고서 작성 #업무 !높음 @집중"
53
- * - "Fix bug by Friday #backend !critical"
54
- * - "Write tests every Monday #testing"
55
- */
56
- export declare function parseTaskInput(input: string): TaskCreateInput;
57
- //# sourceMappingURL=natural-language.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"natural-language.d.ts","sourceRoot":"","sources":["../../src/utils/natural-language.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D;;;GAGG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAcD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CA4BrD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAwB/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CA4G7D"}
@@ -1,211 +0,0 @@
1
- import { parseRelativeDate, formatDate } from "./date.js";
2
- /**
3
- * Maximum allowed input length for natural language parsing.
4
- * Prevents DoS attacks from extremely long input strings.
5
- */
6
- export const MAX_INPUT_LENGTH = 1000;
7
- /**
8
- * Error thrown when input validation fails
9
- */
10
- export class InputValidationError extends Error {
11
- constructor(message) {
12
- super(message);
13
- this.name = "InputValidationError";
14
- }
15
- }
16
- /**
17
- * Validates input string length
18
- * @throws {InputValidationError} if input exceeds MAX_INPUT_LENGTH
19
- */
20
- function validateInputLength(input) {
21
- if (input.length > MAX_INPUT_LENGTH) {
22
- throw new InputValidationError(`Input exceeds maximum length of ${MAX_INPUT_LENGTH} characters (received ${input.length})`);
23
- }
24
- }
25
- /**
26
- * Parse natural language input with target detection
27
- *
28
- * Target keywords:
29
- * - >>inbox, >>메모, >>아이디어 → capture to inbox
30
- * - >>task, >>태스크 (default) → create task
31
- *
32
- * Examples:
33
- * - "API 리팩토링 아이디어 >>inbox #backend"
34
- * - "Review PR tomorrow #dev !high" (default: task)
35
- * - "새 기능 구상 >>메모"
36
- */
37
- export function parseInput(input) {
38
- validateInputLength(input);
39
- let remaining = input.trim();
40
- let target = "task";
41
- // Detect target keywords (>>inbox, >>task, >>메모, >>아이디어, >>태스크)
42
- const targetMatch = remaining.match(/>>(inbox|task|메모|아이디어|태스크)/i);
43
- if (targetMatch) {
44
- const keyword = targetMatch[1].toLowerCase();
45
- if (keyword === "inbox" || keyword === "메모" || keyword === "아이디어") {
46
- target = "inbox";
47
- }
48
- else {
49
- target = "task";
50
- }
51
- remaining = remaining.replace(targetMatch[0], "").trim();
52
- }
53
- if (target === "inbox") {
54
- return {
55
- target: "inbox",
56
- inbox: parseInboxInput(remaining),
57
- };
58
- }
59
- return {
60
- target: "task",
61
- task: parseTaskInput(remaining),
62
- };
63
- }
64
- /**
65
- * Parse natural language inbox input
66
- *
67
- * Examples:
68
- * - "GraphQL 도입 검토 #backend #연구"
69
- * - "성능 개선 아이디어 #performance"
70
- */
71
- export function parseInboxInput(input) {
72
- validateInputLength(input);
73
- let remaining = input.trim();
74
- const result = { content: "" };
75
- // Extract tags (#dev, #backend, #개발)
76
- const tagMatches = remaining.match(/#([\p{L}\p{N}_]+)/gu);
77
- if (tagMatches) {
78
- result.tags = tagMatches.map((m) => m.slice(1));
79
- for (const match of tagMatches) {
80
- remaining = remaining.replace(match, "").trim();
81
- }
82
- }
83
- // Clean up and set content
84
- result.content = remaining.replace(/\s+/g, " ").trim();
85
- if (!result.content) {
86
- throw new InputValidationError("Content cannot be empty after parsing. Input contained only metadata (tags).");
87
- }
88
- return result;
89
- }
90
- /**
91
- * Parse natural language task input
92
- *
93
- * Examples:
94
- * - "Review PR tomorrow #dev !high"
95
- * - "내일까지 보고서 작성 #업무 !높음 @집중"
96
- * - "Fix bug by Friday #backend !critical"
97
- * - "Write tests every Monday #testing"
98
- */
99
- export function parseTaskInput(input) {
100
- validateInputLength(input);
101
- let remaining = input.trim();
102
- const result = { title: "" };
103
- // Extract priority (!high, !critical, !medium, !low, !높음, !보통, !낮음)
104
- const priorityMatch = remaining.match(/!([\p{L}\p{N}_]+)/gu);
105
- if (priorityMatch) {
106
- for (const match of priorityMatch) {
107
- const priority = parsePriority(match.slice(1));
108
- if (priority) {
109
- result.priority = priority;
110
- remaining = remaining.replace(match, "").trim();
111
- break;
112
- }
113
- }
114
- }
115
- // Extract contexts (@focus, @review, @집중)
116
- const contextMatches = remaining.match(/@([\p{L}\p{N}_]+)/gu);
117
- if (contextMatches) {
118
- result.contexts = contextMatches.map((m) => m.slice(1));
119
- for (const match of contextMatches) {
120
- remaining = remaining.replace(match, "").trim();
121
- }
122
- }
123
- // Extract tags (#dev, #backend, #개발)
124
- const tagMatches = remaining.match(/#([\p{L}\p{N}_]+)/gu);
125
- if (tagMatches) {
126
- result.tags = tagMatches.map((m) => m.slice(1));
127
- for (const match of tagMatches) {
128
- remaining = remaining.replace(match, "").trim();
129
- }
130
- }
131
- // Extract due date patterns
132
- // "by Friday", "by tomorrow", "until next week"
133
- const byMatch = remaining.match(/\b(by|until|before)\s+(\w+(\s+\w+)?)/i);
134
- if (byMatch) {
135
- const dateStr = byMatch[2];
136
- const date = parseRelativeDate(dateStr);
137
- if (date) {
138
- result.dueDate = formatDate(date);
139
- remaining = remaining.replace(byMatch[0], "").trim();
140
- }
141
- }
142
- // Korean date patterns: "내일까지", "금요일까지"
143
- const koreanDueMatch = remaining.match(/(\S+)까지/);
144
- if (koreanDueMatch && !result.dueDate) {
145
- const dateStr = koreanDueMatch[1];
146
- const date = parseRelativeDate(dateStr);
147
- if (date) {
148
- result.dueDate = formatDate(date);
149
- remaining = remaining.replace(koreanDueMatch[0], "").trim();
150
- }
151
- }
152
- // "tomorrow", "today" at the end
153
- const dateWords = ["tomorrow", "today", "내일", "오늘", "모레"];
154
- for (const word of dateWords) {
155
- if (remaining.toLowerCase().endsWith(word) && !result.dueDate) {
156
- const date = parseRelativeDate(word);
157
- if (date) {
158
- result.dueDate = formatDate(date);
159
- remaining = remaining.slice(0, -word.length).trim();
160
- }
161
- }
162
- }
163
- // Extract time estimate (30m, 2h, 1h30m)
164
- // Pattern matches: "2h30m", "2h", "30m" (but not empty string)
165
- const timeMatch = remaining.match(/\b(\d+h\d+m|\d+h|\d+m)\b/);
166
- if (timeMatch) {
167
- let minutes = 0;
168
- const hoursMatch = timeMatch[0].match(/(\d+)h/);
169
- const minsMatch = timeMatch[0].match(/(\d+)m/);
170
- if (hoursMatch) {
171
- minutes += parseInt(hoursMatch[1], 10) * 60;
172
- }
173
- if (minsMatch) {
174
- minutes += parseInt(minsMatch[1], 10);
175
- }
176
- if (minutes > 0) {
177
- result.estimate = { expected: minutes, confidence: "medium" };
178
- remaining = remaining.replace(timeMatch[0], "").trim();
179
- }
180
- }
181
- // Extract sortOrder (^1, ^10, ^순서1)
182
- // Used for manual ordering within task lists
183
- const sortMatch = remaining.match(/\^(\d+)/);
184
- if (sortMatch) {
185
- result.sortOrder = parseInt(sortMatch[1], 10);
186
- remaining = remaining.replace(sortMatch[0], "").trim();
187
- }
188
- // Clean up extra spaces
189
- result.title = remaining.replace(/\s+/g, " ").trim();
190
- if (!result.title) {
191
- throw new InputValidationError("Task title cannot be empty after parsing. Input contained only metadata.");
192
- }
193
- return result;
194
- }
195
- function parsePriority(input) {
196
- const lower = input.toLowerCase();
197
- const priorityMap = {
198
- critical: "critical",
199
- highest: "critical",
200
- 긴급: "critical",
201
- high: "high",
202
- 높음: "high",
203
- medium: "medium",
204
- normal: "medium",
205
- 보통: "medium",
206
- low: "low",
207
- 낮음: "low",
208
- };
209
- return priorityMap[lower] ?? null;
210
- }
211
- //# sourceMappingURL=natural-language.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"natural-language.js","sourceRoot":"","sources":["../../src/utils/natural-language.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=natural-language.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"natural-language.test.d.ts","sourceRoot":"","sources":["../../src/utils/natural-language.test.ts"],"names":[],"mappings":""}