@sema-agent/cli 1.0.48 → 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.48",
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.48",
9
+ "version": "1.0.50",
10
10
  "license": "BUSL-1.1",
11
11
  "dependencies": {
12
- "@sema-agent/sdk": "0.0.67",
13
- "@sema-agent/server": "1.246.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.364.0",
633
- "resolved": "https://registry.npmjs.org/@sema-agent/core/-/core-1.364.0.tgz",
634
- "integrity": "sha512-7hv+RDfEnTcR4Osgx5BwxlK8yDSguiDSmxYmx1Ma4BvNI6+5/Z0YGs7aTVro1GlKy7MiphY2U4mAod4iyMjGlw==",
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.67",
673
- "resolved": "https://registry.npmjs.org/@sema-agent/sdk/-/sdk-0.0.67.tgz",
674
- "integrity": "sha512-bZLemaeHZn/loABKaLSmypi41CB3a51U0VKe6OARIOImOZcVfQhsOKUcVr8RmYgS2u1A+a5F+D43W/MYuxfCwQ==",
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.246.0",
682
- "resolved": "https://registry.npmjs.org/@sema-agent/server/-/server-1.246.0.tgz",
683
- "integrity": "sha512-MbLeTDzjKgj6KR4IBnp2H+Qlvcikgc8uXiKmZJkDHEf+tYxhx7p5RuzQ0szW34ykYwDFNNuUbr8WSqieamXIsQ==",
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.48",
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.67",
25
- "@sema-agent/server": "1.246.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.364.0",
28
+ "@sema-agent/core": "1.368.0",
29
29
  "@sema-agent/registry-core": "0.10.21"
30
30
  },
31
- "semaEngineVersion": "server 1.246.0 / core 1.364.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
@@ -114163,6 +114163,7 @@ var init_instances = __esm({
114163
114163
  });
114164
114164
 
114165
114165
  // build-src/src/ink/log-update.ts
114166
+ import { appendFileSync as appendFileSync3 } from "node:fs";
114166
114167
  function transitionHyperlink(diff2, current3, target) {
114167
114168
  if (current3 !== target) {
114168
114169
  diff2.push({ type: "hyperlink", uri: target ?? "" });
@@ -114401,6 +114402,19 @@ var init_log_update = __esm({
114401
114402
  if (!this.options.isTTY) {
114402
114403
  return this.renderFullFrame(next);
114403
114404
  }
114405
+ if (process.env.SEMA_DEBUG_FRAME_DUMP) {
114406
+ try {
114407
+ const rows2 = [];
114408
+ for (let y2 = 0; y2 < next.screen.height; y2++) rows2.push(readLine(next.screen, y2));
114409
+ appendFileSync3(
114410
+ process.env.SEMA_DEBUG_FRAME_DUMP,
114411
+ `=== frame vp=${next.viewport.width}x${next.viewport.height} screen=${next.screen.width}x${next.screen.height} ===
114412
+ ${rows2.join("\n")}
114413
+ `
114414
+ );
114415
+ } catch {
114416
+ }
114417
+ }
114404
114418
  const startTime = performance.now();
114405
114419
  const stylePool = this.options.stylePool;
114406
114420
  if (next.viewport.height < prev.viewport.height || prev.viewport.width !== 0 && next.viewport.width !== prev.viewport.width) {
@@ -160026,7 +160040,7 @@ var init_userMessageSelect = __esm({
160026
160040
 
160027
160041
  // build-src/src/sema/rewindAnchorSidecar.ts
160028
160042
  import {
160029
- appendFileSync as appendFileSync3,
160043
+ appendFileSync as appendFileSync4,
160030
160044
  closeSync as closeSync5,
160031
160045
  fsyncSync as fsyncSync3,
160032
160046
  mkdirSync as mkdirSync6,
@@ -160225,11 +160239,11 @@ var init_rewindAnchorSidecar = __esm({
160225
160239
  }
160226
160240
  appendLocked(path27, line) {
160227
160241
  try {
160228
- appendFileSync3(path27, "", { mode: 384 });
160242
+ appendFileSync4(path27, "", { mode: 384 });
160229
160243
  } catch {
160230
160244
  try {
160231
160245
  mkdirSync6(dirname21(path27), { recursive: true, mode: 448 });
160232
- appendFileSync3(path27, "", { mode: 384 });
160246
+ appendFileSync4(path27, "", { mode: 384 });
160233
160247
  } catch (err8) {
160234
160248
  logForDebugging2(`rewindAnchorSidecar: cannot ensure ${path27}: ${err8}`);
160235
160249
  }
@@ -352993,7 +353007,7 @@ function useClaudeAiLimits() {
352993
353007
  var import_react64;
352994
353008
  var init_claudeAiLimitsHook = __esm({
352995
353009
  "build-src/src/services/claudeAiLimitsHook.ts"() {
352996
- import_react64 = __toESM(require_react());
353010
+ import_react64 = __toESM(require_react(), 1);
352997
353011
  init_claudeAiLimits();
352998
353012
  }
352999
353013
  });
@@ -430422,6 +430436,7 @@ function createLiveFleetSource(config4, now2 = Date.now()) {
430422
430436
  let version4 = null;
430423
430437
  let scoped = null;
430424
430438
  let sessionScopedMeta;
430439
+ let bgNotifyFailClosedMeta = false;
430425
430440
  let lastError = null;
430426
430441
  let disposed4 = false;
430427
430442
  const bgView = {
@@ -430461,6 +430476,10 @@ function createLiveFleetSource(config4, now2 = Date.now()) {
430461
430476
  const viewingTaskId = getAppStateStoreRef()?.getState().viewingAgentTaskId;
430462
430477
  const liveRows = [...taskMap.values()].map((r) => {
430463
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
+ }
430464
430483
  const meta3 = rowMeta.get(r.id);
430465
430484
  if (!meta3) return r;
430466
430485
  const idle = Math.max(0, nowMs - meta3.receivedAt);
@@ -430491,6 +430510,8 @@ function createLiveFleetSource(config4, now2 = Date.now()) {
430491
430510
  scoped = frame.scoped;
430492
430511
  const ss = frame.sessionScoped;
430493
430512
  sessionScopedMeta = typeof ss === "boolean" ? ss : void 0;
430513
+ const bfc = frame.bgNotifyFailClosed;
430514
+ bgNotifyFailClosedMeta = bfc === true;
430494
430515
  break;
430495
430516
  }
430496
430517
  case "snapshot": {
@@ -430545,7 +430566,10 @@ function createLiveFleetSource(config4, now2 = Date.now()) {
430545
430566
  const n2 = anyFrame.type === "bg_notification" ? anyFrame.notification ?? anyFrame : void 0;
430546
430567
  if (n2 && typeof n2.taskId === "string" && typeof n2.status === "string") {
430547
430568
  const notifParentRun = n2.parentTaskId;
430548
- if (typeof notifParentRun === "string" && notifParentRun.length > 0 && !isOwnEngineRun(notifParentRun)) {
430569
+ const serverFailClosed = bgNotifyFailClosedMeta && sessionScopedMeta === true;
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)) {
430549
430573
  if (process.env.SEMA_DEBUG) {
430550
430574
  logForDebugging(
430551
430575
  `[fleet-frame] bg_notification DROPPED foreign/unowned parentRun(taskId=${n2.taskId} parentRun=${notifParentRun})`
@@ -451971,7 +451995,7 @@ function Settings({
451971
451995
  var import_react113, import_jsx_runtime193;
451972
451996
  var init_cmd_config = __esm({
451973
451997
  "build-src/src/sema/overrides/cmd-config.tsx"() {
451974
- import_react113 = __toESM(require_react());
451998
+ import_react113 = __toESM(require_react(), 1);
451975
451999
  init_useKeybinding();
451976
452000
  init_useExitOnCtrlCDWithKeybindings();
451977
452001
  init_useTerminalSize();
@@ -451982,7 +452006,7 @@ var init_cmd_config = __esm({
451982
452006
  init_Config();
451983
452007
  init_settings_usage();
451984
452008
  init_Stats();
451985
- import_jsx_runtime193 = __toESM(require_jsx_runtime());
452009
+ import_jsx_runtime193 = __toESM(require_jsx_runtime(), 1);
451986
452010
  }
451987
452011
  });
451988
452012
 
@@ -480775,25 +480799,23 @@ var init_sema_brand = __esm({
480775
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).",
480776
480800
  version: "2.1.187",
480777
480801
  notes: [
480778
- "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)",
480779
- "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",
480780
- "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",
480781
- "Fixed a general crash (React error #300) that could happen when the last agent in the agents-panel view finishes while you're navigating it",
480782
- "Workflow completion notifications are more truthful: a stopped workflow is no longer reported as completed, and unknown in-flight states are no longer mistaken for finished",
480783
- "Jump-to-bottom no longer gets stuck showing when you're already at the bottom of a long conversation",
480784
- "Context window presets in the model wizard (64K/128K/.../1M) now convert consistently \u2014 token counts finally match what the labels say",
480785
- `Clarified what the model wizard's "Label" field actually does when you leave it blank`
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)",
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",
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)",
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"
480786
480808
  ]
480787
480809
  },
480788
- productVersion: "1.0.48",
480789
- announcement: "sema 1.0.48 \u2014 Big one: /tasks can now show an engine-side background task's LIVE output and truly stop it (x). Plus a full isolation hardening sweep following the dual-window fix, and more truthful workflow/agent completion notifications."
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."
480790
480812
  };
480791
480813
  }
480792
480814
  });
480793
480815
 
480794
480816
  // build-src/src/sema/overrides/welcome-scifi.tsx
480795
480817
  import { probeHealth as sdkProbeHealth6 } from "@sema-agent/sdk";
480796
- import { appendFileSync as appendFileSync4 } from "node:fs";
480818
+ import { appendFileSync as appendFileSync5 } from "node:fs";
480797
480819
  function pickIcon() {
480798
480820
  const k2 = process.env.SEMA_WELCOME_ICON ?? "prism";
480799
480821
  return ICONS[k2] ?? ICONS.prism;
@@ -480918,7 +480940,7 @@ function buildChecks(routingRefusalParam = null, pinUnreachableParam = null, mod
480918
480940
  }
480919
480941
  if (process.env.SEMA_WELCOME_PROBE) {
480920
480942
  try {
480921
- appendFileSync4(`${process.env.SEMA_WELCOME_PROBE}.render`, `${Date.now()} buildChecks r=${JSON.stringify(routingRefusal)}
480943
+ appendFileSync5(`${process.env.SEMA_WELCOME_PROBE}.render`, `${Date.now()} buildChecks r=${JSON.stringify(routingRefusal)}
480922
480944
  `);
480923
480945
  } catch {
480924
480946
  }
@@ -481047,7 +481069,7 @@ function WelcomeSciFi() {
481047
481069
  const r = engineRoutingRefusalActive();
481048
481070
  if (process.env.SEMA_WELCOME_PROBE && polls <= 3) {
481049
481071
  try {
481050
- appendFileSync4(process.env.SEMA_WELCOME_PROBE, `poll#${polls} r=${JSON.stringify(r)}
481072
+ appendFileSync5(process.env.SEMA_WELCOME_PROBE, `poll#${polls} r=${JSON.stringify(r)}
481051
481073
  `);
481052
481074
  } catch {
481053
481075
  }
@@ -483716,18 +483738,16 @@ var require_sema_brand = __commonJS({
483716
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).",
483717
483739
  version: "2.1.187",
483718
483740
  notes: [
483719
- "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)",
483720
- "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",
483721
- "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",
483722
- "Fixed a general crash (React error #300) that could happen when the last agent in the agents-panel view finishes while you're navigating it",
483723
- "Workflow completion notifications are more truthful: a stopped workflow is no longer reported as completed, and unknown in-flight states are no longer mistaken for finished",
483724
- "Jump-to-bottom no longer gets stuck showing when you're already at the bottom of a long conversation",
483725
- "Context window presets in the model wizard (64K/128K/.../1M) now convert consistently \u2014 token counts finally match what the labels say",
483726
- `Clarified what the model wizard's "Label" field actually does when you leave it blank`
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)",
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",
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)",
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"
483727
483747
  ]
483728
483748
  },
483729
- productVersion: "1.0.48",
483730
- announcement: "sema 1.0.48 \u2014 Big one: /tasks can now show an engine-side background task's LIVE output and truly stop it (x). Plus a full isolation hardening sweep following the dual-window fix, and more truthful workflow/agent completion notifications."
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."
483731
483751
  };
483732
483752
  }
483733
483753
  });
@@ -489510,7 +489530,9 @@ async function stopEngineTask(handle, opts) {
489510
489530
  const status3 = e?.status;
489511
489531
  const detail = e instanceof Error ? e.message : String(e);
489512
489532
  logForDebugging(`[task-handle] stop ${handle} via run ${runId}: ${typeof status3 === "number" ? status3 : detail.slice(0, 160)}`);
489513
- 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
+ }
489514
489536
  return { ok: false, reason: "error", detail };
489515
489537
  }
489516
489538
  }
@@ -520609,7 +520631,7 @@ var init_commands = __esm({
520609
520631
 
520610
520632
  // build-src/src/sema/turnJournal.ts
520611
520633
  import {
520612
- appendFileSync as appendFileSync5,
520634
+ appendFileSync as appendFileSync6,
520613
520635
  closeSync as closeSync8,
520614
520636
  fsyncSync as fsyncSync6,
520615
520637
  mkdirSync as mkdirSync18,
@@ -520626,22 +520648,22 @@ function recordTurnJournalEntry(journalPath, entry, lockTargetPath) {
520626
520648
  const line = jsonStringify(stamped) + "\n";
520627
520649
  const lockOn = lockTargetPath ?? journalPath;
520628
520650
  try {
520629
- appendFileSync5(lockOn, "", { mode: 384 });
520651
+ appendFileSync6(lockOn, "", { mode: 384 });
520630
520652
  } catch {
520631
520653
  try {
520632
520654
  mkdirSync18(dirname70(lockOn), { recursive: true, mode: 448 });
520633
- appendFileSync5(lockOn, "", { mode: 384 });
520655
+ appendFileSync6(lockOn, "", { mode: 384 });
520634
520656
  } catch (err8) {
520635
520657
  logForDebugging(`turnJournal: cannot ensure lock target ${lockOn}: ${err8}`);
520636
520658
  }
520637
520659
  }
520638
520660
  if (lockOn !== journalPath) {
520639
520661
  try {
520640
- appendFileSync5(journalPath, "", { mode: 384 });
520662
+ appendFileSync6(journalPath, "", { mode: 384 });
520641
520663
  } catch {
520642
520664
  try {
520643
520665
  mkdirSync18(dirname70(journalPath), { recursive: true, mode: 448 });
520644
- appendFileSync5(journalPath, "", { mode: 384 });
520666
+ appendFileSync6(journalPath, "", { mode: 384 });
520645
520667
  } catch {
520646
520668
  }
520647
520669
  }
@@ -563292,6 +563314,12 @@ function coerceAgentState(s) {
563292
563314
  return "progress";
563293
563315
  }
563294
563316
  }
563317
+ function oneLineSummary(s) {
563318
+ const nl = s.search(/\r?\n/);
563319
+ if (nl < 0) return s;
563320
+ const head = s.slice(0, nl).trimEnd();
563321
+ return head ? `${head}\u2026` : "\u2026";
563322
+ }
563295
563323
  function projectActivity(beats) {
563296
563324
  if (!beats?.length) return [];
563297
563325
  const byCall = /* @__PURE__ */ new Map();
@@ -563303,7 +563331,7 @@ function projectActivity(beats) {
563303
563331
  const key = typeof b3.toolCallId === "string" && b3.toolCallId ? b3.toolCallId : `#${anon++}`;
563304
563332
  if (!byCall.has(key)) order2.push(key);
563305
563333
  const prev = byCall.get(key);
563306
- const arg = typeof b3.arg === "string" && b3.arg.trim() ? b3.arg.trim() : prev?.summary;
563334
+ const arg = typeof b3.arg === "string" && b3.arg.trim() ? oneLineSummary(b3.arg.trim()) : prev?.summary;
563307
563335
  const call75 = { name };
563308
563336
  if (arg) call75.summary = arg;
563309
563337
  byCall.set(key, { ...prev, ...call75 });
@@ -563458,14 +563486,14 @@ function createLiveWorkflowSource(config4) {
563458
563486
  }
563459
563487
  async function resolveRunId(signal) {
563460
563488
  if (config4.workflowId) return config4.workflowId;
563461
- const { workflows } = await client4.workflows.list({ signal });
563489
+ const { workflows } = await client4.workflows.list({ signal, ...engineSessionParamSpread() });
563462
563490
  if (!workflows?.length) return null;
563463
563491
  const running = workflows.find((w2) => w2.status === "running");
563464
563492
  return (running ?? workflows[0]).id;
563465
563493
  }
563466
563494
  async function refresh(id, signal) {
563467
563495
  try {
563468
- const run2 = await client4.workflows.get(id, { signal });
563496
+ const run2 = await client4.workflows.get(id, { signal, ...engineSessionParamSpread() });
563469
563497
  lastGetAt = Date.now();
563470
563498
  current3 = projectWorkflowRun(run2);
563471
563499
  runId = run2.id;
@@ -563495,7 +563523,7 @@ function createLiveWorkflowSource(config4) {
563495
563523
  continue;
563496
563524
  }
563497
563525
  try {
563498
- for await (const _frame of client4.workflows.stream(id, { signal: abort.signal })) {
563526
+ for await (const _frame of client4.workflows.stream(id, { signal: abort.signal, ...engineSessionParamSpread() })) {
563499
563527
  void _frame;
563500
563528
  if (disposed4) return;
563501
563529
  connected = true;
@@ -563534,6 +563562,7 @@ function createLiveWorkflowSource(config4) {
563534
563562
  var workflowClient_default;
563535
563563
  var init_workflowClient = __esm({
563536
563564
  "build-src/src/sema/workflowClient.ts"() {
563565
+ init_engineSessionParam();
563537
563566
  workflowClient_default = createLiveWorkflowSource;
563538
563567
  }
563539
563568
  });
@@ -604172,8 +604201,8 @@ async function processResumedConversation(result, opts, context3) {
604172
604201
  const { bindSessionPersistencePaths: bindSessionPersistencePaths2, reconcileResumeJournal: reconcileResumeJournal2 } = await Promise.resolve().then(() => (init_sessionPersistenceWire(), sessionPersistenceWire_exports));
604173
604202
  bindSessionPersistencePaths2();
604174
604203
  if (process.env.SEMA_RECONCILE_DIAG) {
604175
- const { appendFileSync: appendFileSync8 } = await import("fs");
604176
- appendFileSync8(
604204
+ const { appendFileSync: appendFileSync9 } = await import("fs");
604205
+ appendFileSync9(
604177
604206
  process.env.SEMA_RECONCILE_DIAG,
604178
604207
  `[entry] sid=${sid} baseUrl=${process.env.SEMA_LIVE_BASEURL ?? "UNSET"}
604179
604208
  `
@@ -604183,8 +604212,8 @@ async function processResumedConversation(result, opts, context3) {
604183
604212
  const { cancelEngineRun: cancelEngineRun2 } = await Promise.resolve().then(() => (init_seamQuery(), seamQuery_exports));
604184
604213
  const r = await reconcileResumeJournal2(void 0, (taskId) => cancelEngineRun2(taskId));
604185
604214
  if (process.env.SEMA_RECONCILE_DIAG) {
604186
- const { appendFileSync: appendFileSync8 } = await import("fs");
604187
- appendFileSync8(
604215
+ const { appendFileSync: appendFileSync9 } = await import("fs");
604216
+ appendFileSync9(
604188
604217
  process.env.SEMA_RECONCILE_DIAG,
604189
604218
  `[done] ${r.decision.lastState} -> ${r.recovery}
604190
604219
  `
@@ -604196,8 +604225,8 @@ async function processResumedConversation(result, opts, context3) {
604196
604225
  );
604197
604226
  }
604198
604227
  } else if (process.env.SEMA_RECONCILE_DIAG) {
604199
- const { appendFileSync: appendFileSync8 } = await import("fs");
604200
- appendFileSync8(process.env.SEMA_RECONCILE_DIAG, `[skip] baseUrl UNSET
604228
+ const { appendFileSync: appendFileSync9 } = await import("fs");
604229
+ appendFileSync9(process.env.SEMA_RECONCILE_DIAG, `[skip] baseUrl UNSET
604201
604230
  `);
604202
604231
  }
604203
604232
  } catch (ePw) {
@@ -607706,8 +607735,8 @@ function _temp158() {
607706
607735
  var import_compiler_runtime312, import_react310, import_jsx_runtime458, DESKTOP_UPSELL_DEFAULT;
607707
607736
  var init_DesktopUpsellStartup = __esm({
607708
607737
  "build-src/src/components/DesktopUpsell/DesktopUpsellStartup.tsx"() {
607709
- import_compiler_runtime312 = __toESM(require_compiler_runtime());
607710
- import_react310 = __toESM(require_react());
607738
+ import_compiler_runtime312 = __toESM(require_compiler_runtime(), 1);
607739
+ import_react310 = __toESM(require_react(), 1);
607711
607740
  init_ink2();
607712
607741
  init_growthbook_advisor_flag();
607713
607742
  init_analytics_index();
@@ -607715,7 +607744,7 @@ var init_DesktopUpsellStartup = __esm({
607715
607744
  init_select();
607716
607745
  init_DesktopHandoff();
607717
607746
  init_PermissionDialog();
607718
- import_jsx_runtime458 = __toESM(require_jsx_runtime());
607747
+ import_jsx_runtime458 = __toESM(require_jsx_runtime(), 1);
607719
607748
  DESKTOP_UPSELL_DEFAULT = {
607720
607749
  enable_shortcut_tip: false,
607721
607750
  enable_startup_dialog: false
@@ -610070,8 +610099,8 @@ function _temp161() {
610070
610099
  var import_compiler_runtime316, import_react314, SETTINGS_ERRORS_NOTIFICATION_KEY;
610071
610100
  var init_useSettingsErrors = __esm({
610072
610101
  "build-src/src/hooks/notifs/useSettingsErrors.tsx"() {
610073
- import_compiler_runtime316 = __toESM(require_compiler_runtime());
610074
- import_react314 = __toESM(require_react());
610102
+ import_compiler_runtime316 = __toESM(require_compiler_runtime(), 1);
610103
+ import_react314 = __toESM(require_react(), 1);
610075
610104
  init_notifications();
610076
610105
  init_state();
610077
610106
  init_allErrors();
@@ -630943,7 +630972,7 @@ function createLiveConversationClient(config4) {
630943
630972
  installWorkflowStatusProbe(async (runId) => {
630944
630973
  let run2 = null;
630945
630974
  try {
630946
- run2 = await client4.workflows.get(runId);
630975
+ run2 = await client4.workflows.get(runId, engineSessionParamSpread());
630947
630976
  } catch {
630948
630977
  return null;
630949
630978
  }
@@ -656373,7 +656402,7 @@ Auth: unix socket -R \u2192 local proxy`, "info");
656373
656402
  pendingHookMessages
656374
656403
  }, renderAndRun);
656375
656404
  }
656376
- }).version("sema 1.0.48", "-v, --version", "Output the version number");
656405
+ }).version("sema 1.0.50", "-v, --version", "Output the version number");
656377
656406
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
656378
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.");
656379
656408
  if (canUserConfigureAdvisor()) {
@@ -659565,7 +659594,7 @@ __export(interactiveHelpers_exports, {
659565
659594
  showSetupDialog: () => showSetupDialog,
659566
659595
  showSetupScreens: () => showSetupScreens
659567
659596
  });
659568
- import { appendFileSync as appendFileSync6 } from "fs";
659597
+ import { appendFileSync as appendFileSync7 } from "fs";
659569
659598
  function completeOnboarding() {
659570
659599
  saveGlobalConfig((current3) => ({
659571
659600
  ...current3,
@@ -659758,7 +659787,7 @@ function getRenderContext(exitOnCtrlC) {
659758
659787
  cpu: process.cpuUsage()
659759
659788
  }) + "\n"
659760
659789
  );
659761
- appendFileSync6(frameTimingLogPath, line);
659790
+ appendFileSync7(frameTimingLogPath, line);
659762
659791
  }
659763
659792
  if (isSynchronizedOutputSupported()) {
659764
659793
  return;
@@ -662402,7 +662431,7 @@ __export(main_exports2, {
662402
662431
  daemonMain: () => daemonMain
662403
662432
  });
662404
662433
  import { spawn as spawn15 } from "child_process";
662405
- import { appendFileSync as appendFileSync7, createWriteStream as createWriteStream5 } from "fs";
662434
+ import { appendFileSync as appendFileSync8, createWriteStream as createWriteStream5 } from "fs";
662406
662435
  import { chmod as chmod13, mkdir as mkdir51, readFile as readFile58, readdir as readdir33, rename as rename15, stat as stat54, unlink as unlink28 } from "fs/promises";
662407
662436
  import { createConnection as createConnection4, createServer as createServer9 } from "net";
662408
662437
  import { dirname as dirname90, join as join206 } from "path";
@@ -662449,7 +662478,7 @@ function appendDaemonCrashLine(kind, err8) {
662449
662478
  const line = `${(/* @__PURE__ */ new Date()).toISOString()} [daemon] FATAL ${kind} (pid ${process.pid}): ${detail}
662450
662479
  `;
662451
662480
  try {
662452
- appendFileSync7(getDaemonLogPath(), line, { mode: 384 });
662481
+ appendFileSync8(getDaemonLogPath(), line, { mode: 384 });
662453
662482
  } catch {
662454
662483
  try {
662455
662484
  process.stderr.write(line);