@sema-agent/cli 1.0.49 → 1.0.51

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.
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@sema-agent/cli",
3
- "version": "1.0.49",
3
+ "version": "1.0.51",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@sema-agent/cli",
9
- "version": "1.0.49",
9
+ "version": "1.0.51",
10
10
  "license": "BUSL-1.1",
11
11
  "dependencies": {
12
- "@sema-agent/sdk": "0.0.68",
13
- "@sema-agent/server": "1.247.0"
12
+ "@sema-agent/sdk": "0.0.72",
13
+ "@sema-agent/server": "1.251.0"
14
14
  },
15
15
  "bin": {
16
16
  "sema": "sema.js"
@@ -629,9 +629,9 @@
629
629
  }
630
630
  },
631
631
  "node_modules/@sema-agent/core": {
632
- "version": "1.365.0",
633
- "resolved": "https://registry.npmjs.org/@sema-agent/core/-/core-1.365.0.tgz",
634
- "integrity": "sha512-9IIG426siB0NPa1mQive50hnj0f/BvkjT9tFqJUDxK+EXHl7WNhHeoeqDAfqA+nPw2jl/MhE8SpajOJi0IkM+A==",
632
+ "version": "1.371.0",
633
+ "resolved": "https://registry.npmjs.org/@sema-agent/core/-/core-1.371.0.tgz",
634
+ "integrity": "sha512-jYFtSRe7H88/RkYXqYmiviaGUwMsAHAF04hYdzYT1vzQmQDYyEAUqrBoZqFyrBxsRmTq6137MWY89Xsvj+0TGA==",
635
635
  "license": "BUSL-1.1",
636
636
  "dependencies": {
637
637
  "@modelcontextprotocol/sdk": "1.29.0",
@@ -669,21 +669,21 @@
669
669
  }
670
670
  },
671
671
  "node_modules/@sema-agent/sdk": {
672
- "version": "0.0.68",
673
- "resolved": "https://registry.npmjs.org/@sema-agent/sdk/-/sdk-0.0.68.tgz",
674
- "integrity": "sha512-76Ob7mQs+Dxavr/Tlr3mszIbEz6iekKEH/YbncrhUNIt/kZTXvxzAaAWABtfNvwgCRylvtJElr8QcVEHhZArbg==",
672
+ "version": "0.0.72",
673
+ "resolved": "https://registry.npmjs.org/@sema-agent/sdk/-/sdk-0.0.72.tgz",
674
+ "integrity": "sha512-XWkZe+Z9st8ZBex88fvCkYVph8LVJWh+xwMbmoWwNirQLq8OKNI9COdTqVKkYoKzmuwhuter15bi+ViMVQyCxQ==",
675
675
  "license": "BUSL-1.1",
676
676
  "engines": {
677
677
  "node": ">=20"
678
678
  }
679
679
  },
680
680
  "node_modules/@sema-agent/server": {
681
- "version": "1.247.0",
682
- "resolved": "https://registry.npmjs.org/@sema-agent/server/-/server-1.247.0.tgz",
683
- "integrity": "sha512-HWWigKaBmL346Uyt3sfZeepeq/CxjXKDBlrXu3noSU63wpeLid3B1OrRzGQgGjozq6mM1fihy3dU2w7x9W9cBA==",
681
+ "version": "1.251.0",
682
+ "resolved": "https://registry.npmjs.org/@sema-agent/server/-/server-1.251.0.tgz",
683
+ "integrity": "sha512-+8kdL9rxxKz0ut5UzMe7shc7jXIZqdmj5cO/xDZQosEs4nl9jeX5Jz0nkg1EWd7+XwOI6hACYAhQFaC/P5npaQ==",
684
684
  "license": "BUSL-1.1",
685
685
  "dependencies": {
686
- "@sema-agent/core": "^1.361.0",
686
+ "@sema-agent/core": "^1.370.0",
687
687
  "@sema-agent/registry-core": "^0.10.21",
688
688
  "e2b": "^2.28.0",
689
689
  "libsodium-wrappers": "^0.8.4",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sema-agent/cli",
3
- "version": "1.0.49",
3
+ "version": "1.0.51",
4
4
  "description": "Sema — your own Claude Code-grade coding agent, in the terminal.",
5
5
  "license": "BUSL-1.1",
6
6
  "bin": {
@@ -21,14 +21,14 @@
21
21
  "sema"
22
22
  ],
23
23
  "dependencies": {
24
- "@sema-agent/sdk": "0.0.68",
25
- "@sema-agent/server": "1.247.0"
24
+ "@sema-agent/sdk": "0.0.72",
25
+ "@sema-agent/server": "1.251.0"
26
26
  },
27
27
  "overrides": {
28
- "@sema-agent/core": "1.365.0",
28
+ "@sema-agent/core": "1.371.0",
29
29
  "@sema-agent/registry-core": "0.10.21"
30
30
  },
31
- "semaEngineVersion": "server 1.247.0 / core 1.365.0 / registry-core 0.10.21",
31
+ "semaEngineVersion": "server 1.251.0 / core 1.371.0 / registry-core 0.10.21",
32
32
  "engines": {
33
33
  "node": ">=18"
34
34
  }
package/sema.js CHANGED
@@ -430476,6 +430476,10 @@ function createLiveFleetSource(config4, now2 = Date.now()) {
430476
430476
  const viewingTaskId = getAppStateStoreRef()?.getState().viewingAgentTaskId;
430477
430477
  const liveRows = [...taskMap.values()].map((r) => {
430478
430478
  if (TERMINAL_FLEET_TASK_STATUSES.has(r.status ?? "")) return r;
430479
+ const started2 = r.startedAt;
430480
+ if (typeof started2 === "number" && started2 > 0 && started2 <= nowMs) {
430481
+ return { ...r, elapsedMs: nowMs - started2 };
430482
+ }
430479
430483
  const meta3 = rowMeta.get(r.id);
430480
430484
  if (!meta3) return r;
430481
430485
  const idle = Math.max(0, nowMs - meta3.receivedAt);
@@ -430508,6 +430512,11 @@ function createLiveFleetSource(config4, now2 = Date.now()) {
430508
430512
  sessionScopedMeta = typeof ss === "boolean" ? ss : void 0;
430509
430513
  const bfc = frame.bgNotifyFailClosed;
430510
430514
  bgNotifyFailClosedMeta = bfc === true;
430515
+ if (process.env.SEMA_DEBUG) {
430516
+ logForDebugging(
430517
+ `[fleet-frame] meta sessionScoped=${String(sessionScopedMeta)} bgNotifyFailClosed=${String(bgNotifyFailClosedMeta)}`
430518
+ );
430519
+ }
430511
430520
  break;
430512
430521
  }
430513
430522
  case "snapshot": {
@@ -430563,7 +430572,9 @@ function createLiveFleetSource(config4, now2 = Date.now()) {
430563
430572
  if (n2 && typeof n2.taskId === "string" && typeof n2.status === "string") {
430564
430573
  const notifParentRun = n2.parentTaskId;
430565
430574
  const serverFailClosed = bgNotifyFailClosedMeta && sessionScopedMeta === true;
430566
- if (!serverFailClosed && typeof notifParentRun === "string" && notifParentRun.length > 0 && !isOwnEngineRun(notifParentRun)) {
430575
+ const notifRoot = n2.rootSessionId;
430576
+ const ownByRoot = typeof notifRoot === "string" && notifRoot.length > 0 && notifRoot === effectiveScopeSessionId();
430577
+ if (!serverFailClosed && !ownByRoot && typeof notifParentRun === "string" && notifParentRun.length > 0 && !isOwnEngineRun(notifParentRun)) {
430567
430578
  if (process.env.SEMA_DEBUG) {
430568
430579
  logForDebugging(
430569
430580
  `[fleet-frame] bg_notification DROPPED foreign/unowned parentRun(taskId=${n2.taskId} parentRun=${notifParentRun})`
@@ -480793,16 +480804,16 @@ var init_sema_brand = __esm({
480793
480804
  _doc: "Rendered as the 'What's new' feed (createWhatsNewFeed). Top version MUST be >= current app version (2.1.187) and newer than config.lastReleaseNotesSeen so the notes display and full-logo mode triggers. Pinned == app version (2.1.187) + lastReleaseNotesSeen (loginState.ts) so getRecentReleaseNotes()===[] \u2192 condensed logo (matches refs/chrome.empty-input.json).",
480794
480805
  version: "2.1.187",
480795
480806
  notes: [
480796
- "Background-agent completion notifications now survive a shell restart: on engines that declare fail-closed notification routing (1.247+), resuming a session delivers notifications for agents that were still running when the previous shell exited",
480797
- "Workflow monitor no longer bleeds a tool argument's raw multi-line content across the panel (long structured outputs in the Activity list are now summarized to their first line)",
480798
- "Workflow detail/status reads are now session-scoped end to end on newer engines \u2014 another conversation's workflow details are no longer readable from your window",
480799
- "Background tasks just got real controls: open /tasks and press x to actually stop an engine-side background command or agent \u2014 and the detail view now streams the task's real live output while it runs (previously you could only see a receipt until it finished)",
480800
- "Session isolation hardened across the board after a full sweep of the recent dual-window fix: completed-task leftovers no longer linger into a new conversation after /clear or resume, nested background agents' completion notifications are no longer silently dropped, and stale entries can't evict a transcript you're actively viewing",
480801
- "Fixed a serious isolation bug: two sema windows open in the same project directory could receive each other's background-agent completion notifications, sometimes crashing both"
480807
+ "Fixes a dependency-relay bug that had silently disabled two recently shipped behaviors \u2014 restart-surviving completion notifications on newer engines and session-scope trust hints now actually take effect, and a new regression lock keeps them observable from now on",
480808
+ "Stopping a task that is really running on another instance is now correctly distinguished from a stop that failed to land",
480809
+ "Background-agent timers in the agents panel are now anchored to the real launch time reported by the engine (1.250+) \u2014 elapsed no longer freezes between activity beats on long-quiet agents",
480810
+ "Completion notifications for agents left running across a shell restart now also arrive on older engines (resumed sessions recognize their own delegation tree)",
480811
+ "Stopping an engine-side task that is actually running on another instance now reports honestly that it can't be stopped from here (multi-replica deployments)",
480812
+ "Background-agent completion notifications now survive a shell restart: on engines that declare fail-closed notification routing (1.247+), resuming a session delivers notifications for agents that were still running when the previous shell exited"
480802
480813
  ]
480803
480814
  },
480804
- productVersion: "1.0.49",
480805
- announcement: "sema 1.0.49 \u2014 Notifications for background agents now survive shell restarts (on 1.247+ engines), workflow panels no longer bleed multi-line tool arguments, and workflow reads are session-scoped end to end."
480815
+ productVersion: "1.0.51",
480816
+ announcement: "sema 1.0.51 \u2014 Repairs a silent relay bug so restart-surviving notifications and session-scope hints truly work, adds a regression lock so this class of breakage can't hide again, and cleanly distinguishes remote-instance stops."
480806
480817
  };
480807
480818
  }
480808
480819
  });
@@ -483732,16 +483743,16 @@ var require_sema_brand = __commonJS({
483732
483743
  _doc: "Rendered as the 'What's new' feed (createWhatsNewFeed). Top version MUST be >= current app version (2.1.187) and newer than config.lastReleaseNotesSeen so the notes display and full-logo mode triggers. Pinned == app version (2.1.187) + lastReleaseNotesSeen (loginState.ts) so getRecentReleaseNotes()===[] \u2192 condensed logo (matches refs/chrome.empty-input.json).",
483733
483744
  version: "2.1.187",
483734
483745
  notes: [
483735
- "Background-agent completion notifications now survive a shell restart: on engines that declare fail-closed notification routing (1.247+), resuming a session delivers notifications for agents that were still running when the previous shell exited",
483736
- "Workflow monitor no longer bleeds a tool argument's raw multi-line content across the panel (long structured outputs in the Activity list are now summarized to their first line)",
483737
- "Workflow detail/status reads are now session-scoped end to end on newer engines \u2014 another conversation's workflow details are no longer readable from your window",
483738
- "Background tasks just got real controls: open /tasks and press x to actually stop an engine-side background command or agent \u2014 and the detail view now streams the task's real live output while it runs (previously you could only see a receipt until it finished)",
483739
- "Session isolation hardened across the board after a full sweep of the recent dual-window fix: completed-task leftovers no longer linger into a new conversation after /clear or resume, nested background agents' completion notifications are no longer silently dropped, and stale entries can't evict a transcript you're actively viewing",
483740
- "Fixed a serious isolation bug: two sema windows open in the same project directory could receive each other's background-agent completion notifications, sometimes crashing both"
483746
+ "Fixes a dependency-relay bug that had silently disabled two recently shipped behaviors \u2014 restart-surviving completion notifications on newer engines and session-scope trust hints now actually take effect, and a new regression lock keeps them observable from now on",
483747
+ "Stopping a task that is really running on another instance is now correctly distinguished from a stop that failed to land",
483748
+ "Background-agent timers in the agents panel are now anchored to the real launch time reported by the engine (1.250+) \u2014 elapsed no longer freezes between activity beats on long-quiet agents",
483749
+ "Completion notifications for agents left running across a shell restart now also arrive on older engines (resumed sessions recognize their own delegation tree)",
483750
+ "Stopping an engine-side task that is actually running on another instance now reports honestly that it can't be stopped from here (multi-replica deployments)",
483751
+ "Background-agent completion notifications now survive a shell restart: on engines that declare fail-closed notification routing (1.247+), resuming a session delivers notifications for agents that were still running when the previous shell exited"
483741
483752
  ]
483742
483753
  },
483743
- productVersion: "1.0.49",
483744
- announcement: "sema 1.0.49 \u2014 Notifications for background agents now survive shell restarts (on 1.247+ engines), workflow panels no longer bleed multi-line tool arguments, and workflow reads are session-scoped end to end."
483754
+ productVersion: "1.0.51",
483755
+ announcement: "sema 1.0.51 \u2014 Repairs a silent relay bug so restart-surviving notifications and session-scope hints truly work, adds a regression lock so this class of breakage can't hide again, and cleanly distinguishes remote-instance stops."
483745
483756
  };
483746
483757
  }
483747
483758
  });
@@ -489524,7 +489535,11 @@ async function stopEngineTask(handle, opts) {
489524
489535
  const status3 = e?.status;
489525
489536
  const detail = e instanceof Error ? e.message : String(e);
489526
489537
  logForDebugging(`[task-handle] stop ${handle} via run ${runId}: ${typeof status3 === "number" ? status3 : detail.slice(0, 160)}`);
489527
- if (status3 === 409) return { ok: false, reason: "not_landed", detail };
489538
+ if (status3 === 409) {
489539
+ const code2 = e?.code;
489540
+ const notLocal = code2 === "stop.not_local" || typeof code2 !== "string" && detail.includes("stop.not_local");
489541
+ return notLocal ? { ok: false, reason: "not_local", detail } : { ok: false, reason: "not_landed", detail };
489542
+ }
489528
489543
  return { ok: false, reason: "error", detail };
489529
489544
  }
489530
489545
  }
@@ -656394,7 +656409,7 @@ Auth: unix socket -R \u2192 local proxy`, "info");
656394
656409
  pendingHookMessages
656395
656410
  }, renderAndRun);
656396
656411
  }
656397
- }).version("sema 1.0.49", "-v, --version", "Output the version number");
656412
+ }).version("sema 1.0.51", "-v, --version", "Output the version number");
656398
656413
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
656399
656414
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
656400
656415
  if (canUserConfigureAdvisor()) {