@sealant/mend 0.34.4 → 0.35.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.
Files changed (79) hide show
  1. package/dist/{chunk-AAAXHRWL.js → chunk-SMH65F6Z.js} +59 -8
  2. package/dist/{dashboard-DWXXYFPE.js → dashboard-MGR4YUFD.js} +1 -1
  3. package/dist/main.js +401 -265
  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 +8 -4
  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,
@@ -27910,6 +27926,30 @@ var HotWorkspace = class extends Schema_exports.Class("HotWorkspace")({
27910
27926
  }) {
27911
27927
  };
27912
27928
 
27929
+ // ../../packages/domain/src/workbench/notifications.ts
27930
+ var NotificationKind = Schema_exports.Literals(["finished", "needs-input", "failed"]);
27931
+ var NotificationSettings = class extends Schema_exports.Class(
27932
+ "NotificationSettings"
27933
+ )({
27934
+ /**
27935
+ * Sessions started from Slack push what their thread already shows. Off by default: the thread
27936
+ * says it, and the phone would say it twice. A failure pushes either way, because the thread
27937
+ * marks it only by editing its status line and reacting ❌, which Slack does not notify.
27938
+ */
27939
+ slackSessions: Schema_exports.Boolean,
27940
+ turnFinished: Schema_exports.Boolean,
27941
+ needsInput: Schema_exports.Boolean,
27942
+ failed: Schema_exports.Boolean
27943
+ }) {
27944
+ };
27945
+ var DEFAULT_NOTIFICATION_SETTINGS = new NotificationSettings({
27946
+ slackSessions: false,
27947
+ turnFinished: true,
27948
+ needsInput: true,
27949
+ failed: true
27950
+ });
27951
+ var SlackThreadReach = Schema_exports.Literals(["replies", "status", "none"]);
27952
+
27913
27953
  // ../../packages/domain/src/workbench/link.ts
27914
27954
  var ProjectLink = class extends Schema_exports.Class("ProjectLink")({
27915
27955
  id: ProjectLinkId,
@@ -27964,7 +28004,7 @@ var ProjectClusterBindingsSnapshot = class extends Schema_exports.Class(
27964
28004
  }) {
27965
28005
  };
27966
28006
 
27967
- // ../../node_modules/.pnpm/@sealant+api-contracts@0.38.0_effect@4.0.0-beta.93/node_modules/@sealant/api-contracts/dist/workspace-environment.js
28007
+ // ../../node_modules/.pnpm/@sealant+api-contracts@0.38.1_effect@4.0.0-beta.93/node_modules/@sealant/api-contracts/dist/workspace-environment.js
27968
28008
  var RESERVED_NAMES = new Map([
27969
28009
  // Identity/process roots the daemon and shells own.
27970
28010
  ...[
@@ -28125,6 +28165,15 @@ var SessionProcess = class extends Schema_exports.Class("SessionProcess")({
28125
28165
  /** Services: the host port Mend binds on its private interfaces. */
28126
28166
  hostPort: Schema_exports.NullOr(Schema_exports.Int),
28127
28167
  createdAt: Timestamp,
28168
+ /**
28169
+ * When the process's record first carried output: the first screen an agent drew. Null while
28170
+ * it has drawn nothing, for a process with no run of ours, and on rows from before it was
28171
+ * observed. Older servers omit it.
28172
+ */
28173
+ firstOutputAt: Schema_exports.NullOr(Timestamp).pipe(
28174
+ Schema_exports.withDecodingDefaultKey(Effect_exports.succeed(null)),
28175
+ Schema_exports.withConstructorDefault(Effect_exports.succeed(null))
28176
+ ),
28128
28177
  exitedAt: Schema_exports.NullOr(Timestamp),
28129
28178
  updatedAt: Timestamp
28130
28179
  }) {
@@ -28915,6 +28964,8 @@ var eventFamilies = (payload) => {
28915
28964
  };
28916
28965
 
28917
28966
  export {
28967
+ agentStartingLine,
28968
+ agentStartingFacts,
28918
28969
  repositoryCloneUrlIssue,
28919
28970
  RepositoryCloneUrl,
28920
28971
  landingFactsFromWire,
@@ -15,7 +15,7 @@ import {
15
15
  pendingId,
16
16
  repositoryCloneUrlIssue,
17
17
  servicesHoldLine
18
- } from "./chunk-AAAXHRWL.js";
18
+ } from "./chunk-SMH65F6Z.js";
19
19
 
20
20
  // src/dashboard.tsx
21
21
  import { CliRenderEvents, createCliRenderer } from "@opentui/core";