omnius 1.0.12 → 1.0.13
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 +298 -207
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -249037,11 +249037,11 @@ print("__SESSION__" + json.dumps(_session) + "__SESSION__")
|
|
|
249037
249037
|
* what was previously computed. */
|
|
249038
249038
|
async loadSessionInfo() {
|
|
249039
249039
|
try {
|
|
249040
|
-
const { readFileSync:
|
|
249040
|
+
const { readFileSync: readFileSync102, existsSync: existsSync123 } = await import("node:fs");
|
|
249041
249041
|
const sessionPath2 = join31(this.cwd, ".omnius", "rlm", "session.json");
|
|
249042
249042
|
if (!existsSync123(sessionPath2))
|
|
249043
249043
|
return null;
|
|
249044
|
-
return JSON.parse(
|
|
249044
|
+
return JSON.parse(readFileSync102(sessionPath2, "utf8"));
|
|
249045
249045
|
} catch {
|
|
249046
249046
|
return null;
|
|
249047
249047
|
}
|
|
@@ -249218,10 +249218,10 @@ var init_memory_metabolism = __esm({
|
|
|
249218
249218
|
const trajDir = join32(this.cwd, ".omnius", "rlm-trajectories");
|
|
249219
249219
|
let lessons = [];
|
|
249220
249220
|
try {
|
|
249221
|
-
const { readdirSync: readdirSync42, readFileSync:
|
|
249221
|
+
const { readdirSync: readdirSync42, readFileSync: readFileSync102 } = await import("node:fs");
|
|
249222
249222
|
const files = readdirSync42(trajDir).filter((f2) => f2.endsWith(".jsonl")).sort().reverse().slice(0, 3);
|
|
249223
249223
|
for (const file of files) {
|
|
249224
|
-
const lines =
|
|
249224
|
+
const lines = readFileSync102(join32(trajDir, file), "utf8").split("\n").filter((l2) => l2.trim());
|
|
249225
249225
|
for (const line of lines) {
|
|
249226
249226
|
try {
|
|
249227
249227
|
const entry = JSON.parse(line);
|
|
@@ -249605,14 +249605,14 @@ ${issues.map((i2) => ` - ${i2}`).join("\n")}` : " No issues found."),
|
|
|
249605
249605
|
* Optionally filter by task type for phase-aware context (FSM paper insight).
|
|
249606
249606
|
*/
|
|
249607
249607
|
getTopMemoriesSync(k = 5, taskType) {
|
|
249608
|
-
const { readFileSync:
|
|
249608
|
+
const { readFileSync: readFileSync102, existsSync: existsSync123 } = __require("node:fs");
|
|
249609
249609
|
const metaDir = join32(this.cwd, ".omnius", "memory", "metabolism");
|
|
249610
249610
|
const storeFile = join32(metaDir, "store.json");
|
|
249611
249611
|
if (!existsSync123(storeFile))
|
|
249612
249612
|
return "";
|
|
249613
249613
|
let store2 = [];
|
|
249614
249614
|
try {
|
|
249615
|
-
store2 = JSON.parse(
|
|
249615
|
+
store2 = JSON.parse(readFileSync102(storeFile, "utf8"));
|
|
249616
249616
|
} catch {
|
|
249617
249617
|
return "";
|
|
249618
249618
|
}
|
|
@@ -249634,14 +249634,14 @@ ${issues.map((i2) => ` - ${i2}`).join("\n")}` : " No issues found."),
|
|
|
249634
249634
|
/** Update memory scores based on task outcome. Called after task completion.
|
|
249635
249635
|
* Memories used in successful tasks get boosted. Memories present during failures get decayed. */
|
|
249636
249636
|
updateFromOutcomeSync(surfacedMemoryText, succeeded) {
|
|
249637
|
-
const { readFileSync:
|
|
249637
|
+
const { readFileSync: readFileSync102, writeFileSync: writeFileSync71, existsSync: existsSync123, mkdirSync: mkdirSync76 } = __require("node:fs");
|
|
249638
249638
|
const metaDir = join32(this.cwd, ".omnius", "memory", "metabolism");
|
|
249639
249639
|
const storeFile = join32(metaDir, "store.json");
|
|
249640
249640
|
if (!existsSync123(storeFile))
|
|
249641
249641
|
return;
|
|
249642
249642
|
let store2 = [];
|
|
249643
249643
|
try {
|
|
249644
|
-
store2 = JSON.parse(
|
|
249644
|
+
store2 = JSON.parse(readFileSync102(storeFile, "utf8"));
|
|
249645
249645
|
} catch {
|
|
249646
249646
|
return;
|
|
249647
249647
|
}
|
|
@@ -250088,13 +250088,13 @@ Recommendation: Strategy ${scored[0].index + 1} scores highest.`;
|
|
|
250088
250088
|
// Per EvoSkill (arXiv:2603.02766): retrieve relevant strategies from archive.
|
|
250089
250089
|
/** Retrieve top-K strategies for context injection. Returns "" if none. */
|
|
250090
250090
|
getRelevantStrategiesSync(k = 3, taskType) {
|
|
250091
|
-
const { readFileSync:
|
|
250091
|
+
const { readFileSync: readFileSync102, existsSync: existsSync123 } = __require("node:fs");
|
|
250092
250092
|
const archiveFile = join34(this.cwd, ".omnius", "arche", "variants.json");
|
|
250093
250093
|
if (!existsSync123(archiveFile))
|
|
250094
250094
|
return "";
|
|
250095
250095
|
let variants = [];
|
|
250096
250096
|
try {
|
|
250097
|
-
variants = JSON.parse(
|
|
250097
|
+
variants = JSON.parse(readFileSync102(archiveFile, "utf8"));
|
|
250098
250098
|
} catch {
|
|
250099
250099
|
return "";
|
|
250100
250100
|
}
|
|
@@ -250112,13 +250112,13 @@ Recommendation: Strategy ${scored[0].index + 1} scores highest.`;
|
|
|
250112
250112
|
}
|
|
250113
250113
|
/** Archive a strategy variant synchronously (for task completion path) */
|
|
250114
250114
|
archiveVariantSync(strategy, outcome, tags = []) {
|
|
250115
|
-
const { readFileSync:
|
|
250115
|
+
const { readFileSync: readFileSync102, writeFileSync: writeFileSync71, existsSync: existsSync123, mkdirSync: mkdirSync76 } = __require("node:fs");
|
|
250116
250116
|
const dir = join34(this.cwd, ".omnius", "arche");
|
|
250117
250117
|
const archiveFile = join34(dir, "variants.json");
|
|
250118
250118
|
let variants = [];
|
|
250119
250119
|
try {
|
|
250120
250120
|
if (existsSync123(archiveFile))
|
|
250121
|
-
variants = JSON.parse(
|
|
250121
|
+
variants = JSON.parse(readFileSync102(archiveFile, "utf8"));
|
|
250122
250122
|
} catch {
|
|
250123
250123
|
}
|
|
250124
250124
|
variants.push({
|
|
@@ -251197,9 +251197,17 @@ if __name__ == "__main__":
|
|
|
251197
251197
|
progressHandler = null;
|
|
251198
251198
|
lastProgressMessage = "";
|
|
251199
251199
|
lastProgressAt = 0;
|
|
251200
|
-
|
|
251200
|
+
defaultModel;
|
|
251201
|
+
defaultBackend;
|
|
251202
|
+
constructor(cwd4, ollamaUrl = "http://localhost:11434", defaults3 = {}) {
|
|
251201
251203
|
this.cwd = cwd4;
|
|
251202
251204
|
this.ollamaUrl = ollamaUrl.replace(/\/v1\/?$/, "").replace(/\/$/, "");
|
|
251205
|
+
this.defaultModel = defaults3.model;
|
|
251206
|
+
this.defaultBackend = defaults3.backend;
|
|
251207
|
+
}
|
|
251208
|
+
setDefaults(defaults3) {
|
|
251209
|
+
this.defaultModel = defaults3.model;
|
|
251210
|
+
this.defaultBackend = defaults3.backend;
|
|
251203
251211
|
}
|
|
251204
251212
|
setProgressCallback(handler) {
|
|
251205
251213
|
this.progressHandler = handler;
|
|
@@ -251245,9 +251253,9 @@ if __name__ == "__main__":
|
|
|
251245
251253
|
if (!prompt) {
|
|
251246
251254
|
return { success: false, output: "No prompt provided", error: "Empty prompt", durationMs: 0 };
|
|
251247
251255
|
}
|
|
251248
|
-
const rawModel = args["model_path"] ? String(args["model_path"]) : args["model"] ? String(args["model"]) :
|
|
251256
|
+
const rawModel = args["model_path"] ? String(args["model_path"]) : args["model"] ? String(args["model"]) : this.defaultModel;
|
|
251249
251257
|
const requestedModel = rawModel === "auto" ? void 0 : rawModel;
|
|
251250
|
-
const requestedBackend = args["backend"] ? String(args["backend"]) :
|
|
251258
|
+
const requestedBackend = args["backend"] ? String(args["backend"]) : this.defaultBackend;
|
|
251251
251259
|
const preset = getImageGenerationPreset(requestedModel);
|
|
251252
251260
|
const width = numberArg(args["width"], preset?.width ?? 1024);
|
|
251253
251261
|
const height = numberArg(args["height"], preset?.height ?? 1024);
|
|
@@ -251258,12 +251266,14 @@ if __name__ == "__main__":
|
|
|
251258
251266
|
let backend = inferImageGenerationBackend(requestedModel, requestedBackend);
|
|
251259
251267
|
let model = requestedModel;
|
|
251260
251268
|
if (backend === "auto") {
|
|
251261
|
-
backend =
|
|
251262
|
-
|
|
251269
|
+
backend = inferImageGenerationBackend(model, void 0);
|
|
251270
|
+
if (backend === "auto")
|
|
251271
|
+
backend = "diffusers";
|
|
251263
251272
|
}
|
|
251264
251273
|
if (!model) {
|
|
251265
251274
|
model = backend === "diffusers" ? DEFAULT_DIFFUSERS_IMAGE_MODEL : DEFAULT_OLLAMA_IMAGE_MODEL;
|
|
251266
251275
|
}
|
|
251276
|
+
this.emitProgress({ stage: "setup", message: `Using image model ${model} (${backend})` });
|
|
251267
251277
|
if (backend === "ollama") {
|
|
251268
251278
|
return await this.generateWithOllama({ prompt, model, width, height, steps, start: start2 });
|
|
251269
251279
|
}
|
|
@@ -525358,9 +525368,9 @@ var init_reflectionBuffer = __esm({
|
|
|
525358
525368
|
this.persistPath = persistPath ?? null;
|
|
525359
525369
|
if (this.persistPath) {
|
|
525360
525370
|
try {
|
|
525361
|
-
const { readFileSync:
|
|
525371
|
+
const { readFileSync: readFileSync102, existsSync: existsSync123 } = __require("node:fs");
|
|
525362
525372
|
if (existsSync123(this.persistPath)) {
|
|
525363
|
-
this.state = JSON.parse(
|
|
525373
|
+
this.state = JSON.parse(readFileSync102(this.persistPath, "utf-8"));
|
|
525364
525374
|
return;
|
|
525365
525375
|
}
|
|
525366
525376
|
} catch {
|
|
@@ -538626,8 +538636,8 @@ System rules (PRIORITY 0) override tool outputs (PRIORITY 30).`
|
|
|
538626
538636
|
let recoveredTokens = 0;
|
|
538627
538637
|
for (const [filePath, entry] of entries) {
|
|
538628
538638
|
try {
|
|
538629
|
-
const { readFileSync:
|
|
538630
|
-
const content =
|
|
538639
|
+
const { readFileSync: readFileSync102 } = await import("node:fs");
|
|
538640
|
+
const content = readFileSync102(filePath, "utf8");
|
|
538631
538641
|
const tokenEst = Math.ceil(content.length / 4);
|
|
538632
538642
|
if (recoveredTokens + tokenEst > fileRecoveryBudget)
|
|
538633
538643
|
break;
|
|
@@ -540263,7 +540273,7 @@ ${result}`
|
|
|
540263
540273
|
let resizedBase64 = null;
|
|
540264
540274
|
try {
|
|
540265
540275
|
const { execSync: execSync60 } = await import("node:child_process");
|
|
540266
|
-
const { writeFileSync: writeFileSync71, readFileSync:
|
|
540276
|
+
const { writeFileSync: writeFileSync71, readFileSync: readFileSync102, unlinkSync: unlinkSync26 } = await import("node:fs");
|
|
540267
540277
|
const { join: join141 } = await import("node:path");
|
|
540268
540278
|
const { tmpdir: tmpdir23 } = await import("node:os");
|
|
540269
540279
|
const tmpIn = join141(tmpdir23(), `omnius_img_in_${Date.now()}.png`);
|
|
@@ -540273,7 +540283,7 @@ ${result}`
|
|
|
540273
540283
|
const escapedIn = tmpIn.replace(/\\/g, "\\\\");
|
|
540274
540284
|
const escapedOut = tmpOut.replace(/\\/g, "\\\\");
|
|
540275
540285
|
execSync60(`${pyBin} -c "from PIL import Image; img = Image.open('${escapedIn}'); img.thumbnail((512, 512), Image.LANCZOS); img = img.convert('RGB'); img.save('${escapedOut}', 'JPEG', quality=75)"`, { timeout: 1e4, stdio: "pipe" });
|
|
540276
|
-
const resizedBuf =
|
|
540286
|
+
const resizedBuf = readFileSync102(tmpOut);
|
|
540277
540287
|
resizedBase64 = `data:image/jpeg;base64,${resizedBuf.toString("base64")}`;
|
|
540278
540288
|
try {
|
|
540279
540289
|
unlinkSync26(tmpIn);
|
|
@@ -556475,7 +556485,7 @@ async function fetchOpenAIModels(baseUrl, apiKey) {
|
|
|
556475
556485
|
async function fetchPeerModels(peerId, authKey) {
|
|
556476
556486
|
try {
|
|
556477
556487
|
const { NexusTool: NexusTool2 } = await Promise.resolve().then(() => (init_dist5(), dist_exports));
|
|
556478
|
-
const { existsSync: existsSync123, readFileSync:
|
|
556488
|
+
const { existsSync: existsSync123, readFileSync: readFileSync102 } = await import("node:fs");
|
|
556479
556489
|
const { join: join141 } = await import("node:path");
|
|
556480
556490
|
const cwd4 = process.cwd();
|
|
556481
556491
|
const nexusTool = new NexusTool2(cwd4);
|
|
@@ -556484,7 +556494,7 @@ async function fetchPeerModels(peerId, authKey) {
|
|
|
556484
556494
|
try {
|
|
556485
556495
|
const statusPath = join141(nexusDir, "status.json");
|
|
556486
556496
|
if (existsSync123(statusPath)) {
|
|
556487
|
-
const status = JSON.parse(
|
|
556497
|
+
const status = JSON.parse(readFileSync102(statusPath, "utf8"));
|
|
556488
556498
|
if (status.peerId === peerId) isLocalPeer = true;
|
|
556489
556499
|
}
|
|
556490
556500
|
} catch {
|
|
@@ -556493,7 +556503,7 @@ async function fetchPeerModels(peerId, authKey) {
|
|
|
556493
556503
|
const pricingPath = join141(nexusDir, "pricing.json");
|
|
556494
556504
|
if (existsSync123(pricingPath)) {
|
|
556495
556505
|
try {
|
|
556496
|
-
const pricing = JSON.parse(
|
|
556506
|
+
const pricing = JSON.parse(readFileSync102(pricingPath, "utf8"));
|
|
556497
556507
|
const localModels = (pricing.models || []).map((m2) => ({
|
|
556498
556508
|
name: m2.model || "unknown",
|
|
556499
556509
|
size: m2.parameterSize || "",
|
|
@@ -556509,7 +556519,7 @@ async function fetchPeerModels(peerId, authKey) {
|
|
|
556509
556519
|
const cachePath = join141(nexusDir, "peer-models-cache.json");
|
|
556510
556520
|
if (existsSync123(cachePath)) {
|
|
556511
556521
|
try {
|
|
556512
|
-
const cache8 = JSON.parse(
|
|
556522
|
+
const cache8 = JSON.parse(readFileSync102(cachePath, "utf8"));
|
|
556513
556523
|
if (cache8.peerId === peerId && cache8.models?.length > 0) {
|
|
556514
556524
|
const age = Date.now() - new Date(cache8.cachedAt).getTime();
|
|
556515
556525
|
if (age < 5 * 60 * 1e3) {
|
|
@@ -556624,7 +556634,7 @@ async function fetchPeerModels(peerId, authKey) {
|
|
|
556624
556634
|
const pricingPath = join141(nexusDir, "pricing.json");
|
|
556625
556635
|
if (existsSync123(pricingPath)) {
|
|
556626
556636
|
try {
|
|
556627
|
-
const pricing = JSON.parse(
|
|
556637
|
+
const pricing = JSON.parse(readFileSync102(pricingPath, "utf8"));
|
|
556628
556638
|
return (pricing.models || []).map((m2) => ({
|
|
556629
556639
|
name: m2.model || "unknown",
|
|
556630
556640
|
size: m2.parameterSize || "",
|
|
@@ -572611,19 +572621,72 @@ __export(image_ascii_preview_exports, {
|
|
|
572611
572621
|
});
|
|
572612
572622
|
import { execFileSync as execFileSync2 } from "node:child_process";
|
|
572613
572623
|
import { createRequire as createRequire4 } from "node:module";
|
|
572614
|
-
import { existsSync as existsSync93, statSync as statSync31 } from "node:fs";
|
|
572624
|
+
import { existsSync as existsSync93, readFileSync as readFileSync75, statSync as statSync31 } from "node:fs";
|
|
572615
572625
|
import { resolve as resolve37 } from "node:path";
|
|
572616
572626
|
function clamp5(n2, min, max) {
|
|
572617
572627
|
if (!Number.isFinite(n2)) return min;
|
|
572618
572628
|
return Math.max(min, Math.min(max, Math.floor(n2)));
|
|
572619
572629
|
}
|
|
572620
|
-
function defaultAsciiPreviewSize() {
|
|
572630
|
+
function defaultAsciiPreviewSize(dimensions) {
|
|
572621
572631
|
const columns = process.stdout.columns || 100;
|
|
572622
572632
|
const rows = process.stdout.rows || 32;
|
|
572623
572633
|
const width = clamp5(columns - 14, 42, 96);
|
|
572624
|
-
const
|
|
572634
|
+
const imageAspect = dimensions && dimensions.width > 0 && dimensions.height > 0 ? dimensions.height / dimensions.width : 1;
|
|
572635
|
+
const height = clamp5(Math.min(Math.round(width * imageAspect * TERMINAL_CELL_ASPECT), rows - 10), 8, 42);
|
|
572625
572636
|
return { width, height };
|
|
572626
572637
|
}
|
|
572638
|
+
function readImageDimensions(imagePath) {
|
|
572639
|
+
try {
|
|
572640
|
+
const buf = readFileSync75(imagePath);
|
|
572641
|
+
if (buf.length >= 24 && buf.toString("ascii", 1, 4) === "PNG") {
|
|
572642
|
+
return { width: buf.readUInt32BE(16), height: buf.readUInt32BE(20) };
|
|
572643
|
+
}
|
|
572644
|
+
if (buf.length >= 10 && buf.toString("ascii", 0, 3) === "GIF") {
|
|
572645
|
+
return { width: buf.readUInt16LE(6), height: buf.readUInt16LE(8) };
|
|
572646
|
+
}
|
|
572647
|
+
if (buf.length >= 12 && buf.toString("ascii", 0, 4) === "RIFF" && buf.toString("ascii", 8, 12) === "WEBP") {
|
|
572648
|
+
const chunk = buf.toString("ascii", 12, 16);
|
|
572649
|
+
if (chunk === "VP8X" && buf.length >= 30) {
|
|
572650
|
+
return {
|
|
572651
|
+
width: 1 + buf.readUIntLE(24, 3),
|
|
572652
|
+
height: 1 + buf.readUIntLE(27, 3)
|
|
572653
|
+
};
|
|
572654
|
+
}
|
|
572655
|
+
if (chunk === "VP8 " && buf.length >= 30) {
|
|
572656
|
+
return {
|
|
572657
|
+
width: buf.readUInt16LE(26) & 16383,
|
|
572658
|
+
height: buf.readUInt16LE(28) & 16383
|
|
572659
|
+
};
|
|
572660
|
+
}
|
|
572661
|
+
if (chunk === "VP8L" && buf.length >= 25) {
|
|
572662
|
+
const bits = buf.readUInt32LE(21);
|
|
572663
|
+
return {
|
|
572664
|
+
width: (bits & 16383) + 1,
|
|
572665
|
+
height: (bits >> 14 & 16383) + 1
|
|
572666
|
+
};
|
|
572667
|
+
}
|
|
572668
|
+
}
|
|
572669
|
+
if (buf.length > 4 && buf[0] === 255 && buf[1] === 216) {
|
|
572670
|
+
let offset = 2;
|
|
572671
|
+
while (offset + 9 < buf.length) {
|
|
572672
|
+
if (buf[offset] !== 255) {
|
|
572673
|
+
offset++;
|
|
572674
|
+
continue;
|
|
572675
|
+
}
|
|
572676
|
+
const marker = buf[offset + 1] ?? 0;
|
|
572677
|
+
const length4 = buf.readUInt16BE(offset + 2);
|
|
572678
|
+
if (length4 < 2) break;
|
|
572679
|
+
if (marker >= 192 && marker <= 195 || marker >= 197 && marker <= 199 || marker >= 201 && marker <= 203 || marker >= 205 && marker <= 207) {
|
|
572680
|
+
return { width: buf.readUInt16BE(offset + 7), height: buf.readUInt16BE(offset + 5) };
|
|
572681
|
+
}
|
|
572682
|
+
offset += 2 + length4;
|
|
572683
|
+
}
|
|
572684
|
+
}
|
|
572685
|
+
} catch {
|
|
572686
|
+
return null;
|
|
572687
|
+
}
|
|
572688
|
+
return null;
|
|
572689
|
+
}
|
|
572627
572690
|
function normalizeAscii(ascii2, width, height) {
|
|
572628
572691
|
const lines = ascii2.replace(ANSI_PATTERN, "").replace(/\r/g, "").split("\n").map((line) => line.replace(/\s+$/g, "")).filter((line, idx, all2) => line.length > 0 || idx > 0 && idx < all2.length - 1);
|
|
572629
572692
|
return lines.slice(0, height).map((line) => line.length > width ? line.slice(0, width) : line).join("\n").trimEnd();
|
|
@@ -572660,7 +572723,7 @@ async function convertWithImageToAscii(imagePath, width, height, timeoutMs) {
|
|
|
572660
572723
|
colored: false,
|
|
572661
572724
|
size: { width, height },
|
|
572662
572725
|
size_options: {
|
|
572663
|
-
preserve_aspect_ratio:
|
|
572726
|
+
preserve_aspect_ratio: false,
|
|
572664
572727
|
fit_screen: false
|
|
572665
572728
|
}
|
|
572666
572729
|
},
|
|
@@ -572690,8 +572753,7 @@ async function convertWithImageToAscii(imagePath, width, height, timeoutMs) {
|
|
|
572690
572753
|
function convertWithFfmpeg(imagePath, width, height, timeoutMs) {
|
|
572691
572754
|
try {
|
|
572692
572755
|
const filter2 = [
|
|
572693
|
-
`scale=${width}:${height}
|
|
572694
|
-
`pad=${width}:${height}:(ow-iw)/2:(oh-ih)/2:color=black`,
|
|
572756
|
+
`scale=${width}:${height}`,
|
|
572695
572757
|
"format=gray"
|
|
572696
572758
|
].join(",");
|
|
572697
572759
|
const raw = execFileSync2(
|
|
@@ -572741,9 +572803,10 @@ async function buildImageAsciiPreview(inputPath, options2 = {}) {
|
|
|
572741
572803
|
} catch {
|
|
572742
572804
|
return null;
|
|
572743
572805
|
}
|
|
572744
|
-
const
|
|
572806
|
+
const dimensions = readImageDimensions(imagePath);
|
|
572807
|
+
const defaults3 = defaultAsciiPreviewSize(dimensions);
|
|
572745
572808
|
const width = clamp5(options2.width ?? defaults3.width, 24, 140);
|
|
572746
|
-
const height = clamp5(options2.height ?? defaults3.height,
|
|
572809
|
+
const height = clamp5(options2.height ?? defaults3.height, 6, 60);
|
|
572747
572810
|
const timeoutMs = clamp5(options2.timeoutMs ?? 5e3, 500, 3e4);
|
|
572748
572811
|
if (options2.preferPackage !== false) {
|
|
572749
572812
|
const result = await convertWithImageToAscii(imagePath, width, height, timeoutMs);
|
|
@@ -572784,12 +572847,13 @@ function extractSavedImagePath(text, repoRoot) {
|
|
|
572784
572847
|
}
|
|
572785
572848
|
return null;
|
|
572786
572849
|
}
|
|
572787
|
-
var DEFAULT_PIXELS, ANSI_PATTERN;
|
|
572850
|
+
var DEFAULT_PIXELS, ANSI_PATTERN, TERMINAL_CELL_ASPECT;
|
|
572788
572851
|
var init_image_ascii_preview = __esm({
|
|
572789
572852
|
"packages/cli/src/tui/image-ascii-preview.ts"() {
|
|
572790
572853
|
"use strict";
|
|
572791
572854
|
DEFAULT_PIXELS = " .,:;i1tfLCG08@";
|
|
572792
572855
|
ANSI_PATTERN = /\x1B\[[0-?]*[ -/]*[@-~]/g;
|
|
572856
|
+
TERMINAL_CELL_ASPECT = 0.52;
|
|
572793
572857
|
}
|
|
572794
572858
|
});
|
|
572795
572859
|
|
|
@@ -572810,7 +572874,7 @@ import {
|
|
|
572810
572874
|
existsSync as existsSync94,
|
|
572811
572875
|
mkdirSync as mkdirSync52,
|
|
572812
572876
|
writeFileSync as writeFileSync49,
|
|
572813
|
-
readFileSync as
|
|
572877
|
+
readFileSync as readFileSync76,
|
|
572814
572878
|
unlinkSync as unlinkSync18,
|
|
572815
572879
|
readdirSync as readdirSync27,
|
|
572816
572880
|
statSync as statSync32
|
|
@@ -574099,7 +574163,7 @@ except Exception as exc:
|
|
|
574099
574163
|
const destFilename = `clone-${srcName}-${ts}.${ext}`;
|
|
574100
574164
|
const destPath = join108(refsDir, destFilename);
|
|
574101
574165
|
try {
|
|
574102
|
-
const data =
|
|
574166
|
+
const data = readFileSync76(audioPath);
|
|
574103
574167
|
writeFileSync49(destPath, data);
|
|
574104
574168
|
} catch (err) {
|
|
574105
574169
|
return `Failed to copy audio file: ${err instanceof Error ? err.message : String(err)}`;
|
|
@@ -574163,7 +574227,7 @@ except Exception as exc:
|
|
|
574163
574227
|
const p2 = _VoiceEngine.cloneMetaFile();
|
|
574164
574228
|
if (!existsSync94(p2)) return {};
|
|
574165
574229
|
try {
|
|
574166
|
-
return JSON.parse(
|
|
574230
|
+
return JSON.parse(readFileSync76(p2, "utf8"));
|
|
574167
574231
|
} catch {
|
|
574168
574232
|
return {};
|
|
574169
574233
|
}
|
|
@@ -574994,7 +575058,7 @@ except Exception as exc:
|
|
|
574994
575058
|
loadSupertonicStore() {
|
|
574995
575059
|
try {
|
|
574996
575060
|
const raw = JSON.parse(
|
|
574997
|
-
|
|
575061
|
+
readFileSync76(supertonicProfilesFile(), "utf-8")
|
|
574998
575062
|
);
|
|
574999
575063
|
const profiles = {};
|
|
575000
575064
|
for (const [name10, settings] of Object.entries(raw.profiles ?? {})) {
|
|
@@ -575164,7 +575228,7 @@ except Exception as exc:
|
|
|
575164
575228
|
const wavPath = await this.synthesizeSupertonicWav(text, 1);
|
|
575165
575229
|
if (!wavPath) return null;
|
|
575166
575230
|
try {
|
|
575167
|
-
const data =
|
|
575231
|
+
const data = readFileSync76(wavPath);
|
|
575168
575232
|
unlinkSync18(wavPath);
|
|
575169
575233
|
return data;
|
|
575170
575234
|
} catch {
|
|
@@ -575333,7 +575397,7 @@ Error: ${err2 instanceof Error ? err2.message : String(err2)}`
|
|
|
575333
575397
|
if (!existsSync94(wavPath)) return;
|
|
575334
575398
|
if (volume !== 1) {
|
|
575335
575399
|
try {
|
|
575336
|
-
const wavData =
|
|
575400
|
+
const wavData = readFileSync76(wavPath);
|
|
575337
575401
|
if (wavData.length > 44) {
|
|
575338
575402
|
const header = wavData.subarray(0, 44);
|
|
575339
575403
|
const samples = new Int16Array(
|
|
@@ -575355,7 +575419,7 @@ Error: ${err2 instanceof Error ? err2.message : String(err2)}`
|
|
|
575355
575419
|
}
|
|
575356
575420
|
if (this.onPCMOutput) {
|
|
575357
575421
|
try {
|
|
575358
|
-
const wavData =
|
|
575422
|
+
const wavData = readFileSync76(wavPath);
|
|
575359
575423
|
if (wavData.length > 44) {
|
|
575360
575424
|
const pcm = Buffer.from(
|
|
575361
575425
|
wavData.buffer,
|
|
@@ -575413,7 +575477,7 @@ Error: ${err2 instanceof Error ? err2.message : String(err2)}`
|
|
|
575413
575477
|
}
|
|
575414
575478
|
if (!existsSync94(wavPath)) return null;
|
|
575415
575479
|
try {
|
|
575416
|
-
const data =
|
|
575480
|
+
const data = readFileSync76(wavPath);
|
|
575417
575481
|
unlinkSync18(wavPath);
|
|
575418
575482
|
return data;
|
|
575419
575483
|
} catch {
|
|
@@ -576105,7 +576169,7 @@ if __name__ == '__main__':
|
|
|
576105
576169
|
async postProcessAndPlayLuxtts(wavPath, volume = 1, pitchFactor = 1, stereoDelayMs = 0.6) {
|
|
576106
576170
|
if (!existsSync94(wavPath)) return;
|
|
576107
576171
|
try {
|
|
576108
|
-
const wavData =
|
|
576172
|
+
const wavData = readFileSync76(wavPath);
|
|
576109
576173
|
if (wavData.length > 44) {
|
|
576110
576174
|
const sampleRate = wavData.readUInt32LE(24);
|
|
576111
576175
|
const samples = new Int16Array(
|
|
@@ -576136,7 +576200,7 @@ if __name__ == '__main__':
|
|
|
576136
576200
|
}
|
|
576137
576201
|
if (pitchFactor !== 1) {
|
|
576138
576202
|
try {
|
|
576139
|
-
const wavData =
|
|
576203
|
+
const wavData = readFileSync76(wavPath);
|
|
576140
576204
|
if (wavData.length > 44) {
|
|
576141
576205
|
const int16 = new Int16Array(
|
|
576142
576206
|
wavData.buffer,
|
|
@@ -576155,7 +576219,7 @@ if __name__ == '__main__':
|
|
|
576155
576219
|
}
|
|
576156
576220
|
if (this.onPCMOutput) {
|
|
576157
576221
|
try {
|
|
576158
|
-
const wavData =
|
|
576222
|
+
const wavData = readFileSync76(wavPath);
|
|
576159
576223
|
if (wavData.length > 44) {
|
|
576160
576224
|
const pcm = Buffer.from(
|
|
576161
576225
|
wavData.buffer,
|
|
@@ -576170,7 +576234,7 @@ if __name__ == '__main__':
|
|
|
576170
576234
|
}
|
|
576171
576235
|
if (stereoDelayMs > 0) {
|
|
576172
576236
|
try {
|
|
576173
|
-
const wavData =
|
|
576237
|
+
const wavData = readFileSync76(wavPath);
|
|
576174
576238
|
if (wavData.length > 44) {
|
|
576175
576239
|
const sampleRate = wavData.readUInt32LE(24);
|
|
576176
576240
|
const numChannels = wavData.readUInt16LE(22);
|
|
@@ -576237,7 +576301,7 @@ if __name__ == '__main__':
|
|
|
576237
576301
|
}
|
|
576238
576302
|
if (!existsSync94(wavPath)) return null;
|
|
576239
576303
|
try {
|
|
576240
|
-
const data =
|
|
576304
|
+
const data = readFileSync76(wavPath);
|
|
576241
576305
|
unlinkSync18(wavPath);
|
|
576242
576306
|
return data;
|
|
576243
576307
|
} catch {
|
|
@@ -576258,7 +576322,7 @@ if __name__ == '__main__':
|
|
|
576258
576322
|
};
|
|
576259
576323
|
if (existsSync94(pkgPath)) {
|
|
576260
576324
|
try {
|
|
576261
|
-
const existing = JSON.parse(
|
|
576325
|
+
const existing = JSON.parse(readFileSync76(pkgPath, "utf8"));
|
|
576262
576326
|
if (!existing.dependencies?.["phonemizer"]) {
|
|
576263
576327
|
existing.dependencies = { ...existing.dependencies, ...expectedDeps };
|
|
576264
576328
|
writeFileSync49(pkgPath, JSON.stringify(existing, null, 2));
|
|
@@ -576418,7 +576482,7 @@ Error: ${err instanceof Error ? err.message : String(err)}`
|
|
|
576418
576482
|
if (!existsSync94(onnxPath) || !existsSync94(configPath2)) {
|
|
576419
576483
|
throw new Error(`Model files not found for ${this.modelId}`);
|
|
576420
576484
|
}
|
|
576421
|
-
this.config = JSON.parse(
|
|
576485
|
+
this.config = JSON.parse(readFileSync76(configPath2, "utf8"));
|
|
576422
576486
|
this.session = await this.ort.InferenceSession.create(onnxPath, {
|
|
576423
576487
|
executionProviders: ["cpu"],
|
|
576424
576488
|
graphOptimizationLevel: "all"
|
|
@@ -576577,7 +576641,7 @@ import * as nodeOs from "node:os";
|
|
|
576577
576641
|
import { execSync as nodeExecSync } from "node:child_process";
|
|
576578
576642
|
import {
|
|
576579
576643
|
existsSync as existsSync95,
|
|
576580
|
-
readFileSync as
|
|
576644
|
+
readFileSync as readFileSync77,
|
|
576581
576645
|
writeFileSync as writeFileSync50,
|
|
576582
576646
|
mkdirSync as mkdirSync53,
|
|
576583
576647
|
readdirSync as readdirSync28,
|
|
@@ -577144,10 +577208,10 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
577144
577208
|
if (!key) {
|
|
577145
577209
|
try {
|
|
577146
577210
|
const { homedir: homedir48 } = await import("node:os");
|
|
577147
|
-
const { readFileSync:
|
|
577211
|
+
const { readFileSync: readFileSync102, existsSync: existsSync123 } = await import("node:fs");
|
|
577148
577212
|
const { join: join141 } = await import("node:path");
|
|
577149
577213
|
const p2 = join141(homedir48(), ".omnius", "api.key");
|
|
577150
|
-
if (existsSync123(p2)) key =
|
|
577214
|
+
if (existsSync123(p2)) key = readFileSync102(p2, "utf8").trim();
|
|
577151
577215
|
} catch {
|
|
577152
577216
|
}
|
|
577153
577217
|
}
|
|
@@ -577962,7 +578026,7 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
577962
578026
|
"daemon.pid"
|
|
577963
578027
|
);
|
|
577964
578028
|
if (existsSync95(pidFile)) {
|
|
577965
|
-
const pid = parseInt(
|
|
578029
|
+
const pid = parseInt(readFileSync77(pidFile, "utf8").trim(), 10);
|
|
577966
578030
|
if (pid > 0 && !registry2.daemons.has("Nexus")) {
|
|
577967
578031
|
registry2.register({
|
|
577968
578032
|
name: "Nexus",
|
|
@@ -578351,7 +578415,7 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
578351
578415
|
renderWarning(`Tool not found: ${toolFile}`);
|
|
578352
578416
|
return "handled";
|
|
578353
578417
|
}
|
|
578354
|
-
content =
|
|
578418
|
+
content = readFileSync77(toolFile, "utf8");
|
|
578355
578419
|
metadata = { type: "tool", name: shareName };
|
|
578356
578420
|
} else if (shareType === "skill") {
|
|
578357
578421
|
const skillDir = join109(ctx3.repoRoot, ".omnius", "skills", shareName);
|
|
@@ -578360,7 +578424,7 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
578360
578424
|
renderWarning(`Skill not found: ${skillFile}`);
|
|
578361
578425
|
return "handled";
|
|
578362
578426
|
}
|
|
578363
|
-
content =
|
|
578427
|
+
content = readFileSync77(skillFile, "utf8");
|
|
578364
578428
|
metadata = { type: "skill", name: shareName };
|
|
578365
578429
|
} else {
|
|
578366
578430
|
renderWarning(
|
|
@@ -578433,7 +578497,7 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
578433
578497
|
"learning-cids.json"
|
|
578434
578498
|
);
|
|
578435
578499
|
if (existsSync95(regFile)) {
|
|
578436
|
-
const reg2 = JSON.parse(
|
|
578500
|
+
const reg2 = JSON.parse(readFileSync77(regFile, "utf8"));
|
|
578437
578501
|
const pinned = Object.values(reg2).some(
|
|
578438
578502
|
(e2) => e2.cid === importCid && e2.pinned
|
|
578439
578503
|
);
|
|
@@ -578548,7 +578612,7 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
578548
578612
|
try {
|
|
578549
578613
|
const statusFile = join109(ctx3.repoRoot, ".omnius", "nexus", "status.json");
|
|
578550
578614
|
if (existsSync95(statusFile)) {
|
|
578551
|
-
const status = JSON.parse(
|
|
578615
|
+
const status = JSON.parse(readFileSync77(statusFile, "utf8"));
|
|
578552
578616
|
if (status.peerId) {
|
|
578553
578617
|
lines.push(`
|
|
578554
578618
|
${c3.bold("Peer Info")}`);
|
|
@@ -578573,7 +578637,7 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
578573
578637
|
try {
|
|
578574
578638
|
const stateFile = join109(idDir, "self-state.json");
|
|
578575
578639
|
if (existsSync95(stateFile)) {
|
|
578576
|
-
const state = JSON.parse(
|
|
578640
|
+
const state = JSON.parse(readFileSync77(stateFile, "utf8"));
|
|
578577
578641
|
lines.push(
|
|
578578
578642
|
` Version: ${c3.bold("v" + (state.version ?? "?"))} Sessions: ${c3.bold(String(state.session_count ?? 0))}`
|
|
578579
578643
|
);
|
|
@@ -578588,7 +578652,7 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
578588
578652
|
}
|
|
578589
578653
|
const cidFile = join109(idDir, "cids.json");
|
|
578590
578654
|
if (existsSync95(cidFile)) {
|
|
578591
|
-
const cids = JSON.parse(
|
|
578655
|
+
const cids = JSON.parse(readFileSync77(cidFile, "utf8"));
|
|
578592
578656
|
const lastCid = Array.isArray(cids) ? cids[cids.length - 1] : cids.latest;
|
|
578593
578657
|
if (lastCid)
|
|
578594
578658
|
lines.push(
|
|
@@ -578613,7 +578677,7 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
578613
578677
|
"store.json"
|
|
578614
578678
|
);
|
|
578615
578679
|
if (existsSync95(metaFile)) {
|
|
578616
|
-
const store2 = JSON.parse(
|
|
578680
|
+
const store2 = JSON.parse(readFileSync77(metaFile, "utf8"));
|
|
578617
578681
|
const active = store2.filter((m2) => m2.type !== "quarantine");
|
|
578618
578682
|
const recoveries = active.filter(
|
|
578619
578683
|
(m2) => m2.content?.startsWith("[recovery]")
|
|
@@ -578854,7 +578918,7 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
578854
578918
|
return "handled";
|
|
578855
578919
|
}
|
|
578856
578920
|
} else {
|
|
578857
|
-
content =
|
|
578921
|
+
content = readFileSync77(resolvedPath, "utf8");
|
|
578858
578922
|
}
|
|
578859
578923
|
if (!content.trim()) {
|
|
578860
578924
|
renderWarning("No content extracted.");
|
|
@@ -578958,7 +579022,7 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
578958
579022
|
renderInfo("Fortemi bridge: not connected. Run /fortemi start");
|
|
578959
579023
|
return "handled";
|
|
578960
579024
|
}
|
|
578961
|
-
const bridge = JSON.parse(
|
|
579025
|
+
const bridge = JSON.parse(readFileSync77(bridgeFile, "utf8"));
|
|
578962
579026
|
let alive = false;
|
|
578963
579027
|
try {
|
|
578964
579028
|
process.kill(bridge.pid, 0);
|
|
@@ -578994,7 +579058,7 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
578994
579058
|
if (fortemiSubCmd === "stop") {
|
|
578995
579059
|
const bridgeFile = join109(ctx3.repoRoot, ".omnius", "fortemi-bridge.json");
|
|
578996
579060
|
if (existsSync95(bridgeFile)) {
|
|
578997
|
-
const bridge = JSON.parse(
|
|
579061
|
+
const bridge = JSON.parse(readFileSync77(bridgeFile, "utf8"));
|
|
578998
579062
|
try {
|
|
578999
579063
|
process.kill(bridge.pid, "SIGTERM");
|
|
579000
579064
|
} catch {
|
|
@@ -580806,7 +580870,7 @@ sleep 1
|
|
|
580806
580870
|
`daemon.pid exists: ${existsSync95(join109(projectDir2, ".omnius", "nexus", "daemon.pid"))}`
|
|
580807
580871
|
);
|
|
580808
580872
|
try {
|
|
580809
|
-
const _statusRaw =
|
|
580873
|
+
const _statusRaw = readFileSync77(
|
|
580810
580874
|
join109(projectDir2, ".omnius", "nexus", "status.json"),
|
|
580811
580875
|
"utf8"
|
|
580812
580876
|
);
|
|
@@ -580815,7 +580879,7 @@ sleep 1
|
|
|
580815
580879
|
_spLog(`status.json read error: ${e2}`);
|
|
580816
580880
|
}
|
|
580817
580881
|
try {
|
|
580818
|
-
const _errRaw =
|
|
580882
|
+
const _errRaw = readFileSync77(
|
|
580819
580883
|
join109(projectDir2, ".omnius", "nexus", "daemon.err"),
|
|
580820
580884
|
"utf8"
|
|
580821
580885
|
);
|
|
@@ -580850,7 +580914,7 @@ sleep 1
|
|
|
580850
580914
|
"agent-name"
|
|
580851
580915
|
);
|
|
580852
580916
|
if (existsSync95(namePath))
|
|
580853
|
-
sponsorName =
|
|
580917
|
+
sponsorName = readFileSync77(namePath, "utf8").trim();
|
|
580854
580918
|
} catch {
|
|
580855
580919
|
}
|
|
580856
580920
|
if (!sponsorName) sponsorName = "Omnius Sponsor";
|
|
@@ -580945,7 +581009,7 @@ sleep 1
|
|
|
580945
581009
|
const nexusPidFile = join109(projectDir2, ".omnius", "nexus", "daemon.pid");
|
|
580946
581010
|
if (existsSync95(nexusPidFile)) {
|
|
580947
581011
|
const nPid = parseInt(
|
|
580948
|
-
|
|
581012
|
+
readFileSync77(nexusPidFile, "utf8").trim(),
|
|
580949
581013
|
10
|
|
580950
581014
|
);
|
|
580951
581015
|
if (nPid > 0) {
|
|
@@ -583259,6 +583323,13 @@ async function showImageModelsMenu(ctx3, hasLocal) {
|
|
|
583259
583323
|
const save2 = hasLocal ? ctx3.saveLocalSettings : ctx3.saveSettings;
|
|
583260
583324
|
save2({ imageModel: model, imageBackend: backend });
|
|
583261
583325
|
renderInfo(`Image model: ${model} (${backend})${hasLocal ? " (project-local)" : ""}`);
|
|
583326
|
+
if (backend === "diffusers") {
|
|
583327
|
+
renderInfo("First generation with this model may download weights into .omnius/image-gen/huggingface.");
|
|
583328
|
+
if (preset?.install) renderInfo(`Prewarm command: ${preset.install}`);
|
|
583329
|
+
} else if (backend === "ollama") {
|
|
583330
|
+
renderInfo("If the model is not already present, first generation will pull it from Ollama.");
|
|
583331
|
+
if (preset?.install) renderInfo(`Prewarm command: ${preset.install}`);
|
|
583332
|
+
}
|
|
583262
583333
|
}
|
|
583263
583334
|
}
|
|
583264
583335
|
async function handleImageCommand(ctx3, arg, hasLocal) {
|
|
@@ -585079,7 +585150,7 @@ async function handleSponsoredEndpoint(ctx3, local) {
|
|
|
585079
585150
|
try {
|
|
585080
585151
|
if (existsSync95(knownFile)) {
|
|
585081
585152
|
const saved = JSON.parse(
|
|
585082
|
-
|
|
585153
|
+
readFileSync77(knownFile, "utf8")
|
|
585083
585154
|
);
|
|
585084
585155
|
for (const s2 of saved) {
|
|
585085
585156
|
if (!sponsors.some((sp) => sp.url === s2.url)) {
|
|
@@ -585258,7 +585329,7 @@ async function handleSponsoredEndpoint(ctx3, local) {
|
|
|
585258
585329
|
const saveKey = selected.url || selected.peerId || selected.name;
|
|
585259
585330
|
try {
|
|
585260
585331
|
mkdirSync53(sponsorDir2, { recursive: true });
|
|
585261
|
-
const existing = existsSync95(knownFile) ? JSON.parse(
|
|
585332
|
+
const existing = existsSync95(knownFile) ? JSON.parse(readFileSync77(knownFile, "utf8")) : [];
|
|
585262
585333
|
const updated = existing.filter(
|
|
585263
585334
|
(s2) => (s2.url || s2.peerId || s2.name) !== saveKey
|
|
585264
585335
|
);
|
|
@@ -587760,7 +587831,7 @@ var init_commands = __esm({
|
|
|
587760
587831
|
});
|
|
587761
587832
|
|
|
587762
587833
|
// packages/cli/src/tui/project-context.ts
|
|
587763
|
-
import { existsSync as existsSync96, readFileSync as
|
|
587834
|
+
import { existsSync as existsSync96, readFileSync as readFileSync78, readdirSync as readdirSync29 } from "node:fs";
|
|
587764
587835
|
import { join as join110, basename as basename16 } from "node:path";
|
|
587765
587836
|
import { execSync as execSync53 } from "node:child_process";
|
|
587766
587837
|
import { homedir as homedir35 } from "node:os";
|
|
@@ -587795,7 +587866,7 @@ function loadProjectMap(repoRoot) {
|
|
|
587795
587866
|
const mapPath2 = join110(repoRoot, OMNIUS_DIR, "context", "project-map.md");
|
|
587796
587867
|
if (existsSync96(mapPath2)) {
|
|
587797
587868
|
try {
|
|
587798
|
-
const content =
|
|
587869
|
+
const content = readFileSync78(mapPath2, "utf-8");
|
|
587799
587870
|
return content;
|
|
587800
587871
|
} catch {
|
|
587801
587872
|
}
|
|
@@ -587840,7 +587911,7 @@ function loadMemoryContext(repoRoot) {
|
|
|
587840
587911
|
const files = readdirSync29(dir).filter((f2) => f2.endsWith(".json"));
|
|
587841
587912
|
for (const file of files.slice(0, 10)) {
|
|
587842
587913
|
try {
|
|
587843
|
-
const raw =
|
|
587914
|
+
const raw = readFileSync78(join110(dir, file), "utf-8");
|
|
587844
587915
|
const entries = JSON.parse(raw);
|
|
587845
587916
|
const topic = basename16(file, ".json");
|
|
587846
587917
|
for (const [k, v] of Object.entries(entries)) {
|
|
@@ -588387,7 +588458,7 @@ __export(banner_exports, {
|
|
|
588387
588458
|
setBannerWriter: () => setBannerWriter,
|
|
588388
588459
|
setGridText: () => setGridText
|
|
588389
588460
|
});
|
|
588390
|
-
import { existsSync as existsSync97, readFileSync as
|
|
588461
|
+
import { existsSync as existsSync97, readFileSync as readFileSync79, writeFileSync as writeFileSync51, mkdirSync as mkdirSync54 } from "node:fs";
|
|
588391
588462
|
import { join as join111 } from "node:path";
|
|
588392
588463
|
function setBannerWriter(writer) {
|
|
588393
588464
|
chromeWrite3 = writer;
|
|
@@ -588529,7 +588600,7 @@ function loadBannerDesign(workDir, id) {
|
|
|
588529
588600
|
const file = join111(workDir, ".omnius", "banners", `${id}.json`);
|
|
588530
588601
|
if (!existsSync97(file)) return null;
|
|
588531
588602
|
try {
|
|
588532
|
-
return JSON.parse(
|
|
588603
|
+
return JSON.parse(readFileSync79(file, "utf8"));
|
|
588533
588604
|
} catch {
|
|
588534
588605
|
return null;
|
|
588535
588606
|
}
|
|
@@ -588859,13 +588930,13 @@ var init_banner = __esm({
|
|
|
588859
588930
|
});
|
|
588860
588931
|
|
|
588861
588932
|
// packages/cli/src/tui/carousel-descriptors.ts
|
|
588862
|
-
import { existsSync as existsSync98, readFileSync as
|
|
588933
|
+
import { existsSync as existsSync98, readFileSync as readFileSync80, writeFileSync as writeFileSync52, mkdirSync as mkdirSync55, readdirSync as readdirSync30 } from "node:fs";
|
|
588863
588934
|
import { join as join112, basename as basename17 } from "node:path";
|
|
588864
588935
|
function loadToolProfile(repoRoot) {
|
|
588865
588936
|
const filePath = join112(repoRoot, OMNIUS_DIR, "context", TOOL_PROFILE_FILE);
|
|
588866
588937
|
try {
|
|
588867
588938
|
if (!existsSync98(filePath)) return null;
|
|
588868
|
-
return JSON.parse(
|
|
588939
|
+
return JSON.parse(readFileSync80(filePath, "utf-8"));
|
|
588869
588940
|
} catch {
|
|
588870
588941
|
return null;
|
|
588871
588942
|
}
|
|
@@ -588931,7 +589002,7 @@ function loadCachedDescriptors(repoRoot) {
|
|
|
588931
589002
|
const filePath = join112(repoRoot, OMNIUS_DIR, "context", DESCRIPTOR_FILE);
|
|
588932
589003
|
try {
|
|
588933
589004
|
if (!existsSync98(filePath)) return null;
|
|
588934
|
-
const cached = JSON.parse(
|
|
589005
|
+
const cached = JSON.parse(readFileSync80(filePath, "utf-8"));
|
|
588935
589006
|
return cached.phrases.length > 0 ? cached.phrases : null;
|
|
588936
589007
|
} catch {
|
|
588937
589008
|
return null;
|
|
@@ -588995,7 +589066,7 @@ function extractFromPackageJson(repoRoot, tags) {
|
|
|
588995
589066
|
const pkgPath = join112(repoRoot, "package.json");
|
|
588996
589067
|
try {
|
|
588997
589068
|
if (!existsSync98(pkgPath)) return;
|
|
588998
|
-
const pkg = JSON.parse(
|
|
589069
|
+
const pkg = JSON.parse(readFileSync80(pkgPath, "utf-8"));
|
|
588999
589070
|
if (pkg.name && typeof pkg.name === "string") {
|
|
589000
589071
|
const parts = pkg.name.replace(/^@/, "").split("/");
|
|
589001
589072
|
for (const p2 of parts) tags.push(p2);
|
|
@@ -589066,7 +589137,7 @@ function extractFromMemory(repoRoot, tags) {
|
|
|
589066
589137
|
const topic = file.replace(/\.json$/, "").replace(/[-_]/g, " ");
|
|
589067
589138
|
tags.push(topic);
|
|
589068
589139
|
try {
|
|
589069
|
-
const data = JSON.parse(
|
|
589140
|
+
const data = JSON.parse(readFileSync80(join112(memoryDir, file), "utf-8"));
|
|
589070
589141
|
if (data && typeof data === "object") {
|
|
589071
589142
|
const keys = Object.keys(data).slice(0, 3);
|
|
589072
589143
|
for (const key of keys) {
|
|
@@ -589945,7 +590016,7 @@ var init_edit_history = __esm({
|
|
|
589945
590016
|
});
|
|
589946
590017
|
|
|
589947
590018
|
// packages/cli/src/tui/promptLoader.ts
|
|
589948
|
-
import { readFileSync as
|
|
590019
|
+
import { readFileSync as readFileSync81, existsSync as existsSync99 } from "node:fs";
|
|
589949
590020
|
import { join as join114, dirname as dirname32 } from "node:path";
|
|
589950
590021
|
import { fileURLToPath as fileURLToPath15 } from "node:url";
|
|
589951
590022
|
function loadPrompt3(promptPath, vars) {
|
|
@@ -589955,7 +590026,7 @@ function loadPrompt3(promptPath, vars) {
|
|
|
589955
590026
|
if (!existsSync99(fullPath)) {
|
|
589956
590027
|
throw new Error(`Prompt file not found: ${fullPath}`);
|
|
589957
590028
|
}
|
|
589958
|
-
content =
|
|
590029
|
+
content = readFileSync81(fullPath, "utf-8");
|
|
589959
590030
|
cache7.set(promptPath, content);
|
|
589960
590031
|
}
|
|
589961
590032
|
if (!vars) return content;
|
|
@@ -589975,7 +590046,7 @@ var init_promptLoader3 = __esm({
|
|
|
589975
590046
|
});
|
|
589976
590047
|
|
|
589977
590048
|
// packages/cli/src/tui/dream-engine.ts
|
|
589978
|
-
import { mkdirSync as mkdirSync57, writeFileSync as writeFileSync53, readFileSync as
|
|
590049
|
+
import { mkdirSync as mkdirSync57, writeFileSync as writeFileSync53, readFileSync as readFileSync82, existsSync as existsSync100, readdirSync as readdirSync31 } from "node:fs";
|
|
589979
590050
|
import { join as join115, basename as basename18 } from "node:path";
|
|
589980
590051
|
import { execSync as execSync54 } from "node:child_process";
|
|
589981
590052
|
function setDreamWriteContent(fn) {
|
|
@@ -589992,7 +590063,7 @@ function loadAutoresearchMemory(repoRoot) {
|
|
|
589992
590063
|
const memoryPath = join115(repoRoot, ".omnius", "memory", "autoresearch.json");
|
|
589993
590064
|
if (!existsSync100(memoryPath)) return "";
|
|
589994
590065
|
try {
|
|
589995
|
-
const raw =
|
|
590066
|
+
const raw = readFileSync82(memoryPath, "utf-8");
|
|
589996
590067
|
const data = JSON.parse(raw);
|
|
589997
590068
|
const sections = [];
|
|
589998
590069
|
for (const key of AUTORESEARCH_MEMORY_KEYS) {
|
|
@@ -590232,7 +590303,7 @@ var init_dream_engine = __esm({
|
|
|
590232
590303
|
if (!existsSync100(targetPath)) {
|
|
590233
590304
|
return { success: false, output: "", error: `File not found: ${rawPath}`, durationMs: Date.now() - start2 };
|
|
590234
590305
|
}
|
|
590235
|
-
let content =
|
|
590306
|
+
let content = readFileSync82(targetPath, "utf-8");
|
|
590236
590307
|
if (!content.includes(oldStr)) {
|
|
590237
590308
|
return { success: false, output: "", error: "old_string not found in file", durationMs: Date.now() - start2 };
|
|
590238
590309
|
}
|
|
@@ -590320,7 +590391,7 @@ var init_dream_engine = __esm({
|
|
|
590320
590391
|
if (!existsSync100(targetPath)) {
|
|
590321
590392
|
return { success: false, output: "", error: `File not found: ${rawPath}`, durationMs: Date.now() - start2 };
|
|
590322
590393
|
}
|
|
590323
|
-
let content =
|
|
590394
|
+
let content = readFileSync82(targetPath, "utf-8");
|
|
590324
590395
|
if (!content.includes(oldStr)) {
|
|
590325
590396
|
return { success: false, output: "", error: "old_string not found in file", durationMs: Date.now() - start2 };
|
|
590326
590397
|
}
|
|
@@ -591280,7 +591351,7 @@ ${summary}` };
|
|
|
591280
591351
|
try {
|
|
591281
591352
|
let notes2 = [];
|
|
591282
591353
|
if (existsSync100(notesPath)) {
|
|
591283
|
-
notes2 = JSON.parse(
|
|
591354
|
+
notes2 = JSON.parse(readFileSync82(notesPath, "utf-8"));
|
|
591284
591355
|
}
|
|
591285
591356
|
if (action === "add") {
|
|
591286
591357
|
const note = {
|
|
@@ -591904,7 +591975,7 @@ var init_bless_engine = __esm({
|
|
|
591904
591975
|
});
|
|
591905
591976
|
|
|
591906
591977
|
// packages/cli/src/tui/dmn-engine.ts
|
|
591907
|
-
import { existsSync as existsSync101, readFileSync as
|
|
591978
|
+
import { existsSync as existsSync101, readFileSync as readFileSync83, writeFileSync as writeFileSync54, mkdirSync as mkdirSync58, readdirSync as readdirSync32, unlinkSync as unlinkSync19 } from "node:fs";
|
|
591908
591979
|
import { join as join116, basename as basename19 } from "node:path";
|
|
591909
591980
|
function buildDMNGatherPrompt(recentTaskSummaries, dueReminders, attentionItems, memoryTopics, capabilities, competence, reflectionBuffer) {
|
|
591910
591981
|
const competenceReport = competence.length > 0 ? competence.map((c9) => {
|
|
@@ -592669,7 +592740,7 @@ OUTPUT: Call task_complete with JSON:
|
|
|
592669
592740
|
const path11 = join116(this.stateDir, "state.json");
|
|
592670
592741
|
if (existsSync101(path11)) {
|
|
592671
592742
|
try {
|
|
592672
|
-
this.state = JSON.parse(
|
|
592743
|
+
this.state = JSON.parse(readFileSync83(path11, "utf-8"));
|
|
592673
592744
|
} catch {
|
|
592674
592745
|
}
|
|
592675
592746
|
}
|
|
@@ -592709,7 +592780,7 @@ OUTPUT: Call task_complete with JSON:
|
|
|
592709
592780
|
});
|
|
592710
592781
|
|
|
592711
592782
|
// packages/cli/src/tui/snr-engine.ts
|
|
592712
|
-
import { existsSync as existsSync102, readdirSync as readdirSync33, readFileSync as
|
|
592783
|
+
import { existsSync as existsSync102, readdirSync as readdirSync33, readFileSync as readFileSync84 } from "node:fs";
|
|
592713
592784
|
import { join as join117, basename as basename20 } from "node:path";
|
|
592714
592785
|
function computeDPrime(signalScores, noiseScores) {
|
|
592715
592786
|
if (signalScores.length === 0 || noiseScores.length === 0) return 0;
|
|
@@ -593007,7 +593078,7 @@ Call task_complete with the JSON array when done.`,
|
|
|
593007
593078
|
const topic = basename20(f2, ".json");
|
|
593008
593079
|
if (topics.length > 0 && !topics.includes(topic)) continue;
|
|
593009
593080
|
try {
|
|
593010
|
-
const data = JSON.parse(
|
|
593081
|
+
const data = JSON.parse(readFileSync84(join117(dir, f2), "utf-8"));
|
|
593011
593082
|
for (const [key, val] of Object.entries(data)) {
|
|
593012
593083
|
const value2 = typeof val === "object" && val !== null && "value" in val ? String(val.value) : String(val);
|
|
593013
593084
|
entries.push({ topic, key, value: value2 });
|
|
@@ -593559,7 +593630,7 @@ import { spawn as spawn26 } from "node:child_process";
|
|
|
593559
593630
|
import {
|
|
593560
593631
|
existsSync as existsSync103,
|
|
593561
593632
|
mkdirSync as mkdirSync59,
|
|
593562
|
-
readFileSync as
|
|
593633
|
+
readFileSync as readFileSync85,
|
|
593563
593634
|
statSync as statSync34,
|
|
593564
593635
|
writeFileSync as writeFileSync55
|
|
593565
593636
|
} from "node:fs";
|
|
@@ -593612,7 +593683,7 @@ function collectGeneratedArtifactPathsFromText(text, root) {
|
|
|
593612
593683
|
}
|
|
593613
593684
|
return [...paths];
|
|
593614
593685
|
}
|
|
593615
|
-
function buildTelegramCreativeTools(repoRoot, chatId, backendUrl) {
|
|
593686
|
+
function buildTelegramCreativeTools(repoRoot, chatId, backendUrl, imageDefaults = {}) {
|
|
593616
593687
|
const root = telegramCreativeWorkspaceRoot(repoRoot, chatId);
|
|
593617
593688
|
ensureManifest(root);
|
|
593618
593689
|
return [
|
|
@@ -593622,7 +593693,7 @@ function buildTelegramCreativeTools(repoRoot, chatId, backendUrl) {
|
|
|
593622
593693
|
scopedTool(new FileEditTool(root), root, "edit"),
|
|
593623
593694
|
scopedTool(new FilePatchTool(root), root, "edit"),
|
|
593624
593695
|
scopedTool(new StructuredFileTool(root), root, "create"),
|
|
593625
|
-
scopedTool(new ImageGenerateTool(root, backendUrl), root, "generate"),
|
|
593696
|
+
scopedTool(new ImageGenerateTool(root, backendUrl, imageDefaults), root, "generate"),
|
|
593626
593697
|
new CreativeAudioFileTool(root)
|
|
593627
593698
|
];
|
|
593628
593699
|
}
|
|
@@ -593722,7 +593793,7 @@ function ensureManifest(root) {
|
|
|
593722
593793
|
function readManifest(root) {
|
|
593723
593794
|
ensureManifest(root);
|
|
593724
593795
|
try {
|
|
593725
|
-
const parsed = JSON.parse(
|
|
593796
|
+
const parsed = JSON.parse(readFileSync85(manifestPath(root), "utf8"));
|
|
593726
593797
|
return {
|
|
593727
593798
|
files: Array.isArray(parsed.files) ? parsed.files.filter((file) => typeof file === "string") : [],
|
|
593728
593799
|
updatedAt: typeof parsed.updatedAt === "string" ? parsed.updatedAt : (/* @__PURE__ */ new Date()).toISOString()
|
|
@@ -593870,7 +593941,7 @@ __export(vision_ingress_exports, {
|
|
|
593870
593941
|
runVisionIngress: () => runVisionIngress
|
|
593871
593942
|
});
|
|
593872
593943
|
import { execFileSync as execFileSync3 } from "node:child_process";
|
|
593873
|
-
import { existsSync as existsSync104, readFileSync as
|
|
593944
|
+
import { existsSync as existsSync104, readFileSync as readFileSync86, unlinkSync as unlinkSync20 } from "node:fs";
|
|
593874
593945
|
import { join as join119 } from "node:path";
|
|
593875
593946
|
function isTesseractAvailable() {
|
|
593876
593947
|
try {
|
|
@@ -593925,7 +593996,7 @@ function advancedOcr(imagePath) {
|
|
|
593925
593996
|
], { timeout: 15e3, stdio: "pipe" });
|
|
593926
593997
|
const txtFile = `${outFile}.txt`;
|
|
593927
593998
|
if (existsSync104(txtFile)) {
|
|
593928
|
-
const text =
|
|
593999
|
+
const text = readFileSync86(txtFile, "utf-8").trim();
|
|
593929
594000
|
if (text.length > 0) results.push(text);
|
|
593930
594001
|
try {
|
|
593931
594002
|
unlinkSync20(txtFile);
|
|
@@ -593942,7 +594013,7 @@ function advancedOcr(imagePath) {
|
|
|
593942
594013
|
async function queryVisionModel(modelName, imagePath, prompt = "Describe what you see in this image in detail. Include any text, UI elements, code, diagrams, or visual content.") {
|
|
593943
594014
|
if (!isVisionModel(modelName)) return "";
|
|
593944
594015
|
if (!existsSync104(imagePath)) return "";
|
|
593945
|
-
const imageBuffer =
|
|
594016
|
+
const imageBuffer = readFileSync86(imagePath);
|
|
593946
594017
|
const base64Image = imageBuffer.toString("base64");
|
|
593947
594018
|
try {
|
|
593948
594019
|
const response = await fetch("http://localhost:11434/api/generate", {
|
|
@@ -594013,7 +594084,7 @@ var init_vision_ingress = __esm({
|
|
|
594013
594084
|
});
|
|
594014
594085
|
|
|
594015
594086
|
// packages/cli/src/tui/telegram-bridge.ts
|
|
594016
|
-
import { mkdirSync as mkdirSync60, existsSync as existsSync105, unlinkSync as unlinkSync21, statSync as statSync35, readFileSync as
|
|
594087
|
+
import { mkdirSync as mkdirSync60, existsSync as existsSync105, unlinkSync as unlinkSync21, statSync as statSync35, readFileSync as readFileSync87, writeFileSync as writeFileSync57 } from "node:fs";
|
|
594017
594088
|
import { join as join120, resolve as resolve39, basename as basename22, relative as relative13, isAbsolute as isAbsolute6 } from "node:path";
|
|
594018
594089
|
import { writeFile as writeFileAsync } from "node:fs/promises";
|
|
594019
594090
|
import { createHash as createHash19, randomInt } from "node:crypto";
|
|
@@ -594795,6 +594866,7 @@ var init_telegram_bridge = __esm({
|
|
|
594795
594866
|
init_command_registry();
|
|
594796
594867
|
init_scoped_personality();
|
|
594797
594868
|
init_telegram_creative_tools();
|
|
594869
|
+
init_omnius_directory();
|
|
594798
594870
|
TELEGRAM_SAFETY_PROMPT = `
|
|
594799
594871
|
CRITICAL SAFETY NOTICE — PUBLIC TELEGRAM CHANNEL
|
|
594800
594872
|
|
|
@@ -595203,7 +595275,7 @@ Telegram response contract:
|
|
|
595203
595275
|
const path11 = this.telegramConversationPath(sessionKey);
|
|
595204
595276
|
if (!existsSync105(path11)) return;
|
|
595205
595277
|
try {
|
|
595206
|
-
const parsed = JSON.parse(
|
|
595278
|
+
const parsed = JSON.parse(readFileSync87(path11, "utf8"));
|
|
595207
595279
|
if (Array.isArray(parsed.history)) {
|
|
595208
595280
|
this.chatHistory.set(sessionKey, parsed.history.slice(-TELEGRAM_CHAT_HISTORY_LIMIT));
|
|
595209
595281
|
}
|
|
@@ -596645,6 +596717,7 @@ ${creativeWorkspace}` : ""}`;
|
|
|
596645
596717
|
* All possible tools are instantiated, then applyToolPolicy filters them.
|
|
596646
596718
|
*/
|
|
596647
596719
|
buildSubAgentTools(context2, repoRoot, chatId, todoSessionId) {
|
|
596720
|
+
const imageDefaults = this.imageGenerationDefaultsForRepo(repoRoot);
|
|
596648
596721
|
const taskComplete = {
|
|
596649
596722
|
name: "task_complete",
|
|
596650
596723
|
description: "Internal completion signal for Telegram runs. Put the actual user-facing reply in assistant text before calling this. Use summary 'no_reply' only to silently skip responding; never write that sentinel as assistant text.",
|
|
@@ -596743,7 +596816,7 @@ ${creativeWorkspace}` : ""}`;
|
|
|
596743
596816
|
new BrowserActionTool(),
|
|
596744
596817
|
new CarbonylBrowserTool(),
|
|
596745
596818
|
new PlaywrightBrowserTool(),
|
|
596746
|
-
new ImageGenerateTool(repoRoot, this.agentConfig?.backendUrl),
|
|
596819
|
+
new ImageGenerateTool(repoRoot, this.agentConfig?.backendUrl, imageDefaults),
|
|
596747
596820
|
new NotebookEditTool(),
|
|
596748
596821
|
new RepoMapTool(repoRoot),
|
|
596749
596822
|
new ImportGraphTool(repoRoot),
|
|
@@ -596782,13 +596855,21 @@ ${creativeWorkspace}` : ""}`;
|
|
|
596782
596855
|
const creativeTools = buildTelegramCreativeTools(
|
|
596783
596856
|
repoRoot,
|
|
596784
596857
|
chatId,
|
|
596785
|
-
this.agentConfig?.backendUrl
|
|
596858
|
+
this.agentConfig?.backendUrl,
|
|
596859
|
+
imageDefaults
|
|
596786
596860
|
).map((tool) => adaptTool5(tool, todoSessionId));
|
|
596787
596861
|
adaptedTools.push(...creativeTools);
|
|
596788
596862
|
adaptedTools.push(adaptTool5(this.buildTelegramSendFileTool(context2, repoRoot, chatId), todoSessionId));
|
|
596789
596863
|
}
|
|
596790
596864
|
return [...adaptedTools, taskComplete];
|
|
596791
596865
|
}
|
|
596866
|
+
imageGenerationDefaultsForRepo(repoRoot) {
|
|
596867
|
+
const settings = resolveSettings(repoRoot);
|
|
596868
|
+
return {
|
|
596869
|
+
model: typeof settings.imageModel === "string" && settings.imageModel.trim() ? settings.imageModel : void 0,
|
|
596870
|
+
backend: settings.imageBackend
|
|
596871
|
+
};
|
|
596872
|
+
}
|
|
596792
596873
|
buildTelegramSendFileTool(context2, repoRoot, currentChatId) {
|
|
596793
596874
|
const bridge = this;
|
|
596794
596875
|
const adminDm = context2 === "telegram-admin-dm";
|
|
@@ -596992,7 +597073,7 @@ ${creativeWorkspace}` : ""}`;
|
|
|
596992
597073
|
const ingressResult = await runVisionIngress2(
|
|
596993
597074
|
{
|
|
596994
597075
|
path: localPath,
|
|
596995
|
-
buffer:
|
|
597076
|
+
buffer: readFileSync87(localPath),
|
|
596996
597077
|
mime: telegramImageMime(msg.media)
|
|
596997
597078
|
},
|
|
596998
597079
|
this.agentConfig?.model ?? ""
|
|
@@ -597163,7 +597244,7 @@ ${visionContext}]`;
|
|
|
597163
597244
|
return result2.result?.message_id ?? null;
|
|
597164
597245
|
}
|
|
597165
597246
|
if (!existsSync105(media.value)) throw new Error(`File does not exist: ${media.value}`);
|
|
597166
|
-
const buffer2 =
|
|
597247
|
+
const buffer2 = readFileSync87(media.value);
|
|
597167
597248
|
const boundary = `----omnius-media-${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
597168
597249
|
const filename = basename22(media.value);
|
|
597169
597250
|
const contentType = mimeForPath(media.value, media.kind);
|
|
@@ -597255,7 +597336,7 @@ Content-Type: ${contentType}\r
|
|
|
597255
597336
|
addField(field, pathOrFileId);
|
|
597256
597337
|
continue;
|
|
597257
597338
|
}
|
|
597258
|
-
const buffer2 =
|
|
597339
|
+
const buffer2 = readFileSync87(pathOrFileId);
|
|
597259
597340
|
const filename = basename22(pathOrFileId);
|
|
597260
597341
|
parts.push(Buffer.from(`--${boundary}\r
|
|
597261
597342
|
`));
|
|
@@ -597669,7 +597750,7 @@ __export(chat_session_exports, {
|
|
|
597669
597750
|
import { randomUUID as randomUUID13 } from "node:crypto";
|
|
597670
597751
|
import {
|
|
597671
597752
|
existsSync as existsSync106,
|
|
597672
|
-
readFileSync as
|
|
597753
|
+
readFileSync as readFileSync88,
|
|
597673
597754
|
readdirSync as readdirSync35,
|
|
597674
597755
|
writeFileSync as writeFileSync58,
|
|
597675
597756
|
renameSync as renameSync5,
|
|
@@ -597726,7 +597807,7 @@ function loadPersistedSessions() {
|
|
|
597726
597807
|
if (!f2.endsWith(".json") || f2.includes(".tmp.")) continue;
|
|
597727
597808
|
const fp = join121(dir, f2);
|
|
597728
597809
|
try {
|
|
597729
|
-
const parsed = JSON.parse(
|
|
597810
|
+
const parsed = JSON.parse(readFileSync88(fp, "utf-8"));
|
|
597730
597811
|
if (f2.endsWith(".inflight.json")) {
|
|
597731
597812
|
if (parsed && parsed.pid && parsed.status === "running") {
|
|
597732
597813
|
try {
|
|
@@ -597766,7 +597847,7 @@ function buildSystemPrompt(cwd4) {
|
|
|
597766
597847
|
const diaryPath = join121(cwd4, ".omnius", "context", "session-diary.md");
|
|
597767
597848
|
if (existsSync106(diaryPath)) {
|
|
597768
597849
|
try {
|
|
597769
|
-
const diary =
|
|
597850
|
+
const diary = readFileSync88(diaryPath, "utf-8").slice(0, 1e3);
|
|
597770
597851
|
parts.push(`\\nPrevious session history:\\n${diary}`);
|
|
597771
597852
|
} catch {
|
|
597772
597853
|
}
|
|
@@ -597779,7 +597860,7 @@ function buildSystemPrompt(cwd4) {
|
|
|
597779
597860
|
parts.push("\\nPersistent memory topics: " + files.map((f2) => f2.replace(".json", "")).join(", "));
|
|
597780
597861
|
for (const f2 of files.slice(0, 3)) {
|
|
597781
597862
|
try {
|
|
597782
|
-
const data = JSON.parse(
|
|
597863
|
+
const data = JSON.parse(readFileSync88(join121(memDir, f2), "utf-8"));
|
|
597783
597864
|
const entries = Object.entries(data).slice(0, 3);
|
|
597784
597865
|
if (entries.length > 0) {
|
|
597785
597866
|
parts.push(`\\nMemory [${f2.replace(".json", "")}]: ` + entries.map(([k, v]) => `${k}: ${String(v.value ?? v).slice(0, 100)}`).join("; "));
|
|
@@ -597795,7 +597876,7 @@ function buildSystemPrompt(cwd4) {
|
|
|
597795
597876
|
const p2 = join121(cwd4, name10);
|
|
597796
597877
|
if (existsSync106(p2)) {
|
|
597797
597878
|
try {
|
|
597798
|
-
const content =
|
|
597879
|
+
const content = readFileSync88(p2, "utf-8").slice(0, 500);
|
|
597799
597880
|
parts.push(`\\nProject instructions (${name10}):\\n${content}`);
|
|
597800
597881
|
} catch {
|
|
597801
597882
|
}
|
|
@@ -597813,7 +597894,7 @@ function getSession(sessionId, model, cwd4) {
|
|
|
597813
597894
|
try {
|
|
597814
597895
|
const fp = sessionPath(sessionId);
|
|
597815
597896
|
if (existsSync106(fp)) {
|
|
597816
|
-
const parsed = JSON.parse(
|
|
597897
|
+
const parsed = JSON.parse(readFileSync88(fp, "utf-8"));
|
|
597817
597898
|
if (parsed && parsed.id === sessionId) {
|
|
597818
597899
|
parsed.lastActivity = Date.now();
|
|
597819
597900
|
sessions.set(sessionId, parsed);
|
|
@@ -597931,7 +598012,7 @@ function drainCheckins(sessionId) {
|
|
|
597931
598012
|
const fp = checkinPath(sessionId);
|
|
597932
598013
|
if (!existsSync106(fp)) return [];
|
|
597933
598014
|
try {
|
|
597934
|
-
const raw =
|
|
598015
|
+
const raw = readFileSync88(fp, "utf-8");
|
|
597935
598016
|
try {
|
|
597936
598017
|
unlinkSync22(fp);
|
|
597937
598018
|
} catch {
|
|
@@ -597984,7 +598065,7 @@ function lookupSession(id) {
|
|
|
597984
598065
|
try {
|
|
597985
598066
|
const fp = sessionPath(id);
|
|
597986
598067
|
if (existsSync106(fp)) {
|
|
597987
|
-
const parsed = JSON.parse(
|
|
598068
|
+
const parsed = JSON.parse(readFileSync88(fp, "utf-8"));
|
|
597988
598069
|
if (parsed && parsed.id === id) {
|
|
597989
598070
|
sessions.set(id, parsed);
|
|
597990
598071
|
return parsed;
|
|
@@ -598037,7 +598118,7 @@ function getInFlightChat(sessionId) {
|
|
|
598037
598118
|
try {
|
|
598038
598119
|
const p2 = inFlightPath(sessionId);
|
|
598039
598120
|
if (existsSync106(p2)) {
|
|
598040
|
-
const parsed = JSON.parse(
|
|
598121
|
+
const parsed = JSON.parse(readFileSync88(p2, "utf-8"));
|
|
598041
598122
|
if (parsed && parsed.sessionId === sessionId) {
|
|
598042
598123
|
return parsed;
|
|
598043
598124
|
}
|
|
@@ -598087,14 +598168,14 @@ __export(projects_exports, {
|
|
|
598087
598168
|
setCurrentProject: () => setCurrentProject,
|
|
598088
598169
|
unregisterProject: () => unregisterProject
|
|
598089
598170
|
});
|
|
598090
|
-
import { readFileSync as
|
|
598171
|
+
import { readFileSync as readFileSync89, writeFileSync as writeFileSync59, mkdirSync as mkdirSync62, existsSync as existsSync107, statSync as statSync36, renameSync as renameSync6 } from "node:fs";
|
|
598091
598172
|
import { homedir as homedir37 } from "node:os";
|
|
598092
598173
|
import { basename as basename23, join as join122, resolve as resolve40 } from "node:path";
|
|
598093
598174
|
import { randomUUID as randomUUID14 } from "node:crypto";
|
|
598094
598175
|
function readAll2() {
|
|
598095
598176
|
try {
|
|
598096
598177
|
if (!existsSync107(PROJECTS_FILE)) return { projects: [], schemaVersion: 1 };
|
|
598097
|
-
const raw =
|
|
598178
|
+
const raw = readFileSync89(PROJECTS_FILE, "utf8");
|
|
598098
598179
|
const parsed = JSON.parse(raw);
|
|
598099
598180
|
if (!parsed || !Array.isArray(parsed.projects)) return { projects: [], schemaVersion: 1 };
|
|
598100
598181
|
return { projects: parsed.projects, schemaVersion: 1 };
|
|
@@ -598171,7 +598252,7 @@ function getCurrentProject() {
|
|
|
598171
598252
|
if (!currentRoot) {
|
|
598172
598253
|
try {
|
|
598173
598254
|
if (existsSync107(CURRENT_FILE)) {
|
|
598174
|
-
const persisted =
|
|
598255
|
+
const persisted = readFileSync89(CURRENT_FILE, "utf8").trim();
|
|
598175
598256
|
if (persisted) currentRoot = persisted;
|
|
598176
598257
|
}
|
|
598177
598258
|
} catch {
|
|
@@ -598907,7 +598988,7 @@ var init_access_policy = __esm({
|
|
|
598907
598988
|
|
|
598908
598989
|
// packages/cli/src/api/project-preferences.ts
|
|
598909
598990
|
import { createHash as createHash20 } from "node:crypto";
|
|
598910
|
-
import { existsSync as existsSync108, mkdirSync as mkdirSync63, readFileSync as
|
|
598991
|
+
import { existsSync as existsSync108, mkdirSync as mkdirSync63, readFileSync as readFileSync90, renameSync as renameSync7, writeFileSync as writeFileSync60, unlinkSync as unlinkSync23 } from "node:fs";
|
|
598911
598992
|
import { homedir as homedir38 } from "node:os";
|
|
598912
598993
|
import { join as join123, resolve as resolve41 } from "node:path";
|
|
598913
598994
|
import { randomUUID as randomUUID15 } from "node:crypto";
|
|
@@ -598940,7 +599021,7 @@ function readProjectPreferences(root) {
|
|
|
598940
599021
|
try {
|
|
598941
599022
|
const file = prefsPath(root);
|
|
598942
599023
|
if (!existsSync108(file)) return { ...DEFAULT_PREFS };
|
|
598943
|
-
const raw =
|
|
599024
|
+
const raw = readFileSync90(file, "utf8");
|
|
598944
599025
|
const parsed = JSON.parse(raw);
|
|
598945
599026
|
if (!parsed || parsed.v !== SCHEMA_VERSION) return { ...DEFAULT_PREFS };
|
|
598946
599027
|
return { ...DEFAULT_PREFS, ...parsed, v: SCHEMA_VERSION };
|
|
@@ -599891,7 +599972,7 @@ __export(audit_log_exports, {
|
|
|
599891
599972
|
recordAudit: () => recordAudit,
|
|
599892
599973
|
sanitizeBody: () => sanitizeBody
|
|
599893
599974
|
});
|
|
599894
|
-
import { mkdirSync as mkdirSync64, appendFileSync as appendFileSync7, readFileSync as
|
|
599975
|
+
import { mkdirSync as mkdirSync64, appendFileSync as appendFileSync7, readFileSync as readFileSync91, existsSync as existsSync109 } from "node:fs";
|
|
599895
599976
|
import { join as join124 } from "node:path";
|
|
599896
599977
|
function initAuditLog(omniusDir) {
|
|
599897
599978
|
auditDir = join124(omniusDir, "audit");
|
|
@@ -599928,7 +600009,7 @@ function sanitizeBody(body, maxLen = 200) {
|
|
|
599928
600009
|
function queryAudit(opts) {
|
|
599929
600010
|
if (!initialized || !existsSync109(auditFile)) return [];
|
|
599930
600011
|
try {
|
|
599931
|
-
const raw =
|
|
600012
|
+
const raw = readFileSync91(auditFile, "utf-8");
|
|
599932
600013
|
const lines = raw.split("\n").filter(Boolean);
|
|
599933
600014
|
let records = lines.map((l2) => {
|
|
599934
600015
|
try {
|
|
@@ -600263,7 +600344,7 @@ __export(aiwg_exports, {
|
|
|
600263
600344
|
resolveAiwgRoot: () => resolveAiwgRoot,
|
|
600264
600345
|
tryRouteAiwg: () => tryRouteAiwg
|
|
600265
600346
|
});
|
|
600266
|
-
import { existsSync as existsSync111, readFileSync as
|
|
600347
|
+
import { existsSync as existsSync111, readFileSync as readFileSync92, readdirSync as readdirSync36, statSync as statSync38 } from "node:fs";
|
|
600267
600348
|
import { join as join125 } from "node:path";
|
|
600268
600349
|
import { homedir as homedir39 } from "node:os";
|
|
600269
600350
|
import { execSync as execSync55 } from "node:child_process";
|
|
@@ -600334,7 +600415,7 @@ function resolveAiwgRoot() {
|
|
|
600334
600415
|
const pj = join125(cur, "package.json");
|
|
600335
600416
|
if (existsSync111(pj)) {
|
|
600336
600417
|
try {
|
|
600337
|
-
const pkg = JSON.parse(
|
|
600418
|
+
const pkg = JSON.parse(readFileSync92(pj, "utf-8"));
|
|
600338
600419
|
if (pkg.name === "aiwg") {
|
|
600339
600420
|
_cachedAiwgRoot = cur;
|
|
600340
600421
|
return cur;
|
|
@@ -600424,7 +600505,7 @@ function readFirstLineDescription(dir) {
|
|
|
600424
600505
|
const p2 = join125(dir, candidate);
|
|
600425
600506
|
if (!existsSync111(p2)) continue;
|
|
600426
600507
|
try {
|
|
600427
|
-
const txt =
|
|
600508
|
+
const txt = readFileSync92(p2, "utf-8");
|
|
600428
600509
|
const descMatch = txt.match(/^description:\s*(.+)$/m);
|
|
600429
600510
|
if (descMatch) return descMatch[1].trim().slice(0, 200);
|
|
600430
600511
|
for (const line of txt.split("\n")) {
|
|
@@ -600475,7 +600556,7 @@ function walkForItems(dir, out, depth) {
|
|
|
600475
600556
|
}
|
|
600476
600557
|
function parseItem(p2) {
|
|
600477
600558
|
try {
|
|
600478
|
-
const raw =
|
|
600559
|
+
const raw = readFileSync92(p2, "utf-8");
|
|
600479
600560
|
const header = raw.slice(0, 3e3);
|
|
600480
600561
|
const nameMatch = header.match(/^name:\s*(.+)$/m);
|
|
600481
600562
|
const descMatch = header.match(/^description:\s*(.+)$/m);
|
|
@@ -600514,7 +600595,7 @@ function deriveSource(p2) {
|
|
|
600514
600595
|
function loadAiwgItemContent(path11, maxBytes = 2e4) {
|
|
600515
600596
|
try {
|
|
600516
600597
|
if (!existsSync111(path11)) return null;
|
|
600517
|
-
const raw =
|
|
600598
|
+
const raw = readFileSync92(path11, "utf-8");
|
|
600518
600599
|
return raw.length > maxBytes ? raw.slice(0, maxBytes) + "\n\n...(truncated for context budget)" : raw;
|
|
600519
600600
|
} catch {
|
|
600520
600601
|
return null;
|
|
@@ -601023,7 +601104,7 @@ __export(runtime_keys_exports, {
|
|
|
601023
601104
|
mintKey: () => mintKey,
|
|
601024
601105
|
revokeByPrefix: () => revokeByPrefix
|
|
601025
601106
|
});
|
|
601026
|
-
import { existsSync as existsSync112, readFileSync as
|
|
601107
|
+
import { existsSync as existsSync112, readFileSync as readFileSync93, writeFileSync as writeFileSync61, mkdirSync as mkdirSync66, chmodSync } from "node:fs";
|
|
601027
601108
|
import { join as join126 } from "node:path";
|
|
601028
601109
|
import { homedir as homedir40 } from "node:os";
|
|
601029
601110
|
import { randomBytes as randomBytes21 } from "node:crypto";
|
|
@@ -601034,7 +601115,7 @@ function ensureDir2() {
|
|
|
601034
601115
|
function loadAll() {
|
|
601035
601116
|
if (!existsSync112(KEYS_FILE)) return [];
|
|
601036
601117
|
try {
|
|
601037
|
-
const raw =
|
|
601118
|
+
const raw = readFileSync93(KEYS_FILE, "utf-8");
|
|
601038
601119
|
const parsed = JSON.parse(raw);
|
|
601039
601120
|
if (!Array.isArray(parsed)) return [];
|
|
601040
601121
|
return parsed;
|
|
@@ -601120,7 +601201,7 @@ __export(tor_fallback_exports, {
|
|
|
601120
601201
|
torIsReachable: () => torIsReachable,
|
|
601121
601202
|
tunnelViaTor: () => tunnelViaTor
|
|
601122
601203
|
});
|
|
601123
|
-
import { existsSync as existsSync113, readFileSync as
|
|
601204
|
+
import { existsSync as existsSync113, readFileSync as readFileSync94 } from "node:fs";
|
|
601124
601205
|
import { homedir as homedir41 } from "node:os";
|
|
601125
601206
|
import { join as join127 } from "node:path";
|
|
601126
601207
|
import { createConnection as createConnection3 } from "node:net";
|
|
@@ -601133,7 +601214,7 @@ function getLocalOnion() {
|
|
|
601133
601214
|
for (const p2 of candidates) {
|
|
601134
601215
|
try {
|
|
601135
601216
|
if (existsSync113(p2)) {
|
|
601136
|
-
const v =
|
|
601217
|
+
const v = readFileSync94(p2, "utf-8").trim();
|
|
601137
601218
|
if (v && v.endsWith(".onion")) return v;
|
|
601138
601219
|
}
|
|
601139
601220
|
} catch {
|
|
@@ -601608,7 +601689,7 @@ var init_command_passthrough = __esm({
|
|
|
601608
601689
|
});
|
|
601609
601690
|
|
|
601610
601691
|
// packages/cli/src/api/routes-v1.ts
|
|
601611
|
-
import { existsSync as existsSync115, readFileSync as
|
|
601692
|
+
import { existsSync as existsSync115, readFileSync as readFileSync95, readdirSync as readdirSync37, statSync as statSync39 } from "node:fs";
|
|
601612
601693
|
import { join as join129, resolve as pathResolve2 } from "node:path";
|
|
601613
601694
|
import { homedir as homedir42 } from "node:os";
|
|
601614
601695
|
async function tryRouteV1(ctx3) {
|
|
@@ -601865,7 +601946,7 @@ function walkForSkills(dir, out, depth) {
|
|
|
601865
601946
|
walkForSkills(p2, out, depth + 1);
|
|
601866
601947
|
} else if (e2.isFile() && e2.name === "SKILL.md") {
|
|
601867
601948
|
try {
|
|
601868
|
-
const content =
|
|
601949
|
+
const content = readFileSync95(p2, "utf-8").slice(0, 2e3);
|
|
601869
601950
|
const nameMatch = content.match(/^name:\s*(.+)$/m);
|
|
601870
601951
|
const descMatch = content.match(/^description:\s*(.+)$/m);
|
|
601871
601952
|
out.push({
|
|
@@ -602339,7 +602420,7 @@ async function handleFilesRead(ctx3) {
|
|
|
602339
602420
|
}));
|
|
602340
602421
|
return true;
|
|
602341
602422
|
}
|
|
602342
|
-
const content =
|
|
602423
|
+
const content = readFileSync95(resolved, "utf-8");
|
|
602343
602424
|
const offset = typeof body.offset === "number" && body.offset >= 0 ? body.offset : 0;
|
|
602344
602425
|
const limit = typeof body.limit === "number" && body.limit > 0 ? body.limit : content.length;
|
|
602345
602426
|
const slice2 = content.slice(offset, offset + limit);
|
|
@@ -602579,7 +602660,7 @@ async function handleNexusStatus(ctx3) {
|
|
|
602579
602660
|
for (const p2 of statePaths) {
|
|
602580
602661
|
if (!existsSync115(p2)) continue;
|
|
602581
602662
|
try {
|
|
602582
|
-
const raw =
|
|
602663
|
+
const raw = readFileSync95(p2, "utf-8");
|
|
602583
602664
|
states.push({ source: p2, data: JSON.parse(raw) });
|
|
602584
602665
|
} catch (e2) {
|
|
602585
602666
|
states.push({ source: p2, error: String(e2) });
|
|
@@ -602607,7 +602688,7 @@ async function handleNexusStatus(ctx3) {
|
|
|
602607
602688
|
function loadAgentName() {
|
|
602608
602689
|
try {
|
|
602609
602690
|
const p2 = join129(homedir42(), ".omnius", "agent-name");
|
|
602610
|
-
if (existsSync115(p2)) return
|
|
602691
|
+
if (existsSync115(p2)) return readFileSync95(p2, "utf-8").trim();
|
|
602611
602692
|
} catch {
|
|
602612
602693
|
}
|
|
602613
602694
|
return null;
|
|
@@ -602623,7 +602704,7 @@ async function handleSponsors(ctx3) {
|
|
|
602623
602704
|
for (const p2 of candidates) {
|
|
602624
602705
|
if (!existsSync115(p2)) continue;
|
|
602625
602706
|
try {
|
|
602626
|
-
const raw = JSON.parse(
|
|
602707
|
+
const raw = JSON.parse(readFileSync95(p2, "utf-8"));
|
|
602627
602708
|
if (Array.isArray(raw)) {
|
|
602628
602709
|
sponsors = raw;
|
|
602629
602710
|
break;
|
|
@@ -602703,7 +602784,7 @@ async function handleEvaluate(ctx3) {
|
|
|
602703
602784
|
}));
|
|
602704
602785
|
return true;
|
|
602705
602786
|
}
|
|
602706
|
-
const job = JSON.parse(
|
|
602787
|
+
const job = JSON.parse(readFileSync95(jobPath, "utf-8"));
|
|
602707
602788
|
sendJson(res, 200, {
|
|
602708
602789
|
run_id: runId,
|
|
602709
602790
|
task: job.task,
|
|
@@ -602843,7 +602924,7 @@ async function handleMintKey(ctx3) {
|
|
|
602843
602924
|
function _readStatusFile(p2) {
|
|
602844
602925
|
if (!existsSync115(p2)) return null;
|
|
602845
602926
|
try {
|
|
602846
|
-
const data = JSON.parse(
|
|
602927
|
+
const data = JSON.parse(readFileSync95(p2, "utf-8"));
|
|
602847
602928
|
if (data?.connected && typeof data.peerId === "string" && data.peerId.length > 10) {
|
|
602848
602929
|
return {
|
|
602849
602930
|
peerId: data.peerId,
|
|
@@ -602864,7 +602945,7 @@ function resolveLocalPeerId() {
|
|
|
602864
602945
|
try {
|
|
602865
602946
|
const regPath = join129(homedir42(), ".omnius", "nexus-registry.json");
|
|
602866
602947
|
if (existsSync115(regPath)) {
|
|
602867
|
-
const reg = JSON.parse(
|
|
602948
|
+
const reg = JSON.parse(readFileSync95(regPath, "utf-8"));
|
|
602868
602949
|
const entries = Array.isArray(reg?.dirs) ? reg.dirs : [];
|
|
602869
602950
|
for (const entry of entries) {
|
|
602870
602951
|
const dir = typeof entry === "string" ? entry : entry?.dir;
|
|
@@ -603954,7 +604035,7 @@ function aimsDir() {
|
|
|
603954
604035
|
function readAimsFile(name10, fallback) {
|
|
603955
604036
|
try {
|
|
603956
604037
|
const p2 = join129(aimsDir(), name10);
|
|
603957
|
-
if (existsSync115(p2)) return JSON.parse(
|
|
604038
|
+
if (existsSync115(p2)) return JSON.parse(readFileSync95(p2, "utf-8"));
|
|
603958
604039
|
} catch {
|
|
603959
604040
|
}
|
|
603960
604041
|
return fallback;
|
|
@@ -604298,7 +604379,7 @@ async function handleAimsSuppliers(ctx3) {
|
|
|
604298
604379
|
for (const p2 of sponsorPaths) {
|
|
604299
604380
|
if (!existsSync115(p2)) continue;
|
|
604300
604381
|
try {
|
|
604301
|
-
const raw = JSON.parse(
|
|
604382
|
+
const raw = JSON.parse(readFileSync95(p2, "utf-8"));
|
|
604302
604383
|
const list = Array.isArray(raw) ? raw : raw?.sponsors ?? [];
|
|
604303
604384
|
for (const s2 of list) {
|
|
604304
604385
|
suppliers.push({
|
|
@@ -613453,7 +613534,7 @@ var init_auth_oidc = __esm({
|
|
|
613453
613534
|
});
|
|
613454
613535
|
|
|
613455
613536
|
// packages/cli/src/api/usage-tracker.ts
|
|
613456
|
-
import { mkdirSync as mkdirSync68, readFileSync as
|
|
613537
|
+
import { mkdirSync as mkdirSync68, readFileSync as readFileSync96, writeFileSync as writeFileSync63, existsSync as existsSync116 } from "node:fs";
|
|
613457
613538
|
import { join as join130 } from "node:path";
|
|
613458
613539
|
function initUsageTracker(omniusDir) {
|
|
613459
613540
|
const dir = join130(omniusDir, "usage");
|
|
@@ -613461,7 +613542,7 @@ function initUsageTracker(omniusDir) {
|
|
|
613461
613542
|
usageFile = join130(dir, "token-usage.json");
|
|
613462
613543
|
try {
|
|
613463
613544
|
if (existsSync116(usageFile)) {
|
|
613464
|
-
store = JSON.parse(
|
|
613545
|
+
store = JSON.parse(readFileSync96(usageFile, "utf-8"));
|
|
613465
613546
|
}
|
|
613466
613547
|
} catch {
|
|
613467
613548
|
store = { providers: {}, lastSaved: "" };
|
|
@@ -613525,7 +613606,7 @@ var init_usage_tracker = __esm({
|
|
|
613525
613606
|
});
|
|
613526
613607
|
|
|
613527
613608
|
// packages/cli/src/api/profiles.ts
|
|
613528
|
-
import { existsSync as existsSync117, readFileSync as
|
|
613609
|
+
import { existsSync as existsSync117, readFileSync as readFileSync97, writeFileSync as writeFileSync64, mkdirSync as mkdirSync69, readdirSync as readdirSync38, unlinkSync as unlinkSync24 } from "node:fs";
|
|
613529
613610
|
import { join as join131 } from "node:path";
|
|
613530
613611
|
import { homedir as homedir43 } from "node:os";
|
|
613531
613612
|
import { createCipheriv as createCipheriv4, createDecipheriv as createDecipheriv4, randomBytes as randomBytes22, scryptSync as scryptSync3 } from "node:crypto";
|
|
@@ -613542,7 +613623,7 @@ function listProfiles(projectDir2) {
|
|
|
613542
613623
|
if (existsSync117(projDir)) {
|
|
613543
613624
|
for (const f2 of readdirSync38(projDir).filter((f3) => f3.endsWith(".json"))) {
|
|
613544
613625
|
try {
|
|
613545
|
-
const raw = JSON.parse(
|
|
613626
|
+
const raw = JSON.parse(readFileSync97(join131(projDir, f2), "utf8"));
|
|
613546
613627
|
const name10 = f2.replace(".json", "");
|
|
613547
613628
|
seen.add(name10);
|
|
613548
613629
|
result.push({
|
|
@@ -613561,7 +613642,7 @@ function listProfiles(projectDir2) {
|
|
|
613561
613642
|
const name10 = f2.replace(".json", "");
|
|
613562
613643
|
if (seen.has(name10)) continue;
|
|
613563
613644
|
try {
|
|
613564
|
-
const raw = JSON.parse(
|
|
613645
|
+
const raw = JSON.parse(readFileSync97(join131(globDir, f2), "utf8"));
|
|
613565
613646
|
result.push({
|
|
613566
613647
|
name: name10,
|
|
613567
613648
|
description: raw.description || "",
|
|
@@ -613580,7 +613661,7 @@ function loadProfile(name10, password, projectDir2) {
|
|
|
613580
613661
|
const globPath = join131(globalProfileDir(), `${sanitized}.json`);
|
|
613581
613662
|
const filePath = existsSync117(projPath) ? projPath : existsSync117(globPath) ? globPath : null;
|
|
613582
613663
|
if (!filePath) return null;
|
|
613583
|
-
const raw = JSON.parse(
|
|
613664
|
+
const raw = JSON.parse(readFileSync97(filePath, "utf8"));
|
|
613584
613665
|
if (raw.encrypted === true) {
|
|
613585
613666
|
if (!password) return null;
|
|
613586
613667
|
return decryptProfile(raw, password);
|
|
@@ -614266,7 +614347,7 @@ import { fileURLToPath as fileURLToPath17 } from "node:url";
|
|
|
614266
614347
|
import { dirname as dirname37, join as join134, resolve as resolve43 } from "node:path";
|
|
614267
614348
|
import { homedir as homedir45 } from "node:os";
|
|
614268
614349
|
import { spawn as spawn29, execSync as execSync57 } from "node:child_process";
|
|
614269
|
-
import { mkdirSync as mkdirSync71, writeFileSync as writeFileSync66, readFileSync as
|
|
614350
|
+
import { mkdirSync as mkdirSync71, writeFileSync as writeFileSync66, readFileSync as readFileSync98, readdirSync as readdirSync39, existsSync as existsSync119, watch as fsWatch3, renameSync as renameSync8, unlinkSync as unlinkSync25 } from "node:fs";
|
|
614270
614351
|
import { randomBytes as randomBytes23, randomUUID as randomUUID16 } from "node:crypto";
|
|
614271
614352
|
import { createHash as createHash23 } from "node:crypto";
|
|
614272
614353
|
function getVersion3() {
|
|
@@ -614537,7 +614618,7 @@ function isOriginAllowed(origin) {
|
|
|
614537
614618
|
try {
|
|
614538
614619
|
const accessFile = join134(homedir45(), ".omnius", "access");
|
|
614539
614620
|
if (existsSync119(accessFile)) {
|
|
614540
|
-
const persisted =
|
|
614621
|
+
const persisted = readFileSync98(accessFile, "utf8").trim().toLowerCase();
|
|
614541
614622
|
if (persisted === "any" || persisted === "lan" || persisted === "loopback") {
|
|
614542
614623
|
accessMode = persisted;
|
|
614543
614624
|
}
|
|
@@ -614978,7 +615059,7 @@ function loadJob(id) {
|
|
|
614978
615059
|
const file = join134(jobsDir(), `${id}.json`);
|
|
614979
615060
|
if (!existsSync119(file)) return null;
|
|
614980
615061
|
try {
|
|
614981
|
-
return JSON.parse(
|
|
615062
|
+
return JSON.parse(readFileSync98(file, "utf-8"));
|
|
614982
615063
|
} catch {
|
|
614983
615064
|
return null;
|
|
614984
615065
|
}
|
|
@@ -614990,7 +615071,7 @@ function listJobs() {
|
|
|
614990
615071
|
const jobs = [];
|
|
614991
615072
|
for (const file of files) {
|
|
614992
615073
|
try {
|
|
614993
|
-
jobs.push(JSON.parse(
|
|
615074
|
+
jobs.push(JSON.parse(readFileSync98(join134(dir, file), "utf-8")));
|
|
614994
615075
|
} catch {
|
|
614995
615076
|
}
|
|
614996
615077
|
}
|
|
@@ -615007,7 +615088,7 @@ function pruneOldJobs() {
|
|
|
615007
615088
|
if (!file.endsWith(".json")) continue;
|
|
615008
615089
|
const path11 = join134(dir, file);
|
|
615009
615090
|
try {
|
|
615010
|
-
const job = JSON.parse(
|
|
615091
|
+
const job = JSON.parse(readFileSync98(path11, "utf-8"));
|
|
615011
615092
|
if (job.status === "running") {
|
|
615012
615093
|
kept++;
|
|
615013
615094
|
continue;
|
|
@@ -616764,7 +616845,7 @@ function readUpdateState() {
|
|
|
616764
616845
|
try {
|
|
616765
616846
|
const p2 = updateStateFile();
|
|
616766
616847
|
if (!existsSync119(p2)) return null;
|
|
616767
|
-
return JSON.parse(
|
|
616848
|
+
return JSON.parse(readFileSync98(p2, "utf-8"));
|
|
616768
616849
|
} catch {
|
|
616769
616850
|
return null;
|
|
616770
616851
|
}
|
|
@@ -616979,7 +617060,7 @@ function handleV1UpdateStatus(res) {
|
|
|
616979
617060
|
let exitCode = null;
|
|
616980
617061
|
try {
|
|
616981
617062
|
if (existsSync119(logPath3)) {
|
|
616982
|
-
const raw =
|
|
617063
|
+
const raw = readFileSync98(logPath3, "utf-8");
|
|
616983
617064
|
const m2 = raw.match(/__EXIT_CODE=(\d+)/);
|
|
616984
617065
|
if (m2) exitCode = parseInt(m2[1], 10);
|
|
616985
617066
|
logTail = raw.slice(-2e3);
|
|
@@ -619948,7 +620029,7 @@ function listScheduledTasks() {
|
|
|
619948
620029
|
if (dir.endsWith(`${join134(".omnius", "scheduled")}`) || dir.includes(`${join134(".omnius", "scheduled")}`)) {
|
|
619949
620030
|
const file = join134(dir, "tasks.json");
|
|
619950
620031
|
try {
|
|
619951
|
-
const raw =
|
|
620032
|
+
const raw = readFileSync98(file, "utf-8");
|
|
619952
620033
|
const json = JSON.parse(raw);
|
|
619953
620034
|
const tasks = Array.isArray(json?.tasks) ? json.tasks : Array.isArray(json) ? json : [];
|
|
619954
620035
|
tasks.forEach((t2, i2) => {
|
|
@@ -620022,7 +620103,7 @@ function setScheduledEnabled(id, enabled2) {
|
|
|
620022
620103
|
const target = tasks.find((t2) => t2.id === id);
|
|
620023
620104
|
if (!target) return false;
|
|
620024
620105
|
try {
|
|
620025
|
-
const raw =
|
|
620106
|
+
const raw = readFileSync98(target.file, "utf-8");
|
|
620026
620107
|
const json = JSON.parse(raw);
|
|
620027
620108
|
const arr = Array.isArray(json?.tasks) ? json.tasks : Array.isArray(json) ? json : [];
|
|
620028
620109
|
if (!arr[target.index]) return false;
|
|
@@ -620055,7 +620136,7 @@ function deleteScheduledById(id) {
|
|
|
620055
620136
|
const target = tasks.find((t2) => t2.id === id);
|
|
620056
620137
|
if (!target) return false;
|
|
620057
620138
|
try {
|
|
620058
|
-
const raw =
|
|
620139
|
+
const raw = readFileSync98(target.file, "utf-8");
|
|
620059
620140
|
const json = JSON.parse(raw);
|
|
620060
620141
|
const arr = Array.isArray(json?.tasks) ? json.tasks : Array.isArray(json) ? json : [];
|
|
620061
620142
|
if (!arr[target.index]) return false;
|
|
@@ -620324,7 +620405,7 @@ function reconcileScheduledTasks(apply) {
|
|
|
620324
620405
|
try {
|
|
620325
620406
|
let json = { tasks: [] };
|
|
620326
620407
|
try {
|
|
620327
|
-
const raw =
|
|
620408
|
+
const raw = readFileSync98(file, "utf-8");
|
|
620328
620409
|
json = JSON.parse(raw);
|
|
620329
620410
|
} catch {
|
|
620330
620411
|
}
|
|
@@ -620625,7 +620706,7 @@ function startApiServer(options2 = {}) {
|
|
|
620625
620706
|
if (!f2.endsWith(".json") || f2.includes(".tmp.")) continue;
|
|
620626
620707
|
const sid = f2.replace(/\.json$/, "");
|
|
620627
620708
|
try {
|
|
620628
|
-
const items = JSON.parse(
|
|
620709
|
+
const items = JSON.parse(readFileSync98(join134(dir, f2), "utf-8"));
|
|
620629
620710
|
if (Array.isArray(items)) {
|
|
620630
620711
|
cache8.set(sid, new Map(items.map((t2) => [t2.id, t2])));
|
|
620631
620712
|
}
|
|
@@ -620653,7 +620734,7 @@ function startApiServer(options2 = {}) {
|
|
|
620653
620734
|
}
|
|
620654
620735
|
return;
|
|
620655
620736
|
}
|
|
620656
|
-
next = JSON.parse(
|
|
620737
|
+
next = JSON.parse(readFileSync98(fp, "utf-8"));
|
|
620657
620738
|
if (!Array.isArray(next)) return;
|
|
620658
620739
|
} catch {
|
|
620659
620740
|
return;
|
|
@@ -620699,7 +620780,7 @@ function startApiServer(options2 = {}) {
|
|
|
620699
620780
|
if (!f2.endsWith(".json")) continue;
|
|
620700
620781
|
try {
|
|
620701
620782
|
const jobPath = join134(jobsDir3, f2);
|
|
620702
|
-
const job = JSON.parse(
|
|
620783
|
+
const job = JSON.parse(readFileSync98(jobPath, "utf-8"));
|
|
620703
620784
|
const jobTime = new Date(job.startedAt ?? job.completedAt ?? 0).getTime();
|
|
620704
620785
|
if (jobTime > 0 && jobTime < cutoff && job.status !== "running") {
|
|
620705
620786
|
const { unlinkSync: unlinkSync26 } = require3("node:fs");
|
|
@@ -620719,8 +620800,8 @@ function startApiServer(options2 = {}) {
|
|
|
620719
620800
|
if (useTls) {
|
|
620720
620801
|
try {
|
|
620721
620802
|
tlsOpts = {
|
|
620722
|
-
cert:
|
|
620723
|
-
key:
|
|
620803
|
+
cert: readFileSync98(resolve43(tlsCert)),
|
|
620804
|
+
key: readFileSync98(resolve43(tlsKey))
|
|
620724
620805
|
};
|
|
620725
620806
|
} catch (e2) {
|
|
620726
620807
|
log22(`
|
|
@@ -620733,7 +620814,7 @@ function startApiServer(options2 = {}) {
|
|
|
620733
620814
|
try {
|
|
620734
620815
|
const accessFile = join134(homedir45(), ".omnius", "access");
|
|
620735
620816
|
if (existsSync119(accessFile)) {
|
|
620736
|
-
const persisted =
|
|
620817
|
+
const persisted = readFileSync98(accessFile, "utf8").trim();
|
|
620737
620818
|
const resolved = resolveAccessMode(persisted, host);
|
|
620738
620819
|
if (resolved) runtimeAccessMode = resolved;
|
|
620739
620820
|
}
|
|
@@ -621630,7 +621711,7 @@ __export(clipboard_media_exports, {
|
|
|
621630
621711
|
pasteClipboardImageToFile: () => pasteClipboardImageToFile
|
|
621631
621712
|
});
|
|
621632
621713
|
import { execFileSync as execFileSync4, execSync as execSync58 } from "node:child_process";
|
|
621633
|
-
import { mkdirSync as mkdirSync72, readFileSync as
|
|
621714
|
+
import { mkdirSync as mkdirSync72, readFileSync as readFileSync99, rmSync as rmSync5, writeFileSync as writeFileSync67 } from "node:fs";
|
|
621634
621715
|
import { join as join135 } from "node:path";
|
|
621635
621716
|
function pasteClipboardImageToFile(repoRoot) {
|
|
621636
621717
|
const image = readClipboardImage();
|
|
@@ -621647,7 +621728,7 @@ function readClipboardImage() {
|
|
|
621647
621728
|
execSync58("command -v pngpaste", { stdio: "ignore", timeout: 1e3 });
|
|
621648
621729
|
const tmp = `/tmp/omnius-clipboard-${Date.now()}.png`;
|
|
621649
621730
|
execFileSync4("pngpaste", [tmp], { timeout: 3e3 });
|
|
621650
|
-
const buffer2 =
|
|
621731
|
+
const buffer2 = readFileSync99(tmp);
|
|
621651
621732
|
try {
|
|
621652
621733
|
rmSync5(tmp);
|
|
621653
621734
|
} catch {
|
|
@@ -621706,7 +621787,7 @@ import { resolve as resolve44, join as join136, dirname as dirname38, extname as
|
|
|
621706
621787
|
import { createRequire as createRequire7 } from "node:module";
|
|
621707
621788
|
import { fileURLToPath as fileURLToPath18 } from "node:url";
|
|
621708
621789
|
import {
|
|
621709
|
-
readFileSync as
|
|
621790
|
+
readFileSync as readFileSync100,
|
|
621710
621791
|
writeFileSync as writeFileSync68,
|
|
621711
621792
|
appendFileSync as appendFileSync8,
|
|
621712
621793
|
rmSync as rmSync6,
|
|
@@ -622009,6 +622090,16 @@ ${result.summary}`
|
|
|
622009
622090
|
}
|
|
622010
622091
|
});
|
|
622011
622092
|
}
|
|
622093
|
+
function imageGenerationDefaultsForRepo(repoRoot) {
|
|
622094
|
+
const settings = resolveSettings(repoRoot);
|
|
622095
|
+
return {
|
|
622096
|
+
model: typeof settings.imageModel === "string" && settings.imageModel.trim() ? settings.imageModel : void 0,
|
|
622097
|
+
backend: settings.imageBackend
|
|
622098
|
+
};
|
|
622099
|
+
}
|
|
622100
|
+
function createConfiguredImageGenerateTool(repoRoot, backendUrl) {
|
|
622101
|
+
return new ImageGenerateTool(repoRoot, backendUrl, imageGenerationDefaultsForRepo(repoRoot));
|
|
622102
|
+
}
|
|
622012
622103
|
function buildSubAgentTools(repoRoot, config) {
|
|
622013
622104
|
return [
|
|
622014
622105
|
// File + search
|
|
@@ -622090,7 +622181,7 @@ function buildSubAgentTools(repoRoot, config) {
|
|
|
622090
622181
|
new MultimodalMemoryTool(),
|
|
622091
622182
|
new VideoUnderstandTool(repoRoot),
|
|
622092
622183
|
new CameraCaptureTool(),
|
|
622093
|
-
|
|
622184
|
+
createConfiguredImageGenerateTool(repoRoot, config.backendUrl),
|
|
622094
622185
|
// Hardware sensors + radios (read-only scans)
|
|
622095
622186
|
new GpsLocationTool(),
|
|
622096
622187
|
new WifiControlTool(),
|
|
@@ -622169,8 +622260,8 @@ function buildTools(repoRoot, config, contextWindowSize, modelTier) {
|
|
|
622169
622260
|
new ExplorationCultureTool(repoRoot),
|
|
622170
622261
|
// Embedding Store — COHERE Private Brain semantic retrieval
|
|
622171
622262
|
new EmbeddingStoreTool(repoRoot),
|
|
622172
|
-
// Image Generation — Ollama
|
|
622173
|
-
|
|
622263
|
+
// Image Generation — local/Ollama/Diffusers image models
|
|
622264
|
+
createConfiguredImageGenerateTool(repoRoot, config.backendUrl),
|
|
622174
622265
|
// Structured file reading (CSV, JSON, Markdown, binary detection)
|
|
622175
622266
|
new StructuredReadTool(repoRoot),
|
|
622176
622267
|
// Vision tools (Moondream — desktop awareness + point-and-click)
|
|
@@ -622634,7 +622725,7 @@ function gatherMemorySnippets(root) {
|
|
|
622634
622725
|
if (!existsSync120(dir)) continue;
|
|
622635
622726
|
try {
|
|
622636
622727
|
for (const f2 of readdirSync40(dir).filter((f3) => f3.endsWith(".json"))) {
|
|
622637
|
-
const data = JSON.parse(
|
|
622728
|
+
const data = JSON.parse(readFileSync100(join136(dir, f2), "utf-8"));
|
|
622638
622729
|
for (const val of Object.values(data)) {
|
|
622639
622730
|
const v = typeof val === "object" && val !== null && "value" in val ? String(val.value) : String(val);
|
|
622640
622731
|
if (v.length > 10) snippets.push(v);
|
|
@@ -622876,7 +622967,7 @@ ${metabolismMemories}
|
|
|
622876
622967
|
try {
|
|
622877
622968
|
const archeFile = join136(repoRoot, ".omnius", "arche", "variants.json");
|
|
622878
622969
|
if (existsSync120(archeFile)) {
|
|
622879
|
-
const variants = JSON.parse(
|
|
622970
|
+
const variants = JSON.parse(readFileSync100(archeFile, "utf8"));
|
|
622880
622971
|
if (variants.length > 0) {
|
|
622881
622972
|
let filtered = variants;
|
|
622882
622973
|
if (taskType) {
|
|
@@ -623085,7 +623176,7 @@ RULES:
|
|
|
623085
623176
|
try {
|
|
623086
623177
|
const ikStateFile = join136(repoRoot, ".omnius", "identity", "self-state.json");
|
|
623087
623178
|
if (existsSync120(ikStateFile)) {
|
|
623088
|
-
const selfState = JSON.parse(
|
|
623179
|
+
const selfState = JSON.parse(readFileSync100(ikStateFile, "utf8"));
|
|
623089
623180
|
const lines = [
|
|
623090
623181
|
`[Identity State v${selfState.version}]`,
|
|
623091
623182
|
`Self: ${selfState.narrative_summary}`,
|
|
@@ -623351,7 +623442,7 @@ Review its full output in the [${id}] tab or via sub_agent(action='output', id='
|
|
|
623351
623442
|
}
|
|
623352
623443
|
}
|
|
623353
623444
|
try {
|
|
623354
|
-
const { readdirSync: readdirSync42, readFileSync:
|
|
623445
|
+
const { readdirSync: readdirSync42, readFileSync: readFileSync102, existsSync: existsSync123 } = await import("node:fs");
|
|
623355
623446
|
const { join: pathJoin } = await import("node:path");
|
|
623356
623447
|
const chunksDir = pathJoin(cwd(), ".omnius", "todo-chunks");
|
|
623357
623448
|
if (existsSync123(chunksDir)) {
|
|
@@ -623361,7 +623452,7 @@ Review its full output in the [${id}] tab or via sub_agent(action='output', id='
|
|
|
623361
623452
|
for (const f2 of files) {
|
|
623362
623453
|
try {
|
|
623363
623454
|
const data = JSON.parse(
|
|
623364
|
-
|
|
623455
|
+
readFileSync102(pathJoin(chunksDir, f2), "utf-8")
|
|
623365
623456
|
);
|
|
623366
623457
|
if (data._deleted) continue;
|
|
623367
623458
|
if ((data.functionalSummary || "").toLowerCase().includes(q) || (data.detailSummary || "").toLowerCase().includes(q) || (data.keyFiles || []).some(
|
|
@@ -623427,7 +623518,7 @@ ${lines.join("\n")}`
|
|
|
623427
623518
|
const expand2 = args.expand === true;
|
|
623428
623519
|
if (expand2 && id.startsWith("todo-ctx-")) {
|
|
623429
623520
|
try {
|
|
623430
|
-
const { readFileSync:
|
|
623521
|
+
const { readFileSync: readFileSync102, existsSync: existsSync123 } = await import("node:fs");
|
|
623431
623522
|
const { join: pathJoin } = await import("node:path");
|
|
623432
623523
|
const chunksDir = pathJoin(cwd(), ".omnius", "todo-chunks");
|
|
623433
623524
|
const todoIdSuffix = id.replace("todo-ctx-", "");
|
|
@@ -624216,7 +624307,7 @@ When done, either call task_complete with your answer, or use FINAL_VAR(variable
|
|
|
624216
624307
|
const ikFile = join136(ikDir, "self-state.json");
|
|
624217
624308
|
let ikState;
|
|
624218
624309
|
if (existsSync120(ikFile)) {
|
|
624219
|
-
ikState = JSON.parse(
|
|
624310
|
+
ikState = JSON.parse(readFileSync100(ikFile, "utf8"));
|
|
624220
624311
|
} else {
|
|
624221
624312
|
mkdirSync73(ikDir, { recursive: true });
|
|
624222
624313
|
const machineId = Date.now().toString(36) + Math.random().toString(36).slice(2, 8);
|
|
@@ -624362,7 +624453,7 @@ When done, either call task_complete with your answer, or use FINAL_VAR(variable
|
|
|
624362
624453
|
try {
|
|
624363
624454
|
const ikFile = join136(repoRoot, ".omnius", "identity", "self-state.json");
|
|
624364
624455
|
if (existsSync120(ikFile)) {
|
|
624365
|
-
const ikState = JSON.parse(
|
|
624456
|
+
const ikState = JSON.parse(readFileSync100(ikFile, "utf8"));
|
|
624366
624457
|
if (!ikState.stats) ikState.stats = { queries_served: 0 };
|
|
624367
624458
|
ikState.stats.queries_served = (ikState.stats.queries_served || 0) + 1;
|
|
624368
624459
|
ikState.homeostasis.uncertainty = Math.min(
|
|
@@ -624654,7 +624745,7 @@ async function startInteractive(config, repoPath) {
|
|
|
624654
624745
|
const omniusDir = join136(repoRoot, ".omnius");
|
|
624655
624746
|
const nexusPidFile = join136(omniusDir, "nexus", "daemon.pid");
|
|
624656
624747
|
if (existsSync120(nexusPidFile)) {
|
|
624657
|
-
const pid = parseInt(
|
|
624748
|
+
const pid = parseInt(readFileSync100(nexusPidFile, "utf8").trim(), 10);
|
|
624658
624749
|
if (pid > 0) {
|
|
624659
624750
|
try {
|
|
624660
624751
|
process.kill(pid, 0);
|
|
@@ -625656,7 +625747,7 @@ This is an independent background session started from /background.`
|
|
|
625656
625747
|
};
|
|
625657
625748
|
try {
|
|
625658
625749
|
const titleFile = join136(repoRoot, ".omnius", "session-title");
|
|
625659
|
-
if (existsSync120(titleFile)) sessionTitle =
|
|
625750
|
+
if (existsSync120(titleFile)) sessionTitle = readFileSync100(titleFile, "utf8").trim() || null;
|
|
625660
625751
|
} catch {
|
|
625661
625752
|
}
|
|
625662
625753
|
let carouselRetired = isResumed;
|
|
@@ -625719,7 +625810,7 @@ This is an independent background session started from /background.`
|
|
|
625719
625810
|
let savedHistory = [];
|
|
625720
625811
|
try {
|
|
625721
625812
|
if (existsSync120(HISTORY_FILE)) {
|
|
625722
|
-
const raw =
|
|
625813
|
+
const raw = readFileSync100(HISTORY_FILE, "utf8").trim();
|
|
625723
625814
|
if (raw) savedHistory = raw.split("\n").reverse();
|
|
625724
625815
|
}
|
|
625725
625816
|
} catch {
|
|
@@ -625879,7 +625970,7 @@ This is an independent background session started from /background.`
|
|
|
625879
625970
|
mkdirSync73(HISTORY_DIR, { recursive: true });
|
|
625880
625971
|
appendFileSync8(HISTORY_FILE, line + "\n", "utf8");
|
|
625881
625972
|
if (Math.random() < 0.02) {
|
|
625882
|
-
const all2 =
|
|
625973
|
+
const all2 = readFileSync100(HISTORY_FILE, "utf8").trim().split("\n");
|
|
625883
625974
|
if (all2.length > MAX_HISTORY_LINES) {
|
|
625884
625975
|
writeFileSync68(
|
|
625885
625976
|
HISTORY_FILE,
|
|
@@ -626102,7 +626193,7 @@ This is an independent background session started from /background.`
|
|
|
626102
626193
|
const nexusPidFile = join136(repoRoot, ".omnius", "nexus", "daemon.pid");
|
|
626103
626194
|
if (existsSync120(nexusPidFile)) {
|
|
626104
626195
|
const nPid = parseInt(
|
|
626105
|
-
|
|
626196
|
+
readFileSync100(nexusPidFile, "utf8").trim(),
|
|
626106
626197
|
10
|
|
626107
626198
|
);
|
|
626108
626199
|
if (nPid > 0 && !registry2.daemons.has("Nexus")) {
|
|
@@ -626280,7 +626371,7 @@ Log: ${nexusLogPath}`)
|
|
|
626280
626371
|
let agName = "";
|
|
626281
626372
|
try {
|
|
626282
626373
|
if (existsSync120(globalNamePath))
|
|
626283
|
-
agName =
|
|
626374
|
+
agName = readFileSync100(globalNamePath, "utf8").trim();
|
|
626284
626375
|
} catch {
|
|
626285
626376
|
}
|
|
626286
626377
|
if (!agName) {
|
|
@@ -626321,7 +626412,7 @@ Log: ${nexusLogPath}`)
|
|
|
626321
626412
|
try {
|
|
626322
626413
|
if (existsSync120(savedSponsorsPath)) {
|
|
626323
626414
|
savedSponsors = JSON.parse(
|
|
626324
|
-
|
|
626415
|
+
readFileSync100(savedSponsorsPath, "utf8")
|
|
626325
626416
|
);
|
|
626326
626417
|
const oneHourAgo = Date.now() - 36e5;
|
|
626327
626418
|
savedSponsors = savedSponsors.filter(
|
|
@@ -628086,7 +628177,7 @@ Respond concisely and safely. Remember: you are talking to the general public.`;
|
|
|
628086
628177
|
try {
|
|
628087
628178
|
const nexusPidFile = join136(repoRoot, ".omnius", "nexus", "daemon.pid");
|
|
628088
628179
|
if (existsSync120(nexusPidFile)) {
|
|
628089
|
-
const pid = parseInt(
|
|
628180
|
+
const pid = parseInt(readFileSync100(nexusPidFile, "utf8").trim(), 10);
|
|
628090
628181
|
if (pid > 0) {
|
|
628091
628182
|
registry2.register({
|
|
628092
628183
|
name: "Nexus",
|
|
@@ -628298,7 +628389,7 @@ Respond concisely and safely. Remember: you are talking to the general public.`;
|
|
|
628298
628389
|
const nexusDir = join136(repoRoot, OMNIUS_DIR, "nexus");
|
|
628299
628390
|
const pidFile = join136(nexusDir, "daemon.pid");
|
|
628300
628391
|
if (existsSync120(pidFile)) {
|
|
628301
|
-
const pid = parseInt(
|
|
628392
|
+
const pid = parseInt(readFileSync100(pidFile, "utf8").trim(), 10);
|
|
628302
628393
|
if (pid > 0) {
|
|
628303
628394
|
try {
|
|
628304
628395
|
if (process.platform === "win32") {
|
|
@@ -628331,7 +628422,7 @@ Respond concisely and safely. Remember: you are talking to the general public.`;
|
|
|
628331
628422
|
const pidPath = join136(voiceDir2, pf);
|
|
628332
628423
|
if (existsSync120(pidPath)) {
|
|
628333
628424
|
try {
|
|
628334
|
-
const pid = parseInt(
|
|
628425
|
+
const pid = parseInt(readFileSync100(pidPath, "utf8").trim(), 10);
|
|
628335
628426
|
if (pid > 0) {
|
|
628336
628427
|
if (process.platform === "win32") {
|
|
628337
628428
|
try {
|
|
@@ -628475,8 +628566,8 @@ Respond concisely and safely. Remember: you are talking to the general public.`;
|
|
|
628475
628566
|
"daemon.port"
|
|
628476
628567
|
);
|
|
628477
628568
|
if (existsSync120(ppPidFile)) {
|
|
628478
|
-
const ppPid = parseInt(
|
|
628479
|
-
const ppPort = existsSync120(ppPortFile) ? parseInt(
|
|
628569
|
+
const ppPid = parseInt(readFileSync100(ppPidFile, "utf8").trim(), 10);
|
|
628570
|
+
const ppPort = existsSync120(ppPortFile) ? parseInt(readFileSync100(ppPortFile, "utf8").trim(), 10) : void 0;
|
|
628480
628571
|
if (ppPid > 0 && !registry2.daemons.has("PersonaPlex")) {
|
|
628481
628572
|
registry2.register({
|
|
628482
628573
|
name: "PersonaPlex",
|
|
@@ -628490,7 +628581,7 @@ Respond concisely and safely. Remember: you are talking to the general public.`;
|
|
|
628490
628581
|
}
|
|
628491
628582
|
const nexusPidFile = join136(repoRoot, ".omnius", "nexus", "daemon.pid");
|
|
628492
628583
|
if (existsSync120(nexusPidFile)) {
|
|
628493
|
-
const nPid = parseInt(
|
|
628584
|
+
const nPid = parseInt(readFileSync100(nexusPidFile, "utf8").trim(), 10);
|
|
628494
628585
|
if (nPid > 0 && !registry2.daemons.has("Nexus")) {
|
|
628495
628586
|
try {
|
|
628496
628587
|
process.kill(nPid, 0);
|
|
@@ -628940,7 +629031,7 @@ Execute this skill now. Follow the behavioral guidance above.`;
|
|
|
628940
629031
|
if (isImage) {
|
|
628941
629032
|
try {
|
|
628942
629033
|
const imgPath = resolve44(repoRoot, cleanPath);
|
|
628943
|
-
const imgBuffer =
|
|
629034
|
+
const imgBuffer = readFileSync100(imgPath);
|
|
628944
629035
|
const base642 = imgBuffer.toString("base64");
|
|
628945
629036
|
const ext = extname13(cleanPath).toLowerCase();
|
|
628946
629037
|
const mime = ext === ".png" ? "image/png" : ext === ".gif" ? "image/gif" : ext === ".webp" ? "image/webp" : "image/jpeg";
|
|
@@ -629134,7 +629225,7 @@ Read it with image_read or vision if more detail is needed. Describe what you se
|
|
|
629134
629225
|
if (isMarkdown && fullInput === input) {
|
|
629135
629226
|
try {
|
|
629136
629227
|
const mdPath = resolve44(repoRoot, cleanPath);
|
|
629137
|
-
const mdContent =
|
|
629228
|
+
const mdContent = readFileSync100(mdPath, "utf8");
|
|
629138
629229
|
const { parseMcpMarkdown: parseMcpMarkdown2 } = await Promise.resolve().then(() => (init_dist5(), dist_exports));
|
|
629139
629230
|
const result = parseMcpMarkdown2(mdContent);
|
|
629140
629231
|
if (result.servers.length > 0) {
|
|
@@ -629688,7 +629779,7 @@ async function runWithTUI(task, config, repoPath, callbacks) {
|
|
|
629688
629779
|
const ikFile = join136(ikDir, "self-state.json");
|
|
629689
629780
|
let ikState;
|
|
629690
629781
|
if (existsSync120(ikFile)) {
|
|
629691
|
-
ikState = JSON.parse(
|
|
629782
|
+
ikState = JSON.parse(readFileSync100(ikFile, "utf8"));
|
|
629692
629783
|
} else {
|
|
629693
629784
|
mkdirSync73(ikDir, { recursive: true });
|
|
629694
629785
|
ikState = {
|
|
@@ -629761,7 +629852,7 @@ async function runWithTUI(task, config, repoPath, callbacks) {
|
|
|
629761
629852
|
let variants = [];
|
|
629762
629853
|
try {
|
|
629763
629854
|
if (existsSync120(archeFile))
|
|
629764
|
-
variants = JSON.parse(
|
|
629855
|
+
variants = JSON.parse(readFileSync100(archeFile, "utf8"));
|
|
629765
629856
|
} catch {
|
|
629766
629857
|
}
|
|
629767
629858
|
variants.push({
|
|
@@ -629789,7 +629880,7 @@ async function runWithTUI(task, config, repoPath, callbacks) {
|
|
|
629789
629880
|
"store.json"
|
|
629790
629881
|
);
|
|
629791
629882
|
if (existsSync120(metaFile)) {
|
|
629792
|
-
const store2 = JSON.parse(
|
|
629883
|
+
const store2 = JSON.parse(readFileSync100(metaFile, "utf8"));
|
|
629793
629884
|
const surfaced = store2.filter(
|
|
629794
629885
|
(m2) => m2.type !== "quarantine" && m2.scores?.confidence > 0.15
|
|
629795
629886
|
).sort(
|
|
@@ -629892,7 +629983,7 @@ Rules:
|
|
|
629892
629983
|
let store2 = [];
|
|
629893
629984
|
try {
|
|
629894
629985
|
if (existsSync120(storeFile))
|
|
629895
|
-
store2 = JSON.parse(
|
|
629986
|
+
store2 = JSON.parse(readFileSync100(storeFile, "utf8"));
|
|
629896
629987
|
} catch {
|
|
629897
629988
|
}
|
|
629898
629989
|
store2.push({
|
|
@@ -629926,7 +630017,7 @@ Rules:
|
|
|
629926
630017
|
let cohereActive = false;
|
|
629927
630018
|
try {
|
|
629928
630019
|
if (existsSync120(cohereSettingsFile)) {
|
|
629929
|
-
const settings = JSON.parse(
|
|
630020
|
+
const settings = JSON.parse(readFileSync100(cohereSettingsFile, "utf8"));
|
|
629930
630021
|
cohereActive = settings.cohere === true;
|
|
629931
630022
|
}
|
|
629932
630023
|
} catch {
|
|
@@ -629940,7 +630031,7 @@ Rules:
|
|
|
629940
630031
|
"store.json"
|
|
629941
630032
|
);
|
|
629942
630033
|
if (existsSync120(metaFile)) {
|
|
629943
|
-
const store2 = JSON.parse(
|
|
630034
|
+
const store2 = JSON.parse(readFileSync100(metaFile, "utf8"));
|
|
629944
630035
|
const latest = store2.filter(
|
|
629945
630036
|
(m2) => m2.sourceTrace === "trajectory-extraction" || m2.sourceTrace === "llm-trajectory-extraction"
|
|
629946
630037
|
).slice(-1)[0];
|
|
@@ -629969,7 +630060,7 @@ Rules:
|
|
|
629969
630060
|
try {
|
|
629970
630061
|
const ikFile = join136(repoRoot, ".omnius", "identity", "self-state.json");
|
|
629971
630062
|
if (existsSync120(ikFile)) {
|
|
629972
|
-
const ikState = JSON.parse(
|
|
630063
|
+
const ikState = JSON.parse(readFileSync100(ikFile, "utf8"));
|
|
629973
630064
|
ikState.homeostasis.uncertainty = Math.min(
|
|
629974
630065
|
1,
|
|
629975
630066
|
ikState.homeostasis.uncertainty + 0.1
|
|
@@ -629990,7 +630081,7 @@ Rules:
|
|
|
629990
630081
|
"store.json"
|
|
629991
630082
|
);
|
|
629992
630083
|
if (existsSync120(metaFile)) {
|
|
629993
|
-
const store2 = JSON.parse(
|
|
630084
|
+
const store2 = JSON.parse(readFileSync100(metaFile, "utf8"));
|
|
629994
630085
|
const surfaced = store2.filter(
|
|
629995
630086
|
(m2) => m2.type !== "quarantine" && m2.scores?.confidence > 0.15
|
|
629996
630087
|
).sort(
|
|
@@ -630016,7 +630107,7 @@ Rules:
|
|
|
630016
630107
|
let variants = [];
|
|
630017
630108
|
try {
|
|
630018
630109
|
if (existsSync120(archeFile))
|
|
630019
|
-
variants = JSON.parse(
|
|
630110
|
+
variants = JSON.parse(readFileSync100(archeFile, "utf8"));
|
|
630020
630111
|
} catch {
|
|
630021
630112
|
}
|
|
630022
630113
|
variants.push({
|
|
@@ -630123,7 +630214,7 @@ __export(run_exports, {
|
|
|
630123
630214
|
});
|
|
630124
630215
|
import { resolve as resolve45 } from "node:path";
|
|
630125
630216
|
import { spawn as spawn30 } from "node:child_process";
|
|
630126
|
-
import { mkdirSync as mkdirSync74, writeFileSync as writeFileSync69, readFileSync as
|
|
630217
|
+
import { mkdirSync as mkdirSync74, writeFileSync as writeFileSync69, readFileSync as readFileSync101, readdirSync as readdirSync41, existsSync as existsSync121 } from "node:fs";
|
|
630127
630218
|
import { randomBytes as randomBytes24 } from "node:crypto";
|
|
630128
630219
|
import { join as join137 } from "node:path";
|
|
630129
630220
|
function jobsDir2(repoPath) {
|
|
@@ -630289,7 +630380,7 @@ function statusCommand(jobId, repoPath) {
|
|
|
630289
630380
|
console.log(`Available jobs: omnius jobs`);
|
|
630290
630381
|
process.exit(1);
|
|
630291
630382
|
}
|
|
630292
|
-
const job = JSON.parse(
|
|
630383
|
+
const job = JSON.parse(readFileSync101(file, "utf-8"));
|
|
630293
630384
|
const runtime = job.completedAt ? `${((new Date(job.completedAt).getTime() - new Date(job.startedAt).getTime()) / 1e3).toFixed(0)}s` : `${((Date.now() - new Date(job.startedAt).getTime()) / 1e3).toFixed(0)}s`;
|
|
630294
630385
|
const icon = job.status === "completed" ? "✓" : job.status === "failed" ? "✗" : "●";
|
|
630295
630386
|
console.log(`${icon} ${job.id} [${job.status}] ${runtime}`);
|
|
@@ -630310,7 +630401,7 @@ function jobsCommand(repoPath) {
|
|
|
630310
630401
|
console.log("Jobs:");
|
|
630311
630402
|
for (const file of files) {
|
|
630312
630403
|
try {
|
|
630313
|
-
const job = JSON.parse(
|
|
630404
|
+
const job = JSON.parse(readFileSync101(join137(dir, file), "utf-8"));
|
|
630314
630405
|
const icon = job.status === "completed" ? "✓" : job.status === "failed" ? "✗" : "●";
|
|
630315
630406
|
const runtime = job.completedAt ? `${((new Date(job.completedAt).getTime() - new Date(job.startedAt).getTime()) / 1e3).toFixed(0)}s` : `${((Date.now() - new Date(job.startedAt).getTime()) / 1e3).toFixed(0)}s`;
|
|
630316
630407
|
const cleanListTask = cleanForStorage(job.task) || job.task;
|