@sema-agent/cli 1.0.14 → 1.0.15

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.14",
3
+ "version": "1.0.15",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@sema-agent/cli",
9
- "version": "1.0.14",
9
+ "version": "1.0.15",
10
10
  "license": "BUSL-1.1",
11
11
  "dependencies": {
12
12
  "@sema-agent/sdk": "0.0.53",
13
- "@sema-agent/server": "1.218.0"
13
+ "@sema-agent/server": "1.220.0"
14
14
  },
15
15
  "bin": {
16
16
  "sema": "sema.js"
@@ -645,9 +645,9 @@
645
645
  }
646
646
  },
647
647
  "node_modules/@sema-agent/registry-core": {
648
- "version": "0.10.14",
649
- "resolved": "https://registry.npmjs.org/@sema-agent/registry-core/-/registry-core-0.10.14.tgz",
650
- "integrity": "sha512-6EJe0WmrOrnEY/mITs8FHwCbBy5zcUWzRd1QaOYdEPF5H1DGvv/YcowZ4fR9HTWOpa9l8VI5mJv8gJA4EVxD0w==",
648
+ "version": "0.10.15",
649
+ "resolved": "https://registry.npmjs.org/@sema-agent/registry-core/-/registry-core-0.10.15.tgz",
650
+ "integrity": "sha512-nOwzBLFSMSgpkP9ftPLPj68IzhsP8fHrT+isCojNPF9oywFsROpFiNzNszmFsTt53eBnpQ+tHwxdsJXU0vV1xA==",
651
651
  "license": "BUSL-1.1",
652
652
  "dependencies": {
653
653
  "zod": "^3.24.0"
@@ -678,13 +678,13 @@
678
678
  }
679
679
  },
680
680
  "node_modules/@sema-agent/server": {
681
- "version": "1.218.0",
682
- "resolved": "https://registry.npmjs.org/@sema-agent/server/-/server-1.218.0.tgz",
683
- "integrity": "sha512-D7XfWT1qu7JR/3tFcJSvi79cuKw23cceFbD8Ic/dflxyPAvUm1OOez6tDViUA1bqONkQjNqDI9I+7EzUtmM9Gg==",
681
+ "version": "1.220.0",
682
+ "resolved": "https://registry.npmjs.org/@sema-agent/server/-/server-1.220.0.tgz",
683
+ "integrity": "sha512-3i1zW48+gxS6Csb7YDD8PiLInphHtFeLBKTTexwoBCA6bYKqwHSJeO1Zr3YzHTzSm/+gqmOs2VGRCqNYbOz8gg==",
684
684
  "license": "BUSL-1.1",
685
685
  "dependencies": {
686
- "@sema-agent/core": "^1.305.0",
687
- "@sema-agent/registry-core": "^0.10.12",
686
+ "@sema-agent/core": "^1.311.0",
687
+ "@sema-agent/registry-core": "^0.10.14",
688
688
  "e2b": "^2.28.0",
689
689
  "libsodium-wrappers": "^0.8.4",
690
690
  "mysql2": "^3.22.4",
@@ -1077,9 +1077,9 @@
1077
1077
  }
1078
1078
  },
1079
1079
  "node_modules/e2b": {
1080
- "version": "2.34.0",
1081
- "resolved": "https://registry.npmjs.org/e2b/-/e2b-2.34.0.tgz",
1082
- "integrity": "sha512-oQ+5k1WHBEgZEPPx/ziBbFR9fM+x0ywsd74MGRcbUZQuC0XDbL8tVpHrv/gfGLOEwmZwewxTZcLHTg4xVZp5Lg==",
1080
+ "version": "2.35.0",
1081
+ "resolved": "https://registry.npmjs.org/e2b/-/e2b-2.35.0.tgz",
1082
+ "integrity": "sha512-ZOu2aNbnTtUcMBbLMB6houapLJxACco+PbmybzP42Id3H7ud8Z1HkQAVKj9nXwSH4g8llojwsRx6Ro6asQGJrg==",
1083
1083
  "license": "MIT",
1084
1084
  "dependencies": {
1085
1085
  "@bufbuild/protobuf": "^2.12.1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sema-agent/cli",
3
- "version": "1.0.14",
3
+ "version": "1.0.15",
4
4
  "description": "Sema — your own Claude Code-grade coding agent, in the terminal.",
5
5
  "license": "BUSL-1.1",
6
6
  "bin": {
@@ -22,13 +22,13 @@
22
22
  ],
23
23
  "dependencies": {
24
24
  "@sema-agent/sdk": "0.0.53",
25
- "@sema-agent/server": "1.218.0"
25
+ "@sema-agent/server": "1.220.0"
26
26
  },
27
27
  "overrides": {
28
28
  "@sema-agent/core": "1.312.0",
29
- "@sema-agent/registry-core": "0.10.14"
29
+ "@sema-agent/registry-core": "0.10.15"
30
30
  },
31
- "semaEngineVersion": "server 1.218.0 / core 1.312.0 / registry-core 0.10.14",
31
+ "semaEngineVersion": "server 1.220.0 / core 1.312.0 / registry-core 0.10.15",
32
32
  "engines": {
33
33
  "node": ">=18"
34
34
  }
package/sema.js CHANGED
@@ -157487,8 +157487,23 @@ var init_selfOrchestrationWireCaps = __esm({
157487
157487
  }
157488
157488
  });
157489
157489
 
157490
- // build-src/src/sema/forkWireCaps.ts
157490
+ // build-src/src/sema/retainBackgroundWireCaps.ts
157491
157491
  function isTruthy(v2) {
157492
+ const s = typeof v2 === "string" ? v2.trim().toLowerCase() : "";
157493
+ return s === "1" || s === "true" || s === "yes" || s === "on";
157494
+ }
157495
+ function retainBackgroundFromEnv(env5 = process.env) {
157496
+ return isTruthy(env5[RETAIN_BACKGROUND_ENV]) ? true : void 0;
157497
+ }
157498
+ var RETAIN_BACKGROUND_ENV;
157499
+ var init_retainBackgroundWireCaps = __esm({
157500
+ "build-src/src/sema/retainBackgroundWireCaps.ts"() {
157501
+ RETAIN_BACKGROUND_ENV = "SEMA_RETAIN_BACKGROUND";
157502
+ }
157503
+ });
157504
+
157505
+ // build-src/src/sema/forkWireCaps.ts
157506
+ function isTruthy2(v2) {
157492
157507
  const s = v2.trim().toLowerCase();
157493
157508
  return s === "1" || s === "true" || s === "yes" || s === "on";
157494
157509
  }
@@ -157499,7 +157514,7 @@ function isFalsy2(v2) {
157499
157514
  function enableForkFromEnv(env5 = process.env) {
157500
157515
  const raw2 = env5[ENABLE_FORK_ENV];
157501
157516
  if (typeof raw2 !== "string" || raw2.trim() === "") return void 0;
157502
- if (isTruthy(raw2)) return true;
157517
+ if (isTruthy2(raw2)) return true;
157503
157518
  if (isFalsy2(raw2)) return false;
157504
157519
  return void 0;
157505
157520
  }
@@ -331858,9 +331873,9 @@ function streamingTailWrap(unstableSuffix) {
331858
331873
  var import_compiler_runtime43, import_react43, import_jsx_runtime53, TOKEN_CACHE_MAX, tokenCache, MD_SYNTAX_RE;
331859
331874
  var init_Markdown = __esm({
331860
331875
  "build-src/src/components/Markdown.tsx"() {
331861
- import_compiler_runtime43 = __toESM(require_compiler_runtime());
331876
+ import_compiler_runtime43 = __toESM(require_compiler_runtime(), 1);
331862
331877
  init_marked_esm();
331863
- import_react43 = __toESM(require_react());
331878
+ import_react43 = __toESM(require_react(), 1);
331864
331879
  init_useSettings();
331865
331880
  init_ink2();
331866
331881
  init_cliHighlight();
@@ -331868,7 +331883,7 @@ var init_Markdown = __esm({
331868
331883
  init_markdown();
331869
331884
  init_messages4();
331870
331885
  init_MarkdownTable();
331871
- import_jsx_runtime53 = __toESM(require_jsx_runtime());
331886
+ import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1);
331872
331887
  TOKEN_CACHE_MAX = 500;
331873
331888
  tokenCache = /* @__PURE__ */ new Map();
331874
331889
  MD_SYNTAX_RE = /[#*`|[>\-_~]|\n\n|^\d+\. |\n\d+\. /;
@@ -433322,6 +433337,10 @@ function toTaskRequest(params) {
433322
433337
  if (selfOrchestration && process.env.SEMA_DEBUG) {
433323
433338
  console.error("[sema][seamQuery] selfOrchestration wire: SEMA_SELF_ORCHESTRATION \u2192 TaskRequest.selfOrchestration=true (run_workflow)");
433324
433339
  }
433340
+ const retainBackground = process.env.SEMA_LIVE_BASEURL ? retainBackgroundFromEnv() : void 0;
433341
+ if (retainBackground && process.env.SEMA_DEBUG) {
433342
+ console.error("[sema][seamQuery] retainBackground wire: SEMA_RETAIN_BACKGROUND \u2192 TaskRequest.retainBackgroundProcesses=true");
433343
+ }
433325
433344
  const attachments = process.env.SEMA_LIVE_BASEURL ? attachmentsForRequest() : void 0;
433326
433345
  if (attachments && process.env.SEMA_DEBUG) {
433327
433346
  console.error(`[sema][seamQuery] attachments wire: ${Object.keys(attachments).join("+")} \u2192 TaskRequest.attachments`);
@@ -433401,6 +433420,7 @@ ${objective}`;
433401
433420
  // Workflow super-set: the top-level selfOrchestration flag (SEMA_SELF_ORCHESTRATION env opt-in, live-gated).
433402
433421
  // Present ⇒ the SERVICE mounts core run_workflow (gated on its deployment/tenant policy); absent ⇒ no stamp.
433403
433422
  ...selfOrchestration ? { selfOrchestration } : {},
433423
+ ...retainBackground ? { retainBackgroundProcesses: retainBackground } : {},
433404
433424
  // Fork super-set: the top-level enableFork flag — EXPLICIT boolean on live (core ≥1.257 treats absent
433405
433425
  // as granted; the shell's default-OFF product decision must be spelled out). Mock path stays unstamped.
433406
433426
  ...enableFork !== void 0 ? { enableFork } : {},
@@ -433721,6 +433741,7 @@ var init_seamQuery = __esm({
433721
433741
  init_imagesWireCaps();
433722
433742
  init_webSearchWireCaps();
433723
433743
  init_selfOrchestrationWireCaps();
433744
+ init_retainBackgroundWireCaps();
433724
433745
  init_forkWireCaps();
433725
433746
  init_attachmentsWireCaps();
433726
433747
  init_clientContextWireCaps();
@@ -450650,7 +450671,7 @@ function Settings({
450650
450671
  var import_react113, import_jsx_runtime192;
450651
450672
  var init_cmd_config = __esm({
450652
450673
  "build-src/src/sema/overrides/cmd-config.tsx"() {
450653
- import_react113 = __toESM(require_react());
450674
+ import_react113 = __toESM(require_react(), 1);
450654
450675
  init_useKeybinding();
450655
450676
  init_useExitOnCtrlCDWithKeybindings();
450656
450677
  init_useTerminalSize();
@@ -450661,7 +450682,7 @@ var init_cmd_config = __esm({
450661
450682
  init_Config();
450662
450683
  init_settings_usage();
450663
450684
  init_Stats();
450664
- import_jsx_runtime192 = __toESM(require_jsx_runtime());
450685
+ import_jsx_runtime192 = __toESM(require_jsx_runtime(), 1);
450665
450686
  }
450666
450687
  });
450667
450688
 
@@ -479528,8 +479549,8 @@ var init_sema_brand = __esm({
479528
479549
  "Slash-command gating wired to the fleet capability handshake"
479529
479550
  ]
479530
479551
  },
479531
- productVersion: "1.0.14",
479532
- announcement: "sema 1.0.14 \u2014 CJK input method candidate windows now anchor to the input caret (the terminal cursor is shown while typing), and autonomous-loop wakeups resolve to real tick instructions instead of a literal sentinel"
479552
+ productVersion: "1.0.15",
479553
+ announcement: "sema 1.0.15 \u2014 headless (-p) runs stop mounting scheduler tools they can never honor (leaner prompts, faster turns), the init frame reports the tools actually mounted, and background processes can be retained past teardown with SEMA_RETAIN_BACKGROUND=1"
479533
479554
  };
479534
479555
  }
479535
479556
  });
@@ -482463,8 +482484,8 @@ var require_sema_brand = __commonJS({
482463
482484
  "Slash-command gating wired to the fleet capability handshake"
482464
482485
  ]
482465
482486
  },
482466
- productVersion: "1.0.14",
482467
- announcement: "sema 1.0.14 \u2014 CJK input method candidate windows now anchor to the input caret (the terminal cursor is shown while typing), and autonomous-loop wakeups resolve to real tick instructions instead of a literal sentinel"
482487
+ productVersion: "1.0.15",
482488
+ announcement: "sema 1.0.15 \u2014 headless (-p) runs stop mounting scheduler tools they can never honor (leaner prompts, faster turns), the init frame reports the tools actually mounted, and background processes can be retained past teardown with SEMA_RETAIN_BACKGROUND=1"
482468
482489
  };
482469
482490
  }
482470
482491
  });
@@ -607667,8 +607688,8 @@ function _temp161() {
607667
607688
  var import_compiler_runtime316, import_react313, SETTINGS_ERRORS_NOTIFICATION_KEY;
607668
607689
  var init_useSettingsErrors = __esm({
607669
607690
  "build-src/src/hooks/notifs/useSettingsErrors.tsx"() {
607670
- import_compiler_runtime316 = __toESM(require_compiler_runtime());
607671
- import_react313 = __toESM(require_react());
607691
+ import_compiler_runtime316 = __toESM(require_compiler_runtime(), 1);
607692
+ import_react313 = __toESM(require_react(), 1);
607672
607693
  init_notifications();
607673
607694
  init_state();
607674
607695
  init_allErrors();
@@ -628944,8 +628965,19 @@ __export(liveInitToolFace_exports, {
628944
628965
  ENGINE_SCENARIO_EXTRAS_DEFAULT: () => ENGINE_SCENARIO_EXTRAS_DEFAULT,
628945
628966
  _resetLiveInitToolFaceForTest: () => _resetLiveInitToolFaceForTest,
628946
628967
  probeScenarioTools: () => probeScenarioTools,
628947
- resolveLiveInitToolFace: () => resolveLiveInitToolFace
628968
+ resolveLiveInitToolFace: () => resolveLiveInitToolFace,
628969
+ runnerFaceForEnv: () => runnerFaceForEnv
628948
628970
  });
628971
+ function runnerFaceForEnv(env5) {
628972
+ let face = [...ENGINE_RUNNER_FACE];
628973
+ if (env5.SCHEDULER_ENABLED === "false") {
628974
+ face = face.filter((n2) => !["CronCreate", "CronDelete", "CronList", "ScheduleWakeup"].includes(n2));
628975
+ }
628976
+ if (env5.SELF_ORCHESTRATION_ENABLED === "false") {
628977
+ face = face.filter((n2) => n2 !== "Workflow");
628978
+ }
628979
+ return face;
628980
+ }
628949
628981
  function _resetLiveInitToolFaceForTest() {
628950
628982
  cached4 = null;
628951
628983
  }
@@ -628999,7 +629031,7 @@ async function resolveLiveInitToolFace(argv, env5, opts) {
628999
629031
  ...askUserQuestion ? ["AskUserQuestion"] : [],
629000
629032
  ...webSearch ? ["WebSearch"] : []
629001
629033
  ];
629002
- const key = `${baseUrl}::${scenario2 ?? ""}::${askUserQuestion ? "q" : ""}${webSearch ? "w" : ""}`;
629034
+ const key = `${baseUrl}::${scenario2 ?? ""}::${askUserQuestion ? "q" : ""}${webSearch ? "w" : ""}::${env5.SCHEDULER_ENABLED === "false" ? "ns" : ""}${env5.SELF_ORCHESTRATION_ENABLED === "false" ? "nw" : ""}`;
629003
629035
  if (cached4 && cached4.key === key) return cached4.face;
629004
629036
  let names;
629005
629037
  let source = "wire-vocabulary";
@@ -629019,7 +629051,7 @@ async function resolveLiveInitToolFace(argv, env5, opts) {
629019
629051
  });
629020
629052
  if (probed) {
629021
629053
  const handsBand = probed.toolset === "full-body" ? ENGINE_HANDS_BAND : [];
629022
- names = [.../* @__PURE__ */ new Set([...probed.tools, ...handsBand, ...ENGINE_RUNNER_FACE, ...knobTools])];
629054
+ names = [.../* @__PURE__ */ new Set([...probed.tools, ...handsBand, ...runnerFaceForEnv(env5), ...knobTools])];
629023
629055
  source = "scenario-probe";
629024
629056
  if (env5.SEMA_DEBUG) {
629025
629057
  console.error(
@@ -629027,7 +629059,7 @@ async function resolveLiveInitToolFace(argv, env5, opts) {
629027
629059
  );
629028
629060
  }
629029
629061
  } else {
629030
- names = [...ENGINE_HANDS_BAND, ...ENGINE_SCENARIO_EXTRAS_DEFAULT, ...ENGINE_RUNNER_FACE, ...knobTools];
629062
+ names = [...ENGINE_HANDS_BAND, ...ENGINE_SCENARIO_EXTRAS_DEFAULT, ...runnerFaceForEnv(env5), ...knobTools];
629031
629063
  if (env5.SEMA_DEBUG) {
629032
629064
  console.error(
629033
629065
  `[sema] init tool face: scenario "${scenario2}" detail probe unavailable \u2014 falling back to the default wire vocabulary (may not match this scenario's roster)`
@@ -629035,7 +629067,7 @@ async function resolveLiveInitToolFace(argv, env5, opts) {
629035
629067
  }
629036
629068
  }
629037
629069
  } else {
629038
- names = [...ENGINE_HANDS_BAND, ...ENGINE_SCENARIO_EXTRAS_DEFAULT, ...ENGINE_RUNNER_FACE, ...knobTools];
629070
+ names = [...ENGINE_HANDS_BAND, ...ENGINE_SCENARIO_EXTRAS_DEFAULT, ...runnerFaceForEnv(env5), ...knobTools];
629039
629071
  }
629040
629072
  const face = { tools: names.map((name) => ({ name })), source };
629041
629073
  cached4 = { key, face };
@@ -629496,6 +629528,10 @@ async function* ask(params) {
629496
629528
  if (selfOrchestration && process.env.SEMA_DEBUG) {
629497
629529
  console.error("[sema] print-mode ask: selfOrchestration wire \u2192 TaskRequest.selfOrchestration=true (run_workflow)");
629498
629530
  }
629531
+ const retainBackground = process.env.SEMA_LIVE_BASEURL ? retainBackgroundFromEnv() : void 0;
629532
+ if (retainBackground && process.env.SEMA_DEBUG) {
629533
+ console.error("[sema] print-mode ask: retainBackground wire \u2192 TaskRequest.retainBackgroundProcesses=true");
629534
+ }
629499
629535
  const attachments = process.env.SEMA_LIVE_BASEURL ? attachmentsForRequest() : void 0;
629500
629536
  if (attachments && process.env.SEMA_DEBUG) {
629501
629537
  console.error(`[sema] print-mode ask: attachments wire \u2192 TaskRequest.attachments (${Object.keys(attachments).join("+")})`);
@@ -629687,6 +629723,7 @@ async function* ask(params) {
629687
629723
  ...interactiveToolsField.interactiveTools === false ? { interactiveTools: false } : {},
629688
629724
  ...webSearch || wireHooks ? { settings: { ...webSearch ? { webSearch } : {}, ...wireHooks ? { hooks: wireHooks } : {} } } : {},
629689
629725
  ...selfOrchestration ? { selfOrchestration } : {},
629726
+ ...retainBackground ? { retainBackgroundProcesses: retainBackground } : {},
629690
629727
  ...enableFork !== void 0 ? { enableFork } : {},
629691
629728
  ...attachments ? { attachments } : {},
629692
629729
  ...skillsMcpFields
@@ -629877,6 +629914,7 @@ var init_seamQueryEngine = __esm({
629877
629914
  init_mockClient();
629878
629915
  init_webSearchWireCaps();
629879
629916
  init_selfOrchestrationWireCaps();
629917
+ init_retainBackgroundWireCaps();
629880
629918
  init_forkWireCaps();
629881
629919
  init_attachmentsWireCaps();
629882
629920
  init_hooksWireCaps();
@@ -640538,6 +640576,7 @@ async function ensurePrintModeEngine() {
640538
640576
  async function ensureLocalEngineOneShot(label = "one-shot") {
640539
640577
  seedUserSettingsEnv();
640540
640578
  process.env.SCHEDULER_SESSION_WAKEUP ??= "false";
640579
+ process.env.SCHEDULER_ENABLED ??= "false";
640541
640580
  try {
640542
640581
  const { applyPersistedTlsTrust: applyPersistedTlsTrust2 } = await Promise.resolve().then(() => (init_tlsTrust(), tlsTrust_exports));
640543
640582
  await applyPersistedTlsTrust2();
@@ -653790,7 +653829,7 @@ Auth: unix socket -R \u2192 local proxy`, "info");
653790
653829
  pendingHookMessages
653791
653830
  }, renderAndRun);
653792
653831
  }
653793
- }).version("sema 1.0.14", "-v, --version", "Output the version number");
653832
+ }).version("sema 1.0.15", "-v, --version", "Output the version number");
653794
653833
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
653795
653834
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
653796
653835
  if (canUserConfigureAdvisor()) {