@sealant/mend 0.34.4 → 0.34.5

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 (79) hide show
  1. package/dist/{chunk-AAAXHRWL.js → chunk-5DORQXQT.js} +34 -7
  2. package/dist/{dashboard-DWXXYFPE.js → dashboard-KZ4XGZ6W.js} +1 -1
  3. package/dist/main.js +60 -2
  4. package/man/mend-accounts.1 +1 -1
  5. package/man/mend-adopt.1 +1 -1
  6. package/man/mend-attach.1 +1 -1
  7. package/man/mend-codex.1 +1 -1
  8. package/man/mend-completions.1 +1 -1
  9. package/man/mend-connect.1 +1 -1
  10. package/man/mend-continue.1 +1 -1
  11. package/man/mend-doctor.1 +1 -1
  12. package/man/mend-dotfiles-repo.1 +1 -1
  13. package/man/mend-dotfiles-sync.1 +1 -1
  14. package/man/mend-dotfiles.1 +1 -1
  15. package/man/mend-env-cluster.1 +1 -1
  16. package/man/mend-env-load.1 +1 -1
  17. package/man/mend-env-show.1 +1 -1
  18. package/man/mend-folder-create.1 +1 -1
  19. package/man/mend-folder-list.1 +1 -1
  20. package/man/mend-folder-push.1 +1 -1
  21. package/man/mend-folder-rm.1 +1 -1
  22. package/man/mend-git-author.1 +1 -1
  23. package/man/mend-help.1 +1 -1
  24. package/man/mend-invite.1 +1 -1
  25. package/man/mend-keys-init.1 +1 -1
  26. package/man/mend-keys-mode.1 +1 -1
  27. package/man/mend-keys-share.1 +1 -1
  28. package/man/mend-keys-show.1 +1 -1
  29. package/man/mend-land.1 +1 -1
  30. package/man/mend-login.1 +1 -1
  31. package/man/mend-logout.1 +1 -1
  32. package/man/mend-man.1 +1 -1
  33. package/man/mend-members.1 +1 -1
  34. package/man/mend-operator-exposure.1 +1 -1
  35. package/man/mend-operator-gate.1 +1 -1
  36. package/man/mend-operator-grant-owner.1 +1 -1
  37. package/man/mend-operator-org-create.1 +1 -1
  38. package/man/mend-operator-org-invite-owner.1 +1 -1
  39. package/man/mend-operator-org-list.1 +1 -1
  40. package/man/mend-operator-org-rename.1 +1 -1
  41. package/man/mend-operator-reset-link.1 +1 -1
  42. package/man/mend-pair.1 +1 -1
  43. package/man/mend-projects.1 +1 -1
  44. package/man/mend-pull.1 +1 -1
  45. package/man/mend-refresh.1 +1 -1
  46. package/man/mend-rejoin.1 +1 -1
  47. package/man/mend-resume.1 +1 -1
  48. package/man/mend-run.1 +1 -1
  49. package/man/mend-server-logs.1 +1 -1
  50. package/man/mend-server-restart.1 +1 -1
  51. package/man/mend-server-setup.1 +1 -1
  52. package/man/mend-server-start.1 +1 -1
  53. package/man/mend-server-status.1 +1 -1
  54. package/man/mend-server-stop.1 +1 -1
  55. package/man/mend-server-upgrade.1 +1 -1
  56. package/man/mend-server.1 +1 -1
  57. package/man/mend-service-add.1 +1 -1
  58. package/man/mend-service-connect.1 +1 -1
  59. package/man/mend-service-init.1 +1 -1
  60. package/man/mend-service-list.1 +1 -1
  61. package/man/mend-service-logs.1 +1 -1
  62. package/man/mend-service-restart.1 +1 -1
  63. package/man/mend-service-run.1 +1 -1
  64. package/man/mend-service-stop.1 +1 -1
  65. package/man/mend-session-share.1 +1 -1
  66. package/man/mend-sessions.1 +1 -1
  67. package/man/mend-shell.1 +1 -1
  68. package/man/mend-skills-push.1 +1 -1
  69. package/man/mend-skills.1 +1 -1
  70. package/man/mend-snake.1 +1 -1
  71. package/man/mend-ssh-setup.1 +1 -1
  72. package/man/mend-ssh.1 +1 -1
  73. package/man/mend-stop.1 +1 -1
  74. package/man/mend-ui.1 +1 -1
  75. package/man/mend-uninstall.1 +1 -1
  76. package/man/mend-version.1 +1 -1
  77. package/man/mend-worktrees.1 +1 -1
  78. package/man/mend.1 +1 -1
  79. package/package.json +3 -3
@@ -4,6 +4,26 @@ var __export = (target, all3) => {
4
4
  __defProp(target, name, { get: all3[name], enumerable: true });
5
5
  };
6
6
 
7
+ // ../../packages/domain/src/workbench/harness-launch.ts
8
+ var EFFORT_LEVELS = ["low", "medium", "high", "xhigh", "max"];
9
+ var PERMISSION_MODES = ["bypass", "ask"];
10
+
11
+ // ../../packages/domain/src/workbench/agent-start.ts
12
+ var agentStartingLine = (label, facts, elapsedMs) => `${label} is starting${facts.freshMachine ? " on the new machine" : ""} \xB7 ${Math.max(0, Math.round(elapsedMs / 1e3))}s`;
13
+ var MAX_TRUSTED_ELAPSED_MS = 60 * 60 * 1e3;
14
+ var timeOf = (value3) => value3 === void 0 ? Number.NaN : typeof value3 === "string" ? Date.parse(value3) : value3.getTime();
15
+ var agentStartingFacts = (currentAgent, processes, now2) => {
16
+ if (currentAgent === null || currentAgent === void 0) {
17
+ return { startedAt: null, freshMachine: false };
18
+ }
19
+ const created = timeOf(currentAgent.createdAt);
20
+ const trusted = Number.isFinite(created) && created <= now2 && now2 - created <= MAX_TRUSTED_ELAPSED_MS;
21
+ const freshMachine = processes !== void 0 && currentAgent.sealantWorkspaceId !== void 0 && Number.isFinite(created) && !processes.some(
22
+ (process2) => process2.id !== currentAgent.id && process2.sealantWorkspaceId === currentAgent.sealantWorkspaceId && timeOf(process2.createdAt) < created
23
+ );
24
+ return { startedAt: trusted ? created : null, freshMachine };
25
+ };
26
+
7
27
  // ../../node_modules/.pnpm/effect@4.0.0-beta.93/node_modules/effect/dist/Pipeable.js
8
28
  var pipeArguments = (self, args2) => {
9
29
  switch (args2.length) {
@@ -27325,7 +27345,7 @@ var leftWords = (facts) => {
27325
27345
  return null;
27326
27346
  };
27327
27347
  var utcTime = (at) => `${at.toISOString().slice(11, 19)} UTC`;
27328
- var timeOf = (at) => {
27348
+ var timeOf2 = (at) => {
27329
27349
  if (at === null || at === void 0) return null;
27330
27350
  const date2 = typeof at === "string" ? new Date(at) : at;
27331
27351
  return Number.isNaN(date2.getTime()) ? null : date2;
@@ -27357,7 +27377,7 @@ var captureStatusLine = (facts) => {
27357
27377
  ].join(" \xB7 ");
27358
27378
  }
27359
27379
  if (overdue !== null) return overdue;
27360
- const failingSince = timeOf(facts.captureFailingSince);
27380
+ const failingSince = timeOf2(facts.captureFailingSince);
27361
27381
  if (failingSince !== null) {
27362
27382
  const error = facts.captureFailingError ?? null;
27363
27383
  return [
@@ -27366,7 +27386,7 @@ var captureStatusLine = (facts) => {
27366
27386
  ].join(" \xB7 ");
27367
27387
  }
27368
27388
  if ((facts.captureRefused ?? 0) > 0) return `not saved \xB7 ${facts.captureRefused} refused`;
27369
- const discardedAt = timeOf(facts.captureDiscardedAt);
27389
+ const discardedAt = timeOf2(facts.captureDiscardedAt);
27370
27390
  if (discardedAt !== null) {
27371
27391
  const by = facts.captureDiscardedBy ?? null;
27372
27392
  return `unsaved work discarded${by === null || by === "" ? "" : ` by ${by}`} at ${utcTime(discardedAt)}`;
@@ -27560,10 +27580,6 @@ var FollowUp = class extends Schema_exports.Class("FollowUp")({
27560
27580
  }) {
27561
27581
  };
27562
27582
 
27563
- // ../../packages/domain/src/workbench/harness-launch.ts
27564
- var EFFORT_LEVELS = ["low", "medium", "high", "xhigh", "max"];
27565
- var PERMISSION_MODES = ["bypass", "ask"];
27566
-
27567
27583
  // ../../packages/domain/src/workbench/mount.ts
27568
27584
  var ProjectMount = class extends Schema_exports.Class("ProjectMount")({
27569
27585
  id: ProjectMountId,
@@ -28125,6 +28141,15 @@ var SessionProcess = class extends Schema_exports.Class("SessionProcess")({
28125
28141
  /** Services: the host port Mend binds on its private interfaces. */
28126
28142
  hostPort: Schema_exports.NullOr(Schema_exports.Int),
28127
28143
  createdAt: Timestamp,
28144
+ /**
28145
+ * When the process's record first carried output: the first screen an agent drew. Null while
28146
+ * it has drawn nothing, for a process with no run of ours, and on rows from before it was
28147
+ * observed. Older servers omit it.
28148
+ */
28149
+ firstOutputAt: Schema_exports.NullOr(Timestamp).pipe(
28150
+ Schema_exports.withDecodingDefaultKey(Effect_exports.succeed(null)),
28151
+ Schema_exports.withConstructorDefault(Effect_exports.succeed(null))
28152
+ ),
28128
28153
  exitedAt: Schema_exports.NullOr(Timestamp),
28129
28154
  updatedAt: Timestamp
28130
28155
  }) {
@@ -28915,6 +28940,8 @@ var eventFamilies = (payload) => {
28915
28940
  };
28916
28941
 
28917
28942
  export {
28943
+ agentStartingLine,
28944
+ agentStartingFacts,
28918
28945
  repositoryCloneUrlIssue,
28919
28946
  RepositoryCloneUrl,
28920
28947
  landingFactsFromWire,
@@ -15,7 +15,7 @@ import {
15
15
  pendingId,
16
16
  repositoryCloneUrlIssue,
17
17
  servicesHoldLine
18
- } from "./chunk-AAAXHRWL.js";
18
+ } from "./chunk-5DORQXQT.js";
19
19
 
20
20
  // src/dashboard.tsx
21
21
  import { CliRenderEvents, createCliRenderer } from "@opentui/core";
package/dist/main.js CHANGED
@@ -6,6 +6,8 @@ import {
6
6
  MendRequestError,
7
7
  agentIsLive,
8
8
  agentOutcome,
9
+ agentStartingFacts,
10
+ agentStartingLine,
9
11
  captureLineOf,
10
12
  claudeGrantFacts,
11
13
  createSseParser,
@@ -32,7 +34,7 @@ import {
32
34
  sessionDisplayName,
33
35
  spoken,
34
36
  trackBracketedPaste
35
- } from "./chunk-AAAXHRWL.js";
37
+ } from "./chunk-5DORQXQT.js";
36
38
 
37
39
  // src/main.ts
38
40
  import { spawn as spawn3, spawnSync as spawnSync5 } from "node:child_process";
@@ -175,6 +177,45 @@ var startAgentShare = (options) => {
175
177
  };
176
178
  };
177
179
 
180
+ // src/attach-starting.ts
181
+ var startingLabelOf = (harness) => harness === "run" ? "the command" : harness === "shell" ? "the shell" : harness;
182
+ var CLEAR_LINE = "\r\x1B[2K";
183
+ var startingLine = (label, facts, elapsedMs, cancelHint) => `${CLEAR_LINE} ${agentStartingLine(label, facts, elapsedMs)}${cancelHint === "" ? "" : ` \xB7 ${cancelHint}`}`;
184
+ var firstOutputGate = (options) => {
185
+ const attachedAt = options.now();
186
+ let facts = { startedAt: null, freshMachine: false };
187
+ let shown = false;
188
+ let done = false;
189
+ let interval = null;
190
+ const draw = () => {
191
+ if (done) return;
192
+ shown = true;
193
+ const since = facts.startedAt ?? attachedAt;
194
+ options.write(startingLine(options.label, facts, options.now() - since, options.cancelHint));
195
+ };
196
+ const grace = setTimeout(() => {
197
+ draw();
198
+ interval = setInterval(draw, options.intervalMs ?? 1e3);
199
+ }, options.graceMs ?? 400);
200
+ const finish = () => {
201
+ if (done) return;
202
+ done = true;
203
+ clearTimeout(grace);
204
+ if (interval !== null) clearInterval(interval);
205
+ if (shown) options.write(CLEAR_LINE);
206
+ shown = false;
207
+ };
208
+ return {
209
+ pass: finish,
210
+ stop: finish,
211
+ update: (next) => {
212
+ facts = next;
213
+ if (shown) draw();
214
+ },
215
+ shown: () => shown
216
+ };
217
+ };
218
+
178
219
  // src/claude-grant.ts
179
220
  import { spawnSync } from "node:child_process";
180
221
  import { createHash } from "node:crypto";
@@ -8043,9 +8084,12 @@ var attachTty = async (config, sessionId, harness, from, processId, options) =>
8043
8084
  };
8044
8085
  const onWinch = () => sendResize();
8045
8086
  let bracketedPaste = false;
8087
+ let starting = null;
8046
8088
  const onTtyFrame = (event) => {
8047
8089
  if (typeof event.data !== "string") {
8048
8090
  const bytes = Buffer.from(event.data);
8091
+ if (bytes.length === 0) return;
8092
+ starting?.pass();
8049
8093
  bracketedPaste = trackBracketedPaste(bytes, bracketedPaste);
8050
8094
  process.stdout.write(bytes);
8051
8095
  return;
@@ -8156,6 +8200,19 @@ var attachTty = async (config, sessionId, harness, from, processId, options) =>
8156
8200
  if (connected === "unavailable") return "unavailable";
8157
8201
  if (connected === "aborted") return abortReason ?? "interrupted";
8158
8202
  ws = connected;
8203
+ if (interactive && processId === void 0 && process.stdout.isTTY === true) {
8204
+ const gate = firstOutputGate({
8205
+ label: startingLabelOf(harness),
8206
+ write: (text) => process.stdout.write(text),
8207
+ now: Date.now,
8208
+ cancelHint: detachKeyEnabled ? "Ctrl+] detaches" : ""
8209
+ });
8210
+ starting = gate;
8211
+ void request(config, "GET", `/sessions/${sessionId}`).then(
8212
+ (detail) => gate.update(agentStartingFacts(detail.currentAgent, detail.processes, Date.now())),
8213
+ () => void 0
8214
+ );
8215
+ }
8159
8216
  stopHerdrHint = hintHerdrAttachment(harness);
8160
8217
  const onClose = () => finishAttachment?.();
8161
8218
  if (ws.readyState === WebSocket.CLOSED) finishAttachment?.();
@@ -8169,6 +8226,7 @@ var attachTty = async (config, sessionId, harness, from, processId, options) =>
8169
8226
  return detached ? "detached" : interrupted ? "interrupted" : sawEnd ? "ended" : "dropped";
8170
8227
  } finally {
8171
8228
  stopConnecting();
8229
+ starting?.stop();
8172
8230
  for (const signal of signals) process.off(signal, onSignal);
8173
8231
  process.stdin.off("data", onKeys);
8174
8232
  process.stdout.off("resize", onWinch);
@@ -10380,7 +10438,7 @@ var dashboard = async (config, options = {}) => {
10380
10438
  );
10381
10439
  process.exit(rerun.status ?? 0);
10382
10440
  }
10383
- const { runDashboard } = await import("./dashboard-DWXXYFPE.js");
10441
+ const { runDashboard } = await import("./dashboard-KZ4XGZ6W.js");
10384
10442
  const agentShare = await startShareIfBridge(config);
10385
10443
  const tunnels = options.noTunnel === true || serverIsLocal(config) ? null : createServiceTunnels({
10386
10444
  listServices: () => fetchServices(config),
@@ -1,4 +1,4 @@
1
- .TH MEND-ACCOUNTS 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-ACCOUNTS 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-accounts \- your connected accounts on the platform
4
4
  .SH SYNOPSIS
package/man/mend-adopt.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-ADOPT 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-ADOPT 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-adopt \- adopt a repository into the store
4
4
  .SH SYNOPSIS
package/man/mend-attach.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-ATTACH 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-ATTACH 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-attach \- reattach this terminal to a running session
4
4
  .SH SYNOPSIS
package/man/mend-codex.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-CODEX 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-CODEX 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-codex \- launch codex, claude, or opencode in a recorded worktree
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-COMPLETIONS 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-COMPLETIONS 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-completions \- print the TAB\-completion hook
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-CONNECT 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-CONNECT 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-connect \- send this machine's provider credential to the platform
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-CONTINUE 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-CONTINUE 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-continue \- resume a session with its pending review follow\-up
4
4
  .SH SYNOPSIS
package/man/mend-doctor.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-DOCTOR 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-DOCTOR 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-doctor \- check this machine's setup, or bundle it for a bug report
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-DOTFILES-REPO 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-DOTFILES-REPO 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-dotfiles\-repo \- set or clear the repository the server clones at launch
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-DOTFILES-SYNC 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-DOTFILES-SYNC 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-dotfiles\-sync \- capture config files from this machine into your store
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-DOTFILES 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-DOTFILES 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-dotfiles \- your dotfiles on the server: repo and synced files
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-ENV-CLUSTER 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-ENV-CLUSTER 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-env\-cluster \- bind Kubernetes secrets and configmaps to the workspaces
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-ENV-LOAD 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-ENV-LOAD 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-env\-load \- load a .env into the project
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-ENV-SHOW 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-ENV-SHOW 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-env\-show \- what the project store holds: names only, never values
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-FOLDER-CREATE 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-FOLDER-CREATE 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-folder\-create \- create an organization folder
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-FOLDER-LIST 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-FOLDER-LIST 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-folder\-list \- list your organization's folders
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-FOLDER-PUSH 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-FOLDER-PUSH 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-folder\-push \- upload a local directory into a folder
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-FOLDER-RM 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-FOLDER-RM 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-folder\-rm \- remove an organization folder
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-GIT-AUTHOR 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-GIT-AUTHOR 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-git\-author \- the name and email your workspaces commit as
4
4
  .SH SYNOPSIS
package/man/mend-help.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-HELP 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-HELP 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-help \- this index, or one command's page
4
4
  .SH SYNOPSIS
package/man/mend-invite.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-INVITE 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-INVITE 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-invite \- print a one\-time link that adds someone to your organization
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-KEYS-INIT 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-KEYS-INIT 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-keys\-init \- create your Mend key (ed25519) on the server
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-KEYS-MODE 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-KEYS-MODE 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-keys\-mode \- how your remotes are reached: mend\-key or bridge
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-KEYS-SHARE 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-KEYS-SHARE 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-keys\-share \- relay this machine's ssh\-agent to the server
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-KEYS-SHOW 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-KEYS-SHOW 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-keys\-show \- print your Mend public key
4
4
  .SH SYNOPSIS
package/man/mend-land.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-LAND 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-LAND 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-land \- push a session's change to origin and open its pull request
4
4
  .SH SYNOPSIS
package/man/mend-login.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-LOGIN 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-LOGIN 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-login \- sign this terminal in through the browser
4
4
  .SH SYNOPSIS
package/man/mend-logout.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-LOGOUT 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-LOGOUT 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-logout \- revoke this terminal's device token and forget it
4
4
  .SH SYNOPSIS
package/man/mend-man.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-MAN 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-MAN 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-man \- one command's page, or the whole manual, in man
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-MEMBERS 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-MEMBERS 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-members \- who belongs to your organization, and their roles
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-OPERATOR-EXPOSURE 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-OPERATOR-EXPOSURE 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-operator\-exposure \- how this instance is exposed, as declared and as observed
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-OPERATOR-GATE 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-OPERATOR-GATE 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-operator\-gate \- what MEND_TENANCY=multi still needs on this instance
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-OPERATOR-GRANT-OWNER 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-OPERATOR-GRANT-OWNER 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-operator\-grant\-owner \- make an existing member an owner
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-OPERATOR-ORG-CREATE 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-OPERATOR-ORG-CREATE 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-operator\-org\-create \- create an organization (multi tenancy only)
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-OPERATOR-ORG-INVITE-OWNER 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-OPERATOR-ORG-INVITE-OWNER 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-operator\-org\-invite\-owner \- print a one\-time owner invitation for an organization
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-OPERATOR-ORG-LIST 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-OPERATOR-ORG-LIST 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-operator\-org\-list \- list organizations with their member and owner counts
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-OPERATOR-ORG-RENAME 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-OPERATOR-ORG-RENAME 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-operator\-org\-rename \- rename an organization
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-OPERATOR-RESET-LINK 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-OPERATOR-RESET-LINK 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-operator\-reset\-link \- print a one\-time password reset link for an account
4
4
  .SH SYNOPSIS
package/man/mend-pair.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-PAIR 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-PAIR 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-pair \- pair a phone or a second machine
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-PROJECTS 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-PROJECTS 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-projects \- adopted projects and their live sessions
4
4
  .SH SYNOPSIS
package/man/mend-pull.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-PULL 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-PULL 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-pull \- fetch a session's change into this clone as mend/<name>
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-REFRESH 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-REFRESH 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-refresh \- fetch origin's branches into the store
4
4
  .SH SYNOPSIS
package/man/mend-rejoin.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-REJOIN 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-REJOIN 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-rejoin \- attach if live, otherwise resume
4
4
  .SH SYNOPSIS
package/man/mend-resume.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-RESUME 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-RESUME 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-resume \- rejoin a settled session with its state restored
4
4
  .SH SYNOPSIS
package/man/mend-run.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-RUN 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-RUN 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-run \- run any command as a session
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVER-LOGS 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVER-LOGS 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-server\-logs \- print a bounded tail of the installation's container logs
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVER-RESTART 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVER-RESTART 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-server\-restart \- restart Mend using the same generation and pin
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVER-SETUP 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVER-SETUP 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-server\-setup \- install or repair the local Mend server
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVER-START 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVER-START 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-server\-start \- start the selected server generation
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVER-STATUS 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVER-STATUS 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-server\-status \- show the saved pin, generation and container state
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVER-STOP 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVER-STOP 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-server\-stop \- stop Mend, Postgres and Garage without deleting data
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVER-UPGRADE 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVER-UPGRADE 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-server\-upgrade \- upgrade to an explicit version with a database backup
4
4
  .SH SYNOPSIS
package/man/mend-server.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVER 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVER 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-server \- install and manage this machine's Mend server
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVICE-ADD 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVICE-ADD 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-service\-add \- adopt a port something in the workspace already listens on
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVICE-CONNECT 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVICE-CONNECT 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-service\-connect \- bring live Services to this machine's loopback
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVICE-INIT 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVICE-INIT 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-service\-init \- scaffold mend.toml from package.json and compose ports
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVICE-LIST 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVICE-LIST 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-service\-list \- every live service and its observed state
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVICE-LOGS 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVICE-LOGS 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-service\-logs \- follow a supervised service's output
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVICE-RESTART 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVICE-RESTART 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-service\-restart \- re\-run a service's recorded command, same URL
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVICE-RUN 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVICE-RUN 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-service\-run \- start and supervise a server in the session's workspace
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SERVICE-STOP 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SERVICE-STOP 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-service\-stop \- stop a service and close its host port
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SESSION-SHARE 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SESSION-SHARE 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-session\-share \- let everyone who can see a session steer it, or stop
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SESSIONS 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SESSIONS 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-sessions \- sessions with their review facts
4
4
  .SH SYNOPSIS
package/man/mend-shell.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-SHELL 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SHELL 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-shell \- open a shell in a live session's workspace
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SKILLS-PUSH 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SKILLS-PUSH 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-skills\-push \- upload ~/.agents/skills into the library
4
4
  .SH SYNOPSIS
package/man/mend-skills.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-SKILLS 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SKILLS 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-skills \- your skill library on the server, or a project's
4
4
  .SH SYNOPSIS
package/man/mend-snake.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-SNAKE 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SNAKE 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-snake \- the dashboard, with snake over it
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-SSH-SETUP 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SSH-SETUP 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-ssh\-setup \- make this machine ready to ssh into workspaces, once
4
4
  .SH SYNOPSIS
package/man/mend-ssh.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-SSH 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-SSH 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-ssh \- workspace SSH status: gateway, registered keys, ssh config
4
4
  .SH SYNOPSIS
package/man/mend-stop.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-STOP 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-STOP 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-stop \- stop the agent; the record and the review remain
4
4
  .SH SYNOPSIS
package/man/mend-ui.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND-UI 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-UI 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-ui \- the dashboard: every project and session, live
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-UNINSTALL 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-UNINSTALL 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-uninstall \- remove the server, this machine's Mend files, or both
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-VERSION 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-VERSION 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-version \- this CLI's version, and the server's when it answers
4
4
  .SH SYNOPSIS
@@ -1,4 +1,4 @@
1
- .TH MEND-WORKTREES 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND-WORKTREES 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend\-worktrees \- every worktree and the sessions inside it
4
4
  .SH SYNOPSIS
package/man/mend.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH MEND 1 "" "mend 0.34.4" "mend manual"
1
+ .TH MEND 1 "" "mend 0.34.5" "mend manual"
2
2
  .SH NAME
3
3
  mend \- the agent workbench
4
4
  .SH SYNOPSIS
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sealant/mend",
3
- "version": "0.34.4",
3
+ "version": "0.34.5",
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",
@@ -47,9 +47,9 @@
47
47
  "esbuild": "^0.28.1",
48
48
  "typescript": "^5.7.2",
49
49
  "vitest": "^3.0.5",
50
- "@mend/typescript": "0.0.0",
51
50
  "@mend/domain": "0.0.0",
52
- "@mend/workspace-ssh": "0.0.0"
51
+ "@mend/workspace-ssh": "0.0.0",
52
+ "@mend/typescript": "0.0.0"
53
53
  },
54
54
  "engines": {
55
55
  "node": ">=22"