byollm 0.1.0-alpha.98 → 0.1.0-alpha.99

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/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  > [!WARNING]
2
- > **Alpha (`0.1.0-alpha.98`) — under active development. Don't use this yet.**
2
+ > **Alpha (`0.1.0-alpha.99`) — under active development. Don't use this yet.**
3
3
  >
4
4
  > Install it deliberately: `npx byollm@latest`, or `npm install byollm@latest`.
5
5
  >
package/dist/bin.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  main
4
- } from "./chunk-JCLM24WC.js";
4
+ } from "./chunk-LPCHIPVJ.js";
5
5
 
6
6
  // src/bin.ts
7
7
  process.exitCode = await main(process.argv.slice(2));
@@ -4781,8 +4781,10 @@ import {
4781
4781
  ConsoleFrame,
4782
4782
  CONSOLE_FRAME_VERSION,
4783
4783
  CONSOLE_MAX_DATA_BYTES,
4784
+ consoleDataBytes,
4784
4785
  consoleEnvelope,
4785
4786
  consoleOrder,
4787
+ encodeConsoleData,
4786
4788
  keyId,
4787
4789
  open as open2,
4788
4790
  seal,
@@ -4790,6 +4792,9 @@ import {
4790
4792
  } from "@byollm/protocol";
4791
4793
  function consoleSession(deps) {
4792
4794
  const inbound = consoleOrder("browser");
4795
+ const log = deps.log ?? (() => void 0);
4796
+ let fromBrowser = 0;
4797
+ let toBrowser = 0;
4793
4798
  const boxKeyId = keyId(deps.keys.identityPublic);
4794
4799
  const browserKeyId = keyId(deps.browser.identity);
4795
4800
  let outSeq = 0;
@@ -4813,6 +4818,11 @@ function consoleSession(deps) {
4813
4818
  const finish = async (reason) => {
4814
4819
  if (ended !== void 0) return;
4815
4820
  ended = reason;
4821
+ log("console session ending", {
4822
+ reason,
4823
+ framesFromBrowser: fromBrowser,
4824
+ framesToBrowser: toBrowser
4825
+ });
4816
4826
  deps.shell.kill();
4817
4827
  try {
4818
4828
  outSeq += 1;
@@ -4836,12 +4846,20 @@ function consoleSession(deps) {
4836
4846
  for (let at = 0; at < chunk.length; at += CONSOLE_MAX_DATA_BYTES) {
4837
4847
  const slice = chunk.subarray(at, at + CONSOLE_MAX_DATA_BYTES);
4838
4848
  outSeq += 1;
4849
+ toBrowser += 1;
4839
4850
  void sealTo({
4840
4851
  v: CONSOLE_FRAME_VERSION,
4841
4852
  kind: "stdout",
4842
4853
  seq: outSeq,
4843
- data: slice.toString("base64")
4844
- }).catch(() => void finish("the console channel closed"));
4854
+ data: encodeConsoleData(slice)
4855
+ }).catch((cause) => {
4856
+ log("could not send output to the browser", {
4857
+ reason: cause instanceof Error ? cause.message : String(cause),
4858
+ fromBrowser,
4859
+ toBrowser
4860
+ });
4861
+ return finish("the console channel closed");
4862
+ });
4845
4863
  }
4846
4864
  });
4847
4865
  deps.shell.onExit((reason) => void finish(reason));
@@ -4902,10 +4920,12 @@ function consoleSession(deps) {
4902
4920
  }
4903
4921
  case "stdin":
4904
4922
  if (!started) return;
4905
- deps.shell.write(Buffer.from(frame.data, "base64"));
4923
+ fromBrowser += 1;
4924
+ deps.shell.write(Buffer.from(consoleDataBytes(frame.data)));
4906
4925
  return;
4907
4926
  case "resize":
4908
4927
  if (!started) return;
4928
+ fromBrowser += 1;
4909
4929
  deps.shell.resize(frame.cols, frame.rows);
4910
4930
  return;
4911
4931
  case "stdout":
@@ -5045,6 +5065,7 @@ async function runConsoleAgent(options) {
5045
5065
  return Promise.resolve();
5046
5066
  },
5047
5067
  record: options.record,
5068
+ log: options.log,
5048
5069
  now: options.now ?? (() => Date.now())
5049
5070
  });
5050
5071
  return new Promise((resolve) => {
@@ -8897,6 +8918,10 @@ async function commandConsoleAgent(paths, args, io) {
8897
8918
  const url = `${paired.origin.replace(/^http/, "ws")}${CONSOLE_DEVICE_ENDPOINT}`;
8898
8919
  io.out(`listening for consoles on ${paired.origin}
8899
8920
  `);
8921
+ const consoleLog = (message, fields) => {
8922
+ io.out(`${JSON.stringify({ console: message, ...fields })}
8923
+ `);
8924
+ };
8900
8925
  consoleListener({
8901
8926
  url,
8902
8927
  runnerId: paired.runnerId,
@@ -8924,12 +8949,12 @@ async function commandConsoleAgent(paths, args, io) {
8924
8949
  io.out(`${JSON.stringify({ consoleSession: entry })}
8925
8950
  `);
8926
8951
  return Promise.resolve();
8927
- }
8952
+ },
8953
+ /* The agent's own half of the picture, on the same stream as the
8954
+ listener's — one place to read when a console goes quiet. */
8955
+ log: consoleLog
8928
8956
  }).then(() => void 0),
8929
- log: (message, fields) => {
8930
- io.out(`${JSON.stringify({ console: message, ...fields ?? {} })}
8931
- `);
8932
- }
8957
+ log: consoleLog
8933
8958
  });
8934
8959
  await new Promise(() => void 0);
8935
8960
  return 0;
@@ -10536,7 +10561,7 @@ async function exists(path) {
10536
10561
  }
10537
10562
 
10538
10563
  // src/index.ts
10539
- var DAEMON_VERSION = "0.1.0-alpha.98";
10564
+ var DAEMON_VERSION = "0.1.0-alpha.99";
10540
10565
  function daemonVersion() {
10541
10566
  return {
10542
10567
  daemon: DAEMON_VERSION,
@@ -10595,4 +10620,4 @@ export {
10595
10620
  runCli,
10596
10621
  main
10597
10622
  };
10598
- //# sourceMappingURL=chunk-JCLM24WC.js.map
10623
+ //# sourceMappingURL=chunk-LPCHIPVJ.js.map