omnius 1.0.682 → 1.0.684
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/dist/index.js +165 -117
- package/docs/guides/tui-workflows.md +6 -0
- package/npm-shrinkwrap.json +5 -5
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -76076,12 +76076,12 @@ var init_config2 = __esm({
|
|
|
76076
76076
|
this.config.minSavingsThreshold = Math.max(0, Math.min(1, threshold));
|
|
76077
76077
|
this.save();
|
|
76078
76078
|
}
|
|
76079
|
-
setAutoCompress(
|
|
76080
|
-
this.config.autoCompress =
|
|
76079
|
+
setAutoCompress(enabled3) {
|
|
76080
|
+
this.config.autoCompress = enabled3;
|
|
76081
76081
|
this.save();
|
|
76082
76082
|
}
|
|
76083
|
-
setKeepOriginal(
|
|
76084
|
-
this.config.keepOriginal =
|
|
76083
|
+
setKeepOriginal(enabled3) {
|
|
76084
|
+
this.config.keepOriginal = enabled3;
|
|
76085
76085
|
this.save();
|
|
76086
76086
|
}
|
|
76087
76087
|
setCompressionBatchSize(size) {
|
|
@@ -92313,13 +92313,13 @@ ${earlyError ? "\n" + earlyError : ""}${earlyOutput ? "\n" + earlyOutput : ""}`;
|
|
|
92313
92313
|
if (status.networkStack) {
|
|
92314
92314
|
const ns = status.networkStack;
|
|
92315
92315
|
const disc = ns.discovery || {};
|
|
92316
|
-
const
|
|
92316
|
+
const enabled3 = Object.entries(disc).filter(([, value2]) => value2 === true).map(([key2]) => key2).join(", ");
|
|
92317
92317
|
lines.push(` Network role: ${ns.role || "light"}`);
|
|
92318
92318
|
lines.push(` Profile: ${ns.publicMesh === true ? "public mesh (explicit)" : "local LAN"}`);
|
|
92319
92319
|
if (Number.isFinite(Number(ns.maxPeers))) {
|
|
92320
92320
|
lines.push(` Peer budget: ${ns.maxPeers} (dropped: ${ns.droppedPeers || 0})`);
|
|
92321
92321
|
}
|
|
92322
|
-
lines.push(` Discovery: ${
|
|
92322
|
+
lines.push(` Discovery: ${enabled3 || "none"}`);
|
|
92323
92323
|
lines.push(` Signaling: ${ns.signalingServer || "n/a"}`);
|
|
92324
92324
|
if (Array.isArray(ns.manifestUrls) && ns.manifestUrls.length > 0) {
|
|
92325
92325
|
lines.push(` Bootstrap manifests: ${ns.manifestUrls.length}`);
|
|
@@ -118577,7 +118577,7 @@ function setup(env2) {
|
|
|
118577
118577
|
createDebug.coerce = coerce2;
|
|
118578
118578
|
createDebug.disable = disable;
|
|
118579
118579
|
createDebug.enable = enable;
|
|
118580
|
-
createDebug.enabled =
|
|
118580
|
+
createDebug.enabled = enabled3;
|
|
118581
118581
|
createDebug.humanize = c2;
|
|
118582
118582
|
createDebug.destroy = destroy;
|
|
118583
118583
|
Object.keys(env2).forEach((key2) => {
|
|
@@ -118697,7 +118697,7 @@ function setup(env2) {
|
|
|
118697
118697
|
createDebug.enable("");
|
|
118698
118698
|
return namespaces;
|
|
118699
118699
|
}
|
|
118700
|
-
function
|
|
118700
|
+
function enabled3(name10) {
|
|
118701
118701
|
if (name10[name10.length - 1] === "*") {
|
|
118702
118702
|
return true;
|
|
118703
118703
|
}
|
|
@@ -160293,7 +160293,7 @@ var require_common = __commonJS({
|
|
|
160293
160293
|
createDebug.coerce = coerce2;
|
|
160294
160294
|
createDebug.disable = disable;
|
|
160295
160295
|
createDebug.enable = enable;
|
|
160296
|
-
createDebug.enabled =
|
|
160296
|
+
createDebug.enabled = enabled3;
|
|
160297
160297
|
createDebug.humanize = require_ms();
|
|
160298
160298
|
createDebug.destroy = destroy;
|
|
160299
160299
|
Object.keys(env2).forEach((key2) => {
|
|
@@ -160432,7 +160432,7 @@ var require_common = __commonJS({
|
|
|
160432
160432
|
createDebug.enable("");
|
|
160433
160433
|
return namespaces;
|
|
160434
160434
|
}
|
|
160435
|
-
function
|
|
160435
|
+
function enabled3(name10) {
|
|
160436
160436
|
for (const skip of createDebug.skips) {
|
|
160437
160437
|
if (matchesTemplate(name10, skip)) {
|
|
160438
160438
|
return false;
|
|
@@ -366891,13 +366891,13 @@ ${lanes.join("\n")}
|
|
|
366891
366891
|
}
|
|
366892
366892
|
}
|
|
366893
366893
|
var nullTimer = { enter: noop2, exit: noop2 };
|
|
366894
|
-
var
|
|
366894
|
+
var enabled3 = false;
|
|
366895
366895
|
var timeorigin = timestamp2();
|
|
366896
366896
|
var marks = /* @__PURE__ */ new Map();
|
|
366897
366897
|
var counts = /* @__PURE__ */ new Map();
|
|
366898
366898
|
var durations = /* @__PURE__ */ new Map();
|
|
366899
366899
|
function mark(markName) {
|
|
366900
|
-
if (
|
|
366900
|
+
if (enabled3) {
|
|
366901
366901
|
const count = counts.get(markName) ?? 0;
|
|
366902
366902
|
counts.set(markName, count + 1);
|
|
366903
366903
|
marks.set(markName, timestamp2());
|
|
@@ -366908,7 +366908,7 @@ ${lanes.join("\n")}
|
|
|
366908
366908
|
}
|
|
366909
366909
|
}
|
|
366910
366910
|
function measure(measureName, startMarkName, endMarkName) {
|
|
366911
|
-
if (
|
|
366911
|
+
if (enabled3) {
|
|
366912
366912
|
const end = (endMarkName !== void 0 ? marks.get(endMarkName) : void 0) ?? timestamp2();
|
|
366913
366913
|
const start2 = (startMarkName !== void 0 ? marks.get(startMarkName) : void 0) ?? timeorigin;
|
|
366914
366914
|
const previousDuration = durations.get(measureName) || 0;
|
|
@@ -366944,12 +366944,12 @@ ${lanes.join("\n")}
|
|
|
366944
366944
|
performanceImpl == null ? void 0 : performanceImpl.clearMarks(name10);
|
|
366945
366945
|
}
|
|
366946
366946
|
function isEnabled() {
|
|
366947
|
-
return
|
|
366947
|
+
return enabled3;
|
|
366948
366948
|
}
|
|
366949
366949
|
function enable(system = sys) {
|
|
366950
366950
|
var _a2;
|
|
366951
|
-
if (!
|
|
366952
|
-
|
|
366951
|
+
if (!enabled3) {
|
|
366952
|
+
enabled3 = true;
|
|
366953
366953
|
perfHooks || (perfHooks = tryGetNativePerformanceHooks());
|
|
366954
366954
|
if (perfHooks == null ? void 0 : perfHooks.performance) {
|
|
366955
366955
|
timeorigin = perfHooks.performance.timeOrigin;
|
|
@@ -366961,12 +366961,12 @@ ${lanes.join("\n")}
|
|
|
366961
366961
|
return true;
|
|
366962
366962
|
}
|
|
366963
366963
|
function disable() {
|
|
366964
|
-
if (
|
|
366964
|
+
if (enabled3) {
|
|
366965
366965
|
marks.clear();
|
|
366966
366966
|
counts.clear();
|
|
366967
366967
|
durations.clear();
|
|
366968
366968
|
performanceImpl = void 0;
|
|
366969
|
-
|
|
366969
|
+
enabled3 = false;
|
|
366970
366970
|
}
|
|
366971
366971
|
}
|
|
366972
366972
|
var tracing;
|
|
@@ -582982,8 +582982,8 @@ var require_ts_morph = __commonJS({
|
|
|
582982
582982
|
}
|
|
582983
582983
|
var EnableableLogger = class {
|
|
582984
582984
|
#enabled = false;
|
|
582985
|
-
setEnabled(
|
|
582986
|
-
this.#enabled =
|
|
582985
|
+
setEnabled(enabled3) {
|
|
582986
|
+
this.#enabled = enabled3;
|
|
582987
582987
|
}
|
|
582988
582988
|
log(text3) {
|
|
582989
582989
|
if (this.#enabled)
|
|
@@ -602567,8 +602567,8 @@ Node text: ${this.#forgottenText}`;
|
|
|
602567
602567
|
for (const file of this.#getUnsavedSourceFiles())
|
|
602568
602568
|
file.saveSync();
|
|
602569
602569
|
}
|
|
602570
|
-
enableLogging(
|
|
602571
|
-
this._context.logger.setEnabled(
|
|
602570
|
+
enableLogging(enabled3 = true) {
|
|
602571
|
+
this._context.logger.setEnabled(enabled3);
|
|
602572
602572
|
}
|
|
602573
602573
|
#getUnsavedSourceFiles() {
|
|
602574
602574
|
return Array.from(getUnsavedIterator(this._context.compilerFactory.getSourceFilesByDirectoryDepth()));
|
|
@@ -624464,15 +624464,15 @@ var init_registry3 = __esm({
|
|
|
624464
624464
|
const existing = this._plugins.get(manifest.name);
|
|
624465
624465
|
if (existing)
|
|
624466
624466
|
return existing;
|
|
624467
|
-
const
|
|
624467
|
+
const enabled3 = !this._disabledPlugins.has(manifest.name);
|
|
624468
624468
|
const hookHandlers = [];
|
|
624469
624469
|
const plugin = {
|
|
624470
624470
|
manifest,
|
|
624471
624471
|
hookHandlers,
|
|
624472
|
-
enabled:
|
|
624472
|
+
enabled: enabled3
|
|
624473
624473
|
};
|
|
624474
624474
|
this._plugins.set(manifest.name, plugin);
|
|
624475
|
-
if (
|
|
624475
|
+
if (enabled3) {
|
|
624476
624476
|
this._loadPluginModule(plugin);
|
|
624477
624477
|
}
|
|
624478
624478
|
return plugin;
|
|
@@ -695449,8 +695449,8 @@ async function readUserSystemctl(args, timeout2 = 5e3) {
|
|
|
695449
695449
|
}
|
|
695450
695450
|
}
|
|
695451
695451
|
async function hasManagedDaemonService() {
|
|
695452
|
-
const
|
|
695453
|
-
if (
|
|
695452
|
+
const enabled3 = await runUserSystemctl(["is-enabled", "omnius-daemon.service"], 5e3);
|
|
695453
|
+
if (enabled3.ok) return true;
|
|
695454
695454
|
const active = await runUserSystemctl(["is-active", "omnius-daemon.service"], 5e3);
|
|
695455
695455
|
return active.ok;
|
|
695456
695456
|
}
|
|
@@ -704267,8 +704267,8 @@ var init_live_sensors = __esm({
|
|
|
704267
704267
|
setLiveSpeechSink(sink) {
|
|
704268
704268
|
this.liveSpeechSink = sink ?? null;
|
|
704269
704269
|
}
|
|
704270
|
-
setLiveSpeechEnabled(
|
|
704271
|
-
this.liveSpeechEnabled =
|
|
704270
|
+
setLiveSpeechEnabled(enabled3) {
|
|
704271
|
+
this.liveSpeechEnabled = enabled3;
|
|
704272
704272
|
}
|
|
704273
704273
|
setLiveTtsSpeakingSource(source) {
|
|
704274
704274
|
this.liveTtsSpeaking = source ?? null;
|
|
@@ -704419,18 +704419,18 @@ var init_live_sensors = __esm({
|
|
|
704419
704419
|
const target = device2 || this.config.selectedCamera;
|
|
704420
704420
|
return target ? normalizeLiveCameraFps(this.config.cameraStreams?.[target]?.fps ?? DEFAULT_CAMERA_FPS) : DEFAULT_CAMERA_FPS;
|
|
704421
704421
|
}
|
|
704422
|
-
setCameraStreamEnabled(device2,
|
|
704422
|
+
setCameraStreamEnabled(device2, enabled3) {
|
|
704423
704423
|
const target = device2 || this.config.selectedCamera;
|
|
704424
704424
|
if (!target) return null;
|
|
704425
704425
|
const current = this.config.cameraStreams?.[target];
|
|
704426
704426
|
const next = {
|
|
704427
|
-
enabled:
|
|
704427
|
+
enabled: enabled3,
|
|
704428
704428
|
resolution: current?.resolution ?? DEFAULT_CAMERA_RESOLUTION,
|
|
704429
704429
|
fps: current?.fps ?? DEFAULT_CAMERA_FPS
|
|
704430
704430
|
};
|
|
704431
704431
|
this.config = {
|
|
704432
704432
|
...this.config,
|
|
704433
|
-
selectedCamera:
|
|
704433
|
+
selectedCamera: enabled3 ? target : this.config.selectedCamera,
|
|
704434
704434
|
cameraStreams: {
|
|
704435
704435
|
...this.config.cameraStreams ?? {},
|
|
704436
704436
|
[target]: next
|
|
@@ -710625,7 +710625,7 @@ function getAgentToolCommandPolicy(command) {
|
|
|
710625
710625
|
};
|
|
710626
710626
|
}
|
|
710627
710627
|
if (!cmd.surfaces.agentTool) {
|
|
710628
|
-
const flags = Object.entries(cmd.safety).filter(([,
|
|
710628
|
+
const flags = Object.entries(cmd.safety).filter(([, enabled3]) => enabled3).map(([flag]) => flag).join(", ");
|
|
710629
710629
|
return {
|
|
710630
710630
|
allowed: false,
|
|
710631
710631
|
name: cmd.name,
|
|
@@ -714230,14 +714230,14 @@ function ansi2(code8, text3) {
|
|
|
714230
714230
|
function fg256(code8, text3) {
|
|
714231
714231
|
return stdoutIsTTY() ? `\x1B[38;5;${code8}m${text3}\x1B[0m` : text3;
|
|
714232
714232
|
}
|
|
714233
|
-
function setEmojisEnabled(
|
|
714234
|
-
_emojisEnabled =
|
|
714233
|
+
function setEmojisEnabled(enabled3) {
|
|
714234
|
+
_emojisEnabled = enabled3;
|
|
714235
714235
|
}
|
|
714236
714236
|
function getEmojisEnabled() {
|
|
714237
714237
|
return _emojisEnabled;
|
|
714238
714238
|
}
|
|
714239
|
-
function setColorsEnabled(
|
|
714240
|
-
_colorsEnabled =
|
|
714239
|
+
function setColorsEnabled(enabled3) {
|
|
714240
|
+
_colorsEnabled = enabled3;
|
|
714241
714241
|
}
|
|
714242
714242
|
function getColorsEnabled() {
|
|
714243
714243
|
return _colorsEnabled;
|
|
@@ -724847,6 +724847,42 @@ var init_dist9 = __esm({
|
|
|
724847
724847
|
}
|
|
724848
724848
|
});
|
|
724849
724849
|
|
|
724850
|
+
// packages/cli/src/tui/terminal-capabilities.ts
|
|
724851
|
+
function enabled2(value2) {
|
|
724852
|
+
return /^(?:1|true|yes|on)$/i.test(value2?.trim() ?? "");
|
|
724853
|
+
}
|
|
724854
|
+
function isLimitedTerminal(env2) {
|
|
724855
|
+
const term = (env2["TERM"] ?? "").trim().toLowerCase();
|
|
724856
|
+
return /^(?:dumb|linux|cons25|vt100|ansi|unknown)$/.test(term);
|
|
724857
|
+
}
|
|
724858
|
+
function requestsCompatibleChrome(env2) {
|
|
724859
|
+
const profile = (env2["OMNIUS_TUI_PROFILE"] ?? "").trim().toLowerCase();
|
|
724860
|
+
const client = (env2["OMNIUS_TUI_CLIENT_PLATFORM"] ?? "").trim().toLowerCase();
|
|
724861
|
+
return profile === "compatible" || profile === "static" || enabled2(env2["OMNIUS_TUI_STATIC_CHROME"]) || client === "darwin" || client === "macos" || client === "win32" || client === "windows";
|
|
724862
|
+
}
|
|
724863
|
+
function prefersStaticTuiChrome(options2 = {}) {
|
|
724864
|
+
const platform13 = options2.platform ?? process.platform;
|
|
724865
|
+
const env2 = options2.env ?? process.env;
|
|
724866
|
+
if (platform13 === "darwin" || platform13 === "win32") return true;
|
|
724867
|
+
if (requestsCompatibleChrome(env2)) return true;
|
|
724868
|
+
if (enabled2(env2["OMNIUS_TUI_ANIMATED_CHROME"])) return false;
|
|
724869
|
+
if (isLimitedTerminal(env2)) return true;
|
|
724870
|
+
return false;
|
|
724871
|
+
}
|
|
724872
|
+
function supportsOrnamentalTuiButtonEdges(options2 = {}) {
|
|
724873
|
+
const platform13 = options2.platform ?? process.platform;
|
|
724874
|
+
const env2 = options2.env ?? process.env;
|
|
724875
|
+
if (platform13 === "darwin" || platform13 === "win32") return false;
|
|
724876
|
+
if (requestsCompatibleChrome(env2) || isLimitedTerminal(env2)) return false;
|
|
724877
|
+
const locale = (env2["LC_ALL"] || env2["LC_CTYPE"] || env2["LANG"] || "").trim();
|
|
724878
|
+
if (locale && !/utf-?8/i.test(locale)) return false;
|
|
724879
|
+
return true;
|
|
724880
|
+
}
|
|
724881
|
+
var init_terminal_capabilities = __esm({
|
|
724882
|
+
"packages/cli/src/tui/terminal-capabilities.ts"() {
|
|
724883
|
+
}
|
|
724884
|
+
});
|
|
724885
|
+
|
|
724850
724886
|
// packages/cli/src/tui/stageIndicator.ts
|
|
724851
724887
|
function stageForToolName(toolName) {
|
|
724852
724888
|
const name10 = String(toolName ?? "").trim().toLowerCase();
|
|
@@ -724926,6 +724962,9 @@ function supportsTruecolor() {
|
|
|
724926
724962
|
term
|
|
724927
724963
|
);
|
|
724928
724964
|
}
|
|
724965
|
+
function supportsAnimatedTuiChrome() {
|
|
724966
|
+
return supportsTruecolor() && !prefersStaticTuiChrome();
|
|
724967
|
+
}
|
|
724929
724968
|
function isSweepingStage(stage2) {
|
|
724930
724969
|
return SWEEPING_STAGES.has(stage2);
|
|
724931
724970
|
}
|
|
@@ -725033,6 +725072,7 @@ function onStageChange(cb) {
|
|
|
725033
725072
|
var STAGE_META, SWEEPING_STAGES, MAX_GRADIENT_COLS, STAGE_HUE_SPAN, HUE_LUT, _currentStage, _currentDetail, _subscribers;
|
|
725034
725073
|
var init_stageIndicator = __esm({
|
|
725035
725074
|
"packages/cli/src/tui/stageIndicator.ts"() {
|
|
725075
|
+
init_terminal_capabilities();
|
|
725036
725076
|
STAGE_META = {
|
|
725037
725077
|
idle: { label: "idle", weight: "neutral", baseHue: 210 },
|
|
725038
725078
|
planning: { label: "planning", weight: "active", baseHue: 265 },
|
|
@@ -725113,7 +725153,7 @@ function appendSubAgentActivity(entry, value2, maxLines = 3) {
|
|
|
725113
725153
|
}
|
|
725114
725154
|
entry.updatedAt = Date.now();
|
|
725115
725155
|
}
|
|
725116
|
-
function buildSubAgentLiveBlockLines(sourceEntries, width, phase, truecolor =
|
|
725156
|
+
function buildSubAgentLiveBlockLines(sourceEntries, width, phase, truecolor = supportsAnimatedTuiChrome()) {
|
|
725117
725157
|
const entries2 = Array.from(sourceEntries).slice(-MAX_PREVIEW_AGENTS);
|
|
725118
725158
|
if (entries2.length === 0) return [];
|
|
725119
725159
|
const w = Math.max(48, Math.floor(width));
|
|
@@ -725218,7 +725258,7 @@ function trajectoryStage(checkpoint) {
|
|
|
725218
725258
|
return "planning";
|
|
725219
725259
|
}
|
|
725220
725260
|
}
|
|
725221
|
-
function buildTrajectoryLiveBlockLines(checkpoint, width, phase, truecolor =
|
|
725261
|
+
function buildTrajectoryLiveBlockLines(checkpoint, width, phase, truecolor = supportsAnimatedTuiChrome()) {
|
|
725222
725262
|
if (!checkpoint) return [];
|
|
725223
725263
|
const w = Math.max(48, Math.floor(width));
|
|
725224
725264
|
const inner = Math.max(1, w - 4);
|
|
@@ -725284,7 +725324,7 @@ function buildTrajectoryLiveBlockLines(checkpoint, width, phase, truecolor = sup
|
|
|
725284
725324
|
lines.push(paintBlockBorder(bottom, stage2, phase, truecolor));
|
|
725285
725325
|
return lines;
|
|
725286
725326
|
}
|
|
725287
|
-
function buildTrajectoryLiveBlockCollapsedLine(checkpoint, width, phase, truecolor =
|
|
725327
|
+
function buildTrajectoryLiveBlockCollapsedLine(checkpoint, width, phase, truecolor = supportsAnimatedTuiChrome()) {
|
|
725288
725328
|
if (!checkpoint) return [];
|
|
725289
725329
|
const stage2 = trajectoryStage(checkpoint);
|
|
725290
725330
|
const w = Math.max(24, Math.floor(width));
|
|
@@ -725348,7 +725388,7 @@ function expandedRowCap() {
|
|
|
725348
725388
|
}
|
|
725349
725389
|
function paintActiveRowGradient(text3) {
|
|
725350
725390
|
const { stage: stage2 } = getStage();
|
|
725351
|
-
if (!
|
|
725391
|
+
if (!supportsAnimatedTuiChrome() || !isSweepingStage(stage2)) return null;
|
|
725352
725392
|
let out = "";
|
|
725353
725393
|
const SEG = 2;
|
|
725354
725394
|
for (let i2 = 0; i2 < text3.length; i2 += SEG) {
|
|
@@ -725389,8 +725429,8 @@ function setTuiTasksSession(sessionId) {
|
|
|
725389
725429
|
function onTuiTasksHeightChange(cb) {
|
|
725390
725430
|
_onResizeChange = cb;
|
|
725391
725431
|
}
|
|
725392
|
-
function setTuiTasksEnabled(
|
|
725393
|
-
_enabled =
|
|
725432
|
+
function setTuiTasksEnabled(enabled3) {
|
|
725433
|
+
_enabled = enabled3;
|
|
725394
725434
|
scheduleRedraw();
|
|
725395
725435
|
}
|
|
725396
725436
|
function setTuiTasksScope(scope) {
|
|
@@ -728072,7 +728112,7 @@ function setTerminalTitle(task, version5) {
|
|
|
728072
728112
|
process.stdout.write(data);
|
|
728073
728113
|
}
|
|
728074
728114
|
}
|
|
728075
|
-
var EXPERT_TOOL_BASELINES, CONTEXT_SWITCH_OVERHEAD, TURN_PLANNING_OVERHEAD, DEFAULT_TOOL_BASELINE, CODE_READ_CHARS_PER_SEC, PROSE_READ_CHARS_PER_SEC, MIN_CONTENT_FOR_READING, CODE_CONTENT_TOOLS, PROSE_CONTENT_TOOLS, HumanSpeedTracker, PANEL_BG_SEQ, CONTENT_BG_SEQ, BOX_FG, TEXT_PRIMARY, TEXT_DIM, NO_SUB_AGENTS_HEADER_LABEL, HEADER_BUTTON_GLYPH_FG, HEADER_BUTTON_BG, HEADER_BUTTON_FG, HEADER_ACCENT_BOLD_FG, HEADER_TELEGRAM_FG, BOX_TL3, BOX_TR3, BOX_BL3, BOX_BR3, BOX_H3, BOX_V3, BOX_BJ, BOX_TJ, ENHANCE_SEG_INNER, ENHANCE_SPIN_FRAMES, _globalFooterLock, RESET4, CURSOR_BLINK_BLOCK,
|
|
728115
|
+
var EXPERT_TOOL_BASELINES, CONTEXT_SWITCH_OVERHEAD, TURN_PLANNING_OVERHEAD, DEFAULT_TOOL_BASELINE, CODE_READ_CHARS_PER_SEC, PROSE_READ_CHARS_PER_SEC, MIN_CONTENT_FOR_READING, CODE_CONTENT_TOOLS, PROSE_CONTENT_TOOLS, HumanSpeedTracker, PANEL_BG_SEQ, CONTENT_BG_SEQ, BOX_FG, TEXT_PRIMARY, TEXT_DIM, NO_SUB_AGENTS_HEADER_LABEL, HEADER_BUTTON_GLYPH_FG, HEADER_BUTTON_BG, HEADER_BUTTON_FG, HEADER_ACCENT_BOLD_FG, HEADER_TELEGRAM_FG, BOX_TL3, BOX_TR3, BOX_BL3, BOX_BR3, BOX_H3, BOX_V3, BOX_BJ, BOX_TJ, ENHANCE_SEG_INNER, ENHANCE_SPIN_FRAMES, _globalFooterLock, RESET4, CURSOR_BLINK_BLOCK, HEADER_BUTTON_LEFT, HEADER_BUTTON_RIGHT, HEADER_BUTTON_SQUARE_PAD, SPONSOR_HEADER_LABEL_MAX, _termTitleWriter, StatusBar;
|
|
728076
728116
|
var init_status_bar = __esm({
|
|
728077
728117
|
"packages/cli/src/tui/status-bar.ts"() {
|
|
728078
728118
|
init_render();
|
|
@@ -728087,6 +728127,7 @@ var init_status_bar = __esm({
|
|
|
728087
728127
|
init_text_selection();
|
|
728088
728128
|
init_overlay_lock();
|
|
728089
728129
|
init_dist5();
|
|
728130
|
+
init_terminal_capabilities();
|
|
728090
728131
|
init_theme();
|
|
728091
728132
|
init_tool_collapse_store();
|
|
728092
728133
|
init_layout2();
|
|
@@ -728275,9 +728316,9 @@ var init_status_bar = __esm({
|
|
|
728275
728316
|
_globalFooterLock = false;
|
|
728276
728317
|
RESET4 = "\x1B[0m";
|
|
728277
728318
|
CURSOR_BLINK_BLOCK = "\x1B[1 q";
|
|
728278
|
-
|
|
728279
|
-
|
|
728280
|
-
|
|
728319
|
+
HEADER_BUTTON_LEFT = "🭁";
|
|
728320
|
+
HEADER_BUTTON_RIGHT = "🭝";
|
|
728321
|
+
HEADER_BUTTON_SQUARE_PAD = " ";
|
|
728281
728322
|
SPONSOR_HEADER_LABEL_MAX = 48;
|
|
728282
728323
|
_termTitleWriter = null;
|
|
728283
728324
|
StatusBar = class _StatusBar {
|
|
@@ -729029,8 +729070,11 @@ var init_status_bar = __esm({
|
|
|
729029
729070
|
* Each category paginates independently across N pages. */
|
|
729030
729071
|
/** Filled header button whose hue band follows the child agent's current action. */
|
|
729031
729072
|
paintAgentButton(content, stage2, active) {
|
|
729032
|
-
const useTruecolor =
|
|
729033
|
-
const
|
|
729073
|
+
const useTruecolor = supportsAnimatedTuiChrome();
|
|
729074
|
+
const ornamentalEdges = supportsOrnamentalTuiButtonEdges();
|
|
729075
|
+
const chars = Array.from(
|
|
729076
|
+
ornamentalEdges ? content : `${HEADER_BUTTON_SQUARE_PAD}${content}${HEADER_BUTTON_SQUARE_PAD}`
|
|
729077
|
+
);
|
|
729034
729078
|
let body = "";
|
|
729035
729079
|
for (let i2 = 0; i2 < chars.length; i2++) {
|
|
729036
729080
|
const char = chars[i2];
|
|
@@ -729044,6 +729088,7 @@ var init_status_bar = __esm({
|
|
|
729044
729088
|
body += `${active ? "\x1B[1m" : ""}\x1B[38;5;${contrastTextColor(fallback)}m\x1B[48;5;${fallback}m${char}\x1B[0m`;
|
|
729045
729089
|
}
|
|
729046
729090
|
}
|
|
729091
|
+
if (!ornamentalEdges) return `${body}${RESET4}${PANEL_BG_SEQ}`;
|
|
729047
729092
|
const [lr, lg, lb] = stageGradientRgb(stage2, 0, this._stagePhase);
|
|
729048
729093
|
const leftBorder = useTruecolor ? `\x1B[38;2;${lr};${lg};${lb}m` : `\x1B[38;5;${stageFallbackColor(stage2)}m`;
|
|
729049
729094
|
const [rr, rg, rb] = stageGradientRgb(
|
|
@@ -729058,7 +729103,7 @@ var init_status_bar = __esm({
|
|
|
729058
729103
|
const chars = Array.from(value2);
|
|
729059
729104
|
let out = "";
|
|
729060
729105
|
for (let i2 = 0; i2 < chars.length; i2++) {
|
|
729061
|
-
if (
|
|
729106
|
+
if (supportsAnimatedTuiChrome()) {
|
|
729062
729107
|
const [r2, g, b] = stageGradientRgb(stage2, i2 + offset, this._stagePhase);
|
|
729063
729108
|
out += `\x1B[38;2;${r2};${g};${b}m${chars[i2]}`;
|
|
729064
729109
|
} else {
|
|
@@ -729076,6 +729121,9 @@ var init_status_bar = __esm({
|
|
|
729076
729121
|
return `\x1B]8;;${cmdPrefix}\x07${label}\x1B]8;;\x07`;
|
|
729077
729122
|
};
|
|
729078
729123
|
const decorateMenuButton = (cmd, label) => {
|
|
729124
|
+
if (!supportsOrnamentalTuiButtonEdges()) {
|
|
729125
|
+
return `${HEADER_BUTTON_BG}${HEADER_BUTTON_FG}${HEADER_BUTTON_SQUARE_PAD}${label}${HEADER_BUTTON_SQUARE_PAD}\x1B[0m${PANEL_BG_SEQ}`;
|
|
729126
|
+
}
|
|
729079
729127
|
return `${HEADER_BUTTON_GLYPH_FG}${HEADER_BUTTON_LEFT}\x1B[0m${HEADER_BUTTON_BG}${HEADER_BUTTON_FG}${label}\x1B[0m${PANEL_BG_SEQ}${HEADER_BUTTON_GLYPH_FG}${HEADER_BUTTON_RIGHT}\x1B[0m${PANEL_BG_SEQ}`;
|
|
729080
729128
|
};
|
|
729081
729129
|
const renderBtn = (cmd, label) => {
|
|
@@ -729575,7 +729623,7 @@ var init_status_bar = __esm({
|
|
|
729575
729623
|
this.advanceStagePhase();
|
|
729576
729624
|
this.renderFooterPreserveCursor();
|
|
729577
729625
|
refreshTuiTasksAnimationFrame();
|
|
729578
|
-
if ((this._trajectoryLiveBlockAppended || this._subAgentLiveBlockAppended) && this._activeViewId === "main" &&
|
|
729626
|
+
if ((this._trajectoryLiveBlockAppended || this._subAgentLiveBlockAppended) && this._activeViewId === "main" && supportsAnimatedTuiChrome() && (this.stageBorderActive() || this.hasRunningChildAgentView())) {
|
|
729579
729627
|
this.refreshDynamicBlocks();
|
|
729580
729628
|
}
|
|
729581
729629
|
if (this._agentViews.size > 1 && (String(this.currentHeaderPanel).startsWith("sys-") || this._headerExpanded)) {
|
|
@@ -732466,7 +732514,7 @@ ${CONTENT_BG_SEQ}`);
|
|
|
732466
732514
|
/** True when the input-box border should flow with the stage gradient:
|
|
732467
732515
|
* a run is active (sweeping stage) and the terminal supports truecolor. */
|
|
732468
732516
|
stageBorderActive() {
|
|
732469
|
-
return
|
|
732517
|
+
return supportsAnimatedTuiChrome() && isSweepingStage(getStage().stage);
|
|
732470
732518
|
}
|
|
732471
732519
|
/** Paint a raw run of border glyphs with the current stage's gradient band
|
|
732472
732520
|
* (same hue range as the stage indicator block, so the box edges match
|
|
@@ -741288,14 +741336,14 @@ var require_templates = __commonJS({
|
|
|
741288
741336
|
return results;
|
|
741289
741337
|
}
|
|
741290
741338
|
function buildStyle(chalk, styles) {
|
|
741291
|
-
const
|
|
741339
|
+
const enabled3 = {};
|
|
741292
741340
|
for (const layer of styles) {
|
|
741293
741341
|
for (const style of layer.styles) {
|
|
741294
|
-
|
|
741342
|
+
enabled3[style[0]] = layer.inverse ? null : style.slice(1);
|
|
741295
741343
|
}
|
|
741296
741344
|
}
|
|
741297
741345
|
let current = chalk;
|
|
741298
|
-
for (const [styleName, styles2] of Object.entries(
|
|
741346
|
+
for (const [styleName, styles2] of Object.entries(enabled3)) {
|
|
741299
741347
|
if (!Array.isArray(styles2)) {
|
|
741300
741348
|
continue;
|
|
741301
741349
|
}
|
|
@@ -744635,15 +744683,15 @@ function endpointModelCountLabel(ep) {
|
|
|
744635
744683
|
return `all ${ep.models.length} models`;
|
|
744636
744684
|
}
|
|
744637
744685
|
async function stepModelSelection(config, rl, availableRows) {
|
|
744638
|
-
const
|
|
744639
|
-
const totalKnownModels =
|
|
744686
|
+
const enabled3 = config.endpoints.filter((ep) => ep.enabled);
|
|
744687
|
+
const totalKnownModels = enabled3.reduce((sum2, ep) => sum2 + ep.models.length, 0);
|
|
744640
744688
|
if (totalKnownModels === 0) {
|
|
744641
744689
|
renderWarning("No model lists were returned; sponsorship will expose each enabled endpoint's full model set.");
|
|
744642
744690
|
return true;
|
|
744643
744691
|
}
|
|
744644
744692
|
const modelSizesByUrl = /* @__PURE__ */ new Map();
|
|
744645
744693
|
await Promise.all(
|
|
744646
|
-
|
|
744694
|
+
enabled3.filter((ep) => ep.kind === "ollama" && ep.models.length > 0).map(async (ep) => {
|
|
744647
744695
|
const modelSizes = {};
|
|
744648
744696
|
try {
|
|
744649
744697
|
const resp = await fetch(`${ep.url}/api/tags`, { signal: AbortSignal.timeout(5e3) });
|
|
@@ -744661,14 +744709,14 @@ async function stepModelSelection(config, rl, availableRows) {
|
|
|
744661
744709
|
})
|
|
744662
744710
|
);
|
|
744663
744711
|
const selectedByUrl = new Map(
|
|
744664
|
-
|
|
744712
|
+
enabled3.map((ep) => [ep.url, new Set(selectedModelsForEndpoint(ep))])
|
|
744665
744713
|
);
|
|
744666
744714
|
const renderModelLabel = (item) => {
|
|
744667
744715
|
const size = modelSizesByUrl.get(item.endpoint?.url || "")?.[item.modelName];
|
|
744668
744716
|
return `${item.selected ? "[x]" : "[ ]"} ${item.modelName}${size ? ` (${size})` : ""}`;
|
|
744669
744717
|
};
|
|
744670
744718
|
const items = [{ key: "hdr", label: "Select Models to Sponsor", modelName: "", selected: false }];
|
|
744671
|
-
for (const ep of
|
|
744719
|
+
for (const ep of enabled3) {
|
|
744672
744720
|
items.push({
|
|
744673
744721
|
key: `endpoint:${ep.url}`,
|
|
744674
744722
|
label: `${ep.label}`,
|
|
@@ -744694,7 +744742,7 @@ async function stepModelSelection(config, rl, availableRows) {
|
|
|
744694
744742
|
items.push({ key: "all", label: " [A] Select all", modelName: "", selected: false });
|
|
744695
744743
|
items.push({ key: "none", label: " [N] Select none", modelName: "", selected: false });
|
|
744696
744744
|
items.push({ key: "done", label: selectColors.green(" Done →"), modelName: "", selected: false });
|
|
744697
|
-
const endpointSkipKeys =
|
|
744745
|
+
const endpointSkipKeys = enabled3.map((ep) => `endpoint:${ep.url}`);
|
|
744698
744746
|
const result = await tuiSelect({
|
|
744699
744747
|
items,
|
|
744700
744748
|
title: "Step 2/6 — Model Selection",
|
|
@@ -744754,7 +744802,7 @@ async function stepModelSelection(config, rl, availableRows) {
|
|
|
744754
744802
|
renderWarning("Select at least one model before continuing.");
|
|
744755
744803
|
return stepModelSelection(config, rl, availableRows);
|
|
744756
744804
|
}
|
|
744757
|
-
for (const ep of
|
|
744805
|
+
for (const ep of enabled3) {
|
|
744758
744806
|
if (ep.models.length === 0) {
|
|
744759
744807
|
ep.selectedModels = void 0;
|
|
744760
744808
|
continue;
|
|
@@ -751814,11 +751862,11 @@ function writeDirectTerminal(data) {
|
|
|
751814
751862
|
}
|
|
751815
751863
|
}
|
|
751816
751864
|
}
|
|
751817
|
-
function setRawInputMode(
|
|
751865
|
+
function setRawInputMode(enabled3) {
|
|
751818
751866
|
const stdinAny = process.stdin;
|
|
751819
751867
|
try {
|
|
751820
751868
|
if (stdinAny && stdinAny.isTTY && typeof stdinAny.setRawMode === "function") {
|
|
751821
|
-
stdinAny.setRawMode(
|
|
751869
|
+
stdinAny.setRawMode(enabled3);
|
|
751822
751870
|
}
|
|
751823
751871
|
} catch {
|
|
751824
751872
|
}
|
|
@@ -762299,7 +762347,7 @@ async function chooseLiveCameraFps(ctx3, manager, deviceId) {
|
|
|
762299
762347
|
async function showLiveCameraMenu(ctx3, manager, device2) {
|
|
762300
762348
|
while (true) {
|
|
762301
762349
|
const selected = manager.getConfig().selectedCamera === device2.id;
|
|
762302
|
-
const
|
|
762350
|
+
const enabled3 = manager.isCameraStreamEnabled(device2.id);
|
|
762303
762351
|
const resolution = manager.getCameraStreamResolution(device2.id);
|
|
762304
762352
|
const fps = manager.getCameraStreamFps(device2.id);
|
|
762305
762353
|
const items = [
|
|
@@ -762315,7 +762363,7 @@ async function showLiveCameraMenu(ctx3, manager, device2) {
|
|
|
762315
762363
|
},
|
|
762316
762364
|
{
|
|
762317
762365
|
key: "toggle",
|
|
762318
|
-
label:
|
|
762366
|
+
label: enabled3 ? "Disable This Camera Stream" : "Enable This Camera Stream",
|
|
762319
762367
|
detail: "disabled cameras stay available but do not consume ffmpeg/vision resources"
|
|
762320
762368
|
},
|
|
762321
762369
|
{
|
|
@@ -762356,7 +762404,7 @@ async function showLiveCameraMenu(ctx3, manager, device2) {
|
|
|
762356
762404
|
const result = await tuiSelect({
|
|
762357
762405
|
items,
|
|
762358
762406
|
title: `Live Camera — ${device2.id}`,
|
|
762359
|
-
activeKey: selected ? "select" :
|
|
762407
|
+
activeKey: selected ? "select" : enabled3 ? "toggle" : void 0,
|
|
762360
762408
|
rl: ctx3.rl,
|
|
762361
762409
|
availableRows: ctx3.availableContentRows?.(),
|
|
762362
762410
|
skipKeys: liveSkipKeys(items)
|
|
@@ -762369,8 +762417,8 @@ async function showLiveCameraMenu(ctx3, manager, device2) {
|
|
|
762369
762417
|
renderInfo(`Selected camera ${device2.id}.`);
|
|
762370
762418
|
continue;
|
|
762371
762419
|
case "toggle":
|
|
762372
|
-
manager.setCameraStreamEnabled(device2.id, !
|
|
762373
|
-
renderInfo(`${!
|
|
762420
|
+
manager.setCameraStreamEnabled(device2.id, !enabled3);
|
|
762421
|
+
renderInfo(`${!enabled3 ? "Enabled" : "Disabled"} camera stream ${device2.id}.`);
|
|
762374
762422
|
continue;
|
|
762375
762423
|
case "resolution": {
|
|
762376
762424
|
const next = await chooseLiveCameraResolution(ctx3, manager, device2.id);
|
|
@@ -762542,9 +762590,9 @@ async function handleLiveCommand(ctx3, arg) {
|
|
|
762542
762590
|
renderWarning("No camera selected. Use /live camera <device> first.");
|
|
762543
762591
|
return;
|
|
762544
762592
|
}
|
|
762545
|
-
const
|
|
762546
|
-
manager.setCameraStreamEnabled(device2,
|
|
762547
|
-
renderInfo(`${
|
|
762593
|
+
const enabled3 = sub2 === "camera-on" || sub2 === "camera-enable";
|
|
762594
|
+
manager.setCameraStreamEnabled(device2, enabled3);
|
|
762595
|
+
renderInfo(`${enabled3 ? "Enabled" : "Disabled"} camera stream ${device2}.`);
|
|
762548
762596
|
return;
|
|
762549
762597
|
}
|
|
762550
762598
|
if (sub2 === "video") {
|
|
@@ -762561,8 +762609,8 @@ async function handleLiveCommand(ctx3, arg) {
|
|
|
762561
762609
|
}
|
|
762562
762610
|
if (sub2 === "asr") {
|
|
762563
762611
|
const cfg = manager.getConfig();
|
|
762564
|
-
const
|
|
762565
|
-
if (
|
|
762612
|
+
const enabled3 = setBool(value2, !cfg.asrEnabled);
|
|
762613
|
+
if (enabled3) {
|
|
762566
762614
|
manager.configure({ audioEnabled: true, asrEnabled: false });
|
|
762567
762615
|
const asrStarted = await ensureLiveStreamingAsr(ctx3, manager, true);
|
|
762568
762616
|
manager.configure({ asrEnabled: asrStarted });
|
|
@@ -762782,9 +762830,9 @@ async function handleCameraCommand(ctx3, arg) {
|
|
|
762782
762830
|
renderWarning("No camera selected. Use /camera select <device> first.");
|
|
762783
762831
|
return;
|
|
762784
762832
|
}
|
|
762785
|
-
const
|
|
762786
|
-
manager.setCameraStreamEnabled(device2,
|
|
762787
|
-
renderInfo(`${
|
|
762833
|
+
const enabled3 = sub2 === "on" || sub2 === "enable";
|
|
762834
|
+
manager.setCameraStreamEnabled(device2, enabled3);
|
|
762835
|
+
renderInfo(`${enabled3 ? "Enabled" : "Disabled"} camera stream ${device2}.`);
|
|
762788
762836
|
return;
|
|
762789
762837
|
}
|
|
762790
762838
|
if (sub2 === "resolution" || sub2 === "res" || sub2 === "size") {
|
|
@@ -778904,9 +778952,9 @@ function setInferenceThinkingVisible(state5, visible) {
|
|
|
778904
778952
|
state5.showThinking = visible;
|
|
778905
778953
|
state5.version++;
|
|
778906
778954
|
}
|
|
778907
|
-
function setInferenceReadMode(state5,
|
|
778908
|
-
if (state5.readMode ===
|
|
778909
|
-
state5.readMode =
|
|
778955
|
+
function setInferenceReadMode(state5, enabled3) {
|
|
778956
|
+
if (state5.readMode === enabled3) return;
|
|
778957
|
+
state5.readMode = enabled3;
|
|
778910
778958
|
state5.version++;
|
|
778911
778959
|
}
|
|
778912
778960
|
function setInferenceReportedCompletionTokens(state5, completionTokens) {
|
|
@@ -809932,7 +809980,7 @@ ${this.quoteTelegramContextBlock(msg.text, 800)}`,
|
|
|
809932
809980
|
telegramToolPolicy: this.cloneTelegramToolPolicy(this.telegramToolPolicy)
|
|
809933
809981
|
});
|
|
809934
809982
|
}
|
|
809935
|
-
setTelegramToolGroupPolicy(args,
|
|
809983
|
+
setTelegramToolGroupPolicy(args, enabled3, targetChatId) {
|
|
809936
809984
|
const group = String(args["group"] || "").trim().toLowerCase();
|
|
809937
809985
|
if (!TELEGRAM_TOOL_ACTION_GROUPS.includes(group))
|
|
809938
809986
|
throw new Error(`Unknown Telegram action group: ${group || "(missing)"}`);
|
|
@@ -809943,26 +809991,26 @@ ${this.quoteTelegramContextBlock(msg.text, 800)}`,
|
|
|
809943
809991
|
const override = this.telegramToolPolicy.chatOverrides[key2] ?? {};
|
|
809944
809992
|
override.enabledActionGroups = {
|
|
809945
809993
|
...override.enabledActionGroups ?? {},
|
|
809946
|
-
[group]:
|
|
809994
|
+
[group]: enabled3
|
|
809947
809995
|
};
|
|
809948
809996
|
this.telegramToolPolicy.chatOverrides[key2] = override;
|
|
809949
809997
|
} else {
|
|
809950
809998
|
this.telegramToolPolicy.enabledActionGroups = {
|
|
809951
809999
|
...this.telegramToolPolicy.enabledActionGroups ?? {},
|
|
809952
|
-
[group]:
|
|
810000
|
+
[group]: enabled3
|
|
809953
810001
|
};
|
|
809954
810002
|
}
|
|
809955
810003
|
this.persistTelegramToolPolicy();
|
|
809956
810004
|
return {
|
|
809957
810005
|
ok: true,
|
|
809958
|
-
action:
|
|
810006
|
+
action: enabled3 ? "enable_group" : "disable_group",
|
|
809959
810007
|
group,
|
|
809960
810008
|
scope: target.scope,
|
|
809961
810009
|
chat_id: target.chatId,
|
|
809962
|
-
enabled:
|
|
810010
|
+
enabled: enabled3
|
|
809963
810011
|
};
|
|
809964
810012
|
}
|
|
809965
|
-
setTelegramToolActionPolicy(args,
|
|
810013
|
+
setTelegramToolActionPolicy(args, enabled3, targetChatId) {
|
|
809966
810014
|
const toolAction = String(
|
|
809967
810015
|
args["tool_action"] ?? args["telegram_action"] ?? ""
|
|
809968
810016
|
).trim().toLowerCase();
|
|
@@ -809975,23 +810023,23 @@ ${this.quoteTelegramContextBlock(msg.text, 800)}`,
|
|
|
809975
810023
|
const override = this.telegramToolPolicy.chatOverrides[key2] ?? {};
|
|
809976
810024
|
override.enabledActions = {
|
|
809977
810025
|
...override.enabledActions ?? {},
|
|
809978
|
-
[toolAction]:
|
|
810026
|
+
[toolAction]: enabled3
|
|
809979
810027
|
};
|
|
809980
810028
|
this.telegramToolPolicy.chatOverrides[key2] = override;
|
|
809981
810029
|
} else {
|
|
809982
810030
|
this.telegramToolPolicy.enabledActions = {
|
|
809983
810031
|
...this.telegramToolPolicy.enabledActions ?? {},
|
|
809984
|
-
[toolAction]:
|
|
810032
|
+
[toolAction]: enabled3
|
|
809985
810033
|
};
|
|
809986
810034
|
}
|
|
809987
810035
|
this.persistTelegramToolPolicy();
|
|
809988
810036
|
return {
|
|
809989
810037
|
ok: true,
|
|
809990
|
-
action:
|
|
810038
|
+
action: enabled3 ? "enable_action" : "disable_action",
|
|
809991
810039
|
tool_action: toolAction,
|
|
809992
810040
|
scope: target.scope,
|
|
809993
810041
|
chat_id: target.chatId,
|
|
809994
|
-
enabled:
|
|
810042
|
+
enabled: enabled3
|
|
809995
810043
|
};
|
|
809996
810044
|
}
|
|
809997
810045
|
telegramToolButtonPath(nonce) {
|
|
@@ -810021,9 +810069,9 @@ ${this.quoteTelegramContextBlock(msg.text, 800)}`,
|
|
|
810021
810069
|
const policyChatId = state5.policyScope === "chat" ? state5.policyChatId : void 0;
|
|
810022
810070
|
const effective = this.effectiveTelegramToolPolicy(policyChatId);
|
|
810023
810071
|
const rows = TELEGRAM_TOOL_ACTION_GROUPS.map((group) => {
|
|
810024
|
-
const
|
|
810072
|
+
const enabled3 = effective.enabledActionGroups?.[group] ?? DEFAULT_TELEGRAM_TOOL_GROUP_POLICY[group];
|
|
810025
810073
|
return {
|
|
810026
|
-
text: `${
|
|
810074
|
+
text: `${enabled3 ? "[x]" : "[ ]"} ${TELEGRAM_TOOL_BUTTON_LABELS[group]}`,
|
|
810027
810075
|
callback_data: `omni:v1:tgtool:${state5.nonce}:group:${group}`
|
|
810028
810076
|
};
|
|
810029
810077
|
});
|
|
@@ -810480,17 +810528,17 @@ ${this.quoteTelegramContextBlock(msg.text, 800)}`,
|
|
|
810480
810528
|
if (!TELEGRAM_TOOL_ACTION_GROUPS.includes(group))
|
|
810481
810529
|
throw new Error(`Unknown group: ${value2}`);
|
|
810482
810530
|
const policy = this.effectiveTelegramToolPolicy(state5.policyChatId);
|
|
810483
|
-
const
|
|
810531
|
+
const enabled3 = !(policy.enabledActionGroups?.[group] ?? DEFAULT_TELEGRAM_TOOL_GROUP_POLICY[group]);
|
|
810484
810532
|
this.setTelegramToolGroupPolicy(
|
|
810485
810533
|
{
|
|
810486
810534
|
group,
|
|
810487
810535
|
scope: state5.policyScope,
|
|
810488
810536
|
...state5.policyChatId !== void 0 ? { target: String(state5.policyChatId) } : {}
|
|
810489
810537
|
},
|
|
810490
|
-
|
|
810538
|
+
enabled3,
|
|
810491
810539
|
state5.policyChatId
|
|
810492
810540
|
);
|
|
810493
|
-
answerText = `${TELEGRAM_TOOL_BUTTON_LABELS[group]} ${
|
|
810541
|
+
answerText = `${TELEGRAM_TOOL_BUTTON_LABELS[group]} ${enabled3 ? "enabled" : "disabled"}.`;
|
|
810494
810542
|
} else if (kind === "flag" && value2 === "dryrun") {
|
|
810495
810543
|
this.setTelegramToolBooleanPolicy(
|
|
810496
810544
|
state5,
|
|
@@ -815120,12 +815168,12 @@ function buildSyntheticContext(config, repoRoot) {
|
|
|
815120
815168
|
return mode === "auto" ? "Auto mode: transcriptions auto-submit after 3s silence" : "Manual mode: press Enter to submit transcriptions (auto-submit off)";
|
|
815121
815169
|
},
|
|
815122
815170
|
getColors: () => colorsEnabled,
|
|
815123
|
-
setColors: (
|
|
815124
|
-
colorsEnabled =
|
|
815171
|
+
setColors: (enabled3) => {
|
|
815172
|
+
colorsEnabled = enabled3;
|
|
815125
815173
|
},
|
|
815126
815174
|
getSelfModify: () => selfModifyEnabled,
|
|
815127
|
-
setSelfModify: (
|
|
815128
|
-
selfModifyEnabled =
|
|
815175
|
+
setSelfModify: (enabled3) => {
|
|
815176
|
+
selfModifyEnabled = enabled3;
|
|
815129
815177
|
},
|
|
815130
815178
|
saveSettings: (settings) => {
|
|
815131
815179
|
saveProjectSettings(root, settings);
|
|
@@ -823948,8 +823996,8 @@ The user pasted a clipboard image saved at ${relPath}. Use the OCR, vision analy
|
|
|
823948
823996
|
getRealtime() {
|
|
823949
823997
|
return realtimeEnabled;
|
|
823950
823998
|
},
|
|
823951
|
-
setRealtime(
|
|
823952
|
-
realtimeEnabled =
|
|
823999
|
+
setRealtime(enabled3) {
|
|
824000
|
+
realtimeEnabled = enabled3;
|
|
823953
824001
|
},
|
|
823954
824002
|
thinkToggle() {
|
|
823955
824003
|
thinkingEnabled = !thinkingEnabled;
|
|
@@ -824023,8 +824071,8 @@ The user pasted a clipboard image saved at ${relPath}. Use the OCR, vision analy
|
|
|
824023
824071
|
getSelfModify() {
|
|
824024
824072
|
return selfModifyEnabled;
|
|
824025
824073
|
},
|
|
824026
|
-
setSelfModify(
|
|
824027
|
-
selfModifyEnabled =
|
|
824074
|
+
setSelfModify(enabled3) {
|
|
824075
|
+
selfModifyEnabled = enabled3;
|
|
824028
824076
|
},
|
|
824029
824077
|
setStyle(preset) {
|
|
824030
824078
|
currentStyle = preset;
|
|
@@ -825669,9 +825717,9 @@ Respond concisely and safely. Remember: you are talking to the general public.`;
|
|
|
825669
825717
|
}
|
|
825670
825718
|
},
|
|
825671
825719
|
getEmojis: () => getEmojisEnabled(),
|
|
825672
|
-
setEmojis: (
|
|
825720
|
+
setEmojis: (enabled3) => setEmojisEnabled(enabled3),
|
|
825673
825721
|
getColors: () => getColorsEnabled(),
|
|
825674
|
-
setColors: (
|
|
825722
|
+
setColors: (enabled3) => setColorsEnabled(enabled3),
|
|
825675
825723
|
setContextWindowSize: (size) => {
|
|
825676
825724
|
resolvedContextWindowSize = size;
|
|
825677
825725
|
statusBar.setContextWindowSize(size);
|
|
@@ -861936,22 +861984,22 @@ data: ${JSON.stringify(data)}
|
|
|
861936
861984
|
const parts = pathname.split("/");
|
|
861937
861985
|
const id2 = parts[3] ?? "";
|
|
861938
861986
|
const body = await parseJsonBody(req3);
|
|
861939
|
-
const
|
|
861940
|
-
if (!id2 || typeof
|
|
861987
|
+
const enabled3 = typeof body?.enabled === "boolean" ? body.enabled : void 0;
|
|
861988
|
+
if (!id2 || typeof enabled3 === "undefined") {
|
|
861941
861989
|
jsonResponse(res, 400, { error: "Missing id or enabled flag" });
|
|
861942
861990
|
return;
|
|
861943
861991
|
}
|
|
861944
861992
|
let ok3 = false;
|
|
861945
861993
|
if (id2.startsWith("timer:")) {
|
|
861946
861994
|
const name10 = id2.slice("timer:".length);
|
|
861947
|
-
ok3 = setTimerEnabled(name10,
|
|
861995
|
+
ok3 = setTimerEnabled(name10, enabled3);
|
|
861948
861996
|
} else {
|
|
861949
|
-
ok3 = setScheduledEnabled(id2,
|
|
861997
|
+
ok3 = setScheduledEnabled(id2, enabled3);
|
|
861950
861998
|
}
|
|
861951
861999
|
jsonResponse(
|
|
861952
862000
|
res,
|
|
861953
862001
|
ok3 ? 200 : 404,
|
|
861954
|
-
ok3 ? { id: id2, enabled:
|
|
862002
|
+
ok3 ? { id: id2, enabled: enabled3 } : { error: "Not found" }
|
|
861955
862003
|
);
|
|
861956
862004
|
return;
|
|
861957
862005
|
}
|
|
@@ -863759,7 +863807,7 @@ function listScheduledTasks() {
|
|
|
863759
863807
|
const schedule = String(
|
|
863760
863808
|
t2?.schedule || t2?.cron || t2?.when || ""
|
|
863761
863809
|
);
|
|
863762
|
-
const
|
|
863810
|
+
const enabled3 = typeof t2?.enabled === "boolean" ? t2.enabled : true;
|
|
863763
863811
|
const realId = typeof t2?.id === "string" && t2.id ? t2.id : null;
|
|
863764
863812
|
const fallbackId = createHash86("sha1").update(`${file}#${i2}`).digest("hex").slice(0, 16);
|
|
863765
863813
|
const uid = realId || fallbackId;
|
|
@@ -863772,7 +863820,7 @@ function listScheduledTasks() {
|
|
|
863772
863820
|
index: i2,
|
|
863773
863821
|
name: name10,
|
|
863774
863822
|
schedule,
|
|
863775
|
-
enabled:
|
|
863823
|
+
enabled: enabled3
|
|
863776
863824
|
});
|
|
863777
863825
|
});
|
|
863778
863826
|
} catch {
|
|
@@ -863842,7 +863890,7 @@ function walk(dir, depth, onDir, maxDepth) {
|
|
|
863842
863890
|
walk(child2, depth + 1, onDir, maxDepth);
|
|
863843
863891
|
}
|
|
863844
863892
|
}
|
|
863845
|
-
function setScheduledEnabled(id2,
|
|
863893
|
+
function setScheduledEnabled(id2, enabled3) {
|
|
863846
863894
|
const tasks = listScheduledTasks();
|
|
863847
863895
|
const target = tasks.find((t2) => t2.id === id2);
|
|
863848
863896
|
if (!target) return false;
|
|
@@ -863851,7 +863899,7 @@ function setScheduledEnabled(id2, enabled2) {
|
|
|
863851
863899
|
const json2 = JSON.parse(raw);
|
|
863852
863900
|
const arr = Array.isArray(json2?.tasks) ? json2.tasks : Array.isArray(json2) ? json2 : [];
|
|
863853
863901
|
if (!arr[target.index]) return false;
|
|
863854
|
-
arr[target.index].enabled =
|
|
863902
|
+
arr[target.index].enabled = enabled3;
|
|
863855
863903
|
if (Array.isArray(json2?.tasks)) {
|
|
863856
863904
|
json2.tasks = arr;
|
|
863857
863905
|
writeFileSync114(target.file, JSON.stringify(json2, null, 2));
|
|
@@ -863860,7 +863908,7 @@ function setScheduledEnabled(id2, enabled2) {
|
|
|
863860
863908
|
} else {
|
|
863861
863909
|
writeFileSync114(target.file, JSON.stringify({ tasks: arr }, null, 2));
|
|
863862
863910
|
}
|
|
863863
|
-
if (!
|
|
863911
|
+
if (!enabled3) {
|
|
863864
863912
|
try {
|
|
863865
863913
|
removeCronByMarker(id2);
|
|
863866
863914
|
} catch {
|
|
@@ -865937,11 +865985,11 @@ function disableUserTimerById(id2) {
|
|
|
865937
865985
|
} catch {
|
|
865938
865986
|
}
|
|
865939
865987
|
}
|
|
865940
|
-
function setTimerEnabled(name10,
|
|
865988
|
+
function setTimerEnabled(name10, enabled3) {
|
|
865941
865989
|
try {
|
|
865942
865990
|
const unit = `${name10}.timer`;
|
|
865943
865991
|
const { execSync: es } = require4("node:child_process");
|
|
865944
|
-
if (
|
|
865992
|
+
if (enabled3) es(`systemctl --user enable --now ${unit}`, { stdio: "pipe" });
|
|
865945
865993
|
else es(`systemctl --user disable --now ${unit}`, { stdio: "pipe" });
|
|
865946
865994
|
return true;
|
|
865947
865995
|
} catch {
|
|
@@ -25,6 +25,12 @@ Shift+Enter inserts a newline in the prompt box and expands the input area. Ente
|
|
|
25
25
|
|
|
26
26
|
The input box should preserve Unicode line boundaries and avoid overwriting previous lower entries.
|
|
27
27
|
|
|
28
|
+
## Terminal Compatibility
|
|
29
|
+
|
|
30
|
+
Header controls retain ornamental Unicode edges on capable Linux terminals. macOS, Windows, limited terminals, and compatible-profile sessions use background-filled square padding so missing Symbols for Legacy Computing glyphs cannot become replacement boxes.
|
|
31
|
+
|
|
32
|
+
Animated border colors are disabled on macOS, Windows, limited terminals, and explicit compatible-profile sessions. SSH alone does not disable Linux rendering because the host cannot reliably infer the client system or font. Set `OMNIUS_TUI_PROFILE=compatible` or `OMNIUS_TUI_STATIC_CHROME=1` for a limited SSH client. An SSH launcher can instead forward `OMNIUS_TUI_CLIENT_PLATFORM=macos` or `windows`.
|
|
33
|
+
|
|
28
34
|
## Shell Output
|
|
29
35
|
|
|
30
36
|
Shell command output is rendered inside bounded Unicode cards. Dynamic installer output should update inside the shell block with a mini-scroll effect instead of corrupting adjacent UI.
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omnius",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.684",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "omnius",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.684",
|
|
10
10
|
"bundleDependencies": [
|
|
11
11
|
"image-to-ascii"
|
|
12
12
|
],
|
|
@@ -2327,9 +2327,9 @@
|
|
|
2327
2327
|
}
|
|
2328
2328
|
},
|
|
2329
2329
|
"node_modules/@types/node": {
|
|
2330
|
-
"version": "26.4.
|
|
2331
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.4.
|
|
2332
|
-
"integrity": "sha512-
|
|
2330
|
+
"version": "26.4.1",
|
|
2331
|
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.4.1.tgz",
|
|
2332
|
+
"integrity": "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==",
|
|
2333
2333
|
"license": "MIT",
|
|
2334
2334
|
"dependencies": {
|
|
2335
2335
|
"undici-types": "~8.3.0"
|
package/package.json
CHANGED