@wrongstack/tools 0.286.0 → 0.287.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +2 -2
  2. package/dist/_edit-match.d.ts.map +1 -1
  3. package/dist/batch-tool-use.d.ts +1 -1
  4. package/dist/batch-tool-use.d.ts.map +1 -1
  5. package/dist/batch-tool-use.js +26 -8
  6. package/dist/batch-tool-use.js.map +2 -2
  7. package/dist/browser/index.js +1 -1
  8. package/dist/browser/index.js.map +1 -1
  9. package/dist/browser/types.d.ts +1 -1
  10. package/dist/browser/types.d.ts.map +1 -1
  11. package/dist/builtin.js +544 -118
  12. package/dist/builtin.js.map +4 -4
  13. package/dist/codebase-index/go-parser.d.ts.map +1 -1
  14. package/dist/codebase-index/index.js +190 -96
  15. package/dist/codebase-index/index.js.map +4 -4
  16. package/dist/codebase-index/py-parser.d.ts.map +1 -1
  17. package/dist/codebase-index/rs-parser.d.ts.map +1 -1
  18. package/dist/codebase-index/worker.js +188 -94
  19. package/dist/codebase-index/worker.js.map +4 -4
  20. package/dist/edit.d.ts.map +1 -1
  21. package/dist/edit.js +36 -12
  22. package/dist/edit.js.map +3 -3
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +818 -125
  26. package/dist/index.js.map +4 -4
  27. package/dist/kanban.d.ts +7 -2
  28. package/dist/kanban.d.ts.map +1 -1
  29. package/dist/kanban.js +158 -19
  30. package/dist/kanban.js.map +4 -4
  31. package/dist/next-steps.d.ts +6 -2
  32. package/dist/next-steps.d.ts.map +1 -1
  33. package/dist/next-steps.js +3 -3
  34. package/dist/next-steps.js.map +2 -2
  35. package/dist/pack.js +544 -118
  36. package/dist/pack.js.map +4 -4
  37. package/dist/plan.d.ts.map +1 -1
  38. package/dist/plan.js +154 -4
  39. package/dist/plan.js.map +4 -4
  40. package/dist/session-kanban.d.ts +38 -0
  41. package/dist/session-kanban.d.ts.map +1 -0
  42. package/dist/session-kanban.js +489 -0
  43. package/dist/session-kanban.js.map +7 -0
  44. package/dist/task.d.ts.map +1 -1
  45. package/dist/task.js +163 -4
  46. package/dist/task.js.map +4 -4
  47. package/dist/todo.d.ts.map +1 -1
  48. package/dist/todo.js +155 -7
  49. package/dist/todo.js.map +4 -4
  50. package/dist/tool-icon-map.d.ts.map +1 -1
  51. package/dist/tool-icons.d.ts.map +1 -1
  52. package/dist/tool-icons.js +7 -1
  53. package/dist/tool-icons.js.map +2 -2
  54. package/package.json +7 -3
package/dist/kanban.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { SerializedTaskGraph, Tool } from '@wrongstack/core';
2
- import type { AssignKanbanTaskInput, KanbanAgentRunStatus, KanbanBoard, KanbanBoardSummary, KanbanEvent, KanbanOrchestrationSnapshot, KanbanQueueHealth, KanbanSearchResult, KanbanTask, KanbanTaskPriority, KanbanTaskStatus } from '@wrongstack/kanban';
3
- type KanbanAction = 'list_boards' | 'get_board' | 'create_board' | 'duplicate_board' | 'update_board' | 'delete_board' | 'generate_board' | 'export_markdown' | 'export_task_graph' | 'sync_task_graph' | 'search_tasks' | 'ready_tasks' | 'snapshot' | 'add_column' | 'update_column' | 'delete_column' | 'add_task' | 'split_task' | 'merge_tasks' | 'copy_task' | 'transfer_task' | 'get_task' | 'update_task' | 'move_task' | 'delete_task' | 'set_chain' | 'get_chain' | 'claim_task' | 'release_task' | 'assign_task' | 'mark_assignment' | 'heartbeat_assignment' | 'recover_stale' | 'events' | 'queue_health' | 'add_dependency' | 'add_goal_metric' | 'update_goal_metric' | 'add_check' | 'update_check' | 'add_note' | 'add_link';
2
+ import type { AssignKanbanTaskInput, KanbanAgentRunStatus, KanbanBoard, KanbanBoardSummary, KanbanEvent, KanbanOrchestrationSnapshot, KanbanQueueHealth, KanbanSearchResult, KanbanTask, KanbanTaskPriority, KanbanTaskStatus, KanbanTaskType } from '@wrongstack/kanban';
3
+ type KanbanAction = 'list_boards' | 'get_board' | 'create_board' | 'duplicate_board' | 'update_board' | 'delete_board' | 'generate_board' | 'export_markdown' | 'export_task_graph' | 'sync_task_graph' | 'create_from_graph' | 'import_session_tasks' | 'search_tasks' | 'ready_tasks' | 'snapshot' | 'add_column' | 'update_column' | 'delete_column' | 'add_task' | 'split_task' | 'merge_tasks' | 'copy_task' | 'transfer_task' | 'get_task' | 'update_task' | 'move_task' | 'delete_task' | 'set_chain' | 'get_chain' | 'claim_task' | 'release_task' | 'assign_task' | 'mark_assignment' | 'heartbeat_assignment' | 'recover_stale' | 'events' | 'queue_health' | 'add_dependency' | 'add_goal_metric' | 'update_goal_metric' | 'add_check' | 'update_check' | 'add_note' | 'add_link';
4
4
  interface KanbanToolInput extends Omit<AssignKanbanTaskInput, 'status'> {
5
5
  action: KanbanAction;
6
6
  boardId?: string | undefined;
@@ -14,6 +14,7 @@ interface KanbanToolInput extends Omit<AssignKanbanTaskInput, 'status'> {
14
14
  tags?: string[] | undefined;
15
15
  labels?: string[] | undefined;
16
16
  priority?: KanbanTaskPriority | undefined;
17
+ taskType?: KanbanTaskType | undefined;
17
18
  status?: KanbanTaskStatus | undefined;
18
19
  order?: number | undefined;
19
20
  targetColumnId?: string | undefined;
@@ -85,6 +86,10 @@ interface KanbanToolInput extends Omit<AssignKanbanTaskInput, 'status'> {
85
86
  includeArchived?: boolean | undefined;
86
87
  archiveMissingTasks?: boolean | undefined;
87
88
  preserveManualDependencies?: boolean | undefined;
89
+ /** Full dependency id list for add_task/update_task (superset of dependencyTaskId). */
90
+ dependsOn?: string[] | undefined;
91
+ /** Estimated effort in hours for add_task/update_task. */
92
+ estimatedHours?: number | undefined;
88
93
  }
89
94
  interface KanbanToolOutput {
90
95
  ok: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"kanban.d.ts","sourceRoot":"","sources":["../src/kanban.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kanban.d.ts","sourceRoot":"","sources":["../src/kanban.ts"],"names":[],"mappings":"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"}
package/dist/kanban.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/kanban.ts
2
- import { deserializeTaskGraph, serializeTaskGraph } from "@wrongstack/core";
2
+ import { deserializeTaskGraph as deserializeTaskGraph2, loadTasks as loadTasks2, serializeTaskGraph } from "@wrongstack/core";
3
3
  import {
4
4
  addCheckToTask,
5
5
  addColumn,
@@ -11,18 +11,19 @@ import {
11
11
  assignTask,
12
12
  claimReadyTask,
13
13
  copyTaskToBoard,
14
- createBoard,
14
+ createBoard as createBoard2,
15
+ createBoardFromTaskGraph,
15
16
  duplicateBoard,
16
17
  exportBoardAsMarkdown,
17
18
  exportBoardToTaskGraph,
18
19
  generateBoardFromDescription,
19
- getBoard,
20
+ getBoard as getBoard2,
20
21
  getKanbanOrchestrationSnapshot,
21
22
  getKanbanQueueHealth,
22
23
  getTask,
23
24
  getTaskChain,
24
25
  heartbeatTaskAssignment,
25
- listBoards,
26
+ listBoards as listBoards2,
26
27
  listKanbanEvents,
27
28
  listReadyTasks,
28
29
  mergeTasks,
@@ -30,21 +31,76 @@ import {
30
31
  parseLinesIntoTasks,
31
32
  recoverStaleTaskAssignments,
32
33
  releaseTaskClaim,
33
- removeBoard,
34
+ removeBoard as removeBoard2,
34
35
  removeColumn,
35
36
  removeTask,
36
37
  searchKanban,
37
38
  setTaskChain,
38
39
  splitTask,
39
- syncBoardFromTaskGraph,
40
+ syncBoardFromTaskGraph as syncBoardFromTaskGraph2,
40
41
  transferTaskToBoard,
41
- updateBoard,
42
+ updateBoard as updateBoard2,
42
43
  updateCheckOnTask,
43
44
  updateColumn,
44
45
  updateGoalMetricOnTask,
45
46
  updateTask,
46
47
  updateTaskAssignment
47
48
  } from "@wrongstack/kanban";
49
+
50
+ // src/session-kanban.ts
51
+ import {
52
+ deserializeTaskGraph,
53
+ loadPlan,
54
+ loadTasks,
55
+ mutatePlan,
56
+ mutateTasks
57
+ } from "@wrongstack/core";
58
+ import {
59
+ createBoard,
60
+ getBoard,
61
+ listBoards,
62
+ removeBoard,
63
+ syncBoardFromTaskGraph,
64
+ updateBoard
65
+ } from "@wrongstack/kanban";
66
+ function taskFileToSerializedGraph(tasks, sessionId) {
67
+ const ids = new Set(tasks.map((task) => task.id));
68
+ const nodes = tasks.map((task, index) => ({
69
+ id: task.id,
70
+ title: task.title,
71
+ description: task.description ?? "",
72
+ type: task.type,
73
+ priority: task.priority,
74
+ status: task.status,
75
+ ...task.assignee ? { assignee: task.assignee } : {},
76
+ ...task.estimateHours !== void 0 ? { estimateHours: task.estimateHours } : {},
77
+ createdAt: index,
78
+ updatedAt: index
79
+ }));
80
+ const edges = tasks.flatMap(
81
+ (task) => (task.dependsOn ?? []).filter((dependency) => ids.has(dependency)).map((dependency) => ({
82
+ id: `${dependency}->${task.id}`,
83
+ from: dependency,
84
+ to: task.id,
85
+ type: "depends_on"
86
+ }))
87
+ );
88
+ const hasIncoming = new Set(edges.map((edge) => edge.to));
89
+ const rootNodes = nodes.filter((node) => !hasIncoming.has(node.id)).map((node) => node.id);
90
+ return {
91
+ // Keep the historical graph id so existing mirrored task cards are reused.
92
+ id: `session:${sessionId}`,
93
+ specId: `session:${sessionId}`,
94
+ title: "Session tasks",
95
+ nodes,
96
+ edges,
97
+ rootNodes: rootNodes.length ? rootNodes : nodes[0] ? [nodes[0].id] : [],
98
+ createdAt: 0,
99
+ updatedAt: 0
100
+ };
101
+ }
102
+
103
+ // src/kanban.ts
48
104
  var kanbanTool = {
49
105
  name: "kanban",
50
106
  category: "Project",
@@ -71,6 +127,8 @@ var kanbanTool = {
71
127
  "export_markdown",
72
128
  "export_task_graph",
73
129
  "sync_task_graph",
130
+ "create_from_graph",
131
+ "import_session_tasks",
74
132
  "search_tasks",
75
133
  "ready_tasks",
76
134
  "snapshot",
@@ -117,6 +175,10 @@ var kanbanTool = {
117
175
  tags: { type: "array", items: { type: "string" } },
118
176
  labels: { type: "array", items: { type: "string" } },
119
177
  priority: { type: "string", enum: ["critical", "high", "medium", "low"] },
178
+ taskType: {
179
+ type: "string",
180
+ enum: ["feature", "bugfix", "refactor", "docs", "test", "chore"]
181
+ },
120
182
  status: {
121
183
  type: "string",
122
184
  enum: [
@@ -159,8 +221,21 @@ var kanbanTool = {
159
221
  releaseStatus: { type: "string", enum: ["pending", "ready", "blocked"] },
160
222
  releaseReason: { type: "string" },
161
223
  clearAssignee: { type: "boolean" },
162
- recoveryMode: { type: "string", enum: ["release", "retry", "fail"] },
224
+ recoveryMode: { type: "string", enum: ["auto", "release", "retry", "fail"] },
163
225
  recoveryNow: { type: "string" },
226
+ recoveryPolicyFailOnCostCeiling: { type: "boolean" },
227
+ recoveryPolicyReleaseOnFailureKinds: { type: "array", items: { type: "string" } },
228
+ recoveryPolicyReleaseOnHeartbeatDue: { type: "boolean" },
229
+ recoveryPolicyRetryPolicyOverride: {
230
+ type: "string",
231
+ enum: ["off", "incremental", "exponential"]
232
+ },
233
+ assignee: { type: "string" },
234
+ costCeilingUsd: { type: "number" },
235
+ retryPolicy: { type: "string", enum: ["off", "incremental", "exponential"] },
236
+ lastFailureKind: { type: "string" },
237
+ dependsOn: { type: "array", items: { type: "string" } },
238
+ estimatedHours: { type: "number" },
164
239
  taskGraph: { type: "object" },
165
240
  graphId: { type: "string" },
166
241
  specId: { type: "string" },
@@ -216,7 +291,7 @@ var kanbanTool = {
216
291
  try {
217
292
  switch (input.action) {
218
293
  case "list_boards": {
219
- const boards = await listBoards(projectRoot);
294
+ const boards = await listBoards2(projectRoot);
220
295
  return { ok: true, message: `${boards.length} board(s).`, boards };
221
296
  }
222
297
  case "get_board": {
@@ -225,7 +300,7 @@ var kanbanTool = {
225
300
  }
226
301
  case "create_board": {
227
302
  if (!input.title) return fail("create_board requires title.");
228
- const board = await createBoard(projectRoot, {
303
+ const board = await createBoard2(projectRoot, {
229
304
  title: input.title,
230
305
  ...input.description !== void 0 ? { description: input.description } : {},
231
306
  ...input.tags !== void 0 ? { tags: input.tags } : {},
@@ -235,7 +310,7 @@ var kanbanTool = {
235
310
  }
236
311
  case "update_board": {
237
312
  if (!input.boardId) return fail("update_board requires boardId.");
238
- const board = await updateBoard(projectRoot, input.boardId, {
313
+ const board = await updateBoard2(projectRoot, input.boardId, {
239
314
  ...input.title !== void 0 ? { title: input.title } : {},
240
315
  ...input.description !== void 0 ? { description: input.description } : {},
241
316
  ...input.tags !== void 0 ? { tags: input.tags } : {}
@@ -255,7 +330,7 @@ var kanbanTool = {
255
330
  }
256
331
  case "delete_board": {
257
332
  if (!input.boardId) return fail("delete_board requires boardId.");
258
- const removed = await removeBoard(projectRoot, input.boardId);
333
+ const removed = await removeBoard2(projectRoot, input.boardId);
259
334
  return { ok: removed, message: removed ? "Board deleted." : "Board not found." };
260
335
  }
261
336
  case "generate_board": {
@@ -266,14 +341,14 @@ var kanbanTool = {
266
341
  ...input.context !== void 0 ? { context: input.context } : {},
267
342
  ...input.columns !== void 0 ? { columns: input.columns } : {}
268
343
  });
269
- const board = await createBoard(projectRoot, boardInput);
344
+ const board = await createBoard2(projectRoot, boardInput);
270
345
  for (const taskInput2 of parseLinesIntoTasks(
271
346
  input.description,
272
347
  board.columns[0]?.id ?? "backlog"
273
348
  )) {
274
349
  await addTask(projectRoot, board.id, taskInput2);
275
350
  }
276
- return okBoard(await getBoard(projectRoot, board.id) ?? board, "Board generated.");
351
+ return okBoard(await getBoard2(projectRoot, board.id) ?? board, "Board generated.");
277
352
  }
278
353
  case "export_markdown": {
279
354
  const board = await requireBoard(projectRoot, input.boardId);
@@ -306,8 +381,8 @@ var kanbanTool = {
306
381
  if (!input.boardId || !input.taskGraph) {
307
382
  return fail("sync_task_graph requires boardId and taskGraph.");
308
383
  }
309
- const graph = deserializeTaskGraph(input.taskGraph);
310
- const result = await syncBoardFromTaskGraph(projectRoot, input.boardId, graph, {
384
+ const graph = deserializeTaskGraph2(input.taskGraph);
385
+ const result = await syncBoardFromTaskGraph2(projectRoot, input.boardId, graph, {
311
386
  ...input.title !== void 0 ? { title: input.title } : {},
312
387
  ...input.description !== void 0 ? { description: input.description } : {},
313
388
  ...input.tags !== void 0 ? { tags: input.tags } : {},
@@ -324,6 +399,59 @@ var kanbanTool = {
324
399
  board: result.board
325
400
  } : fail("Board not found.");
326
401
  }
402
+ case "create_from_graph": {
403
+ if (!input.taskGraph) return fail("create_from_graph requires taskGraph.");
404
+ const graph = deserializeTaskGraph2(input.taskGraph);
405
+ const { board } = await createBoardFromTaskGraph(projectRoot, graph, {
406
+ ...input.title !== void 0 ? { title: input.title } : {},
407
+ ...input.description !== void 0 ? { description: input.description } : {},
408
+ ...input.tags !== void 0 ? { tags: input.tags } : {},
409
+ ...input.generatedBy !== void 0 ? { generatedBy: input.generatedBy } : {},
410
+ ...input.sourceSystem !== void 0 ? { sourceSystem: input.sourceSystem } : {},
411
+ ...input.phaseId !== void 0 ? { phaseId: input.phaseId } : {},
412
+ ...input.includeCompletedTasks !== void 0 ? { includeCompletedTasks: input.includeCompletedTasks } : {}
413
+ });
414
+ return {
415
+ ok: true,
416
+ message: `Created board "${board.title}" from task graph with ${board.tasks.length} tasks.`,
417
+ board
418
+ };
419
+ }
420
+ case "import_session_tasks": {
421
+ const taskPath = ctx.meta?.["task.path"];
422
+ if (!taskPath) return fail("No session task file for this session.");
423
+ const file = await loadTasks2(taskPath);
424
+ if (!file || file.tasks.length === 0) return fail("No session tasks to import.");
425
+ const sessionId = ctx.session?.id ?? file.sessionId ?? "session";
426
+ const graph = deserializeTaskGraph2(taskFileToSerializedGraph(file.tasks, sessionId));
427
+ const tags = ["session", `session:${sessionId}`];
428
+ const existing = (await listBoards2(projectRoot)).find(
429
+ (b) => b.tags?.includes(`session:${sessionId}`)
430
+ );
431
+ if (existing) {
432
+ const result = await syncBoardFromTaskGraph2(projectRoot, existing.id, graph, {
433
+ sourceSystem: "session",
434
+ tags,
435
+ archiveMissingTasks: true,
436
+ includeCompletedTasks: true
437
+ });
438
+ return result ? {
439
+ ok: true,
440
+ message: `Synced ${file.tasks.length} session tasks into board "${result.board.title}".`,
441
+ board: result.board
442
+ } : fail("Session board vanished mid-sync.");
443
+ }
444
+ const { board } = await createBoardFromTaskGraph(projectRoot, graph, {
445
+ title: `Session tasks (${sessionId.slice(0, 8)})`,
446
+ sourceSystem: "session",
447
+ tags
448
+ });
449
+ return {
450
+ ok: true,
451
+ message: `Imported ${file.tasks.length} session tasks into new board "${board.title}".`,
452
+ board
453
+ };
454
+ }
327
455
  case "search_tasks": {
328
456
  const tasks = await searchKanban(projectRoot, {
329
457
  query: input.query,
@@ -760,7 +888,7 @@ function okTask(board, task, message) {
760
888
  return { ok: true, message, board, task };
761
889
  }
762
890
  async function requireBoard(projectRoot, boardId) {
763
- return boardId ? getBoard(projectRoot, boardId) : null;
891
+ return boardId ? getBoard2(projectRoot, boardId) : null;
764
892
  }
765
893
  function taskInput(input) {
766
894
  const assignment = hasAssignmentInput(input) ? assignmentForTaskCreate(input) : void 0;
@@ -769,14 +897,23 @@ function taskInput(input) {
769
897
  columnId: input.columnId,
770
898
  description: input.description,
771
899
  priority: input.priority,
900
+ ...input.taskType !== void 0 ? { type: input.taskType } : {},
772
901
  status: input.status,
773
902
  labels: input.labels,
774
903
  ...assignment?.agentId ?? assignment?.role ?? assignment?.name ? { assignedAgent: assignment.agentId ?? assignment.role ?? assignment.name } : {},
775
904
  ...input.assignee ?? assignment?.name ?? assignment?.agentId ? { assignee: input.assignee ?? assignment?.name ?? assignment?.agentId } : {},
776
- ...input.dependencyTaskId !== void 0 ? { dependsOn: [input.dependencyTaskId] } : {},
905
+ ...mergedDependsOn(input) ? { dependsOn: mergedDependsOn(input) } : {},
906
+ ...input.estimatedHours !== void 0 ? { estimatedHours: input.estimatedHours } : {},
777
907
  ...assignment ? { assignment } : {}
778
908
  };
779
909
  }
910
+ function mergedDependsOn(input) {
911
+ const ids = [
912
+ ...input.dependsOn ?? [],
913
+ ...input.dependencyTaskId !== void 0 ? [input.dependencyTaskId] : []
914
+ ].filter((id, i, arr) => id && arr.indexOf(id) === i);
915
+ return ids.length > 0 ? ids : void 0;
916
+ }
780
917
  function taskPatch(input) {
781
918
  return {
782
919
  title: input.title,
@@ -784,10 +921,12 @@ function taskPatch(input) {
784
921
  columnId: input.columnId,
785
922
  order: input.order,
786
923
  priority: input.priority,
924
+ ...input.taskType !== void 0 ? { type: input.taskType } : {},
787
925
  status: input.status,
788
926
  labels: input.labels,
789
927
  assignedAgent: input.agentId,
790
- ...input.dependencyTaskId !== void 0 ? { dependsOn: [input.dependencyTaskId] } : {}
928
+ ...mergedDependsOn(input) ? { dependsOn: mergedDependsOn(input) } : {},
929
+ ...input.estimatedHours !== void 0 ? { estimatedHours: input.estimatedHours } : {}
791
930
  };
792
931
  }
793
932
  function assignmentInput(input) {