@sema-agent/cli 1.0.71 → 1.0.72
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.
- package/npm-shrinkwrap.json +10 -10
- package/package.json +4 -4
- package/sema-main.js +79 -37
- package/sema.js +1 -1
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sema-agent/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.72",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@sema-agent/cli",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.72",
|
|
10
10
|
"license": "BUSL-1.1",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@sema-agent/sdk": "6.
|
|
13
|
-
"@sema-agent/server": "7.
|
|
12
|
+
"@sema-agent/sdk": "6.12.0",
|
|
13
|
+
"@sema-agent/server": "7.9.0"
|
|
14
14
|
},
|
|
15
15
|
"bin": {
|
|
16
16
|
"sema": "sema.js"
|
|
@@ -660,18 +660,18 @@
|
|
|
660
660
|
}
|
|
661
661
|
},
|
|
662
662
|
"node_modules/@sema-agent/sdk": {
|
|
663
|
-
"version": "6.
|
|
664
|
-
"resolved": "https://registry.npmjs.org/@sema-agent/sdk/-/sdk-6.
|
|
665
|
-
"integrity": "sha512-
|
|
663
|
+
"version": "6.12.0",
|
|
664
|
+
"resolved": "https://registry.npmjs.org/@sema-agent/sdk/-/sdk-6.12.0.tgz",
|
|
665
|
+
"integrity": "sha512-ClQAUAV7i4Uz9CJfjvlczttTSfce1qEfwoyWXvZzFBWtL1GPgNCcQ90aY+GwqJGUHscpVgMlt3tPkfAjSZGE7A==",
|
|
666
666
|
"license": "BUSL-1.1",
|
|
667
667
|
"engines": {
|
|
668
668
|
"node": ">=20"
|
|
669
669
|
}
|
|
670
670
|
},
|
|
671
671
|
"node_modules/@sema-agent/server": {
|
|
672
|
-
"version": "7.
|
|
673
|
-
"resolved": "https://registry.npmjs.org/@sema-agent/server/-/server-7.
|
|
674
|
-
"integrity": "sha512-
|
|
672
|
+
"version": "7.9.0",
|
|
673
|
+
"resolved": "https://registry.npmjs.org/@sema-agent/server/-/server-7.9.0.tgz",
|
|
674
|
+
"integrity": "sha512-hV1WYbv9kjS+JlRRjxLY0L3ssFrSIBe2+sQ0TZ34cYGLMybYROWE8PvGAGWuVmMW5kxWuqXnty8gXCNOD698fg==",
|
|
675
675
|
"license": "BUSL-1.1",
|
|
676
676
|
"dependencies": {
|
|
677
677
|
"@sema-agent/core": "^5.21.0",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sema-agent/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.72",
|
|
4
4
|
"description": "Sema — your own Claude Code-grade coding agent, in the terminal.",
|
|
5
5
|
"license": "BUSL-1.1",
|
|
6
6
|
"bin": {
|
|
@@ -22,14 +22,14 @@
|
|
|
22
22
|
"sema"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@sema-agent/sdk": "6.
|
|
26
|
-
"@sema-agent/server": "7.
|
|
25
|
+
"@sema-agent/sdk": "6.12.0",
|
|
26
|
+
"@sema-agent/server": "7.9.0"
|
|
27
27
|
},
|
|
28
28
|
"overrides": {
|
|
29
29
|
"@sema-agent/core": "5.21.1",
|
|
30
30
|
"@sema-agent/registry-core": "0.16.0"
|
|
31
31
|
},
|
|
32
|
-
"semaEngineVersion": "server 7.
|
|
32
|
+
"semaEngineVersion": "server 7.9.0 / core 5.21.1 / registry-core 0.16.0",
|
|
33
33
|
"engines": {
|
|
34
34
|
"node": ">=20.3"
|
|
35
35
|
}
|
package/sema-main.js
CHANGED
|
@@ -53482,6 +53482,7 @@ __export(settings_exports2, {
|
|
|
53482
53482
|
loadManagedFileSettings: () => loadManagedFileSettings,
|
|
53483
53483
|
parseSettingsFile: () => parseSettingsFile,
|
|
53484
53484
|
rawSettingsContainsKey: () => rawSettingsContainsKey,
|
|
53485
|
+
settingsLoudNoticesActive: () => settingsLoudNoticesActive,
|
|
53485
53486
|
settingsMergeCustomizer: () => settingsMergeCustomizer,
|
|
53486
53487
|
updateSettingsForSource: () => updateSettingsForSource
|
|
53487
53488
|
});
|
|
@@ -53543,17 +53544,22 @@ function noteInvalidSettingsJson(path28, content) {
|
|
|
53543
53544
|
function invalidSettingsWarningActive() {
|
|
53544
53545
|
return invalidSettingsDetail;
|
|
53545
53546
|
}
|
|
53547
|
+
function settingsLoudNoticesActive() {
|
|
53548
|
+
return [...loudSettingsNotices];
|
|
53549
|
+
}
|
|
53546
53550
|
function noteSettingsKeysRejected(path28, keyPaths) {
|
|
53547
|
-
|
|
53548
|
-
|
|
53549
|
-
`
|
|
53550
|
-
)
|
|
53551
|
+
if (warnedRejectedKeyPaths.has(path28)) return;
|
|
53552
|
+
warnedRejectedKeyPaths.add(path28);
|
|
53553
|
+
let msg = `settings rejected key(s) ${keyPaths.map((k2) => `'${k2}'`).join(", ")} in ${path28} \u2014 invalid value(s); these keys are ignored, the rest of the file is kept`;
|
|
53554
|
+
loudSettingsNotices.push(msg), process.stderr.write(`[sema] ${msg}
|
|
53555
|
+
`);
|
|
53551
53556
|
}
|
|
53552
53557
|
function noteSettingsFileUnreadable(path28, code2) {
|
|
53553
|
-
|
|
53554
|
-
|
|
53555
|
-
`
|
|
53556
|
-
)
|
|
53558
|
+
if (warnedUnreadableSettingsPaths.has(path28)) return;
|
|
53559
|
+
warnedUnreadableSettingsPaths.add(path28);
|
|
53560
|
+
let msg = `settings ValidationError: file unreadable (${code2}) \u2014 its settings (including permissions) are not applied: ${path28}`;
|
|
53561
|
+
loudSettingsNotices.push(msg), process.stderr.write(`[sema] ${msg}
|
|
53562
|
+
`);
|
|
53557
53563
|
}
|
|
53558
53564
|
function stripInvalidSettingsPaths(data, issues) {
|
|
53559
53565
|
let dropped2 = [];
|
|
@@ -53997,7 +54003,7 @@ function rawSettingsContainsKey(key) {
|
|
|
53997
54003
|
}
|
|
53998
54004
|
return !1;
|
|
53999
54005
|
}
|
|
54000
|
-
var warnedInvalidSettingsPaths, invalidSettingsDetail, warnedRejectedKeyPaths, warnedUnreadableSettingsPaths, SALVAGEABLE_PERMISSION_SCALAR_KEYS, SALVAGEABLE_TOP_LEVEL_KEYS, isLoadingSettings, getSettings_DEPRECATED, init_settings2 = __esm({
|
|
54006
|
+
var warnedInvalidSettingsPaths, invalidSettingsDetail, loudSettingsNotices, warnedRejectedKeyPaths, warnedUnreadableSettingsPaths, SALVAGEABLE_PERMISSION_SCALAR_KEYS, SALVAGEABLE_TOP_LEVEL_KEYS, isLoadingSettings, getSettings_DEPRECATED, init_settings2 = __esm({
|
|
54001
54007
|
"build-src/src/utils/settings/settings.ts"() {
|
|
54002
54008
|
init_mergeWith();
|
|
54003
54009
|
init_state();
|
|
@@ -54031,6 +54037,7 @@ var warnedInvalidSettingsPaths, invalidSettingsDetail, warnedRejectedKeyPaths, w
|
|
|
54031
54037
|
return settings2 !== null && Object.keys(settings2).length > 0;
|
|
54032
54038
|
});
|
|
54033
54039
|
warnedInvalidSettingsPaths = /* @__PURE__ */ new Set(), invalidSettingsDetail = null;
|
|
54040
|
+
loudSettingsNotices = [];
|
|
54034
54041
|
warnedRejectedKeyPaths = /* @__PURE__ */ new Set();
|
|
54035
54042
|
warnedUnreadableSettingsPaths = /* @__PURE__ */ new Set();
|
|
54036
54043
|
SALVAGEABLE_PERMISSION_SCALAR_KEYS = /* @__PURE__ */ new Set([
|
|
@@ -313186,7 +313193,7 @@ function useClaudeAiLimits() {
|
|
|
313186
313193
|
}
|
|
313187
313194
|
var import_react69, init_claudeAiLimitsHook = __esm({
|
|
313188
313195
|
"build-src/src/services/claudeAiLimitsHook.ts"() {
|
|
313189
|
-
import_react69 = __toESM(require_react());
|
|
313196
|
+
import_react69 = __toESM(require_react(), 1);
|
|
313190
313197
|
init_claudeAiLimits();
|
|
313191
313198
|
}
|
|
313192
313199
|
});
|
|
@@ -396274,15 +396281,15 @@ var sema_brand_default, init_sema_brand = __esm({
|
|
|
396274
396281
|
_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"
|
|
396275
396282
|
},
|
|
396276
396283
|
whatsNew: {
|
|
396277
|
-
version: "1.0.
|
|
396284
|
+
version: "1.0.72",
|
|
396278
396285
|
notes: [
|
|
396279
|
-
"
|
|
396280
|
-
"
|
|
396281
|
-
"
|
|
396286
|
+
"Settings rejections now visible in the interactive session: trust-ceiling drops, per-key salvage, unreadable files and whole-file rejections all land as transcript notices (stderr stays for headless lanes)",
|
|
396287
|
+
"Engine 7.9.0: run journal gains additive provenance keys (SDK ^6.12.0 rides along)",
|
|
396288
|
+
"Invalid permissions.defaultMode words and salvaged bad keys announce themselves on screen instead of vanishing"
|
|
396282
396289
|
]
|
|
396283
396290
|
},
|
|
396284
|
-
productVersion: "1.0.
|
|
396285
|
-
announcement: "sema 1.0.
|
|
396291
|
+
productVersion: "1.0.72",
|
|
396292
|
+
announcement: "sema 1.0.72 \u2014 Settings rejections become visible where you work: the interactive session now prints a transcript notice for every trust-ceiling drop, salvaged bad key, unreadable settings file and whole-file rejection (the alt-screen used to swallow these stderr warnings entirely; headless lanes keep the stderr form). Invalid permissions.defaultMode words announce themselves too. Engine 7.9.0 rides in with additive run-journal provenance keys (SDK ^6.12.0 in the same seat). Fully backward compatible \u2014 no data migration."
|
|
396286
396293
|
};
|
|
396287
396294
|
}
|
|
396288
396295
|
});
|
|
@@ -400483,15 +400490,15 @@ var require_sema_brand = __commonJS({
|
|
|
400483
400490
|
_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"
|
|
400484
400491
|
},
|
|
400485
400492
|
whatsNew: {
|
|
400486
|
-
version: "1.0.
|
|
400493
|
+
version: "1.0.72",
|
|
400487
400494
|
notes: [
|
|
400488
|
-
"
|
|
400489
|
-
"
|
|
400490
|
-
"
|
|
400495
|
+
"Settings rejections now visible in the interactive session: trust-ceiling drops, per-key salvage, unreadable files and whole-file rejections all land as transcript notices (stderr stays for headless lanes)",
|
|
400496
|
+
"Engine 7.9.0: run journal gains additive provenance keys (SDK ^6.12.0 rides along)",
|
|
400497
|
+
"Invalid permissions.defaultMode words and salvaged bad keys announce themselves on screen instead of vanishing"
|
|
400491
400498
|
]
|
|
400492
400499
|
},
|
|
400493
|
-
productVersion: "1.0.
|
|
400494
|
-
announcement: "sema 1.0.
|
|
400500
|
+
productVersion: "1.0.72",
|
|
400501
|
+
announcement: "sema 1.0.72 \u2014 Settings rejections become visible where you work: the interactive session now prints a transcript notice for every trust-ceiling drop, salvaged bad key, unreadable settings file and whole-file rejection (the alt-screen used to swallow these stderr warnings entirely; headless lanes keep the stderr form). Invalid permissions.defaultMode words announce themselves too. Engine 7.9.0 rides in with additive run-journal provenance keys (SDK ^6.12.0 in the same seat). Fully backward compatible \u2014 no data migration."
|
|
400495
400502
|
};
|
|
400496
400503
|
}
|
|
400497
400504
|
});
|
|
@@ -447694,12 +447701,23 @@ var TRUST_RANK, UNIT_CATEGORY, KILL_SWITCHES, init_keyContracts = __esm({
|
|
|
447694
447701
|
});
|
|
447695
447702
|
|
|
447696
447703
|
// build-src/src/sema/settings/resolver.ts
|
|
447704
|
+
var resolver_exports = {};
|
|
447705
|
+
__export(resolver_exports, {
|
|
447706
|
+
OverrideLockViolation: () => OverrideLockViolation,
|
|
447707
|
+
permissionsLoosens: () => permissionsLoosens,
|
|
447708
|
+
resolveEffectiveSettings: () => resolveEffectiveSettings,
|
|
447709
|
+
resolverLoudNoticesActive: () => resolverLoudNoticesActive
|
|
447710
|
+
});
|
|
447711
|
+
function resolverLoudNoticesActive() {
|
|
447712
|
+
return [...resolverLoudNotices];
|
|
447713
|
+
}
|
|
447697
447714
|
function warnInvalidDefaultMode(raw2, sourceTrust) {
|
|
447698
447715
|
let key = `${sourceTrust}:${raw2}`;
|
|
447699
|
-
|
|
447700
|
-
|
|
447701
|
-
`
|
|
447702
|
-
)
|
|
447716
|
+
if (warnedInvalidModes.has(key)) return;
|
|
447717
|
+
warnedInvalidModes.add(key);
|
|
447718
|
+
let msg = `settings: permissions.defaultMode '${raw2}' (from ${sourceTrust} settings) is not a valid mode \u2014 ignored, default tier kept. Allowed: ${USER_ADDRESSABLE_PERMISSION_MODES.join(", ")}`;
|
|
447719
|
+
resolverLoudNotices.push(msg), process.stderr.write(`[sema] ${msg}
|
|
447720
|
+
`);
|
|
447703
447721
|
}
|
|
447704
447722
|
function warnTrustDowngrade(unit, layerTrust, required2) {
|
|
447705
447723
|
let key = `${layerTrust}:${unit}`;
|
|
@@ -447842,7 +447860,7 @@ function foldEnv(base, next) {
|
|
|
447842
447860
|
return { ...base, ...next };
|
|
447843
447861
|
}
|
|
447844
447862
|
function resolveEffectiveSettings(layers2) {
|
|
447845
|
-
let trustSkipped = /* @__PURE__ */ new Set();
|
|
447863
|
+
let trustSkipped = /* @__PURE__ */ new Set(), rejections = [];
|
|
447846
447864
|
for (let i = 0; i < layers2.length; i++) {
|
|
447847
447865
|
let layer = layers2[i];
|
|
447848
447866
|
for (let unit of UNITS) {
|
|
@@ -447850,7 +447868,7 @@ function resolveEffectiveSettings(layers2) {
|
|
|
447850
447868
|
if (!isSet2(v2)) continue;
|
|
447851
447869
|
let contract = contractFor(unit);
|
|
447852
447870
|
if (TRUST_RANK[layer.sourceTrust] < TRUST_RANK[contract.minTrust]) {
|
|
447853
|
-
warnTrustDowngrade(unit, layer.sourceTrust, contract.minTrust), trustSkipped.add(`${i}:${unit}`);
|
|
447871
|
+
warnTrustDowngrade(unit, layer.sourceTrust, contract.minTrust), rejections.push({ unit, layerTrust: layer.sourceTrust, requiredTrust: contract.minTrust }), trustSkipped.add(`${i}:${unit}`);
|
|
447854
447872
|
continue;
|
|
447855
447873
|
}
|
|
447856
447874
|
if (unit === "permissionMode" && v2 === "bypassPermissions")
|
|
@@ -447865,7 +447883,8 @@ function resolveEffectiveSettings(layers2) {
|
|
|
447865
447883
|
permissions: { allow: [], deny: [], ask: [] },
|
|
447866
447884
|
additionalDirectories: [],
|
|
447867
447885
|
env: {},
|
|
447868
|
-
provenance: {}
|
|
447886
|
+
provenance: {},
|
|
447887
|
+
rejections
|
|
447869
447888
|
};
|
|
447870
447889
|
for (let unit of UNITS) {
|
|
447871
447890
|
let contract = contractFor(unit), sourcesByLayer = [], winningLayer = "default", acc = unit === "permissions" ? { allow: [], deny: [], ask: [] } : unit === "additionalDirectories" ? [] : unit === "env" ? {} : void 0;
|
|
@@ -447946,7 +447965,7 @@ function mergeHooksRaw(base, next) {
|
|
|
447946
447965
|
Array.isArray(matchers2) && (out6[event] = [...out6[event] ?? [], ...matchers2]);
|
|
447947
447966
|
return out6;
|
|
447948
447967
|
}
|
|
447949
|
-
var OverrideLockViolation, warnedInvalidModes, warnedTrustDowngrades, UNITS, init_resolver2 = __esm({
|
|
447968
|
+
var OverrideLockViolation, warnedInvalidModes, resolverLoudNotices, warnedTrustDowngrades, UNITS, init_resolver2 = __esm({
|
|
447950
447969
|
"build-src/src/sema/settings/resolver.ts"() {
|
|
447951
447970
|
init_dist10();
|
|
447952
447971
|
init_permissions();
|
|
@@ -447960,7 +447979,7 @@ var OverrideLockViolation, warnedInvalidModes, warnedTrustDowngrades, UNITS, ini
|
|
|
447960
447979
|
}
|
|
447961
447980
|
unit;
|
|
447962
447981
|
detail;
|
|
447963
|
-
}, warnedInvalidModes = /* @__PURE__ */ new Set();
|
|
447982
|
+
}, warnedInvalidModes = /* @__PURE__ */ new Set(), resolverLoudNotices = [];
|
|
447964
447983
|
warnedTrustDowngrades = /* @__PURE__ */ new Set();
|
|
447965
447984
|
UNITS = Object.keys(UNIT_CATEGORY);
|
|
447966
447985
|
}
|
|
@@ -448004,6 +448023,7 @@ function toEffectiveConfig(eff, opts) {
|
|
|
448004
448023
|
), taskSpecOverrides = { toolPolicy };
|
|
448005
448024
|
return handsReadOnly !== void 0 && (taskSpecOverrides.handsReadOnly = handsReadOnly), onAsk !== void 0 && (taskSpecOverrides.onAsk = onAsk), eff.model !== void 0 && (taskSpecOverrides.model = eff.model), {
|
|
448006
448025
|
taskSpecOverrides,
|
|
448026
|
+
rejections: eff.rejections,
|
|
448007
448027
|
hooks: eff.hooks,
|
|
448008
448028
|
env: Object.keys(eff.env).length > 0 ? eff.env : void 0,
|
|
448009
448029
|
model: eff.model,
|
|
@@ -522104,7 +522124,7 @@ Usage: sema --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
522104
522124
|
pendingHookMessages
|
|
522105
522125
|
}, renderAndRun);
|
|
522106
522126
|
}
|
|
522107
|
-
}).version("sema 1.0.
|
|
522127
|
+
}).version("sema 1.0.72", "-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 () => {
|
|
522108
522128
|
await (await Promise.resolve().then(() => (init_bg2(), bg_exports))).psHandler([]), process.exit(process.exitCode ?? 0);
|
|
522109
522129
|
}), program2.command("logs [id]").description("Print a background session's recent terminal output").action(async (id) => {
|
|
522110
522130
|
await (await Promise.resolve().then(() => (init_bg2(), bg_exports))).logsHandler(id, []), process.exit(process.exitCode ?? 0);
|
|
@@ -529503,7 +529523,7 @@ async function launchReplProduction() {
|
|
|
529503
529523
|
let offlineFallback = process.env.SEMA_LIVE_BASEURL ? "unknown" : "opus[1m]";
|
|
529504
529524
|
initialState.mainLoopModel = resolved ?? offlineFallback;
|
|
529505
529525
|
}
|
|
529506
|
-
let bypassModeLaunch = !1;
|
|
529526
|
+
let bypassModeLaunch = !1, settingsRejectionNotices = [];
|
|
529507
529527
|
try {
|
|
529508
529528
|
let argv = process.argv.slice(2), allowDangerouslySkipPermissions = argv.includes("--dangerously-skip-permissions"), pmIdx = argv.indexOf("--permission-mode"), cliPermissionMode = pmIdx >= 0 ? argv[pmIdx + 1] : void 0, { PERMISSION_MODES: PERMISSION_MODES3 } = await Promise.resolve().then(() => (init_PermissionMode(), PermissionMode_exports)), launchMode = ((m2) => !!m2 && PERMISSION_MODES3.includes(m2))(cliPermissionMode) ? cliPermissionMode : allowDangerouslySkipPermissions ? "bypassPermissions" : void 0, settingsDisableBypass = !0;
|
|
529509
529529
|
try {
|
|
@@ -529531,7 +529551,9 @@ async function launchReplProduction() {
|
|
|
529531
529551
|
try {
|
|
529532
529552
|
effectiveConfig = resolveSemaConfig({ launchMode });
|
|
529533
529553
|
let dm = effectiveConfig.derivedMode;
|
|
529534
|
-
tpc.mode = dm === "bypassPermissions" && !isBypassPermissionsModeAvailable ? "default" : dm, bypassModeLaunch = tpc.mode === "bypassPermissions",
|
|
529554
|
+
tpc.mode = dm === "bypassPermissions" && !isBypassPermissionsModeAvailable ? "default" : dm, bypassModeLaunch = tpc.mode === "bypassPermissions", settingsRejectionNotices = effectiveConfig.rejections.map(
|
|
529555
|
+
(r) => `settings rejected key '${r.unit}' from ${r.layerTrust}-trust settings \u2014 requires trust '${r.requiredTrust}' or higher; this key is ignored, other keys in the same file are kept`
|
|
529556
|
+
), process.env.SEMA_DEBUG && console.error(
|
|
529535
529557
|
`[sema] resolver: derivedMode=${dm} \u2192 tpc.mode=${tpc.mode} \xB7 model=${effectiveConfig.model ?? "\u2205"} hooks=${effectiveConfig.hooks ? "set" : "\u2205"} envKeys=${Object.keys(effectiveConfig.env ?? {}).length}`
|
|
529536
529558
|
);
|
|
529537
529559
|
try {
|
|
@@ -529563,7 +529585,7 @@ async function launchReplProduction() {
|
|
|
529563
529585
|
} catch (e) {
|
|
529564
529586
|
let msg = e instanceof Error ? `${e.name}: ${e.message}` : String(e);
|
|
529565
529587
|
process.stderr.write(`[sema] settings rejected \u2014 file ignored, launch-flag mode kept: ${msg}
|
|
529566
|
-
`), process.env.SEMA_DEBUG && console.error("[sema] resolveSemaConfig soft-failed detail:", e);
|
|
529588
|
+
`), settingsRejectionNotices = [`settings rejected \u2014 file ignored, launch-flag mode kept: ${msg}`], process.env.SEMA_DEBUG && console.error("[sema] resolveSemaConfig soft-failed detail:", e);
|
|
529567
529589
|
}
|
|
529568
529590
|
process.env.SEMA_DEBUG && console.error(
|
|
529569
529591
|
`[sema] permission flags: mode=${tpc.mode} bypassAvailable=${isBypassPermissionsModeAvailable} (--dangerously-skip-permissions=${allowDangerouslySkipPermissions} --permission-mode=${cliPermissionMode ?? "\u2205"})`
|
|
@@ -529835,7 +529857,17 @@ async function launchReplProduction() {
|
|
|
529835
529857
|
let { emitStatusSignal: emitStatusSignal2 } = await Promise.resolve().then(() => (init_statusSignal(), statusSignal_exports)), { PRODUCT_VERSION: PRODUCT_VERSION4 } = await Promise.resolve().then(() => (init_productVersion(), productVersion_exports));
|
|
529836
529858
|
emitStatusSignal2("shell_ready", { version: PRODUCT_VERSION4 });
|
|
529837
529859
|
}
|
|
529838
|
-
let { launchRepl: launchRepl2 } = await Promise.resolve().then(() => (init_replLauncher(), replLauncher_exports));
|
|
529860
|
+
let { launchRepl: launchRepl2 } = await Promise.resolve().then(() => (init_replLauncher(), replLauncher_exports)), { createSystemMessage: createSystemMessage3 } = await Promise.resolve().then(() => (init_messages4(), messages_exports2));
|
|
529861
|
+
try {
|
|
529862
|
+
let { settingsLoudNoticesActive: settingsLoudNoticesActive2 } = await Promise.resolve().then(() => (init_settings2(), settings_exports2)), { resolverLoudNoticesActive: resolverLoudNoticesActive2 } = await Promise.resolve().then(() => (init_resolver2(), resolver_exports));
|
|
529863
|
+
settingsRejectionNotices = [
|
|
529864
|
+
...settingsRejectionNotices,
|
|
529865
|
+
...settingsLoudNoticesActive2(),
|
|
529866
|
+
...resolverLoudNoticesActive2()
|
|
529867
|
+
];
|
|
529868
|
+
} catch (eN) {
|
|
529869
|
+
process.env.SEMA_DEBUG && console.error("[sema] settings notices merge soft-failed:", eN);
|
|
529870
|
+
}
|
|
529839
529871
|
await launchRepl2(
|
|
529840
529872
|
root2,
|
|
529841
529873
|
{
|
|
@@ -529875,8 +529907,18 @@ async function launchReplProduction() {
|
|
|
529875
529907
|
// RESUME wire (6b) — when a conversation was restored, seed the REPL the SAME way main.tsx's continue/
|
|
529876
529908
|
// resume branches do (main.tsx:3174-3180): the restored messages + file-history/content-replacement
|
|
529877
529909
|
// snapshots + agent identity. Omitted entirely on a fresh boot (resumeLoaded undefined ⇒ empty prompt).
|
|
529910
|
+
// #221:settings 拒绝转录行(system-informational level=warning)——fresh boot 单独注入,
|
|
529911
|
+
// resume 时 append 在恢复消息之后(同一 initialMessages 通道,CC REPL 原生渲染,零新组件)。
|
|
529912
|
+
...settingsRejectionNotices.length > 0 && !resumeLoaded ? {
|
|
529913
|
+
initialMessages: settingsRejectionNotices.map(
|
|
529914
|
+
(n2) => createSystemMessage3(n2, "warning")
|
|
529915
|
+
)
|
|
529916
|
+
} : {},
|
|
529878
529917
|
...resumeLoaded ? {
|
|
529879
|
-
initialMessages:
|
|
529918
|
+
initialMessages: [
|
|
529919
|
+
...resumeLoaded.messages,
|
|
529920
|
+
...settingsRejectionNotices.map((n2) => createSystemMessage3(n2, "warning"))
|
|
529921
|
+
],
|
|
529880
529922
|
initialFileHistorySnapshots: resumeLoaded.fileHistorySnapshots,
|
|
529881
529923
|
initialContentReplacements: resumeLoaded.contentReplacements,
|
|
529882
529924
|
initialAgentName: resumeLoaded.agentName,
|
package/sema.js
CHANGED
|
@@ -71,7 +71,7 @@ function installBootSignalTailFrame(argv2 = process.argv.slice(2)) {
|
|
|
71
71
|
installBootSignalTailFrame();
|
|
72
72
|
|
|
73
73
|
// build-src/src/sema/preludeEntry.ts
|
|
74
|
-
var versionLine = "sema 1.0.
|
|
74
|
+
var versionLine = "sema 1.0.72" ? "sema 1.0.72" : "";
|
|
75
75
|
var argv = process.argv.slice(2);
|
|
76
76
|
var wantsVersionFastPath = argv.length === 1 && (argv[0] === "--version" || argv[0] === "-v");
|
|
77
77
|
if (wantsVersionFastPath && versionLine) {
|