@wrongstack/tools 0.289.0 → 0.291.1

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 (46) hide show
  1. package/dist/auto-proceed-loop-guard.d.ts +128 -0
  2. package/dist/auto-proceed-loop-guard.d.ts.map +1 -0
  3. package/dist/auto-proceed-loop-guard.js +46 -0
  4. package/dist/auto-proceed-loop-guard.js.map +7 -0
  5. package/dist/bash-kill-guard.d.ts +10 -1
  6. package/dist/bash-kill-guard.d.ts.map +1 -1
  7. package/dist/bash.js +140 -14
  8. package/dist/bash.js.map +2 -2
  9. package/dist/builtin.js +662 -203
  10. package/dist/builtin.js.map +4 -4
  11. package/dist/codebase-index/background-indexer.d.ts +1 -1
  12. package/dist/codebase-index/background-indexer.d.ts.map +1 -1
  13. package/dist/codebase-index/index.js +181 -104
  14. package/dist/codebase-index/index.js.map +3 -3
  15. package/dist/codebase-index/indexer.d.ts.map +1 -1
  16. package/dist/codebase-index/refs-extractor.d.ts +2 -17
  17. package/dist/codebase-index/refs-extractor.d.ts.map +1 -1
  18. package/dist/codebase-index/ts-parser.d.ts.map +1 -1
  19. package/dist/codebase-index/worker.js +164 -96
  20. package/dist/codebase-index/worker.js.map +3 -3
  21. package/dist/codebase-index/writer.d.ts +33 -0
  22. package/dist/codebase-index/writer.d.ts.map +1 -1
  23. package/dist/exec-kill-guard.d.ts +29 -0
  24. package/dist/exec-kill-guard.d.ts.map +1 -0
  25. package/dist/exec.d.ts.map +1 -1
  26. package/dist/exec.js +670 -10
  27. package/dist/exec.js.map +4 -4
  28. package/dist/index.d.ts +1 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +765 -237
  31. package/dist/index.js.map +4 -4
  32. package/dist/kanban.d.ts +10 -0
  33. package/dist/kanban.d.ts.map +1 -1
  34. package/dist/kanban.js +34 -17
  35. package/dist/kanban.js.map +2 -2
  36. package/dist/pack.js +662 -203
  37. package/dist/pack.js.map +4 -4
  38. package/dist/plan.js.map +2 -2
  39. package/dist/read.d.ts.map +1 -1
  40. package/dist/read.js.map +2 -2
  41. package/dist/session-kanban.d.ts.map +1 -1
  42. package/dist/session-kanban.js +60 -3
  43. package/dist/session-kanban.js.map +2 -2
  44. package/dist/task.js.map +2 -2
  45. package/dist/todo.js.map +2 -2
  46. package/package.json +9 -5
package/dist/kanban.d.ts CHANGED
@@ -56,6 +56,16 @@ interface KanbanToolInput extends Omit<AssignKanbanTaskInput, 'status'> {
56
56
  preserveAssignment?: boolean | undefined;
57
57
  preserveDependencies?: boolean | undefined;
58
58
  leaseId?: string | undefined;
59
+ /**
60
+ * Ownership fence. When set on `mark_assignment` / `heartbeat_assignment`,
61
+ * the assignment is only mutated if `task.assignment.leaseId` still matches
62
+ * this value (checked atomically inside the board mutation lock). This lets
63
+ * a worker prove it still owns the lease before renewing or finalizing, and
64
+ * makes a stale worker that was recovered+reassigned a safe no-op rather
65
+ * than a TOCTOU gap that overwrites the successor's state. Omit for legacy
66
+ * unconditional behavior.
67
+ */
68
+ expectedLeaseId?: string | undefined;
59
69
  claimedAt?: string | undefined;
60
70
  heartbeatAt?: string | undefined;
61
71
  leaseExpiresAt?: string | undefined;
@@ -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
@@ -17,7 +17,7 @@ import {
17
17
  duplicateBoard,
18
18
  exportBoardAsMarkdown,
19
19
  exportBoardToTaskGraph,
20
- generateBoardFromDescription,
20
+ createBoardFromText,
21
21
  getBoard as getBoard2,
22
22
  getKanbanOrchestrationSnapshot,
23
23
  getKanbanQueueHealth,
@@ -373,7 +373,7 @@ var kanbanTool = {
373
373
  }
374
374
  case "generate_board": {
375
375
  if (!input.description) return fail("generate_board requires description.");
376
- const boardInput = generateBoardFromDescription({
376
+ const boardInput = createBoardFromText({
377
377
  description: input.description,
378
378
  ...input.title !== void 0 ? { title: input.title } : {},
379
379
  ...input.context !== void 0 ? { context: input.context } : {},
@@ -758,20 +758,31 @@ var kanbanTool = {
758
758
  if (!input.boardId || !input.taskId)
759
759
  return fail("mark_assignment requires boardId and taskId.");
760
760
  const assignmentStatus = input.assignmentStatus ?? (input.status === "completed" ? "completed" : input.error ? "failed" : void 0);
761
- const board = await updateTaskAssignment(projectRoot, input.boardId, input.taskId, {
762
- ...assignmentStatus !== void 0 ? { status: assignmentStatus } : {},
763
- ...input.subagentId !== void 0 ? { subagentId: input.subagentId } : {},
764
- ...input.runTaskId !== void 0 ? { runTaskId: input.runTaskId } : {},
765
- ...input.lastResult !== void 0 ? { lastResult: input.lastResult } : {},
766
- ...input.error !== void 0 ? { error: input.error } : {},
767
- ...input.agentId !== void 0 ? { agentId: input.agentId } : {},
768
- ...input.leaseId !== void 0 ? { leaseId: input.leaseId } : {},
769
- ...input.claimedAt !== void 0 ? { claimedAt: input.claimedAt } : {},
770
- ...input.heartbeatAt !== void 0 ? { heartbeatAt: input.heartbeatAt } : {},
771
- ...input.leaseExpiresAt !== void 0 ? { leaseExpiresAt: input.leaseExpiresAt } : {},
772
- ...input.attempt !== void 0 ? { attempt: input.attempt } : {},
773
- ...input.maxAttempts !== void 0 ? { maxAttempts: input.maxAttempts } : {}
774
- });
761
+ const board = await updateTaskAssignment(
762
+ projectRoot,
763
+ input.boardId,
764
+ input.taskId,
765
+ {
766
+ ...assignmentStatus !== void 0 ? { status: assignmentStatus } : {},
767
+ ...input.subagentId !== void 0 ? { subagentId: input.subagentId } : {},
768
+ ...input.runTaskId !== void 0 ? { runTaskId: input.runTaskId } : {},
769
+ ...input.lastResult !== void 0 ? { lastResult: input.lastResult } : {},
770
+ ...input.error !== void 0 ? { error: input.error } : {},
771
+ ...input.agentId !== void 0 ? { agentId: input.agentId } : {},
772
+ ...input.leaseId !== void 0 ? { leaseId: input.leaseId } : {},
773
+ ...input.claimedAt !== void 0 ? { claimedAt: input.claimedAt } : {},
774
+ ...input.heartbeatAt !== void 0 ? { heartbeatAt: input.heartbeatAt } : {},
775
+ ...input.leaseExpiresAt !== void 0 ? { leaseExpiresAt: input.leaseExpiresAt } : {},
776
+ ...input.attempt !== void 0 ? { attempt: input.attempt } : {},
777
+ ...input.maxAttempts !== void 0 ? { maxAttempts: input.maxAttempts } : {}
778
+ },
779
+ // Ownership fence: when expectedLeaseId is supplied, the write is
780
+ // applied only if the current assignment still holds this lease.
781
+ // This prevents a recovered+reassigned stale worker's terminal
782
+ // mark_assignment from overwriting the successor's state. The check
783
+ // is atomic inside updateTaskAssignment's mutateBoard lock.
784
+ input.expectedLeaseId !== void 0 ? { expectedLeaseId: input.expectedLeaseId } : {}
785
+ );
775
786
  return board ? okBoard(board, "Assignment updated.") : fail("Task not found.");
776
787
  }
777
788
  case "heartbeat_assignment": {
@@ -780,7 +791,13 @@ var kanbanTool = {
780
791
  }
781
792
  const board = await heartbeatTaskAssignment(projectRoot, input.boardId, input.taskId, {
782
793
  ...input.heartbeatAt !== void 0 ? { heartbeatAt: input.heartbeatAt } : {},
783
- ...input.leaseExpiresAt !== void 0 ? { leaseExpiresAt: input.leaseExpiresAt } : {}
794
+ ...input.leaseExpiresAt !== void 0 ? { leaseExpiresAt: input.leaseExpiresAt } : {},
795
+ // Ownership fence: when expectedLeaseId is supplied, the renewal
796
+ // is applied only if the current assignment still holds this lease.
797
+ // This prevents a recovered+reassigned stale worker's heartbeat
798
+ // from renewing the successor's lease. The check is atomic inside
799
+ // heartbeatTaskAssignment's mutateBoard lock.
800
+ ...input.expectedLeaseId !== void 0 ? { expectedLeaseId: input.expectedLeaseId } : {}
784
801
  });
785
802
  return board ? okBoard(board, "Assignment heartbeat updated.") : fail("Task assignment not found.");
786
803
  }