@sema-agent/cli 1.0.111 → 1.0.112

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.111",
3
+ "version": "1.0.112",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@sema-agent/cli",
9
- "version": "1.0.111",
9
+ "version": "1.0.112",
10
10
  "license": "BUSL-1.1",
11
11
  "dependencies": {
12
12
  "@sema-agent/sdk": "9.3.0",
13
- "@sema-agent/server": "7.75.3"
13
+ "@sema-agent/server": "7.75.4"
14
14
  },
15
15
  "bin": {
16
16
  "sema": "sema.js"
@@ -620,9 +620,9 @@
620
620
  }
621
621
  },
622
622
  "node_modules/@sema-agent/core": {
623
- "version": "7.17.5",
624
- "resolved": "https://registry.npmjs.org/@sema-agent/core/-/core-7.17.5.tgz",
625
- "integrity": "sha512-SnvyYC4UrU9gDz1zhDxWNkgENfVQxpQygK+UE6kS8fY3Af4RMNMBUeaHjmIpIhz+uiU2OvJosHnIJpoBi1MI2Q==",
623
+ "version": "7.17.6",
624
+ "resolved": "https://registry.npmjs.org/@sema-agent/core/-/core-7.17.6.tgz",
625
+ "integrity": "sha512-ubDEJyOLiB8SkaS+nwVIw/Fh8xP56mpgk0rKcIJyNtWBJNQugW6yw9fHd8a9ZTT+lGJQjD+dGH+ITogXshvIqQ==",
626
626
  "license": "BUSL-1.1",
627
627
  "dependencies": {
628
628
  "@modelcontextprotocol/sdk": "1.30.0",
@@ -645,12 +645,12 @@
645
645
  }
646
646
  },
647
647
  "node_modules/@sema-agent/server": {
648
- "version": "7.75.3",
649
- "resolved": "https://registry.npmjs.org/@sema-agent/server/-/server-7.75.3.tgz",
650
- "integrity": "sha512-desXY8ZY/JrwiumG3rrgovqwJZUIPllNpFojLgbHpz4o44HqPXUWUSxIwhqF+G3PEs+y74vGSgzCibpH11XAyw==",
648
+ "version": "7.75.4",
649
+ "resolved": "https://registry.npmjs.org/@sema-agent/server/-/server-7.75.4.tgz",
650
+ "integrity": "sha512-WLh3T2s1RF4EYr+bKOa8UiVRdJHpQwaRkVDC+UgztpnRvx21Bu8lt21H8/N2K/Ub4SXetprhvtitshTUtMjFJA==",
651
651
  "license": "BUSL-1.1",
652
652
  "dependencies": {
653
- "@sema-agent/core": "7.17.5",
653
+ "@sema-agent/core": "7.17.6",
654
654
  "@sema-agent/settings-schema": "1.10.0",
655
655
  "e2b": "^2.28.0",
656
656
  "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.111",
3
+ "version": "1.0.112",
4
4
  "description": "Sema — your own Claude Code-grade coding agent, in the terminal.",
5
5
  "license": "BUSL-1.1",
6
6
  "bin": {
@@ -24,13 +24,13 @@
24
24
  ],
25
25
  "dependencies": {
26
26
  "@sema-agent/sdk": "9.3.0",
27
- "@sema-agent/server": "7.75.3"
27
+ "@sema-agent/server": "7.75.4"
28
28
  },
29
29
  "overrides": {
30
- "@sema-agent/core": "7.17.5",
30
+ "@sema-agent/core": "7.17.6",
31
31
  "@sema-agent/settings-schema": "1.10.0"
32
32
  },
33
- "semaEngineVersion": "server 7.75.3 / core 7.17.5 / settings-schema 1.10.0",
33
+ "semaEngineVersion": "server 7.75.4 / core 7.17.6 / settings-schema 1.10.0",
34
34
  "engines": {
35
35
  "node": ">=20.3"
36
36
  }
package/sema-main.js CHANGED
@@ -288762,7 +288762,7 @@ function FileEditToolUseRejectedMessage(t0) {
288762
288762
  }
288763
288763
  var import_compiler_runtime43, import_jsx_runtime53, MAX_LINES_TO_RENDER, init_FileEditToolUseRejectedMessage = __esm({
288764
288764
  "build-src/src/components/FileEditToolUseRejectedMessage.tsx"() {
288765
- import_compiler_runtime43 = __toESM(require_compiler_runtime());
288765
+ import_compiler_runtime43 = __toESM(require_compiler_runtime(), 1);
288766
288766
  init_useTerminalSize();
288767
288767
  init_cwd();
288768
288768
  init_ink2();
@@ -288770,7 +288770,7 @@ var import_compiler_runtime43, import_jsx_runtime53, MAX_LINES_TO_RENDER, init_F
288770
288770
  init_MessageResponse();
288771
288771
  init_StructuredDiffList();
288772
288772
  init_stringUtils();
288773
- import_jsx_runtime53 = __toESM(require_jsx_runtime()), MAX_LINES_TO_RENDER = 10;
288773
+ import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1), MAX_LINES_TO_RENDER = 10;
288774
288774
  }
288775
288775
  });
288776
288776
 
@@ -432049,24 +432049,21 @@ var sema_brand_default, init_sema_brand = __esm({
432049
432049
  _doc: "displayName/email \u7559 null = \u8FD0\u884C\u65F6\u56DE\u9000(\u540D\u5B57\u53D6\u672C\u673A OS \u7528\u6237\u540D,\u90AE\u7BB1\u4E0D\u663E\u793A)\u3002\u522B\u70E7\u4E2A\u4EBA\u4FE1\u606F\u8FDB\u54C1\u724C\u6587\u4EF6(F-S1-1:\u65B0\u7528\u6237\u66FE\u770B\u5230 Welcome back Clay!)\u3002"
432050
432050
  },
432051
432051
  whatsNew: {
432052
- version: "1.0.111",
432052
+ version: "1.0.112",
432053
432053
  notes: [
432054
- "The bundled engine moves from 7.74.0 to 7.75.3 (core 7.17.5) and the client SDK to 9.3.0. The shared client runtime stays at 0.68.0.",
432055
- "`sema doctor` and the end of onboarding now state the shell read boundary posture in one line, relayed from the engine's contract: the Bash read boundary is a friction floor at the text level, and the security boundary is the execution lane's sandbox. The shell relays the engine's wording and does not add a judgement of its own.",
432056
- "Security: engine 7.75.3 fixes a redaction gap in 7.74.0 (bundled with 1.0.110) where a credential-shaped token directly adjacent to other letters or digits could be replayed unredacted through the run events API. Upgrading is recommended.",
432057
- "Engine notices the shell does not recognise are no longer dropped: they now show as one line with the engine's code and message, in the REPL and on stderr for -p. In -p stream-json output such frames carry `_sema_notice_unlisted_code: true` so automation can tell a relayed message from a shell-rendered one.",
432058
- "When a -p run ends with a failure code this build does not recognise, stderr gets one line `run ended: <code> \u2014 <message>`; stdout is unchanged.",
432059
- "A queued message that a deployment prompt hook blocks now gets one line in the transcript saying it was not accepted; the message stays queued and is resubmitted as-is when the turn ends, so press Up to edit it first.",
432060
- "New `/memory-capture off` asks the engine to stop capturing this session into long-term memory from your next message on (one-way on the engine side; the engine announces when it takes). `/memory-capture on` withdraws the shell-side request; start a new session with /clear to capture again.",
432061
- "With `SEMA_SEND_SETTINGS=full`, a 400 that rejects the settings you sent now explains which keys were unknown versus unsupported, lists any protective keys that did not apply, and points back to the default `rules` mode instead of deleting keys from settings.json. The default mode sends the same rule subset as before.",
432062
- "Engine 7.17.3\u20137.17.5: in the default headless configuration, shell commands that read outside the workspace, name sensitive files, or expand variables now ask once (mandated) instead of running unasked; deployments without an approver see those requests denied when they expire. The shell does not relax this.",
432063
- "Approval cards no longer print `irreversibility: not annotated` when the engine does not carry that axis on the card; the segment is simply omitted, and it is never folded into `reversible`.",
432064
- "`sema --model <id>` (and `--model=<id>`) now sets the session model for the interactive REPL, the same way it already did for `-p`; before, the value was silently ignored and the session started on the default model. `/model current` and the header show the requested model.",
432065
- "Every value-taking root option (for example `--debug-file <path>`, `--sdk-url <url>`, `--teammate-mode <mode>`) is now recognised when starting the interactive REPL, so its value is no longer sent as the first prompt."
432054
+ "The bundled engine moves from 7.75.3 to 7.75.4 (core 7.17.5 to 7.17.6). The shell itself is unchanged in this release; the client SDK stays at 9.3.0 and the shared client runtime at 0.68.0.",
432055
+ "Read these next three together with one precondition: the execute-time recheck they describe runs only where the deployment has pinned the read roots (`READ_FACE=roots`, or `engineReadFace` in your settings). With no configuration at all the engine reports an open read face and the recheck does not run, so these three change nothing for a default single-machine setup. `sema doctor` states the engine's read-boundary posture in the engine's own words.",
432056
+ "Security, where read roots are pinned: a shell read that only leaves the roots once the filesystem resolves it is now refused before the command runs. Previously the check was skipped on the lane sema itself uses to run the engine, so reading through a link pointing outside the roots succeeded with no prompt. It now comes back as a failed tool call naming the resolved path and the directories that are allowed. Upgrading is recommended.",
432057
+ "The same refusal now also covers what a glob expands to: `cat vendor/*` is refused when a match resolves outside the roots, as is a pattern the engine cannot enumerate (an unreadable directory, or one matching more than 256 directories). As the engine reports plainly, this also refuses `ls -d .*` and `cat .*`, because `.*` includes the parent of the root.",
432058
+ "A `..` written after a link is now judged where the kernel actually lands: `cat link/../file` is refused when the link's target sits outside the roots, even though the path reads as if it stayed inside. A `..` that stays inside is unchanged.",
432059
+ "These three are refusals, not questions: they happen after the approval step, so a deployment with no approver sees them refused rather than asked. The refusal message states the fix: declare the link's target as a read root. A deployment that declares its execution environment as isolated skips the check entirely.",
432060
+ "Separately, and with no read-face precondition: `sed` is now judged by what its script does, not only by its flags. A script that names a file or runs a command (`r`, `R`, `w`, `W`, `e`, `s///w FILE`, `s///e`) or a script read from a file (`-f FILE`, `--file=`) asks once before the command would run, the request cannot be cleared by an allow rule, and the command does not execute. Plain `sed -i`, `s///` and `sed -n '1,10p'` are unchanged. `env -- <program>` and `coproc <command>` are handled the same way. Widening the read roots does not clear this one.",
432061
+ "For deployments that keep the engine's control directory and its memory directory on two different mounts: a delegated memory hold is no longer quarantined as polluted when the two cannot be renamed across. Single-mount setups are unchanged, and notes already sitting in quarantine are not brought back automatically.",
432062
+ "Known limitation, stated plainly: the shell read boundary is a friction floor at the text level, not containment. It does not model a file read written inside an inline interpreter script (`perl -e`, `ruby -e`, a script piped to `tclsh`), and `time -p` in front of a command can defeat the check for programs invoked through `xargs`. If a task is not trusted, run it in a sandboxed execution environment rather than relying on this floor."
432066
432063
  ]
432067
432064
  },
432068
- productVersion: "1.0.111",
432069
- announcement: "sema 1.0.111 \u2014 engine pickup + shell fixes: bundled engine 7.75.3 (core 7.17.5), client SDK 9.3.0, client runtime 0.68.0. Security: engine 7.75.3 closes a redaction gap in 7.74.0 \u2014 upgrading is recommended. `sema --model <id>` now sets the interactive session model; every value-taking root option is recognised at startup. Engine notices the shell does not know are shown instead of dropped; `/doctor` states the shell read boundary posture in the engine's own words.",
432065
+ productVersion: "1.0.112",
432066
+ announcement: "sema 1.0.112 \u2014 engine pickup only: bundled engine 7.75.4 (core 7.17.6); the shell, client SDK 9.3.0 and client runtime 0.68.0 are unchanged. Security, for deployments that pin read roots: shell reads that only escape the roots once resolved (a link target, a glob match, a `..` after a link) are now refused before the command runs, on every lane including the default host lane. `sed` scripts that name a file or run a command are judged as scripts. Known limitation: inline interpreter scripts (perl -e, ruby -e) are not modelled yet.",
432070
432067
  version: "1.0.91"
432071
432068
  };
432072
432069
  }
@@ -436399,24 +436396,21 @@ var require_sema_brand = __commonJS({
436399
436396
  _doc: "displayName/email \u7559 null = \u8FD0\u884C\u65F6\u56DE\u9000(\u540D\u5B57\u53D6\u672C\u673A OS \u7528\u6237\u540D,\u90AE\u7BB1\u4E0D\u663E\u793A)\u3002\u522B\u70E7\u4E2A\u4EBA\u4FE1\u606F\u8FDB\u54C1\u724C\u6587\u4EF6(F-S1-1:\u65B0\u7528\u6237\u66FE\u770B\u5230 Welcome back Clay!)\u3002"
436400
436397
  },
436401
436398
  whatsNew: {
436402
- version: "1.0.111",
436399
+ version: "1.0.112",
436403
436400
  notes: [
436404
- "The bundled engine moves from 7.74.0 to 7.75.3 (core 7.17.5) and the client SDK to 9.3.0. The shared client runtime stays at 0.68.0.",
436405
- "`sema doctor` and the end of onboarding now state the shell read boundary posture in one line, relayed from the engine's contract: the Bash read boundary is a friction floor at the text level, and the security boundary is the execution lane's sandbox. The shell relays the engine's wording and does not add a judgement of its own.",
436406
- "Security: engine 7.75.3 fixes a redaction gap in 7.74.0 (bundled with 1.0.110) where a credential-shaped token directly adjacent to other letters or digits could be replayed unredacted through the run events API. Upgrading is recommended.",
436407
- "Engine notices the shell does not recognise are no longer dropped: they now show as one line with the engine's code and message, in the REPL and on stderr for -p. In -p stream-json output such frames carry `_sema_notice_unlisted_code: true` so automation can tell a relayed message from a shell-rendered one.",
436408
- "When a -p run ends with a failure code this build does not recognise, stderr gets one line `run ended: <code> \u2014 <message>`; stdout is unchanged.",
436409
- "A queued message that a deployment prompt hook blocks now gets one line in the transcript saying it was not accepted; the message stays queued and is resubmitted as-is when the turn ends, so press Up to edit it first.",
436410
- "New `/memory-capture off` asks the engine to stop capturing this session into long-term memory from your next message on (one-way on the engine side; the engine announces when it takes). `/memory-capture on` withdraws the shell-side request; start a new session with /clear to capture again.",
436411
- "With `SEMA_SEND_SETTINGS=full`, a 400 that rejects the settings you sent now explains which keys were unknown versus unsupported, lists any protective keys that did not apply, and points back to the default `rules` mode instead of deleting keys from settings.json. The default mode sends the same rule subset as before.",
436412
- "Engine 7.17.3\u20137.17.5: in the default headless configuration, shell commands that read outside the workspace, name sensitive files, or expand variables now ask once (mandated) instead of running unasked; deployments without an approver see those requests denied when they expire. The shell does not relax this.",
436413
- "Approval cards no longer print `irreversibility: not annotated` when the engine does not carry that axis on the card; the segment is simply omitted, and it is never folded into `reversible`.",
436414
- "`sema --model <id>` (and `--model=<id>`) now sets the session model for the interactive REPL, the same way it already did for `-p`; before, the value was silently ignored and the session started on the default model. `/model current` and the header show the requested model.",
436415
- "Every value-taking root option (for example `--debug-file <path>`, `--sdk-url <url>`, `--teammate-mode <mode>`) is now recognised when starting the interactive REPL, so its value is no longer sent as the first prompt."
436401
+ "The bundled engine moves from 7.75.3 to 7.75.4 (core 7.17.5 to 7.17.6). The shell itself is unchanged in this release; the client SDK stays at 9.3.0 and the shared client runtime at 0.68.0.",
436402
+ "Read these next three together with one precondition: the execute-time recheck they describe runs only where the deployment has pinned the read roots (`READ_FACE=roots`, or `engineReadFace` in your settings). With no configuration at all the engine reports an open read face and the recheck does not run, so these three change nothing for a default single-machine setup. `sema doctor` states the engine's read-boundary posture in the engine's own words.",
436403
+ "Security, where read roots are pinned: a shell read that only leaves the roots once the filesystem resolves it is now refused before the command runs. Previously the check was skipped on the lane sema itself uses to run the engine, so reading through a link pointing outside the roots succeeded with no prompt. It now comes back as a failed tool call naming the resolved path and the directories that are allowed. Upgrading is recommended.",
436404
+ "The same refusal now also covers what a glob expands to: `cat vendor/*` is refused when a match resolves outside the roots, as is a pattern the engine cannot enumerate (an unreadable directory, or one matching more than 256 directories). As the engine reports plainly, this also refuses `ls -d .*` and `cat .*`, because `.*` includes the parent of the root.",
436405
+ "A `..` written after a link is now judged where the kernel actually lands: `cat link/../file` is refused when the link's target sits outside the roots, even though the path reads as if it stayed inside. A `..` that stays inside is unchanged.",
436406
+ "These three are refusals, not questions: they happen after the approval step, so a deployment with no approver sees them refused rather than asked. The refusal message states the fix: declare the link's target as a read root. A deployment that declares its execution environment as isolated skips the check entirely.",
436407
+ "Separately, and with no read-face precondition: `sed` is now judged by what its script does, not only by its flags. A script that names a file or runs a command (`r`, `R`, `w`, `W`, `e`, `s///w FILE`, `s///e`) or a script read from a file (`-f FILE`, `--file=`) asks once before the command would run, the request cannot be cleared by an allow rule, and the command does not execute. Plain `sed -i`, `s///` and `sed -n '1,10p'` are unchanged. `env -- <program>` and `coproc <command>` are handled the same way. Widening the read roots does not clear this one.",
436408
+ "For deployments that keep the engine's control directory and its memory directory on two different mounts: a delegated memory hold is no longer quarantined as polluted when the two cannot be renamed across. Single-mount setups are unchanged, and notes already sitting in quarantine are not brought back automatically.",
436409
+ "Known limitation, stated plainly: the shell read boundary is a friction floor at the text level, not containment. It does not model a file read written inside an inline interpreter script (`perl -e`, `ruby -e`, a script piped to `tclsh`), and `time -p` in front of a command can defeat the check for programs invoked through `xargs`. If a task is not trusted, run it in a sandboxed execution environment rather than relying on this floor."
436416
436410
  ]
436417
436411
  },
436418
- productVersion: "1.0.111",
436419
- announcement: "sema 1.0.111 \u2014 engine pickup + shell fixes: bundled engine 7.75.3 (core 7.17.5), client SDK 9.3.0, client runtime 0.68.0. Security: engine 7.75.3 closes a redaction gap in 7.74.0 \u2014 upgrading is recommended. `sema --model <id>` now sets the interactive session model; every value-taking root option is recognised at startup. Engine notices the shell does not know are shown instead of dropped; `/doctor` states the shell read boundary posture in the engine's own words.",
436412
+ productVersion: "1.0.112",
436413
+ announcement: "sema 1.0.112 \u2014 engine pickup only: bundled engine 7.75.4 (core 7.17.6); the shell, client SDK 9.3.0 and client runtime 0.68.0 are unchanged. Security, for deployments that pin read roots: shell reads that only escape the roots once resolved (a link target, a glob match, a `..` after a link) are now refused before the command runs, on every lane including the default host lane. `sed` scripts that name a file or run a command are judged as scripts. Known limitation: inline interpreter scripts (perl -e, ruby -e) are not modelled yet.",
436420
436414
  version: "1.0.91"
436421
436415
  };
436422
436416
  }
@@ -554134,7 +554128,7 @@ Usage: sema --remote "your task description"`, () => gracefulShutdown(1));
554134
554128
  pendingHookMessages
554135
554129
  }, renderAndRun);
554136
554130
  }
554137
- }).version("sema 1.0.111", "-v, --version", "Output the version number"), program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)"), program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux."), canUserConfigureAdvisor() && program2.addOption(new Option("--advisor <model>", "Enable the server-side advisor tool with the specified model (alias or full ID).").hideHelp()), program2.addOption(new Option("--bg, --background", "Start the session as a background agent and return immediately (manage with `sema agents`)")), program2.command("ps").description("List background sessions").action(async () => {
554131
+ }).version("sema 1.0.112", "-v, --version", "Output the version number"), program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)"), program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux."), canUserConfigureAdvisor() && program2.addOption(new Option("--advisor <model>", "Enable the server-side advisor tool with the specified model (alias or full ID).").hideHelp()), program2.addOption(new Option("--bg, --background", "Start the session as a background agent and return immediately (manage with `sema agents`)")), program2.command("ps").description("List background sessions").action(async () => {
554138
554132
  await (await Promise.resolve().then(() => (init_bg2(), bg_exports))).psHandler([]), process.exit(process.exitCode ?? 0);
554139
554133
  }), program2.command("logs [id]").description("Print a background session's recent terminal output").action(async (id) => {
554140
554134
  await (await Promise.resolve().then(() => (init_bg2(), bg_exports))).logsHandler(id, []), process.exit(process.exitCode ?? 0);
package/sema.js CHANGED
@@ -80,7 +80,7 @@ function installBootSignalTailFrame(argv2 = process.argv.slice(2)) {
80
80
  installBootSignalTailFrame();
81
81
 
82
82
  // build-src/src/sema/preludeEntry.ts
83
- var versionLine = "sema 1.0.111" ? "sema 1.0.111" : "";
83
+ var versionLine = "sema 1.0.112" ? "sema 1.0.112" : "";
84
84
  var argv = process.argv.slice(2);
85
85
  var wantsVersionFastPath = argv.length === 1 && (argv[0] === "--version" || argv[0] === "-v");
86
86
  var EARLY_INPUT_PRELUDE_SLOT = /* @__PURE__ */ Symbol.for("sema.earlyInputPrelude");