@clipboard-health/groundcrew 4.49.4 → 4.50.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.
- package/dist/commands/resumeWorkspace.d.ts.map +1 -1
- package/dist/commands/resumeWorkspace.js +24 -1
- package/dist/commands/setupWorkspace.d.ts.map +1 -1
- package/dist/commands/setupWorkspace.js +1 -0
- package/dist/lib/agentLaunch.d.ts +1 -0
- package/dist/lib/agentLaunch.d.ts.map +1 -1
- package/dist/lib/agentLaunch.js +5 -1
- package/dist/lib/cmuxAdapter.d.ts.map +1 -1
- package/dist/lib/cmuxAdapter.js +53 -15
- package/dist/lib/workspaceAdapter.d.ts +2 -0
- package/dist/lib/workspaceAdapter.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resumeWorkspace.d.ts","sourceRoot":"","sources":["../../src/commands/resumeWorkspace.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoC,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAsBzF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"resumeWorkspace.d.ts","sourceRoot":"","sources":["../../src/commands/resumeWorkspace.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoC,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAsBzF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAoMD,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAmGf;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtE"}
|
|
@@ -6,7 +6,7 @@ import { composeAgentLaunch, openAgentWorkspace, prepareAgentLaunch } from "../l
|
|
|
6
6
|
import { inferAgentCommandName, withResumeArgs, workerEnvironmentForTask, } from "../lib/launchCommand.js";
|
|
7
7
|
import { readRunState, recordRunState } from "../lib/runState.js";
|
|
8
8
|
import { seedLaunchWorkspaceTrust } from "../lib/seedLaunchWorkspaceTrust.js";
|
|
9
|
-
import { taskSupportsCompletionCommand } from "../lib/sourceCapabilities.js";
|
|
9
|
+
import { summarizeSource, taskSupportsCompletionCommand } from "../lib/sourceCapabilities.js";
|
|
10
10
|
import { removeStagedPrompt, stageBuildSecrets, stagePromptText, stageWorkspaceLaunchCommand, } from "../lib/stagedLaunch.js";
|
|
11
11
|
import { taskSourceWritePathsForCompletion } from "../lib/taskSourceFilesystem.js";
|
|
12
12
|
import { naturalIdFromCanonical, toCanonicalId } from "../lib/taskSource.js";
|
|
@@ -35,6 +35,7 @@ async function fetchTaskDetails(task) {
|
|
|
35
35
|
return {
|
|
36
36
|
title: issue.title,
|
|
37
37
|
description: issue.description ?? "",
|
|
38
|
+
url: issue.url,
|
|
38
39
|
};
|
|
39
40
|
}
|
|
40
41
|
catch (error) {
|
|
@@ -52,6 +53,7 @@ async function contextFromLinear(config, task, worktree) {
|
|
|
52
53
|
worktree,
|
|
53
54
|
title: resolved.title,
|
|
54
55
|
description: resolved.description,
|
|
56
|
+
url: resolved.url,
|
|
55
57
|
completionTaskId,
|
|
56
58
|
completionMarkDoneSupported: taskSupportsCompletionCommand({
|
|
57
59
|
rawSources: sourcesFromConfig(config),
|
|
@@ -66,6 +68,8 @@ async function contextFromState(config, task, state, worktree) {
|
|
|
66
68
|
// enrich the prompt title/description (which falls back to the task id).
|
|
67
69
|
const details = isLinearEnabled(config) ? await fetchTaskDetails(task) : undefined;
|
|
68
70
|
const completionTaskId = state.completionTaskId ?? task;
|
|
71
|
+
const url = state.url ??
|
|
72
|
+
(taskUsesLinearSource({ config, taskId: completionTaskId }) ? details?.url : undefined);
|
|
69
73
|
return {
|
|
70
74
|
task,
|
|
71
75
|
repository: state.repository,
|
|
@@ -76,6 +80,7 @@ async function contextFromState(config, task, state, worktree) {
|
|
|
76
80
|
worktree: { ...worktree, branchName: state.branchName },
|
|
77
81
|
title: details?.title ?? state.title ?? task.toUpperCase(),
|
|
78
82
|
description: details?.description ?? "",
|
|
83
|
+
...(url === undefined ? {} : { url }),
|
|
79
84
|
completionTaskId,
|
|
80
85
|
completionMarkDoneSupported: taskSupportsCompletionCommand({
|
|
81
86
|
rawSources: sourcesFromConfig(config),
|
|
@@ -85,6 +90,22 @@ async function contextFromState(config, task, state, worktree) {
|
|
|
85
90
|
resumeCount: state.resumeCount,
|
|
86
91
|
};
|
|
87
92
|
}
|
|
93
|
+
function taskUsesLinearSource(arguments_) {
|
|
94
|
+
const { config, taskId } = arguments_;
|
|
95
|
+
const rawSources = sourcesFromConfig(config);
|
|
96
|
+
const colonIndex = taskId.indexOf(":");
|
|
97
|
+
if (colonIndex === -1) {
|
|
98
|
+
const [singleSource] = rawSources;
|
|
99
|
+
return (rawSources.length === 1 &&
|
|
100
|
+
singleSource !== undefined &&
|
|
101
|
+
summarizeSource(singleSource).kind === "linear");
|
|
102
|
+
}
|
|
103
|
+
const sourceName = taskId.slice(0, colonIndex);
|
|
104
|
+
return rawSources.some((rawSource) => {
|
|
105
|
+
const source = summarizeSource(rawSource);
|
|
106
|
+
return source.name === sourceName && source.kind === "linear";
|
|
107
|
+
});
|
|
108
|
+
}
|
|
88
109
|
async function buildResumeContext(config, task) {
|
|
89
110
|
const state = readRunState(config, task);
|
|
90
111
|
const entries = worktrees.findByTask(config, task);
|
|
@@ -208,6 +229,7 @@ export async function resumeWorkspace(config, options) {
|
|
|
208
229
|
config,
|
|
209
230
|
name: task,
|
|
210
231
|
displayName: context.title,
|
|
232
|
+
...(context.url === undefined ? {} : { url: context.url }),
|
|
211
233
|
cwd: launchDir,
|
|
212
234
|
command: launchCmd,
|
|
213
235
|
agent: context.agent,
|
|
@@ -231,6 +253,7 @@ export async function resumeWorkspace(config, options) {
|
|
|
231
253
|
state: "resumed",
|
|
232
254
|
resumeCount: context.resumeCount + 1,
|
|
233
255
|
completionTaskId: context.completionTaskId,
|
|
256
|
+
...(context.url === undefined ? {} : { url: context.url }),
|
|
234
257
|
...(context.reason === undefined ? {} : { reason: context.reason }),
|
|
235
258
|
},
|
|
236
259
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupWorkspace.d.ts","sourceRoot":"","sources":["../../src/commands/setupWorkspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAiBnE,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAUxF,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6FAA6F;IAC7F,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAuBD,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,qBAAqB,EAC9B,UAAU,GAAE,wBAA6B,GACxC,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"setupWorkspace.d.ts","sourceRoot":"","sources":["../../src/commands/setupWorkspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAiBnE,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAUxF,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6FAA6F;IAC7F,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAuBD,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,qBAAqB,EAC9B,UAAU,GAAE,wBAA6B,GACxC,OAAO,CAAC,IAAI,CAAC,CA2Jf;AAiOD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,IAAI,CAAC,CAyDf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentLaunch.d.ts","sourceRoot":"","sources":["../../src/lib/agentLaunch.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAW5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE,oBAAoB,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,eAAe,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,iCAAiC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvD,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAClD,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACxD,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,mBAAmB,CAgDtB;
|
|
1
|
+
{"version":3,"file":"agentLaunch.d.ts","sourceRoot":"","sources":["../../src/lib/agentLaunch.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAW5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE,oBAAoB,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,eAAe,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,iCAAiC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvD,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAClD,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACxD,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,mBAAmB,CAgDtB;AAqHD,UAAU,mBAAmB;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,iFAAiF;IACjF,aAAa,EAAE,oBAAoB,CAAC;IACpC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAsD/B;AAwBD,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAchB"}
|
package/dist/lib/agentLaunch.js
CHANGED
|
@@ -94,6 +94,10 @@ function safehouseAgentIntegrationFor(input) {
|
|
|
94
94
|
homeDir: input.homeDir,
|
|
95
95
|
});
|
|
96
96
|
return {
|
|
97
|
+
addDirs: [
|
|
98
|
+
...cmuxIntegration.addDirs,
|
|
99
|
+
...(relocatedCmuxHooksHome === undefined ? [] : [relocatedCmuxHooksHome.configDir]),
|
|
100
|
+
],
|
|
97
101
|
addDirsReadOnly: cmuxIntegration.addDirsReadOnly,
|
|
98
102
|
envPass: cmuxIntegration.envPass,
|
|
99
103
|
commandPreludes: [
|
|
@@ -115,7 +119,6 @@ function safehouseAgentIntegrationFor(input) {
|
|
|
115
119
|
...(relocatedCmuxHooksHome === undefined
|
|
116
120
|
? {}
|
|
117
121
|
: {
|
|
118
|
-
addDirs: [relocatedCmuxHooksHome.configDir],
|
|
119
122
|
writeBackFiles: relocatedCmuxHooksHome.writeBackFiles,
|
|
120
123
|
teardownPaths: [relocatedCmuxHooksHome.parentDir],
|
|
121
124
|
}),
|
|
@@ -224,6 +227,7 @@ export async function openAgentWorkspace(input) {
|
|
|
224
227
|
const spec = {
|
|
225
228
|
name: input.name,
|
|
226
229
|
...(panelTitle === undefined ? {} : { displayName: panelTitle }),
|
|
230
|
+
...(input.url === undefined ? {} : { url: input.url }),
|
|
227
231
|
cwd: input.cwd,
|
|
228
232
|
command: input.command,
|
|
229
233
|
status: { text: input.agent, color: input.color, icon: "sparkle" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmuxAdapter.d.ts","sourceRoot":"","sources":["../../src/lib/cmuxAdapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,OAAO,EAKb,MAAM,uBAAuB,CAAC;AAG/B,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"cmuxAdapter.d.ts","sourceRoot":"","sources":["../../src/lib/cmuxAdapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,OAAO,EAKb,MAAM,uBAAuB,CAAC;AAG/B,eAAO,MAAM,WAAW,EAAE,OAsFzB,CAAC"}
|
package/dist/lib/cmuxAdapter.js
CHANGED
|
@@ -31,18 +31,24 @@ export const cmuxAdapter = {
|
|
|
31
31
|
log(`cmux new-workspace returned unrecognized output for ${spec.name}; if a workspace was created, run \`cmux close-workspace\` manually.`);
|
|
32
32
|
throw new Error(`Unexpected cmux output: ${output}`);
|
|
33
33
|
}
|
|
34
|
+
if (spec.url !== undefined) {
|
|
35
|
+
await applyCmuxStatusBestEffort({
|
|
36
|
+
workspaceId,
|
|
37
|
+
key: "task",
|
|
38
|
+
status: { text: cmuxTaskLinkText(spec.url) },
|
|
39
|
+
format: "markdown",
|
|
40
|
+
workspaceName: spec.name,
|
|
41
|
+
signal,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
34
44
|
if (spec.status !== undefined) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (!isCmuxSetStatusUnsupported(error)) {
|
|
43
|
-
debug(`cmux set-status failed for ${spec.name} (continuing): ${errorMessage(error)}`);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
45
|
+
await applyCmuxStatusBestEffort({
|
|
46
|
+
workspaceId,
|
|
47
|
+
key: "agent",
|
|
48
|
+
status: spec.status,
|
|
49
|
+
workspaceName: spec.name,
|
|
50
|
+
signal,
|
|
51
|
+
});
|
|
46
52
|
}
|
|
47
53
|
},
|
|
48
54
|
async list(signal) {
|
|
@@ -166,16 +172,48 @@ function extractCmuxOpenId(output) {
|
|
|
166
172
|
const match = /workspace:\d+/.exec(output);
|
|
167
173
|
return match ? match[0] : undefined;
|
|
168
174
|
}
|
|
169
|
-
async function
|
|
170
|
-
|
|
175
|
+
async function applyCmuxStatusBestEffort(input) {
|
|
176
|
+
try {
|
|
177
|
+
await applyCmuxStatus(input);
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
// Sidebar metadata is best-effort. cmux v2+ dropped `set-status` entirely,
|
|
181
|
+
// so swallow that specific gap silently; surface anything else so a real
|
|
182
|
+
// regression doesn't hide behind the same swallow.
|
|
183
|
+
if (!isCmuxSetStatusUnsupported(error)) {
|
|
184
|
+
debug(`cmux set-status failed for ${input.workspaceName} (continuing): ${errorMessage(error)}`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
async function applyCmuxStatus(input) {
|
|
189
|
+
const arguments_ = ["set-status", input.key, input.status.text];
|
|
190
|
+
const { status } = input;
|
|
171
191
|
if (status.icon !== undefined) {
|
|
172
192
|
arguments_.push("--icon", status.icon);
|
|
173
193
|
}
|
|
174
194
|
if (status.color !== undefined) {
|
|
175
195
|
arguments_.push("--color", status.color);
|
|
176
196
|
}
|
|
177
|
-
|
|
178
|
-
|
|
197
|
+
if (input.format !== undefined) {
|
|
198
|
+
arguments_.push("--format", input.format);
|
|
199
|
+
}
|
|
200
|
+
arguments_.push("--workspace", input.workspaceId);
|
|
201
|
+
await runWorkspaceCommand("cmux", arguments_, input.signal);
|
|
202
|
+
}
|
|
203
|
+
function cmuxTaskLinkText(url) {
|
|
204
|
+
let label;
|
|
205
|
+
try {
|
|
206
|
+
label = new URL(url).hostname === "linear.app" ? "Linear ↗" : "Issue ↗";
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
label = "Issue ↗";
|
|
210
|
+
}
|
|
211
|
+
const markdownUrl = url
|
|
212
|
+
.replaceAll("\\", "\\\\")
|
|
213
|
+
.replaceAll(")", "\\)")
|
|
214
|
+
.replaceAll("\r", "%0D")
|
|
215
|
+
.replaceAll("\n", "%0A");
|
|
216
|
+
return `[${label}](${markdownUrl})`;
|
|
179
217
|
}
|
|
180
218
|
/**
|
|
181
219
|
* Closes every workspace sharing the requested marker. Closes run sequentially:
|
|
@@ -27,6 +27,8 @@ export interface OpenSpec {
|
|
|
27
27
|
name: string;
|
|
28
28
|
/** Optional cmux panel title; other adapters may ignore it. Cmux keeps `name` as the identity marker. */
|
|
29
29
|
displayName?: string;
|
|
30
|
+
/** Optional source-provided URL used by cmux to link the task metadata. */
|
|
31
|
+
url?: string;
|
|
30
32
|
/** Working directory the workspace runs in. */
|
|
31
33
|
cwd: string;
|
|
32
34
|
/** Shell string the workspace executes (host setup + agent exec). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaceAdapter.d.ts","sourceRoot":"","sources":["../../src/lib/workspaceAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,SAAS;IACxB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,oGAAoG;IACpG,IAAI,EAAE,MAAM,CAAC;IACb,yGAAyG;IACzG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7C,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7C,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D;;;;;OAKG;IACH,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;IACjE,0DAA0D;IAC1D,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7E;;;OAGG;IACH,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,mBAAmB,GAAG,SAAS,CAAC;CAC/D;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAE7D"}
|
|
1
|
+
{"version":3,"file":"workspaceAdapter.d.ts","sourceRoot":"","sources":["../../src/lib/workspaceAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,SAAS;IACxB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,oGAAoG;IACpG,IAAI,EAAE,MAAM,CAAC;IACb,yGAAyG;IACzG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7C,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7C,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D;;;;;OAKG;IACH,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;IACjE,0DAA0D;IAC1D,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7E;;;OAGG;IACH,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,mBAAmB,GAAG,SAAS,CAAC;CAC/D;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAE7D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clipboard-health/groundcrew",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.50.0",
|
|
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",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"verify": "node scripts/verifyAll.mts"
|
|
70
70
|
},
|
|
71
71
|
"dependencies": {
|
|
72
|
-
"@clipboard-health/clearance": "1.6.
|
|
72
|
+
"@clipboard-health/clearance": "1.6.6",
|
|
73
73
|
"@linear/sdk": "89.0.0",
|
|
74
74
|
"agent-trust": "1.0.0",
|
|
75
75
|
"cosmiconfig": "9.0.2",
|