@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.
Files changed (24) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/docs/references/memory-guide.md +2 -2
  3. package/payload/platform/plugins/docs/references/platform.md +9 -5
  4. package/payload/platform/plugins/docs/references/troubleshooting.md +39 -27
  5. package/payload/platform/scripts/vnc.sh +115 -2
  6. package/payload/server/public/assets/admin-DQmUdTBa.js +352 -0
  7. package/payload/server/public/assets/{data-CNSW6fWU.js → data-DVlvxbTt.js} +1 -1
  8. package/payload/server/public/assets/{file-BOrQXRZl.js → file-OY_hX2wu.js} +1 -1
  9. package/payload/server/public/assets/{graph-bX0xIBhR.js → graph-BH7epmF8.js} +2 -2
  10. package/payload/server/public/assets/{house-sBJRwZUg.js → house-CgENfOCP.js} +1 -1
  11. package/payload/server/public/assets/jsx-runtime-Bu4vXoe7.css +1 -0
  12. package/payload/server/public/assets/{public-BSWCSR50.js → public-Clp4VPwo.js} +1 -1
  13. package/payload/server/public/assets/{share-2-DfQskeTu.js → share-2-RSIR3MmX.js} +1 -1
  14. package/payload/server/public/assets/{useVoiceRecorder-C2dkRb9r.js → useVoiceRecorder-B0FI_hts.js} +1 -1
  15. package/payload/server/public/assets/{x-BpzGzquU.js → x-DKZ5NR3n.js} +1 -1
  16. package/payload/server/public/data.html +6 -6
  17. package/payload/server/public/graph.html +6 -6
  18. package/payload/server/public/index.html +7 -8
  19. package/payload/server/public/public.html +4 -4
  20. package/payload/server/server.js +95 -21
  21. package/payload/server/public/assets/admin-kHJ-D0s7.css +0 -1
  22. package/payload/server/public/assets/admin-tBhWa-8P.js +0 -362
  23. package/payload/server/public/assets/jsx-runtime-ZtLisuuZ.css +0 -1
  24. /package/payload/server/public/assets/{jsx-runtime-BPzLmqnP.js → jsx-runtime-C_VUlXvu.js} +0 -0
@@ -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(["ToolCall", "WorkflowRun", "WorkflowStep", "ReviewAlert"])
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}:${l.childOnly ? 1 : 0}`).join(",");
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
- count(DISTINCT CASE WHEN hasNonSelfNeighbour THEN n END) AS qualifyingCount
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}