@sema-agent/cli 1.0.49 → 1.0.50

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.50",
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.50",
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.69",
13
+ "@sema-agent/server": "1.250.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.368.0",
633
+ "resolved": "https://registry.npmjs.org/@sema-agent/core/-/core-1.368.0.tgz",
634
+ "integrity": "sha512-9OOR4vceHvfzUMeBYij21M52p2K0LZOTF0/iOGjjO4Y491BVS3o3y22YgLKLKcObHY+PAiH7ApbYLZggejfa6w==",
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.69",
673
+ "resolved": "https://registry.npmjs.org/@sema-agent/sdk/-/sdk-0.0.69.tgz",
674
+ "integrity": "sha512-BFBQgzMpdxBvjTBSU2P4Dny/kx4PLj2JMY9DppK7QEtJgnCVduPVneRviKbGd4KUr5OLotDyQ6ByHrEUFgSaQg==",
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.250.0",
682
+ "resolved": "https://registry.npmjs.org/@sema-agent/server/-/server-1.250.0.tgz",
683
+ "integrity": "sha512-ba9rUGfFiq1Mc+po4Xgwh1zI1XEVVDym3VZuUeAIJO6xb4tTlQjpz/HQuTlFVZWDrRz9Y46bNEXLjg4c2vi7LA==",
684
684
  "license": "BUSL-1.1",
685
685
  "dependencies": {
686
- "@sema-agent/core": "^1.361.0",
686
+ "@sema-agent/core": "^1.368.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.50",
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.69",
25
+ "@sema-agent/server": "1.250.0"
26
26
  },
27
27
  "overrides": {
28
- "@sema-agent/core": "1.365.0",
28
+ "@sema-agent/core": "1.368.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.250.0 / core 1.368.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);
@@ -430563,7 +430567,9 @@ function createLiveFleetSource(config4, now2 = Date.now()) {
430563
430567
  if (n2 && typeof n2.taskId === "string" && typeof n2.status === "string") {
430564
430568
  const notifParentRun = n2.parentTaskId;
430565
430569
  const serverFailClosed = bgNotifyFailClosedMeta && sessionScopedMeta === true;
430566
- if (!serverFailClosed && typeof notifParentRun === "string" && notifParentRun.length > 0 && !isOwnEngineRun(notifParentRun)) {
430570
+ const notifRoot = n2.rootSessionId;
430571
+ const ownByRoot = typeof notifRoot === "string" && notifRoot.length > 0 && notifRoot === effectiveScopeSessionId();
430572
+ if (!serverFailClosed && !ownByRoot && typeof notifParentRun === "string" && notifParentRun.length > 0 && !isOwnEngineRun(notifParentRun)) {
430567
430573
  if (process.env.SEMA_DEBUG) {
430568
430574
  logForDebugging(
430569
430575
  `[fleet-frame] bg_notification DROPPED foreign/unowned parentRun(taskId=${n2.taskId} parentRun=${notifParentRun})`
@@ -480793,16 +480799,16 @@ var init_sema_brand = __esm({
480793
480799
  _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
480800
  version: "2.1.187",
480795
480801
  notes: [
480802
+ "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",
480803
+ "Completion notifications for agents left running across a shell restart now also arrive on older engines (resumed sessions recognize their own delegation tree)",
480804
+ "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)",
480796
480805
  "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
480806
  "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
+ "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"
480802
480808
  ]
480803
480809
  },
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."
480810
+ productVersion: "1.0.50",
480811
+ announcement: "sema 1.0.50 \u2014 Agents-panel timers now track the engine's real launch clock, restart-surviving completion notifications extend to older engines, and multi-replica task stops respond honestly."
480806
480812
  };
480807
480813
  }
480808
480814
  });
@@ -483732,16 +483738,16 @@ var require_sema_brand = __commonJS({
483732
483738
  _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
483739
  version: "2.1.187",
483734
483740
  notes: [
483741
+ "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",
483742
+ "Completion notifications for agents left running across a shell restart now also arrive on older engines (resumed sessions recognize their own delegation tree)",
483743
+ "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)",
483735
483744
  "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
483745
  "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
+ "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"
483741
483747
  ]
483742
483748
  },
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."
483749
+ productVersion: "1.0.50",
483750
+ announcement: "sema 1.0.50 \u2014 Agents-panel timers now track the engine's real launch clock, restart-surviving completion notifications extend to older engines, and multi-replica task stops respond honestly."
483745
483751
  };
483746
483752
  }
483747
483753
  });
@@ -489524,7 +489530,9 @@ async function stopEngineTask(handle, opts) {
489524
489530
  const status3 = e?.status;
489525
489531
  const detail = e instanceof Error ? e.message : String(e);
489526
489532
  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 };
489533
+ if (status3 === 409) {
489534
+ return detail.includes("stop.not_local") ? { ok: false, reason: "not_local", detail } : { ok: false, reason: "not_landed", detail };
489535
+ }
489528
489536
  return { ok: false, reason: "error", detail };
489529
489537
  }
489530
489538
  }
@@ -656394,7 +656402,7 @@ Auth: unix socket -R \u2192 local proxy`, "info");
656394
656402
  pendingHookMessages
656395
656403
  }, renderAndRun);
656396
656404
  }
656397
- }).version("sema 1.0.49", "-v, --version", "Output the version number");
656405
+ }).version("sema 1.0.50", "-v, --version", "Output the version number");
656398
656406
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
656399
656407
  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
656408
  if (canUserConfigureAdvisor()) {