omnius 1.0.533 → 1.0.534
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 +450 -154
- package/npm-shrinkwrap.json +8 -8
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -119389,7 +119389,7 @@ var require_auto = __commonJS({
|
|
|
119389
119389
|
// ../node_modules/acme-client/src/client.js
|
|
119390
119390
|
var require_client = __commonJS({
|
|
119391
119391
|
"../node_modules/acme-client/src/client.js"(exports, module) {
|
|
119392
|
-
var { createHash:
|
|
119392
|
+
var { createHash: createHash53 } = __require("crypto");
|
|
119393
119393
|
var { getPemBodyAsB64u } = require_crypto();
|
|
119394
119394
|
var { log: log22 } = require_logger();
|
|
119395
119395
|
var HttpClient = require_http();
|
|
@@ -119700,14 +119700,14 @@ var require_client = __commonJS({
|
|
|
119700
119700
|
*/
|
|
119701
119701
|
async getChallengeKeyAuthorization(challenge) {
|
|
119702
119702
|
const jwk = this.http.getJwk();
|
|
119703
|
-
const keysum =
|
|
119703
|
+
const keysum = createHash53("sha256").update(JSON.stringify(jwk));
|
|
119704
119704
|
const thumbprint = keysum.digest("base64url");
|
|
119705
119705
|
const result = `${challenge.token}.${thumbprint}`;
|
|
119706
119706
|
if (challenge.type === "http-01") {
|
|
119707
119707
|
return result;
|
|
119708
119708
|
}
|
|
119709
119709
|
if (challenge.type === "dns-01") {
|
|
119710
|
-
return
|
|
119710
|
+
return createHash53("sha256").update(result).digest("base64url");
|
|
119711
119711
|
}
|
|
119712
119712
|
if (challenge.type === "tls-alpn-01") {
|
|
119713
119713
|
return result;
|
|
@@ -262387,7 +262387,7 @@ var require_websocket2 = __commonJS({
|
|
|
262387
262387
|
var http6 = __require("http");
|
|
262388
262388
|
var net5 = __require("net");
|
|
262389
262389
|
var tls2 = __require("tls");
|
|
262390
|
-
var { randomBytes: randomBytes31, createHash:
|
|
262390
|
+
var { randomBytes: randomBytes31, createHash: createHash53 } = __require("crypto");
|
|
262391
262391
|
var { Duplex: Duplex3, Readable } = __require("stream");
|
|
262392
262392
|
var { URL: URL3 } = __require("url");
|
|
262393
262393
|
var PerMessageDeflate3 = require_permessage_deflate2();
|
|
@@ -263047,7 +263047,7 @@ var require_websocket2 = __commonJS({
|
|
|
263047
263047
|
abortHandshake(websocket, socket, "Invalid Upgrade header");
|
|
263048
263048
|
return;
|
|
263049
263049
|
}
|
|
263050
|
-
const digest3 =
|
|
263050
|
+
const digest3 = createHash53("sha1").update(key + GUID).digest("base64");
|
|
263051
263051
|
if (res.headers["sec-websocket-accept"] !== digest3) {
|
|
263052
263052
|
abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header");
|
|
263053
263053
|
return;
|
|
@@ -263414,7 +263414,7 @@ var require_websocket_server = __commonJS({
|
|
|
263414
263414
|
var EventEmitter15 = __require("events");
|
|
263415
263415
|
var http6 = __require("http");
|
|
263416
263416
|
var { Duplex: Duplex3 } = __require("stream");
|
|
263417
|
-
var { createHash:
|
|
263417
|
+
var { createHash: createHash53 } = __require("crypto");
|
|
263418
263418
|
var extension3 = require_extension2();
|
|
263419
263419
|
var PerMessageDeflate3 = require_permessage_deflate2();
|
|
263420
263420
|
var subprotocol3 = require_subprotocol();
|
|
@@ -263715,7 +263715,7 @@ var require_websocket_server = __commonJS({
|
|
|
263715
263715
|
);
|
|
263716
263716
|
}
|
|
263717
263717
|
if (this._state > RUNNING) return abortHandshake(socket, 503);
|
|
263718
|
-
const digest3 =
|
|
263718
|
+
const digest3 = createHash53("sha1").update(key + GUID).digest("base64");
|
|
263719
263719
|
const headers = [
|
|
263720
263720
|
"HTTP/1.1 101 Switching Protocols",
|
|
263721
263721
|
"Upgrade: websocket",
|
|
@@ -276522,13 +276522,13 @@ Justification: ${justification || "(none provided)"}`,
|
|
|
276522
276522
|
}
|
|
276523
276523
|
const snapshot = JSON.stringify(this.selfState, null, 2);
|
|
276524
276524
|
try {
|
|
276525
|
-
const { createHash:
|
|
276525
|
+
const { createHash: createHash53 } = await import("node:crypto");
|
|
276526
276526
|
const snapshotDir = join44(this.cwd, ".omnius", "identity", "snapshots");
|
|
276527
276527
|
await mkdir7(snapshotDir, { recursive: true });
|
|
276528
276528
|
const version5 = this.selfState.version;
|
|
276529
276529
|
const snapshotPath = join44(snapshotDir, `v${version5}.json`);
|
|
276530
276530
|
await writeFile12(snapshotPath, snapshot, "utf8");
|
|
276531
|
-
const hash =
|
|
276531
|
+
const hash = createHash53("sha256").update(snapshot).digest("hex");
|
|
276532
276532
|
await writeFile12(join44(this.cwd, ".omnius", "identity", "latest-hash.txt"), hash, "utf8");
|
|
276533
276533
|
let ipfsCid = "";
|
|
276534
276534
|
try {
|
|
@@ -276661,8 +276661,8 @@ New: ${newNarrative.slice(0, 200)}...`,
|
|
|
276661
276661
|
}
|
|
276662
276662
|
// ── Helpers ──────────────────────────────────────────────────────────────
|
|
276663
276663
|
createDefaultState() {
|
|
276664
|
-
const { createHash:
|
|
276665
|
-
const machineId =
|
|
276664
|
+
const { createHash: createHash53 } = __require("node:crypto");
|
|
276665
|
+
const machineId = createHash53("sha256").update(this.cwd).digest("hex").slice(0, 12);
|
|
276666
276666
|
return {
|
|
276667
276667
|
self_id: `omnius-${machineId}`,
|
|
276668
276668
|
version: 1,
|
|
@@ -276744,9 +276744,9 @@ New: ${newNarrative.slice(0, 200)}...`,
|
|
|
276744
276744
|
let cid;
|
|
276745
276745
|
if (this.selfState.version > prevVersion) {
|
|
276746
276746
|
try {
|
|
276747
|
-
const { createHash:
|
|
276747
|
+
const { createHash: createHash53 } = await import("node:crypto");
|
|
276748
276748
|
const stateJson = JSON.stringify(this.selfState);
|
|
276749
|
-
const hash =
|
|
276749
|
+
const hash = createHash53("sha256").update(stateJson).digest("hex").slice(0, 32);
|
|
276750
276750
|
const cidsPath = join44(this.cwd, ".omnius", "identity", "cids.json");
|
|
276751
276751
|
const cidsData = { latest: "", hash, version: this.selfState.version };
|
|
276752
276752
|
try {
|
|
@@ -297713,6 +297713,12 @@ function updateWorkboardCard(workingDir, input) {
|
|
|
297713
297713
|
updates.lane = "blocked";
|
|
297714
297714
|
if ((updates.status === "open" || updates.status === "in_progress") && card.lane === "blocked" && !updates.lane)
|
|
297715
297715
|
updates.lane = "worker";
|
|
297716
|
+
validateSpecialCardAdmission({
|
|
297717
|
+
...card,
|
|
297718
|
+
...updates,
|
|
297719
|
+
evidenceRequirements: updates.evidenceRequirements ?? card.evidenceRequirements,
|
|
297720
|
+
ownedFiles: updates.ownedFiles ?? card.ownedFiles
|
|
297721
|
+
});
|
|
297716
297722
|
const decisionReason = cleanString(input.decisionReason);
|
|
297717
297723
|
const decision2 = decisionReason ? makeDecision(updates.assignee && updates.assignee !== card.assignee ? "reassigned" : updates.status === "blocked" ? "blocked" : "note", decisionReason, { cardId: card.id, actor: input.actor, createdAt: now2 }) : void 0;
|
|
297718
297724
|
return appendWorkboardEvents(workingDir, runId, [{
|
|
@@ -297992,6 +297998,23 @@ function verifyCompileCardEvidence(card) {
|
|
|
297992
297998
|
missing: ["fresh verifier output after patch"]
|
|
297993
297999
|
};
|
|
297994
298000
|
}
|
|
298001
|
+
function compactWorkboardCard(card) {
|
|
298002
|
+
return definedOnly({
|
|
298003
|
+
id: truncateForModel(card.id),
|
|
298004
|
+
title: truncateForModel(card.title),
|
|
298005
|
+
status: card.status,
|
|
298006
|
+
lane: card.lane,
|
|
298007
|
+
assignee: truncateForModel(card.assignee),
|
|
298008
|
+
dependencies: truncateStringArrayForModel(card.dependencies),
|
|
298009
|
+
evidenceCount: card.evidence.length,
|
|
298010
|
+
evidenceRequirements: truncateStringArrayForModel(card.evidenceRequirements),
|
|
298011
|
+
blocker: truncateForModel(card.blocker),
|
|
298012
|
+
diagnosticFingerprint: truncateForModel(card.diagnosticFingerprint),
|
|
298013
|
+
ownedFiles: truncateStringArrayForModel(card.ownedFiles),
|
|
298014
|
+
verifierCommand: truncateForModel(card.verifierCommand),
|
|
298015
|
+
rank: card.rank
|
|
298016
|
+
});
|
|
298017
|
+
}
|
|
297995
298018
|
function compactWorkboardSnapshot(snapshot, maxCards = 24) {
|
|
297996
298019
|
const counts = {
|
|
297997
298020
|
open: 0,
|
|
@@ -298003,26 +298026,17 @@ function compactWorkboardSnapshot(snapshot, maxCards = 24) {
|
|
|
298003
298026
|
};
|
|
298004
298027
|
for (const card of snapshot.cards)
|
|
298005
298028
|
counts[card.status]++;
|
|
298006
|
-
const
|
|
298007
|
-
|
|
298008
|
-
title: card.title,
|
|
298009
|
-
status: card.status,
|
|
298010
|
-
lane: card.lane,
|
|
298011
|
-
assignee: card.assignee,
|
|
298012
|
-
dependencies: card.dependencies,
|
|
298013
|
-
evidenceCount: card.evidence.length,
|
|
298014
|
-
evidenceRequirements: card.evidenceRequirements,
|
|
298015
|
-
blocker: card.blocker
|
|
298016
|
-
}));
|
|
298029
|
+
const cardLimit = Math.max(0, Math.min(50, Math.floor(maxCards)));
|
|
298030
|
+
const cards = snapshot.cards.slice(0, cardLimit).map(compactWorkboardCard);
|
|
298017
298031
|
return {
|
|
298018
|
-
runId: snapshot.runId,
|
|
298032
|
+
runId: truncateRequiredForModel(snapshot.runId),
|
|
298019
298033
|
status: snapshot.status,
|
|
298020
|
-
owner: snapshot.owner,
|
|
298034
|
+
owner: truncateRequiredForModel(snapshot.owner),
|
|
298021
298035
|
updatedAt: snapshot.updatedAt,
|
|
298022
298036
|
counts,
|
|
298023
298037
|
cards,
|
|
298024
298038
|
hiddenCardCount: Math.max(0, snapshot.cards.length - cards.length),
|
|
298025
|
-
diagnostics: snapshot.diagnostics.slice(0,
|
|
298039
|
+
diagnostics: snapshot.diagnostics.slice(0, WORKBOARD_MODEL_MAX_DIAGNOSTICS).map(compactWorkboardDiagnosticForModel)
|
|
298026
298040
|
};
|
|
298027
298041
|
}
|
|
298028
298042
|
function formatWorkboardCompact(snapshot, maxCards = 24) {
|
|
@@ -298136,7 +298150,7 @@ function normalizeCardInput(input, timestamp) {
|
|
|
298136
298150
|
assertEnum(input.role, VALID_ROLES, "role");
|
|
298137
298151
|
const dependencies = normalizeStringArray(input.dependencies);
|
|
298138
298152
|
const evidenceRequirements = normalizeStringArray(input.evidenceRequirements);
|
|
298139
|
-
|
|
298153
|
+
const card = {
|
|
298140
298154
|
id: cleanString(input.id) || newCardId(),
|
|
298141
298155
|
title,
|
|
298142
298156
|
description: cleanString(input.description) || "",
|
|
@@ -298158,6 +298172,8 @@ function normalizeCardInput(input, timestamp) {
|
|
|
298158
298172
|
verifierCommand: cleanString(input.verifierCommand),
|
|
298159
298173
|
rank: typeof input.rank === "number" && Number.isFinite(input.rank) ? input.rank : void 0
|
|
298160
298174
|
};
|
|
298175
|
+
validateSpecialCardAdmission(card);
|
|
298176
|
+
return card;
|
|
298161
298177
|
}
|
|
298162
298178
|
function normalizeCardUpdates(input) {
|
|
298163
298179
|
const updates = {};
|
|
@@ -298199,6 +298215,26 @@ function normalizeCardUpdates(input) {
|
|
|
298199
298215
|
throw new WorkboardError("empty_update", "at least one card field must be updated");
|
|
298200
298216
|
return updates;
|
|
298201
298217
|
}
|
|
298218
|
+
function validateSpecialCardAdmission(card) {
|
|
298219
|
+
const compileLike = card.id.startsWith("compile-") || Boolean(card.diagnosticFingerprint) || card.assignee?.startsWith("fixer:compile-") === true;
|
|
298220
|
+
if (compileLike) {
|
|
298221
|
+
const missing = [];
|
|
298222
|
+
if (!cleanString(card.diagnosticFingerprint))
|
|
298223
|
+
missing.push("diagnosticFingerprint");
|
|
298224
|
+
if (!cleanString(card.verifierCommand))
|
|
298225
|
+
missing.push("verifierCommand");
|
|
298226
|
+
if (!Array.isArray(card.ownedFiles) || card.ownedFiles.length === 0)
|
|
298227
|
+
missing.push("ownedFiles");
|
|
298228
|
+
if (missing.length > 0) {
|
|
298229
|
+
throw new WorkboardError("invalid_compile_card", `compile cards require ${missing.join(", ")}`, { cardId: card.id, missing });
|
|
298230
|
+
}
|
|
298231
|
+
}
|
|
298232
|
+
if (card.id.startsWith("failure-") && card.evidenceRequirements.length === 0) {
|
|
298233
|
+
throw new WorkboardError("invalid_failure_card", "failure recovery cards require explicit evidence requirements", {
|
|
298234
|
+
cardId: card.id
|
|
298235
|
+
});
|
|
298236
|
+
}
|
|
298237
|
+
}
|
|
298202
298238
|
function validateDependencies(cardId, dependencies, knownCardIds) {
|
|
298203
298239
|
for (const dependency of dependencies) {
|
|
298204
298240
|
if (dependency === cardId) {
|
|
@@ -298398,6 +298434,75 @@ function evidenceMatchesRequirement(evidence, lowercaseRequirement) {
|
|
|
298398
298434
|
function diagnosticKey(diagnostic) {
|
|
298399
298435
|
return `${diagnostic.code}:${diagnostic.cardId ?? ""}:${diagnostic.assignee ?? ""}`;
|
|
298400
298436
|
}
|
|
298437
|
+
function compactWorkboardDiagnosticForModel(diagnostic) {
|
|
298438
|
+
return definedOnly({
|
|
298439
|
+
...diagnostic,
|
|
298440
|
+
id: truncateForModel(diagnostic.id),
|
|
298441
|
+
message: truncateForModel(diagnostic.message),
|
|
298442
|
+
cardId: truncateForModel(diagnostic.cardId),
|
|
298443
|
+
actor: truncateForModel(diagnostic.actor),
|
|
298444
|
+
assignee: truncateForModel(diagnostic.assignee),
|
|
298445
|
+
suggestedAction: truncateForModel(diagnostic.suggestedAction),
|
|
298446
|
+
details: diagnostic.details ? compactWorkboardToolPayload(diagnostic.details) : void 0
|
|
298447
|
+
});
|
|
298448
|
+
}
|
|
298449
|
+
function compactWorkboardToolPayload(value2, depth = 0) {
|
|
298450
|
+
if (depth > 5)
|
|
298451
|
+
return "[truncated]";
|
|
298452
|
+
if (typeof value2 === "string")
|
|
298453
|
+
return truncateForModel(value2);
|
|
298454
|
+
if (Array.isArray(value2)) {
|
|
298455
|
+
return value2.slice(0, WORKBOARD_MODEL_MAX_ARRAY_ITEMS).map((item) => compactWorkboardToolPayload(item, depth + 1));
|
|
298456
|
+
}
|
|
298457
|
+
if (!value2 || typeof value2 !== "object")
|
|
298458
|
+
return value2;
|
|
298459
|
+
if (isWorkboardSnapshot(value2))
|
|
298460
|
+
return compactWorkboardSnapshot(value2, WORKBOARD_MODEL_MAX_CARDS);
|
|
298461
|
+
if (isWorkboardCard(value2))
|
|
298462
|
+
return compactWorkboardCard(value2);
|
|
298463
|
+
const out = {};
|
|
298464
|
+
for (const [key, item] of Object.entries(value2)) {
|
|
298465
|
+
if (key === "snapshot" && isWorkboardSnapshot(item)) {
|
|
298466
|
+
out["board"] = compactWorkboardSnapshot(item, WORKBOARD_MODEL_MAX_CARDS);
|
|
298467
|
+
continue;
|
|
298468
|
+
}
|
|
298469
|
+
if (key === "card" && isWorkboardCard(item)) {
|
|
298470
|
+
out[key] = compactWorkboardCard(item);
|
|
298471
|
+
continue;
|
|
298472
|
+
}
|
|
298473
|
+
if (key === "cards" && Array.isArray(item)) {
|
|
298474
|
+
out[key] = item.slice(0, WORKBOARD_MODEL_MAX_CARDS).map((card) => isWorkboardCard(card) ? compactWorkboardCard(card) : compactWorkboardToolPayload(card, depth + 1));
|
|
298475
|
+
continue;
|
|
298476
|
+
}
|
|
298477
|
+
out[key] = compactWorkboardToolPayload(item, depth + 1);
|
|
298478
|
+
}
|
|
298479
|
+
return out;
|
|
298480
|
+
}
|
|
298481
|
+
function isWorkboardSnapshot(value2) {
|
|
298482
|
+
const record = value2;
|
|
298483
|
+
return record.schemaVersion === WORKBOARD_SCHEMA_VERSION && Array.isArray(record.cards) && typeof record.runId === "string";
|
|
298484
|
+
}
|
|
298485
|
+
function isWorkboardCard(value2) {
|
|
298486
|
+
if (!value2 || typeof value2 !== "object" || Array.isArray(value2))
|
|
298487
|
+
return false;
|
|
298488
|
+
const record = value2;
|
|
298489
|
+
return typeof record.id === "string" && typeof record.title === "string" && typeof record.status === "string" && Array.isArray(record.evidence);
|
|
298490
|
+
}
|
|
298491
|
+
function truncateForModel(value2) {
|
|
298492
|
+
if (!value2)
|
|
298493
|
+
return void 0;
|
|
298494
|
+
if (value2.length <= WORKBOARD_MODEL_MAX_STRING)
|
|
298495
|
+
return value2;
|
|
298496
|
+
return `${value2.slice(0, WORKBOARD_MODEL_MAX_STRING - 15)}...[truncated]`;
|
|
298497
|
+
}
|
|
298498
|
+
function truncateRequiredForModel(value2) {
|
|
298499
|
+
return truncateForModel(value2) ?? "";
|
|
298500
|
+
}
|
|
298501
|
+
function truncateStringArrayForModel(value2) {
|
|
298502
|
+
if (!Array.isArray(value2))
|
|
298503
|
+
return [];
|
|
298504
|
+
return value2.slice(0, WORKBOARD_MODEL_MAX_ARRAY_ITEMS).map((item) => truncateForModel(item)).filter((item) => Boolean(item));
|
|
298505
|
+
}
|
|
298401
298506
|
function defaultLaneForStatus(status) {
|
|
298402
298507
|
if (status === "blocked")
|
|
298403
298508
|
return "blocked";
|
|
@@ -298660,11 +298765,15 @@ function enumArg(args, name10, allowed) {
|
|
|
298660
298765
|
assertEnum(value2, allowed, name10);
|
|
298661
298766
|
return value2;
|
|
298662
298767
|
}
|
|
298663
|
-
var WORKBOARD_SCHEMA_VERSION, WorkboardError, activeWorkboardWrites, VALID_LANES, VALID_STATUSES, VALID_ROLES, VALID_EVIDENCE_KINDS, REPEATED_FAILURE_THRESHOLD, WorkboardBaseTool, WorkboardCreateTool, WorkboardAddCardTool, WorkboardUpdateCardTool, WorkboardAttachEvidenceTool, WorkboardCompleteCardTool, WorkboardShowTool;
|
|
298768
|
+
var WORKBOARD_SCHEMA_VERSION, WORKBOARD_MODEL_MAX_CARDS, WORKBOARD_MODEL_MAX_ARRAY_ITEMS, WORKBOARD_MODEL_MAX_DIAGNOSTICS, WORKBOARD_MODEL_MAX_STRING, WorkboardError, activeWorkboardWrites, VALID_LANES, VALID_STATUSES, VALID_ROLES, VALID_EVIDENCE_KINDS, REPEATED_FAILURE_THRESHOLD, WorkboardBaseTool, WorkboardCreateTool, WorkboardAddCardTool, WorkboardUpdateCardTool, WorkboardAttachEvidenceTool, WorkboardCompleteCardTool, WorkboardShowTool;
|
|
298664
298769
|
var init_workboard = __esm({
|
|
298665
298770
|
"packages/execution/dist/tools/workboard.js"() {
|
|
298666
298771
|
"use strict";
|
|
298667
298772
|
WORKBOARD_SCHEMA_VERSION = 1;
|
|
298773
|
+
WORKBOARD_MODEL_MAX_CARDS = 8;
|
|
298774
|
+
WORKBOARD_MODEL_MAX_ARRAY_ITEMS = 8;
|
|
298775
|
+
WORKBOARD_MODEL_MAX_DIAGNOSTICS = 8;
|
|
298776
|
+
WORKBOARD_MODEL_MAX_STRING = 260;
|
|
298668
298777
|
WorkboardError = class extends Error {
|
|
298669
298778
|
code;
|
|
298670
298779
|
details;
|
|
@@ -298691,18 +298800,22 @@ var init_workboard = __esm({
|
|
|
298691
298800
|
}
|
|
298692
298801
|
result(start2, payload, mutated, runId) {
|
|
298693
298802
|
const mutatedFiles = mutated && runId ? [workboardPaths(this.workingDir, runId).eventsPath, workboardPaths(this.workingDir, runId).activePath] : void 0;
|
|
298803
|
+
const modelPayload = compactWorkboardToolPayload(payload);
|
|
298694
298804
|
return {
|
|
298695
298805
|
success: true,
|
|
298696
298806
|
output: JSON.stringify(payload),
|
|
298807
|
+
llmContent: JSON.stringify(modelPayload),
|
|
298697
298808
|
durationMs: performance.now() - start2,
|
|
298698
298809
|
mutated,
|
|
298699
298810
|
mutatedFiles
|
|
298700
298811
|
};
|
|
298701
298812
|
}
|
|
298702
298813
|
failure(start2, code8, message2, details, output) {
|
|
298814
|
+
const payload = output ?? { ok: false, code: code8, message: message2, details };
|
|
298703
298815
|
return {
|
|
298704
298816
|
success: false,
|
|
298705
|
-
output: JSON.stringify(
|
|
298817
|
+
output: JSON.stringify(payload),
|
|
298818
|
+
llmContent: JSON.stringify(compactWorkboardToolPayload(payload)),
|
|
298706
298819
|
error: message2,
|
|
298707
298820
|
durationMs: performance.now() - start2
|
|
298708
298821
|
};
|
|
@@ -298747,7 +298860,7 @@ var init_workboard = __esm({
|
|
|
298747
298860
|
actor: stringArg(args, "actor"),
|
|
298748
298861
|
cards: normalizeCardsArg(args["cards"])
|
|
298749
298862
|
});
|
|
298750
|
-
return this.result(start2, { ok: true, board: compactWorkboardSnapshot(snapshot)
|
|
298863
|
+
return this.result(start2, { ok: true, board: compactWorkboardSnapshot(snapshot) }, true, runId);
|
|
298751
298864
|
} catch (err) {
|
|
298752
298865
|
return this.catchFailure(start2, err);
|
|
298753
298866
|
}
|
|
@@ -298784,7 +298897,7 @@ var init_workboard = __esm({
|
|
|
298784
298897
|
actor: stringArg(args, "actor"),
|
|
298785
298898
|
decisionReason: stringArg(args, "decision_reason", "decisionReason")
|
|
298786
298899
|
});
|
|
298787
|
-
return this.result(start2, { ok: true, board: compactWorkboardSnapshot(snapshot), card: snapshot.cards.at(-1) }, true, runId);
|
|
298900
|
+
return this.result(start2, { ok: true, board: compactWorkboardSnapshot(snapshot), card: compactWorkboardCard(snapshot.cards.at(-1)) }, true, runId);
|
|
298788
298901
|
} catch (err) {
|
|
298789
298902
|
return this.catchFailure(start2, err);
|
|
298790
298903
|
}
|
|
@@ -298826,7 +298939,8 @@ var init_workboard = __esm({
|
|
|
298826
298939
|
decisionReason: stringArg(args, "decision_reason", "decisionReason"),
|
|
298827
298940
|
updates
|
|
298828
298941
|
});
|
|
298829
|
-
|
|
298942
|
+
const card = snapshot.cards.find((card2) => card2.id === cardId);
|
|
298943
|
+
return this.result(start2, { ok: true, board: compactWorkboardSnapshot(snapshot), ...card ? { card: compactWorkboardCard(card) } : {} }, true, runId);
|
|
298830
298944
|
} catch (err) {
|
|
298831
298945
|
return this.catchFailure(start2, err);
|
|
298832
298946
|
}
|
|
@@ -298873,7 +298987,8 @@ var init_workboard = __esm({
|
|
|
298873
298987
|
actor: stringArg(args, "actor"),
|
|
298874
298988
|
evidence
|
|
298875
298989
|
});
|
|
298876
|
-
|
|
298990
|
+
const card = snapshot.cards.find((card2) => card2.id === cardId);
|
|
298991
|
+
return this.result(start2, { ok: true, board: compactWorkboardSnapshot(snapshot), ...card ? { card: compactWorkboardCard(card) } : {} }, true, runId);
|
|
298877
298992
|
} catch (err) {
|
|
298878
298993
|
return this.catchFailure(start2, err);
|
|
298879
298994
|
}
|
|
@@ -298925,7 +299040,12 @@ var init_workboard = __esm({
|
|
|
298925
299040
|
board: compactWorkboardSnapshot(result.snapshot)
|
|
298926
299041
|
});
|
|
298927
299042
|
}
|
|
298928
|
-
return this.result(start2, {
|
|
299043
|
+
return this.result(start2, {
|
|
299044
|
+
ok: true,
|
|
299045
|
+
message: result.message,
|
|
299046
|
+
board: compactWorkboardSnapshot(result.snapshot),
|
|
299047
|
+
...result.card ? { card: compactWorkboardCard(result.card) } : {}
|
|
299048
|
+
}, true, runId);
|
|
298929
299049
|
} catch (err) {
|
|
298930
299050
|
return this.catchFailure(start2, err);
|
|
298931
299051
|
}
|
|
@@ -553029,7 +553149,28 @@ print(json.dumps({"ok": False, "error": "No whisper backend available"}))
|
|
|
553029
553149
|
|
|
553030
553150
|
// packages/execution/dist/tools/full-sub-agent.js
|
|
553031
553151
|
import { spawn as spawn19, ChildProcess } from "node:child_process";
|
|
553032
|
-
import { randomBytes as randomBytes18 } from "node:crypto";
|
|
553152
|
+
import { createHash as createHash24, randomBytes as randomBytes18 } from "node:crypto";
|
|
553153
|
+
function fullSubAgentTaskHash(task) {
|
|
553154
|
+
return createHash24("sha256").update(task).digest("hex").slice(0, 12);
|
|
553155
|
+
}
|
|
553156
|
+
function sanitizeFullSubAgentModelText(value2, maxChars = FULL_SUB_AGENT_MODEL_MAX_CHARS) {
|
|
553157
|
+
const stripped = value2.replace(/\x1b\[[0-9;?]*[ -/]*[@-~]/g, "").replace(/<think>[\s\S]*?<\/think>/gi, "").replace(/<think>[\s\S]*$/gi, "");
|
|
553158
|
+
const lines = stripped.split(/\r?\n/).map((line) => line.trim()).filter(Boolean).filter((line) => !/^🔊/.test(line)).filter((line) => !/SHELL TRANSCRIPT/i.test(line)).filter((line) => !/^Task:\s/i.test(line)).filter((line) => !/^E Task timeout/i.test(line)).filter((line) => !/^E Incomplete:/i.test(line)).filter((line) => !/^⚠ Task incomplete/i.test(line)).slice(-FULL_SUB_AGENT_MODEL_MAX_LINES);
|
|
553159
|
+
const joined = lines.join("\n");
|
|
553160
|
+
return joined.length > maxChars ? `${joined.slice(0, Math.max(0, maxChars - 14)).trimEnd()}...[truncated]` : joined;
|
|
553161
|
+
}
|
|
553162
|
+
function fullSubAgentModelContent(input) {
|
|
553163
|
+
const taskPreview = sanitizeFullSubAgentModelText(input.task, 220);
|
|
553164
|
+
const resultPreview = input.output ? sanitizeFullSubAgentModelText(input.output) : "";
|
|
553165
|
+
return [
|
|
553166
|
+
`[full_sub_agent] id=${input.id} status=${input.status} exit_code=${input.exitCode ?? "unknown"} task_sha256=${fullSubAgentTaskHash(input.task)} output_lines=${input.outputLines ?? 0}`,
|
|
553167
|
+
taskPreview ? `task_preview:
|
|
553168
|
+
${taskPreview}` : null,
|
|
553169
|
+
resultPreview ? `result_preview:
|
|
553170
|
+
${resultPreview}` : null,
|
|
553171
|
+
`full_output_available_via=full_sub_agent action=output id=${input.id}`
|
|
553172
|
+
].filter((line) => Boolean(line)).join("\n");
|
|
553173
|
+
}
|
|
553033
553174
|
function buildSubProcessArgs(opts) {
|
|
553034
553175
|
const args = [];
|
|
553035
553176
|
args.push(opts.task);
|
|
@@ -553193,7 +553334,7 @@ function killAllFullSubAgents() {
|
|
|
553193
553334
|
function removeFullSubAgent(id2) {
|
|
553194
553335
|
_activeSubProcesses.delete(id2);
|
|
553195
553336
|
}
|
|
553196
|
-
var _activeSubProcesses, FullSubAgentTool;
|
|
553337
|
+
var _activeSubProcesses, FULL_SUB_AGENT_MODEL_MAX_LINES, FULL_SUB_AGENT_MODEL_MAX_CHARS, FullSubAgentTool;
|
|
553197
553338
|
var init_full_sub_agent = __esm({
|
|
553198
553339
|
"packages/execution/dist/tools/full-sub-agent.js"() {
|
|
553199
553340
|
"use strict";
|
|
@@ -553201,6 +553342,8 @@ var init_full_sub_agent = __esm({
|
|
|
553201
553342
|
init_model_broker();
|
|
553202
553343
|
init_process_lifecycle();
|
|
553203
553344
|
_activeSubProcesses = /* @__PURE__ */ new Map();
|
|
553345
|
+
FULL_SUB_AGENT_MODEL_MAX_LINES = 6;
|
|
553346
|
+
FULL_SUB_AGENT_MODEL_MAX_CHARS = 900;
|
|
553204
553347
|
FullSubAgentTool = class {
|
|
553205
553348
|
name = "full_sub_agent";
|
|
553206
553349
|
description = "Spawn a COMPLETE Omnius sub-process with ALL tools and capabilities. Unlike sub_agent (shared process, limited tools), this spawns a separate omnius instance with its own clean context window, full tool set, memory, skills, and COHERE access. Use for complex multi-file tasks that benefit from a fresh context. The sub-process runs omnius --non-interactive until task_complete, abort, or timeout. By default this tool returns immediately with a process ID for monitoring; set wait=true to block until the child exits.";
|
|
@@ -553326,6 +553469,14 @@ var init_full_sub_agent = __esm({
|
|
|
553326
553469
|
Output lines: ${entry.outputBuffer.length}` + (tail ? `
|
|
553327
553470
|
|
|
553328
553471
|
${tail}` : ""),
|
|
553472
|
+
llmContent: fullSubAgentModelContent({
|
|
553473
|
+
id: entry.id,
|
|
553474
|
+
task,
|
|
553475
|
+
status: "completed",
|
|
553476
|
+
exitCode,
|
|
553477
|
+
output: tail || output,
|
|
553478
|
+
outputLines: entry.outputBuffer.length
|
|
553479
|
+
}),
|
|
553329
553480
|
durationMs
|
|
553330
553481
|
};
|
|
553331
553482
|
}
|
|
@@ -553334,19 +553485,35 @@ ${tail}` : ""),
|
|
|
553334
553485
|
output: output ? `Full Omnius sub-agent failed: ${entry.id}
|
|
553335
553486
|
|
|
553336
553487
|
${tail || output}` : "",
|
|
553488
|
+
llmContent: fullSubAgentModelContent({
|
|
553489
|
+
id: entry.id,
|
|
553490
|
+
task,
|
|
553491
|
+
status: "failed",
|
|
553492
|
+
exitCode,
|
|
553493
|
+
output: tail || output,
|
|
553494
|
+
outputLines: entry.outputBuffer.length
|
|
553495
|
+
}),
|
|
553337
553496
|
error: `Full Omnius sub-agent exited before successful completion (exit code ${exitCode ?? "unknown"}).`,
|
|
553338
553497
|
durationMs
|
|
553339
553498
|
};
|
|
553340
553499
|
}
|
|
553500
|
+
const taskPreview = sanitizeFullSubAgentModelText(task, 220);
|
|
553341
553501
|
return {
|
|
553342
553502
|
success: true,
|
|
553343
553503
|
output: `Full Omnius sub-agent spawned: ${entry.id}
|
|
553344
553504
|
PID: ${entry.pid}
|
|
553345
553505
|
Model: ${model}
|
|
553346
|
-
|
|
553347
|
-
|
|
553506
|
+
task_sha256=${fullSubAgentTaskHash(task)}
|
|
553507
|
+
` + (taskPreview ? ` task_preview: ${taskPreview.replace(/\n/g, " ")}
|
|
553508
|
+
` : "") + ` Use full_sub_agent(action='status', id='${entry.id}') to check progress.
|
|
553348
553509
|
Use full_sub_agent(action='output', id='${entry.id}') to see output.
|
|
553349
553510
|
Use full_sub_agent(action='stop', id='${entry.id}') to kill it.`,
|
|
553511
|
+
llmContent: fullSubAgentModelContent({
|
|
553512
|
+
id: entry.id,
|
|
553513
|
+
task,
|
|
553514
|
+
status: "running",
|
|
553515
|
+
outputLines: entry.outputBuffer.length
|
|
553516
|
+
}),
|
|
553350
553517
|
durationMs: performance.now() - start2
|
|
553351
553518
|
};
|
|
553352
553519
|
}
|
|
@@ -553362,6 +553529,13 @@ ${tail || output}` : "",
|
|
|
553362
553529
|
output: `${id2} [${entry.status}] PID:${entry.pid} ${runtime}s
|
|
553363
553530
|
Task: ${entry.task.slice(0, 100)}
|
|
553364
553531
|
Output lines: ${entry.outputBuffer.length}`,
|
|
553532
|
+
llmContent: fullSubAgentModelContent({
|
|
553533
|
+
id: id2,
|
|
553534
|
+
task: entry.task,
|
|
553535
|
+
status: entry.status,
|
|
553536
|
+
exitCode: entry.exitCode,
|
|
553537
|
+
outputLines: entry.outputBuffer.length
|
|
553538
|
+
}),
|
|
553365
553539
|
durationMs: performance.now() - start2
|
|
553366
553540
|
};
|
|
553367
553541
|
}
|
|
@@ -553372,7 +553546,18 @@ ${tail || output}` : "",
|
|
|
553372
553546
|
const runtime = ((Date.now() - e2.startedAt) / 1e3).toFixed(0);
|
|
553373
553547
|
return `${e2.id} [${e2.status}] PID:${e2.pid} ${runtime}s — ${e2.task.slice(0, 60)}`;
|
|
553374
553548
|
});
|
|
553375
|
-
return {
|
|
553549
|
+
return {
|
|
553550
|
+
success: true,
|
|
553551
|
+
output: lines.join("\n"),
|
|
553552
|
+
llmContent: all2.map((e2) => fullSubAgentModelContent({
|
|
553553
|
+
id: e2.id,
|
|
553554
|
+
task: e2.task,
|
|
553555
|
+
status: e2.status,
|
|
553556
|
+
exitCode: e2.exitCode,
|
|
553557
|
+
outputLines: e2.outputBuffer.length
|
|
553558
|
+
})).join("\n\n"),
|
|
553559
|
+
durationMs: performance.now() - start2
|
|
553560
|
+
};
|
|
553376
553561
|
}
|
|
553377
553562
|
case "list":
|
|
553378
553563
|
return this.execute({ ...args, action: "status" });
|
|
@@ -553382,8 +553567,20 @@ ${tail || output}` : "",
|
|
|
553382
553567
|
if (!entry)
|
|
553383
553568
|
return { success: false, output: "", error: `Unknown sub-agent: ${id2}`, durationMs: performance.now() - start2 };
|
|
553384
553569
|
const tail = entry.outputBuffer.slice(-50).join("\n");
|
|
553385
|
-
return {
|
|
553386
|
-
|
|
553570
|
+
return {
|
|
553571
|
+
success: true,
|
|
553572
|
+
output: `${id2} output (last 50 lines):
|
|
553573
|
+
${tail}`,
|
|
553574
|
+
llmContent: fullSubAgentModelContent({
|
|
553575
|
+
id: id2,
|
|
553576
|
+
task: entry.task,
|
|
553577
|
+
status: entry.status,
|
|
553578
|
+
exitCode: entry.exitCode,
|
|
553579
|
+
output: tail,
|
|
553580
|
+
outputLines: entry.outputBuffer.length
|
|
553581
|
+
}),
|
|
553582
|
+
durationMs: performance.now() - start2
|
|
553583
|
+
};
|
|
553387
553584
|
}
|
|
553388
553585
|
case "stop": {
|
|
553389
553586
|
const id2 = String(args["id"] ?? "");
|
|
@@ -555507,7 +555704,7 @@ var init_client3 = __esm({
|
|
|
555507
555704
|
import { existsSync as existsSync73, readFileSync as readFileSync52, writeFileSync as writeFileSync35, mkdirSync as mkdirSync44, chmodSync, statSync as statSync30 } from "node:fs";
|
|
555508
555705
|
import { join as join85, dirname as dirname23 } from "node:path";
|
|
555509
555706
|
import { homedir as homedir23 } from "node:os";
|
|
555510
|
-
import { randomBytes as randomBytes19, createHash as
|
|
555707
|
+
import { randomBytes as randomBytes19, createHash as createHash25 } from "node:crypto";
|
|
555511
555708
|
function secretsPath(scope, repoRoot) {
|
|
555512
555709
|
return scope === "global" ? join85(homedir23(), ".omnius", "secrets.json") : join85(repoRoot, ".omnius", "secrets.json");
|
|
555513
555710
|
}
|
|
@@ -555548,7 +555745,7 @@ function sanitizeHint(hint) {
|
|
|
555548
555745
|
return hint.toUpperCase().replace(/[^A-Z0-9]+/g, "_").replace(/^_+|_+$/g, "").slice(0, 32) || "GENERIC";
|
|
555549
555746
|
}
|
|
555550
555747
|
function shortDigest(value2) {
|
|
555551
|
-
return
|
|
555748
|
+
return createHash25("sha256").update(value2).digest("hex").slice(0, 6);
|
|
555552
555749
|
}
|
|
555553
555750
|
function randomSuffix() {
|
|
555554
555751
|
return randomBytes19(3).toString("hex");
|
|
@@ -557362,7 +557559,7 @@ var init_environment_snapshot = __esm({
|
|
|
557362
557559
|
import { existsSync as existsSync77, mkdirSync as mkdirSync46, writeFileSync as writeFileSync38, readFileSync as readFileSync56, readdirSync as readdirSync26, unlinkSync as unlinkSync16, rmSync as rmSync10 } from "node:fs";
|
|
557363
557560
|
import { join as join88, basename as basename18, isAbsolute as isAbsolute8, resolve as resolve46 } from "node:path";
|
|
557364
557561
|
import { homedir as homedir26 } from "node:os";
|
|
557365
|
-
import { createHash as
|
|
557562
|
+
import { createHash as createHash26 } from "node:crypto";
|
|
557366
557563
|
function isYouTubeUrl2(url) {
|
|
557367
557564
|
return /(?:youtube\.com\/(?:watch|shorts|live|embed|v\/)|youtu\.be\/)/i.test(url);
|
|
557368
557565
|
}
|
|
@@ -557447,7 +557644,7 @@ async function extractAudioIfPresent(videoPath, audioPath, probe) {
|
|
|
557447
557644
|
function imageHash(imagePath) {
|
|
557448
557645
|
try {
|
|
557449
557646
|
const data = readFileSync56(imagePath);
|
|
557450
|
-
return
|
|
557647
|
+
return createHash26("md5").update(data).digest("hex").slice(0, 12);
|
|
557451
557648
|
} catch {
|
|
557452
557649
|
return "unknown";
|
|
557453
557650
|
}
|
|
@@ -569598,14 +569795,14 @@ var init_artifact_inspector = __esm({
|
|
|
569598
569795
|
// packages/orchestrator/dist/lesson-bank.js
|
|
569599
569796
|
import { existsSync as existsSync91, mkdirSync as mkdirSync52, appendFileSync as appendFileSync7, readFileSync as readFileSync69 } from "node:fs";
|
|
569600
569797
|
import { join as join101, dirname as dirname30 } from "node:path";
|
|
569601
|
-
import { createHash as
|
|
569798
|
+
import { createHash as createHash27 } from "node:crypto";
|
|
569602
569799
|
function tokenize4(text2) {
|
|
569603
569800
|
if (!text2)
|
|
569604
569801
|
return [];
|
|
569605
569802
|
return text2.toLowerCase().split(TOKENIZE_RE).filter((t2) => t2.length >= 3).slice(0, 80);
|
|
569606
569803
|
}
|
|
569607
569804
|
function shortHash(s2) {
|
|
569608
|
-
return
|
|
569805
|
+
return createHash27("sha256").update(s2).digest("hex").slice(0, 16);
|
|
569609
569806
|
}
|
|
569610
569807
|
function solicit(args) {
|
|
569611
569808
|
const { taskGoal, stem, reflections, successOutputPreview } = args;
|
|
@@ -569701,7 +569898,7 @@ var init_lesson_bank = __esm({
|
|
|
569701
569898
|
// packages/orchestrator/dist/intervention-replay.js
|
|
569702
569899
|
import { existsSync as existsSync92, mkdirSync as mkdirSync53, readFileSync as readFileSync70, writeFileSync as writeFileSync43, readdirSync as readdirSync29 } from "node:fs";
|
|
569703
569900
|
import { join as join102, dirname as dirname31 } from "node:path";
|
|
569704
|
-
import { createHash as
|
|
569901
|
+
import { createHash as createHash28 } from "node:crypto";
|
|
569705
569902
|
function checkpointDir2(workingDir) {
|
|
569706
569903
|
return workingDir ? join102(workingDir, ".omnius", "checkpoints") : join102(process.env["HOME"] || ".", ".omnius", "checkpoints");
|
|
569707
569904
|
}
|
|
@@ -569735,7 +569932,7 @@ function sanitizeMessagesForCheckpoint(messages2) {
|
|
|
569735
569932
|
deduped.push(m2);
|
|
569736
569933
|
continue;
|
|
569737
569934
|
}
|
|
569738
|
-
const digest3 =
|
|
569935
|
+
const digest3 = createHash28("sha1").update(content).digest("hex");
|
|
569739
569936
|
if (seenSystemDigests.has(digest3))
|
|
569740
569937
|
continue;
|
|
569741
569938
|
seenSystemDigests.add(digest3);
|
|
@@ -573691,12 +573888,12 @@ var init_codeGraphLink = __esm({
|
|
|
573691
573888
|
});
|
|
573692
573889
|
|
|
573693
573890
|
// packages/orchestrator/dist/artifactContract.js
|
|
573694
|
-
import { createHash as
|
|
573891
|
+
import { createHash as createHash29 } from "node:crypto";
|
|
573695
573892
|
function shortHash2(content) {
|
|
573696
573893
|
if (!content)
|
|
573697
573894
|
return "empty";
|
|
573698
573895
|
try {
|
|
573699
|
-
return
|
|
573896
|
+
return createHash29("sha256").update(content.slice(0, 4096)).digest("hex").slice(0, 8);
|
|
573700
573897
|
} catch {
|
|
573701
573898
|
let h = 2166136261;
|
|
573702
573899
|
for (let i2 = 0; i2 < Math.min(content.length, 4096); i2++) {
|
|
@@ -577239,6 +577436,46 @@ function hasConcreteGoalMessage(messages2) {
|
|
|
577239
577436
|
function hasUserMessage(messages2) {
|
|
577240
577437
|
return messages2.some((message2) => message2.role === "user" && messageText(message2.content).trim().length > 0);
|
|
577241
577438
|
}
|
|
577439
|
+
function hasAssistantPayload(message2) {
|
|
577440
|
+
const text2 = messageText(message2.content).trim();
|
|
577441
|
+
if (text2 && !/^(null|undefined)$/i.test(text2))
|
|
577442
|
+
return true;
|
|
577443
|
+
const record = message2;
|
|
577444
|
+
if (Array.isArray(record["tool_calls"]) && record["tool_calls"].length > 0)
|
|
577445
|
+
return true;
|
|
577446
|
+
return Boolean(record["function_call"]);
|
|
577447
|
+
}
|
|
577448
|
+
function staleToolFailureKey(content) {
|
|
577449
|
+
const text2 = content.replace(/\s+/g, " ").trim();
|
|
577450
|
+
if (!/(FAILED:|failed again|doom-loop|result compacted|Earlier read of .* cleared)/i.test(text2)) {
|
|
577451
|
+
return null;
|
|
577452
|
+
}
|
|
577453
|
+
const tool = text2.match(/^\[?([a-zA-Z_][a-zA-Z0-9_]*)\(/)?.[1] ?? "tool";
|
|
577454
|
+
const path16 = text2.match(/"path"\s*:\s*"([^"]+)"/)?.[1] ?? text2.match(/Earlier read of ([^ ]+) cleared/)?.[1] ?? "";
|
|
577455
|
+
const family = text2.match(/FAILED:\s*\[([^\]\n]+)/i)?.[1] ?? text2.match(/(doom-loop[^.]+)/i)?.[1] ?? text2.match(/(Earlier read of [^ ]+ cleared)/i)?.[1] ?? "failure";
|
|
577456
|
+
return [tool, path16, family].join("|").toLowerCase().replace(/[a-f0-9]{16,}/g, "<hash>").replace(/\d+/g, "#");
|
|
577457
|
+
}
|
|
577458
|
+
function retireDuplicateToolFailures(messages2) {
|
|
577459
|
+
const seen = /* @__PURE__ */ new Set();
|
|
577460
|
+
const out = [...messages2];
|
|
577461
|
+
for (let index = out.length - 1; index >= 0; index--) {
|
|
577462
|
+
const message2 = out[index];
|
|
577463
|
+
if (message2.role !== "tool" || typeof message2.content !== "string")
|
|
577464
|
+
continue;
|
|
577465
|
+
const key = staleToolFailureKey(message2.content);
|
|
577466
|
+
if (!key)
|
|
577467
|
+
continue;
|
|
577468
|
+
if (!seen.has(key)) {
|
|
577469
|
+
seen.add(key);
|
|
577470
|
+
continue;
|
|
577471
|
+
}
|
|
577472
|
+
out[index] = {
|
|
577473
|
+
...message2,
|
|
577474
|
+
content: "[retired_duplicate_tool_failure] newer matching result appears later; do not repeat the same call."
|
|
577475
|
+
};
|
|
577476
|
+
}
|
|
577477
|
+
return out;
|
|
577478
|
+
}
|
|
577242
577479
|
function prepareModelFacingApiMessages(input) {
|
|
577243
577480
|
const preserveFirstSystem = input.preserveFirstSystem !== false;
|
|
577244
577481
|
const sanitized = [];
|
|
@@ -577255,6 +577492,16 @@ function prepareModelFacingApiMessages(input) {
|
|
|
577255
577492
|
sanitized.push({ ...message2, content: cleaned });
|
|
577256
577493
|
continue;
|
|
577257
577494
|
}
|
|
577495
|
+
if (message2.role === "assistant" && !hasAssistantPayload(message2)) {
|
|
577496
|
+
continue;
|
|
577497
|
+
}
|
|
577498
|
+
if (message2.role === "tool" && typeof message2.content === "string") {
|
|
577499
|
+
const cleaned = sanitizeModelVisibleContextText(message2.content);
|
|
577500
|
+
if (!cleaned)
|
|
577501
|
+
continue;
|
|
577502
|
+
sanitized.push({ ...message2, content: cleaned });
|
|
577503
|
+
continue;
|
|
577504
|
+
}
|
|
577258
577505
|
sanitized.push({ ...message2 });
|
|
577259
577506
|
}
|
|
577260
577507
|
const keep = new Array(sanitized.length).fill(true);
|
|
@@ -577274,7 +577521,7 @@ function prepareModelFacingApiMessages(input) {
|
|
|
577274
577521
|
}
|
|
577275
577522
|
seenSystemKeys.add(key);
|
|
577276
577523
|
}
|
|
577277
|
-
const deduped = sanitized.filter((_message, index) => keep[index]);
|
|
577524
|
+
const deduped = retireDuplicateToolFailures(sanitized.filter((_message, index) => keep[index]));
|
|
577278
577525
|
if (!hasUserMessage(deduped) && !hasConcreteGoalMessage(deduped)) {
|
|
577279
577526
|
const goal = deriveCurrentGoal({
|
|
577280
577527
|
explicitGoal: input.currentGoal,
|
|
@@ -577574,7 +577821,7 @@ var init_evidenceLedger = __esm({
|
|
|
577574
577821
|
import { existsSync as existsSync102, mkdirSync as mkdirSync58, readdirSync as readdirSync32, readFileSync as readFileSync78, statSync as statSync39, unlinkSync as unlinkSync17, writeFileSync as writeFileSync48, appendFileSync as appendFileSync9 } from "node:fs";
|
|
577575
577822
|
import { homedir as homedir35 } from "node:os";
|
|
577576
577823
|
import { join as join111, resolve as resolve54 } from "node:path";
|
|
577577
|
-
import { createHash as
|
|
577824
|
+
import { createHash as createHash30 } from "node:crypto";
|
|
577578
577825
|
function contextWindowDumpDir(cwd4 = process.cwd()) {
|
|
577579
577826
|
const envDir = process.env["OMNIUS_CONTEXT_WINDOW_DUMP_DIR"]?.trim();
|
|
577580
577827
|
if (envDir)
|
|
@@ -577625,9 +577872,7 @@ function recordContextWindowDump(input) {
|
|
|
577625
577872
|
const payload = JSON.stringify(record, null, 2);
|
|
577626
577873
|
writeFileSync48(filePath, payload, "utf-8");
|
|
577627
577874
|
writeFileSync48(join111(dir, `latest-${record.agentType}.json`), payload, "utf-8");
|
|
577628
|
-
|
|
577629
|
-
writeFileSync48(join111(dir, "latest.json"), payload, "utf-8");
|
|
577630
|
-
}
|
|
577875
|
+
writeFileSync48(join111(dir, "latest.json"), payload, "utf-8");
|
|
577631
577876
|
appendFileSync9(join111(dir, "index.jsonl"), JSON.stringify(toSummary(record, filePath)) + "\n", "utf-8");
|
|
577632
577877
|
maybePruneOldDumpFiles(dir);
|
|
577633
577878
|
} catch {
|
|
@@ -577921,7 +578166,7 @@ function safeId(value2) {
|
|
|
577921
578166
|
return String(value2 || "unknown").replace(/[^a-zA-Z0-9_.:-]/g, "_").slice(0, 160);
|
|
577922
578167
|
}
|
|
577923
578168
|
function shortHash3(value2) {
|
|
577924
|
-
return
|
|
578169
|
+
return createHash30("sha256").update(value2).digest("hex").slice(0, 10);
|
|
577925
578170
|
}
|
|
577926
578171
|
function pruneOldDumpFiles(dir) {
|
|
577927
578172
|
const raw = Number(process.env["OMNIUS_CONTEXT_WINDOW_DUMP_MAX_FILES"]);
|
|
@@ -578334,7 +578579,7 @@ var init_adversaryStream = __esm({
|
|
|
578334
578579
|
|
|
578335
578580
|
// packages/orchestrator/dist/debugArtifactLibrary.js
|
|
578336
578581
|
import { appendFileSync as appendFileSync10, existsSync as existsSync103, mkdirSync as mkdirSync59, readFileSync as readFileSync79, statSync as statSync40, writeFileSync as writeFileSync49 } from "node:fs";
|
|
578337
|
-
import { createHash as
|
|
578582
|
+
import { createHash as createHash31 } from "node:crypto";
|
|
578338
578583
|
import { basename as basename24, join as join112, relative as relative12, resolve as resolve55 } from "node:path";
|
|
578339
578584
|
function debugArtifactRoot(cwd4 = process.cwd(), stateDir) {
|
|
578340
578585
|
const envDir = process.env["OMNIUS_DEBUG_ARTIFACT_DIR"]?.trim();
|
|
@@ -579130,7 +579375,7 @@ function safeId2(value2) {
|
|
|
579130
579375
|
return String(value2 || "unknown").replace(/[^a-zA-Z0-9_.:-]/g, "_").slice(0, 160);
|
|
579131
579376
|
}
|
|
579132
579377
|
function shortHash4(value2) {
|
|
579133
|
-
return
|
|
579378
|
+
return createHash31("sha256").update(value2).digest("hex").slice(0, 10);
|
|
579134
579379
|
}
|
|
579135
579380
|
var DEBUG_LIBRARY_DIR, RUN_EVENTS_LIMIT, PREVIEW_LIMIT;
|
|
579136
579381
|
var init_debugArtifactLibrary = __esm({
|
|
@@ -581211,7 +581456,7 @@ var init_domainDetector = __esm({
|
|
|
581211
581456
|
});
|
|
581212
581457
|
|
|
581213
581458
|
// packages/orchestrator/dist/compile-error-fix-loop.js
|
|
581214
|
-
import { createHash as
|
|
581459
|
+
import { createHash as createHash32 } from "node:crypto";
|
|
581215
581460
|
import path7 from "node:path";
|
|
581216
581461
|
function rankCompilerDiagnostics(diags) {
|
|
581217
581462
|
const normalized = diags.map((diag, index) => ({
|
|
@@ -581492,7 +581737,7 @@ function isCompileFixDiagnostic(value2) {
|
|
|
581492
581737
|
return Boolean(value2 && typeof value2.fingerprint === "string" && typeof value2.rank === "number");
|
|
581493
581738
|
}
|
|
581494
581739
|
function shortHash5(value2) {
|
|
581495
|
-
return
|
|
581740
|
+
return createHash32("sha256").update(value2).digest("hex").slice(0, 10);
|
|
581496
581741
|
}
|
|
581497
581742
|
function fence(value2) {
|
|
581498
581743
|
return ["```", value2.trim(), "```"].join("\n");
|
|
@@ -583061,7 +583306,7 @@ var init_prompt_cache = __esm({
|
|
|
583061
583306
|
|
|
583062
583307
|
// packages/orchestrator/dist/git-progress.js
|
|
583063
583308
|
import { existsSync as existsSync104, readFileSync as readFileSync80, statSync as statSync41 } from "node:fs";
|
|
583064
|
-
import { createHash as
|
|
583309
|
+
import { createHash as createHash33 } from "node:crypto";
|
|
583065
583310
|
import { relative as relative13, resolve as resolve56, sep as sep4 } from "node:path";
|
|
583066
583311
|
function isRunnerOwnedGitPath(path16) {
|
|
583067
583312
|
const normalized = normalizeGitPath(path16);
|
|
@@ -583088,7 +583333,7 @@ function pathHash(repoRoot, relPath) {
|
|
|
583088
583333
|
const st = statSync41(absolute);
|
|
583089
583334
|
if (!st.isFile())
|
|
583090
583335
|
return `non-file:${st.size}:${Math.floor(st.mtimeMs)}`;
|
|
583091
|
-
return
|
|
583336
|
+
return createHash33("sha256").update(readFileSync80(absolute)).digest("hex");
|
|
583092
583337
|
} catch {
|
|
583093
583338
|
return void 0;
|
|
583094
583339
|
}
|
|
@@ -583925,7 +584170,7 @@ __export(preflightSnapshot_exports, {
|
|
|
583925
584170
|
import { existsSync as existsSync105, readFileSync as readFileSync81, statSync as statSync42, statfsSync as statfsSync6 } from "node:fs";
|
|
583926
584171
|
import { homedir as homedir36, platform as platform4, arch as arch2, totalmem as totalmem4, freemem as freemem3, hostname as hostname3 } from "node:os";
|
|
583927
584172
|
import { join as join113 } from "node:path";
|
|
583928
|
-
import { createHash as
|
|
584173
|
+
import { createHash as createHash34 } from "node:crypto";
|
|
583929
584174
|
function capturePreflightSnapshot(workingDir) {
|
|
583930
584175
|
const warnings = [];
|
|
583931
584176
|
const configFingerprints = {};
|
|
@@ -584094,7 +584339,7 @@ function expandPath(p2) {
|
|
|
584094
584339
|
return p2;
|
|
584095
584340
|
}
|
|
584096
584341
|
function sha2564(s2) {
|
|
584097
|
-
return
|
|
584342
|
+
return createHash34("sha256").update(s2).digest("hex").slice(0, 16);
|
|
584098
584343
|
}
|
|
584099
584344
|
function freeDiskBytes(path16 = "/tmp") {
|
|
584100
584345
|
try {
|
|
@@ -594152,6 +594397,10 @@ ${notice}`;
|
|
|
594152
594397
|
injectUserMessage(content) {
|
|
594153
594398
|
this.pendingUserMessages.push(this.scrubUserInput(content, "injected-user-message"));
|
|
594154
594399
|
}
|
|
594400
|
+
/** Inject bounded runtime guidance without treating it as user steering. */
|
|
594401
|
+
injectRuntimeGuidance(content) {
|
|
594402
|
+
this.enqueueRuntimeGuidance(content);
|
|
594403
|
+
}
|
|
594155
594404
|
enqueueRuntimeGuidance(content) {
|
|
594156
594405
|
const cleaned = this.scrubUserInput(content, "runtime-guidance").trim();
|
|
594157
594406
|
if (cleaned)
|
|
@@ -596881,8 +597130,8 @@ If you're stuck, try a completely different approach. Do NOT repeat what failed
|
|
|
596881
597130
|
if (process.env["OMNIUS_DISABLE_ADAPTIVE_RETRIEVAL"] !== "1") {
|
|
596882
597131
|
const goalForSig = (this._taskState.goal || "").slice(0, 200);
|
|
596883
597132
|
const recentTools = this._toolSequence.slice(-5).join("|");
|
|
596884
|
-
const { createHash:
|
|
596885
|
-
const sig =
|
|
597133
|
+
const { createHash: createHash53 } = await import("node:crypto");
|
|
597134
|
+
const sig = createHash53("sha256").update(`${goalForSig}::${recentTools}`).digest("hex").slice(0, 16);
|
|
596886
597135
|
if (this._lastPprSig === sig && this._lastPprMemoryLines.length > 0) {
|
|
596887
597136
|
compacted.push({
|
|
596888
597137
|
role: "system",
|
|
@@ -610098,7 +610347,7 @@ var init_composite_scorer = __esm({
|
|
|
610098
610347
|
});
|
|
610099
610348
|
|
|
610100
610349
|
// packages/orchestrator/dist/memory/materialization-policy.js
|
|
610101
|
-
import { createHash as
|
|
610350
|
+
import { createHash as createHash35 } from "node:crypto";
|
|
610102
610351
|
function materializeMemoryItems(items, options2 = {}) {
|
|
610103
610352
|
const config = options2.config ?? DEFAULT_WEIGHTING_CONFIG;
|
|
610104
610353
|
const sorted = [...items].sort((a2, b) => b.weight - a2.weight || a2.id.localeCompare(b.id));
|
|
@@ -610336,7 +610585,7 @@ function estimateTokens4(text2) {
|
|
|
610336
610585
|
return Math.max(1, Math.ceil(text2.length / 4));
|
|
610337
610586
|
}
|
|
610338
610587
|
function hashText(text2) {
|
|
610339
|
-
return
|
|
610588
|
+
return createHash35("sha256").update(text2).digest("hex");
|
|
610340
610589
|
}
|
|
610341
610590
|
var init_materialization_policy = __esm({
|
|
610342
610591
|
"packages/orchestrator/dist/memory/materialization-policy.js"() {
|
|
@@ -610500,7 +610749,7 @@ var init_config_loader = __esm({
|
|
|
610500
610749
|
});
|
|
610501
610750
|
|
|
610502
610751
|
// packages/orchestrator/dist/memory/stability-tracker.js
|
|
610503
|
-
import { createHash as
|
|
610752
|
+
import { createHash as createHash36 } from "node:crypto";
|
|
610504
610753
|
import { existsSync as existsSync109, mkdirSync as mkdirSync60, readFileSync as readFileSync84, writeFileSync as writeFileSync51 } from "node:fs";
|
|
610505
610754
|
import { dirname as dirname36, join as join117 } from "node:path";
|
|
610506
610755
|
function stabilityFilePath(repoRoot) {
|
|
@@ -610564,7 +610813,7 @@ function computeStabilityHash(item) {
|
|
|
610564
610813
|
item.scope.name,
|
|
610565
610814
|
item.topicKey
|
|
610566
610815
|
].join("|");
|
|
610567
|
-
return
|
|
610816
|
+
return createHash36("sha256").update(normalized).digest("hex");
|
|
610568
610817
|
}
|
|
610569
610818
|
function normalizeContent2(content) {
|
|
610570
610819
|
return content.replace(/\s+/g, " ").trim();
|
|
@@ -614565,10 +614814,10 @@ var init_project_arc = __esm({
|
|
|
614565
614814
|
});
|
|
614566
614815
|
|
|
614567
614816
|
// packages/orchestrator/dist/dedup-gate.js
|
|
614568
|
-
import { createHash as
|
|
614817
|
+
import { createHash as createHash37 } from "node:crypto";
|
|
614569
614818
|
function fingerprintCall(name10, args) {
|
|
614570
614819
|
const canon = canonicalize(args);
|
|
614571
|
-
return
|
|
614820
|
+
return createHash37("sha1").update(`${name10}\0${canon}`).digest("hex").slice(0, 16);
|
|
614572
614821
|
}
|
|
614573
614822
|
function canonicalize(value2) {
|
|
614574
614823
|
if (value2 === null || typeof value2 !== "object")
|
|
@@ -625482,7 +625731,7 @@ var require_websocket3 = __commonJS({
|
|
|
625482
625731
|
var http6 = __require("http");
|
|
625483
625732
|
var net5 = __require("net");
|
|
625484
625733
|
var tls2 = __require("tls");
|
|
625485
|
-
var { randomBytes: randomBytes31, createHash:
|
|
625734
|
+
var { randomBytes: randomBytes31, createHash: createHash53 } = __require("crypto");
|
|
625486
625735
|
var { Duplex: Duplex3, Readable } = __require("stream");
|
|
625487
625736
|
var { URL: URL3 } = __require("url");
|
|
625488
625737
|
var PerMessageDeflate3 = require_permessage_deflate3();
|
|
@@ -626142,7 +626391,7 @@ var require_websocket3 = __commonJS({
|
|
|
626142
626391
|
abortHandshake(websocket, socket, "Invalid Upgrade header");
|
|
626143
626392
|
return;
|
|
626144
626393
|
}
|
|
626145
|
-
const digest3 =
|
|
626394
|
+
const digest3 = createHash53("sha1").update(key + GUID).digest("base64");
|
|
626146
626395
|
if (res.headers["sec-websocket-accept"] !== digest3) {
|
|
626147
626396
|
abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header");
|
|
626148
626397
|
return;
|
|
@@ -626509,7 +626758,7 @@ var require_websocket_server2 = __commonJS({
|
|
|
626509
626758
|
var EventEmitter15 = __require("events");
|
|
626510
626759
|
var http6 = __require("http");
|
|
626511
626760
|
var { Duplex: Duplex3 } = __require("stream");
|
|
626512
|
-
var { createHash:
|
|
626761
|
+
var { createHash: createHash53 } = __require("crypto");
|
|
626513
626762
|
var extension3 = require_extension3();
|
|
626514
626763
|
var PerMessageDeflate3 = require_permessage_deflate3();
|
|
626515
626764
|
var subprotocol3 = require_subprotocol2();
|
|
@@ -626810,7 +627059,7 @@ var require_websocket_server2 = __commonJS({
|
|
|
626810
627059
|
);
|
|
626811
627060
|
}
|
|
626812
627061
|
if (this._state > RUNNING) return abortHandshake(socket, 503);
|
|
626813
|
-
const digest3 =
|
|
627062
|
+
const digest3 = createHash53("sha1").update(key + GUID).digest("base64");
|
|
626814
627063
|
const headers = [
|
|
626815
627064
|
"HTTP/1.1 101 Switching Protocols",
|
|
626816
627065
|
"Upgrade: websocket",
|
|
@@ -633591,14 +633840,14 @@ var init_voice_session = __esm({
|
|
|
633591
633840
|
});
|
|
633592
633841
|
|
|
633593
633842
|
// packages/cli/src/tui/scoped-personality.ts
|
|
633594
|
-
import { createHash as
|
|
633843
|
+
import { createHash as createHash38 } from "node:crypto";
|
|
633595
633844
|
import { appendFileSync as appendFileSync13, existsSync as existsSync120, mkdirSync as mkdirSync72, readFileSync as readFileSync97, writeFileSync as writeFileSync60 } from "node:fs";
|
|
633596
633845
|
import { join as join131, resolve as resolve60 } from "node:path";
|
|
633597
633846
|
function safeName(input) {
|
|
633598
633847
|
return input.replace(/[^A-Za-z0-9_.-]/g, "-").slice(0, 80) || "default";
|
|
633599
633848
|
}
|
|
633600
633849
|
function scopeHash(scope) {
|
|
633601
|
-
return
|
|
633850
|
+
return createHash38("sha1").update(`${scope.kind}:${scope.id}`).digest("hex").slice(0, 16);
|
|
633602
633851
|
}
|
|
633603
633852
|
function scopedPersonalityDir(repoRoot, kind) {
|
|
633604
633853
|
return resolve60(repoRoot, ".omnius", "scoped-personality", kind);
|
|
@@ -633969,7 +634218,7 @@ var init_scoped_personality = __esm({
|
|
|
633969
634218
|
});
|
|
633970
634219
|
|
|
633971
634220
|
// packages/cli/src/tui/voice-soul.ts
|
|
633972
|
-
import { createHash as
|
|
634221
|
+
import { createHash as createHash39 } from "node:crypto";
|
|
633973
634222
|
import { existsSync as existsSync121, readdirSync as readdirSync38, readFileSync as readFileSync98 } from "node:fs";
|
|
633974
634223
|
import { basename as basename26, join as join132, resolve as resolve61 } from "node:path";
|
|
633975
634224
|
function compactText(text2, limit) {
|
|
@@ -633984,7 +634233,7 @@ function blockText(text2, limit) {
|
|
|
633984
634233
|
... [truncated]`;
|
|
633985
634234
|
}
|
|
633986
634235
|
function scopeStateKey(scope, surface) {
|
|
633987
|
-
return
|
|
634236
|
+
return createHash39("sha1").update(`${surface}:${scope.kind}:${scope.id}`).digest("hex").slice(0, 16);
|
|
633988
634237
|
}
|
|
633989
634238
|
function safeName2(input) {
|
|
633990
634239
|
return input.replace(/[^A-Za-z0-9_.-]/g, "-").slice(0, 80) || "default";
|
|
@@ -636624,7 +636873,7 @@ var init_types3 = __esm({
|
|
|
636624
636873
|
});
|
|
636625
636874
|
|
|
636626
636875
|
// packages/cli/src/tui/p2p/secret-vault.ts
|
|
636627
|
-
import { createCipheriv as createCipheriv3, createDecipheriv as createDecipheriv3, randomBytes as randomBytes23, scryptSync as scryptSync2, createHash as
|
|
636876
|
+
import { createCipheriv as createCipheriv3, createDecipheriv as createDecipheriv3, randomBytes as randomBytes23, scryptSync as scryptSync2, createHash as createHash40 } from "node:crypto";
|
|
636628
636877
|
import { readFileSync as readFileSync100, writeFileSync as writeFileSync62, existsSync as existsSync123, mkdirSync as mkdirSync74 } from "node:fs";
|
|
636629
636878
|
import { dirname as dirname39 } from "node:path";
|
|
636630
636879
|
var PLACEHOLDER_PREFIX, PLACEHOLDER_SUFFIX, CIPHER_ALGO, SALT_LEN, IV_LEN, KEY_LEN, SecretVault;
|
|
@@ -636868,7 +637117,7 @@ var init_secret_vault = __esm({
|
|
|
636868
637117
|
/** Generate a deterministic fingerprint of vault contents (for sync verification) */
|
|
636869
637118
|
fingerprint() {
|
|
636870
637119
|
const names = Array.from(this.secrets.keys()).sort();
|
|
636871
|
-
const hash =
|
|
637120
|
+
const hash = createHash40("sha256");
|
|
636872
637121
|
for (const name10 of names) {
|
|
636873
637122
|
hash.update(name10 + ":");
|
|
636874
637123
|
hash.update(this.secrets.get(name10).value);
|
|
@@ -636883,7 +637132,7 @@ var init_secret_vault = __esm({
|
|
|
636883
637132
|
// packages/cli/src/tui/p2p/peer-mesh.ts
|
|
636884
637133
|
import { EventEmitter as EventEmitter9 } from "node:events";
|
|
636885
637134
|
import { createServer as createServer6 } from "node:http";
|
|
636886
|
-
import { randomBytes as randomBytes24, createHash as
|
|
637135
|
+
import { randomBytes as randomBytes24, createHash as createHash41, generateKeyPairSync } from "node:crypto";
|
|
636887
637136
|
var PING_INTERVAL_MS, PEER_TIMEOUT_MS, GOSSIP_INTERVAL_MS, MAX_PEERS, PeerMesh;
|
|
636888
637137
|
var init_peer_mesh = __esm({
|
|
636889
637138
|
"packages/cli/src/tui/p2p/peer-mesh.ts"() {
|
|
@@ -636899,7 +637148,7 @@ var init_peer_mesh = __esm({
|
|
|
636899
637148
|
const { publicKey: publicKey2, privateKey } = generateKeyPairSync("ed25519");
|
|
636900
637149
|
this.publicKey = publicKey2.export({ type: "spki", format: "der" });
|
|
636901
637150
|
this.privateKey = privateKey.export({ type: "pkcs8", format: "der" });
|
|
636902
|
-
this.peerId =
|
|
637151
|
+
this.peerId = createHash41("sha256").update(this.publicKey).digest("base64url").slice(0, 22);
|
|
636903
637152
|
this.capabilities = options2.capabilities;
|
|
636904
637153
|
this.displayName = options2.displayName;
|
|
636905
637154
|
this._authKey = options2.authKey ?? randomBytes24(24).toString("base64url");
|
|
@@ -638265,7 +638514,7 @@ __export(omnius_directory_exports, {
|
|
|
638265
638514
|
import { appendFileSync as appendFileSync14, cpSync as cpSync2, existsSync as existsSync125, mkdirSync as mkdirSync76, readFileSync as readFileSync102, writeFileSync as writeFileSync64, readdirSync as readdirSync41, statSync as statSync51, unlinkSync as unlinkSync23, openSync as openSync2, closeSync as closeSync2, renameSync as renameSync11, watch as fsWatch2 } from "node:fs";
|
|
638266
638515
|
import { join as join136, relative as relative17, basename as basename27, dirname as dirname40, resolve as resolve62 } from "node:path";
|
|
638267
638516
|
import { homedir as homedir42 } from "node:os";
|
|
638268
|
-
import { createHash as
|
|
638517
|
+
import { createHash as createHash43 } from "node:crypto";
|
|
638269
638518
|
function isGitRoot(dir) {
|
|
638270
638519
|
const gitPath = join136(dir, ".git");
|
|
638271
638520
|
if (!existsSync125(gitPath)) return false;
|
|
@@ -638747,7 +638996,7 @@ function buildHandoffPrompt(repoRoot) {
|
|
|
638747
638996
|
return lines.join("\n");
|
|
638748
638997
|
}
|
|
638749
638998
|
function computeDedupeHash(task, savedAt) {
|
|
638750
|
-
return
|
|
638999
|
+
return createHash43("sha256").update(`${task}|${savedAt}`).digest("hex").slice(0, 16);
|
|
638751
639000
|
}
|
|
638752
639001
|
function generateSessionId() {
|
|
638753
639002
|
const timestamp = Date.now().toString(36);
|
|
@@ -665789,7 +666038,7 @@ __export(commands_exports, {
|
|
|
665789
666038
|
});
|
|
665790
666039
|
import * as nodeOs from "node:os";
|
|
665791
666040
|
import { spawn as nodeSpawn2 } from "node:child_process";
|
|
665792
|
-
import { createHash as
|
|
666041
|
+
import { createHash as createHash44 } from "node:crypto";
|
|
665793
666042
|
import {
|
|
665794
666043
|
existsSync as existsSync147,
|
|
665795
666044
|
readFileSync as readFileSync119,
|
|
@@ -679149,7 +679398,7 @@ async function collectSponsorMediaStream(args) {
|
|
|
679149
679398
|
};
|
|
679150
679399
|
}
|
|
679151
679400
|
if (artifact.sha256) {
|
|
679152
|
-
const sha =
|
|
679401
|
+
const sha = createHash44("sha256").update(bytes).digest("hex");
|
|
679153
679402
|
if (sha !== artifact.sha256)
|
|
679154
679403
|
return { ok: false, error: `Artifact hash mismatch for ${artifactId}` };
|
|
679155
679404
|
}
|
|
@@ -693617,7 +693866,7 @@ import {
|
|
|
693617
693866
|
unlinkSync as unlinkSync34
|
|
693618
693867
|
} from "node:fs";
|
|
693619
693868
|
import { join as join168 } from "node:path";
|
|
693620
|
-
import { createHash as
|
|
693869
|
+
import { createHash as createHash45 } from "node:crypto";
|
|
693621
693870
|
function safeFilePart(value2) {
|
|
693622
693871
|
return value2.replace(/[^A-Za-z0-9_.-]+/g, "_").slice(0, 80) || "telegram";
|
|
693623
693872
|
}
|
|
@@ -693625,7 +693874,7 @@ function daydreamRoot(repoRoot) {
|
|
|
693625
693874
|
return join168(repoRoot, ".omnius", "telegram-daydreams");
|
|
693626
693875
|
}
|
|
693627
693876
|
function sessionDir(repoRoot, sessionKey) {
|
|
693628
|
-
const hash =
|
|
693877
|
+
const hash = createHash45("sha1").update(sessionKey).digest("hex").slice(0, 20);
|
|
693629
693878
|
return join168(daydreamRoot(repoRoot), safeFilePart(hash));
|
|
693630
693879
|
}
|
|
693631
693880
|
function compactLine2(value2, max = 220) {
|
|
@@ -693736,7 +693985,7 @@ function buildReplyOpportunities(input, openQuestions) {
|
|
|
693736
693985
|
return opportunities;
|
|
693737
693986
|
}
|
|
693738
693987
|
function daydreamOpportunityId(input, trigger) {
|
|
693739
|
-
return
|
|
693988
|
+
return createHash45("sha1").update(`${input.sessionKey}:${input.generatedAtMs}:${trigger}`).digest("hex").slice(0, 16);
|
|
693740
693989
|
}
|
|
693741
693990
|
function clamp0115(value2) {
|
|
693742
693991
|
if (!Number.isFinite(value2)) return 0;
|
|
@@ -694141,7 +694390,7 @@ function buildTelegramChannelDaydream(input, corpus, extraction, extractionCommi
|
|
|
694141
694390
|
const seed = `${input.sessionKey}:${input.generatedAtMs}:${input.history.length}`;
|
|
694142
694391
|
return {
|
|
694143
694392
|
version: 3,
|
|
694144
|
-
id:
|
|
694393
|
+
id: createHash45("sha1").update(seed).digest("hex").slice(0, 16),
|
|
694145
694394
|
sessionKey: input.sessionKey,
|
|
694146
694395
|
chatId: input.chatId,
|
|
694147
694396
|
chatTitle: input.chatTitle,
|
|
@@ -694453,12 +694702,12 @@ var init_telegram_channel_dmn = __esm({
|
|
|
694453
694702
|
});
|
|
694454
694703
|
|
|
694455
694704
|
// packages/cli/src/tui/telegram-reflection-corpus.ts
|
|
694456
|
-
import { createHash as
|
|
694705
|
+
import { createHash as createHash46 } from "node:crypto";
|
|
694457
694706
|
function telegramReflectionMemoryDbPaths(repoRoot) {
|
|
694458
694707
|
return omniusMemoryDbPaths(repoRoot);
|
|
694459
694708
|
}
|
|
694460
694709
|
function stableHash2(value2, length4 = 16) {
|
|
694461
|
-
return
|
|
694710
|
+
return createHash46("sha1").update(value2).digest("hex").slice(0, length4);
|
|
694462
694711
|
}
|
|
694463
694712
|
function clean3(value2) {
|
|
694464
694713
|
return String(value2 ?? "").replace(/\s+/g, " ").trim();
|
|
@@ -695271,7 +695520,7 @@ var init_telegram_reflection_extraction = __esm({
|
|
|
695271
695520
|
});
|
|
695272
695521
|
|
|
695273
695522
|
// packages/cli/src/tui/telegram-social-state-types.ts
|
|
695274
|
-
import { createHash as
|
|
695523
|
+
import { createHash as createHash47 } from "node:crypto";
|
|
695275
695524
|
function telegramSocialActorKey(actor) {
|
|
695276
695525
|
if (!actor) return "unknown";
|
|
695277
695526
|
if (typeof actor.userId === "number") return `user:${actor.userId}`;
|
|
@@ -695304,7 +695553,7 @@ function appendUnique(items, value2, max) {
|
|
|
695304
695553
|
return next.slice(-max);
|
|
695305
695554
|
}
|
|
695306
695555
|
function hashTelegramSocialId(parts) {
|
|
695307
|
-
return
|
|
695556
|
+
return createHash47("sha1").update(parts.map((part) => String(part ?? "")).join(":")).digest("hex").slice(0, 16);
|
|
695308
695557
|
}
|
|
695309
695558
|
function cleanUsername(value2) {
|
|
695310
695559
|
if (typeof value2 !== "string") return void 0;
|
|
@@ -696364,7 +696613,7 @@ import {
|
|
|
696364
696613
|
} from "node:path";
|
|
696365
696614
|
import { homedir as homedir56 } from "node:os";
|
|
696366
696615
|
import { writeFile as writeFileAsync } from "node:fs/promises";
|
|
696367
|
-
import { createHash as
|
|
696616
|
+
import { createHash as createHash48, randomBytes as randomBytes28, randomInt } from "node:crypto";
|
|
696368
696617
|
function formatModelBytes(bytes) {
|
|
696369
696618
|
if (!Number.isFinite(bytes) || bytes <= 0) return "0 B";
|
|
696370
696619
|
const units = ["B", "KB", "MB", "GB", "TB"];
|
|
@@ -697609,7 +697858,7 @@ function buildTelegramRuntimeContext(now2 = /* @__PURE__ */ new Date(), repoRoot
|
|
|
697609
697858
|
return buildConversationRuntimeContext(now2, repoRoot);
|
|
697610
697859
|
}
|
|
697611
697860
|
function telegramSessionIdFromKey(sessionKey) {
|
|
697612
|
-
return `telegram-${
|
|
697861
|
+
return `telegram-${createHash48("sha1").update(sessionKey).digest("hex").slice(0, 16)}`;
|
|
697613
697862
|
}
|
|
697614
697863
|
function normalizeTelegramSubAgentLimit(value2) {
|
|
697615
697864
|
const parsed = typeof value2 === "number" ? value2 : typeof value2 === "string" && value2.trim() ? Number(value2.trim()) : TELEGRAM_SUB_AGENT_DEFAULT_LIMIT;
|
|
@@ -699773,7 +700022,7 @@ Telegram link integrity contract:
|
|
|
699773
700022
|
return !!this.adminAuthChallenge && this.adminAuthChallenge.expiresAtMs > Date.now();
|
|
699774
700023
|
}
|
|
699775
700024
|
hashAdminAuthCode(code8) {
|
|
699776
|
-
return
|
|
700025
|
+
return createHash48("sha256").update(`omnius-telegram-admin:${code8.trim()}`).digest("hex");
|
|
699777
700026
|
}
|
|
699778
700027
|
viewIdForMessage(msg) {
|
|
699779
700028
|
return `telegram-${this.sessionKeyForMessage(msg).replace(/[^A-Za-z0-9_-]/g, "-")}`;
|
|
@@ -701845,11 +702094,11 @@ ${mediaContext}` : ""
|
|
|
701845
702094
|
return payload;
|
|
701846
702095
|
}
|
|
701847
702096
|
telegramConversationPath(sessionKey) {
|
|
701848
|
-
const safe =
|
|
702097
|
+
const safe = createHash48("sha1").update(sessionKey).digest("hex").slice(0, 20);
|
|
701849
702098
|
return join170(this.telegramConversationDir, `${safe}.json`);
|
|
701850
702099
|
}
|
|
701851
702100
|
telegramConversationLedgerPath(sessionKey) {
|
|
701852
|
-
const safe =
|
|
702101
|
+
const safe = createHash48("sha1").update(sessionKey).digest("hex").slice(0, 20);
|
|
701853
702102
|
return join170(this.telegramConversationDir, `${safe}.events.jsonl`);
|
|
701854
702103
|
}
|
|
701855
702104
|
telegramDb() {
|
|
@@ -702082,7 +702331,7 @@ ${mediaContext}` : ""
|
|
|
702082
702331
|
relationships: Array.isArray(raw.relationships) ? raw.relationships.slice(0, TELEGRAM_ASSOCIATIVE_RELATION_LIMIT).map((fact) => this.normalizeTelegramAssociativeFact(fact)) : [],
|
|
702083
702332
|
actions: Array.isArray(raw.actions) ? raw.actions.slice(-TELEGRAM_ASSOCIATIVE_ACTION_LIMIT).map((action) => ({
|
|
702084
702333
|
id: String(
|
|
702085
|
-
action.id ||
|
|
702334
|
+
action.id || createHash48("sha1").update(JSON.stringify(action)).digest("hex").slice(0, 12)
|
|
702086
702335
|
),
|
|
702087
702336
|
ts: typeof action.ts === "number" ? action.ts : Date.now(),
|
|
702088
702337
|
role: action.role === "assistant" ? "assistant" : "user",
|
|
@@ -702101,7 +702350,7 @@ ${mediaContext}` : ""
|
|
|
702101
702350
|
const now2 = Date.now();
|
|
702102
702351
|
return {
|
|
702103
702352
|
id: String(
|
|
702104
|
-
raw.id ||
|
|
702353
|
+
raw.id || createHash48("sha1").update(text2 || String(now2)).digest("hex").slice(0, 12)
|
|
702105
702354
|
),
|
|
702106
702355
|
text: text2,
|
|
702107
702356
|
tags: Array.isArray(raw.tags) ? raw.tags.map(String).slice(0, 16) : [],
|
|
@@ -702558,7 +702807,7 @@ ${mediaContext}` : ""
|
|
|
702558
702807
|
telegramHistoryBackfillMessageId(sessionKey, entry, index) {
|
|
702559
702808
|
if (typeof entry.messageId === "number" && Number.isFinite(entry.messageId))
|
|
702560
702809
|
return entry.messageId;
|
|
702561
|
-
const digest3 =
|
|
702810
|
+
const digest3 = createHash48("sha1").update(
|
|
702562
702811
|
`${sessionKey}:${index}:${entry.role}:${entry.ts ?? ""}:${entry.text}`
|
|
702563
702812
|
).digest("hex").slice(0, 8);
|
|
702564
702813
|
return -Number.parseInt(digest3, 16);
|
|
@@ -703748,7 +703997,7 @@ ${mediaContext}` : ""
|
|
|
703748
703997
|
const now2 = entry.ts ?? Date.now();
|
|
703749
703998
|
memory.updatedAt = now2;
|
|
703750
703999
|
const speaker = telegramHistorySpeaker(entry);
|
|
703751
|
-
const actionId =
|
|
704000
|
+
const actionId = createHash48("sha1").update(
|
|
703752
704001
|
`${sessionKey}:${entry.role}:${entry.messageId ?? ""}:${now2}:${entry.text}`
|
|
703753
704002
|
).digest("hex").slice(0, 16);
|
|
703754
704003
|
if (!memory.actions.some((action) => action.id === actionId)) {
|
|
@@ -703911,7 +704160,7 @@ ${mediaContext}` : ""
|
|
|
703911
704160
|
let fact = facts.find((item) => item.text.toLowerCase() === key);
|
|
703912
704161
|
if (!fact) {
|
|
703913
704162
|
fact = {
|
|
703914
|
-
id:
|
|
704163
|
+
id: createHash48("sha1").update(`${entry.chatId ?? ""}:${key}`).digest("hex").slice(0, 12),
|
|
703915
704164
|
text: clean5,
|
|
703916
704165
|
tags: telegramMemoryTags(clean5, entry.mediaSummary),
|
|
703917
704166
|
speakers: [],
|
|
@@ -703996,7 +704245,7 @@ ${mediaContext}` : ""
|
|
|
703996
704245
|
const titleTags = tags.slice(0, 4);
|
|
703997
704246
|
const title = titleTags.length > 0 ? `${speaker} / ${titleTags.join(" ")}` : `${speaker} / conversation`;
|
|
703998
704247
|
const card = {
|
|
703999
|
-
id:
|
|
704248
|
+
id: createHash48("sha1").update(`${sessionKey}:${now2}:${speaker}:${text2}`).digest("hex").slice(0, 12),
|
|
704000
704249
|
title,
|
|
704001
704250
|
notes: [],
|
|
704002
704251
|
tags: [],
|
|
@@ -706760,7 +707009,7 @@ ${list}` : "No shared group target is currently known for this sender. Ask in th
|
|
|
706760
707009
|
}
|
|
706761
707010
|
telegramRunnerStateDir(sessionKey) {
|
|
706762
707011
|
if (!this.repoRoot) return void 0;
|
|
706763
|
-
const safe =
|
|
707012
|
+
const safe = createHash48("sha1").update(sessionKey).digest("hex").slice(0, 20);
|
|
706764
707013
|
return join170(this.repoRoot, ".omnius", "telegram-runner-state", safe);
|
|
706765
707014
|
}
|
|
706766
707015
|
buildTelegramAdminOverviewContext(currentSessionKey) {
|
|
@@ -717455,14 +717704,14 @@ var init_access_policy = __esm({
|
|
|
717455
717704
|
});
|
|
717456
717705
|
|
|
717457
717706
|
// packages/cli/src/api/project-preferences.ts
|
|
717458
|
-
import { createHash as
|
|
717707
|
+
import { createHash as createHash49 } from "node:crypto";
|
|
717459
717708
|
import { existsSync as existsSync162, mkdirSync as mkdirSync100, readFileSync as readFileSync133, renameSync as renameSync16, writeFileSync as writeFileSync87, unlinkSync as unlinkSync37 } from "node:fs";
|
|
717460
717709
|
import { homedir as homedir58 } from "node:os";
|
|
717461
717710
|
import { join as join172, resolve as resolve75 } from "node:path";
|
|
717462
717711
|
import { randomUUID as randomUUID20 } from "node:crypto";
|
|
717463
717712
|
function projectKey(root) {
|
|
717464
717713
|
const canonical = resolve75(root);
|
|
717465
|
-
return
|
|
717714
|
+
return createHash49("sha256").update(canonical).digest("hex").slice(0, 16);
|
|
717466
717715
|
}
|
|
717467
717716
|
function projectDir(root) {
|
|
717468
717717
|
return join172(PROJECTS_DIR, projectKey(root));
|
|
@@ -717753,7 +718002,7 @@ var init_disk_task_output = __esm({
|
|
|
717753
718002
|
});
|
|
717754
718003
|
|
|
717755
718004
|
// packages/cli/src/api/http.ts
|
|
717756
|
-
import { createHash as
|
|
718005
|
+
import { createHash as createHash50 } from "node:crypto";
|
|
717757
718006
|
function problemDetails(opts) {
|
|
717758
718007
|
const p2 = {
|
|
717759
718008
|
type: opts.type ?? "about:blank",
|
|
@@ -717816,7 +718065,7 @@ function paginated(items, page2, total) {
|
|
|
717816
718065
|
}
|
|
717817
718066
|
function computeEtag(payload) {
|
|
717818
718067
|
const json = typeof payload === "string" ? payload : JSON.stringify(payload);
|
|
717819
|
-
const hash =
|
|
718068
|
+
const hash = createHash50("sha1").update(json).digest("hex").slice(0, 16);
|
|
717820
718069
|
return `W/"${hash}"`;
|
|
717821
718070
|
}
|
|
717822
718071
|
function checkNotModified(req3, res, etag) {
|
|
@@ -735979,7 +736228,8 @@ function getOpenApiSpec() {
|
|
|
735979
736228
|
tags: ["Context"],
|
|
735980
736229
|
parameters: [
|
|
735981
736230
|
{ name: "id", in: "path", required: true, schema: { type: "string" }, description: "Dump id, or latest" },
|
|
735982
|
-
{ name: "repo", in: "query", required: false, schema: { type: "string" } }
|
|
736231
|
+
{ name: "repo", in: "query", required: false, schema: { type: "string" } },
|
|
736232
|
+
{ name: "agent_type", in: "query", required: false, schema: { type: "string", enum: ["main", "sub-agent", "internal", "adversary", "auxiliary"] }, description: "When id is latest, fetch the latest dump for this agent type" }
|
|
735983
736233
|
],
|
|
735984
736234
|
responses: { 200: { description: "Full context-window dump" }, 404: { description: "Dump not found" } }
|
|
735985
736235
|
}
|
|
@@ -737226,7 +737476,7 @@ import {
|
|
|
737226
737476
|
closeSync as closeSync6
|
|
737227
737477
|
} from "node:fs";
|
|
737228
737478
|
import { randomBytes as randomBytes29, randomUUID as randomUUID21, timingSafeEqual as timingSafeEqual2 } from "node:crypto";
|
|
737229
|
-
import { createHash as
|
|
737479
|
+
import { createHash as createHash51 } from "node:crypto";
|
|
737230
737480
|
function memoryDbPaths3(baseDir = process.cwd()) {
|
|
737231
737481
|
const dir = join183(baseDir, ".omnius");
|
|
737232
737482
|
return {
|
|
@@ -745395,7 +745645,7 @@ function listScheduledTasks() {
|
|
|
745395
745645
|
);
|
|
745396
745646
|
const enabled2 = typeof t2?.enabled === "boolean" ? t2.enabled : true;
|
|
745397
745647
|
const realId = typeof t2?.id === "string" && t2.id ? t2.id : null;
|
|
745398
|
-
const fallbackId =
|
|
745648
|
+
const fallbackId = createHash51("sha1").update(`${file}#${i2}`).digest("hex").slice(0, 16);
|
|
745399
745649
|
const uid = realId || fallbackId;
|
|
745400
745650
|
const key = `${uid}`;
|
|
745401
745651
|
if (seen.has(key)) return;
|
|
@@ -745533,8 +745783,8 @@ function deleteScheduledById(id2) {
|
|
|
745533
745783
|
if (typeof entry?.id === "string" && entry.id && !candidates.includes(entry.id))
|
|
745534
745784
|
candidates.push(entry.id);
|
|
745535
745785
|
try {
|
|
745536
|
-
const { createHash:
|
|
745537
|
-
const fallback =
|
|
745786
|
+
const { createHash: createHash53 } = require4("node:crypto");
|
|
745787
|
+
const fallback = createHash53("sha1").update(`${target.file}#${target.index}`).digest("hex").slice(0, 16);
|
|
745538
745788
|
if (!candidates.includes(fallback)) candidates.push(fallback);
|
|
745539
745789
|
} catch {
|
|
745540
745790
|
}
|
|
@@ -747771,6 +748021,7 @@ import { cwd } from "node:process";
|
|
|
747771
748021
|
import { resolve as resolve78, join as join185, dirname as dirname56, extname as extname22, relative as relative22, sep as sep7 } from "node:path";
|
|
747772
748022
|
import { createRequire as createRequire9 } from "node:module";
|
|
747773
748023
|
import { fileURLToPath as fileURLToPath24 } from "node:url";
|
|
748024
|
+
import { createHash as createHash52 } from "node:crypto";
|
|
747774
748025
|
import {
|
|
747775
748026
|
readFileSync as readFileSync142,
|
|
747776
748027
|
writeFileSync as writeFileSync94,
|
|
@@ -748697,6 +748948,37 @@ function getRuntimeToolProfilePolicy(repoRoot) {
|
|
|
748697
748948
|
function truncateSubAgentViewText(s2, n2) {
|
|
748698
748949
|
return s2.length > n2 ? `${s2.slice(0, n2)}…` : s2;
|
|
748699
748950
|
}
|
|
748951
|
+
function childAgentTaskHash(task) {
|
|
748952
|
+
return createHash52("sha256").update(task).digest("hex").slice(0, 12);
|
|
748953
|
+
}
|
|
748954
|
+
function stripAnsiForParentContext(value2) {
|
|
748955
|
+
return value2.replace(/\x1b\[[0-9;?]*[ -/]*[@-~]/g, "");
|
|
748956
|
+
}
|
|
748957
|
+
function sanitizeChildAgentParentContextText(value2, options2 = {}) {
|
|
748958
|
+
const maxLines = options2.maxLines ?? CHILD_AGENT_PARENT_CONTEXT_MAX_LINES;
|
|
748959
|
+
const maxChars = options2.maxChars ?? CHILD_AGENT_PARENT_CONTEXT_MAX_CHARS;
|
|
748960
|
+
const noAnsi = stripAnsiForParentContext(value2).replace(/<think>[\s\S]*?<\/think>/gi, "").replace(/<think>[\s\S]*$/gi, "");
|
|
748961
|
+
const sanitized = sanitizeRestorePromptForModel(noAnsi);
|
|
748962
|
+
const lines = sanitized.split(/\r?\n/).map((line) => line.trim()).filter(Boolean).filter((line) => !/SHELL TRANSCRIPT/i.test(line)).filter((line) => !/^Task:\s/i.test(line)).filter((line) => !/^Last output:\s*$/i.test(line)).slice(-maxLines);
|
|
748963
|
+
const joined = lines.join("\n");
|
|
748964
|
+
return joined.length > maxChars ? `${joined.slice(0, Math.max(0, maxChars - 14)).trimEnd()}...[truncated]` : joined;
|
|
748965
|
+
}
|
|
748966
|
+
function formatChildAgentParentGuidance(input) {
|
|
748967
|
+
const status = input.exitCode === 0 ? "completed" : "failed";
|
|
748968
|
+
const summary = sanitizeChildAgentParentContextText(input.output);
|
|
748969
|
+
const taskPreview = sanitizeChildAgentParentContextText(input.task, {
|
|
748970
|
+
maxLines: 2,
|
|
748971
|
+
maxChars: 220
|
|
748972
|
+
});
|
|
748973
|
+
return [
|
|
748974
|
+
`[child_agent_result] kind=${input.kind} id=${input.id} status=${status} exit_code=${input.exitCode ?? "unknown"} task_sha256=${childAgentTaskHash(input.task)}`,
|
|
748975
|
+
taskPreview ? `task_preview:
|
|
748976
|
+
${taskPreview}` : null,
|
|
748977
|
+
summary ? `result_preview:
|
|
748978
|
+
${summary}` : "result_preview: unavailable",
|
|
748979
|
+
`full_output_available_via=${input.kind === "full sub-agent" ? "full_sub_agent" : "sub_agent"} id=${input.id}`
|
|
748980
|
+
].filter((line) => Boolean(line)).join("\n");
|
|
748981
|
+
}
|
|
748700
748982
|
function subAgentDynamicBlockId(agentId, event, kind) {
|
|
748701
748983
|
const safeAgent = agentId.replace(/[^a-zA-Z0-9_-]/g, "_").slice(0, 48);
|
|
748702
748984
|
const safeTs = String(event.timestamp || Date.now()).replace(
|
|
@@ -749072,11 +749354,17 @@ ${task}` : task;
|
|
|
749072
749354
|
`sub_agent: ${cleanedLabelTask.slice(0, 80)}`,
|
|
749073
749355
|
promise
|
|
749074
749356
|
);
|
|
749357
|
+
const taskPreview = sanitizeChildAgentParentContextText(task, {
|
|
749358
|
+
maxLines: 2,
|
|
749359
|
+
maxChars: 220
|
|
749360
|
+
});
|
|
749075
749361
|
return {
|
|
749076
749362
|
success: true,
|
|
749077
749363
|
output: `${compatibilityPrefix}Sub-agent started in background: ${taskId}
|
|
749078
|
-
|
|
749079
|
-
|
|
749364
|
+
task_sha256=${childAgentTaskHash(task)}
|
|
749365
|
+
` + (taskPreview ? `task_preview:
|
|
749366
|
+
${taskPreview}
|
|
749367
|
+
` : "") + `Use task_status(task_id="${taskId}") or task_output(task_id="${taskId}") to check progress.`
|
|
749080
749368
|
};
|
|
749081
749369
|
}
|
|
749082
749370
|
if (onViewStatus) onViewStatus(agentId, "running");
|
|
@@ -750448,16 +750736,18 @@ ${content}
|
|
|
750448
750736
|
onComplete: (id2, task2, exitCode, output) => {
|
|
750449
750737
|
registry2.unregisterAgent(id2);
|
|
750450
750738
|
statusBar.unregisterAgentView(id2);
|
|
750451
|
-
const
|
|
750452
|
-
|
|
750453
|
-
|
|
750454
|
-
|
|
750455
|
-
|
|
750456
|
-
|
|
750457
|
-
|
|
750458
|
-
|
|
750459
|
-
|
|
750460
|
-
|
|
750739
|
+
const guidance = formatChildAgentParentGuidance({
|
|
750740
|
+
kind: "sub-agent",
|
|
750741
|
+
id: id2,
|
|
750742
|
+
task: task2,
|
|
750743
|
+
exitCode,
|
|
750744
|
+
output
|
|
750745
|
+
});
|
|
750746
|
+
if (_activeRunnerRef?.injectRuntimeGuidance) {
|
|
750747
|
+
_activeRunnerRef.injectRuntimeGuidance(guidance);
|
|
750748
|
+
} else {
|
|
750749
|
+
_activeRunnerRef?.injectUserMessage(guidance);
|
|
750750
|
+
}
|
|
750461
750751
|
}
|
|
750462
750752
|
});
|
|
750463
750753
|
}
|
|
@@ -752477,16 +752767,18 @@ async function startInteractive(config, repoPath2) {
|
|
|
752477
752767
|
onComplete: (id2, task, exitCode, output) => {
|
|
752478
752768
|
registry2.unregisterAgent(id2);
|
|
752479
752769
|
statusBar.unregisterAgentView(id2);
|
|
752480
|
-
const
|
|
752481
|
-
|
|
752482
|
-
|
|
752483
|
-
|
|
752484
|
-
|
|
752485
|
-
|
|
752486
|
-
|
|
752487
|
-
|
|
752488
|
-
|
|
752489
|
-
|
|
752770
|
+
const guidance = formatChildAgentParentGuidance({
|
|
752771
|
+
kind: "full sub-agent",
|
|
752772
|
+
id: id2,
|
|
752773
|
+
task,
|
|
752774
|
+
exitCode,
|
|
752775
|
+
output
|
|
752776
|
+
});
|
|
752777
|
+
if (_activeRunnerRef?.injectRuntimeGuidance) {
|
|
752778
|
+
_activeRunnerRef.injectRuntimeGuidance(guidance);
|
|
752779
|
+
} else {
|
|
752780
|
+
_activeRunnerRef?.injectUserMessage(guidance);
|
|
752781
|
+
}
|
|
752490
752782
|
}
|
|
752491
752783
|
});
|
|
752492
752784
|
};
|
|
@@ -752517,16 +752809,18 @@ Review its full output via full_sub_agent(action='output', id='${id2}')`
|
|
|
752517
752809
|
onComplete: (id2, task, exitCode, output) => {
|
|
752518
752810
|
registry2.unregisterAgent(id2);
|
|
752519
752811
|
statusBar.unregisterAgentView(id2);
|
|
752520
|
-
const
|
|
752521
|
-
|
|
752522
|
-
|
|
752523
|
-
|
|
752524
|
-
|
|
752525
|
-
|
|
752526
|
-
|
|
752527
|
-
|
|
752528
|
-
|
|
752529
|
-
|
|
752812
|
+
const guidance = formatChildAgentParentGuidance({
|
|
752813
|
+
kind: "sub-agent",
|
|
752814
|
+
id: id2,
|
|
752815
|
+
task,
|
|
752816
|
+
exitCode,
|
|
752817
|
+
output
|
|
752818
|
+
});
|
|
752819
|
+
if (_activeRunnerRef?.injectRuntimeGuidance) {
|
|
752820
|
+
_activeRunnerRef.injectRuntimeGuidance(guidance);
|
|
752821
|
+
} else {
|
|
752822
|
+
_activeRunnerRef?.injectUserMessage(guidance);
|
|
752823
|
+
}
|
|
752530
752824
|
}
|
|
752531
752825
|
});
|
|
752532
752826
|
};
|
|
@@ -757966,13 +758260,13 @@ ${taskInput}`;
|
|
|
757966
758260
|
writeContent(() => renderError(errMsg));
|
|
757967
758261
|
if (failureStore) {
|
|
757968
758262
|
try {
|
|
757969
|
-
const { createHash:
|
|
758263
|
+
const { createHash: createHash53 } = await import("node:crypto");
|
|
757970
758264
|
failureStore.insert({
|
|
757971
758265
|
taskId: "",
|
|
757972
758266
|
sessionId: `${Date.now()}`,
|
|
757973
758267
|
repoRoot,
|
|
757974
758268
|
failureType: "runtime-error",
|
|
757975
|
-
fingerprint:
|
|
758269
|
+
fingerprint: createHash53("sha256").update(errMsg.slice(0, 200)).digest("hex").slice(0, 16),
|
|
757976
758270
|
filePath: null,
|
|
757977
758271
|
errorMessage: errMsg.slice(0, 500),
|
|
757978
758272
|
context: null,
|
|
@@ -758731,7 +759025,7 @@ Rules:
|
|
|
758731
759025
|
process.exit(1);
|
|
758732
759026
|
}
|
|
758733
759027
|
}
|
|
758734
|
-
var NEXUS_DIRECTORY_ORIGIN3, NEXUS_AGENT_DIRECTORY_URL, localOllamaModelCache, localOllamaProbeInFlight, NEXUS_SPONSORS_URL3, ADVERSARY_COLOR, _generativeProgressSink, _liveMediaStatusSink, _liveMediaAudioCount, _liveMediaVideoCount, _interactiveSessionActive, _interactiveSessionReason, _voiceChatSession2, taskManager, _apiCallbacks, _shellToolRef, _replToolRef, _fullSubAgentToolRef, _agentToolRef, _sendMessageToolRef, _agentLifecycleMgr, _activeRunnerRef, _parentRunnerForArchive, _wireSubAgentCallbacks, _wireAgentToolCallbacks, _wireSubAgentToolCallbacks, _autoUpdatedThisSession, _mcpManager, _pluginManager, _mcpTools, subAgentPendingToolCalls, subAgentViewBlockSeq, SELF_IMPROVE_INTERVAL, _tasksSinceImprove;
|
|
759028
|
+
var NEXUS_DIRECTORY_ORIGIN3, NEXUS_AGENT_DIRECTORY_URL, localOllamaModelCache, localOllamaProbeInFlight, NEXUS_SPONSORS_URL3, ADVERSARY_COLOR, _generativeProgressSink, _liveMediaStatusSink, _liveMediaAudioCount, _liveMediaVideoCount, _interactiveSessionActive, _interactiveSessionReason, _voiceChatSession2, taskManager, _apiCallbacks, _shellToolRef, _replToolRef, _fullSubAgentToolRef, _agentToolRef, _sendMessageToolRef, _agentLifecycleMgr, _activeRunnerRef, _parentRunnerForArchive, _wireSubAgentCallbacks, _wireAgentToolCallbacks, _wireSubAgentToolCallbacks, _autoUpdatedThisSession, _mcpManager, _pluginManager, _mcpTools, subAgentPendingToolCalls, subAgentViewBlockSeq, CHILD_AGENT_PARENT_CONTEXT_MAX_LINES, CHILD_AGENT_PARENT_CONTEXT_MAX_CHARS, SELF_IMPROVE_INTERVAL, _tasksSinceImprove;
|
|
758735
759029
|
var init_interactive = __esm({
|
|
758736
759030
|
"packages/cli/src/tui/interactive.ts"() {
|
|
758737
759031
|
init_memory_maintenance();
|
|
@@ -758835,6 +759129,8 @@ var init_interactive = __esm({
|
|
|
758835
759129
|
_mcpTools = [];
|
|
758836
759130
|
subAgentPendingToolCalls = /* @__PURE__ */ new Map();
|
|
758837
759131
|
subAgentViewBlockSeq = 0;
|
|
759132
|
+
CHILD_AGENT_PARENT_CONTEXT_MAX_LINES = 5;
|
|
759133
|
+
CHILD_AGENT_PARENT_CONTEXT_MAX_CHARS = 900;
|
|
758838
759134
|
SELF_IMPROVE_INTERVAL = 5;
|
|
758839
759135
|
_tasksSinceImprove = 0;
|
|
758840
759136
|
}
|