@sealant/mend 0.24.0 → 0.24.2
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/{dashboard-YEU7SDYB.js → dashboard-JIWYW3EM.js} +24 -7
- package/dist/main.js +22 -4
- package/man/mend-accounts.1 +1 -1
- package/man/mend-adopt.1 +1 -1
- package/man/mend-attach.1 +1 -1
- package/man/mend-codex.1 +1 -1
- package/man/mend-completions.1 +1 -1
- package/man/mend-connect.1 +1 -1
- package/man/mend-continue.1 +1 -1
- package/man/mend-doctor.1 +1 -1
- package/man/mend-dotfiles-sync.1 +1 -1
- package/man/mend-dotfiles.1 +1 -1
- package/man/mend-env-cluster.1 +1 -1
- package/man/mend-env-load.1 +1 -1
- package/man/mend-env-show.1 +1 -1
- package/man/mend-help.1 +1 -1
- package/man/mend-keys-init.1 +1 -1
- package/man/mend-keys-mode.1 +1 -1
- package/man/mend-keys-share.1 +1 -1
- package/man/mend-keys-show.1 +1 -1
- package/man/mend-login.1 +1 -1
- package/man/mend-logout.1 +1 -1
- package/man/mend-man.1 +1 -1
- package/man/mend-pair.1 +1 -1
- package/man/mend-projects.1 +1 -1
- package/man/mend-refresh.1 +1 -1
- package/man/mend-rejoin.1 +1 -1
- package/man/mend-resume.1 +1 -1
- package/man/mend-run.1 +1 -1
- package/man/mend-server-logs.1 +1 -1
- package/man/mend-server-restart.1 +1 -1
- package/man/mend-server-setup.1 +1 -1
- package/man/mend-server-start.1 +1 -1
- package/man/mend-server-status.1 +1 -1
- package/man/mend-server-stop.1 +1 -1
- package/man/mend-server-upgrade.1 +1 -1
- package/man/mend-server.1 +1 -1
- package/man/mend-service-add.1 +1 -1
- package/man/mend-service-connect.1 +1 -1
- package/man/mend-service-init.1 +1 -1
- package/man/mend-service-list.1 +1 -1
- package/man/mend-service-logs.1 +1 -1
- package/man/mend-service-restart.1 +1 -1
- package/man/mend-service-run.1 +1 -1
- package/man/mend-service-stop.1 +1 -1
- package/man/mend-sessions.1 +1 -1
- package/man/mend-shell.1 +1 -1
- package/man/mend-skills-push.1 +1 -1
- package/man/mend-skills.1 +1 -1
- package/man/mend-ssh-setup.1 +1 -1
- package/man/mend-ssh.1 +1 -1
- package/man/mend-stop.1 +1 -1
- package/man/mend-ui.1 +1 -1
- package/man/mend-version.1 +1 -1
- package/man/mend-worktrees.1 +1 -1
- package/man/mend.1 +1 -1
- package/package.json +1 -1
|
@@ -227,6 +227,13 @@ var foldGroupStatus = (group) => {
|
|
|
227
227
|
};
|
|
228
228
|
var liveShellOf = (processes) => processes.findLast((process2) => process2.kind === "shell" && process2.exitedAt === null) ?? null;
|
|
229
229
|
var liveProtocolOf = (processes) => processes.find((process2) => process2.kind === "agent-protocol" && process2.exitedAt === null) ?? null;
|
|
230
|
+
var enterTargetOf = (sessions) => {
|
|
231
|
+
const live = sessions.filter((session) => LIVE_STATUSES.has(session.status));
|
|
232
|
+
const attachable = live.find((session) => session.status !== "starting");
|
|
233
|
+
if (attachable !== void 0) return { kind: "attach", session: attachable };
|
|
234
|
+
const starting = live[0];
|
|
235
|
+
return starting === void 0 ? { kind: "none" } : { kind: "wait", session: starting };
|
|
236
|
+
};
|
|
230
237
|
var markSessionStopped = (data, sessionId) => {
|
|
231
238
|
const processesBySession = new Map(data.processesBySession);
|
|
232
239
|
processesBySession.delete(sessionId);
|
|
@@ -2349,6 +2356,11 @@ attached \xB7 ${session.harness} \xB7 ${short} \xB7 detach: Ctrl+]
|
|
|
2349
2356
|
const row = rows[next];
|
|
2350
2357
|
if (row !== void 0) setSessionKey(rowKeyOf(row));
|
|
2351
2358
|
};
|
|
2359
|
+
const sayStillStarting = (session) => {
|
|
2360
|
+
say(
|
|
2361
|
+
busy !== null ? `still starting \xB7 ${worktreeDisplayName(session)} \u2014 attaches when the workspace answers` : `still starting \xB7 ${worktreeDisplayName(session)} \u2014 enter attaches once the row reads running`
|
|
2362
|
+
);
|
|
2363
|
+
};
|
|
2352
2364
|
const activate = () => {
|
|
2353
2365
|
if (picker !== null) {
|
|
2354
2366
|
const choice = pickerItems[pickerIndex];
|
|
@@ -2375,11 +2387,11 @@ attached \xB7 ${session.harness} \xB7 ${short} \xB7 detach: Ctrl+]
|
|
|
2375
2387
|
return;
|
|
2376
2388
|
}
|
|
2377
2389
|
if (selectedRow?.kind === "worktree") {
|
|
2378
|
-
const
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
if (
|
|
2382
|
-
|
|
2390
|
+
const target2 = enterTargetOf(selectedRow.group.sessions.map((item2) => item2.session));
|
|
2391
|
+
if (target2.kind === "attach") {
|
|
2392
|
+
void attachFlow(target2.session);
|
|
2393
|
+
} else if (target2.kind === "wait") {
|
|
2394
|
+
sayStillStarting(target2.session);
|
|
2383
2395
|
} else if (selectedRow.group.id !== null) {
|
|
2384
2396
|
openPicker(null, selectedRow.group);
|
|
2385
2397
|
}
|
|
@@ -2389,8 +2401,13 @@ attached \xB7 ${session.harness} \xB7 ${short} \xB7 detach: Ctrl+]
|
|
|
2389
2401
|
if (item === null) return;
|
|
2390
2402
|
if (isPendingId(item.session.id)) {
|
|
2391
2403
|
say("still provisioning \u2014 the row fills in when the workspace answers");
|
|
2392
|
-
|
|
2393
|
-
|
|
2404
|
+
return;
|
|
2405
|
+
}
|
|
2406
|
+
const target = enterTargetOf([item.session]);
|
|
2407
|
+
if (target.kind === "attach") {
|
|
2408
|
+
void attachFlow(target.session);
|
|
2409
|
+
} else if (target.kind === "wait") {
|
|
2410
|
+
sayStillStarting(target.session);
|
|
2394
2411
|
} else {
|
|
2395
2412
|
openPicker(item.session);
|
|
2396
2413
|
}
|
package/dist/main.js
CHANGED
|
@@ -2190,6 +2190,14 @@ var runServerProcess = (command, args, parentEnvironment, options = {}) => {
|
|
|
2190
2190
|
error: "Invalid process timeout"
|
|
2191
2191
|
});
|
|
2192
2192
|
}
|
|
2193
|
+
if (options.stdoutFile !== void 0 && options.stdout === "inherit") {
|
|
2194
|
+
return Promise.resolve({
|
|
2195
|
+
status: null,
|
|
2196
|
+
stdout: "",
|
|
2197
|
+
stderr: "",
|
|
2198
|
+
error: "Invalid process output options"
|
|
2199
|
+
});
|
|
2200
|
+
}
|
|
2193
2201
|
const env = {};
|
|
2194
2202
|
for (const key of [
|
|
2195
2203
|
"PATH",
|
|
@@ -2213,7 +2221,7 @@ var runServerProcess = (command, args, parentEnvironment, options = {}) => {
|
|
|
2213
2221
|
const child = spawn2(command, [...args], {
|
|
2214
2222
|
env,
|
|
2215
2223
|
detached: process.platform !== "win32",
|
|
2216
|
-
stdio: ["ignore", fd ?? "pipe", "pipe"]
|
|
2224
|
+
stdio: ["ignore", fd ?? (options.stdout === "inherit" ? "inherit" : "pipe"), "pipe"]
|
|
2217
2225
|
});
|
|
2218
2226
|
let stdout = "";
|
|
2219
2227
|
let stderr = "";
|
|
@@ -3065,6 +3073,7 @@ var checkDocker = async (runtime, context) => {
|
|
|
3065
3073
|
return info.stdout.trim();
|
|
3066
3074
|
};
|
|
3067
3075
|
var resolveLatestVersion = async (runtime) => {
|
|
3076
|
+
runtime.writeLine("Resolving the latest Mend server release");
|
|
3068
3077
|
const response = await runtime.fetchText(LATEST_RELEASE_URL, 15e3);
|
|
3069
3078
|
if (response.error !== void 0 || response.status !== 200) {
|
|
3070
3079
|
throw setupError(
|
|
@@ -3231,6 +3240,7 @@ var probeHealth = async (runtime, appUrl, expectedVersion) => {
|
|
|
3231
3240
|
lastFailure = "health response is not valid JSON";
|
|
3232
3241
|
}
|
|
3233
3242
|
}
|
|
3243
|
+
if (attempt2 % 10 === 0) runtime.writeLine(`Waiting for ${healthUrl} (${lastFailure})`);
|
|
3234
3244
|
if (attempt2 < 29) await runtime.sleep(2e3);
|
|
3235
3245
|
}
|
|
3236
3246
|
throw setupError(
|
|
@@ -3298,6 +3308,7 @@ var resolveAssets = async (runtime, serverVersion, existing, store, options) =>
|
|
|
3298
3308
|
}
|
|
3299
3309
|
if (options.offline)
|
|
3300
3310
|
throw setupError("--offline needs --assets-dir or the retained assets for this exact version.");
|
|
3311
|
+
runtime.writeLine(`Downloading release assets for Mend ${serverVersion}`);
|
|
3301
3312
|
const [compose, postgresInit] = await Promise.all([
|
|
3302
3313
|
downloadAsset(runtime, serverVersion, COMPOSE_ASSET),
|
|
3303
3314
|
downloadAsset(runtime, serverVersion, POSTGRES_INIT_ASSET)
|
|
@@ -3310,8 +3321,10 @@ var inspectImage = async (runtime, context, image, format, policy) => {
|
|
|
3310
3321
|
const args = ["--context", context, "image", "inspect", image, "--format", format];
|
|
3311
3322
|
const inspected = await runtime.run("docker", args);
|
|
3312
3323
|
if (inspected.status === 0 || policy === "local") return inspected;
|
|
3324
|
+
runtime.writeLine(`Pulling ${image}`);
|
|
3313
3325
|
const pulled = await runtime.run("docker", ["--context", context, "pull", image], {
|
|
3314
|
-
timeoutMs: serverProcessDeadlines.pull
|
|
3326
|
+
timeoutMs: serverProcessDeadlines.pull,
|
|
3327
|
+
stdout: "inherit"
|
|
3315
3328
|
});
|
|
3316
3329
|
if (pulled.status !== 0) throw commandFailure(`Could not pull ${image}`, pulled);
|
|
3317
3330
|
return runtime.run("docker", args);
|
|
@@ -3361,7 +3374,11 @@ var checkComposeImages = async (runtime, installation) => {
|
|
|
3361
3374
|
);
|
|
3362
3375
|
}
|
|
3363
3376
|
};
|
|
3377
|
+
var startingNotice = (runtime, version) => runtime.writeLine(
|
|
3378
|
+
`Starting Mend ${version} containers; Docker waits up to ${serverProcessDeadlines.composeWaitSeconds}s for them to report healthy`
|
|
3379
|
+
);
|
|
3364
3380
|
var startCompose = async (runtime, config, generation) => {
|
|
3381
|
+
startingNotice(runtime, config.serverVersion);
|
|
3365
3382
|
const compose = await runtime.run(
|
|
3366
3383
|
"docker",
|
|
3367
3384
|
serverComposeArgs({ directory: generation.directory, dockerContext: config.dockerContext }, [
|
|
@@ -3396,6 +3413,7 @@ var setupServer = async (args, runtime, store) => {
|
|
|
3396
3413
|
options.context ?? existing?.config.dockerContext
|
|
3397
3414
|
);
|
|
3398
3415
|
const operatingSystem = await checkDocker(runtime, selectedContext.name);
|
|
3416
|
+
runtime.writeLine(`Using Docker context "${selectedContext.name}" (${selectedContext.endpoint})`);
|
|
3399
3417
|
const serverVersion = await resolveServerVersion(runtime, options, existing?.config ?? null);
|
|
3400
3418
|
const config = {
|
|
3401
3419
|
schemaVersion: CONFIG_SCHEMA_VERSION,
|
|
@@ -3420,7 +3438,6 @@ var setupServer = async (args, runtime, store) => {
|
|
|
3420
3438
|
if (ownership2._tag === "error") throw setupError(ownership2.error.message);
|
|
3421
3439
|
await checkLocalImages(runtime, config, options.offline ? "local" : "pull-missing");
|
|
3422
3440
|
storeValue(store.activate(generation));
|
|
3423
|
-
runtime.writeLine(`Using Docker context "${config.dockerContext}" (${config.dockerEndpoint})`);
|
|
3424
3441
|
await startCompose(runtime, config, generation);
|
|
3425
3442
|
await probeHealth(runtime, config.appUrl, config.serverVersion);
|
|
3426
3443
|
await verifyRegistry(runtime, config);
|
|
@@ -3498,6 +3515,7 @@ var verifyRegistry = async (runtime, config) => {
|
|
|
3498
3515
|
if (registry._tag === "error") throw setupError(registry.error.message);
|
|
3499
3516
|
};
|
|
3500
3517
|
var startInstallation = async (runtime, installation) => {
|
|
3518
|
+
startingNotice(runtime, installation.config.serverVersion);
|
|
3501
3519
|
await composeCommand(runtime, installation, [
|
|
3502
3520
|
"up",
|
|
3503
3521
|
"-d",
|
|
@@ -6864,7 +6882,7 @@ var dashboard = async (config) => {
|
|
|
6864
6882
|
);
|
|
6865
6883
|
process.exit(rerun.status ?? 0);
|
|
6866
6884
|
}
|
|
6867
|
-
const { runDashboard } = await import("./dashboard-
|
|
6885
|
+
const { runDashboard } = await import("./dashboard-JIWYW3EM.js");
|
|
6868
6886
|
const agentShare = await startShareIfBridge(config);
|
|
6869
6887
|
try {
|
|
6870
6888
|
await runDashboard({
|
package/man/mend-accounts.1
CHANGED
package/man/mend-adopt.1
CHANGED
package/man/mend-attach.1
CHANGED
package/man/mend-codex.1
CHANGED
package/man/mend-completions.1
CHANGED
package/man/mend-connect.1
CHANGED
package/man/mend-continue.1
CHANGED
package/man/mend-doctor.1
CHANGED
package/man/mend-dotfiles-sync.1
CHANGED
package/man/mend-dotfiles.1
CHANGED
package/man/mend-env-cluster.1
CHANGED
package/man/mend-env-load.1
CHANGED
package/man/mend-env-show.1
CHANGED
package/man/mend-help.1
CHANGED
package/man/mend-keys-init.1
CHANGED
package/man/mend-keys-mode.1
CHANGED
package/man/mend-keys-share.1
CHANGED
package/man/mend-keys-show.1
CHANGED
package/man/mend-login.1
CHANGED
package/man/mend-logout.1
CHANGED
package/man/mend-man.1
CHANGED
package/man/mend-pair.1
CHANGED
package/man/mend-projects.1
CHANGED
package/man/mend-refresh.1
CHANGED
package/man/mend-rejoin.1
CHANGED
package/man/mend-resume.1
CHANGED
package/man/mend-run.1
CHANGED
package/man/mend-server-logs.1
CHANGED
package/man/mend-server-setup.1
CHANGED
package/man/mend-server-start.1
CHANGED
package/man/mend-server-status.1
CHANGED
package/man/mend-server-stop.1
CHANGED
package/man/mend-server.1
CHANGED
package/man/mend-service-add.1
CHANGED
package/man/mend-service-init.1
CHANGED
package/man/mend-service-list.1
CHANGED
package/man/mend-service-logs.1
CHANGED
package/man/mend-service-run.1
CHANGED
package/man/mend-service-stop.1
CHANGED
package/man/mend-sessions.1
CHANGED
package/man/mend-shell.1
CHANGED
package/man/mend-skills-push.1
CHANGED
package/man/mend-skills.1
CHANGED
package/man/mend-ssh-setup.1
CHANGED
package/man/mend-ssh.1
CHANGED
package/man/mend-stop.1
CHANGED
package/man/mend-ui.1
CHANGED
package/man/mend-version.1
CHANGED
package/man/mend-worktrees.1
CHANGED
package/man/mend.1
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sealant/mend",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.2",
|
|
4
4
|
"description": "The mend CLI: adopt a repository into Mend's store, launch your coding agent in a recorded session worktree, detach and reattach from any terminal",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude-code",
|