@rubytech/create-realagent 1.0.671 → 1.0.674
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/package.json +1 -1
- package/payload/platform/plugins/docs/references/memory-guide.md +2 -2
- package/payload/platform/plugins/docs/references/platform.md +9 -5
- package/payload/platform/plugins/docs/references/troubleshooting.md +39 -27
- package/payload/platform/scripts/vnc.sh +115 -2
- package/payload/server/public/assets/admin-DQmUdTBa.js +352 -0
- package/payload/server/public/assets/{data-CNSW6fWU.js → data-DVlvxbTt.js} +1 -1
- package/payload/server/public/assets/{file-BOrQXRZl.js → file-OY_hX2wu.js} +1 -1
- package/payload/server/public/assets/{graph-bX0xIBhR.js → graph-BH7epmF8.js} +2 -2
- package/payload/server/public/assets/{house-sBJRwZUg.js → house-CgENfOCP.js} +1 -1
- package/payload/server/public/assets/jsx-runtime-Bu4vXoe7.css +1 -0
- package/payload/server/public/assets/{public-BSWCSR50.js → public-Clp4VPwo.js} +1 -1
- package/payload/server/public/assets/{share-2-DfQskeTu.js → share-2-RSIR3MmX.js} +1 -1
- package/payload/server/public/assets/{useVoiceRecorder-C2dkRb9r.js → useVoiceRecorder-B0FI_hts.js} +1 -1
- package/payload/server/public/assets/{x-BpzGzquU.js → x-DKZ5NR3n.js} +1 -1
- package/payload/server/public/data.html +6 -6
- package/payload/server/public/graph.html +6 -6
- package/payload/server/public/index.html +7 -8
- package/payload/server/public/public.html +4 -4
- package/payload/server/server.js +95 -21
- package/payload/server/public/assets/admin-kHJ-D0s7.css +0 -1
- package/payload/server/public/assets/admin-tBhWa-8P.js +0 -362
- package/payload/server/public/assets/jsx-runtime-ZtLisuuZ.css +0 -1
- /package/payload/server/public/assets/{jsx-runtime-BPzLmqnP.js → jsx-runtime-C_VUlXvu.js} +0 -0
package/payload/server/server.js
CHANGED
|
@@ -4761,6 +4761,48 @@ function killTerminal() {
|
|
|
4761
4761
|
spawnSync("bash", [VNC_SCRIPT, "kill-terminal"], { stdio: "pipe", timeout: 5e3 });
|
|
4762
4762
|
currentTerminalDisplay = null;
|
|
4763
4763
|
}
|
|
4764
|
+
async function ensureTerminalUpgrade(transport = "vnc") {
|
|
4765
|
+
const targetSentinel = ":99";
|
|
4766
|
+
vncLog("ensure-terminal", {
|
|
4767
|
+
action: "launch-upgrade",
|
|
4768
|
+
transport,
|
|
4769
|
+
cmd: "npx -y @rubytech/create-maxy@latest"
|
|
4770
|
+
});
|
|
4771
|
+
killTerminal();
|
|
4772
|
+
await sleep(500);
|
|
4773
|
+
if (transport === "vnc") {
|
|
4774
|
+
const xAlive = await waitForPort(5900, 1e3);
|
|
4775
|
+
if (!xAlive) {
|
|
4776
|
+
console.error("[ensureTerminalUpgrade] X server down on :5900 \u2014 escalating to full VNC restart");
|
|
4777
|
+
vncLog("ensure-terminal", { action: "escalate-vnc-restart", reason: "x-down", transport, upgrade: true });
|
|
4778
|
+
const vncOk = await ensureVnc();
|
|
4779
|
+
if (!vncOk) {
|
|
4780
|
+
console.error("[ensureTerminalUpgrade] Full VNC restart failed \u2014 upgrade degraded");
|
|
4781
|
+
vncLog("ensure-terminal", { action: "launch-upgrade-failed", transport, windowPresent: false, err: "VNC failed to start after recovery attempt" });
|
|
4782
|
+
return { ok: false, error: "VNC failed to start after recovery attempt" };
|
|
4783
|
+
}
|
|
4784
|
+
}
|
|
4785
|
+
}
|
|
4786
|
+
console.error(`[ensureTerminalUpgrade] Launching upgrade terminal transport=${transport}`);
|
|
4787
|
+
const result = spawnSync("bash", [VNC_SCRIPT, "start-terminal-upgrade"], {
|
|
4788
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
4789
|
+
timeout: 1e4
|
|
4790
|
+
});
|
|
4791
|
+
if (result.status !== 0) {
|
|
4792
|
+
const errorLine = extractFailureLine(result.stderr?.toString(), result.signal);
|
|
4793
|
+
vncLog("ensure-terminal", { action: "launch-upgrade-failed", transport, windowPresent: false, err: errorLine });
|
|
4794
|
+
return { ok: false, error: errorLine };
|
|
4795
|
+
}
|
|
4796
|
+
currentTerminalDisplay = targetSentinel;
|
|
4797
|
+
vncLog("ensure-terminal", {
|
|
4798
|
+
action: "launch-upgrade-complete",
|
|
4799
|
+
transport,
|
|
4800
|
+
sentinel: targetSentinel,
|
|
4801
|
+
windowPresent: true,
|
|
4802
|
+
cmd: "npx -y @rubytech/create-maxy@latest"
|
|
4803
|
+
});
|
|
4804
|
+
return { ok: true };
|
|
4805
|
+
}
|
|
4764
4806
|
function writeChromiumWrapper() {
|
|
4765
4807
|
mkdirSync4(BIN_DIR, { recursive: true });
|
|
4766
4808
|
const wrapperPath = resolve5(BIN_DIR, "chromium");
|
|
@@ -18607,7 +18649,8 @@ app9.post("/", async (c) => {
|
|
|
18607
18649
|
"test",
|
|
18608
18650
|
"unknown",
|
|
18609
18651
|
"graph-labels-in-graph",
|
|
18610
|
-
"graph-default-view"
|
|
18652
|
+
"graph-default-view",
|
|
18653
|
+
"graph-nav"
|
|
18611
18654
|
]);
|
|
18612
18655
|
const kind = allowedKinds.has(kindRaw) ? kindRaw : "unknown";
|
|
18613
18656
|
const msg = truncate2(body.msg, MAX_MSG_LEN);
|
|
@@ -19927,6 +19970,28 @@ app21.post("/launch", async (c) => {
|
|
|
19927
19970
|
);
|
|
19928
19971
|
}
|
|
19929
19972
|
});
|
|
19973
|
+
app21.post("/launch-upgrade", async (c) => {
|
|
19974
|
+
try {
|
|
19975
|
+
const transport = resolveBrowserTransport(c.req.raw, c.env?.incoming?.socket?.remoteAddress);
|
|
19976
|
+
if (transport === "vnc") {
|
|
19977
|
+
const vncOk = await ensureVnc();
|
|
19978
|
+
if (!vncOk) {
|
|
19979
|
+
return c.json({ ok: false, error: "VNC failed to start" }, 502);
|
|
19980
|
+
}
|
|
19981
|
+
}
|
|
19982
|
+
const result = await ensureTerminalUpgrade(transport);
|
|
19983
|
+
if (!result.ok) {
|
|
19984
|
+
return c.json({ ok: false, error: result.error ?? "Upgrade terminal failed to start" }, 502);
|
|
19985
|
+
}
|
|
19986
|
+
return c.json({ ok: true, transport });
|
|
19987
|
+
} catch (err) {
|
|
19988
|
+
console.error("[admin/terminal/launch-upgrade] Failed to start upgrade terminal:", err);
|
|
19989
|
+
return c.json(
|
|
19990
|
+
{ ok: false, error: err instanceof Error ? err.message : "Unknown error" },
|
|
19991
|
+
500
|
|
19992
|
+
);
|
|
19993
|
+
}
|
|
19994
|
+
});
|
|
19930
19995
|
app21.post("/close", (c) => {
|
|
19931
19996
|
try {
|
|
19932
19997
|
killTerminal();
|
|
@@ -21147,7 +21212,31 @@ var HIDDEN_BY_DEFAULT_LABELS = Object.freeze(
|
|
|
21147
21212
|
/* @__PURE__ */ new Set(["Chunk", "GraphPreference"])
|
|
21148
21213
|
);
|
|
21149
21214
|
var FILTER_EXCLUDED_LABELS = Object.freeze(
|
|
21150
|
-
/* @__PURE__ */ new Set([
|
|
21215
|
+
/* @__PURE__ */ new Set([
|
|
21216
|
+
"Message",
|
|
21217
|
+
"UserMessage",
|
|
21218
|
+
"AssistantMessage",
|
|
21219
|
+
"AdminConversation",
|
|
21220
|
+
"PublicConversation",
|
|
21221
|
+
"Section",
|
|
21222
|
+
"ToolCall",
|
|
21223
|
+
"WorkflowRun",
|
|
21224
|
+
"WorkflowStep",
|
|
21225
|
+
"StepResult",
|
|
21226
|
+
"ReviewAlert"
|
|
21227
|
+
])
|
|
21228
|
+
);
|
|
21229
|
+
var CHILD_LABELS = Object.freeze(
|
|
21230
|
+
/* @__PURE__ */ new Set([
|
|
21231
|
+
"Message",
|
|
21232
|
+
"UserMessage",
|
|
21233
|
+
"AssistantMessage",
|
|
21234
|
+
"Section",
|
|
21235
|
+
"ToolCall",
|
|
21236
|
+
"WorkflowStep",
|
|
21237
|
+
"StepResult",
|
|
21238
|
+
"ReviewAlert"
|
|
21239
|
+
])
|
|
21151
21240
|
);
|
|
21152
21241
|
function isKnownLabel(label) {
|
|
21153
21242
|
return Object.prototype.hasOwnProperty.call(GRAPH_LABEL_COLOURS, label);
|
|
@@ -21607,14 +21696,13 @@ app30.get("/", requireAdminSession, async (c) => {
|
|
|
21607
21696
|
const labels = result.records.map((r) => ({
|
|
21608
21697
|
label: String(r.get("label")),
|
|
21609
21698
|
nodeCount: toNumber(r.get("nodeCount")),
|
|
21610
|
-
relDegree: toNumber(r.get("relDegree"))
|
|
21611
|
-
childOnly: toBool(r.get("childOnly"))
|
|
21699
|
+
relDegree: toNumber(r.get("relDegree"))
|
|
21612
21700
|
})).filter((row) => row.nodeCount > 0).sort((a, b) => {
|
|
21613
21701
|
if (b.relDegree !== a.relDegree) return b.relDegree - a.relDegree;
|
|
21614
21702
|
return a.label.localeCompare(b.label);
|
|
21615
21703
|
});
|
|
21616
21704
|
const elapsed = Date.now() - started;
|
|
21617
|
-
const summary = labels.map((l) => `${l.label}:${l.nodeCount}:${l.relDegree}
|
|
21705
|
+
const summary = labels.map((l) => `${l.label}:${l.nodeCount}:${l.relDegree}`).join(",");
|
|
21618
21706
|
console.error(
|
|
21619
21707
|
`[graph-page] labels-in-graph account=${accountId} labels=${summary} ms=${elapsed}`
|
|
21620
21708
|
);
|
|
@@ -21638,9 +21726,6 @@ function toNumber(v) {
|
|
|
21638
21726
|
if (typeof v === "number") return v;
|
|
21639
21727
|
return Number(v ?? 0);
|
|
21640
21728
|
}
|
|
21641
|
-
function toBool(v) {
|
|
21642
|
-
return v === true;
|
|
21643
|
-
}
|
|
21644
21729
|
var LABELS_IN_GRAPH_CYPHER = `
|
|
21645
21730
|
MATCH (n)
|
|
21646
21731
|
WHERE n.accountId = $accountId
|
|
@@ -21650,21 +21735,10 @@ var LABELS_IN_GRAPH_CYPHER = `
|
|
|
21650
21735
|
[l IN labels(n) WHERE NOT l IN $excluded] AS keptLabels,
|
|
21651
21736
|
size([(n)--() | 1]) AS halfEdges
|
|
21652
21737
|
UNWIND keptLabels AS label
|
|
21653
|
-
WITH label, n, halfEdges,
|
|
21654
|
-
EXISTS {
|
|
21655
|
-
MATCH (other)-[]-(n)
|
|
21656
|
-
WHERE NOT other:Trashed
|
|
21657
|
-
AND other.deletedAt IS NULL
|
|
21658
|
-
AND NONE(ol IN labels(other) WHERE ol = label)
|
|
21659
|
-
} AS hasNonSelfNeighbour
|
|
21660
21738
|
WITH label,
|
|
21661
21739
|
count(DISTINCT n) AS nodeCount,
|
|
21662
|
-
sum(halfEdges) AS relDegree
|
|
21663
|
-
|
|
21664
|
-
RETURN label,
|
|
21665
|
-
nodeCount,
|
|
21666
|
-
relDegree,
|
|
21667
|
-
(nodeCount > 0 AND qualifyingCount = nodeCount) AS childOnly
|
|
21740
|
+
sum(halfEdges) AS relDegree
|
|
21741
|
+
RETURN label, nodeCount, relDegree
|
|
21668
21742
|
`;
|
|
21669
21743
|
var graph_labels_in_graph_default = app30;
|
|
21670
21744
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}
|