omnius 1.0.32 → 1.0.33
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 +765 -544
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -127443,7 +127443,7 @@ var require_snapshot_recorder = __commonJS({
|
|
|
127443
127443
|
"../node_modules/undici/lib/mock/snapshot-recorder.js"(exports, module) {
|
|
127444
127444
|
"use strict";
|
|
127445
127445
|
var { writeFile: writeFile22, readFile: readFile23, mkdir: mkdir18 } = __require("node:fs/promises");
|
|
127446
|
-
var { dirname:
|
|
127446
|
+
var { dirname: dirname40, resolve: resolve49 } = __require("node:path");
|
|
127447
127447
|
var { setTimeout: setTimeout3, clearTimeout: clearTimeout3 } = __require("node:timers");
|
|
127448
127448
|
var { InvalidArgumentError, UndiciError } = require_errors2();
|
|
127449
127449
|
var { hashId, isUrlExcludedFactory, normalizeHeaders, createHeaderFilters } = require_snapshot_utils();
|
|
@@ -127674,7 +127674,7 @@ var require_snapshot_recorder = __commonJS({
|
|
|
127674
127674
|
throw new InvalidArgumentError("Snapshot path is required");
|
|
127675
127675
|
}
|
|
127676
127676
|
const resolvedPath = resolve49(path11);
|
|
127677
|
-
await mkdir18(
|
|
127677
|
+
await mkdir18(dirname40(resolvedPath), { recursive: true });
|
|
127678
127678
|
const data = Array.from(this.#snapshots.entries()).map(([hash, snapshot]) => ({
|
|
127679
127679
|
hash,
|
|
127680
127680
|
snapshot
|
|
@@ -241336,15 +241336,15 @@ var init_ls = __esm({
|
|
|
241336
241336
|
});
|
|
241337
241337
|
|
|
241338
241338
|
// ../node_modules/@helia/unixfs/dist/src/commands/mkdir.js
|
|
241339
|
-
async function mkdir5(parentCid,
|
|
241340
|
-
if (
|
|
241339
|
+
async function mkdir5(parentCid, dirname40, blockstore, options2 = {}) {
|
|
241340
|
+
if (dirname40.includes("/")) {
|
|
241341
241341
|
throw new InvalidParametersError4("Path must not have slashes");
|
|
241342
241342
|
}
|
|
241343
241343
|
const entry = await exporter2(parentCid, blockstore, options2);
|
|
241344
241344
|
if (entry.type !== "directory") {
|
|
241345
241345
|
throw new NotADirectoryError(`${parentCid.toString()} was not a UnixFS directory`);
|
|
241346
241346
|
}
|
|
241347
|
-
log16("creating %s",
|
|
241347
|
+
log16("creating %s", dirname40);
|
|
241348
241348
|
const metadata = new UnixFS({
|
|
241349
241349
|
type: "directory",
|
|
241350
241350
|
mode: options2.mode,
|
|
@@ -241360,9 +241360,9 @@ async function mkdir5(parentCid, dirname41, blockstore, options2 = {}) {
|
|
|
241360
241360
|
await blockstore.put(emptyDirCid, buf);
|
|
241361
241361
|
const [directory, pblink] = await Promise.all([
|
|
241362
241362
|
cidToDirectory(parentCid, blockstore, options2),
|
|
241363
|
-
cidToPBLink(emptyDirCid,
|
|
241363
|
+
cidToPBLink(emptyDirCid, dirname40, blockstore, options2)
|
|
241364
241364
|
]);
|
|
241365
|
-
log16("adding empty dir called %s to %c",
|
|
241365
|
+
log16("adding empty dir called %s to %c", dirname40, parentCid);
|
|
241366
241366
|
const result = await addLink(directory, pblink, blockstore, {
|
|
241367
241367
|
...options2,
|
|
241368
241368
|
allowOverwriting: options2.force
|
|
@@ -241861,8 +241861,8 @@ var init_unixfs2 = __esm({
|
|
|
241861
241861
|
async *ls(cid, options2 = {}) {
|
|
241862
241862
|
yield* ls(cid, this.components.blockstore, options2);
|
|
241863
241863
|
}
|
|
241864
|
-
async mkdir(cid,
|
|
241865
|
-
return mkdir5(cid,
|
|
241864
|
+
async mkdir(cid, dirname40, options2 = {}) {
|
|
241865
|
+
return mkdir5(cid, dirname40, this.components.blockstore, options2);
|
|
241866
241866
|
}
|
|
241867
241867
|
async rm(cid, path11, options2 = {}) {
|
|
241868
241868
|
return rm3(cid, path11, this.components.blockstore, options2);
|
|
@@ -249106,7 +249106,7 @@ print("${sentinel}")
|
|
|
249106
249106
|
if (!this.proc || this.proc.killed) {
|
|
249107
249107
|
return { success: false, path: "" };
|
|
249108
249108
|
}
|
|
249109
|
-
const { mkdirSync: mkdirSync77, writeFileSync:
|
|
249109
|
+
const { mkdirSync: mkdirSync77, writeFileSync: writeFileSync70 } = await import("node:fs");
|
|
249110
249110
|
const sessionDir = join31(this.cwd, ".omnius", "rlm");
|
|
249111
249111
|
mkdirSync77(sessionDir, { recursive: true });
|
|
249112
249112
|
const sessionPath2 = join31(sessionDir, "session.json");
|
|
@@ -249132,7 +249132,7 @@ print("__SESSION__" + json.dumps(_session) + "__SESSION__")
|
|
|
249132
249132
|
trajectoryCount: this.trajectory.length,
|
|
249133
249133
|
subCallCount: this.subCallCount
|
|
249134
249134
|
};
|
|
249135
|
-
|
|
249135
|
+
writeFileSync70(sessionPath2, JSON.stringify(sessionData, null, 2), "utf8");
|
|
249136
249136
|
return { success: true, path: sessionPath2 };
|
|
249137
249137
|
}
|
|
249138
249138
|
} catch {
|
|
@@ -249741,7 +249741,7 @@ ${issues.map((i2) => ` - ${i2}`).join("\n")}` : " No issues found."),
|
|
|
249741
249741
|
/** Update memory scores based on task outcome. Called after task completion.
|
|
249742
249742
|
* Memories used in successful tasks get boosted. Memories present during failures get decayed. */
|
|
249743
249743
|
updateFromOutcomeSync(surfacedMemoryText, succeeded) {
|
|
249744
|
-
const { readFileSync: readFileSync102, writeFileSync:
|
|
249744
|
+
const { readFileSync: readFileSync102, writeFileSync: writeFileSync70, existsSync: existsSync124, mkdirSync: mkdirSync77 } = __require("node:fs");
|
|
249745
249745
|
const metaDir = join32(this.cwd, ".omnius", "memory", "metabolism");
|
|
249746
249746
|
const storeFile = join32(metaDir, "store.json");
|
|
249747
249747
|
if (!existsSync124(storeFile))
|
|
@@ -249773,7 +249773,7 @@ ${issues.map((i2) => ` - ${i2}`).join("\n")}` : " No issues found."),
|
|
|
249773
249773
|
}
|
|
249774
249774
|
if (updated) {
|
|
249775
249775
|
mkdirSync77(metaDir, { recursive: true });
|
|
249776
|
-
|
|
249776
|
+
writeFileSync70(storeFile, JSON.stringify(store2, null, 2));
|
|
249777
249777
|
}
|
|
249778
249778
|
}
|
|
249779
249779
|
// ── Storage ──────────────────────────────────────────────────────────
|
|
@@ -250219,7 +250219,7 @@ Recommendation: Strategy ${scored[0].index + 1} scores highest.`;
|
|
|
250219
250219
|
}
|
|
250220
250220
|
/** Archive a strategy variant synchronously (for task completion path) */
|
|
250221
250221
|
archiveVariantSync(strategy, outcome, tags = []) {
|
|
250222
|
-
const { readFileSync: readFileSync102, writeFileSync:
|
|
250222
|
+
const { readFileSync: readFileSync102, writeFileSync: writeFileSync70, existsSync: existsSync124, mkdirSync: mkdirSync77 } = __require("node:fs");
|
|
250223
250223
|
const dir = join34(this.cwd, ".omnius", "arche");
|
|
250224
250224
|
const archiveFile = join34(dir, "variants.json");
|
|
250225
250225
|
let variants = [];
|
|
@@ -250241,7 +250241,7 @@ Recommendation: Strategy ${scored[0].index + 1} scores highest.`;
|
|
|
250241
250241
|
if (variants.length > 50)
|
|
250242
250242
|
variants = variants.slice(-50);
|
|
250243
250243
|
mkdirSync77(dir, { recursive: true });
|
|
250244
|
-
|
|
250244
|
+
writeFileSync70(archiveFile, JSON.stringify(variants, null, 2));
|
|
250245
250245
|
}
|
|
250246
250246
|
async saveArchive(variants) {
|
|
250247
250247
|
const dir = join34(this.cwd, ".omnius", "arche");
|
|
@@ -255916,6 +255916,141 @@ Note: Advanced Python pipeline not available — install pytesseract, opencv-pyt
|
|
|
255916
255916
|
}
|
|
255917
255917
|
});
|
|
255918
255918
|
|
|
255919
|
+
// packages/execution/dist/tools/dom-summary.js
|
|
255920
|
+
function downsampleDom(html) {
|
|
255921
|
+
const lines = [];
|
|
255922
|
+
let idx = 0;
|
|
255923
|
+
const titleMatch = html.match(/<title[^>]*>([^<]*)<\/title>/i);
|
|
255924
|
+
if (titleMatch)
|
|
255925
|
+
lines.push(`Page: ${titleMatch[1].trim()}`);
|
|
255926
|
+
const headings = html.matchAll(/<h([1-3])[^>]*>([\s\S]*?)<\/h\1>/gi);
|
|
255927
|
+
for (const m2 of headings) {
|
|
255928
|
+
const text = stripTags(m2[2]).trim();
|
|
255929
|
+
if (text && text.length > 1 && text.length < 200) {
|
|
255930
|
+
lines.push(`[H${m2[1]}] ${text}`);
|
|
255931
|
+
}
|
|
255932
|
+
}
|
|
255933
|
+
lines.push("");
|
|
255934
|
+
lines.push("Interactive elements:");
|
|
255935
|
+
const links2 = html.matchAll(/<a\b([^>]*)>([\s\S]*?)<\/a>/gi);
|
|
255936
|
+
for (const m2 of links2) {
|
|
255937
|
+
const href = m2[1].match(/href="([^"]+)"/)?.[1] || "";
|
|
255938
|
+
const text = stripTags(m2[2]).trim();
|
|
255939
|
+
if (text && text.length > 1 && href && !href.startsWith("#") && !href.startsWith("javascript:")) {
|
|
255940
|
+
idx++;
|
|
255941
|
+
const id = m2[1].match(/id="([^"]+)"/)?.[1] || "";
|
|
255942
|
+
const selector = id ? `a#${cssEscapeIdentifier(id)}` : `a[href="${cssEscapeAttribute(href)}"]`;
|
|
255943
|
+
lines.push(` [${idx}] LINK "${text.slice(0, 60)}" -> href: ${href.slice(0, 80)} -> selector: ${selector}`);
|
|
255944
|
+
}
|
|
255945
|
+
if (idx > 50)
|
|
255946
|
+
break;
|
|
255947
|
+
}
|
|
255948
|
+
const buttons = html.matchAll(/<button\b([^>]*)>([\s\S]*?)<\/button>/gi);
|
|
255949
|
+
for (const m2 of buttons) {
|
|
255950
|
+
const text = stripTags(m2[2]).trim();
|
|
255951
|
+
const id = m2[1].match(/id="([^"]+)"/)?.[1] || "";
|
|
255952
|
+
const cls = m2[1].match(/class="([^"]+)"/)?.[1]?.split(/\s+/).slice(0, 3).join(".") || "";
|
|
255953
|
+
if (text) {
|
|
255954
|
+
idx++;
|
|
255955
|
+
const selector = id ? `button#${id}` : cls ? `button.${cls}` : "button";
|
|
255956
|
+
lines.push(` [${idx}] BUTTON "${text.slice(0, 60)}" -> selector: ${selector}`);
|
|
255957
|
+
}
|
|
255958
|
+
}
|
|
255959
|
+
const inputs = html.matchAll(/<input\b([^>]*)>/gi);
|
|
255960
|
+
for (const m2 of inputs) {
|
|
255961
|
+
const type = m2[1].match(/type="([^"]+)"/)?.[1] || "text";
|
|
255962
|
+
if (type === "hidden")
|
|
255963
|
+
continue;
|
|
255964
|
+
const name10 = m2[1].match(/name="([^"]+)"/)?.[1] || "";
|
|
255965
|
+
const id = m2[1].match(/id="([^"]+)"/)?.[1] || "";
|
|
255966
|
+
const placeholder = m2[1].match(/placeholder="([^"]+)"/)?.[1] || "";
|
|
255967
|
+
const value2 = m2[1].match(/value="([^"]+)"/)?.[1] || "";
|
|
255968
|
+
idx++;
|
|
255969
|
+
const selector = id ? `input#${id}` : name10 ? `input[name="${name10}"]` : `input[type="${type}"]`;
|
|
255970
|
+
lines.push(` [${idx}] INPUT type=${type}${placeholder ? ` placeholder="${placeholder}"` : ""}${value2 ? ` value="${value2}"` : ""} -> selector: ${selector}`);
|
|
255971
|
+
}
|
|
255972
|
+
const textareas = html.matchAll(/<textarea\b([^>]*)>([\s\S]*?)<\/textarea>/gi);
|
|
255973
|
+
for (const m2 of textareas) {
|
|
255974
|
+
const id = m2[1].match(/id="([^"]+)"/)?.[1] || "";
|
|
255975
|
+
const name10 = m2[1].match(/name="([^"]+)"/)?.[1] || "";
|
|
255976
|
+
idx++;
|
|
255977
|
+
const selector = id ? `textarea#${id}` : name10 ? `textarea[name="${name10}"]` : "textarea";
|
|
255978
|
+
lines.push(` [${idx}] TEXTAREA -> selector: ${selector}`);
|
|
255979
|
+
}
|
|
255980
|
+
const selects = html.matchAll(/<select\b([^>]*)>([\s\S]*?)<\/select>/gi);
|
|
255981
|
+
for (const m2 of selects) {
|
|
255982
|
+
const id = m2[1].match(/id="([^"]+)"/)?.[1] || "";
|
|
255983
|
+
const name10 = m2[1].match(/name="([^"]+)"/)?.[1] || "";
|
|
255984
|
+
const cls = m2[1].match(/class="([^"]+)"/)?.[1]?.split(/\s+/).slice(0, 2).join(".") || "";
|
|
255985
|
+
idx++;
|
|
255986
|
+
const selector = id ? `select#${id}` : name10 ? `select[name="${name10}"]` : cls ? `select.${cls}` : "select";
|
|
255987
|
+
const options2 = m2[2].matchAll(/<option\b([^>]*)>([\s\S]*?)<\/option>/gi);
|
|
255988
|
+
const optList = [];
|
|
255989
|
+
const selected = [];
|
|
255990
|
+
for (const opt of options2) {
|
|
255991
|
+
const val = opt[1].match(/value="([^"]+)"/)?.[1] || "";
|
|
255992
|
+
const text = stripTags(opt[2]).trim();
|
|
255993
|
+
const isSel = /selected/i.test(opt[1]);
|
|
255994
|
+
if (text && val) {
|
|
255995
|
+
optList.push(`${val}="${text.slice(0, 30)}"`);
|
|
255996
|
+
if (isSel)
|
|
255997
|
+
selected.push(text);
|
|
255998
|
+
}
|
|
255999
|
+
}
|
|
256000
|
+
const selectedText = selected.length > 0 ? ` [SELECTED: ${selected.join(", ")}]` : "";
|
|
256001
|
+
const optPreview = optList.length <= 10 ? optList.join(", ") : optList.slice(0, 5).join(", ") + ` ... (${optList.length} total)`;
|
|
256002
|
+
lines.push(` [${idx}] SELECT${selectedText} -> selector: ${selector}`);
|
|
256003
|
+
lines.push(` options: ${optPreview}`);
|
|
256004
|
+
}
|
|
256005
|
+
const paragraphs = html.matchAll(/<p\b[^>]*>([\s\S]*?)<\/p>/gi);
|
|
256006
|
+
let pCount = 0;
|
|
256007
|
+
const textParts = [];
|
|
256008
|
+
for (const m2 of paragraphs) {
|
|
256009
|
+
const text = stripTags(m2[1]).trim();
|
|
256010
|
+
if (text && text.length > 20 && text.length < 500) {
|
|
256011
|
+
textParts.push(text.slice(0, 150));
|
|
256012
|
+
pCount++;
|
|
256013
|
+
if (pCount >= 5)
|
|
256014
|
+
break;
|
|
256015
|
+
}
|
|
256016
|
+
}
|
|
256017
|
+
if (textParts.length > 0) {
|
|
256018
|
+
lines.push("");
|
|
256019
|
+
lines.push("Visible text:");
|
|
256020
|
+
for (const t2 of textParts)
|
|
256021
|
+
lines.push(` ${t2}`);
|
|
256022
|
+
}
|
|
256023
|
+
lines.push("");
|
|
256024
|
+
lines.push(`Summary: ${idx} interactive elements found. Use 'click' with the selector shown, or 'type' with selector + text.`);
|
|
256025
|
+
lines.push("Indexes like [1] are references only; do not pass them as selectors.");
|
|
256026
|
+
lines.push(`For select/dropdown: use 'click' on 'select.CLASS option[value="CODE"]' to select an option.`);
|
|
256027
|
+
return lines.join("\n");
|
|
256028
|
+
}
|
|
256029
|
+
function cssEscapeAttribute(value2) {
|
|
256030
|
+
return value2.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
256031
|
+
}
|
|
256032
|
+
function cssEscapeIdentifier(value2) {
|
|
256033
|
+
return value2.replace(/([^a-zA-Z0-9_-])/g, "\\$1");
|
|
256034
|
+
}
|
|
256035
|
+
function stripTags(html) {
|
|
256036
|
+
return html.replace(/<[^>]+>/g, " ").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/'/g, "'").replace(/ /g, " ").replace(/\s+/g, " ").trim();
|
|
256037
|
+
}
|
|
256038
|
+
function extractDomSummarySelectors(summary) {
|
|
256039
|
+
const selectors2 = /* @__PURE__ */ new Map();
|
|
256040
|
+
for (const line of summary.split(/\r?\n/)) {
|
|
256041
|
+
const match = line.match(/^\s+\[(\d+)\].* -> selector: (.+)$/);
|
|
256042
|
+
if (!match)
|
|
256043
|
+
continue;
|
|
256044
|
+
selectors2.set(Number(match[1]), match[2].trim());
|
|
256045
|
+
}
|
|
256046
|
+
return selectors2;
|
|
256047
|
+
}
|
|
256048
|
+
var init_dom_summary = __esm({
|
|
256049
|
+
"packages/execution/dist/tools/dom-summary.js"() {
|
|
256050
|
+
"use strict";
|
|
256051
|
+
}
|
|
256052
|
+
});
|
|
256053
|
+
|
|
255919
256054
|
// packages/execution/dist/tools/browser-action.js
|
|
255920
256055
|
import { execSync as execSync19, spawn as spawn12 } from "node:child_process";
|
|
255921
256056
|
import { copyFileSync, existsSync as existsSync30, mkdirSync as mkdirSync10, readFileSync as readFileSync24 } from "node:fs";
|
|
@@ -256068,119 +256203,11 @@ async function apiCall(endpoint, method = "POST", body) {
|
|
|
256068
256203
|
const res = await fetch(url, options2);
|
|
256069
256204
|
return await res.json();
|
|
256070
256205
|
}
|
|
256071
|
-
function downsampleDom(html) {
|
|
256072
|
-
const lines = [];
|
|
256073
|
-
let idx = 0;
|
|
256074
|
-
const titleMatch = html.match(/<title[^>]*>([^<]*)<\/title>/i);
|
|
256075
|
-
if (titleMatch)
|
|
256076
|
-
lines.push(`Page: ${titleMatch[1].trim()}`);
|
|
256077
|
-
const headings = html.matchAll(/<h([1-3])[^>]*>([\s\S]*?)<\/h\1>/gi);
|
|
256078
|
-
for (const m2 of headings) {
|
|
256079
|
-
const text = stripTags(m2[2]).trim();
|
|
256080
|
-
if (text && text.length > 1 && text.length < 200) {
|
|
256081
|
-
lines.push(`[H${m2[1]}] ${text}`);
|
|
256082
|
-
}
|
|
256083
|
-
}
|
|
256084
|
-
lines.push("");
|
|
256085
|
-
lines.push("Interactive elements:");
|
|
256086
|
-
const links2 = html.matchAll(/<a\b([^>]*)>([\s\S]*?)<\/a>/gi);
|
|
256087
|
-
for (const m2 of links2) {
|
|
256088
|
-
const href = m2[1].match(/href="([^"]+)"/)?.[1] || "";
|
|
256089
|
-
const text = stripTags(m2[2]).trim();
|
|
256090
|
-
if (text && text.length > 1 && href && !href.startsWith("#") && !href.startsWith("javascript:")) {
|
|
256091
|
-
idx++;
|
|
256092
|
-
lines.push(` [${idx}] LINK "${text.slice(0, 60)}" → ${href.slice(0, 80)}`);
|
|
256093
|
-
}
|
|
256094
|
-
if (idx > 50)
|
|
256095
|
-
break;
|
|
256096
|
-
}
|
|
256097
|
-
const buttons = html.matchAll(/<button\b([^>]*)>([\s\S]*?)<\/button>/gi);
|
|
256098
|
-
for (const m2 of buttons) {
|
|
256099
|
-
const text = stripTags(m2[2]).trim();
|
|
256100
|
-
const id = m2[1].match(/id="([^"]+)"/)?.[1] || "";
|
|
256101
|
-
const cls = m2[1].match(/class="([^"]+)"/)?.[1]?.split(/\s+/).slice(0, 3).join(".") || "";
|
|
256102
|
-
if (text && text.length > 0) {
|
|
256103
|
-
idx++;
|
|
256104
|
-
const selector = id ? `button#${id}` : cls ? `button.${cls}` : "button";
|
|
256105
|
-
lines.push(` [${idx}] BUTTON "${text.slice(0, 60)}" → selector: ${selector}`);
|
|
256106
|
-
}
|
|
256107
|
-
}
|
|
256108
|
-
const inputs = html.matchAll(/<input\b([^>]*)>/gi);
|
|
256109
|
-
for (const m2 of inputs) {
|
|
256110
|
-
const type = m2[1].match(/type="([^"]+)"/)?.[1] || "text";
|
|
256111
|
-
if (type === "hidden")
|
|
256112
|
-
continue;
|
|
256113
|
-
const name10 = m2[1].match(/name="([^"]+)"/)?.[1] || "";
|
|
256114
|
-
const id = m2[1].match(/id="([^"]+)"/)?.[1] || "";
|
|
256115
|
-
const placeholder = m2[1].match(/placeholder="([^"]+)"/)?.[1] || "";
|
|
256116
|
-
const value2 = m2[1].match(/value="([^"]+)"/)?.[1] || "";
|
|
256117
|
-
idx++;
|
|
256118
|
-
const selector = id ? `input#${id}` : name10 ? `input[name="${name10}"]` : `input[type="${type}"]`;
|
|
256119
|
-
lines.push(` [${idx}] INPUT type=${type}${placeholder ? ` placeholder="${placeholder}"` : ""}${value2 ? ` value="${value2}"` : ""} → selector: ${selector}`);
|
|
256120
|
-
}
|
|
256121
|
-
const textareas = html.matchAll(/<textarea\b([^>]*)>([\s\S]*?)<\/textarea>/gi);
|
|
256122
|
-
for (const m2 of textareas) {
|
|
256123
|
-
const id = m2[1].match(/id="([^"]+)"/)?.[1] || "";
|
|
256124
|
-
const name10 = m2[1].match(/name="([^"]+)"/)?.[1] || "";
|
|
256125
|
-
idx++;
|
|
256126
|
-
const selector = id ? `textarea#${id}` : name10 ? `textarea[name="${name10}"]` : "textarea";
|
|
256127
|
-
lines.push(` [${idx}] TEXTAREA → selector: ${selector}`);
|
|
256128
|
-
}
|
|
256129
|
-
const selects = html.matchAll(/<select\b([^>]*)>([\s\S]*?)<\/select>/gi);
|
|
256130
|
-
for (const m2 of selects) {
|
|
256131
|
-
const id = m2[1].match(/id="([^"]+)"/)?.[1] || "";
|
|
256132
|
-
const name10 = m2[1].match(/name="([^"]+)"/)?.[1] || "";
|
|
256133
|
-
const cls = m2[1].match(/class="([^"]+)"/)?.[1]?.split(/\s+/).slice(0, 2).join(".") || "";
|
|
256134
|
-
idx++;
|
|
256135
|
-
const selector = id ? `select#${id}` : name10 ? `select[name="${name10}"]` : cls ? `select.${cls}` : "select";
|
|
256136
|
-
const options2 = m2[2].matchAll(/<option\b([^>]*)>([\s\S]*?)<\/option>/gi);
|
|
256137
|
-
const optList = [];
|
|
256138
|
-
const selected = [];
|
|
256139
|
-
for (const opt of options2) {
|
|
256140
|
-
const val = opt[1].match(/value="([^"]+)"/)?.[1] || "";
|
|
256141
|
-
const text = stripTags(opt[2]).trim();
|
|
256142
|
-
const isSel = /selected/i.test(opt[1]);
|
|
256143
|
-
if (text && val) {
|
|
256144
|
-
optList.push(`${val}="${text.slice(0, 30)}"`);
|
|
256145
|
-
if (isSel)
|
|
256146
|
-
selected.push(text);
|
|
256147
|
-
}
|
|
256148
|
-
}
|
|
256149
|
-
const selectedText = selected.length > 0 ? ` [SELECTED: ${selected.join(", ")}]` : "";
|
|
256150
|
-
const optPreview = optList.length <= 10 ? optList.join(", ") : optList.slice(0, 5).join(", ") + ` ... (${optList.length} total)`;
|
|
256151
|
-
lines.push(` [${idx}] SELECT${selectedText} → selector: ${selector}`);
|
|
256152
|
-
lines.push(` options: ${optPreview}`);
|
|
256153
|
-
}
|
|
256154
|
-
const paragraphs = html.matchAll(/<p\b[^>]*>([\s\S]*?)<\/p>/gi);
|
|
256155
|
-
let pCount = 0;
|
|
256156
|
-
const textParts = [];
|
|
256157
|
-
for (const m2 of paragraphs) {
|
|
256158
|
-
const text = stripTags(m2[1]).trim();
|
|
256159
|
-
if (text && text.length > 20 && text.length < 500) {
|
|
256160
|
-
textParts.push(text.slice(0, 150));
|
|
256161
|
-
pCount++;
|
|
256162
|
-
if (pCount >= 5)
|
|
256163
|
-
break;
|
|
256164
|
-
}
|
|
256165
|
-
}
|
|
256166
|
-
if (textParts.length > 0) {
|
|
256167
|
-
lines.push("");
|
|
256168
|
-
lines.push("Visible text:");
|
|
256169
|
-
for (const t2 of textParts)
|
|
256170
|
-
lines.push(` ${t2}`);
|
|
256171
|
-
}
|
|
256172
|
-
lines.push("");
|
|
256173
|
-
lines.push(`Summary: ${idx} interactive elements found. Use 'click' with the selector shown, or 'type' with selector + text.`);
|
|
256174
|
-
lines.push(`For select/dropdown: use 'click' on 'select.CLASS option[value="CODE"]' to select an option.`);
|
|
256175
|
-
return lines.join("\n");
|
|
256176
|
-
}
|
|
256177
|
-
function stripTags(html) {
|
|
256178
|
-
return html.replace(/<[^>]+>/g, " ").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/'/g, "'").replace(/ /g, " ").replace(/\s+/g, " ").trim();
|
|
256179
|
-
}
|
|
256180
256206
|
var __dirname4, DEFAULT_PORT, SCRAPE_SCRIPT, BASE_URL, serviceProcess, activeSessionId, BrowserActionTool;
|
|
256181
256207
|
var init_browser_action = __esm({
|
|
256182
256208
|
"packages/execution/dist/tools/browser-action.js"() {
|
|
256183
256209
|
"use strict";
|
|
256210
|
+
init_dom_summary();
|
|
256184
256211
|
__dirname4 = dirname11(fileURLToPath6(import.meta.url));
|
|
256185
256212
|
DEFAULT_PORT = 8130;
|
|
256186
256213
|
SCRAPE_SCRIPT = findScrapeScript();
|
|
@@ -256545,15 +256572,114 @@ var init_browser_action = __esm({
|
|
|
256545
256572
|
});
|
|
256546
256573
|
|
|
256547
256574
|
// packages/execution/dist/tools/playwright-browser.js
|
|
256548
|
-
import { execSync as execSync20
|
|
256549
|
-
import { existsSync as existsSync31,
|
|
256550
|
-
import { join as join43
|
|
256575
|
+
import { execFileSync as execFileSync3, execSync as execSync20 } from "node:child_process";
|
|
256576
|
+
import { existsSync as existsSync31, mkdirSync as mkdirSync11 } from "node:fs";
|
|
256577
|
+
import { join as join43 } from "node:path";
|
|
256578
|
+
import { pathToFileURL } from "node:url";
|
|
256551
256579
|
import { homedir as homedir10 } from "node:os";
|
|
256552
256580
|
function pushBounded(buf, item) {
|
|
256553
256581
|
buf.push(item);
|
|
256554
256582
|
if (buf.length > MAX_BUFFER)
|
|
256555
256583
|
buf.splice(0, buf.length - MAX_BUFFER);
|
|
256556
256584
|
}
|
|
256585
|
+
function which(cmd) {
|
|
256586
|
+
try {
|
|
256587
|
+
const out = execFileSync3("which", [cmd], {
|
|
256588
|
+
encoding: "utf8",
|
|
256589
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
256590
|
+
timeout: 2e3
|
|
256591
|
+
}).trim();
|
|
256592
|
+
const first2 = out.split(/\r?\n/)[0]?.trim();
|
|
256593
|
+
return first2 && existsSync31(first2) ? first2 : null;
|
|
256594
|
+
} catch {
|
|
256595
|
+
return null;
|
|
256596
|
+
}
|
|
256597
|
+
}
|
|
256598
|
+
function findSystemChromiumExecutable() {
|
|
256599
|
+
const envPath = process.env["OMNIUS_PLAYWRIGHT_CHROMIUM"] || process.env["PLAYWRIGHT_CHROMIUM_EXECUTABLE"];
|
|
256600
|
+
if (envPath && existsSync31(envPath))
|
|
256601
|
+
return envPath;
|
|
256602
|
+
const candidates = [
|
|
256603
|
+
"/opt/google/chrome-canary/chrome",
|
|
256604
|
+
"/usr/bin/google-chrome",
|
|
256605
|
+
"/usr/bin/google-chrome-stable",
|
|
256606
|
+
"/usr/bin/chromium",
|
|
256607
|
+
"/usr/bin/chromium-browser",
|
|
256608
|
+
"/snap/bin/chromium",
|
|
256609
|
+
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
|
|
256610
|
+
"/Applications/Chromium.app/Contents/MacOS/Chromium"
|
|
256611
|
+
];
|
|
256612
|
+
for (const candidate of candidates) {
|
|
256613
|
+
if (existsSync31(candidate))
|
|
256614
|
+
return candidate;
|
|
256615
|
+
}
|
|
256616
|
+
for (const command of ["google-chrome", "google-chrome-stable", "chromium", "chromium-browser"]) {
|
|
256617
|
+
const resolved = which(command);
|
|
256618
|
+
if (resolved)
|
|
256619
|
+
return resolved;
|
|
256620
|
+
}
|
|
256621
|
+
return null;
|
|
256622
|
+
}
|
|
256623
|
+
async function importPlaywrightFromRuntime() {
|
|
256624
|
+
for (const rel of ["index.mjs", "index.js"]) {
|
|
256625
|
+
const entry = join43(PLAYWRIGHT_RUNTIME_DIR, "node_modules", "playwright", rel);
|
|
256626
|
+
if (!existsSync31(entry))
|
|
256627
|
+
continue;
|
|
256628
|
+
pw = await dynamicImport(pathToFileURL(entry).href);
|
|
256629
|
+
return true;
|
|
256630
|
+
}
|
|
256631
|
+
return false;
|
|
256632
|
+
}
|
|
256633
|
+
function runNpm(args, timeout2 = 3e5, extraEnv = {}) {
|
|
256634
|
+
return execFileSync3("npm", args, {
|
|
256635
|
+
cwd: PLAYWRIGHT_RUNTIME_DIR,
|
|
256636
|
+
encoding: "utf8",
|
|
256637
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
256638
|
+
timeout: timeout2,
|
|
256639
|
+
env: {
|
|
256640
|
+
...process.env,
|
|
256641
|
+
PLAYWRIGHT_BROWSERS_PATH: PLAYWRIGHT_BROWSERS_DIR,
|
|
256642
|
+
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "1",
|
|
256643
|
+
npm_config_audit: "false",
|
|
256644
|
+
npm_config_fund: "false",
|
|
256645
|
+
CI: "true",
|
|
256646
|
+
...extraEnv
|
|
256647
|
+
}
|
|
256648
|
+
});
|
|
256649
|
+
}
|
|
256650
|
+
async function installPlaywrightPackage() {
|
|
256651
|
+
try {
|
|
256652
|
+
mkdirSync11(PLAYWRIGHT_RUNTIME_DIR, { recursive: true });
|
|
256653
|
+
runNpm(["install", "--prefix", PLAYWRIGHT_RUNTIME_DIR, "playwright@latest", "--no-audit", "--no-fund", "--loglevel=error"]);
|
|
256654
|
+
if (await importPlaywrightFromRuntime())
|
|
256655
|
+
return null;
|
|
256656
|
+
return `Playwright installed under ${PLAYWRIGHT_RUNTIME_DIR}, but the module entry was not found.`;
|
|
256657
|
+
} catch (err) {
|
|
256658
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
256659
|
+
return `Failed to install Playwright package without privileged commands: ${msg}`;
|
|
256660
|
+
}
|
|
256661
|
+
}
|
|
256662
|
+
function looksLikeMissingPlaywrightBrowser(err) {
|
|
256663
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
256664
|
+
return /Executable doesn't exist|Please run the following command to download new browsers|playwright install/i.test(msg);
|
|
256665
|
+
}
|
|
256666
|
+
async function installPlaywrightBrowser() {
|
|
256667
|
+
try {
|
|
256668
|
+
mkdirSync11(PLAYWRIGHT_RUNTIME_DIR, { recursive: true });
|
|
256669
|
+
if (!existsSync31(join43(PLAYWRIGHT_RUNTIME_DIR, "node_modules", "playwright", "package.json"))) {
|
|
256670
|
+
const packageErr = await installPlaywrightPackage();
|
|
256671
|
+
if (packageErr)
|
|
256672
|
+
return packageErr;
|
|
256673
|
+
}
|
|
256674
|
+
runNpm(["exec", "--prefix", PLAYWRIGHT_RUNTIME_DIR, "--", "playwright", "install", "chromium"], 3e5, {
|
|
256675
|
+
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: void 0
|
|
256676
|
+
});
|
|
256677
|
+
return null;
|
|
256678
|
+
} catch (err) {
|
|
256679
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
256680
|
+
return `Failed to install Playwright Chromium without OS dependency escalation: ${msg}`;
|
|
256681
|
+
}
|
|
256682
|
+
}
|
|
256557
256683
|
async function ensurePlaywright() {
|
|
256558
256684
|
if (pw)
|
|
256559
256685
|
return null;
|
|
@@ -256562,18 +256688,14 @@ async function ensurePlaywright() {
|
|
|
256562
256688
|
return null;
|
|
256563
256689
|
} catch {
|
|
256564
256690
|
try {
|
|
256565
|
-
|
|
256566
|
-
|
|
256567
|
-
|
|
256568
|
-
encoding: "utf8",
|
|
256569
|
-
stdio: "pipe",
|
|
256570
|
-
cwd: join43(homedir10(), ".omnius")
|
|
256571
|
-
});
|
|
256572
|
-
pw = await dynamicImport("playwright");
|
|
256573
|
-
return null;
|
|
256574
|
-
} catch (err) {
|
|
256575
|
-
return `Failed to install Playwright: ${err instanceof Error ? err.message : String(err)}. Run: npm install playwright && npx playwright install chromium`;
|
|
256691
|
+
if (await importPlaywrightFromRuntime())
|
|
256692
|
+
return null;
|
|
256693
|
+
} catch {
|
|
256576
256694
|
}
|
|
256695
|
+
const installErr = await installPlaywrightPackage();
|
|
256696
|
+
if (!installErr)
|
|
256697
|
+
return null;
|
|
256698
|
+
return `${installErr}. Install manually with: npm install playwright. Do not run Playwright --with-deps from an agent session.`;
|
|
256577
256699
|
}
|
|
256578
256700
|
}
|
|
256579
256701
|
async function ensureBrowser() {
|
|
@@ -256583,9 +256705,11 @@ async function ensureBrowser() {
|
|
|
256583
256705
|
if (!pw)
|
|
256584
256706
|
return "Playwright not loaded";
|
|
256585
256707
|
if (!browser2 || !browser2.isConnected?.()) {
|
|
256708
|
+
const executablePath = findSystemChromiumExecutable();
|
|
256586
256709
|
try {
|
|
256587
256710
|
browser2 = await pw.chromium.launch({
|
|
256588
256711
|
headless: true,
|
|
256712
|
+
...executablePath ? { executablePath } : {},
|
|
256589
256713
|
args: ["--no-sandbox", "--disable-setuid-sandbox", "--disable-dev-shm-usage"]
|
|
256590
256714
|
});
|
|
256591
256715
|
context = await browser2.newContext({
|
|
@@ -256595,6 +256719,26 @@ async function ensureBrowser() {
|
|
|
256595
256719
|
page = await context.newPage();
|
|
256596
256720
|
attachDiagnosticListeners(page);
|
|
256597
256721
|
} catch (err) {
|
|
256722
|
+
if (!executablePath && looksLikeMissingPlaywrightBrowser(err)) {
|
|
256723
|
+
const browserInstallErr = await installPlaywrightBrowser();
|
|
256724
|
+
if (browserInstallErr)
|
|
256725
|
+
return browserInstallErr;
|
|
256726
|
+
try {
|
|
256727
|
+
browser2 = await pw.chromium.launch({
|
|
256728
|
+
headless: true,
|
|
256729
|
+
args: ["--no-sandbox", "--disable-setuid-sandbox", "--disable-dev-shm-usage"]
|
|
256730
|
+
});
|
|
256731
|
+
context = await browser2.newContext({
|
|
256732
|
+
viewport: { width: 1280, height: 720 },
|
|
256733
|
+
userAgent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
|
|
256734
|
+
});
|
|
256735
|
+
page = await context.newPage();
|
|
256736
|
+
attachDiagnosticListeners(page);
|
|
256737
|
+
return null;
|
|
256738
|
+
} catch (retryErr) {
|
|
256739
|
+
return `Failed to launch Playwright Chromium after browser download: ${retryErr instanceof Error ? retryErr.message : String(retryErr)}. If this mentions missing shared libraries, install OS dependencies outside Omnius.`;
|
|
256740
|
+
}
|
|
256741
|
+
}
|
|
256598
256742
|
return `Failed to launch browser: ${err instanceof Error ? err.message : String(err)}`;
|
|
256599
256743
|
}
|
|
256600
256744
|
}
|
|
@@ -256657,6 +256801,13 @@ function clearDiagnosticBuffers() {
|
|
|
256657
256801
|
consoleBuffer = [];
|
|
256658
256802
|
networkBuffer = [];
|
|
256659
256803
|
errorBuffer = [];
|
|
256804
|
+
lastDomSummarySelectors = /* @__PURE__ */ new Map();
|
|
256805
|
+
}
|
|
256806
|
+
function resolveDomSummarySelector(selector) {
|
|
256807
|
+
const match = selector.trim().match(/^\[(\d+)\]$/);
|
|
256808
|
+
if (!match)
|
|
256809
|
+
return selector;
|
|
256810
|
+
return lastDomSummarySelectors.get(Number(match[1])) ?? null;
|
|
256660
256811
|
}
|
|
256661
256812
|
function ok(output, start2) {
|
|
256662
256813
|
return { success: true, output, durationMs: Date.now() - start2 };
|
|
@@ -256664,10 +256815,11 @@ function ok(output, start2) {
|
|
|
256664
256815
|
function fail(error, start2) {
|
|
256665
256816
|
return { success: false, output: "", error, durationMs: Date.now() - start2 };
|
|
256666
256817
|
}
|
|
256667
|
-
var pw, browser2, context, page, MAX_BUFFER, consoleBuffer, networkBuffer, errorBuffer, dynamicImport, PlaywrightBrowserTool;
|
|
256818
|
+
var pw, browser2, context, page, MAX_BUFFER, consoleBuffer, networkBuffer, errorBuffer, lastDomSummarySelectors, dynamicImport, PLAYWRIGHT_RUNTIME_DIR, PLAYWRIGHT_BROWSERS_DIR, PlaywrightBrowserTool;
|
|
256668
256819
|
var init_playwright_browser = __esm({
|
|
256669
256820
|
"packages/execution/dist/tools/playwright-browser.js"() {
|
|
256670
256821
|
"use strict";
|
|
256822
|
+
init_dom_summary();
|
|
256671
256823
|
pw = null;
|
|
256672
256824
|
browser2 = null;
|
|
256673
256825
|
context = null;
|
|
@@ -256676,10 +256828,13 @@ var init_playwright_browser = __esm({
|
|
|
256676
256828
|
consoleBuffer = [];
|
|
256677
256829
|
networkBuffer = [];
|
|
256678
256830
|
errorBuffer = [];
|
|
256831
|
+
lastDomSummarySelectors = /* @__PURE__ */ new Map();
|
|
256679
256832
|
dynamicImport = new Function("mod", "return import(mod)");
|
|
256833
|
+
PLAYWRIGHT_RUNTIME_DIR = join43(homedir10(), ".omnius", "playwright-runtime");
|
|
256834
|
+
PLAYWRIGHT_BROWSERS_DIR = join43(PLAYWRIGHT_RUNTIME_DIR, "browsers");
|
|
256680
256835
|
PlaywrightBrowserTool = class {
|
|
256681
256836
|
name = "playwright_browser";
|
|
256682
|
-
description = "Full-scope Playwright browser automation + diagnostic capture. Launches a persistent headless Chromium session. Beyond navigation/interaction, this tool buffers everything the running app emits (console messages, network requests, JS exceptions, accessibility tree) so the agent can verify what is ACTUALLY happening — not just what the build/test reports. Auto-installs Playwright + Chromium on first use. Diagnostic actions: console_logs, network_log, page_errors, a11y_snapshot, bounding_box, query_all, performance, cookies, storage, viewport, clear_diagnostics. Interaction actions: navigate, click, fill, type, press, select, check, hover. Capture actions: screenshot, pdf, content, innerText, innerHTML, getAttribute, evaluate. Workflow: navigate → screenshot or content → console_logs/network_log/page_errors to verify state → click/fill/type to drive UI → repeat.";
|
|
256837
|
+
description = "Full-scope Playwright browser automation + diagnostic capture. Launches a persistent headless Chromium session. Beyond navigation/interaction, this tool buffers everything the running app emits (console messages, network requests, JS exceptions, accessibility tree) so the agent can verify what is ACTUALLY happening — not just what the build/test reports. Auto-installs Playwright + Chromium on first use without sudo or OS package manager escalation. Diagnostic actions: dom_summary, dom, console_logs, network_log, page_errors, a11y_snapshot, bounding_box, query_all, performance, cookies, storage, viewport, clear_diagnostics. Interaction actions: navigate, click, fill, type, press, select, check, hover. Capture actions: screenshot, pdf, content, innerText, innerHTML, getAttribute, evaluate. Workflow: navigate → screenshot or content → console_logs/network_log/page_errors to verify state → click/fill/type to drive UI → repeat.";
|
|
256683
256838
|
parameters = {
|
|
256684
256839
|
type: "object",
|
|
256685
256840
|
properties: {
|
|
@@ -256694,6 +256849,8 @@ var init_playwright_browser = __esm({
|
|
|
256694
256849
|
"screenshot",
|
|
256695
256850
|
"evaluate",
|
|
256696
256851
|
"content",
|
|
256852
|
+
"dom",
|
|
256853
|
+
"dom_summary",
|
|
256697
256854
|
"innerText",
|
|
256698
256855
|
"select",
|
|
256699
256856
|
"check",
|
|
@@ -256725,7 +256882,7 @@ var init_playwright_browser = __esm({
|
|
|
256725
256882
|
"clear_diagnostics",
|
|
256726
256883
|
"close"
|
|
256727
256884
|
],
|
|
256728
|
-
description: "Action to perform:\n- navigate: go to a URL\n- click: click element by selector\n- fill: clear input and type text (for form fields)\n- type: type text character by character (simulates real typing)\n- press: press a key (Enter, Tab, Escape, etc.)\n- screenshot: capture the headless browser page, not the desktop; use value to choose the output file path\n- evaluate: run JavaScript in page context\n- content: get page text content (readable, stripped)\n- innerText: get innerText of a specific element\n- select: select dropdown option by value\n- check/uncheck: toggle checkbox\n- hover: hover over element\n- wait: wait for a selector to appear\n- waitForNavigation: wait for page navigation to complete\n- waitForSelector: wait for element matching selector\n- title: get page title\n- url: get current URL\n- getAttribute: get element attribute value\n- innerHTML: get element's innerHTML\n- textContent: get element's textContent\n- goBack/goForward/reload: browser navigation\n- pdf: save page as PDF\n- close: close browser session"
|
|
256885
|
+
description: "Action to perform:\n- navigate: go to a URL\n- click: click element by selector\n- fill: clear input and type text (for form fields)\n- type: type text character by character (simulates real typing)\n- press: press a key (Enter, Tab, Escape, etc.)\n- screenshot: capture the headless browser page, not the desktop; use value to choose the output file path\n- evaluate: run JavaScript in page context\n- content: get page text content (readable, stripped)\n- dom: get raw page HTML (truncated)\n- dom_summary: compact interactive DOM summary with selectors\n- innerText: get innerText of a specific element\n- select: select dropdown option by value\n- check/uncheck: toggle checkbox\n- hover: hover over element\n- wait: wait for a selector to appear\n- waitForNavigation: wait for page navigation to complete\n- waitForSelector: wait for element matching selector\n- title: get page title\n- url: get current URL\n- getAttribute: get element attribute value\n- innerHTML: get element's innerHTML\n- textContent: get element's textContent\n- goBack/goForward/reload: browser navigation\n- pdf: save page as PDF\n- close: close browser session"
|
|
256729
256886
|
},
|
|
256730
256887
|
url: {
|
|
256731
256888
|
type: "string",
|
|
@@ -256743,9 +256900,29 @@ var init_playwright_browser = __esm({
|
|
|
256743
256900
|
type: "string",
|
|
256744
256901
|
description: "Value for select action, or file path for screenshot/pdf"
|
|
256745
256902
|
},
|
|
256903
|
+
output_path: {
|
|
256904
|
+
type: "string",
|
|
256905
|
+
description: "Alias for screenshot/pdf output file path; matches browser_action's screenshot contract"
|
|
256906
|
+
},
|
|
256907
|
+
path: {
|
|
256908
|
+
type: "string",
|
|
256909
|
+
description: "Alias for screenshot/pdf output file path"
|
|
256910
|
+
},
|
|
256746
256911
|
timeout: {
|
|
256747
256912
|
type: "number",
|
|
256748
256913
|
description: "Timeout in milliseconds (default: 10000)"
|
|
256914
|
+
},
|
|
256915
|
+
width: {
|
|
256916
|
+
type: "number",
|
|
256917
|
+
description: "Viewport width in CSS pixels for screenshot/viewport actions"
|
|
256918
|
+
},
|
|
256919
|
+
height: {
|
|
256920
|
+
type: "number",
|
|
256921
|
+
description: "Viewport height in CSS pixels for screenshot/viewport actions"
|
|
256922
|
+
},
|
|
256923
|
+
full_page: {
|
|
256924
|
+
type: "boolean",
|
|
256925
|
+
description: "For screenshot: capture the full scrollable page instead of the current viewport"
|
|
256749
256926
|
}
|
|
256750
256927
|
},
|
|
256751
256928
|
required: ["action"]
|
|
@@ -256757,7 +256934,10 @@ var init_playwright_browser = __esm({
|
|
|
256757
256934
|
const text = args.text;
|
|
256758
256935
|
const url = args.url;
|
|
256759
256936
|
const value2 = args.value;
|
|
256937
|
+
const outputPath2 = typeof args.output_path === "string" && args.output_path.trim() ? args.output_path.trim() : typeof args.path === "string" && args.path.trim() ? args.path.trim() : void 0;
|
|
256760
256938
|
const timeout2 = args.timeout || 1e4;
|
|
256939
|
+
const width = typeof args.width === "number" ? Math.max(320, Math.min(3840, Math.round(args.width))) : void 0;
|
|
256940
|
+
const height = typeof args.height === "number" ? Math.max(240, Math.min(2160, Math.round(args.height))) : void 0;
|
|
256761
256941
|
if (action === "close") {
|
|
256762
256942
|
try {
|
|
256763
256943
|
if (page && !page.isClosed())
|
|
@@ -256809,8 +256989,11 @@ var init_playwright_browser = __esm({
|
|
|
256809
256989
|
case "click": {
|
|
256810
256990
|
if (!selector)
|
|
256811
256991
|
return fail("selector is required", start2);
|
|
256812
|
-
|
|
256813
|
-
|
|
256992
|
+
const resolvedSelector = resolveDomSummarySelector(selector);
|
|
256993
|
+
if (!resolvedSelector)
|
|
256994
|
+
return fail(`No selector known for DOM summary reference ${selector}; run dom_summary and use the emitted selector.`, start2);
|
|
256995
|
+
await page.click(resolvedSelector, { timeout: timeout2 });
|
|
256996
|
+
return ok(`Clicked: ${resolvedSelector}${resolvedSelector !== selector ? ` (from ${selector})` : ""}`, start2);
|
|
256814
256997
|
}
|
|
256815
256998
|
case "fill": {
|
|
256816
256999
|
if (!selector)
|
|
@@ -256860,8 +257043,11 @@ var init_playwright_browser = __esm({
|
|
|
256860
257043
|
case "hover": {
|
|
256861
257044
|
if (!selector)
|
|
256862
257045
|
return fail("selector is required", start2);
|
|
256863
|
-
|
|
256864
|
-
|
|
257046
|
+
const resolvedSelector = resolveDomSummarySelector(selector);
|
|
257047
|
+
if (!resolvedSelector)
|
|
257048
|
+
return fail(`No selector known for DOM summary reference ${selector}; run dom_summary and use the emitted selector.`, start2);
|
|
257049
|
+
await page.hover(resolvedSelector, { timeout: timeout2 });
|
|
257050
|
+
return ok(`Hovered: ${resolvedSelector}${resolvedSelector !== selector ? ` (from ${selector})` : ""}`, start2);
|
|
256865
257051
|
}
|
|
256866
257052
|
// ── Waiting ──
|
|
256867
257053
|
case "wait":
|
|
@@ -256887,6 +257073,19 @@ var init_playwright_browser = __esm({
|
|
|
256887
257073
|
|
|
256888
257074
|
[truncated — ${textContent.length} chars total]` : ""), start2);
|
|
256889
257075
|
}
|
|
257076
|
+
case "dom": {
|
|
257077
|
+
const html = await page.content();
|
|
257078
|
+
const truncated = html.slice(0, 5e4);
|
|
257079
|
+
return ok(truncated + (html.length > 5e4 ? `
|
|
257080
|
+
|
|
257081
|
+
[truncated - ${html.length} chars total]` : ""), start2);
|
|
257082
|
+
}
|
|
257083
|
+
case "dom_summary": {
|
|
257084
|
+
const html = await page.content();
|
|
257085
|
+
const summary = downsampleDom(html);
|
|
257086
|
+
lastDomSummarySelectors = extractDomSummarySelectors(summary);
|
|
257087
|
+
return ok(summary, start2);
|
|
257088
|
+
}
|
|
256890
257089
|
case "innerText": {
|
|
256891
257090
|
if (!selector)
|
|
256892
257091
|
return fail("selector is required", start2);
|
|
@@ -256926,8 +257125,15 @@ var init_playwright_browser = __esm({
|
|
|
256926
257125
|
}
|
|
256927
257126
|
// ── Screenshot / PDF ──
|
|
256928
257127
|
case "screenshot": {
|
|
256929
|
-
|
|
256930
|
-
|
|
257128
|
+
if (width || height) {
|
|
257129
|
+
const current = page.viewportSize?.() ?? { width: 1280, height: 720 };
|
|
257130
|
+
await page.setViewportSize({
|
|
257131
|
+
width: width ?? current.width ?? 1280,
|
|
257132
|
+
height: height ?? current.height ?? 720
|
|
257133
|
+
});
|
|
257134
|
+
}
|
|
257135
|
+
const filePath = outputPath2 || value2 || "screenshot.png";
|
|
257136
|
+
await page.screenshot({ path: filePath, fullPage: args.full_page === true });
|
|
256931
257137
|
let b64 = null;
|
|
256932
257138
|
let mimeType = "image/png";
|
|
256933
257139
|
try {
|
|
@@ -256958,7 +257164,7 @@ var init_playwright_browser = __esm({
|
|
|
256958
257164
|
return ok(`Screenshot saved to ${filePath}`, start2);
|
|
256959
257165
|
}
|
|
256960
257166
|
case "pdf": {
|
|
256961
|
-
const pdfPath = value2 || "page.pdf";
|
|
257167
|
+
const pdfPath = outputPath2 || value2 || "page.pdf";
|
|
256962
257168
|
await page.pdf({ path: pdfPath, format: "A4" });
|
|
256963
257169
|
return ok(`PDF saved to ${pdfPath}`, start2);
|
|
256964
257170
|
}
|
|
@@ -257108,6 +257314,15 @@ ${lines.join("\n")}`, start2);
|
|
|
257108
257314
|
${JSON.stringify(data, null, 2)}`, start2);
|
|
257109
257315
|
}
|
|
257110
257316
|
case "viewport": {
|
|
257317
|
+
if (width || height) {
|
|
257318
|
+
const current = page.viewportSize?.() ?? { width: 1280, height: 720 };
|
|
257319
|
+
const next = {
|
|
257320
|
+
width: width ?? current.width ?? 1280,
|
|
257321
|
+
height: height ?? current.height ?? 720
|
|
257322
|
+
};
|
|
257323
|
+
await page.setViewportSize(next);
|
|
257324
|
+
return ok(`Viewport set to ${next.width}x${next.height}`, start2);
|
|
257325
|
+
}
|
|
257111
257326
|
const v = (text || value2 || "").trim();
|
|
257112
257327
|
const m2 = v.match(/^(\d+)\s*[x×]\s*(\d+)$/);
|
|
257113
257328
|
if (m2) {
|
|
@@ -257141,11 +257356,11 @@ ${JSON.stringify(data, null, 2)}`, start2);
|
|
|
257141
257356
|
|
|
257142
257357
|
// packages/execution/dist/tools/autoresearch.js
|
|
257143
257358
|
import { execSync as execSync21, spawn as spawn13 } from "node:child_process";
|
|
257144
|
-
import { existsSync as existsSync32, readFileSync as readFileSync25, writeFileSync as
|
|
257145
|
-
import { join as join44, resolve as resolve25, dirname as
|
|
257359
|
+
import { existsSync as existsSync32, readFileSync as readFileSync25, writeFileSync as writeFileSync12, mkdirSync as mkdirSync12, appendFileSync, copyFileSync as copyFileSync2 } from "node:fs";
|
|
257360
|
+
import { join as join44, resolve as resolve25, dirname as dirname12 } from "node:path";
|
|
257146
257361
|
import { fileURLToPath as fileURLToPath7 } from "node:url";
|
|
257147
257362
|
function findAutoresearchScript(scriptName) {
|
|
257148
|
-
const thisDir =
|
|
257363
|
+
const thisDir = dirname12(fileURLToPath7(import.meta.url));
|
|
257149
257364
|
const devPath3 = resolve25(thisDir, "../../scripts", scriptName);
|
|
257150
257365
|
if (existsSync32(devPath3))
|
|
257151
257366
|
return devPath3;
|
|
@@ -257323,7 +257538,7 @@ name = "pytorch-cu128"
|
|
|
257323
257538
|
url = "https://download.pytorch.org/whl/cu128"
|
|
257324
257539
|
explicit = true
|
|
257325
257540
|
`;
|
|
257326
|
-
|
|
257541
|
+
writeFileSync12(join44(workspace, "pyproject.toml"), pyprojectContent, "utf-8");
|
|
257327
257542
|
output.push("Created pyproject.toml");
|
|
257328
257543
|
try {
|
|
257329
257544
|
execSync21("git rev-parse --git-dir", { cwd: workspace, encoding: "utf-8", timeout: 5e3 });
|
|
@@ -257367,7 +257582,7 @@ explicit = true
|
|
|
257367
257582
|
}
|
|
257368
257583
|
const tsvPath = join44(workspace, "results.tsv");
|
|
257369
257584
|
if (!existsSync32(tsvPath)) {
|
|
257370
|
-
|
|
257585
|
+
writeFileSync12(tsvPath, "commit val_bpb memory_gb status description\n", "utf-8");
|
|
257371
257586
|
output.push("Created results.tsv");
|
|
257372
257587
|
}
|
|
257373
257588
|
return {
|
|
@@ -257429,7 +257644,7 @@ Next steps:
|
|
|
257429
257644
|
clearTimeout(timer);
|
|
257430
257645
|
const fullLog = stdout + "\n" + stderr;
|
|
257431
257646
|
try {
|
|
257432
|
-
|
|
257647
|
+
writeFileSync12(logPath3, fullLog, "utf-8");
|
|
257433
257648
|
} catch {
|
|
257434
257649
|
}
|
|
257435
257650
|
if (timedOut) {
|
|
@@ -257469,7 +257684,7 @@ ${fullLog.slice(-2e3)}`,
|
|
|
257469
257684
|
return;
|
|
257470
257685
|
}
|
|
257471
257686
|
try {
|
|
257472
|
-
|
|
257687
|
+
writeFileSync12(join44(workspace, ".last-result.json"), JSON.stringify(result, null, 2), "utf-8");
|
|
257473
257688
|
} catch {
|
|
257474
257689
|
}
|
|
257475
257690
|
const memGB = (result.peak_vram_mb / 1024).toFixed(1);
|
|
@@ -261487,7 +261702,7 @@ var init_project_scaffolding = __esm({
|
|
|
261487
261702
|
});
|
|
261488
261703
|
|
|
261489
261704
|
// packages/execution/dist/tools/todo-store.js
|
|
261490
|
-
import { existsSync as existsSync35, readFileSync as readFileSync26, writeFileSync as
|
|
261705
|
+
import { existsSync as existsSync35, readFileSync as readFileSync26, writeFileSync as writeFileSync13, mkdirSync as mkdirSync13, renameSync, unlinkSync as unlinkSync5, readdirSync as readdirSync11 } from "node:fs";
|
|
261491
261706
|
import { join as join51 } from "node:path";
|
|
261492
261707
|
import { homedir as homedir13 } from "node:os";
|
|
261493
261708
|
import { randomBytes as randomBytes15 } from "node:crypto";
|
|
@@ -261547,7 +261762,7 @@ function writeTodos(sessionId, incoming) {
|
|
|
261547
261762
|
const finalPath = todoPath(sessionId);
|
|
261548
261763
|
const tmpPath = `${finalPath}.tmp.${process.pid}.${Date.now()}`;
|
|
261549
261764
|
try {
|
|
261550
|
-
|
|
261765
|
+
writeFileSync13(tmpPath, JSON.stringify(newTodos, null, 2), "utf-8");
|
|
261551
261766
|
renameSync(tmpPath, finalPath);
|
|
261552
261767
|
} catch (err) {
|
|
261553
261768
|
try {
|
|
@@ -261789,10 +262004,10 @@ var init_todo_write = __esm({
|
|
|
261789
262004
|
|
|
261790
262005
|
// packages/execution/dist/tools/repo-map.js
|
|
261791
262006
|
import { readdirSync as readdirSync12, readFileSync as readFileSync27, statSync as statSync14, existsSync as existsSync36 } from "node:fs";
|
|
261792
|
-
import { join as join52, relative as relative3, extname as extname7, dirname as
|
|
262007
|
+
import { join as join52, relative as relative3, extname as extname7, dirname as dirname13, basename as basename12 } from "node:path";
|
|
261793
262008
|
function parseJSImports(content, filePath) {
|
|
261794
262009
|
const imports = [];
|
|
261795
|
-
const dir =
|
|
262010
|
+
const dir = dirname13(filePath);
|
|
261796
262011
|
const esRegex = /(?:import|export)\s+(?:[\s\S]*?)\s+from\s+['"]([^'"]+)['"]/g;
|
|
261797
262012
|
let m2;
|
|
261798
262013
|
while ((m2 = esRegex.exec(content)) !== null) {
|
|
@@ -477720,10 +477935,10 @@ var require_commonjs3 = __commonJS({
|
|
|
477720
477935
|
let ai = 0;
|
|
477721
477936
|
let bi = 0;
|
|
477722
477937
|
let result = [];
|
|
477723
|
-
let
|
|
477938
|
+
let which3 = "";
|
|
477724
477939
|
while (ai < a2.length && bi < b.length) {
|
|
477725
477940
|
if (a2[ai] === b[bi]) {
|
|
477726
|
-
result.push(
|
|
477941
|
+
result.push(which3 === "b" ? b[bi] : a2[ai]);
|
|
477727
477942
|
ai++;
|
|
477728
477943
|
bi++;
|
|
477729
477944
|
} else if (emptyGSMatch && a2[ai] === "**" && b[bi] === a2[ai + 1]) {
|
|
@@ -477733,16 +477948,16 @@ var require_commonjs3 = __commonJS({
|
|
|
477733
477948
|
result.push(b[bi]);
|
|
477734
477949
|
bi++;
|
|
477735
477950
|
} else if (a2[ai] === "*" && b[bi] && (this.options.dot || !b[bi].startsWith(".")) && b[bi] !== "**") {
|
|
477736
|
-
if (
|
|
477951
|
+
if (which3 === "b")
|
|
477737
477952
|
return false;
|
|
477738
|
-
|
|
477953
|
+
which3 = "a";
|
|
477739
477954
|
result.push(a2[ai]);
|
|
477740
477955
|
ai++;
|
|
477741
477956
|
bi++;
|
|
477742
477957
|
} else if (b[bi] === "*" && a2[ai] && (this.options.dot || !a2[ai].startsWith(".")) && a2[ai] !== "**") {
|
|
477743
|
-
if (
|
|
477958
|
+
if (which3 === "a")
|
|
477744
477959
|
return false;
|
|
477745
|
-
|
|
477960
|
+
which3 = "b";
|
|
477746
477961
|
result.push(b[bi]);
|
|
477747
477962
|
ai++;
|
|
477748
477963
|
bi++;
|
|
@@ -478323,7 +478538,7 @@ var require_path_browserify = __commonJS({
|
|
|
478323
478538
|
_makeLong: function _makeLong(path11) {
|
|
478324
478539
|
return path11;
|
|
478325
478540
|
},
|
|
478326
|
-
dirname: function
|
|
478541
|
+
dirname: function dirname40(path11) {
|
|
478327
478542
|
assertPath(path11);
|
|
478328
478543
|
if (path11.length === 0) return ".";
|
|
478329
478544
|
var code8 = path11.charCodeAt(0);
|
|
@@ -506638,7 +506853,7 @@ var init_ts_morph_parser = __esm({
|
|
|
506638
506853
|
import { createRequire as createRequire2 } from "node:module";
|
|
506639
506854
|
import { createHash as createHash7 } from "node:crypto";
|
|
506640
506855
|
import { mkdirSync as mkdirSync14, readFileSync as readFileSync28 } from "node:fs";
|
|
506641
|
-
import { join as join54, dirname as
|
|
506856
|
+
import { join as join54, dirname as dirname14, extname as extname9 } from "node:path";
|
|
506642
506857
|
function loadDatabaseCtor() {
|
|
506643
506858
|
if (_DatabaseCtor)
|
|
506644
506859
|
return _DatabaseCtor;
|
|
@@ -506688,7 +506903,7 @@ function extractFileSymbols(content, filePath) {
|
|
|
506688
506903
|
}
|
|
506689
506904
|
function extractFileImports(content, filePath) {
|
|
506690
506905
|
const imports = [];
|
|
506691
|
-
const dir =
|
|
506906
|
+
const dir = dirname14(filePath);
|
|
506692
506907
|
const esRe = /(?:import|export)\s+(?:[\s\S]*?)\s+from\s+['"]([^'"]+)['"]/g;
|
|
506693
506908
|
let m2;
|
|
506694
506909
|
while ((m2 = esRe.exec(content)) !== null) {
|
|
@@ -506758,7 +506973,7 @@ var init_code_graph_db = __esm({
|
|
|
506758
506973
|
constructor(rootDir, dbPath) {
|
|
506759
506974
|
this.rootDir = rootDir;
|
|
506760
506975
|
const resolvedPath = dbPath ?? join54(rootDir, ".omnius", "index", "code-graph.db");
|
|
506761
|
-
mkdirSync14(
|
|
506976
|
+
mkdirSync14(dirname14(resolvedPath), { recursive: true });
|
|
506762
506977
|
const Database = loadDatabaseCtor();
|
|
506763
506978
|
this.db = new Database(resolvedPath);
|
|
506764
506979
|
this.db.pragma("journal_mode = WAL");
|
|
@@ -506854,7 +507069,7 @@ var init_code_graph_db = __esm({
|
|
|
506854
507069
|
for (const sym of astGraph.symbols) {
|
|
506855
507070
|
this.stmts.insertSymbol.run(relPath, sym.name, sym.kind, sym.startLine, sym.endLine, sym.signature, sym.docstring, sym.exported ? 1 : 0);
|
|
506856
507071
|
}
|
|
506857
|
-
const dir =
|
|
507072
|
+
const dir = dirname14(relPath);
|
|
506858
507073
|
for (const edge of astGraph.edges) {
|
|
506859
507074
|
if (edge.kind === "imports") {
|
|
506860
507075
|
let target = edge.target;
|
|
@@ -507817,7 +508032,7 @@ var init_process_health = __esm({
|
|
|
507817
508032
|
|
|
507818
508033
|
// packages/execution/dist/tools/camera-capture.js
|
|
507819
508034
|
import { execSync as execSync27 } from "node:child_process";
|
|
507820
|
-
import { readFileSync as readFileSync29, writeFileSync as
|
|
508035
|
+
import { readFileSync as readFileSync29, writeFileSync as writeFileSync14, unlinkSync as unlinkSync6, existsSync as existsSync38, mkdirSync as mkdirSync15, statSync as statSync16 } from "node:fs";
|
|
507821
508036
|
import { join as join56 } from "node:path";
|
|
507822
508037
|
import { tmpdir as tmpdir9 } from "node:os";
|
|
507823
508038
|
var KANDAO_USB_VENDORS, QOOCAM_WIFI_PASSWORD, QOOCAM_DEFAULT_IP, OSC_TIMEOUT, CameraCaptureTool;
|
|
@@ -508279,7 +508494,7 @@ ${cameras.join("\n")}`,
|
|
|
508279
508494
|
mkdirSync15(join56(process.cwd(), ".omnius", "camera-captures"), {
|
|
508280
508495
|
recursive: true
|
|
508281
508496
|
});
|
|
508282
|
-
|
|
508497
|
+
writeFileSync14(outputPath2, data);
|
|
508283
508498
|
}
|
|
508284
508499
|
if (userOutputPath) {
|
|
508285
508500
|
return {
|
|
@@ -508560,22 +508775,22 @@ Saved to: ${tempFile}`,
|
|
|
508560
508775
|
});
|
|
508561
508776
|
|
|
508562
508777
|
// packages/execution/dist/tools/audio-playback.js
|
|
508563
|
-
import { execFileSync as
|
|
508564
|
-
import { copyFileSync as copyFileSync3, existsSync as existsSync40, statSync as statSync18, writeFileSync as
|
|
508778
|
+
import { execFileSync as execFileSync4, execSync as execSync29, spawn as spawn16 } from "node:child_process";
|
|
508779
|
+
import { copyFileSync as copyFileSync3, existsSync as existsSync40, statSync as statSync18, writeFileSync as writeFileSync15, mkdirSync as mkdirSync17, readdirSync as readdirSync14 } from "node:fs";
|
|
508565
508780
|
import { basename as basename14, extname as extname10, isAbsolute, join as join58 } from "node:path";
|
|
508566
508781
|
import { homedir as homedir14, tmpdir as tmpdir11 } from "node:os";
|
|
508567
508782
|
function hasCommand3(command) {
|
|
508568
508783
|
try {
|
|
508569
508784
|
if (process.platform === "win32") {
|
|
508570
|
-
|
|
508785
|
+
execFileSync4("where", [command], { stdio: "ignore", timeout: 2e3 });
|
|
508571
508786
|
} else {
|
|
508572
|
-
|
|
508787
|
+
execFileSync4("command", ["-v", command], { stdio: "ignore", timeout: 2e3 });
|
|
508573
508788
|
}
|
|
508574
508789
|
return true;
|
|
508575
508790
|
} catch {
|
|
508576
508791
|
if (process.platform !== "win32") {
|
|
508577
508792
|
try {
|
|
508578
|
-
|
|
508793
|
+
execFileSync4("which", [command], { stdio: "ignore", timeout: 2e3 });
|
|
508579
508794
|
return true;
|
|
508580
508795
|
} catch {
|
|
508581
508796
|
return false;
|
|
@@ -508630,7 +508845,7 @@ function playSoundFile(file, opts = {}) {
|
|
|
508630
508845
|
};
|
|
508631
508846
|
}
|
|
508632
508847
|
try {
|
|
508633
|
-
|
|
508848
|
+
execFileSync4(command.command, command.args, { timeout: opts.timeoutMs ?? 3e5, stdio: "pipe" });
|
|
508634
508849
|
return { ok: true, player: command.label };
|
|
508635
508850
|
} catch (err) {
|
|
508636
508851
|
return { ok: false, error: `Playback via ${command.label} failed: ${err instanceof Error ? err.message.slice(0, 300) : String(err).slice(0, 300)}` };
|
|
@@ -508777,16 +508992,16 @@ function ensureSupertonicInstalled() {
|
|
|
508777
508992
|
const py = findPython32();
|
|
508778
508993
|
if (!py)
|
|
508779
508994
|
throw new Error("python3 is required to set up Supertonic TTS.");
|
|
508780
|
-
|
|
508995
|
+
execFileSync4(py, ["-m", "venv", join58(voiceDir(), "supertonic3-venv")], { stdio: "pipe", timeout: 18e4 });
|
|
508781
508996
|
}
|
|
508782
508997
|
try {
|
|
508783
|
-
|
|
508998
|
+
execFileSync4(venvPy, ["-c", "import supertonic"], { stdio: "pipe", timeout: 1e4 });
|
|
508784
508999
|
} catch {
|
|
508785
|
-
|
|
508786
|
-
|
|
509000
|
+
execFileSync4(venvPy, ["-m", "pip", "install", "--quiet", "--upgrade", "pip"], { stdio: "pipe", timeout: 12e4 });
|
|
509001
|
+
execFileSync4(venvPy, ["-m", "pip", "install", "--quiet", "supertonic"], { stdio: "pipe", timeout: 6e5 });
|
|
508787
509002
|
}
|
|
508788
509003
|
mkdirSync17(voiceDir(), { recursive: true });
|
|
508789
|
-
|
|
509004
|
+
writeFileSync15(supertonicInferScript(), SUPERTONIC_INFER_PY, "utf-8");
|
|
508790
509005
|
return venvPy;
|
|
508791
509006
|
}
|
|
508792
509007
|
function ensureMlxInstalled() {
|
|
@@ -508798,19 +509013,19 @@ function ensureMlxInstalled() {
|
|
|
508798
509013
|
const py = findPython32();
|
|
508799
509014
|
if (!py)
|
|
508800
509015
|
throw new Error("python3 is required to set up MLX Audio.");
|
|
508801
|
-
|
|
509016
|
+
execFileSync4(py, ["-m", "venv", join58(voiceDir(), "mlx-venv")], { stdio: "pipe", timeout: 18e4 });
|
|
508802
509017
|
}
|
|
508803
509018
|
try {
|
|
508804
|
-
|
|
509019
|
+
execFileSync4(venvPy, ["-c", "import mlx_audio"], { stdio: "pipe", timeout: 1e4 });
|
|
508805
509020
|
} catch {
|
|
508806
|
-
|
|
508807
|
-
|
|
509021
|
+
execFileSync4(venvPy, ["-m", "pip", "install", "--quiet", "--upgrade", "pip"], { stdio: "pipe", timeout: 12e4 });
|
|
509022
|
+
execFileSync4(venvPy, ["-m", "pip", "install", "--quiet", "mlx-audio"], { stdio: "pipe", timeout: 6e5 });
|
|
508808
509023
|
}
|
|
508809
509024
|
return venvPy;
|
|
508810
509025
|
}
|
|
508811
509026
|
function pythonCanImportLuxTts(venvPy) {
|
|
508812
509027
|
try {
|
|
508813
|
-
|
|
509028
|
+
execFileSync4(venvPy, [
|
|
508814
509029
|
"-c",
|
|
508815
509030
|
"import sys, os; sys.path.insert(0, os.environ['LUXTTS_REPO_PATH']); from zipvoice.luxvoice import LuxTTS; print('ok')"
|
|
508816
509031
|
], {
|
|
@@ -508824,7 +509039,7 @@ function pythonCanImportLuxTts(venvPy) {
|
|
|
508824
509039
|
}
|
|
508825
509040
|
}
|
|
508826
509041
|
function pipInstall(venvPy, packages, timeout2 = 9e5) {
|
|
508827
|
-
|
|
509042
|
+
execFileSync4(venvPy, ["-m", "pip", "install", "--prefer-binary", ...packages], {
|
|
508828
509043
|
stdio: "pipe",
|
|
508829
509044
|
timeout: timeout2,
|
|
508830
509045
|
env: process.env
|
|
@@ -508835,16 +509050,16 @@ function ensureLuxttsInstalled() {
|
|
|
508835
509050
|
const repoDir = luxttsRepoDir();
|
|
508836
509051
|
mkdirSync17(voiceDir(), { recursive: true });
|
|
508837
509052
|
if (existsSync40(venvPy) && existsSync40(join58(repoDir, "zipvoice", "luxvoice.py")) && pythonCanImportLuxTts(venvPy)) {
|
|
508838
|
-
|
|
509053
|
+
writeFileSync15(luxttsInferScript(), LUXTTS_DAEMON_PY, "utf-8");
|
|
508839
509054
|
return venvPy;
|
|
508840
509055
|
}
|
|
508841
509056
|
const py = findPython32();
|
|
508842
509057
|
if (!py)
|
|
508843
509058
|
throw new Error("python3 is required to set up LuxTTS voice cloning.");
|
|
508844
509059
|
if (!existsSync40(venvPy)) {
|
|
508845
|
-
|
|
509060
|
+
execFileSync4(py, ["-m", "venv", luxttsVenvDir()], { stdio: "pipe", timeout: 18e4 });
|
|
508846
509061
|
}
|
|
508847
|
-
|
|
509062
|
+
execFileSync4(venvPy, ["-m", "pip", "install", "--upgrade", "pip", "wheel", "setuptools<81"], {
|
|
508848
509063
|
stdio: "pipe",
|
|
508849
509064
|
timeout: 3e5
|
|
508850
509065
|
});
|
|
@@ -508852,7 +509067,7 @@ function ensureLuxttsInstalled() {
|
|
|
508852
509067
|
if (!existsSync40(join58(repoDir, "zipvoice", "luxvoice.py"))) {
|
|
508853
509068
|
if (!hasCommand3("git"))
|
|
508854
509069
|
throw new Error("git is required to set up LuxTTS voice cloning.");
|
|
508855
|
-
|
|
509070
|
+
execFileSync4("git", ["clone", "--depth", "1", "https://github.com/ysharma3501/LuxTTS.git", repoDir], {
|
|
508856
509071
|
stdio: "pipe",
|
|
508857
509072
|
timeout: 3e5
|
|
508858
509073
|
});
|
|
@@ -508877,7 +509092,7 @@ function ensureLuxttsInstalled() {
|
|
|
508877
509092
|
} catch {
|
|
508878
509093
|
}
|
|
508879
509094
|
pipInstall(venvPy, ["-e", repoDir], 6e5);
|
|
508880
|
-
|
|
509095
|
+
writeFileSync15(luxttsInferScript(), LUXTTS_DAEMON_PY, "utf-8");
|
|
508881
509096
|
if (!pythonCanImportLuxTts(venvPy)) {
|
|
508882
509097
|
throw new Error(`LuxTTS setup completed but import still fails in ${luxttsVenvDir()}.`);
|
|
508883
509098
|
}
|
|
@@ -508892,10 +509107,10 @@ function ensurePiperInstalled() {
|
|
|
508892
509107
|
if (!py)
|
|
508893
509108
|
throw new Error("python3 is required to set up Piper TTS.");
|
|
508894
509109
|
mkdirSync17(voiceDir(), { recursive: true });
|
|
508895
|
-
|
|
509110
|
+
execFileSync4(py, ["-m", "venv", piperVenvDir()], { stdio: "pipe", timeout: 18e4 });
|
|
508896
509111
|
const venvPy = process.platform === "win32" ? join58(piperVenvDir(), "Scripts", "python.exe") : join58(piperVenvDir(), "bin", "python3");
|
|
508897
|
-
|
|
508898
|
-
|
|
509112
|
+
execFileSync4(venvPy, ["-m", "pip", "install", "--quiet", "--upgrade", "pip"], { stdio: "pipe", timeout: 12e4 });
|
|
509113
|
+
execFileSync4(venvPy, ["-m", "pip", "install", "--quiet", "piper-tts"], { stdio: "pipe", timeout: 6e5 });
|
|
508899
509114
|
}
|
|
508900
509115
|
if (!existsSync40(bin)) {
|
|
508901
509116
|
throw new Error("Piper TTS installed but the piper executable was not found in the managed venv.");
|
|
@@ -509425,7 +509640,7 @@ ${tried.map((line) => `- ${line}`).join("\n")}`,
|
|
|
509425
509640
|
"d=(np.clip(wav.cpu().numpy().squeeze(), -1, 1)*32767).astype(np.int16)",
|
|
509426
509641
|
"f=wave.open(args['output'], 'wb'); f.setnchannels(1); f.setsampwidth(2); f.setframerate(48000); f.writeframes(d.tobytes()); f.close()"
|
|
509427
509642
|
].join("; ");
|
|
509428
|
-
|
|
509643
|
+
execFileSync4(venvPy, ["-c", pyScript, JSON.stringify({ text, output: outputPath2, clone_ref: cloneRef, repo: repoDir, speed })], {
|
|
509429
509644
|
stdio: "pipe",
|
|
509430
509645
|
timeout: 12e4,
|
|
509431
509646
|
env: { ...process.env, LUXTTS_REPO_PATH: repoDir }
|
|
@@ -509438,7 +509653,7 @@ ${tried.map((line) => `- ${line}`).join("\n")}`,
|
|
|
509438
509653
|
const lang = typeof args["lang"] === "string" ? args["lang"] : "en";
|
|
509439
509654
|
const speed = numberArg3(args["speed"], 1.05);
|
|
509440
509655
|
const totalStep = Math.round(numberArg3(args["total_step"], 8));
|
|
509441
|
-
const stdout =
|
|
509656
|
+
const stdout = execFileSync4(venvPy, [supertonicInferScript()], {
|
|
509442
509657
|
input: JSON.stringify({ text, output_path: outputPath2, voice_name: voice, lang, speed, total_step: totalStep }),
|
|
509443
509658
|
encoding: "utf8",
|
|
509444
509659
|
stdio: ["pipe", "pipe", "pipe"],
|
|
@@ -509461,7 +509676,7 @@ ${tried.map((line) => `- ${line}`).join("\n")}`,
|
|
|
509461
509676
|
"args=json.loads(sys.argv[1])",
|
|
509462
509677
|
"tts_gen.main(['--model', args['model'], '--text', args['text'], '--voice', args['voice'], '--lang_code', args['lang'], '--audio_path', args['output']])"
|
|
509463
509678
|
].join("; ");
|
|
509464
|
-
|
|
509679
|
+
execFileSync4(py, ["-c", pyScript, JSON.stringify({ text, model, voice, lang, output: outputPath2 })], {
|
|
509465
509680
|
stdio: "pipe",
|
|
509466
509681
|
timeout: 18e4,
|
|
509467
509682
|
cwd: tmpdir11()
|
|
@@ -509482,7 +509697,7 @@ ${tried.map((line) => `- ${line}`).join("\n")}`,
|
|
|
509482
509697
|
} else {
|
|
509483
509698
|
throw new Error(`${requireModel ? "Raw ONNX" : "Piper"} TTS requires model=<path.onnx> or voice=<path.onnx>.`);
|
|
509484
509699
|
}
|
|
509485
|
-
|
|
509700
|
+
execFileSync4(piper, argv, { input: text, stdio: ["pipe", "pipe", "pipe"], timeout: 12e4 });
|
|
509486
509701
|
return summary;
|
|
509487
509702
|
}
|
|
509488
509703
|
synthesizeEspeak(text, outputPath2, args) {
|
|
@@ -509490,7 +509705,7 @@ ${tried.map((line) => `- ${line}`).join("\n")}`,
|
|
|
509490
509705
|
throw new Error("Local fallback TTS command not found.");
|
|
509491
509706
|
const voice = typeof args["voice"] === "string" ? args["voice"] : "en";
|
|
509492
509707
|
const speed = Math.round(numberArg3(args["speed"], 160));
|
|
509493
|
-
|
|
509708
|
+
execFileSync4("espeak-ng", ["-v", voice, "-s", String(speed), "-w", outputPath2, text], {
|
|
509494
509709
|
stdio: "pipe",
|
|
509495
509710
|
timeout: 6e4
|
|
509496
509711
|
});
|
|
@@ -510861,7 +511076,7 @@ ${result.trim()}`, durationMs: performance.now() - start2 };
|
|
|
510861
511076
|
|
|
510862
511077
|
// packages/execution/dist/tools/audio-analyze.js
|
|
510863
511078
|
import { execSync as execSync35 } from "node:child_process";
|
|
510864
|
-
import { existsSync as existsSync43, mkdirSync as mkdirSync19, writeFileSync as
|
|
511079
|
+
import { existsSync as existsSync43, mkdirSync as mkdirSync19, writeFileSync as writeFileSync16, readFileSync as readFileSync32 } from "node:fs";
|
|
510865
511080
|
import { join as join60 } from "node:path";
|
|
510866
511081
|
import { homedir as homedir15, tmpdir as tmpdir13 } from "node:os";
|
|
510867
511082
|
var VENV_DIR, VENV_PIP, VENV_PYTHON, AudioAnalyzeTool;
|
|
@@ -511122,7 +511337,7 @@ except Exception as e:
|
|
|
511122
511337
|
spectrum: spectrumResult.success ? spectrumResult.output : "unknown"
|
|
511123
511338
|
};
|
|
511124
511339
|
const contextFile = join60(contextDir, "latest.json");
|
|
511125
|
-
|
|
511340
|
+
writeFileSync16(contextFile, JSON.stringify(context2, null, 2));
|
|
511126
511341
|
return {
|
|
511127
511342
|
success: true,
|
|
511128
511343
|
output: `Audio context captured (${duration}s):
|
|
@@ -511174,7 +511389,7 @@ Context saved to: ${contextFile}`,
|
|
|
511174
511389
|
/** Run a Python script in the venv and parse JSON output */
|
|
511175
511390
|
runPythonScript(script, start2, label) {
|
|
511176
511391
|
const scriptFile = join60(tmpdir13(), `omnius-audio-${Date.now()}.py`);
|
|
511177
|
-
|
|
511392
|
+
writeFileSync16(scriptFile, script);
|
|
511178
511393
|
try {
|
|
511179
511394
|
const output = execSync35(`${VENV_PYTHON} ${scriptFile}`, {
|
|
511180
511395
|
encoding: "utf8",
|
|
@@ -511208,7 +511423,7 @@ ${output}`, durationMs: performance.now() - start2 };
|
|
|
511208
511423
|
|
|
511209
511424
|
// packages/execution/dist/tools/gps-location.js
|
|
511210
511425
|
import { execSync as execSync36, spawnSync as spawnSync4 } from "node:child_process";
|
|
511211
|
-
import { existsSync as existsSync44, readFileSync as readFileSync33, writeFileSync as
|
|
511426
|
+
import { existsSync as existsSync44, readFileSync as readFileSync33, writeFileSync as writeFileSync17, mkdirSync as mkdirSync20 } from "node:fs";
|
|
511212
511427
|
import { join as join61 } from "node:path";
|
|
511213
511428
|
import { tmpdir as tmpdir14, homedir as homedir16 } from "node:os";
|
|
511214
511429
|
var GPS_USB_IDS, GpsLocationTool;
|
|
@@ -511336,7 +511551,7 @@ var init_gps_location = __esm({
|
|
|
511336
511551
|
async runGpsPython(script, timeoutMs = 3e4) {
|
|
511337
511552
|
await this.ensureGpsVenv();
|
|
511338
511553
|
const scriptFile = join61(tmpdir14(), `omnius-gps-${Date.now()}.py`);
|
|
511339
|
-
|
|
511554
|
+
writeFileSync17(scriptFile, script);
|
|
511340
511555
|
try {
|
|
511341
511556
|
const output = execSync36(`${this.GPS_PYTHON} ${scriptFile}`, {
|
|
511342
511557
|
encoding: "utf8",
|
|
@@ -512012,7 +512227,7 @@ ${content.slice(0, 500)}`,
|
|
|
512012
512227
|
|
|
512013
512228
|
// packages/execution/dist/tools/visual-memory.js
|
|
512014
512229
|
import { execSync as execSync37 } from "node:child_process";
|
|
512015
|
-
import { existsSync as existsSync45, mkdirSync as mkdirSync21, writeFileSync as
|
|
512230
|
+
import { existsSync as existsSync45, mkdirSync as mkdirSync21, writeFileSync as writeFileSync18, readFileSync as readFileSync34 } from "node:fs";
|
|
512016
512231
|
import { join as join62 } from "node:path";
|
|
512017
512232
|
import { homedir as homedir17, tmpdir as tmpdir15 } from "node:os";
|
|
512018
512233
|
var VMEM_DIR, VENV_DIR2, VENV_PY, VENV_PIP2, VisualMemoryTool;
|
|
@@ -512503,7 +512718,7 @@ ${objects.join("\n") || " (none taught)"}`,
|
|
|
512503
512718
|
const db = JSON.parse(readFileSync34(path11, "utf8"));
|
|
512504
512719
|
if (id in db) {
|
|
512505
512720
|
delete db[id];
|
|
512506
|
-
|
|
512721
|
+
writeFileSync18(path11, JSON.stringify(db));
|
|
512507
512722
|
removed = true;
|
|
512508
512723
|
}
|
|
512509
512724
|
} catch {
|
|
@@ -512541,7 +512756,7 @@ ${objects.join("\n") || " (none taught)"}`,
|
|
|
512541
512756
|
}
|
|
512542
512757
|
async runVisionPython(script, timeoutMs = 6e4) {
|
|
512543
512758
|
const scriptFile = join62(tmpdir15(), `omnius-vmem-${Date.now()}.py`);
|
|
512544
|
-
|
|
512759
|
+
writeFileSync18(scriptFile, script);
|
|
512545
512760
|
try {
|
|
512546
512761
|
const output = execSync37(`${VENV_PY} ${scriptFile}`, {
|
|
512547
512762
|
encoding: "utf8",
|
|
@@ -512572,7 +512787,7 @@ ${objects.join("\n") || " (none taught)"}`,
|
|
|
512572
512787
|
|
|
512573
512788
|
// packages/execution/dist/tools/multimodal-memory.js
|
|
512574
512789
|
import { execSync as execSync38 } from "node:child_process";
|
|
512575
|
-
import { existsSync as existsSync46, mkdirSync as mkdirSync22, writeFileSync as
|
|
512790
|
+
import { existsSync as existsSync46, mkdirSync as mkdirSync22, writeFileSync as writeFileSync19, readFileSync as readFileSync35, readdirSync as readdirSync15 } from "node:fs";
|
|
512576
512791
|
import { join as join63 } from "node:path";
|
|
512577
512792
|
import { homedir as homedir18, tmpdir as tmpdir16 } from "node:os";
|
|
512578
512793
|
import { randomUUID as randomUUID2 } from "node:crypto";
|
|
@@ -512683,7 +512898,7 @@ with torch.no_grad():
|
|
|
512683
512898
|
print(json.dumps(features[0].cpu().numpy().tolist()))
|
|
512684
512899
|
`;
|
|
512685
512900
|
const scriptFile = join63(tmpdir16(), `mm-clip-${Date.now()}.py`);
|
|
512686
|
-
|
|
512901
|
+
writeFileSync19(scriptFile, clipScript);
|
|
512687
512902
|
const clipOutput = execSync38(`${venvPy} ${scriptFile}`, { encoding: "utf8", timeout: 12e4, env: { ...process.env, PYTHONUNBUFFERED: "1" } });
|
|
512688
512903
|
const embedding = JSON.parse(clipOutput.trim().split("\n").pop());
|
|
512689
512904
|
episode.visual.clipEmbedding = embedding;
|
|
@@ -512705,7 +512920,7 @@ result = [{"confidence": float(f.det_score), "age": int(f.age) if hasattr(f, 'ag
|
|
|
512705
512920
|
print(json.dumps(result))
|
|
512706
512921
|
`;
|
|
512707
512922
|
const scriptFile = join63(tmpdir16(), `mm-face-${Date.now()}.py`);
|
|
512708
|
-
|
|
512923
|
+
writeFileSync19(scriptFile, faceScript);
|
|
512709
512924
|
const faceOutput = execSync38(`${venvPy} ${scriptFile}`, { encoding: "utf8", timeout: 6e4, env: { ...process.env, PYTHONUNBUFFERED: "1" } });
|
|
512710
512925
|
const faces = JSON.parse(faceOutput.trim().split("\n").pop());
|
|
512711
512926
|
episode.visual.faceIds = faces.map((_, i2) => `face_${i2}`);
|
|
@@ -512757,7 +512972,7 @@ top=scores.numpy().mean(axis=0).argsort()[-1]
|
|
|
512757
512972
|
print(classes[top])
|
|
512758
512973
|
`;
|
|
512759
512974
|
const scriptFile = join63(tmpdir16(), `mm-yamnet-${Date.now()}.py`);
|
|
512760
|
-
|
|
512975
|
+
writeFileSync19(scriptFile, classifyScript);
|
|
512761
512976
|
const soundClass = execSync38(`${mlVenvPy} ${scriptFile}`, { encoding: "utf8", timeout: 12e4 }).trim().split("\n").pop();
|
|
512762
512977
|
episode.audio.soundClass = soundClass;
|
|
512763
512978
|
results.push(`Sound: ${soundClass}`);
|
|
@@ -512853,7 +513068,7 @@ else:
|
|
|
512853
513068
|
print(json.dumps({"enrolled": False, "reason": "no face detected"}))
|
|
512854
513069
|
`;
|
|
512855
513070
|
const scriptFile = join63(tmpdir16(), `mm-enroll-${Date.now()}.py`);
|
|
512856
|
-
|
|
513071
|
+
writeFileSync19(scriptFile, enrollScript);
|
|
512857
513072
|
const enrollOutput = execSync38(`${venvPy} ${scriptFile}`, { encoding: "utf8", timeout: 6e4, env: { ...process.env, PYTHONUNBUFFERED: "1" } });
|
|
512858
513073
|
const enrollResult = JSON.parse(enrollOutput.trim().split("\n").pop());
|
|
512859
513074
|
if (enrollResult.enrolled) {
|
|
@@ -512908,7 +513123,7 @@ with torch.no_grad():
|
|
|
512908
513123
|
print(json.dumps(features[0].cpu().numpy().tolist()))
|
|
512909
513124
|
`;
|
|
512910
513125
|
const scriptFile = join63(tmpdir16(), `mm-clipq-${Date.now()}.py`);
|
|
512911
|
-
|
|
513126
|
+
writeFileSync19(scriptFile, clipTextScript);
|
|
512912
513127
|
const output = execSync38(`${venvPy} ${scriptFile}`, { encoding: "utf8", timeout: 6e4, env: { ...process.env, PYTHONUNBUFFERED: "1" } });
|
|
512913
513128
|
queryClipEmbedding = JSON.parse(output.trim().split("\n").pop());
|
|
512914
513129
|
}
|
|
@@ -513022,7 +513237,7 @@ ${lines.join("\n")}`,
|
|
|
513022
513237
|
// =========================================================================
|
|
513023
513238
|
saveEpisode(episode) {
|
|
513024
513239
|
const episodeFile = join63(MM_DIR, episode.id, "episode.json");
|
|
513025
|
-
|
|
513240
|
+
writeFileSync19(episodeFile, JSON.stringify(episode, null, 2));
|
|
513026
513241
|
let index = [];
|
|
513027
513242
|
try {
|
|
513028
513243
|
index = JSON.parse(readFileSync35(MM_INDEX, "utf8"));
|
|
@@ -513034,7 +513249,7 @@ ${lines.join("\n")}`,
|
|
|
513034
513249
|
timestamp: episode.timestamp,
|
|
513035
513250
|
summary: episode.text?.content?.slice(0, 100) || "episode"
|
|
513036
513251
|
});
|
|
513037
|
-
|
|
513252
|
+
writeFileSync19(MM_INDEX, JSON.stringify(index, null, 2));
|
|
513038
513253
|
}
|
|
513039
513254
|
/**
|
|
513040
513255
|
* WO-AM-GAP-02: Bridge multimodal episode to SQLite EpisodeStore + TemporalGraph.
|
|
@@ -513157,14 +513372,14 @@ ${lines.join("\n")}`,
|
|
|
513157
513372
|
|
|
513158
513373
|
// packages/execution/dist/tools/asr-listen.js
|
|
513159
513374
|
import { execSync as execSync39, spawnSync as spawnSync5 } from "node:child_process";
|
|
513160
|
-
import { existsSync as existsSync47, mkdirSync as mkdirSync23, writeFileSync as
|
|
513161
|
-
import { dirname as
|
|
513375
|
+
import { existsSync as existsSync47, mkdirSync as mkdirSync23, writeFileSync as writeFileSync20, readFileSync as readFileSync36, unlinkSync as unlinkSync9 } from "node:fs";
|
|
513376
|
+
import { dirname as dirname15, join as join64, resolve as resolve32 } from "node:path";
|
|
513162
513377
|
import { tmpdir as tmpdir17, homedir as homedir19 } from "node:os";
|
|
513163
513378
|
import { fileURLToPath as fileURLToPath8 } from "node:url";
|
|
513164
513379
|
function _findNemotronScript() {
|
|
513165
513380
|
const candidates = [];
|
|
513166
513381
|
try {
|
|
513167
|
-
const here =
|
|
513382
|
+
const here = dirname15(fileURLToPath8(import.meta.url));
|
|
513168
513383
|
candidates.push(resolve32(here, "../../scripts/live-nemotron.py"));
|
|
513169
513384
|
candidates.push(resolve32(here, "../../../scripts/live-nemotron.py"));
|
|
513170
513385
|
} catch {
|
|
@@ -513405,7 +513620,7 @@ except Exception:
|
|
|
513405
513620
|
print(json.dumps({"ok": False, "error": "No whisper backend available"}))
|
|
513406
513621
|
`;
|
|
513407
513622
|
const scriptFile = join64(tmpdir17(), `omnius-asr-whisper-${Date.now()}.py`);
|
|
513408
|
-
|
|
513623
|
+
writeFileSync20(scriptFile, whisperScript);
|
|
513409
513624
|
const pyPaths = [
|
|
513410
513625
|
join64(homedir19(), ".omnius", "venv", "bin", "python3"),
|
|
513411
513626
|
"python3",
|
|
@@ -514976,8 +515191,8 @@ var init_client3 = __esm({
|
|
|
514976
515191
|
});
|
|
514977
515192
|
|
|
514978
515193
|
// packages/execution/dist/mcp/manager.js
|
|
514979
|
-
import { existsSync as existsSync49, readFileSync as readFileSync37, writeFileSync as
|
|
514980
|
-
import { join as join66, dirname as
|
|
515194
|
+
import { existsSync as existsSync49, readFileSync as readFileSync37, writeFileSync as writeFileSync21, mkdirSync as mkdirSync25 } from "node:fs";
|
|
515195
|
+
import { join as join66, dirname as dirname16 } from "node:path";
|
|
514981
515196
|
import { homedir as homedir20 } from "node:os";
|
|
514982
515197
|
function loadMcpConfig(repoRoot) {
|
|
514983
515198
|
const servers = {};
|
|
@@ -515040,8 +515255,8 @@ function saveMcpServerToConfig(repoRoot, serverName, config, scope = "project")
|
|
|
515040
515255
|
}
|
|
515041
515256
|
}
|
|
515042
515257
|
existing.mcpServers[serverName] = config;
|
|
515043
|
-
mkdirSync25(
|
|
515044
|
-
|
|
515258
|
+
mkdirSync25(dirname16(path11), { recursive: true });
|
|
515259
|
+
writeFileSync21(path11, JSON.stringify(existing, null, 2) + "\n");
|
|
515045
515260
|
return path11;
|
|
515046
515261
|
}
|
|
515047
515262
|
function removeMcpServerFromConfig(repoRoot, serverName, scope = "project") {
|
|
@@ -515057,7 +515272,7 @@ function removeMcpServerFromConfig(repoRoot, serverName, scope = "project") {
|
|
|
515057
515272
|
if (!cfg.mcpServers || !cfg.mcpServers[serverName])
|
|
515058
515273
|
return false;
|
|
515059
515274
|
delete cfg.mcpServers[serverName];
|
|
515060
|
-
|
|
515275
|
+
writeFileSync21(path11, JSON.stringify(cfg, null, 2) + "\n");
|
|
515061
515276
|
return true;
|
|
515062
515277
|
}
|
|
515063
515278
|
var McpManager;
|
|
@@ -515746,7 +515961,7 @@ var init_plugin_system = __esm({
|
|
|
515746
515961
|
});
|
|
515747
515962
|
|
|
515748
515963
|
// packages/execution/dist/tools/notebook-edit.js
|
|
515749
|
-
import { readFileSync as readFileSync39, writeFileSync as
|
|
515964
|
+
import { readFileSync as readFileSync39, writeFileSync as writeFileSync22, existsSync as existsSync51 } from "node:fs";
|
|
515750
515965
|
function readNotebook(path11) {
|
|
515751
515966
|
if (!existsSync51(path11))
|
|
515752
515967
|
return `File not found: ${path11}`;
|
|
@@ -515763,7 +515978,7 @@ function readNotebook(path11) {
|
|
|
515763
515978
|
}
|
|
515764
515979
|
}
|
|
515765
515980
|
function writeNotebook(path11, nb) {
|
|
515766
|
-
|
|
515981
|
+
writeFileSync22(path11, JSON.stringify(nb, null, 1) + "\n", "utf8");
|
|
515767
515982
|
}
|
|
515768
515983
|
function sourceToLines(source) {
|
|
515769
515984
|
const lines = source.split("\n");
|
|
@@ -516050,7 +516265,7 @@ var init_environment_snapshot = __esm({
|
|
|
516050
516265
|
|
|
516051
516266
|
// packages/execution/dist/tools/video-understand.js
|
|
516052
516267
|
import { execSync as execSync42 } from "node:child_process";
|
|
516053
|
-
import { existsSync as existsSync52, mkdirSync as mkdirSync26, writeFileSync as
|
|
516268
|
+
import { existsSync as existsSync52, mkdirSync as mkdirSync26, writeFileSync as writeFileSync23, readFileSync as readFileSync40, readdirSync as readdirSync17, unlinkSync as unlinkSync10 } from "node:fs";
|
|
516054
516269
|
import { join as join68, basename as basename15 } from "node:path";
|
|
516055
516270
|
import { createHash as createHash8 } from "node:crypto";
|
|
516056
516271
|
function isYouTubeUrl2(url) {
|
|
@@ -516220,7 +516435,7 @@ var init_video_understand = __esm({
|
|
|
516220
516435
|
for (const frame of frames.filter((f2) => !f2.isDuplicate)) {
|
|
516221
516436
|
const dest = join68(permanentDir, basename15(frame.path));
|
|
516222
516437
|
try {
|
|
516223
|
-
|
|
516438
|
+
writeFileSync23(dest, readFileSync40(frame.path));
|
|
516224
516439
|
frame.path = dest;
|
|
516225
516440
|
} catch {
|
|
516226
516441
|
}
|
|
@@ -516257,7 +516472,7 @@ var init_video_understand = __esm({
|
|
|
516257
516472
|
};
|
|
516258
516473
|
const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").slice(0, 19);
|
|
516259
516474
|
const resultFile = join68(outDir, `understanding-${timestamp}.json`);
|
|
516260
|
-
|
|
516475
|
+
writeFileSync23(resultFile, JSON.stringify(result, null, 2), "utf-8");
|
|
516261
516476
|
try {
|
|
516262
516477
|
const memDir = join68(this.workingDir, ".omnius", "memory");
|
|
516263
516478
|
mkdirSync26(memDir, { recursive: true });
|
|
@@ -516280,7 +516495,7 @@ var init_video_understand = __esm({
|
|
|
516280
516495
|
});
|
|
516281
516496
|
if (indexEntries.length > 30)
|
|
516282
516497
|
indexEntries = indexEntries.slice(-30);
|
|
516283
|
-
|
|
516498
|
+
writeFileSync23(indexFile, JSON.stringify(indexEntries, null, 2), "utf-8");
|
|
516284
516499
|
const CHUNK_WINDOW = 30;
|
|
516285
516500
|
const transcriptFile = join68(memDir, "video-transcripts.json");
|
|
516286
516501
|
let transcriptEntries = {};
|
|
@@ -516311,7 +516526,7 @@ var init_video_understand = __esm({
|
|
|
516311
516526
|
Topic: ${segments.slice(0, 5).map((s2) => s2.text).join(" ").slice(0, 300)}`,
|
|
516312
516527
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
516313
516528
|
};
|
|
516314
|
-
|
|
516529
|
+
writeFileSync23(transcriptFile, JSON.stringify(transcriptEntries, null, 2), "utf-8");
|
|
516315
516530
|
} catch {
|
|
516316
516531
|
}
|
|
516317
516532
|
const lines = [];
|
|
@@ -516609,8 +516824,8 @@ var init_gitWorktree = __esm({
|
|
|
516609
516824
|
});
|
|
516610
516825
|
|
|
516611
516826
|
// packages/execution/dist/patchApplier.js
|
|
516612
|
-
import { readFileSync as readFileSync42, writeFileSync as
|
|
516613
|
-
import { dirname as
|
|
516827
|
+
import { readFileSync as readFileSync42, writeFileSync as writeFileSync24, existsSync as existsSync54, mkdirSync as mkdirSync27 } from "node:fs";
|
|
516828
|
+
import { dirname as dirname17 } from "node:path";
|
|
516614
516829
|
import { spawn as spawn20 } from "node:child_process";
|
|
516615
516830
|
async function applyPatch(patch) {
|
|
516616
516831
|
switch (patch.type) {
|
|
@@ -516630,17 +516845,17 @@ function applyBlockReplace(patch) {
|
|
|
516630
516845
|
throw new Error(`Block not found in "${patch.filePath}": the oldContent string was not found in the file.`);
|
|
516631
516846
|
}
|
|
516632
516847
|
const updated = original.replace(patch.oldContent, patch.newContent);
|
|
516633
|
-
|
|
516848
|
+
writeFileSync24(patch.filePath, updated, "utf-8");
|
|
516634
516849
|
}
|
|
516635
516850
|
function applyRewrite(patch) {
|
|
516636
|
-
|
|
516851
|
+
writeFileSync24(patch.filePath, patch.newContent, "utf-8");
|
|
516637
516852
|
}
|
|
516638
516853
|
function applyNewFile(patch) {
|
|
516639
516854
|
if (existsSync54(patch.filePath)) {
|
|
516640
516855
|
throw new Error(`Cannot create new file: "${patch.filePath}" already exists.`);
|
|
516641
516856
|
}
|
|
516642
|
-
mkdirSync27(
|
|
516643
|
-
|
|
516857
|
+
mkdirSync27(dirname17(patch.filePath), { recursive: true });
|
|
516858
|
+
writeFileSync24(patch.filePath, patch.newContent, "utf-8");
|
|
516644
516859
|
}
|
|
516645
516860
|
async function applyUnifiedDiff(patch) {
|
|
516646
516861
|
const { filePath, diff } = patch;
|
|
@@ -516651,7 +516866,7 @@ async function applyUnifiedDiff(patch) {
|
|
|
516651
516866
|
"-p1",
|
|
516652
516867
|
filePath
|
|
516653
516868
|
],
|
|
516654
|
-
cwd:
|
|
516869
|
+
cwd: dirname17(filePath),
|
|
516655
516870
|
stdin: diff
|
|
516656
516871
|
});
|
|
516657
516872
|
if (!result.success) {
|
|
@@ -516997,7 +517212,7 @@ var init_buildRunner = __esm({
|
|
|
516997
517212
|
});
|
|
516998
517213
|
|
|
516999
517214
|
// packages/execution/dist/constraints.js
|
|
517000
|
-
import { existsSync as existsSync55, readFileSync as readFileSync43, writeFileSync as
|
|
517215
|
+
import { existsSync as existsSync55, readFileSync as readFileSync43, writeFileSync as writeFileSync25, mkdirSync as mkdirSync28 } from "node:fs";
|
|
517001
517216
|
import { join as join70 } from "node:path";
|
|
517002
517217
|
import { homedir as homedir22 } from "node:os";
|
|
517003
517218
|
function loadConstraints(projectRoot) {
|
|
@@ -517029,7 +517244,7 @@ function addProjectConstraint(projectRoot, constraint) {
|
|
|
517029
517244
|
}
|
|
517030
517245
|
data.constraints.push(constraint);
|
|
517031
517246
|
mkdirSync28(join70(projectRoot, ".omnius"), { recursive: true });
|
|
517032
|
-
|
|
517247
|
+
writeFileSync25(path11, JSON.stringify(data, null, 2), "utf-8");
|
|
517033
517248
|
projectConstraints = data.constraints;
|
|
517034
517249
|
}
|
|
517035
517250
|
function getAllConstraints() {
|
|
@@ -518378,7 +518593,7 @@ var init_dist6 = __esm({
|
|
|
518378
518593
|
|
|
518379
518594
|
// packages/orchestrator/dist/promptLoader.js
|
|
518380
518595
|
import { readFileSync as readFileSync44, existsSync as existsSync56 } from "node:fs";
|
|
518381
|
-
import { join as join71, dirname as
|
|
518596
|
+
import { join as join71, dirname as dirname18 } from "node:path";
|
|
518382
518597
|
import { fileURLToPath as fileURLToPath9 } from "node:url";
|
|
518383
518598
|
function loadPrompt(promptPath, vars) {
|
|
518384
518599
|
let content = cache5.get(promptPath);
|
|
@@ -518399,7 +518614,7 @@ var init_promptLoader = __esm({
|
|
|
518399
518614
|
"packages/orchestrator/dist/promptLoader.js"() {
|
|
518400
518615
|
"use strict";
|
|
518401
518616
|
__filename3 = fileURLToPath9(import.meta.url);
|
|
518402
|
-
__dirname5 =
|
|
518617
|
+
__dirname5 = dirname18(__filename3);
|
|
518403
518618
|
PROMPTS_DIR = join71(__dirname5, "..", "prompts");
|
|
518404
518619
|
cache5 = /* @__PURE__ */ new Map();
|
|
518405
518620
|
}
|
|
@@ -520129,7 +520344,7 @@ var init_artifact_inspector = __esm({
|
|
|
520129
520344
|
|
|
520130
520345
|
// packages/orchestrator/dist/lesson-bank.js
|
|
520131
520346
|
import { existsSync as existsSync58, mkdirSync as mkdirSync29, appendFileSync as appendFileSync2, readFileSync as readFileSync45 } from "node:fs";
|
|
520132
|
-
import { join as join72, dirname as
|
|
520347
|
+
import { join as join72, dirname as dirname19 } from "node:path";
|
|
520133
520348
|
import { createHash as createHash9 } from "node:crypto";
|
|
520134
520349
|
function tokenize2(text) {
|
|
520135
520350
|
if (!text)
|
|
@@ -520166,7 +520381,7 @@ function lessonBankPath(workingDir) {
|
|
|
520166
520381
|
}
|
|
520167
520382
|
function bank(lesson, workingDir) {
|
|
520168
520383
|
const path11 = lessonBankPath(workingDir);
|
|
520169
|
-
mkdirSync29(
|
|
520384
|
+
mkdirSync29(dirname19(path11), { recursive: true });
|
|
520170
520385
|
appendFileSync2(path11, JSON.stringify(lesson) + "\n", "utf-8");
|
|
520171
520386
|
}
|
|
520172
520387
|
function readAll(workingDir) {
|
|
@@ -520231,8 +520446,8 @@ var init_lesson_bank = __esm({
|
|
|
520231
520446
|
});
|
|
520232
520447
|
|
|
520233
520448
|
// packages/orchestrator/dist/intervention-replay.js
|
|
520234
|
-
import { existsSync as existsSync59, mkdirSync as mkdirSync30, readFileSync as readFileSync46, writeFileSync as
|
|
520235
|
-
import { join as join73, dirname as
|
|
520449
|
+
import { existsSync as existsSync59, mkdirSync as mkdirSync30, readFileSync as readFileSync46, writeFileSync as writeFileSync26, readdirSync as readdirSync18 } from "node:fs";
|
|
520450
|
+
import { join as join73, dirname as dirname20 } from "node:path";
|
|
520236
520451
|
function checkpointDir2(workingDir) {
|
|
520237
520452
|
return workingDir ? join73(workingDir, ".omnius", "checkpoints") : join73(process.env["HOME"] || ".", ".omnius", "checkpoints");
|
|
520238
520453
|
}
|
|
@@ -520249,8 +520464,8 @@ function writeCheckpoint(args) {
|
|
|
520249
520464
|
notes: args.notes
|
|
520250
520465
|
};
|
|
520251
520466
|
const path11 = checkpointPath(args.workingDir, args.turn);
|
|
520252
|
-
mkdirSync30(
|
|
520253
|
-
|
|
520467
|
+
mkdirSync30(dirname20(path11), { recursive: true });
|
|
520468
|
+
writeFileSync26(path11, JSON.stringify(snap), "utf-8");
|
|
520254
520469
|
} catch {
|
|
520255
520470
|
}
|
|
520256
520471
|
}
|
|
@@ -520647,7 +520862,7 @@ var init_world_state_plan_reconciler = __esm({
|
|
|
520647
520862
|
|
|
520648
520863
|
// packages/orchestrator/dist/world-state-drift-detector.js
|
|
520649
520864
|
import { existsSync as existsSync62, readFileSync as readFileSync48, statSync as statSync23 } from "node:fs";
|
|
520650
|
-
import { dirname as
|
|
520865
|
+
import { dirname as dirname21, isAbsolute as isAbsolute4, join as join76, resolve as pathResolve } from "node:path";
|
|
520651
520866
|
function parseImports(source) {
|
|
520652
520867
|
const out = [];
|
|
520653
520868
|
const lines = source.split(/\r?\n/);
|
|
@@ -520845,7 +521060,7 @@ function resolveImportPath2(importingFile, source, workingDir, aliases) {
|
|
|
520845
521060
|
}
|
|
520846
521061
|
if (bestAlias)
|
|
520847
521062
|
resolvedSpec = aliases[bestAlias] + source.slice(bestAlias.length);
|
|
520848
|
-
const importerDir =
|
|
521063
|
+
const importerDir = dirname21(importingFile);
|
|
520849
521064
|
const base3 = resolvedSpec.startsWith(".") ? pathResolve(importerDir, resolvedSpec) : resolvedSpec.startsWith("/") ? resolvedSpec : pathResolve(workingDir, resolvedSpec);
|
|
520850
521065
|
const candidates = [];
|
|
520851
521066
|
for (const ext of FILE_EXTENSIONS)
|
|
@@ -525278,7 +525493,7 @@ var init_splanifold = __esm({
|
|
|
525278
525493
|
});
|
|
525279
525494
|
|
|
525280
525495
|
// packages/memory/dist/embeddingAligner.js
|
|
525281
|
-
import { existsSync as existsSync66, readFileSync as readFileSync50, writeFileSync as
|
|
525496
|
+
import { existsSync as existsSync66, readFileSync as readFileSync50, writeFileSync as writeFileSync27, mkdirSync as mkdirSync33 } from "node:fs";
|
|
525282
525497
|
import { join as join80 } from "node:path";
|
|
525283
525498
|
function computeTopKPCA(sources, mean, srcDim, K2, S) {
|
|
525284
525499
|
const components = new Float64Array(K2 * srcDim);
|
|
@@ -525537,7 +525752,7 @@ var init_embeddingAligner = __esm({
|
|
|
525537
525752
|
const dir = join80(this.persistPath, "..");
|
|
525538
525753
|
if (!existsSync66(dir))
|
|
525539
525754
|
mkdirSync33(dir, { recursive: true });
|
|
525540
|
-
|
|
525755
|
+
writeFileSync27(this.persistPath, JSON.stringify(this.serializeState(), null, 2));
|
|
525541
525756
|
} catch {
|
|
525542
525757
|
}
|
|
525543
525758
|
}
|
|
@@ -525795,7 +526010,7 @@ var init_memory4 = __esm({
|
|
|
525795
526010
|
|
|
525796
526011
|
// packages/memory/dist/crl/config.js
|
|
525797
526012
|
import { join as join81 } from "node:path";
|
|
525798
|
-
import { existsSync as existsSync67, mkdirSync as mkdirSync34, readFileSync as readFileSync51, writeFileSync as
|
|
526013
|
+
import { existsSync as existsSync67, mkdirSync as mkdirSync34, readFileSync as readFileSync51, writeFileSync as writeFileSync28 } from "node:fs";
|
|
525799
526014
|
function getCRLConfigStore(workingDir) {
|
|
525800
526015
|
if (!globalConfigStore) {
|
|
525801
526016
|
const dir = workingDir || process.cwd();
|
|
@@ -525843,7 +526058,7 @@ var init_config5 = __esm({
|
|
|
525843
526058
|
}
|
|
525844
526059
|
}
|
|
525845
526060
|
save() {
|
|
525846
|
-
|
|
526061
|
+
writeFileSync28(this.configPath, JSON.stringify(this.config, null, 2), "utf-8");
|
|
525847
526062
|
}
|
|
525848
526063
|
get() {
|
|
525849
526064
|
return { ...this.config };
|
|
@@ -525887,7 +526102,7 @@ var init_config5 = __esm({
|
|
|
525887
526102
|
|
|
525888
526103
|
// packages/memory/dist/crl/converter.js
|
|
525889
526104
|
import { join as join82 } from "node:path";
|
|
525890
|
-
import { existsSync as existsSync68, mkdirSync as mkdirSync35, readFileSync as readFileSync52, writeFileSync as
|
|
526105
|
+
import { existsSync as existsSync68, mkdirSync as mkdirSync35, readFileSync as readFileSync52, writeFileSync as writeFileSync29, readdirSync as readdirSync20 } from "node:fs";
|
|
525891
526106
|
var BACKUP_DIR, CRLBackupManager, CRLConverter;
|
|
525892
526107
|
var init_converter = __esm({
|
|
525893
526108
|
"packages/memory/dist/crl/converter.js"() {
|
|
@@ -525905,7 +526120,7 @@ var init_converter = __esm({
|
|
|
525905
526120
|
}
|
|
525906
526121
|
backupEpisode(episode) {
|
|
525907
526122
|
const backupFile = join82(this.backupPath, `${episode.id}.json`);
|
|
525908
|
-
|
|
526123
|
+
writeFileSync29(backupFile, JSON.stringify(episode, null, 2), "utf-8");
|
|
525909
526124
|
return backupFile;
|
|
525910
526125
|
}
|
|
525911
526126
|
restoreEpisode(episodeId) {
|
|
@@ -525935,7 +526150,7 @@ var init_converter = __esm({
|
|
|
525935
526150
|
if (file.endsWith(".json")) {
|
|
525936
526151
|
try {
|
|
525937
526152
|
const filePath = join82(this.backupPath, file);
|
|
525938
|
-
|
|
526153
|
+
writeFileSync29(filePath, "", "utf-8");
|
|
525939
526154
|
cleared++;
|
|
525940
526155
|
} catch {
|
|
525941
526156
|
}
|
|
@@ -529488,12 +529703,12 @@ var init_reflectionBuffer = __esm({
|
|
|
529488
529703
|
if (!this.persistPath)
|
|
529489
529704
|
return;
|
|
529490
529705
|
try {
|
|
529491
|
-
const { writeFileSync:
|
|
529706
|
+
const { writeFileSync: writeFileSync70, mkdirSync: mkdirSync77, existsSync: existsSync124 } = __require("node:fs");
|
|
529492
529707
|
const { join: join142 } = __require("node:path");
|
|
529493
529708
|
const dir = join142(this.persistPath, "..");
|
|
529494
529709
|
if (!existsSync124(dir))
|
|
529495
529710
|
mkdirSync77(dir, { recursive: true });
|
|
529496
|
-
|
|
529711
|
+
writeFileSync70(this.persistPath, JSON.stringify(this.state, null, 2));
|
|
529497
529712
|
} catch {
|
|
529498
529713
|
}
|
|
529499
529714
|
}
|
|
@@ -530554,7 +530769,7 @@ var init_hooks = __esm({
|
|
|
530554
530769
|
});
|
|
530555
530770
|
|
|
530556
530771
|
// packages/orchestrator/dist/todo-context-chunker.js
|
|
530557
|
-
import { mkdirSync as mkdirSync38, writeFileSync as
|
|
530772
|
+
import { mkdirSync as mkdirSync38, writeFileSync as writeFileSync32, readFileSync as readFileSync55, existsSync as existsSync71, readdirSync as readdirSync21 } from "node:fs";
|
|
530558
530773
|
import { join as join85 } from "node:path";
|
|
530559
530774
|
function chunkDir(workingDir) {
|
|
530560
530775
|
return join85(workingDir, ".omnius", "todo-chunks");
|
|
@@ -530772,7 +530987,7 @@ function persistTodoChunk(workingDir, chunk) {
|
|
|
530772
530987
|
if (!existsSync71(dir)) {
|
|
530773
530988
|
mkdirSync38(dir, { recursive: true });
|
|
530774
530989
|
}
|
|
530775
|
-
|
|
530990
|
+
writeFileSync32(chunkPath(workingDir, chunk.todoId), JSON.stringify(chunk, null, 2), "utf-8");
|
|
530776
530991
|
}
|
|
530777
530992
|
function loadTodoChunk(workingDir, todoId) {
|
|
530778
530993
|
const p2 = chunkPath(workingDir, todoId);
|
|
@@ -531144,8 +531359,8 @@ var init_streaming_executor = __esm({
|
|
|
531144
531359
|
startExecution(entry) {
|
|
531145
531360
|
entry.state = "executing";
|
|
531146
531361
|
entry.startedAt = Date.now();
|
|
531147
|
-
const
|
|
531148
|
-
entry.promise =
|
|
531362
|
+
const exec4 = this.executeFn;
|
|
531363
|
+
entry.promise = exec4(entry.name, entry.args).then((result) => {
|
|
531149
531364
|
entry.state = "completed";
|
|
531150
531365
|
entry.result = result;
|
|
531151
531366
|
entry.completedAt = Date.now();
|
|
@@ -535548,6 +535763,9 @@ ${blob}
|
|
|
535548
535763
|
_buildToolFingerprint(name10, args) {
|
|
535549
535764
|
return `${name10}:${this._buildExactArgsKey(args)}`;
|
|
535550
535765
|
}
|
|
535766
|
+
_isStatefulBrowserTool(name10) {
|
|
535767
|
+
return name10 === "playwright_browser" || name10 === "browser_action";
|
|
535768
|
+
}
|
|
535551
535769
|
/**
|
|
535552
535770
|
* REG-62: Build a resource-level key for semantic dedup.
|
|
535553
535771
|
*
|
|
@@ -538445,7 +538663,8 @@ ${memoryLines.join("\n")}`
|
|
|
538445
538663
|
"todo_write",
|
|
538446
538664
|
"nexus"
|
|
538447
538665
|
].includes(tc.name);
|
|
538448
|
-
const
|
|
538666
|
+
const isStatefulBrowserTool = this._isStatefulBrowserTool(tc.name);
|
|
538667
|
+
const isReadLike = !isStatefulBrowserTool && (baseIsReadLike || tc.name === "shell" && this._isShellCommandReadOnly(tc.arguments?.["command"] ?? tc.arguments?.["cmd"] ?? ""));
|
|
538449
538668
|
const observerRedundantBlock = this._littlemanRedundantBlocks.has(toolFingerprint);
|
|
538450
538669
|
if (observerRedundantBlock) {
|
|
538451
538670
|
this._littlemanRedundantBlocks.delete(toolFingerprint);
|
|
@@ -541337,7 +541556,7 @@ Full content available via: repl_exec(code="data = retrieve('${handleId}')") or
|
|
|
541337
541556
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
541338
541557
|
});
|
|
541339
541558
|
try {
|
|
541340
|
-
const { mkdirSync: mkdirSync77, writeFileSync:
|
|
541559
|
+
const { mkdirSync: mkdirSync77, writeFileSync: writeFileSync70 } = __require("node:fs");
|
|
541341
541560
|
const { join: join142 } = __require("node:path");
|
|
541342
541561
|
const contextDir = join142(this._workingDirectory || process.cwd(), ".omnius", "context");
|
|
541343
541562
|
mkdirSync77(contextDir, { recursive: true });
|
|
@@ -541381,8 +541600,8 @@ Full content available via: repl_exec(code="data = retrieve('${handleId}')") or
|
|
|
541381
541600
|
section("Top Concepts", topConcepts);
|
|
541382
541601
|
lines.push("(Use file_read on this file for quick recall. See provenance JSON for full edge detail.)");
|
|
541383
541602
|
const outPath = join142(contextDir, `kg-summary-${this._sessionId}.md`);
|
|
541384
|
-
|
|
541385
|
-
|
|
541603
|
+
writeFileSync70(outPath, lines.join("\n"), "utf-8");
|
|
541604
|
+
writeFileSync70(join142(contextDir, `kg-summary-latest.md`), lines.join("\n"), "utf-8");
|
|
541386
541605
|
} catch {
|
|
541387
541606
|
}
|
|
541388
541607
|
}
|
|
@@ -541572,11 +541791,11 @@ ${errOutput}`;
|
|
|
541572
541791
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
541573
541792
|
});
|
|
541574
541793
|
try {
|
|
541575
|
-
const { mkdirSync: mkdirSync77, writeFileSync:
|
|
541794
|
+
const { mkdirSync: mkdirSync77, writeFileSync: writeFileSync70 } = __require("node:fs");
|
|
541576
541795
|
const { join: join142 } = __require("node:path");
|
|
541577
541796
|
const resultsDir = join142(this.omniusStateDir(), "tool-results");
|
|
541578
541797
|
mkdirSync77(resultsDir, { recursive: true });
|
|
541579
|
-
|
|
541798
|
+
writeFileSync70(join142(resultsDir, `${handleId}.txt`), `# Tool: ${toolName}
|
|
541580
541799
|
# Turn: ${turn}
|
|
541581
541800
|
# Timestamp: ${(/* @__PURE__ */ new Date()).toISOString()}
|
|
541582
541801
|
# Size: ${result.output.length} chars, ${lineCount} lines
|
|
@@ -541937,7 +542156,7 @@ Actions: (1) list_directory on the parent directory to see what's there, (2) Che
|
|
|
541937
542156
|
if (!this._workingDirectory)
|
|
541938
542157
|
return;
|
|
541939
542158
|
try {
|
|
541940
|
-
const { mkdirSync: mkdirSync77, writeFileSync:
|
|
542159
|
+
const { mkdirSync: mkdirSync77, writeFileSync: writeFileSync70 } = __require("node:fs");
|
|
541941
542160
|
const { join: join142 } = __require("node:path");
|
|
541942
542161
|
const sessionDir = this.options.stateDir ? join142(this.omniusStateDir(), "session", this._sessionId) : join142(this._workingDirectory, ".omnius", "session", this._sessionId);
|
|
541943
542162
|
mkdirSync77(sessionDir, { recursive: true });
|
|
@@ -541952,7 +542171,7 @@ Actions: (1) list_directory on the parent directory to see what's there, (2) Che
|
|
|
541952
542171
|
memexEntryCount: this._memexArchive.size,
|
|
541953
542172
|
fileRegistrySize: this._fileRegistry.size
|
|
541954
542173
|
};
|
|
541955
|
-
|
|
542174
|
+
writeFileSync70(join142(sessionDir, "checkpoint.json"), JSON.stringify(checkpoint, null, 2));
|
|
541956
542175
|
} catch {
|
|
541957
542176
|
}
|
|
541958
542177
|
}
|
|
@@ -542777,6 +542996,8 @@ ${trimmedNew}`;
|
|
|
542777
542996
|
const lastToolCalls = recent.filter((m2) => m2.role === "assistant" && m2.tool_calls?.length).flatMap((m2) => m2.tool_calls ?? []);
|
|
542778
542997
|
for (const tc of lastToolCalls) {
|
|
542779
542998
|
const name10 = tc.function.name;
|
|
542999
|
+
if (this._isStatefulBrowserTool(name10))
|
|
543000
|
+
continue;
|
|
542780
543001
|
let args = {};
|
|
542781
543002
|
try {
|
|
542782
543003
|
args = JSON.parse(tc.function.arguments);
|
|
@@ -544171,12 +544392,12 @@ ${result}`
|
|
|
544171
544392
|
let resizedBase64 = null;
|
|
544172
544393
|
try {
|
|
544173
544394
|
const { execSync: execSync60 } = await import("node:child_process");
|
|
544174
|
-
const { writeFileSync:
|
|
544395
|
+
const { writeFileSync: writeFileSync70, readFileSync: readFileSync102, unlinkSync: unlinkSync26 } = await import("node:fs");
|
|
544175
544396
|
const { join: join142 } = await import("node:path");
|
|
544176
544397
|
const { tmpdir: tmpdir23 } = await import("node:os");
|
|
544177
544398
|
const tmpIn = join142(tmpdir23(), `omnius_img_in_${Date.now()}.png`);
|
|
544178
544399
|
const tmpOut = join142(tmpdir23(), `omnius_img_out_${Date.now()}.jpg`);
|
|
544179
|
-
|
|
544400
|
+
writeFileSync70(tmpIn, buffer2);
|
|
544180
544401
|
const pyBin = process.platform === "win32" ? "python" : "python3";
|
|
544181
544402
|
const escapedIn = tmpIn.replace(/\\/g, "\\\\");
|
|
544182
544403
|
const escapedOut = tmpOut.replace(/\\/g, "\\\\");
|
|
@@ -545333,7 +545554,7 @@ var init_constraint_learner = __esm({
|
|
|
545333
545554
|
});
|
|
545334
545555
|
|
|
545335
545556
|
// packages/orchestrator/dist/nexusBackend.js
|
|
545336
|
-
import { existsSync as existsSync74, statSync as statSync27, openSync, readSync, closeSync, unlinkSync as unlinkSync11, writeFileSync as
|
|
545557
|
+
import { existsSync as existsSync74, statSync as statSync27, openSync, readSync, closeSync, unlinkSync as unlinkSync11, writeFileSync as writeFileSync33 } from "node:fs";
|
|
545337
545558
|
import { watch as fsWatch } from "node:fs";
|
|
545338
545559
|
import { join as join88 } from "node:path";
|
|
545339
545560
|
import { tmpdir as tmpdir18 } from "node:os";
|
|
@@ -545486,7 +545707,7 @@ var init_nexusBackend = __esm({
|
|
|
545486
545707
|
*/
|
|
545487
545708
|
async *chatCompletionStream(request) {
|
|
545488
545709
|
const streamFile = join88(tmpdir18(), `nexus-stream-${randomBytes17(6).toString("hex")}.jsonl`);
|
|
545489
|
-
|
|
545710
|
+
writeFileSync33(streamFile, "", "utf8");
|
|
545490
545711
|
const daemonArgs = {
|
|
545491
545712
|
model: this.model,
|
|
545492
545713
|
messages: JSON.stringify(request.messages),
|
|
@@ -547261,7 +547482,7 @@ var init_agent_task = __esm({
|
|
|
547261
547482
|
});
|
|
547262
547483
|
|
|
547263
547484
|
// packages/orchestrator/dist/task-recovery.js
|
|
547264
|
-
import { existsSync as existsSync75, readFileSync as readFileSync58, writeFileSync as
|
|
547485
|
+
import { existsSync as existsSync75, readFileSync as readFileSync58, writeFileSync as writeFileSync34, mkdirSync as mkdirSync39, readdirSync as readdirSync23, renameSync as renameSync2, unlinkSync as unlinkSync12 } from "node:fs";
|
|
547265
547486
|
import { join as join89 } from "node:path";
|
|
547266
547487
|
import { homedir as homedir24 } from "node:os";
|
|
547267
547488
|
function sidecarDir() {
|
|
@@ -547277,7 +547498,7 @@ function persistAgentTaskSidecar(task) {
|
|
|
547277
547498
|
const finalPath = sidecarPath(task.id);
|
|
547278
547499
|
const tmpPath = `${finalPath}.tmp.${process.pid}.${Date.now()}`;
|
|
547279
547500
|
const { abortController: _ignore, ...serializable } = task;
|
|
547280
|
-
|
|
547501
|
+
writeFileSync34(tmpPath, JSON.stringify(serializable, null, 2), "utf-8");
|
|
547281
547502
|
renameSync2(tmpPath, finalPath);
|
|
547282
547503
|
} catch {
|
|
547283
547504
|
}
|
|
@@ -549440,7 +549661,7 @@ __export(py_embed_exports, {
|
|
|
549440
549661
|
runTranscribeFile: () => runTranscribeFile
|
|
549441
549662
|
});
|
|
549442
549663
|
import { spawnSync as spawnSync6 } from "node:child_process";
|
|
549443
|
-
import { existsSync as existsSync77, mkdirSync as mkdirSync43, writeFileSync as
|
|
549664
|
+
import { existsSync as existsSync77, mkdirSync as mkdirSync43, writeFileSync as writeFileSync38 } from "node:fs";
|
|
549444
549665
|
import { join as join93 } from "node:path";
|
|
549445
549666
|
import { homedir as homedir25 } from "node:os";
|
|
549446
549667
|
function getVenvDir() {
|
|
@@ -549532,7 +549753,7 @@ function locateScript(name10) {
|
|
|
549532
549753
|
for (const c9 of candidates) if (existsSync77(c9)) return c9;
|
|
549533
549754
|
const fallback = join93(process.cwd(), name10);
|
|
549534
549755
|
try {
|
|
549535
|
-
|
|
549756
|
+
writeFileSync38(fallback, 'print("missing script")\n');
|
|
549536
549757
|
} catch {
|
|
549537
549758
|
}
|
|
549538
549759
|
return fallback;
|
|
@@ -549555,8 +549776,8 @@ __export(listen_exports, {
|
|
|
549555
549776
|
waitForTranscribeCli: () => waitForTranscribeCli
|
|
549556
549777
|
});
|
|
549557
549778
|
import { spawn as spawn21, execSync as execSync46 } from "node:child_process";
|
|
549558
|
-
import { existsSync as existsSync78, mkdirSync as mkdirSync44, writeFileSync as
|
|
549559
|
-
import { join as join94, dirname as
|
|
549779
|
+
import { existsSync as existsSync78, mkdirSync as mkdirSync44, writeFileSync as writeFileSync39, readdirSync as readdirSync24 } from "node:fs";
|
|
549780
|
+
import { join as join94, dirname as dirname24 } from "node:path";
|
|
549560
549781
|
import { homedir as homedir26 } from "node:os";
|
|
549561
549782
|
import { fileURLToPath as fileURLToPath10 } from "node:url";
|
|
549562
549783
|
import { EventEmitter as EventEmitter4 } from "node:events";
|
|
@@ -549640,7 +549861,7 @@ function findMicCaptureCommand() {
|
|
|
549640
549861
|
return null;
|
|
549641
549862
|
}
|
|
549642
549863
|
function findTranscribeFileScript() {
|
|
549643
|
-
const thisDir =
|
|
549864
|
+
const thisDir = dirname24(fileURLToPath10(import.meta.url));
|
|
549644
549865
|
const candidates = [
|
|
549645
549866
|
join94(thisDir, "../../../../packages/execution/scripts/transcribe-file.py"),
|
|
549646
549867
|
join94(thisDir, "../../../packages/execution/scripts/transcribe-file.py"),
|
|
@@ -549725,7 +549946,7 @@ async function transcribeFileViaWhisper(filePath, model) {
|
|
|
549725
549946
|
});
|
|
549726
549947
|
}
|
|
549727
549948
|
function findLiveWhisperScript() {
|
|
549728
|
-
const thisDir =
|
|
549949
|
+
const thisDir = dirname24(fileURLToPath10(import.meta.url));
|
|
549729
549950
|
const candidates = [
|
|
549730
549951
|
join94(thisDir, "../../../../packages/execution/scripts/live-whisper.py"),
|
|
549731
549952
|
join94(thisDir, "../../../packages/execution/scripts/live-whisper.py"),
|
|
@@ -549798,9 +550019,9 @@ function ensureTranscribeCliBackground() {
|
|
|
549798
550019
|
} catch {
|
|
549799
550020
|
}
|
|
549800
550021
|
try {
|
|
549801
|
-
const { exec:
|
|
550022
|
+
const { exec: exec4 } = await import("node:child_process");
|
|
549802
550023
|
return new Promise((resolve49) => {
|
|
549803
|
-
|
|
550024
|
+
exec4("npm i -g transcribe-cli", { timeout: 18e4 }, (err) => {
|
|
549804
550025
|
resolve49(!err);
|
|
549805
550026
|
});
|
|
549806
550027
|
});
|
|
@@ -550094,7 +550315,7 @@ var init_listen = __esm({
|
|
|
550094
550315
|
if (TranscribeLive) {
|
|
550095
550316
|
let tcUpToDate = false;
|
|
550096
550317
|
try {
|
|
550097
|
-
const tcPkgPath = join94(
|
|
550318
|
+
const tcPkgPath = join94(dirname24(__require.resolve?.("transcribe-cli/package.json") || ""), "package.json");
|
|
550098
550319
|
if (existsSync78(tcPkgPath)) {
|
|
550099
550320
|
const tcPkg = JSON.parse(__require("fs").readFileSync(tcPkgPath, "utf8"));
|
|
550100
550321
|
tcUpToDate = tcPkg.version && tcPkg.version >= "2.0.1";
|
|
@@ -550440,7 +550661,7 @@ transcribe-cli error: ${transcribeCliError}` : "";
|
|
|
550440
550661
|
const transcriptDir = join94(outputDir, ".omnius", "transcripts");
|
|
550441
550662
|
mkdirSync44(transcriptDir, { recursive: true });
|
|
550442
550663
|
const outFile = join94(transcriptDir, `${basename28(filePath)}.txt`);
|
|
550443
|
-
|
|
550664
|
+
writeFileSync39(outFile, result.text, "utf-8");
|
|
550444
550665
|
}
|
|
550445
550666
|
return {
|
|
550446
550667
|
text: result.text,
|
|
@@ -550459,7 +550680,7 @@ transcribe-cli error: ${transcribeCliError}` : "";
|
|
|
550459
550680
|
const transcriptDir = join94(outputDir, ".omnius", "transcripts");
|
|
550460
550681
|
mkdirSync44(transcriptDir, { recursive: true });
|
|
550461
550682
|
const outFile = join94(transcriptDir, `${basename28(filePath)}.txt`);
|
|
550462
|
-
|
|
550683
|
+
writeFileSync39(outFile, fb.text, "utf-8");
|
|
550463
550684
|
}
|
|
550464
550685
|
return fb;
|
|
550465
550686
|
}
|
|
@@ -557263,7 +557484,7 @@ var init_voice_session = __esm({
|
|
|
557263
557484
|
|
|
557264
557485
|
// packages/cli/src/tui/scoped-personality.ts
|
|
557265
557486
|
import { createHash as createHash15 } from "node:crypto";
|
|
557266
|
-
import { existsSync as existsSync79, mkdirSync as mkdirSync45, readFileSync as readFileSync62, writeFileSync as
|
|
557487
|
+
import { existsSync as existsSync79, mkdirSync as mkdirSync45, readFileSync as readFileSync62, writeFileSync as writeFileSync40 } from "node:fs";
|
|
557267
557488
|
import { join as join95, resolve as resolve35 } from "node:path";
|
|
557268
557489
|
function safeName(input) {
|
|
557269
557490
|
return input.replace(/[^A-Za-z0-9_.-]/g, "-").slice(0, 80) || "default";
|
|
@@ -557357,8 +557578,8 @@ function loadScopedPersonality(scope) {
|
|
|
557357
557578
|
function saveScopedPersonality(scope, doc) {
|
|
557358
557579
|
const paths = scopedPersonalityPaths(scope);
|
|
557359
557580
|
mkdirSync45(scopedPersonalityDir(scope.repoRoot, scope.kind), { recursive: true });
|
|
557360
|
-
|
|
557361
|
-
|
|
557581
|
+
writeFileSync40(paths.json, JSON.stringify(doc, null, 2) + "\n", "utf8");
|
|
557582
|
+
writeFileSync40(paths.markdown, renderScopedPersonalityMarkdown(doc) + "\n", "utf8");
|
|
557362
557583
|
}
|
|
557363
557584
|
function updateScopedPersonality(scope, observation) {
|
|
557364
557585
|
const doc = loadScopedPersonality(scope);
|
|
@@ -557529,12 +557750,12 @@ var init_scoped_personality = __esm({
|
|
|
557529
557750
|
|
|
557530
557751
|
// packages/cli/src/tui/expose.ts
|
|
557531
557752
|
import { createServer as createServer4, request as httpRequest } from "node:http";
|
|
557532
|
-
import { spawn as spawn23, exec
|
|
557753
|
+
import { spawn as spawn23, exec } from "node:child_process";
|
|
557533
557754
|
import { EventEmitter as EventEmitter6 } from "node:events";
|
|
557534
557755
|
import { randomBytes as randomBytes18 } from "node:crypto";
|
|
557535
557756
|
import { URL as URL2 } from "node:url";
|
|
557536
557757
|
import { loadavg, cpus as cpus2, totalmem as totalmem3, freemem as freemem3 } from "node:os";
|
|
557537
|
-
import { existsSync as existsSync80, readFileSync as readFileSync63, writeFileSync as
|
|
557758
|
+
import { existsSync as existsSync80, readFileSync as readFileSync63, writeFileSync as writeFileSync41, unlinkSync as unlinkSync13, mkdirSync as mkdirSync46, readdirSync as readdirSync25, statSync as statSync28, statfsSync as statfsSync2 } from "node:fs";
|
|
557538
557759
|
import { join as join96 } from "node:path";
|
|
557539
557760
|
function cleanForwardHeaders(raw, targetHost) {
|
|
557540
557761
|
const out = {};
|
|
@@ -557569,7 +557790,7 @@ function readExposeState(stateDir) {
|
|
|
557569
557790
|
function writeExposeState(stateDir, state) {
|
|
557570
557791
|
try {
|
|
557571
557792
|
mkdirSync46(stateDir, { recursive: true });
|
|
557572
|
-
|
|
557793
|
+
writeFileSync41(join96(stateDir, STATE_FILE_NAME), JSON.stringify(state, null, 2));
|
|
557573
557794
|
} catch {
|
|
557574
557795
|
}
|
|
557575
557796
|
}
|
|
@@ -557655,7 +557876,7 @@ async function collectSystemMetricsAsync() {
|
|
|
557655
557876
|
};
|
|
557656
557877
|
try {
|
|
557657
557878
|
const smi = await new Promise((resolve49, reject) => {
|
|
557658
|
-
|
|
557879
|
+
exec(
|
|
557659
557880
|
"nvidia-smi --query-gpu=utilization.gpu,memory.used,memory.total,name --format=csv,noheader,nounits 2>/dev/null",
|
|
557660
557881
|
{ encoding: "utf8", timeout: 3e3 },
|
|
557661
557882
|
(err, stdout) => err ? reject(err) : resolve49(stdout)
|
|
@@ -557707,7 +557928,7 @@ function readP2PExposeState(stateDir) {
|
|
|
557707
557928
|
function writeP2PExposeState(stateDir, state) {
|
|
557708
557929
|
try {
|
|
557709
557930
|
mkdirSync46(stateDir, { recursive: true });
|
|
557710
|
-
|
|
557931
|
+
writeFileSync41(join96(stateDir, P2P_STATE_FILE_NAME), JSON.stringify(state, null, 2));
|
|
557711
557932
|
} catch {
|
|
557712
557933
|
}
|
|
557713
557934
|
}
|
|
@@ -559111,8 +559332,8 @@ var init_types = __esm({
|
|
|
559111
559332
|
|
|
559112
559333
|
// packages/cli/src/tui/p2p/secret-vault.ts
|
|
559113
559334
|
import { createCipheriv as createCipheriv3, createDecipheriv as createDecipheriv3, randomBytes as randomBytes19, scryptSync as scryptSync2, createHash as createHash16 } from "node:crypto";
|
|
559114
|
-
import { readFileSync as readFileSync64, writeFileSync as
|
|
559115
|
-
import { dirname as
|
|
559335
|
+
import { readFileSync as readFileSync64, writeFileSync as writeFileSync42, existsSync as existsSync81, mkdirSync as mkdirSync47 } from "node:fs";
|
|
559336
|
+
import { dirname as dirname25 } from "node:path";
|
|
559116
559337
|
var PLACEHOLDER_PREFIX, PLACEHOLDER_SUFFIX, CIPHER_ALGO, SALT_LEN, IV_LEN, KEY_LEN, SecretVault;
|
|
559117
559338
|
var init_secret_vault = __esm({
|
|
559118
559339
|
"packages/cli/src/tui/p2p/secret-vault.ts"() {
|
|
@@ -559319,9 +559540,9 @@ var init_secret_vault = __esm({
|
|
|
559319
559540
|
const encrypted = Buffer.concat([cipher.update(data, "utf8"), cipher.final()]);
|
|
559320
559541
|
const tag = cipher.getAuthTag();
|
|
559321
559542
|
const blob = Buffer.concat([salt, iv, tag, encrypted]);
|
|
559322
|
-
const dir =
|
|
559543
|
+
const dir = dirname25(this.storePath);
|
|
559323
559544
|
if (!existsSync81(dir)) mkdirSync47(dir, { recursive: true });
|
|
559324
|
-
|
|
559545
|
+
writeFileSync42(this.storePath, blob, { mode: 384 });
|
|
559325
559546
|
}
|
|
559326
559547
|
/**
|
|
559327
559548
|
* Load vault from disk, decrypting with the given passphrase.
|
|
@@ -560917,7 +561138,7 @@ var init_render2 = __esm({
|
|
|
560917
561138
|
|
|
560918
561139
|
// packages/prompts/dist/promptLoader.js
|
|
560919
561140
|
import { readFileSync as readFileSync65, existsSync as existsSync82 } from "node:fs";
|
|
560920
|
-
import { join as join98, dirname as
|
|
561141
|
+
import { join as join98, dirname as dirname26 } from "node:path";
|
|
560921
561142
|
import { fileURLToPath as fileURLToPath11 } from "node:url";
|
|
560922
561143
|
function loadPrompt2(promptPath, vars) {
|
|
560923
561144
|
let content = cache6.get(promptPath);
|
|
@@ -560938,7 +561159,7 @@ var init_promptLoader2 = __esm({
|
|
|
560938
561159
|
"packages/prompts/dist/promptLoader.js"() {
|
|
560939
561160
|
"use strict";
|
|
560940
561161
|
__filename4 = fileURLToPath11(import.meta.url);
|
|
560941
|
-
__dirname6 =
|
|
561162
|
+
__dirname6 = dirname26(__filename4);
|
|
560942
561163
|
devPath = join98(__dirname6, "..", "templates");
|
|
560943
561164
|
publishedPath = join98(__dirname6, "..", "prompts", "templates");
|
|
560944
561165
|
PROMPTS_DIR2 = existsSync82(devPath) ? devPath : publishedPath;
|
|
@@ -561052,7 +561273,7 @@ var init_task_templates = __esm({
|
|
|
561052
561273
|
});
|
|
561053
561274
|
|
|
561054
561275
|
// packages/prompts/dist/index.js
|
|
561055
|
-
import { join as join99, dirname as
|
|
561276
|
+
import { join as join99, dirname as dirname27 } from "node:path";
|
|
561056
561277
|
import { fileURLToPath as fileURLToPath12 } from "node:url";
|
|
561057
561278
|
var _dir, _packageRoot;
|
|
561058
561279
|
var init_dist9 = __esm({
|
|
@@ -561062,7 +561283,7 @@ var init_dist9 = __esm({
|
|
|
561062
561283
|
init_render2();
|
|
561063
561284
|
init_task_templates();
|
|
561064
561285
|
init_render2();
|
|
561065
|
-
_dir =
|
|
561286
|
+
_dir = dirname27(fileURLToPath12(import.meta.url));
|
|
561066
561287
|
_packageRoot = join99(_dir, "..");
|
|
561067
561288
|
}
|
|
561068
561289
|
});
|
|
@@ -561107,8 +561328,8 @@ __export(omnius_directory_exports, {
|
|
|
561107
561328
|
writeIndexMeta: () => writeIndexMeta,
|
|
561108
561329
|
writeTaskHandoff: () => writeTaskHandoff2
|
|
561109
561330
|
});
|
|
561110
|
-
import { cpSync, existsSync as existsSync83, mkdirSync as mkdirSync48, readFileSync as readFileSync66, writeFileSync as
|
|
561111
|
-
import { join as join100, relative as relative9, basename as basename17, dirname as
|
|
561331
|
+
import { cpSync, existsSync as existsSync83, mkdirSync as mkdirSync48, readFileSync as readFileSync66, writeFileSync as writeFileSync43, readdirSync as readdirSync26, statSync as statSync29, unlinkSync as unlinkSync14, openSync as openSync2, closeSync as closeSync2, renameSync as renameSync3 } from "node:fs";
|
|
561332
|
+
import { join as join100, relative as relative9, basename as basename17, dirname as dirname28 } from "node:path";
|
|
561112
561333
|
import { homedir as homedir27 } from "node:os";
|
|
561113
561334
|
import { createHash as createHash18 } from "node:crypto";
|
|
561114
561335
|
function findGitRoot(startDir) {
|
|
@@ -561145,7 +561366,7 @@ function ensureOmniusIgnored(repoRoot) {
|
|
|
561145
561366
|
if (!gitRoot) return;
|
|
561146
561367
|
const gitignorePath = findNearestExistingGitignore(repoRoot, gitRoot);
|
|
561147
561368
|
if (!gitignorePath) return;
|
|
561148
|
-
const gitignoreDir =
|
|
561369
|
+
const gitignoreDir = dirname28(gitignorePath);
|
|
561149
561370
|
const relDir = relative9(gitignoreDir || ".", repoRoot).replace(/\\/g, "/");
|
|
561150
561371
|
const ignorePattern = relDir && relDir !== "." ? `${relDir}/.omnius/` : ".omnius/";
|
|
561151
561372
|
const content = readFileSync66(gitignorePath, "utf-8");
|
|
@@ -561156,7 +561377,7 @@ function ensureOmniusIgnored(repoRoot) {
|
|
|
561156
561377
|
return normalizeIgnoreRule(trimmed) === normalizedTarget;
|
|
561157
561378
|
});
|
|
561158
561379
|
if (alreadyIgnored) return;
|
|
561159
|
-
|
|
561380
|
+
writeFileSync43(
|
|
561160
561381
|
gitignorePath,
|
|
561161
561382
|
(content.trimEnd() ? `${content.trimEnd()}
|
|
561162
561383
|
` : "") + `${ignorePattern}
|
|
@@ -561209,7 +561430,7 @@ function saveProjectSettings(repoRoot, settings) {
|
|
|
561209
561430
|
mkdirSync48(omniusPath, { recursive: true });
|
|
561210
561431
|
const existing = loadProjectSettings(repoRoot);
|
|
561211
561432
|
const merged = { ...existing, ...settings };
|
|
561212
|
-
|
|
561433
|
+
writeFileSync43(join100(omniusPath, "settings.json"), JSON.stringify(merged, null, 2) + "\n", { encoding: "utf-8", mode: 384 });
|
|
561213
561434
|
}
|
|
561214
561435
|
function loadGlobalSettings() {
|
|
561215
561436
|
const settingsPath = join100(homedir27(), ".omnius", "settings.json");
|
|
@@ -561226,7 +561447,7 @@ function saveGlobalSettings(settings) {
|
|
|
561226
561447
|
mkdirSync48(dir, { recursive: true });
|
|
561227
561448
|
const existing = loadGlobalSettings();
|
|
561228
561449
|
const merged = { ...existing, ...settings };
|
|
561229
|
-
|
|
561450
|
+
writeFileSync43(join100(dir, "settings.json"), JSON.stringify(merged, null, 2) + "\n", { encoding: "utf-8", mode: 384 });
|
|
561230
561451
|
}
|
|
561231
561452
|
function resolveSettings(repoRoot) {
|
|
561232
561453
|
const global2 = loadGlobalSettings();
|
|
@@ -561287,7 +561508,7 @@ function readIndexMeta(repoRoot) {
|
|
|
561287
561508
|
function writeIndexMeta(repoRoot, meta) {
|
|
561288
561509
|
const metaPath = join100(repoRoot, OMNIUS_DIR, "index", "meta.json");
|
|
561289
561510
|
mkdirSync48(join100(repoRoot, OMNIUS_DIR, "index"), { recursive: true });
|
|
561290
|
-
|
|
561511
|
+
writeFileSync43(metaPath, JSON.stringify(meta, null, 2), "utf-8");
|
|
561291
561512
|
}
|
|
561292
561513
|
function readIndexData(repoRoot, filename) {
|
|
561293
561514
|
const filePath = join100(repoRoot, OMNIUS_DIR, "index", filename);
|
|
@@ -561300,7 +561521,7 @@ function readIndexData(repoRoot, filename) {
|
|
|
561300
561521
|
function writeIndexData(repoRoot, filename, data) {
|
|
561301
561522
|
const filePath = join100(repoRoot, OMNIUS_DIR, "index", filename);
|
|
561302
561523
|
mkdirSync48(join100(repoRoot, OMNIUS_DIR, "index"), { recursive: true });
|
|
561303
|
-
|
|
561524
|
+
writeFileSync43(filePath, JSON.stringify(data, null, 2), "utf-8");
|
|
561304
561525
|
}
|
|
561305
561526
|
function generateProjectMap(repoRoot) {
|
|
561306
561527
|
const sections = [];
|
|
@@ -561349,13 +561570,13 @@ ${tree2}\`\`\`
|
|
|
561349
561570
|
const content = sections.join("\n");
|
|
561350
561571
|
const contextDir = join100(repoRoot, OMNIUS_DIR, "context");
|
|
561351
561572
|
mkdirSync48(contextDir, { recursive: true });
|
|
561352
|
-
|
|
561573
|
+
writeFileSync43(join100(contextDir, "project-map.md"), content, "utf-8");
|
|
561353
561574
|
return content;
|
|
561354
561575
|
}
|
|
561355
561576
|
function saveSession(repoRoot, session) {
|
|
561356
561577
|
const historyDir = join100(repoRoot, OMNIUS_DIR, "history");
|
|
561357
561578
|
mkdirSync48(historyDir, { recursive: true });
|
|
561358
|
-
|
|
561579
|
+
writeFileSync43(
|
|
561359
561580
|
join100(historyDir, `${session.id}.json`),
|
|
561360
561581
|
JSON.stringify(session, null, 2),
|
|
561361
561582
|
"utf-8"
|
|
@@ -561385,7 +561606,7 @@ function loadRecentSessions(repoRoot, limit = 5) {
|
|
|
561385
561606
|
function savePendingTask(repoRoot, task) {
|
|
561386
561607
|
const historyDir = join100(repoRoot, OMNIUS_DIR, "history");
|
|
561387
561608
|
mkdirSync48(historyDir, { recursive: true });
|
|
561388
|
-
|
|
561609
|
+
writeFileSync43(
|
|
561389
561610
|
join100(historyDir, PENDING_TASK_FILE),
|
|
561390
561611
|
JSON.stringify(task, null, 2) + "\n",
|
|
561391
561612
|
"utf-8"
|
|
@@ -561410,11 +561631,11 @@ function writeTaskHandoff2(repoRoot, handoff) {
|
|
|
561410
561631
|
mkdirSync48(contextDir, { recursive: true });
|
|
561411
561632
|
const filePath = join100(contextDir, HANDOFF_FILE);
|
|
561412
561633
|
const tempPath = filePath + ".tmp";
|
|
561413
|
-
|
|
561634
|
+
writeFileSync43(tempPath, JSON.stringify(handoff, null, 2) + "\n", "utf-8");
|
|
561414
561635
|
try {
|
|
561415
561636
|
renameSync3(tempPath, filePath);
|
|
561416
561637
|
} catch {
|
|
561417
|
-
|
|
561638
|
+
writeFileSync43(filePath, JSON.stringify(handoff, null, 2) + "\n", "utf-8");
|
|
561418
561639
|
try {
|
|
561419
561640
|
unlinkSync14(tempPath);
|
|
561420
561641
|
} catch {
|
|
@@ -561505,7 +561726,7 @@ function acquireLock(lockPath) {
|
|
|
561505
561726
|
try {
|
|
561506
561727
|
const fd = openSync2(lockPath, "wx");
|
|
561507
561728
|
const lockData = JSON.stringify({ pid, acquiredAt: Date.now() });
|
|
561508
|
-
|
|
561729
|
+
writeFileSync43(fd, lockData);
|
|
561509
561730
|
closeSync2(fd);
|
|
561510
561731
|
return true;
|
|
561511
561732
|
} catch (err) {
|
|
@@ -561683,18 +561904,18 @@ function saveSessionContext(repoRoot, entry) {
|
|
|
561683
561904
|
}
|
|
561684
561905
|
ctx3.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
561685
561906
|
const tempFilePath = filePath + ".tmp";
|
|
561686
|
-
|
|
561907
|
+
writeFileSync43(tempFilePath, JSON.stringify(ctx3, null, 2) + "\n", "utf-8");
|
|
561687
561908
|
try {
|
|
561688
561909
|
renameSync3(tempFilePath, filePath);
|
|
561689
561910
|
} catch {
|
|
561690
|
-
|
|
561911
|
+
writeFileSync43(filePath, JSON.stringify(ctx3, null, 2) + "\n", "utf-8");
|
|
561691
561912
|
try {
|
|
561692
561913
|
unlinkSync14(tempFilePath);
|
|
561693
561914
|
} catch {
|
|
561694
561915
|
}
|
|
561695
561916
|
}
|
|
561696
561917
|
try {
|
|
561697
|
-
|
|
561918
|
+
writeFileSync43(
|
|
561698
561919
|
join100(contextDir, "session-diary.md"),
|
|
561699
561920
|
renderSessionDiary(ctx3.entries.slice(-10)),
|
|
561700
561921
|
"utf-8"
|
|
@@ -561858,7 +562079,7 @@ function saveSessionHistory(repoRoot, sessionId, contentLines, meta) {
|
|
|
561858
562079
|
const autoName = meta.name || generateSessionName(stripped);
|
|
561859
562080
|
const autoDesc = meta.description || generateSessionDescription(stripped);
|
|
561860
562081
|
const contentPath = join100(sessDir, `${sessionId}.jsonl`);
|
|
561861
|
-
|
|
562082
|
+
writeFileSync43(contentPath, stripped.join("\n"), "utf-8");
|
|
561862
562083
|
const indexPath = join100(sessDir, SESSIONS_INDEX);
|
|
561863
562084
|
let index = [];
|
|
561864
562085
|
try {
|
|
@@ -561889,7 +562110,7 @@ function saveSessionHistory(repoRoot, sessionId, contentLines, meta) {
|
|
|
561889
562110
|
} catch {
|
|
561890
562111
|
}
|
|
561891
562112
|
}
|
|
561892
|
-
|
|
562113
|
+
writeFileSync43(indexPath, JSON.stringify(index, null, 2), "utf-8");
|
|
561893
562114
|
}
|
|
561894
562115
|
function listSessions(repoRoot) {
|
|
561895
562116
|
const indexPath = join100(repoRoot, OMNIUS_DIR, SESSIONS_DIR, SESSIONS_INDEX);
|
|
@@ -561919,7 +562140,7 @@ function deleteSession(repoRoot, sessionId) {
|
|
|
561919
562140
|
if (existsSync83(indexPath)) {
|
|
561920
562141
|
let index = JSON.parse(readFileSync66(indexPath, "utf-8"));
|
|
561921
562142
|
index = index.filter((s2) => s2.id !== sessionId);
|
|
561922
|
-
|
|
562143
|
+
writeFileSync43(indexPath, JSON.stringify(index, null, 2), "utf-8");
|
|
561923
562144
|
}
|
|
561924
562145
|
return true;
|
|
561925
562146
|
} catch {
|
|
@@ -562055,7 +562276,7 @@ function loadUsageFile(filePath) {
|
|
|
562055
562276
|
function saveUsageFile(filePath, data) {
|
|
562056
562277
|
const dir = join100(filePath, "..");
|
|
562057
562278
|
mkdirSync48(dir, { recursive: true });
|
|
562058
|
-
|
|
562279
|
+
writeFileSync43(filePath, JSON.stringify(data, null, 2) + "\n", { encoding: "utf-8", mode: 384 });
|
|
562059
562280
|
}
|
|
562060
562281
|
function recordUsage(kind, value2, opts) {
|
|
562061
562282
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
@@ -562559,7 +562780,7 @@ __export(system_metrics_exports, {
|
|
|
562559
562780
|
instantaneousCpuPct: () => instantaneousCpuPct
|
|
562560
562781
|
});
|
|
562561
562782
|
import { loadavg as loadavg2, cpus as cpus3, totalmem as totalmem5, freemem as freemem4, platform as platform3 } from "node:os";
|
|
562562
|
-
import { exec as
|
|
562783
|
+
import { exec as exec2 } from "node:child_process";
|
|
562563
562784
|
import { readFile as readFile22 } from "node:fs/promises";
|
|
562564
562785
|
function formatRate(bytesPerSec) {
|
|
562565
562786
|
if (bytesPerSec < 1024) return `${Math.round(bytesPerSec)}B`;
|
|
@@ -562606,7 +562827,7 @@ async function collectNetworkMetrics() {
|
|
|
562606
562827
|
if (plat === "darwin") {
|
|
562607
562828
|
try {
|
|
562608
562829
|
const output = await new Promise((resolve49, reject) => {
|
|
562609
|
-
|
|
562830
|
+
exec2("netstat -ib 2>/dev/null | head -30", { encoding: "utf8", timeout: 3e3 }, (err, stdout) => err ? reject(err) : resolve49(stdout));
|
|
562610
562831
|
});
|
|
562611
562832
|
let rxBytes = 0, txBytes = 0;
|
|
562612
562833
|
for (const line of output.split("\n")) {
|
|
@@ -562640,7 +562861,7 @@ async function collectGpuMetrics() {
|
|
|
562640
562861
|
if (_nvidiaSmiAvailable === false) return noGpu;
|
|
562641
562862
|
try {
|
|
562642
562863
|
const smi = await new Promise((resolve49, reject) => {
|
|
562643
|
-
|
|
562864
|
+
exec2(
|
|
562644
562865
|
"nvidia-smi --query-gpu=utilization.gpu,memory.used,memory.total,name --format=csv,noheader,nounits 2>/dev/null",
|
|
562645
562866
|
{ encoding: "utf8", timeout: 3e3 },
|
|
562646
562867
|
(err, stdout) => err ? reject(err) : resolve49(stdout)
|
|
@@ -567973,8 +568194,8 @@ __export(personaplex_exports, {
|
|
|
567973
568194
|
startPersonaPlexDaemon: () => startPersonaPlexDaemon,
|
|
567974
568195
|
stopPersonaPlex: () => stopPersonaPlex
|
|
567975
568196
|
});
|
|
567976
|
-
import { existsSync as existsSync85, writeFileSync as
|
|
567977
|
-
import { join as join102, dirname as
|
|
568197
|
+
import { existsSync as existsSync85, writeFileSync as writeFileSync44, readFileSync as readFileSync69, mkdirSync as mkdirSync49, copyFileSync as copyFileSync4, readdirSync as readdirSync27, statSync as statSync30 } from "node:fs";
|
|
568198
|
+
import { join as join102, dirname as dirname29 } from "node:path";
|
|
567978
568199
|
import { homedir as homedir29 } from "node:os";
|
|
567979
568200
|
import { execSync as execSync49, spawn as spawn24 } from "node:child_process";
|
|
567980
568201
|
import { fileURLToPath as fileURLToPath13 } from "node:url";
|
|
@@ -568111,7 +568332,7 @@ function getWeightTier() {
|
|
|
568111
568332
|
if (saved in WEIGHT_REPOS) {
|
|
568112
568333
|
const vram = detected.vramGB;
|
|
568113
568334
|
if (saved === "nf4-distilled" && vram < 24) {
|
|
568114
|
-
|
|
568335
|
+
writeFileSync44(tierFile, "nf4");
|
|
568115
568336
|
return "nf4";
|
|
568116
568337
|
}
|
|
568117
568338
|
return saved;
|
|
@@ -568241,7 +568462,7 @@ async function installPersonaPlex(onInfo, weightTier) {
|
|
|
568241
568462
|
let src2 = readFileSync69(serverFile, "utf8");
|
|
568242
568463
|
if (src2.includes('int(request["seed"])')) {
|
|
568243
568464
|
src2 = src2.replace('int(request["seed"])', 'int(request.query["seed"])');
|
|
568244
|
-
|
|
568465
|
+
writeFileSync44(serverFile, src2);
|
|
568245
568466
|
log22("Applied seed parameter bug fix to moshi server.");
|
|
568246
568467
|
}
|
|
568247
568468
|
}
|
|
@@ -568345,7 +568566,7 @@ $2if filename.endswith(".safetensors"):`
|
|
|
568345
568566
|
${patchPoint}`
|
|
568346
568567
|
);
|
|
568347
568568
|
}
|
|
568348
|
-
|
|
568569
|
+
writeFileSync44(loadersFile, src2);
|
|
568349
568570
|
log22("Patched loaders.py with 2-bit TurboQuant native dequant support.");
|
|
568350
568571
|
}
|
|
568351
568572
|
}
|
|
@@ -568443,7 +568664,7 @@ $2if filename.endswith(".safetensors"):`
|
|
|
568443
568664
|
await execAsync(`"${python}" -c "from huggingface_hub import hf_hub_download; hf_hub_download('${nf4.repo}', '${nf4.file}', token=False)"`, {
|
|
568444
568665
|
timeout: 6e5
|
|
568445
568666
|
});
|
|
568446
|
-
|
|
568667
|
+
writeFileSync44(join102(PERSONAPLEX_DIR, "weight_tier"), "nf4");
|
|
568447
568668
|
log22(`Downloaded INT4 weights instead (${nf4.sizeGB}GB, public).`);
|
|
568448
568669
|
} catch {
|
|
568449
568670
|
log22("Weight download failed.");
|
|
@@ -568455,8 +568676,8 @@ $2if filename.endswith(".safetensors"):`
|
|
|
568455
568676
|
log22("Weights will download on first server launch.");
|
|
568456
568677
|
}
|
|
568457
568678
|
}
|
|
568458
|
-
|
|
568459
|
-
|
|
568679
|
+
writeFileSync44(join102(PERSONAPLEX_DIR, "weight_tier"), tier);
|
|
568680
|
+
writeFileSync44(join102(PERSONAPLEX_DIR, "model_ready"), (/* @__PURE__ */ new Date()).toISOString());
|
|
568460
568681
|
log22(`PersonaPlex installed (${tier} tier). Use /call to start voice session.`);
|
|
568461
568682
|
return true;
|
|
568462
568683
|
}
|
|
@@ -568623,8 +568844,8 @@ print('Converted')
|
|
|
568623
568844
|
cwd: PERSONAPLEX_DIR
|
|
568624
568845
|
});
|
|
568625
568846
|
if (child.pid) {
|
|
568626
|
-
|
|
568627
|
-
|
|
568847
|
+
writeFileSync44(PID_FILE, String(child.pid));
|
|
568848
|
+
writeFileSync44(PORT_FILE, String(PORT));
|
|
568628
568849
|
registry2.register({
|
|
568629
568850
|
name: "PersonaPlex",
|
|
568630
568851
|
pid: child.pid,
|
|
@@ -568788,7 +569009,7 @@ function getShippedVoicesDir() {
|
|
|
568788
569009
|
// repo root
|
|
568789
569010
|
];
|
|
568790
569011
|
try {
|
|
568791
|
-
const modDir =
|
|
569012
|
+
const modDir = dirname29(fileURLToPath13(import.meta.url));
|
|
568792
569013
|
candidates.push(join102(modDir, "..", "..", "..", "voices", "personaplex"));
|
|
568793
569014
|
candidates.push(join102(modDir, "..", "..", "..", "..", "voices", "personaplex"));
|
|
568794
569015
|
} catch {
|
|
@@ -568884,7 +569105,7 @@ function patchFrontendVoiceList(onInfo) {
|
|
|
568884
569105
|
if (js.includes(needle)) {
|
|
568885
569106
|
const additions = customVoices.map((v) => `"${v}"`).join(", ");
|
|
568886
569107
|
js = js.replace(needle, `"VARM4.pt", ${additions}]`);
|
|
568887
|
-
|
|
569108
|
+
writeFileSync44(jsPath, js);
|
|
568888
569109
|
log22(`Added ${customVoices.length} custom voice(s) to frontend: ${customVoices.map((v) => v.replace(".pt", "")).join(", ")}`);
|
|
568889
569110
|
}
|
|
568890
569111
|
}
|
|
@@ -568981,9 +569202,9 @@ __export(setup_exports, {
|
|
|
568981
569202
|
updateOllama: () => updateOllama
|
|
568982
569203
|
});
|
|
568983
569204
|
import * as readline from "node:readline";
|
|
568984
|
-
import { execSync as execSync50, spawn as spawn25, exec as
|
|
569205
|
+
import { execSync as execSync50, spawn as spawn25, exec as exec3 } from "node:child_process";
|
|
568985
569206
|
import { promisify as promisify6 } from "node:util";
|
|
568986
|
-
import { existsSync as existsSync86, writeFileSync as
|
|
569207
|
+
import { existsSync as existsSync86, writeFileSync as writeFileSync45, readFileSync as readFileSync70, appendFileSync as appendFileSync4, mkdirSync as mkdirSync50 } from "node:fs";
|
|
568987
569208
|
import { join as join103 } from "node:path";
|
|
568988
569209
|
import { homedir as homedir30, platform as platform4 } from "node:os";
|
|
568989
569210
|
function wrapText(value2, width) {
|
|
@@ -569383,7 +569604,7 @@ osascript -e 'Tell application "System Events" to display dialog "Omnius needs a
|
|
|
569383
569604
|
return null;
|
|
569384
569605
|
}
|
|
569385
569606
|
try {
|
|
569386
|
-
|
|
569607
|
+
writeFileSync45(helperPath, body, { mode: 448 });
|
|
569387
569608
|
execSync50(`chmod 700 "${helperPath}"`, { stdio: "ignore" });
|
|
569388
569609
|
return helperPath;
|
|
569389
569610
|
} catch {
|
|
@@ -570350,7 +570571,7 @@ ${c3.cyan(OMNIUS_FIRST_RUN_BANNER)}
|
|
|
570350
570571
|
const modelDir2 = join103(homedir30(), ".omnius", "models");
|
|
570351
570572
|
mkdirSync50(modelDir2, { recursive: true });
|
|
570352
570573
|
const modelfilePath = join103(modelDir2, `Modelfile.${customName}`);
|
|
570353
|
-
|
|
570574
|
+
writeFileSync45(modelfilePath, modelfileContent + "\n", "utf8");
|
|
570354
570575
|
process.stdout.write(` ${c3.dim("Creating model...")} `);
|
|
570355
570576
|
execSync50(`ollama create ${customName} -f ${modelfilePath}`, {
|
|
570356
570577
|
stdio: "pipe",
|
|
@@ -570718,7 +570939,7 @@ async function ensureVisionDeps(onInfo, getSudoPassword) {
|
|
|
570718
570939
|
}
|
|
570719
570940
|
try {
|
|
570720
570941
|
mkdirSync50(_visionMarkerDir, { recursive: true });
|
|
570721
|
-
|
|
570942
|
+
writeFileSync45(_visionMarkerFile, JSON.stringify({
|
|
570722
570943
|
installed: [..._visionPreviouslyInstalled],
|
|
570723
570944
|
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
570724
570945
|
}, null, 2));
|
|
@@ -571009,7 +571230,7 @@ function createExpandedVariantNamed(targetModel, baseModel, specs, sizeGB, kvByt
|
|
|
571009
571230
|
const modelDir2 = join103(homedir30(), ".omnius", "models");
|
|
571010
571231
|
mkdirSync50(modelDir2, { recursive: true });
|
|
571011
571232
|
const modelfilePath = join103(modelDir2, `Modelfile.${targetModel}`);
|
|
571012
|
-
|
|
571233
|
+
writeFileSync45(modelfilePath, modelfileContent + "\n", "utf8");
|
|
571013
571234
|
execSync50(`ollama create ${targetModel} -f ${modelfilePath}`, {
|
|
571014
571235
|
stdio: "pipe",
|
|
571015
571236
|
timeout: 12e4
|
|
@@ -571026,7 +571247,7 @@ async function createExpandedVariantNamedAsync(targetModel, baseModel, specs, si
|
|
|
571026
571247
|
const modelDir2 = join103(homedir30(), ".omnius", "models");
|
|
571027
571248
|
mkdirSync50(modelDir2, { recursive: true });
|
|
571028
571249
|
const modelfilePath = join103(modelDir2, `Modelfile.${targetModel}`);
|
|
571029
|
-
|
|
571250
|
+
writeFileSync45(modelfilePath, modelfileContent + "\n", "utf8");
|
|
571030
571251
|
await execAsync2(`ollama create ${targetModel} -f ${modelfilePath}`, {
|
|
571031
571252
|
timeout: 12e4
|
|
571032
571253
|
});
|
|
@@ -571364,7 +571585,7 @@ var init_setup = __esm({
|
|
|
571364
571585
|
init_config();
|
|
571365
571586
|
init_dist();
|
|
571366
571587
|
init_tui_select();
|
|
571367
|
-
execAsync2 = promisify6(
|
|
571588
|
+
execAsync2 = promisify6(exec3);
|
|
571368
571589
|
OMNIUS_FIRST_RUN_BANNER = [
|
|
571369
571590
|
" ░▒▓██████▓▒░░▒▓██████████████▓▒░░▒▓███████▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓███████▓▒░ ",
|
|
571370
571591
|
"░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ",
|
|
@@ -575296,11 +575517,11 @@ __export(daemon_exports, {
|
|
|
575296
575517
|
stopDaemon: () => stopDaemon
|
|
575297
575518
|
});
|
|
575298
575519
|
import { spawn as spawn26 } from "node:child_process";
|
|
575299
|
-
import { existsSync as existsSync92, readFileSync as readFileSync73, writeFileSync as
|
|
575520
|
+
import { existsSync as existsSync92, readFileSync as readFileSync73, writeFileSync as writeFileSync46, mkdirSync as mkdirSync51, unlinkSync as unlinkSync16, openSync as openSync3, closeSync as closeSync3 } from "node:fs";
|
|
575300
575521
|
import { join as join107 } from "node:path";
|
|
575301
575522
|
import { homedir as homedir32 } from "node:os";
|
|
575302
575523
|
import { fileURLToPath as fileURLToPath14 } from "node:url";
|
|
575303
|
-
import { dirname as
|
|
575524
|
+
import { dirname as dirname30 } from "node:path";
|
|
575304
575525
|
function getDaemonPort() {
|
|
575305
575526
|
const env2 = process.env["OMNIUS_HOST"];
|
|
575306
575527
|
if (env2) {
|
|
@@ -575357,15 +575578,15 @@ async function resolveDaemonCommand(nodeExe) {
|
|
|
575357
575578
|
if (process.argv[1]) candidates.push(process.argv[1]);
|
|
575358
575579
|
try {
|
|
575359
575580
|
const { spawnSync: spawnSync7 } = await import("node:child_process");
|
|
575360
|
-
const
|
|
575581
|
+
const which3 = spawnSync7(process.platform === "win32" ? "where" : "which", ["omnius"], {
|
|
575361
575582
|
encoding: "utf8",
|
|
575362
575583
|
stdio: ["ignore", "pipe", "ignore"]
|
|
575363
575584
|
});
|
|
575364
|
-
const first2 =
|
|
575585
|
+
const first2 = which3.stdout?.split(/\r?\n/).map((line) => line.trim()).find(Boolean);
|
|
575365
575586
|
if (first2) candidates.push(first2);
|
|
575366
575587
|
} catch {
|
|
575367
575588
|
}
|
|
575368
|
-
const thisDir =
|
|
575589
|
+
const thisDir = dirname30(fileURLToPath14(import.meta.url));
|
|
575369
575590
|
candidates.push(join107(thisDir, "index.js"));
|
|
575370
575591
|
const seen = /* @__PURE__ */ new Set();
|
|
575371
575592
|
for (const candidate of candidates) {
|
|
@@ -575398,7 +575619,7 @@ async function startDaemon() {
|
|
|
575398
575619
|
child.unref();
|
|
575399
575620
|
const pid = child.pid ?? null;
|
|
575400
575621
|
if (pid) {
|
|
575401
|
-
|
|
575622
|
+
writeFileSync46(PID_FILE2, String(pid), "utf8");
|
|
575402
575623
|
}
|
|
575403
575624
|
return pid;
|
|
575404
575625
|
} catch {
|
|
@@ -575936,7 +576157,7 @@ __export(sponsor_wizard_exports, {
|
|
|
575936
576157
|
saveSponsorConfig: () => saveSponsorConfig,
|
|
575937
576158
|
showSponsorDashboard: () => showSponsorDashboard
|
|
575938
576159
|
});
|
|
575939
|
-
import { existsSync as existsSync93, readFileSync as readFileSync74, writeFileSync as
|
|
576160
|
+
import { existsSync as existsSync93, readFileSync as readFileSync74, writeFileSync as writeFileSync47, mkdirSync as mkdirSync52 } from "node:fs";
|
|
575940
576161
|
import { join as join108 } from "node:path";
|
|
575941
576162
|
function colorPreview(code8) {
|
|
575942
576163
|
return `\x1B[38;5;${code8}m████\x1B[0m (${code8})`;
|
|
@@ -575968,7 +576189,7 @@ function saveSponsorConfig(projectDir2, config) {
|
|
|
575968
576189
|
const dir = sponsorDir(projectDir2);
|
|
575969
576190
|
mkdirSync52(dir, { recursive: true });
|
|
575970
576191
|
config.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
575971
|
-
|
|
576192
|
+
writeFileSync47(configPath(projectDir2), JSON.stringify(config, null, 2), "utf8");
|
|
575972
576193
|
}
|
|
575973
576194
|
function defaultConfig2() {
|
|
575974
576195
|
return {
|
|
@@ -576863,7 +577084,7 @@ __export(image_ascii_preview_exports, {
|
|
|
576863
577084
|
extractSavedImagePath: () => extractSavedImagePath,
|
|
576864
577085
|
formatImageAsciiContext: () => formatImageAsciiContext
|
|
576865
577086
|
});
|
|
576866
|
-
import { execFileSync as
|
|
577087
|
+
import { execFileSync as execFileSync5 } from "node:child_process";
|
|
576867
577088
|
import { createRequire as createRequire5 } from "node:module";
|
|
576868
577089
|
import { existsSync as existsSync94, readFileSync as readFileSync75, statSync as statSync32 } from "node:fs";
|
|
576869
577090
|
import { resolve as resolve38 } from "node:path";
|
|
@@ -577000,7 +577221,7 @@ function convertWithFfmpeg(imagePath, width, height, timeoutMs) {
|
|
|
577000
577221
|
`scale=${width}:${height}`,
|
|
577001
577222
|
"format=gray"
|
|
577002
577223
|
].join(",");
|
|
577003
|
-
const raw =
|
|
577224
|
+
const raw = execFileSync5(
|
|
577004
577225
|
"ffmpeg",
|
|
577005
577226
|
[
|
|
577006
577227
|
"-hide_banner",
|
|
@@ -577118,13 +577339,13 @@ __export(voice_exports, {
|
|
|
577118
577339
|
import {
|
|
577119
577340
|
existsSync as existsSync95,
|
|
577120
577341
|
mkdirSync as mkdirSync53,
|
|
577121
|
-
writeFileSync as
|
|
577342
|
+
writeFileSync as writeFileSync48,
|
|
577122
577343
|
readFileSync as readFileSync76,
|
|
577123
577344
|
unlinkSync as unlinkSync17,
|
|
577124
577345
|
readdirSync as readdirSync29,
|
|
577125
577346
|
statSync as statSync33
|
|
577126
577347
|
} from "node:fs";
|
|
577127
|
-
import { join as join109, dirname as
|
|
577348
|
+
import { join as join109, dirname as dirname31 } from "node:path";
|
|
577128
577349
|
import { homedir as homedir33, tmpdir as tmpdir20, platform as platform5 } from "node:os";
|
|
577129
577350
|
import {
|
|
577130
577351
|
execSync as execSync52,
|
|
@@ -577365,7 +577586,7 @@ function insertTagAfterOpeningClause(text, tag) {
|
|
|
577365
577586
|
function writeDetectTorchScript(targetPath) {
|
|
577366
577587
|
if (existsSync95(targetPath)) return;
|
|
577367
577588
|
try {
|
|
577368
|
-
mkdirSync53(
|
|
577589
|
+
mkdirSync53(dirname31(targetPath), { recursive: true });
|
|
577369
577590
|
} catch {
|
|
577370
577591
|
}
|
|
577371
577592
|
const script = `#!/usr/bin/env python3
|
|
@@ -577438,7 +577659,7 @@ def main():
|
|
|
577438
577659
|
if __name__ == "__main__": main()
|
|
577439
577660
|
`;
|
|
577440
577661
|
try {
|
|
577441
|
-
|
|
577662
|
+
writeFileSync48(targetPath, script, { mode: 493 });
|
|
577442
577663
|
} catch {
|
|
577443
577664
|
}
|
|
577444
577665
|
}
|
|
@@ -578435,7 +578656,7 @@ except Exception as exc:
|
|
|
578435
578656
|
const destPath = join109(refsDir, destFilename);
|
|
578436
578657
|
try {
|
|
578437
578658
|
const data = readFileSync76(audioPath);
|
|
578438
|
-
|
|
578659
|
+
writeFileSync48(destPath, data);
|
|
578439
578660
|
} catch (err) {
|
|
578440
578661
|
return `Failed to copy audio file: ${err instanceof Error ? err.message : String(err)}`;
|
|
578441
578662
|
}
|
|
@@ -578506,7 +578727,7 @@ except Exception as exc:
|
|
|
578506
578727
|
saveCloneMeta(meta) {
|
|
578507
578728
|
const dir = luxttsCloneRefsDir();
|
|
578508
578729
|
if (!existsSync95(dir)) mkdirSync53(dir, { recursive: true });
|
|
578509
|
-
|
|
578730
|
+
writeFileSync48(_VoiceEngine.cloneMetaFile(), JSON.stringify(meta, null, 2));
|
|
578510
578731
|
}
|
|
578511
578732
|
/** Audio file extensions recognized as clone references */
|
|
578512
578733
|
static AUDIO_EXTS = /* @__PURE__ */ new Set([
|
|
@@ -579131,7 +579352,7 @@ except Exception as exc:
|
|
|
579131
579352
|
);
|
|
579132
579353
|
pos += 2;
|
|
579133
579354
|
}
|
|
579134
|
-
|
|
579355
|
+
writeFileSync48(path11, buffer2);
|
|
579135
579356
|
}
|
|
579136
579357
|
// -------------------------------------------------------------------------
|
|
579137
579358
|
// Phonemization
|
|
@@ -579210,7 +579431,7 @@ except Exception as exc:
|
|
|
579210
579431
|
return buffer2;
|
|
579211
579432
|
}
|
|
579212
579433
|
writeWav(samples, sampleRate, path11) {
|
|
579213
|
-
|
|
579434
|
+
writeFileSync48(path11, this.buildWavBuffer(samples, sampleRate));
|
|
579214
579435
|
}
|
|
579215
579436
|
// -------------------------------------------------------------------------
|
|
579216
579437
|
// Audio playback (system default speakers)
|
|
@@ -579345,7 +579566,7 @@ except Exception as exc:
|
|
|
579345
579566
|
}
|
|
579346
579567
|
saveSupertonicStore(store2) {
|
|
579347
579568
|
mkdirSync53(voiceDir2(), { recursive: true });
|
|
579348
|
-
|
|
579569
|
+
writeFileSync48(
|
|
579349
579570
|
supertonicProfilesFile(),
|
|
579350
579571
|
JSON.stringify(store2, null, 2),
|
|
579351
579572
|
"utf-8"
|
|
@@ -579399,7 +579620,7 @@ except Exception as exc:
|
|
|
579399
579620
|
}
|
|
579400
579621
|
writeSupertonicInferScript() {
|
|
579401
579622
|
mkdirSync53(voiceDir2(), { recursive: true });
|
|
579402
|
-
|
|
579623
|
+
writeFileSync48(supertonicInferScript2(), SUPERTONIC_INFER_PY2, "utf-8");
|
|
579403
579624
|
}
|
|
579404
579625
|
supertonicRequest(req2, timeoutMs = 12e4) {
|
|
579405
579626
|
return new Promise((resolve49, reject) => {
|
|
@@ -579683,7 +579904,7 @@ Error: ${err2 instanceof Error ? err2.message : String(err2)}`
|
|
|
579683
579904
|
header,
|
|
579684
579905
|
Buffer.from(samples.buffer, samples.byteOffset, samples.byteLength)
|
|
579685
579906
|
]);
|
|
579686
|
-
|
|
579907
|
+
writeFileSync48(wavPath, scaled);
|
|
579687
579908
|
}
|
|
579688
579909
|
} catch {
|
|
579689
579910
|
}
|
|
@@ -580316,7 +580537,7 @@ if __name__ == '__main__':
|
|
|
580316
580537
|
`;
|
|
580317
580538
|
const scriptPath2 = luxttsInferScript2();
|
|
580318
580539
|
mkdirSync53(voiceDir2(), { recursive: true });
|
|
580319
|
-
|
|
580540
|
+
writeFileSync48(scriptPath2, script);
|
|
580320
580541
|
}
|
|
580321
580542
|
/** Ensure the LuxTTS daemon is running, spawn if needed */
|
|
580322
580543
|
async ensureLuxttsDaemon() {
|
|
@@ -580465,7 +580686,7 @@ if __name__ == '__main__':
|
|
|
580465
580686
|
header,
|
|
580466
580687
|
Buffer.from(samples.buffer, samples.byteOffset, samples.byteLength)
|
|
580467
580688
|
]);
|
|
580468
|
-
|
|
580689
|
+
writeFileSync48(wavPath, scaled);
|
|
580469
580690
|
}
|
|
580470
580691
|
} catch {
|
|
580471
580692
|
}
|
|
@@ -580596,13 +580817,13 @@ if __name__ == '__main__':
|
|
|
580596
580817
|
const existing = JSON.parse(readFileSync76(pkgPath, "utf8"));
|
|
580597
580818
|
if (!existing.dependencies?.["phonemizer"]) {
|
|
580598
580819
|
existing.dependencies = { ...existing.dependencies, ...expectedDeps };
|
|
580599
|
-
|
|
580820
|
+
writeFileSync48(pkgPath, JSON.stringify(existing, null, 2));
|
|
580600
580821
|
}
|
|
580601
580822
|
} catch {
|
|
580602
580823
|
}
|
|
580603
580824
|
}
|
|
580604
580825
|
if (!existsSync95(pkgPath)) {
|
|
580605
|
-
|
|
580826
|
+
writeFileSync48(
|
|
580606
580827
|
pkgPath,
|
|
580607
580828
|
JSON.stringify(
|
|
580608
580829
|
{
|
|
@@ -580705,7 +580926,7 @@ Error: ${err instanceof Error ? err.message : String(err)}`
|
|
|
580705
580926
|
if (!configResp.ok)
|
|
580706
580927
|
throw new Error(`Failed to download config: HTTP ${configResp.status}`);
|
|
580707
580928
|
const configText = await configResp.text();
|
|
580708
|
-
|
|
580929
|
+
writeFileSync48(configPath2, configText);
|
|
580709
580930
|
}
|
|
580710
580931
|
if (!existsSync95(onnxPath)) {
|
|
580711
580932
|
renderInfo(
|
|
@@ -580737,7 +580958,7 @@ Error: ${err instanceof Error ? err.message : String(err)}`
|
|
|
580737
580958
|
}
|
|
580738
580959
|
}
|
|
580739
580960
|
const fullBuffer = Buffer.concat(chunks);
|
|
580740
|
-
|
|
580961
|
+
writeFileSync48(onnxPath, fullBuffer);
|
|
580741
580962
|
renderInfo(
|
|
580742
580963
|
`${model.label} model downloaded (${formatBytes4(fullBuffer.length)}).`
|
|
580743
580964
|
);
|
|
@@ -580913,7 +581134,7 @@ import { execSync as nodeExecSync } from "node:child_process";
|
|
|
580913
581134
|
import {
|
|
580914
581135
|
existsSync as existsSync96,
|
|
580915
581136
|
readFileSync as readFileSync77,
|
|
580916
|
-
writeFileSync as
|
|
581137
|
+
writeFileSync as writeFileSync49,
|
|
580917
581138
|
mkdirSync as mkdirSync54,
|
|
580918
581139
|
readdirSync as readdirSync30,
|
|
580919
581140
|
lstatSync,
|
|
@@ -581177,12 +581398,12 @@ async function ensureVoiceDeps(ctx3) {
|
|
|
581177
581398
|
renderInfo(res.log.split("\n").slice(-3).join(" ").slice(0, 200));
|
|
581178
581399
|
}
|
|
581179
581400
|
if (typeof mod2.getVenvPython === "function") {
|
|
581180
|
-
const { dirname:
|
|
581401
|
+
const { dirname: dirname40 } = await import("node:path");
|
|
581181
581402
|
const { existsSync: existsSync124 } = await import("node:fs");
|
|
581182
581403
|
const venvPy = mod2.getVenvPython();
|
|
581183
581404
|
if (existsSync124(venvPy)) {
|
|
581184
581405
|
process.env.TRANSCRIBE_PYTHON = venvPy;
|
|
581185
|
-
const venvBin =
|
|
581406
|
+
const venvBin = dirname40(venvPy);
|
|
581186
581407
|
const sep3 = process.platform === "win32" ? ";" : ":";
|
|
581187
581408
|
const cur = process.env.PATH || "";
|
|
581188
581409
|
if (!cur.split(sep3).includes(venvBin)) {
|
|
@@ -581618,13 +581839,13 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
581618
581839
|
try {
|
|
581619
581840
|
const { randomBytes: randomBytes26 } = await import("node:crypto");
|
|
581620
581841
|
const { homedir: homedir48 } = await import("node:os");
|
|
581621
|
-
const { mkdirSync: mkdirSync77, writeFileSync:
|
|
581842
|
+
const { mkdirSync: mkdirSync77, writeFileSync: writeFileSync70 } = await import("node:fs");
|
|
581622
581843
|
const { join: join142 } = await import("node:path");
|
|
581623
581844
|
const newKey = randomBytes26(16).toString("hex");
|
|
581624
581845
|
process.env["OMNIUS_API_KEY"] = newKey;
|
|
581625
581846
|
const dir = join142(homedir48(), ".omnius");
|
|
581626
581847
|
mkdirSync77(dir, { recursive: true });
|
|
581627
|
-
|
|
581848
|
+
writeFileSync70(join142(dir, "api.key"), newKey + "\n", "utf8");
|
|
581628
581849
|
renderInfo(`New API key: ${c3.bold(c3.yellow(newKey))}`);
|
|
581629
581850
|
renderInfo(
|
|
581630
581851
|
"Restart the daemon to apply if needed. Use /access any to restart quickly."
|
|
@@ -581886,11 +582107,11 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
581886
582107
|
);
|
|
581887
582108
|
try {
|
|
581888
582109
|
const { homedir: homedir49 } = await import("node:os");
|
|
581889
|
-
const { mkdirSync: mkdirSync78, writeFileSync:
|
|
582110
|
+
const { mkdirSync: mkdirSync78, writeFileSync: writeFileSync71 } = await import("node:fs");
|
|
581890
582111
|
const { join: join143 } = await import("node:path");
|
|
581891
582112
|
const dir = join143(homedir49(), ".omnius");
|
|
581892
582113
|
mkdirSync78(dir, { recursive: true });
|
|
581893
|
-
|
|
582114
|
+
writeFileSync71(join143(dir, "api.key"), apiKey + "\n", "utf8");
|
|
581894
582115
|
} catch {
|
|
581895
582116
|
}
|
|
581896
582117
|
}
|
|
@@ -581902,11 +582123,11 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
581902
582123
|
const port2 = parseInt(process.env["OMNIUS_PORT"] || "11435", 10);
|
|
581903
582124
|
try {
|
|
581904
582125
|
const { homedir: homedir49 } = await import("node:os");
|
|
581905
|
-
const { mkdirSync: mkdirSync78, writeFileSync:
|
|
582126
|
+
const { mkdirSync: mkdirSync78, writeFileSync: writeFileSync71 } = await import("node:fs");
|
|
581906
582127
|
const { join: join143 } = await import("node:path");
|
|
581907
582128
|
const dir = join143(homedir49(), ".omnius");
|
|
581908
582129
|
mkdirSync78(dir, { recursive: true });
|
|
581909
|
-
|
|
582130
|
+
writeFileSync71(join143(dir, "access"), `${val2}
|
|
581910
582131
|
`, "utf8");
|
|
581911
582132
|
} catch {
|
|
581912
582133
|
}
|
|
@@ -582006,11 +582227,11 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
582006
582227
|
);
|
|
582007
582228
|
try {
|
|
582008
582229
|
const { homedir: homedir49 } = await import("node:os");
|
|
582009
|
-
const { mkdirSync: mkdirSync78, writeFileSync:
|
|
582230
|
+
const { mkdirSync: mkdirSync78, writeFileSync: writeFileSync71 } = await import("node:fs");
|
|
582010
582231
|
const { join: join143 } = await import("node:path");
|
|
582011
582232
|
const dir = join143(homedir49(), ".omnius");
|
|
582012
582233
|
mkdirSync78(dir, { recursive: true });
|
|
582013
|
-
|
|
582234
|
+
writeFileSync71(join143(dir, "api.key"), apiKey + "\n", "utf8");
|
|
582014
582235
|
} catch {
|
|
582015
582236
|
}
|
|
582016
582237
|
}
|
|
@@ -582021,12 +582242,12 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
582021
582242
|
}
|
|
582022
582243
|
const port = parseInt(process.env["OMNIUS_PORT"] || "11435", 10);
|
|
582023
582244
|
const { homedir: homedir48 } = await import("node:os");
|
|
582024
|
-
const { mkdirSync: mkdirSync77, writeFileSync:
|
|
582245
|
+
const { mkdirSync: mkdirSync77, writeFileSync: writeFileSync70 } = await import("node:fs");
|
|
582025
582246
|
const { join: join142 } = await import("node:path");
|
|
582026
582247
|
try {
|
|
582027
582248
|
const dir = join142(homedir48(), ".omnius");
|
|
582028
582249
|
mkdirSync77(dir, { recursive: true });
|
|
582029
|
-
|
|
582250
|
+
writeFileSync70(join142(dir, "access"), `${val}
|
|
582030
582251
|
`, "utf8");
|
|
582031
582252
|
} catch (e2) {
|
|
582032
582253
|
renderWarning(
|
|
@@ -583347,7 +583568,7 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
583347
583568
|
};
|
|
583348
583569
|
const jwtFile = join110(ctx3.repoRoot, ".omnius", "fortemi-jwt.json");
|
|
583349
583570
|
mkdirSync54(join110(ctx3.repoRoot, ".omnius"), { recursive: true });
|
|
583350
|
-
|
|
583571
|
+
writeFileSync49(jwtFile, JSON.stringify(jwtPayload, null, 2));
|
|
583351
583572
|
renderInfo(`Launching fortemi-react from ${fDir}...`);
|
|
583352
583573
|
try {
|
|
583353
583574
|
const { spawn: spawn31 } = __require("node:child_process");
|
|
@@ -583366,7 +583587,7 @@ async function handleSlashCommand(input, ctx3) {
|
|
|
583366
583587
|
renderInfo(`JWT saved to ${jwtFile}`);
|
|
583367
583588
|
renderInfo("Memory operations will proxy to fortemi when available.");
|
|
583368
583589
|
const bridgeFile = join110(ctx3.repoRoot, ".omnius", "fortemi-bridge.json");
|
|
583369
|
-
|
|
583590
|
+
writeFileSync49(
|
|
583370
583591
|
bridgeFile,
|
|
583371
583592
|
JSON.stringify(
|
|
583372
583593
|
{
|
|
@@ -590100,13 +590321,13 @@ async function handleSponsoredEndpoint(ctx3, local) {
|
|
|
590100
590321
|
sponsors.push(...verified);
|
|
590101
590322
|
if (verified.length > 0) {
|
|
590102
590323
|
try {
|
|
590103
|
-
const { mkdirSync: mkdirSync77, writeFileSync:
|
|
590324
|
+
const { mkdirSync: mkdirSync77, writeFileSync: writeFileSync70 } = __require("node:fs");
|
|
590104
590325
|
mkdirSync77(sponsorDir2, { recursive: true });
|
|
590105
590326
|
const cached = verified.map((s2) => ({
|
|
590106
590327
|
...s2,
|
|
590107
590328
|
lastVerified: Date.now()
|
|
590108
590329
|
}));
|
|
590109
|
-
|
|
590330
|
+
writeFileSync70(knownFile, JSON.stringify(cached, null, 2));
|
|
590110
590331
|
} catch {
|
|
590111
590332
|
}
|
|
590112
590333
|
}
|
|
@@ -590224,7 +590445,7 @@ async function handleSponsoredEndpoint(ctx3, local) {
|
|
|
590224
590445
|
(s2) => (s2.url || s2.peerId || s2.name) !== saveKey
|
|
590225
590446
|
);
|
|
590226
590447
|
updated.push(selected);
|
|
590227
|
-
|
|
590448
|
+
writeFileSync49(knownFile, JSON.stringify(updated, null, 2), "utf8");
|
|
590228
590449
|
} catch {
|
|
590229
590450
|
}
|
|
590230
590451
|
renderInfo(`Connected to sponsored endpoint: ${selected.name}`);
|
|
@@ -590308,16 +590529,16 @@ async function handlePeerEndpoint(peerId, authKey, ctx3, local) {
|
|
|
590308
590529
|
const models = await fetchModels(peerUrl, authKey);
|
|
590309
590530
|
if (models.length > 0) {
|
|
590310
590531
|
try {
|
|
590311
|
-
const { writeFileSync:
|
|
590312
|
-
const { join: join142, dirname:
|
|
590532
|
+
const { writeFileSync: writeFileSync70, mkdirSync: mkdirSync77 } = await import("node:fs");
|
|
590533
|
+
const { join: join142, dirname: dirname40 } = await import("node:path");
|
|
590313
590534
|
const cachePath = join142(
|
|
590314
590535
|
ctx3.repoRoot || process.cwd(),
|
|
590315
590536
|
".omnius",
|
|
590316
590537
|
"nexus",
|
|
590317
590538
|
"peer-models-cache.json"
|
|
590318
590539
|
);
|
|
590319
|
-
mkdirSync77(
|
|
590320
|
-
|
|
590540
|
+
mkdirSync77(dirname40(cachePath), { recursive: true });
|
|
590541
|
+
writeFileSync70(
|
|
590321
590542
|
cachePath,
|
|
590322
590543
|
JSON.stringify(
|
|
590323
590544
|
{
|
|
@@ -591089,10 +591310,10 @@ async function handleUpdate(subcommand, ctx3) {
|
|
|
591089
591310
|
try {
|
|
591090
591311
|
const { createRequire: createRequire10 } = await import("node:module");
|
|
591091
591312
|
const { fileURLToPath: fileURLToPath20 } = await import("node:url");
|
|
591092
|
-
const { dirname:
|
|
591313
|
+
const { dirname: dirname40, join: join142 } = await import("node:path");
|
|
591093
591314
|
const { existsSync: existsSync124 } = await import("node:fs");
|
|
591094
591315
|
const req2 = createRequire10(import.meta.url);
|
|
591095
|
-
const thisDir =
|
|
591316
|
+
const thisDir = dirname40(fileURLToPath20(import.meta.url));
|
|
591096
591317
|
const candidates = [
|
|
591097
591318
|
join142(thisDir, "..", "package.json"),
|
|
591098
591319
|
join142(thisDir, "..", "..", "package.json"),
|
|
@@ -591296,9 +591517,9 @@ async function handleUpdate(subcommand, ctx3) {
|
|
|
591296
591517
|
}
|
|
591297
591518
|
};
|
|
591298
591519
|
}
|
|
591299
|
-
const { exec:
|
|
591520
|
+
const { exec: exec4, execSync: es2 } = await import("node:child_process");
|
|
591300
591521
|
const execA = (cmd, opts) => new Promise(
|
|
591301
|
-
(res, rej) =>
|
|
591522
|
+
(res, rej) => exec4(
|
|
591302
591523
|
cmd,
|
|
591303
591524
|
{
|
|
591304
591525
|
encoding: "utf8",
|
|
@@ -591611,7 +591832,7 @@ async function handleUpdate(subcommand, ctx3) {
|
|
|
591611
591832
|
_installTotal = 20;
|
|
591612
591833
|
_installPhase = "Preparing...";
|
|
591613
591834
|
const runInstall2 = (cmd) => new Promise((resolve49) => {
|
|
591614
|
-
const child =
|
|
591835
|
+
const child = exec4(cmd, { timeout: 18e4 }, (err, _stdout, stderr) => {
|
|
591615
591836
|
if (err) installError = (stderr || err.message || "").trim();
|
|
591616
591837
|
resolve49(!err);
|
|
591617
591838
|
});
|
|
@@ -591890,7 +592111,7 @@ async function handleUpdate(subcommand, ctx3) {
|
|
|
591890
592111
|
installOverlay.setPhase("Native Modules");
|
|
591891
592112
|
installOverlay.setStatus("Rebuilding native modules...");
|
|
591892
592113
|
await new Promise((resolve49) => {
|
|
591893
|
-
const child =
|
|
592114
|
+
const child = exec4(
|
|
591894
592115
|
`${sudoPrefix}npm rebuild -g omnius 2>/dev/null || true`,
|
|
591895
592116
|
{ timeout: 12e4 },
|
|
591896
592117
|
() => resolve49(true)
|
|
@@ -591932,7 +592153,7 @@ async function handleUpdate(subcommand, ctx3) {
|
|
|
591932
592153
|
if (fsExists(venvPip2)) {
|
|
591933
592154
|
installOverlay.setStatus("Upgrading Python packages...");
|
|
591934
592155
|
await new Promise((resolve49) => {
|
|
591935
|
-
const child =
|
|
592156
|
+
const child = exec4(
|
|
591936
592157
|
`"${venvPip2}" install --upgrade moondream-station pytesseract Pillow opencv-python-headless numpy 2>/dev/null || true`,
|
|
591937
592158
|
{ timeout: 3e5 },
|
|
591938
592159
|
(err) => resolve49(!err)
|
|
@@ -592557,13 +592778,13 @@ var init_commands = __esm({
|
|
|
592557
592778
|
try {
|
|
592558
592779
|
const { randomBytes: randomBytes26 } = await import("node:crypto");
|
|
592559
592780
|
const { homedir: homedir48 } = await import("node:os");
|
|
592560
|
-
const { mkdirSync: mkdirSync77, writeFileSync:
|
|
592781
|
+
const { mkdirSync: mkdirSync77, writeFileSync: writeFileSync70 } = await import("node:fs");
|
|
592561
592782
|
const { join: join142 } = await import("node:path");
|
|
592562
592783
|
const apiKey = randomBytes26(16).toString("hex");
|
|
592563
592784
|
process.env["OMNIUS_API_KEY"] = apiKey;
|
|
592564
592785
|
const dir = join142(homedir48(), ".omnius");
|
|
592565
592786
|
mkdirSync77(dir, { recursive: true });
|
|
592566
|
-
|
|
592787
|
+
writeFileSync70(join142(dir, "api.key"), apiKey + "\n", "utf8");
|
|
592567
592788
|
renderInfo(`Generated API key: ${c3.bold(c3.yellow(apiKey))}`);
|
|
592568
592789
|
renderInfo(
|
|
592569
592790
|
"Use Authorization: Bearer <key> or click 'key' in the Web UI header to paste it."
|
|
@@ -592582,11 +592803,11 @@ var init_commands = __esm({
|
|
|
592582
592803
|
const port = parseInt(process.env["OMNIUS_PORT"] || "11435", 10);
|
|
592583
592804
|
try {
|
|
592584
592805
|
const { homedir: homedir48 } = await import("node:os");
|
|
592585
|
-
const { mkdirSync: mkdirSync77, writeFileSync:
|
|
592806
|
+
const { mkdirSync: mkdirSync77, writeFileSync: writeFileSync70 } = await import("node:fs");
|
|
592586
592807
|
const { join: join142 } = await import("node:path");
|
|
592587
592808
|
const dir = join142(homedir48(), ".omnius");
|
|
592588
592809
|
mkdirSync77(dir, { recursive: true });
|
|
592589
|
-
|
|
592810
|
+
writeFileSync70(join142(dir, "access"), `${val}
|
|
592590
592811
|
`, "utf8");
|
|
592591
592812
|
} catch {
|
|
592592
592813
|
}
|
|
@@ -593376,7 +593597,7 @@ __export(banner_exports, {
|
|
|
593376
593597
|
setBannerWriter: () => setBannerWriter,
|
|
593377
593598
|
setGridText: () => setGridText
|
|
593378
593599
|
});
|
|
593379
|
-
import { existsSync as existsSync98, readFileSync as readFileSync79, writeFileSync as
|
|
593600
|
+
import { existsSync as existsSync98, readFileSync as readFileSync79, writeFileSync as writeFileSync50, mkdirSync as mkdirSync55 } from "node:fs";
|
|
593380
593601
|
import { join as join112 } from "node:path";
|
|
593381
593602
|
function setBannerWriter(writer) {
|
|
593382
593603
|
chromeWrite3 = writer;
|
|
@@ -593512,7 +593733,7 @@ function createSponsorBanner(sponsorName, tagline, primaryColor = 214, bgColor =
|
|
|
593512
593733
|
function saveBannerDesign(workDir, design) {
|
|
593513
593734
|
const dir = join112(workDir, ".omnius", "banners");
|
|
593514
593735
|
mkdirSync55(dir, { recursive: true });
|
|
593515
|
-
|
|
593736
|
+
writeFileSync50(join112(dir, `${design.id}.json`), JSON.stringify(design, null, 2), "utf8");
|
|
593516
593737
|
}
|
|
593517
593738
|
function loadBannerDesign(workDir, id) {
|
|
593518
593739
|
const file = join112(workDir, ".omnius", "banners", `${id}.json`);
|
|
@@ -593848,7 +594069,7 @@ var init_banner = __esm({
|
|
|
593848
594069
|
});
|
|
593849
594070
|
|
|
593850
594071
|
// packages/cli/src/tui/carousel-descriptors.ts
|
|
593851
|
-
import { existsSync as existsSync99, readFileSync as readFileSync80, writeFileSync as
|
|
594072
|
+
import { existsSync as existsSync99, readFileSync as readFileSync80, writeFileSync as writeFileSync51, mkdirSync as mkdirSync56, readdirSync as readdirSync32 } from "node:fs";
|
|
593852
594073
|
import { join as join113, basename as basename20 } from "node:path";
|
|
593853
594074
|
function loadToolProfile(repoRoot) {
|
|
593854
594075
|
const filePath = join113(repoRoot, OMNIUS_DIR, "context", TOOL_PROFILE_FILE);
|
|
@@ -593862,7 +594083,7 @@ function loadToolProfile(repoRoot) {
|
|
|
593862
594083
|
function saveToolProfile(repoRoot, profile) {
|
|
593863
594084
|
const contextDir = join113(repoRoot, OMNIUS_DIR, "context");
|
|
593864
594085
|
mkdirSync56(contextDir, { recursive: true });
|
|
593865
|
-
|
|
594086
|
+
writeFileSync51(join113(contextDir, TOOL_PROFILE_FILE), JSON.stringify(profile, null, 2), "utf-8");
|
|
593866
594087
|
}
|
|
593867
594088
|
function categorizeToolCall(toolName) {
|
|
593868
594089
|
for (const cat2 of TOOL_CATEGORIES) {
|
|
@@ -593934,7 +594155,7 @@ function saveCachedDescriptors(repoRoot, phrases, sourceHash) {
|
|
|
593934
594155
|
generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
593935
594156
|
sourceHash
|
|
593936
594157
|
};
|
|
593937
|
-
|
|
594158
|
+
writeFileSync51(join113(contextDir, DESCRIPTOR_FILE), JSON.stringify(cached, null, 2), "utf-8");
|
|
593938
594159
|
}
|
|
593939
594160
|
function generateDescriptors(repoRoot) {
|
|
593940
594161
|
const profile = loadToolProfile(repoRoot);
|
|
@@ -594935,7 +595156,7 @@ var init_edit_history = __esm({
|
|
|
594935
595156
|
|
|
594936
595157
|
// packages/cli/src/tui/promptLoader.ts
|
|
594937
595158
|
import { readFileSync as readFileSync81, existsSync as existsSync100 } from "node:fs";
|
|
594938
|
-
import { join as join115, dirname as
|
|
595159
|
+
import { join as join115, dirname as dirname32 } from "node:path";
|
|
594939
595160
|
import { fileURLToPath as fileURLToPath15 } from "node:url";
|
|
594940
595161
|
function loadPrompt3(promptPath, vars) {
|
|
594941
595162
|
let content = cache7.get(promptPath);
|
|
@@ -594955,7 +595176,7 @@ var init_promptLoader3 = __esm({
|
|
|
594955
595176
|
"packages/cli/src/tui/promptLoader.ts"() {
|
|
594956
595177
|
"use strict";
|
|
594957
595178
|
__filename5 = fileURLToPath15(import.meta.url);
|
|
594958
|
-
__dirname7 =
|
|
595179
|
+
__dirname7 = dirname32(__filename5);
|
|
594959
595180
|
devPath2 = join115(__dirname7, "..", "..", "prompts");
|
|
594960
595181
|
publishedPath2 = join115(__dirname7, "..", "prompts");
|
|
594961
595182
|
PROMPTS_DIR3 = existsSync100(devPath2) ? devPath2 : publishedPath2;
|
|
@@ -594964,7 +595185,7 @@ var init_promptLoader3 = __esm({
|
|
|
594964
595185
|
});
|
|
594965
595186
|
|
|
594966
595187
|
// packages/cli/src/tui/dream-engine.ts
|
|
594967
|
-
import { mkdirSync as mkdirSync58, writeFileSync as
|
|
595188
|
+
import { mkdirSync as mkdirSync58, writeFileSync as writeFileSync52, readFileSync as readFileSync82, existsSync as existsSync101, readdirSync as readdirSync33 } from "node:fs";
|
|
594968
595189
|
import { join as join116, basename as basename21 } from "node:path";
|
|
594969
595190
|
import { execSync as execSync54 } from "node:child_process";
|
|
594970
595191
|
function setDreamWriteContent(fn) {
|
|
@@ -595185,7 +595406,7 @@ var init_dream_engine = __esm({
|
|
|
595185
595406
|
try {
|
|
595186
595407
|
const dir = join116(targetPath, "..");
|
|
595187
595408
|
mkdirSync58(dir, { recursive: true });
|
|
595188
|
-
|
|
595409
|
+
writeFileSync52(targetPath, content, "utf-8");
|
|
595189
595410
|
return { success: true, output: `Wrote ${content.length} bytes to ${rawPath}`, durationMs: Date.now() - start2 };
|
|
595190
595411
|
} catch (err) {
|
|
595191
595412
|
return { success: false, output: "", error: String(err), durationMs: Date.now() - start2 };
|
|
@@ -595226,7 +595447,7 @@ var init_dream_engine = __esm({
|
|
|
595226
595447
|
return { success: false, output: "", error: "old_string not found in file", durationMs: Date.now() - start2 };
|
|
595227
595448
|
}
|
|
595228
595449
|
content = content.replace(oldStr, newStr);
|
|
595229
|
-
|
|
595450
|
+
writeFileSync52(targetPath, content, "utf-8");
|
|
595230
595451
|
return { success: true, output: `Edited ${rawPath}`, durationMs: Date.now() - start2 };
|
|
595231
595452
|
} catch (err) {
|
|
595232
595453
|
return { success: false, output: "", error: String(err), durationMs: Date.now() - start2 };
|
|
@@ -595273,7 +595494,7 @@ var init_dream_engine = __esm({
|
|
|
595273
595494
|
try {
|
|
595274
595495
|
const dir = join116(targetPath, "..");
|
|
595275
595496
|
mkdirSync58(dir, { recursive: true });
|
|
595276
|
-
|
|
595497
|
+
writeFileSync52(targetPath, content, "utf-8");
|
|
595277
595498
|
return { success: true, output: `Wrote ${content.length} bytes to ${rawPath}`, durationMs: Date.now() - start2 };
|
|
595278
595499
|
} catch (err) {
|
|
595279
595500
|
return { success: false, output: "", error: String(err), durationMs: Date.now() - start2 };
|
|
@@ -595314,7 +595535,7 @@ var init_dream_engine = __esm({
|
|
|
595314
595535
|
return { success: false, output: "", error: "old_string not found in file", durationMs: Date.now() - start2 };
|
|
595315
595536
|
}
|
|
595316
595537
|
content = content.replace(oldStr, newStr);
|
|
595317
|
-
|
|
595538
|
+
writeFileSync52(targetPath, content, "utf-8");
|
|
595318
595539
|
return { success: true, output: `Edited ${rawPath}`, durationMs: Date.now() - start2 };
|
|
595319
595540
|
} catch (err) {
|
|
595320
595541
|
return { success: false, output: "", error: String(err), durationMs: Date.now() - start2 };
|
|
@@ -595475,7 +595696,7 @@ ${result.summary}`;
|
|
|
595475
595696
|
renderDreamContraction(cycle);
|
|
595476
595697
|
const cycleSummary = this.buildCycleSummary(cycle, previousFindings);
|
|
595477
595698
|
const summaryPath = join116(this.dreamsDir, `cycle-${cycle}-summary.md`);
|
|
595478
|
-
|
|
595699
|
+
writeFileSync52(summaryPath, cycleSummary, "utf-8");
|
|
595479
595700
|
}
|
|
595480
595701
|
if (mode === "lucid" && !this.abortController.signal.aborted) {
|
|
595481
595702
|
this.saveVersionCheckpoint(cycle);
|
|
@@ -596138,7 +596359,7 @@ ${summaryResult}
|
|
|
596138
596359
|
`;
|
|
596139
596360
|
try {
|
|
596140
596361
|
mkdirSync58(this.dreamsDir, { recursive: true });
|
|
596141
|
-
|
|
596362
|
+
writeFileSync52(reportPath, report2, "utf-8");
|
|
596142
596363
|
} catch {
|
|
596143
596364
|
}
|
|
596144
596365
|
renderSwarmComplete(workspace);
|
|
@@ -596230,7 +596451,7 @@ ${summaryResult}
|
|
|
596230
596451
|
return { success: false, output: "", error: "todos must be an array" };
|
|
596231
596452
|
}
|
|
596232
596453
|
try {
|
|
596233
|
-
|
|
596454
|
+
writeFileSync52(todoPath3, JSON.stringify({ todos, updatedAt: (/* @__PURE__ */ new Date()).toISOString() }, null, 2), "utf-8");
|
|
596234
596455
|
const summary = todos.map(
|
|
596235
596456
|
(t2, i2) => ` ${t2.status === "completed" ? "✓" : t2.status === "in_progress" ? "▶" : "◯"} ${i2 + 1}: ${t2.content || "(untitled)"}`
|
|
596236
596457
|
).join("\n");
|
|
@@ -596278,11 +596499,11 @@ ${summary}` };
|
|
|
596278
596499
|
addedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
596279
596500
|
};
|
|
596280
596501
|
notes2.push(note);
|
|
596281
|
-
|
|
596502
|
+
writeFileSync52(notesPath, JSON.stringify(notes2, null, 2), "utf-8");
|
|
596282
596503
|
return { success: true, output: `Note added: [${note.category}] ${note.content.slice(0, 80)}` };
|
|
596283
596504
|
}
|
|
596284
596505
|
if (action === "clear") {
|
|
596285
|
-
|
|
596506
|
+
writeFileSync52(notesPath, "[]", "utf-8");
|
|
596286
596507
|
return { success: true, output: "All notes cleared." };
|
|
596287
596508
|
}
|
|
596288
596509
|
if (action === "search") {
|
|
@@ -596337,10 +596558,10 @@ ${summary}` };
|
|
|
596337
596558
|
encoding: "utf-8",
|
|
596338
596559
|
timeout: 5e3
|
|
596339
596560
|
}).trim();
|
|
596340
|
-
|
|
596341
|
-
|
|
596342
|
-
|
|
596343
|
-
|
|
596561
|
+
writeFileSync52(join116(checkpointDir3, "git-status.txt"), gitStatus, "utf-8");
|
|
596562
|
+
writeFileSync52(join116(checkpointDir3, "git-diff.patch"), gitDiff, "utf-8");
|
|
596563
|
+
writeFileSync52(join116(checkpointDir3, "git-hash.txt"), gitHash, "utf-8");
|
|
596564
|
+
writeFileSync52(
|
|
596344
596565
|
join116(checkpointDir3, "checkpoint.json"),
|
|
596345
596566
|
JSON.stringify({
|
|
596346
596567
|
cycle,
|
|
@@ -596352,7 +596573,7 @@ ${summary}` };
|
|
|
596352
596573
|
);
|
|
596353
596574
|
renderInfo(`Checkpoint saved: cycle ${cycle} (${gitHash.slice(0, 8)})`);
|
|
596354
596575
|
} catch {
|
|
596355
|
-
|
|
596576
|
+
writeFileSync52(
|
|
596356
596577
|
join116(checkpointDir3, "checkpoint.json"),
|
|
596357
596578
|
JSON.stringify({ cycle, timestamp: (/* @__PURE__ */ new Date()).toISOString(), mode: this.state.mode }, null, 2),
|
|
596358
596579
|
"utf-8"
|
|
@@ -596414,7 +596635,7 @@ ${files.map((f2) => `- [\`${f2}\`](./${f2})`).join("\n")}
|
|
|
596414
596635
|
---
|
|
596415
596636
|
*Auto-generated by omnius dream engine*
|
|
596416
596637
|
`;
|
|
596417
|
-
|
|
596638
|
+
writeFileSync52(join116(this.dreamsDir, "PROPOSAL-INDEX.md"), index, "utf-8");
|
|
596418
596639
|
} catch {
|
|
596419
596640
|
}
|
|
596420
596641
|
}
|
|
@@ -596502,7 +596723,7 @@ ${files.map((f2) => `- [\`${f2}\`](./${f2})`).join("\n")}
|
|
|
596502
596723
|
durationMs
|
|
596503
596724
|
});
|
|
596504
596725
|
try {
|
|
596505
|
-
|
|
596726
|
+
writeFileSync52(
|
|
596506
596727
|
join116(memoryDir, ".last-consolidation"),
|
|
596507
596728
|
JSON.stringify({ timestamp: (/* @__PURE__ */ new Date()).toISOString(), summary: result.summary?.slice(0, 500) }) + "\n"
|
|
596508
596729
|
);
|
|
@@ -596520,7 +596741,7 @@ ${files.map((f2) => `- [\`${f2}\`](./${f2})`).join("\n")}
|
|
|
596520
596741
|
/** Save dream state for resume/inspection */
|
|
596521
596742
|
saveDreamState() {
|
|
596522
596743
|
try {
|
|
596523
|
-
|
|
596744
|
+
writeFileSync52(
|
|
596524
596745
|
join116(this.dreamsDir, "dream-state.json"),
|
|
596525
596746
|
JSON.stringify(this.state, null, 2) + "\n",
|
|
596526
596747
|
"utf-8"
|
|
@@ -596897,7 +597118,7 @@ var init_bless_engine = __esm({
|
|
|
596897
597118
|
});
|
|
596898
597119
|
|
|
596899
597120
|
// packages/cli/src/tui/dmn-engine.ts
|
|
596900
|
-
import { existsSync as existsSync102, readFileSync as readFileSync83, writeFileSync as
|
|
597121
|
+
import { existsSync as existsSync102, readFileSync as readFileSync83, writeFileSync as writeFileSync53, mkdirSync as mkdirSync59, readdirSync as readdirSync34, unlinkSync as unlinkSync18 } from "node:fs";
|
|
596901
597122
|
import { join as join117, basename as basename22 } from "node:path";
|
|
596902
597123
|
function buildDMNGatherPrompt(recentTaskSummaries, dueReminders, attentionItems, memoryTopics, capabilities, competence, reflectionBuffer) {
|
|
596903
597124
|
const competenceReport = competence.length > 0 ? competence.map((c9) => {
|
|
@@ -597669,7 +597890,7 @@ OUTPUT: Call task_complete with JSON:
|
|
|
597669
597890
|
}
|
|
597670
597891
|
saveState() {
|
|
597671
597892
|
try {
|
|
597672
|
-
|
|
597893
|
+
writeFileSync53(
|
|
597673
597894
|
join117(this.stateDir, "state.json"),
|
|
597674
597895
|
JSON.stringify(this.state, null, 2) + "\n",
|
|
597675
597896
|
"utf-8"
|
|
@@ -597680,7 +597901,7 @@ OUTPUT: Call task_complete with JSON:
|
|
|
597680
597901
|
saveCycleResult(result) {
|
|
597681
597902
|
try {
|
|
597682
597903
|
const filename = `cycle-${result.cycleNumber}-${Date.now()}.json`;
|
|
597683
|
-
|
|
597904
|
+
writeFileSync53(
|
|
597684
597905
|
join117(this.historyDir, filename),
|
|
597685
597906
|
JSON.stringify(result, null, 2) + "\n",
|
|
597686
597907
|
"utf-8"
|
|
@@ -598621,12 +598842,12 @@ import {
|
|
|
598621
598842
|
readFileSync as readFileSync85,
|
|
598622
598843
|
statSync as statSync35,
|
|
598623
598844
|
unlinkSync as unlinkSync19,
|
|
598624
|
-
writeFileSync as
|
|
598845
|
+
writeFileSync as writeFileSync54
|
|
598625
598846
|
} from "node:fs";
|
|
598626
598847
|
import { mkdir as mkdir17 } from "node:fs/promises";
|
|
598627
598848
|
import {
|
|
598628
598849
|
basename as basename24,
|
|
598629
|
-
dirname as
|
|
598850
|
+
dirname as dirname33,
|
|
598630
598851
|
extname as extname14,
|
|
598631
598852
|
isAbsolute as isAbsolute6,
|
|
598632
598853
|
join as join119,
|
|
@@ -598778,8 +598999,8 @@ function scopedTool(base3, root, mode) {
|
|
|
598778
598999
|
if (mode === "edit" && !existsSync104(guarded.path.abs)) {
|
|
598779
599000
|
const materialized = materializeTelegramCreativeArtifactForSend(rootAbs, guarded.path.rel);
|
|
598780
599001
|
if (!materialized.ok) return denied(materialized.error);
|
|
598781
|
-
mkdirSync60(
|
|
598782
|
-
|
|
599002
|
+
mkdirSync60(dirname33(guarded.path.abs), { recursive: true });
|
|
599003
|
+
writeFileSync54(guarded.path.abs, readFileSync85(materialized.path));
|
|
598783
599004
|
materialized.cleanup?.();
|
|
598784
599005
|
restoredEditPath = guarded.path.abs;
|
|
598785
599006
|
}
|
|
@@ -598865,7 +599086,7 @@ function ensureManifest(root) {
|
|
|
598865
599086
|
mkdirSync60(root, { recursive: true });
|
|
598866
599087
|
const path11 = manifestPath(root);
|
|
598867
599088
|
if (!existsSync104(path11)) {
|
|
598868
|
-
|
|
599089
|
+
writeFileSync54(path11, JSON.stringify({ files: [], updatedAt: (/* @__PURE__ */ new Date()).toISOString() }, null, 2) + "\n", "utf8");
|
|
598869
599090
|
}
|
|
598870
599091
|
}
|
|
598871
599092
|
function readManifest(root) {
|
|
@@ -598891,7 +599112,7 @@ function readManifest(root) {
|
|
|
598891
599112
|
}
|
|
598892
599113
|
function writeManifest(root, manifest) {
|
|
598893
599114
|
ensureManifest(root);
|
|
598894
|
-
|
|
599115
|
+
writeFileSync54(manifestPath(root), JSON.stringify(manifest, null, 2) + "\n", "utf8");
|
|
598895
599116
|
}
|
|
598896
599117
|
function manifestHas(root, relPath) {
|
|
598897
599118
|
const rel = relPath.replace(/\\/g, "/");
|
|
@@ -598925,7 +599146,7 @@ function rememberCreated(root, absPath) {
|
|
|
598925
599146
|
const tag = cipher.getAuthTag();
|
|
598926
599147
|
const storedRel = join119(OBJECTS_DIR, `${Date.now()}-${randomBytes21(12).toString("hex")}.blob`).replace(/\\/g, "/");
|
|
598927
599148
|
const storedAbs = join119(root, storedRel);
|
|
598928
|
-
|
|
599149
|
+
writeFileSync54(storedAbs, Buffer.concat([prefix, encrypted]));
|
|
598929
599150
|
try {
|
|
598930
599151
|
unlinkSync19(guarded.path.abs);
|
|
598931
599152
|
} catch {
|
|
@@ -598986,7 +599207,7 @@ function materializeTelegramCreativeArtifactForSend(root, rawPath) {
|
|
|
598986
599207
|
const stageDir = join119(rootAbs, SEND_DIR, `${Date.now()}-${randomBytes21(8).toString("hex")}`);
|
|
598987
599208
|
mkdirSync60(stageDir, { recursive: true });
|
|
598988
599209
|
const staged = join119(stageDir, object.originalName || basename24(rel));
|
|
598989
|
-
|
|
599210
|
+
writeFileSync54(staged, payload);
|
|
598990
599211
|
return {
|
|
598991
599212
|
ok: true,
|
|
598992
599213
|
path: staged,
|
|
@@ -599152,7 +599373,7 @@ var init_telegram_creative_tools = __esm({
|
|
|
599152
599373
|
}
|
|
599153
599374
|
let result;
|
|
599154
599375
|
try {
|
|
599155
|
-
await mkdir17(
|
|
599376
|
+
await mkdir17(dirname33(guarded.path.abs), { recursive: true });
|
|
599156
599377
|
const tts = new TtsGenerateTool();
|
|
599157
599378
|
result = await tts.execute({
|
|
599158
599379
|
text,
|
|
@@ -599386,12 +599607,12 @@ __export(vision_ingress_exports, {
|
|
|
599386
599607
|
queryVisionModel: () => queryVisionModel,
|
|
599387
599608
|
runVisionIngress: () => runVisionIngress
|
|
599388
599609
|
});
|
|
599389
|
-
import { execFileSync as
|
|
599610
|
+
import { execFileSync as execFileSync6 } from "node:child_process";
|
|
599390
599611
|
import { existsSync as existsSync105, readFileSync as readFileSync86, unlinkSync as unlinkSync20 } from "node:fs";
|
|
599391
599612
|
import { join as join120 } from "node:path";
|
|
599392
599613
|
function isTesseractAvailable() {
|
|
599393
599614
|
try {
|
|
599394
|
-
|
|
599615
|
+
execFileSync6("tesseract", ["--version"], { stdio: "ignore", timeout: 3e3 });
|
|
599395
599616
|
return true;
|
|
599396
599617
|
} catch {
|
|
599397
599618
|
return false;
|
|
@@ -599432,7 +599653,7 @@ function advancedOcr(imagePath) {
|
|
|
599432
599653
|
for (const psm of psmModes) {
|
|
599433
599654
|
const outFile = `${tmpBase}_psm${psm}`;
|
|
599434
599655
|
try {
|
|
599435
|
-
|
|
599656
|
+
execFileSync6("tesseract", [
|
|
599436
599657
|
imagePath,
|
|
599437
599658
|
outFile,
|
|
599438
599659
|
"--psm",
|
|
@@ -599530,7 +599751,7 @@ var init_vision_ingress = __esm({
|
|
|
599530
599751
|
});
|
|
599531
599752
|
|
|
599532
599753
|
// packages/cli/src/tui/telegram-bridge.ts
|
|
599533
|
-
import { mkdirSync as mkdirSync61, existsSync as existsSync106, unlinkSync as unlinkSync21, readdirSync as readdirSync36, statSync as statSync36, statfsSync as statfsSync3, readFileSync as readFileSync87, writeFileSync as
|
|
599754
|
+
import { mkdirSync as mkdirSync61, existsSync as existsSync106, unlinkSync as unlinkSync21, readdirSync as readdirSync36, statSync as statSync36, statfsSync as statfsSync3, readFileSync as readFileSync87, writeFileSync as writeFileSync56 } from "node:fs";
|
|
599534
599755
|
import { join as join121, resolve as resolve40, basename as basename25, relative as relative13, isAbsolute as isAbsolute7, extname as extname15 } from "node:path";
|
|
599535
599756
|
import { writeFile as writeFileAsync } from "node:fs/promises";
|
|
599536
599757
|
import { createHash as createHash19, randomInt } from "node:crypto";
|
|
@@ -600951,7 +601172,7 @@ Telegram response contract:
|
|
|
600951
601172
|
memoryCards: this.chatMemoryCards.get(sessionKey) ?? [],
|
|
600952
601173
|
stimulation: this.stimulation.getState(sessionKey)
|
|
600953
601174
|
};
|
|
600954
|
-
|
|
601175
|
+
writeFileSync56(this.telegramConversationPath(sessionKey), JSON.stringify(payload, null, 2) + "\n", "utf8");
|
|
600955
601176
|
} catch {
|
|
600956
601177
|
}
|
|
600957
601178
|
}
|
|
@@ -604286,7 +604507,7 @@ import {
|
|
|
604286
604507
|
existsSync as existsSync107,
|
|
604287
604508
|
readFileSync as readFileSync88,
|
|
604288
604509
|
readdirSync as readdirSync37,
|
|
604289
|
-
writeFileSync as
|
|
604510
|
+
writeFileSync as writeFileSync57,
|
|
604290
604511
|
renameSync as renameSync5,
|
|
604291
604512
|
mkdirSync as mkdirSync62,
|
|
604292
604513
|
unlinkSync as unlinkSync22
|
|
@@ -604309,7 +604530,7 @@ function persistSession(s2) {
|
|
|
604309
604530
|
mkdirSync62(sessionsDir(), { recursive: true });
|
|
604310
604531
|
const final2 = sessionPath(s2.id);
|
|
604311
604532
|
const tmp = `${final2}.tmp.${process.pid}.${Date.now()}`;
|
|
604312
|
-
|
|
604533
|
+
writeFileSync57(tmp, JSON.stringify(s2, null, 2), "utf-8");
|
|
604313
604534
|
renameSync5(tmp, final2);
|
|
604314
604535
|
} catch {
|
|
604315
604536
|
}
|
|
@@ -604319,7 +604540,7 @@ function persistInFlight(j) {
|
|
|
604319
604540
|
mkdirSync62(sessionsDir(), { recursive: true });
|
|
604320
604541
|
const final2 = inFlightPath(j.sessionId);
|
|
604321
604542
|
const tmp = `${final2}.tmp.${process.pid}.${Date.now()}`;
|
|
604322
|
-
|
|
604543
|
+
writeFileSync57(tmp, JSON.stringify(j, null, 2), "utf-8");
|
|
604323
604544
|
renameSync5(tmp, final2);
|
|
604324
604545
|
} catch {
|
|
604325
604546
|
}
|
|
@@ -604351,7 +604572,7 @@ function loadPersistedSessions() {
|
|
|
604351
604572
|
parsed.error = "Daemon restart while subprocess was running";
|
|
604352
604573
|
parsed.completedAt = Date.now();
|
|
604353
604574
|
try {
|
|
604354
|
-
|
|
604575
|
+
writeFileSync57(fp, JSON.stringify(parsed, null, 2), "utf-8");
|
|
604355
604576
|
} catch {
|
|
604356
604577
|
}
|
|
604357
604578
|
report2.staleInFlight++;
|
|
@@ -604933,7 +605154,7 @@ __export(projects_exports, {
|
|
|
604933
605154
|
setCurrentProject: () => setCurrentProject,
|
|
604934
605155
|
unregisterProject: () => unregisterProject
|
|
604935
605156
|
});
|
|
604936
|
-
import { readFileSync as readFileSync89, writeFileSync as
|
|
605157
|
+
import { readFileSync as readFileSync89, writeFileSync as writeFileSync58, mkdirSync as mkdirSync63, existsSync as existsSync108, statSync as statSync37, renameSync as renameSync6 } from "node:fs";
|
|
604937
605158
|
import { homedir as homedir37 } from "node:os";
|
|
604938
605159
|
import { basename as basename26, join as join123, resolve as resolve41 } from "node:path";
|
|
604939
605160
|
import { randomUUID as randomUUID14 } from "node:crypto";
|
|
@@ -604951,7 +605172,7 @@ function readAll2() {
|
|
|
604951
605172
|
function writeAll(file) {
|
|
604952
605173
|
mkdirSync63(OMNIUS_DIR3, { recursive: true });
|
|
604953
605174
|
const tmp = `${PROJECTS_FILE}.${randomUUID14().slice(0, 8)}.tmp`;
|
|
604954
|
-
|
|
605175
|
+
writeFileSync58(tmp, JSON.stringify(file, null, 2), "utf8");
|
|
604955
605176
|
renameSync6(tmp, PROJECTS_FILE);
|
|
604956
605177
|
}
|
|
604957
605178
|
function listProjects() {
|
|
@@ -605034,7 +605255,7 @@ function setCurrentProject(root) {
|
|
|
605034
605255
|
currentRoot = canonical;
|
|
605035
605256
|
try {
|
|
605036
605257
|
mkdirSync63(OMNIUS_DIR3, { recursive: true });
|
|
605037
|
-
|
|
605258
|
+
writeFileSync58(CURRENT_FILE, `${canonical}
|
|
605038
605259
|
`, "utf8");
|
|
605039
605260
|
} catch {
|
|
605040
605261
|
}
|
|
@@ -605753,7 +605974,7 @@ var init_access_policy = __esm({
|
|
|
605753
605974
|
|
|
605754
605975
|
// packages/cli/src/api/project-preferences.ts
|
|
605755
605976
|
import { createHash as createHash20 } from "node:crypto";
|
|
605756
|
-
import { existsSync as existsSync109, mkdirSync as mkdirSync64, readFileSync as readFileSync90, renameSync as renameSync7, writeFileSync as
|
|
605977
|
+
import { existsSync as existsSync109, mkdirSync as mkdirSync64, readFileSync as readFileSync90, renameSync as renameSync7, writeFileSync as writeFileSync59, unlinkSync as unlinkSync23 } from "node:fs";
|
|
605757
605978
|
import { homedir as homedir38 } from "node:os";
|
|
605758
605979
|
import { join as join124, resolve as resolve42 } from "node:path";
|
|
605759
605980
|
import { randomUUID as randomUUID15 } from "node:crypto";
|
|
@@ -605776,7 +605997,7 @@ function ensureDir(root) {
|
|
|
605776
605997
|
const sentinel = rootSentinelPath(root);
|
|
605777
605998
|
try {
|
|
605778
605999
|
if (!existsSync109(sentinel)) {
|
|
605779
|
-
|
|
606000
|
+
writeFileSync59(sentinel, `${resolve42(root)}
|
|
605780
606001
|
`, "utf8");
|
|
605781
606002
|
}
|
|
605782
606003
|
} catch {
|
|
@@ -605805,12 +606026,12 @@ function writeProjectPreferences(root, partial) {
|
|
|
605805
606026
|
};
|
|
605806
606027
|
const file = prefsPath(root);
|
|
605807
606028
|
const tmp = `${file}.${randomUUID15().slice(0, 8)}.tmp`;
|
|
605808
|
-
|
|
606029
|
+
writeFileSync59(tmp, JSON.stringify(merged, null, 2), "utf8");
|
|
605809
606030
|
try {
|
|
605810
606031
|
renameSync7(tmp, file);
|
|
605811
606032
|
} catch (err) {
|
|
605812
606033
|
try {
|
|
605813
|
-
|
|
606034
|
+
writeFileSync59(file, JSON.stringify(merged, null, 2), "utf8");
|
|
605814
606035
|
} catch {
|
|
605815
606036
|
}
|
|
605816
606037
|
try {
|
|
@@ -606812,7 +607033,7 @@ var init_audit_log = __esm({
|
|
|
606812
607033
|
// packages/cli/src/api/disk-task-output.ts
|
|
606813
607034
|
import { open } from "node:fs/promises";
|
|
606814
607035
|
import { existsSync as existsSync111, mkdirSync as mkdirSync66, statSync as statSync38 } from "node:fs";
|
|
606815
|
-
import { dirname as
|
|
607036
|
+
import { dirname as dirname35 } from "node:path";
|
|
606816
607037
|
import * as fsConstants from "node:constants";
|
|
606817
607038
|
var O_NOFOLLOW2, O_APPEND2, O_CREAT2, O_WRONLY2, OPEN_FLAGS_WRITE, OPEN_MODE, DiskTaskOutput;
|
|
606818
607039
|
var init_disk_task_output = __esm({
|
|
@@ -606831,7 +607052,7 @@ var init_disk_task_output = __esm({
|
|
|
606831
607052
|
fileSize = 0;
|
|
606832
607053
|
constructor(outputPath2) {
|
|
606833
607054
|
this.path = outputPath2;
|
|
606834
|
-
mkdirSync66(
|
|
607055
|
+
mkdirSync66(dirname35(outputPath2), { recursive: true });
|
|
606835
607056
|
}
|
|
606836
607057
|
/** Queue content for async append. Non-blocking. */
|
|
606837
607058
|
append(chunk) {
|
|
@@ -607869,7 +608090,7 @@ __export(runtime_keys_exports, {
|
|
|
607869
608090
|
mintKey: () => mintKey,
|
|
607870
608091
|
revokeByPrefix: () => revokeByPrefix
|
|
607871
608092
|
});
|
|
607872
|
-
import { existsSync as existsSync113, readFileSync as readFileSync93, writeFileSync as
|
|
608093
|
+
import { existsSync as existsSync113, readFileSync as readFileSync93, writeFileSync as writeFileSync60, mkdirSync as mkdirSync67, chmodSync } from "node:fs";
|
|
607873
608094
|
import { join as join127 } from "node:path";
|
|
607874
608095
|
import { homedir as homedir40 } from "node:os";
|
|
607875
608096
|
import { randomBytes as randomBytes22 } from "node:crypto";
|
|
@@ -607890,7 +608111,7 @@ function loadAll() {
|
|
|
607890
608111
|
}
|
|
607891
608112
|
function persistAll(records) {
|
|
607892
608113
|
ensureDir2();
|
|
607893
|
-
|
|
608114
|
+
writeFileSync60(KEYS_FILE, JSON.stringify(records, null, 2), "utf-8");
|
|
607894
608115
|
try {
|
|
607895
608116
|
chmodSync(KEYS_FILE, 384);
|
|
607896
608117
|
} catch {
|
|
@@ -608124,20 +608345,20 @@ __export(graphical_sudo_exports, {
|
|
|
608124
608345
|
runGraphicalSudo: () => runGraphicalSudo
|
|
608125
608346
|
});
|
|
608126
608347
|
import { spawn as spawn27 } from "node:child_process";
|
|
608127
|
-
import { existsSync as existsSync115, mkdirSync as mkdirSync68, writeFileSync as
|
|
608348
|
+
import { existsSync as existsSync115, mkdirSync as mkdirSync68, writeFileSync as writeFileSync61, chmodSync as chmodSync2 } from "node:fs";
|
|
608128
608349
|
import { join as join129 } from "node:path";
|
|
608129
608350
|
import { tmpdir as tmpdir21 } from "node:os";
|
|
608130
608351
|
function detectSudoHelper() {
|
|
608131
608352
|
if (process.platform === "win32") return null;
|
|
608132
608353
|
if (process.platform === "darwin") return "osascript";
|
|
608133
|
-
if (
|
|
608134
|
-
if (
|
|
608135
|
-
if (
|
|
608136
|
-
if (
|
|
608137
|
-
if (
|
|
608354
|
+
if (which2("pkexec")) return "pkexec";
|
|
608355
|
+
if (which2("ssh-askpass")) return "ssh-askpass";
|
|
608356
|
+
if (which2("zenity")) return "zenity";
|
|
608357
|
+
if (which2("kdialog")) return "kdialog";
|
|
608358
|
+
if (which2("sudo")) return "sudo-tty";
|
|
608138
608359
|
return null;
|
|
608139
608360
|
}
|
|
608140
|
-
function
|
|
608361
|
+
function which2(cmd) {
|
|
608141
608362
|
const path11 = process.env["PATH"] || "/usr/bin:/bin:/usr/local/bin";
|
|
608142
608363
|
for (const dir of path11.split(":")) {
|
|
608143
608364
|
if (!dir) continue;
|
|
@@ -608160,7 +608381,7 @@ exec zenity --password --title="Omnius needs sudo" --text="${description.replace
|
|
|
608160
608381
|
exec kdialog --password "${description.replace(/"/g, '\\"')}" 2>/dev/null
|
|
608161
608382
|
`;
|
|
608162
608383
|
}
|
|
608163
|
-
|
|
608384
|
+
writeFileSync61(shim, body, "utf-8");
|
|
608164
608385
|
chmodSync2(shim, 493);
|
|
608165
608386
|
return shim;
|
|
608166
608387
|
}
|
|
@@ -608184,7 +608405,7 @@ async function runGraphicalSudo(opts) {
|
|
|
608184
608405
|
cmd = "osascript";
|
|
608185
608406
|
args = ["-e", `do shell script "${inner.replace(/"/g, '\\"')}" with administrator privileges`];
|
|
608186
608407
|
} else if (helper === "ssh-askpass" || helper === "zenity" || helper === "kdialog") {
|
|
608187
|
-
const shim = helper === "ssh-askpass" ?
|
|
608408
|
+
const shim = helper === "ssh-askpass" ? which2("ssh-askpass") : ensureAskpassShim(helper, description);
|
|
608188
608409
|
extraEnv = { ...extraEnv, SUDO_ASKPASS: shim, DISPLAY: process.env["DISPLAY"] || ":0" };
|
|
608189
608410
|
cmd = "sudo";
|
|
608190
608411
|
args = ["-A", "-E", "/bin/bash", opts.scriptPath, ...opts.args ?? []];
|
|
@@ -620341,7 +620562,7 @@ var init_auth_oidc = __esm({
|
|
|
620341
620562
|
});
|
|
620342
620563
|
|
|
620343
620564
|
// packages/cli/src/api/usage-tracker.ts
|
|
620344
|
-
import { mkdirSync as mkdirSync69, readFileSync as readFileSync96, writeFileSync as
|
|
620565
|
+
import { mkdirSync as mkdirSync69, readFileSync as readFileSync96, writeFileSync as writeFileSync62, existsSync as existsSync117 } from "node:fs";
|
|
620345
620566
|
import { join as join131 } from "node:path";
|
|
620346
620567
|
function initUsageTracker(omniusDir) {
|
|
620347
620568
|
const dir = join131(omniusDir, "usage");
|
|
@@ -620385,7 +620606,7 @@ function flush2() {
|
|
|
620385
620606
|
if (!initialized2 || !dirty) return;
|
|
620386
620607
|
try {
|
|
620387
620608
|
store.lastSaved = (/* @__PURE__ */ new Date()).toISOString();
|
|
620388
|
-
|
|
620609
|
+
writeFileSync62(usageFile, JSON.stringify(store, null, 2), "utf-8");
|
|
620389
620610
|
dirty = false;
|
|
620390
620611
|
} catch {
|
|
620391
620612
|
}
|
|
@@ -620413,7 +620634,7 @@ var init_usage_tracker = __esm({
|
|
|
620413
620634
|
});
|
|
620414
620635
|
|
|
620415
620636
|
// packages/cli/src/api/profiles.ts
|
|
620416
|
-
import { existsSync as existsSync118, readFileSync as readFileSync97, writeFileSync as
|
|
620637
|
+
import { existsSync as existsSync118, readFileSync as readFileSync97, writeFileSync as writeFileSync63, mkdirSync as mkdirSync70, readdirSync as readdirSync40, unlinkSync as unlinkSync24 } from "node:fs";
|
|
620417
620638
|
import { join as join132 } from "node:path";
|
|
620418
620639
|
import { homedir as homedir43 } from "node:os";
|
|
620419
620640
|
import { createCipheriv as createCipheriv5, createDecipheriv as createDecipheriv5, randomBytes as randomBytes23, scryptSync as scryptSync3 } from "node:crypto";
|
|
@@ -620483,10 +620704,10 @@ function saveProfile(profile, password, scope = "global", projectDir2) {
|
|
|
620483
620704
|
profile.modified = (/* @__PURE__ */ new Date()).toISOString();
|
|
620484
620705
|
if (password) {
|
|
620485
620706
|
const encrypted = encryptProfile(profile, password);
|
|
620486
|
-
|
|
620707
|
+
writeFileSync63(filePath, JSON.stringify(encrypted, null, 2), { mode: 384 });
|
|
620487
620708
|
} else {
|
|
620488
620709
|
profile.encrypted = false;
|
|
620489
|
-
|
|
620710
|
+
writeFileSync63(filePath, JSON.stringify(profile, null, 2), { mode: 420 });
|
|
620490
620711
|
}
|
|
620491
620712
|
}
|
|
620492
620713
|
function deleteProfile(name10, scope = "global", projectDir2) {
|
|
@@ -620670,8 +620891,8 @@ var init_profiles = __esm({
|
|
|
620670
620891
|
|
|
620671
620892
|
// packages/cli/src/docker.ts
|
|
620672
620893
|
import { execSync as execSync56, spawn as spawn28 } from "node:child_process";
|
|
620673
|
-
import { existsSync as existsSync119, mkdirSync as mkdirSync71, writeFileSync as
|
|
620674
|
-
import { join as join133, resolve as resolve43, dirname as
|
|
620894
|
+
import { existsSync as existsSync119, mkdirSync as mkdirSync71, writeFileSync as writeFileSync64 } from "node:fs";
|
|
620895
|
+
import { join as join133, resolve as resolve43, dirname as dirname36 } from "node:path";
|
|
620675
620896
|
import { homedir as homedir44 } from "node:os";
|
|
620676
620897
|
import { fileURLToPath as fileURLToPath16 } from "node:url";
|
|
620677
620898
|
function getDockerDir() {
|
|
@@ -620682,7 +620903,7 @@ function getDockerDir() {
|
|
|
620682
620903
|
} catch {
|
|
620683
620904
|
}
|
|
620684
620905
|
try {
|
|
620685
|
-
const thisDir =
|
|
620906
|
+
const thisDir = dirname36(fileURLToPath16(import.meta.url));
|
|
620686
620907
|
return join133(thisDir, "..", "..", "..", "docker");
|
|
620687
620908
|
} catch {
|
|
620688
620909
|
}
|
|
@@ -620895,8 +621116,8 @@ chown -R node:node /workspace /home/node/.omnius 2>/dev/null || true
|
|
|
620895
621116
|
if [ "$1" = "omnius" ]; then shift; exec su - node -c "cd /workspace && omnius $*"; fi
|
|
620896
621117
|
exec "$@"
|
|
620897
621118
|
`;
|
|
620898
|
-
|
|
620899
|
-
|
|
621119
|
+
writeFileSync64(join133(dir, "Dockerfile"), dockerfile);
|
|
621120
|
+
writeFileSync64(join133(dir, "docker-entrypoint.sh"), entrypoint, { mode: 493 });
|
|
620900
621121
|
}
|
|
620901
621122
|
function hasNvidiaGpu() {
|
|
620902
621123
|
try {
|
|
@@ -621151,15 +621372,15 @@ import * as http5 from "node:http";
|
|
|
621151
621372
|
import * as https3 from "node:https";
|
|
621152
621373
|
import { createRequire as createRequire7 } from "node:module";
|
|
621153
621374
|
import { fileURLToPath as fileURLToPath17 } from "node:url";
|
|
621154
|
-
import { dirname as
|
|
621375
|
+
import { dirname as dirname37, join as join135, resolve as resolve44 } from "node:path";
|
|
621155
621376
|
import { homedir as homedir45 } from "node:os";
|
|
621156
621377
|
import { spawn as spawn29, execSync as execSync57 } from "node:child_process";
|
|
621157
|
-
import { mkdirSync as mkdirSync72, writeFileSync as
|
|
621378
|
+
import { mkdirSync as mkdirSync72, writeFileSync as writeFileSync65, readFileSync as readFileSync98, readdirSync as readdirSync41, existsSync as existsSync120, watch as fsWatch3, renameSync as renameSync8, unlinkSync as unlinkSync25 } from "node:fs";
|
|
621158
621379
|
import { randomBytes as randomBytes24, randomUUID as randomUUID16 } from "node:crypto";
|
|
621159
621380
|
import { createHash as createHash23 } from "node:crypto";
|
|
621160
621381
|
function getVersion3() {
|
|
621161
621382
|
try {
|
|
621162
|
-
const thisDir =
|
|
621383
|
+
const thisDir = dirname37(fileURLToPath17(import.meta.url));
|
|
621163
621384
|
const candidates = [
|
|
621164
621385
|
join135(thisDir, "..", "package.json"),
|
|
621165
621386
|
join135(thisDir, "..", "..", "package.json"),
|
|
@@ -622249,11 +622470,11 @@ function atomicJobWrite(dir, id, job) {
|
|
|
622249
622470
|
const finalPath = join135(dir, `${id}.json`);
|
|
622250
622471
|
const tmpPath = `${finalPath}.tmp.${process.pid}.${Date.now()}`;
|
|
622251
622472
|
try {
|
|
622252
|
-
|
|
622473
|
+
writeFileSync65(tmpPath, JSON.stringify(job, null, 2), "utf-8");
|
|
622253
622474
|
renameSync8(tmpPath, finalPath);
|
|
622254
622475
|
} catch {
|
|
622255
622476
|
try {
|
|
622256
|
-
|
|
622477
|
+
writeFileSync65(finalPath, JSON.stringify(job, null, 2), "utf-8");
|
|
622257
622478
|
} catch {
|
|
622258
622479
|
}
|
|
622259
622480
|
try {
|
|
@@ -623711,7 +623932,7 @@ function writeUpdateState(state) {
|
|
|
623711
623932
|
mkdirSync72(dir, { recursive: true });
|
|
623712
623933
|
const finalPath = updateStateFile();
|
|
623713
623934
|
const tmpPath = `${finalPath}.tmp.${process.pid}`;
|
|
623714
|
-
|
|
623935
|
+
writeFileSync65(tmpPath, JSON.stringify(state, null, 2), "utf-8");
|
|
623715
623936
|
renameSync8(tmpPath, finalPath);
|
|
623716
623937
|
} catch {
|
|
623717
623938
|
}
|
|
@@ -623751,7 +623972,7 @@ async function handleV1Update(req2, res, requestId) {
|
|
|
623751
623972
|
}, { subject: req2._authUser ?? "anonymous" });
|
|
623752
623973
|
const fs10 = require4("node:fs");
|
|
623753
623974
|
const nodeBin = process.execPath;
|
|
623754
|
-
const nodeDir =
|
|
623975
|
+
const nodeDir = dirname37(nodeBin);
|
|
623755
623976
|
const { execSync: es } = require4("node:child_process");
|
|
623756
623977
|
const isWin2 = process.platform === "win32";
|
|
623757
623978
|
let npmBin = "";
|
|
@@ -623766,7 +623987,7 @@ async function handleV1Update(req2, res, requestId) {
|
|
|
623766
623987
|
const dir = join135(homedir45(), ".omnius");
|
|
623767
623988
|
fs10.mkdirSync(dir, { recursive: true });
|
|
623768
623989
|
const logFd = fs10.openSync(logPath3, "w");
|
|
623769
|
-
const npmPrefix =
|
|
623990
|
+
const npmPrefix = dirname37(nodeDir);
|
|
623770
623991
|
let globalBinDir = "";
|
|
623771
623992
|
try {
|
|
623772
623993
|
if (isWin2) {
|
|
@@ -623855,8 +624076,8 @@ async function handleV1Update(req2, res, requestId) {
|
|
|
623855
624076
|
}
|
|
623856
624077
|
let omniusAbs = "omnius";
|
|
623857
624078
|
try {
|
|
623858
|
-
const
|
|
623859
|
-
if (
|
|
624079
|
+
const which3 = es("command -v omnius 2>/dev/null || which omnius 2>/dev/null", { encoding: "utf8", timeout: 2e3, stdio: "pipe", env: cleanEnv }).trim();
|
|
624080
|
+
if (which3) omniusAbs = which3;
|
|
623860
624081
|
} catch {
|
|
623861
624082
|
}
|
|
623862
624083
|
const relaunchScript = [
|
|
@@ -625292,10 +625513,10 @@ async function handleRequest(req2, res, ollamaUrl, verbose) {
|
|
|
625292
625513
|
return;
|
|
625293
625514
|
}
|
|
625294
625515
|
const { tmpdir: tmpdir23 } = await import("node:os");
|
|
625295
|
-
const { writeFileSync:
|
|
625516
|
+
const { writeFileSync: writeFileSync70, unlinkSync: unlinkSync26 } = await import("node:fs");
|
|
625296
625517
|
const { join: pjoin } = await import("node:path");
|
|
625297
625518
|
const tmpPath = pjoin(tmpdir23(), `omnius-clone-upload-${Date.now()}-${safeName2}`);
|
|
625298
|
-
|
|
625519
|
+
writeFileSync70(tmpPath, buf);
|
|
625299
625520
|
try {
|
|
625300
625521
|
const ve = getVoiceEngine();
|
|
625301
625522
|
const msg = await ve.setCloneVoice(tmpPath);
|
|
@@ -625887,7 +626108,7 @@ data: ${JSON.stringify(data)}
|
|
|
625887
626108
|
}
|
|
625888
626109
|
for (const f2 of seenFiles) {
|
|
625889
626110
|
try {
|
|
625890
|
-
|
|
626111
|
+
writeFileSync65(f2, JSON.stringify({ tasks: [] }, null, 2));
|
|
625891
626112
|
deleted++;
|
|
625892
626113
|
} catch {
|
|
625893
626114
|
}
|
|
@@ -627094,11 +627315,11 @@ function setScheduledEnabled(id, enabled2) {
|
|
|
627094
627315
|
arr[target.index].enabled = enabled2;
|
|
627095
627316
|
if (Array.isArray(json?.tasks)) {
|
|
627096
627317
|
json.tasks = arr;
|
|
627097
|
-
|
|
627318
|
+
writeFileSync65(target.file, JSON.stringify(json, null, 2));
|
|
627098
627319
|
} else if (Array.isArray(json)) {
|
|
627099
|
-
|
|
627320
|
+
writeFileSync65(target.file, JSON.stringify(arr, null, 2));
|
|
627100
627321
|
} else {
|
|
627101
|
-
|
|
627322
|
+
writeFileSync65(target.file, JSON.stringify({ tasks: arr }, null, 2));
|
|
627102
627323
|
}
|
|
627103
627324
|
if (!enabled2) {
|
|
627104
627325
|
try {
|
|
@@ -627128,11 +627349,11 @@ function deleteScheduledById(id) {
|
|
|
627128
627349
|
arr.splice(target.index, 1);
|
|
627129
627350
|
if (Array.isArray(json?.tasks)) {
|
|
627130
627351
|
json.tasks = arr;
|
|
627131
|
-
|
|
627352
|
+
writeFileSync65(target.file, JSON.stringify(json, null, 2));
|
|
627132
627353
|
} else if (Array.isArray(json)) {
|
|
627133
|
-
|
|
627354
|
+
writeFileSync65(target.file, JSON.stringify(arr, null, 2));
|
|
627134
627355
|
} else {
|
|
627135
|
-
|
|
627356
|
+
writeFileSync65(target.file, JSON.stringify({ tasks: arr }, null, 2));
|
|
627136
627357
|
}
|
|
627137
627358
|
const candidates = [];
|
|
627138
627359
|
if (id) candidates.push(id);
|
|
@@ -627402,7 +627623,7 @@ function reconcileScheduledTasks(apply) {
|
|
|
627402
627623
|
const toWrite = Array.isArray(json?.tasks) ? { ...json, tasks: arr } : Array.isArray(json) ? arr : { tasks: arr };
|
|
627403
627624
|
mkdirSync72(join135(wdir, ".omnius", "scheduled"), { recursive: true });
|
|
627404
627625
|
mkdirSync72(join135(wdir, ".omnius", "scheduled", "logs"), { recursive: true });
|
|
627405
|
-
|
|
627626
|
+
writeFileSync65(file, JSON.stringify(toWrite, null, 2));
|
|
627406
627627
|
adopted.push({ file, index: arr.length - 1 });
|
|
627407
627628
|
}
|
|
627408
627629
|
} else {
|
|
@@ -627536,8 +627757,8 @@ WantedBy=timers.target
|
|
|
627536
627757
|
`;
|
|
627537
627758
|
if (!dryRun) {
|
|
627538
627759
|
mkdirSync72(unitDir, { recursive: true });
|
|
627539
|
-
|
|
627540
|
-
|
|
627760
|
+
writeFileSync65(svc, svcText);
|
|
627761
|
+
writeFileSync65(tim, timText);
|
|
627541
627762
|
try {
|
|
627542
627763
|
const { execSync: es } = require4("node:child_process");
|
|
627543
627764
|
es("systemctl --user daemon-reload", { stdio: "pipe" });
|
|
@@ -627860,7 +628081,7 @@ function startApiServer(options2 = {}) {
|
|
|
627860
628081
|
try {
|
|
627861
628082
|
const dir = join135(homedir45(), ".omnius");
|
|
627862
628083
|
mkdirSync72(dir, { recursive: true });
|
|
627863
|
-
|
|
628084
|
+
writeFileSync65(join135(dir, "access"), `${runtimeAccessMode}
|
|
627864
628085
|
`, "utf8");
|
|
627865
628086
|
} catch {
|
|
627866
628087
|
}
|
|
@@ -628153,7 +628374,7 @@ function startApiServer(options2 = {}) {
|
|
|
628153
628374
|
return;
|
|
628154
628375
|
}
|
|
628155
628376
|
try {
|
|
628156
|
-
const { writeFileSync:
|
|
628377
|
+
const { writeFileSync: writeFileSync70, mkdirSync: mkdirSync77, existsSync: _exists, readFileSync: _rfs } = require4("node:fs");
|
|
628157
628378
|
const { join: _join } = require4("node:path");
|
|
628158
628379
|
const { homedir: _homedir } = require4("node:os");
|
|
628159
628380
|
const apiHint = JSON.stringify({
|
|
@@ -628183,7 +628404,7 @@ function startApiServer(options2 = {}) {
|
|
|
628183
628404
|
for (const dir of dirSet) {
|
|
628184
628405
|
try {
|
|
628185
628406
|
if (!_exists(dir)) mkdirSync77(dir, { recursive: true });
|
|
628186
|
-
|
|
628407
|
+
writeFileSync70(_join(dir, "api-port.json"), apiHint);
|
|
628187
628408
|
written++;
|
|
628188
628409
|
} catch {
|
|
628189
628410
|
}
|
|
@@ -628657,8 +628878,8 @@ var clipboard_media_exports = {};
|
|
|
628657
628878
|
__export(clipboard_media_exports, {
|
|
628658
628879
|
pasteClipboardImageToFile: () => pasteClipboardImageToFile
|
|
628659
628880
|
});
|
|
628660
|
-
import { execFileSync as
|
|
628661
|
-
import { mkdirSync as mkdirSync73, readFileSync as readFileSync99, rmSync as rmSync5, writeFileSync as
|
|
628881
|
+
import { execFileSync as execFileSync7, execSync as execSync58 } from "node:child_process";
|
|
628882
|
+
import { mkdirSync as mkdirSync73, readFileSync as readFileSync99, rmSync as rmSync5, writeFileSync as writeFileSync66 } from "node:fs";
|
|
628662
628883
|
import { join as join136 } from "node:path";
|
|
628663
628884
|
function pasteClipboardImageToFile(repoRoot) {
|
|
628664
628885
|
const image = readClipboardImage();
|
|
@@ -628666,7 +628887,7 @@ function pasteClipboardImageToFile(repoRoot) {
|
|
|
628666
628887
|
const dir = join136(repoRoot, ".omnius", "clipboard");
|
|
628667
628888
|
mkdirSync73(dir, { recursive: true });
|
|
628668
628889
|
const path11 = join136(dir, `clipboard-${Date.now()}${image.ext}`);
|
|
628669
|
-
|
|
628890
|
+
writeFileSync66(path11, image.buffer);
|
|
628670
628891
|
return { path: path11, buffer: image.buffer, mime: image.mime };
|
|
628671
628892
|
}
|
|
628672
628893
|
function readClipboardImage() {
|
|
@@ -628674,7 +628895,7 @@ function readClipboardImage() {
|
|
|
628674
628895
|
try {
|
|
628675
628896
|
execSync58("command -v pngpaste", { stdio: "ignore", timeout: 1e3 });
|
|
628676
628897
|
const tmp = `/tmp/omnius-clipboard-${Date.now()}.png`;
|
|
628677
|
-
|
|
628898
|
+
execFileSync7("pngpaste", [tmp], { timeout: 3e3 });
|
|
628678
628899
|
const buffer2 = readFileSync99(tmp);
|
|
628679
628900
|
try {
|
|
628680
628901
|
rmSync5(tmp);
|
|
@@ -628694,7 +628915,7 @@ function readClipboardImage() {
|
|
|
628694
628915
|
];
|
|
628695
628916
|
for (const attempt of attempts) {
|
|
628696
628917
|
try {
|
|
628697
|
-
const buffer2 =
|
|
628918
|
+
const buffer2 = execFileSync7(attempt.cmd, attempt.args, { timeout: 3e3, maxBuffer: 25 * 1024 * 1024 });
|
|
628698
628919
|
if (buffer2.length > 0) return { buffer: buffer2, mime: attempt.mime, ext: attempt.ext };
|
|
628699
628920
|
} catch {
|
|
628700
628921
|
continue;
|
|
@@ -628711,7 +628932,7 @@ function readClipboardImage() {
|
|
|
628711
628932
|
"$img.Save($ms,[Drawing.Imaging.ImageFormat]::Png);",
|
|
628712
628933
|
"[Console]::OpenStandardOutput().Write($ms.ToArray(),0,$ms.Length)"
|
|
628713
628934
|
].join("");
|
|
628714
|
-
const buffer2 =
|
|
628935
|
+
const buffer2 = execFileSync7("powershell.exe", ["-NoProfile", "-Command", ps], {
|
|
628715
628936
|
timeout: 5e3,
|
|
628716
628937
|
maxBuffer: 25 * 1024 * 1024
|
|
628717
628938
|
});
|
|
@@ -628730,12 +628951,12 @@ var init_clipboard_media = __esm({
|
|
|
628730
628951
|
|
|
628731
628952
|
// packages/cli/src/tui/interactive.ts
|
|
628732
628953
|
import { cwd } from "node:process";
|
|
628733
|
-
import { resolve as resolve45, join as join137, dirname as
|
|
628954
|
+
import { resolve as resolve45, join as join137, dirname as dirname38, extname as extname16, relative as relative14 } from "node:path";
|
|
628734
628955
|
import { createRequire as createRequire8 } from "node:module";
|
|
628735
628956
|
import { fileURLToPath as fileURLToPath18 } from "node:url";
|
|
628736
628957
|
import {
|
|
628737
628958
|
readFileSync as readFileSync100,
|
|
628738
|
-
writeFileSync as
|
|
628959
|
+
writeFileSync as writeFileSync67,
|
|
628739
628960
|
appendFileSync as appendFileSync8,
|
|
628740
628961
|
rmSync as rmSync6,
|
|
628741
628962
|
readdirSync as readdirSync42,
|
|
@@ -628757,7 +628978,7 @@ function formatTimeAgo2(date) {
|
|
|
628757
628978
|
function getVersion4() {
|
|
628758
628979
|
try {
|
|
628759
628980
|
const require5 = createRequire8(import.meta.url);
|
|
628760
|
-
const thisDir =
|
|
628981
|
+
const thisDir = dirname38(fileURLToPath18(import.meta.url));
|
|
628761
628982
|
const candidates = [
|
|
628762
628983
|
join137(thisDir, "..", "package.json"),
|
|
628763
628984
|
join137(thisDir, "..", "..", "package.json"),
|
|
@@ -631476,7 +631697,7 @@ When done, either call task_complete with your answer, or use FINAL_VAR(variable
|
|
|
631476
631697
|
}
|
|
631477
631698
|
ikState.session_count = (ikState.session_count || 0) + 1;
|
|
631478
631699
|
ikState.updated_at = (/* @__PURE__ */ new Date()).toISOString();
|
|
631479
|
-
|
|
631700
|
+
writeFileSync67(ikFile, JSON.stringify(ikState, null, 2));
|
|
631480
631701
|
} catch (ikErr) {
|
|
631481
631702
|
try {
|
|
631482
631703
|
console.error("[IK-OBSERVE]", ikErr);
|
|
@@ -631532,7 +631753,7 @@ When done, either call task_complete with your answer, or use FINAL_VAR(variable
|
|
|
631532
631753
|
ikState.version_history = ikState.version_history.slice(-200);
|
|
631533
631754
|
ikState.session_count = (ikState.session_count || 0) + 1;
|
|
631534
631755
|
ikState.updated_at = (/* @__PURE__ */ new Date()).toISOString();
|
|
631535
|
-
|
|
631756
|
+
writeFileSync67(ikFile, JSON.stringify(ikState, null, 2));
|
|
631536
631757
|
}
|
|
631537
631758
|
} catch {
|
|
631538
631759
|
}
|
|
@@ -633144,7 +633365,7 @@ This is an independent background session started from /background.`
|
|
|
633144
633365
|
if (Math.random() < 0.02) {
|
|
633145
633366
|
const all2 = readFileSync100(HISTORY_FILE, "utf8").trim().split("\n");
|
|
633146
633367
|
if (all2.length > MAX_HISTORY_LINES) {
|
|
633147
|
-
|
|
633368
|
+
writeFileSync67(
|
|
633148
633369
|
HISTORY_FILE,
|
|
633149
633370
|
all2.slice(-MAX_HISTORY_LINES).join("\n") + "\n",
|
|
633150
633371
|
"utf8"
|
|
@@ -634014,7 +634235,7 @@ Log: ${nexusLogPath}`)
|
|
|
634014
634235
|
sessionTitle = title.trim() || null;
|
|
634015
634236
|
try {
|
|
634016
634237
|
mkdirSync74(join137(repoRoot, ".omnius"), { recursive: true });
|
|
634017
|
-
|
|
634238
|
+
writeFileSync67(join137(repoRoot, ".omnius", "session-title"), `${sessionTitle ?? ""}
|
|
634018
634239
|
`, "utf8");
|
|
634019
634240
|
} catch {
|
|
634020
634241
|
}
|
|
@@ -635291,14 +635512,14 @@ Respond concisely and safely. Remember: you are talking to the general public.`;
|
|
|
635291
635512
|
throw err;
|
|
635292
635513
|
}
|
|
635293
635514
|
},
|
|
635294
|
-
async exposeStop(
|
|
635295
|
-
if (!
|
|
635515
|
+
async exposeStop(which3) {
|
|
635516
|
+
if (!which3 || which3 === "tunnel") {
|
|
635296
635517
|
if (tunnelGateway) {
|
|
635297
635518
|
await tunnelGateway.stop();
|
|
635298
635519
|
tunnelGateway = null;
|
|
635299
635520
|
}
|
|
635300
635521
|
}
|
|
635301
|
-
if (!
|
|
635522
|
+
if (!which3 || which3 === "libp2p") {
|
|
635302
635523
|
if (p2pGateway) {
|
|
635303
635524
|
await p2pGateway.stop();
|
|
635304
635525
|
p2pGateway = null;
|
|
@@ -636629,8 +636850,8 @@ NEW TASK: ${fullInput}`;
|
|
|
636629
636850
|
const updateInfo = await checkForUpdate(version4);
|
|
636630
636851
|
if (updateInfo) {
|
|
636631
636852
|
_autoUpdatedThisSession = true;
|
|
636632
|
-
const { exec:
|
|
636633
|
-
|
|
636853
|
+
const { exec: exec4 } = await import("node:child_process");
|
|
636854
|
+
exec4(
|
|
636634
636855
|
`npm install -g omnius@latest --prefer-online`,
|
|
636635
636856
|
{ timeout: 18e4 },
|
|
636636
636857
|
(err) => {
|
|
@@ -637013,7 +637234,7 @@ async function runWithTUI(task, config, repoPath, callbacks) {
|
|
|
637013
637234
|
);
|
|
637014
637235
|
ikState.session_count = (ikState.session_count || 0) + 1;
|
|
637015
637236
|
ikState.updated_at = (/* @__PURE__ */ new Date()).toISOString();
|
|
637016
|
-
|
|
637237
|
+
writeFileSync67(ikFile, JSON.stringify(ikState, null, 2));
|
|
637017
637238
|
} catch (ikErr) {
|
|
637018
637239
|
}
|
|
637019
637240
|
try {
|
|
@@ -637046,7 +637267,7 @@ async function runWithTUI(task, config, repoPath, callbacks) {
|
|
|
637046
637267
|
});
|
|
637047
637268
|
if (variants.length > 50) variants = variants.slice(-50);
|
|
637048
637269
|
mkdirSync74(archeDir, { recursive: true });
|
|
637049
|
-
|
|
637270
|
+
writeFileSync67(archeFile, JSON.stringify(variants, null, 2));
|
|
637050
637271
|
} catch {
|
|
637051
637272
|
}
|
|
637052
637273
|
}
|
|
@@ -637077,7 +637298,7 @@ async function runWithTUI(task, config, repoPath, callbacks) {
|
|
|
637077
637298
|
updated = true;
|
|
637078
637299
|
}
|
|
637079
637300
|
if (updated) {
|
|
637080
|
-
|
|
637301
|
+
writeFileSync67(metaFile, JSON.stringify(store2, null, 2));
|
|
637081
637302
|
}
|
|
637082
637303
|
}
|
|
637083
637304
|
} catch {
|
|
@@ -637186,7 +637407,7 @@ Rules:
|
|
|
637186
637407
|
});
|
|
637187
637408
|
if (store2.length > 100) store2 = store2.slice(-100);
|
|
637188
637409
|
mkdirSync74(metaDir, { recursive: true });
|
|
637189
|
-
|
|
637410
|
+
writeFileSync67(storeFile, JSON.stringify(store2, null, 2));
|
|
637190
637411
|
}
|
|
637191
637412
|
}
|
|
637192
637413
|
} catch {
|
|
@@ -637250,7 +637471,7 @@ Rules:
|
|
|
637250
637471
|
);
|
|
637251
637472
|
ikState.session_count = (ikState.session_count || 0) + 1;
|
|
637252
637473
|
ikState.updated_at = (/* @__PURE__ */ new Date()).toISOString();
|
|
637253
|
-
|
|
637474
|
+
writeFileSync67(ikFile, JSON.stringify(ikState, null, 2));
|
|
637254
637475
|
}
|
|
637255
637476
|
const metaFile = join137(
|
|
637256
637477
|
repoRoot,
|
|
@@ -637278,7 +637499,7 @@ Rules:
|
|
|
637278
637499
|
(item.scores.confidence || 0.5) - 0.02
|
|
637279
637500
|
);
|
|
637280
637501
|
}
|
|
637281
|
-
|
|
637502
|
+
writeFileSync67(metaFile, JSON.stringify(store2, null, 2));
|
|
637282
637503
|
}
|
|
637283
637504
|
try {
|
|
637284
637505
|
const archeDir = join137(repoRoot, ".omnius", "arche");
|
|
@@ -637301,7 +637522,7 @@ Rules:
|
|
|
637301
637522
|
});
|
|
637302
637523
|
if (variants.length > 50) variants = variants.slice(-50);
|
|
637303
637524
|
mkdirSync74(archeDir, { recursive: true });
|
|
637304
|
-
|
|
637525
|
+
writeFileSync67(archeFile, JSON.stringify(variants, null, 2));
|
|
637305
637526
|
} catch {
|
|
637306
637527
|
}
|
|
637307
637528
|
} catch {
|
|
@@ -637394,7 +637615,7 @@ __export(run_exports, {
|
|
|
637394
637615
|
});
|
|
637395
637616
|
import { resolve as resolve46 } from "node:path";
|
|
637396
637617
|
import { spawn as spawn30 } from "node:child_process";
|
|
637397
|
-
import { mkdirSync as mkdirSync75, writeFileSync as
|
|
637618
|
+
import { mkdirSync as mkdirSync75, writeFileSync as writeFileSync68, readFileSync as readFileSync101, readdirSync as readdirSync43, existsSync as existsSync122 } from "node:fs";
|
|
637398
637619
|
import { randomBytes as randomBytes25 } from "node:crypto";
|
|
637399
637620
|
import { join as join138 } from "node:path";
|
|
637400
637621
|
function jobsDir2(repoPath) {
|
|
@@ -637522,7 +637743,7 @@ async function runBackground(task, config, opts) {
|
|
|
637522
637743
|
}
|
|
637523
637744
|
});
|
|
637524
637745
|
job.pid = child.pid ?? 0;
|
|
637525
|
-
|
|
637746
|
+
writeFileSync68(join138(dir, `${id}.json`), JSON.stringify(job, null, 2));
|
|
637526
637747
|
let output = "";
|
|
637527
637748
|
child.stdout?.on("data", (chunk) => {
|
|
637528
637749
|
output += chunk.toString();
|
|
@@ -637538,7 +637759,7 @@ async function runBackground(task, config, opts) {
|
|
|
637538
637759
|
job.summary = result.summary;
|
|
637539
637760
|
job.durationMs = result.durationMs;
|
|
637540
637761
|
job.error = result.error;
|
|
637541
|
-
|
|
637762
|
+
writeFileSync68(join138(dir, `${id}.json`), JSON.stringify(job, null, 2));
|
|
637542
637763
|
} catch {
|
|
637543
637764
|
}
|
|
637544
637765
|
});
|
|
@@ -638170,7 +638391,7 @@ __export(eval_exports, {
|
|
|
638170
638391
|
evalCommand: () => evalCommand
|
|
638171
638392
|
});
|
|
638172
638393
|
import { tmpdir as tmpdir22 } from "node:os";
|
|
638173
|
-
import { mkdirSync as mkdirSync76, writeFileSync as
|
|
638394
|
+
import { mkdirSync as mkdirSync76, writeFileSync as writeFileSync69 } from "node:fs";
|
|
638174
638395
|
import { join as join140 } from "node:path";
|
|
638175
638396
|
async function evalCommand(opts, config) {
|
|
638176
638397
|
const suiteName = opts.suite ?? "basic";
|
|
@@ -638302,7 +638523,7 @@ async function evalCommand(opts, config) {
|
|
|
638302
638523
|
function createTempEvalRepo() {
|
|
638303
638524
|
const dir = join140(tmpdir22(), `omnius-eval-${Date.now()}`);
|
|
638304
638525
|
mkdirSync76(dir, { recursive: true });
|
|
638305
|
-
|
|
638526
|
+
writeFileSync69(
|
|
638306
638527
|
join140(dir, "package.json"),
|
|
638307
638528
|
JSON.stringify({ name: "eval-repo", version: "0.0.0" }, null, 2) + "\n",
|
|
638308
638529
|
"utf8"
|
|
@@ -638367,7 +638588,7 @@ init_typed_node_events();
|
|
|
638367
638588
|
import { parseArgs as nodeParseArgs2 } from "node:util";
|
|
638368
638589
|
import { createRequire as createRequire9 } from "node:module";
|
|
638369
638590
|
import { fileURLToPath as fileURLToPath19 } from "node:url";
|
|
638370
|
-
import { dirname as
|
|
638591
|
+
import { dirname as dirname39, join as join141 } from "node:path";
|
|
638371
638592
|
|
|
638372
638593
|
// packages/cli/src/cli.ts
|
|
638373
638594
|
init_typed_node_events();
|
|
@@ -638507,7 +638728,7 @@ init_output();
|
|
|
638507
638728
|
function getVersion5() {
|
|
638508
638729
|
try {
|
|
638509
638730
|
const require5 = createRequire9(import.meta.url);
|
|
638510
|
-
const pkgPath = join141(
|
|
638731
|
+
const pkgPath = join141(dirname39(fileURLToPath19(import.meta.url)), "..", "package.json");
|
|
638511
638732
|
const pkg = require5(pkgPath);
|
|
638512
638733
|
return pkg.version;
|
|
638513
638734
|
} catch {
|