@clipboard-health/groundcrew 4.52.2 → 4.52.4

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.
@@ -61,7 +61,7 @@ export const cmuxAdapter = {
61
61
  // cmux v2 `workspace.close` rejects titles, so forwarding `name`
62
62
  // would always fail. The list failure has already been logged by
63
63
  // `listCmuxRaw`; bail rather than guarantee a downstream error.
64
- debug(`cmux close-workspace skipped for ${name}: list-workspaces failed, no usable id`);
64
+ debug(`cmux close-workspace skipped for ${name}: workspace list failed, no usable id`);
65
65
  return { kind: "unavailable" };
66
66
  }
67
67
  const matches = raw.filter((ws) => cmuxTaskId(ws) === name);
@@ -108,7 +108,7 @@ function cmuxTaskId(ws) {
108
108
  return ws.title;
109
109
  }
110
110
  function parseCmuxList(output) {
111
- // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- cmux --json list-workspaces always emits this shape
111
+ // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- cmux --json workspace list always emits this shape
112
112
  const parsed = JSON.parse(output);
113
113
  const items = [];
114
114
  /* v8 ignore next @preserve -- cmux always emits a workspaces field; default keeps the loop safe */
@@ -118,7 +118,7 @@ function parseCmuxList(output) {
118
118
  }
119
119
  const id = pickCmuxId(ws);
120
120
  if (id === undefined) {
121
- debug(`cmux list-workspaces returned workspace "${ws.title}" without a usable id or ref; skipping`);
121
+ debug(`cmux workspace list returned workspace "${ws.title}" without a usable id or ref; skipping`);
122
122
  continue;
123
123
  }
124
124
  items.push({ title: ws.title, id, description: ws.description ?? null });
@@ -143,13 +143,13 @@ function pickCmuxId(ws) {
143
143
  }
144
144
  async function listCmuxRaw(signal) {
145
145
  try {
146
- return parseCmuxList(await runWorkspaceCommand("cmux", ["--json", "list-workspaces"], signal));
146
+ return parseCmuxList(await runWorkspaceCommand("cmux", ["--json", "workspace", "list"], signal));
147
147
  }
148
148
  catch (error) {
149
149
  if (isSignalAborted(signal)) {
150
150
  throw error;
151
151
  }
152
- debug(`cmux list-workspaces failed: ${errorMessage(error)}`);
152
+ debug(`cmux workspace list failed: ${errorMessage(error)}`);
153
153
  return undefined;
154
154
  }
155
155
  }
@@ -277,7 +277,7 @@ async function closeCmuxWorkspace(workspaceId, signal) {
277
277
  * The id rides along in the failed command's captured output, so recover it and
278
278
  * close that exact workspace by id — a failed launch must not strand an orphan
279
279
  * tagged with the task's `groundcrew:<taskId>` marker. Closing by the recovered
280
- * id needs no `list-workspaces`, so it survives a concurrent list failure that
280
+ * id needs no workspace list, so it survives a concurrent list failure that
281
281
  * would defeat re-enumeration. Re-enumeration close is unsafe here anyway; we
282
282
  * hold the precise id cmux returned, so there is no same-named-sibling risk.
283
283
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clipboard-health/groundcrew",
3
- "version": "4.52.2",
3
+ "version": "4.52.4",
4
4
  "description": "Linear-driven orchestrator that launches AI coding agents in git worktrees, with workspace lifecycle and usage tracking.",
5
5
  "keywords": [
6
6
  "agent",
@@ -70,34 +70,34 @@
70
70
  },
71
71
  "dependencies": {
72
72
  "@clipboard-health/clearance": "1.8.3",
73
- "@linear/sdk": "95.0.0",
73
+ "@linear/sdk": "96.0.0",
74
74
  "agent-trust": "1.0.0",
75
75
  "cosmiconfig": "10.0.1",
76
76
  "tslib": "2.8.1",
77
77
  "zod": "4.6.5"
78
78
  },
79
79
  "devDependencies": {
80
- "@clipboard-health/ai-rules": "2.46.2",
80
+ "@clipboard-health/ai-rules": "2.50.17",
81
81
  "@clipboard-health/oxlint-config": "1.14.3",
82
82
  "@nx/js": "23.1.0",
83
83
  "@tsconfig/node24": "24.0.5",
84
84
  "@tsconfig/strictest": "2.0.8",
85
85
  "@types/node": "26.5.1",
86
86
  "@typescript/native-preview": "7.0.0-dev.20260707.2",
87
- "@vitest/coverage-v8": "5.0.0",
87
+ "@vitest/coverage-v8": "5.0.1",
88
88
  "dependency-cruiser": "18.3.1",
89
89
  "husky": "9.1.7",
90
90
  "jscpd": "5.2.1",
91
91
  "knip": "6.35.1",
92
92
  "lint-staged": "17.5.1",
93
- "markdownlint-cli2": "0.23.2",
93
+ "markdownlint-cli2": "0.23.3",
94
94
  "nx": "23.1.0",
95
95
  "oxfmt": "0.63.0",
96
96
  "oxlint": "1.78.0",
97
- "oxlint-tsgolint": "7.0.2001",
97
+ "oxlint-tsgolint": "7.0.2002",
98
98
  "syncpack": "15.3.3",
99
99
  "vite": "8.3.0",
100
- "vitest": "5.0.0"
100
+ "vitest": "5.0.1"
101
101
  },
102
102
  "engines": {
103
103
  "node": "24.14.1",