@bytetrue/byspace 0.2.0-beta.4 → 0.2.0

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 (39) hide show
  1. package/dist/commands/daemon/local-daemon.d.ts +2 -0
  2. package/dist/commands/daemon/local-daemon.js +21 -1
  3. package/dist/commands/daemon/start.js +11 -1
  4. package/node_modules/@bytetrue/byspace-client/dist/daemon-client.d.ts +3 -1
  5. package/node_modules/@bytetrue/byspace-client/dist/daemon-client.js +12 -0
  6. package/node_modules/@bytetrue/byspace-client/package.json +1 -1
  7. package/node_modules/@bytetrue/byspace-highlight/package.json +1 -1
  8. package/node_modules/@bytetrue/byspace-protocol/dist/generated/validation/ws-outbound.aot.js +9447 -9399
  9. package/node_modules/@bytetrue/byspace-protocol/dist/messages.d.ts +123 -0
  10. package/node_modules/@bytetrue/byspace-protocol/dist/messages.js +30 -0
  11. package/node_modules/@bytetrue/byspace-protocol/dist/validation/ws-outbound-schema-metadata.d.ts +20 -0
  12. package/node_modules/@bytetrue/byspace-protocol/package.json +1 -1
  13. package/node_modules/@bytetrue/byspace-relay/package.json +1 -1
  14. package/node_modules/@bytetrue/byspace-server/dist/server/server/config.js +1 -1
  15. package/node_modules/@bytetrue/byspace-server/dist/server/server/orchestration-skills.d.ts +11 -0
  16. package/node_modules/@bytetrue/byspace-server/dist/server/server/orchestration-skills.js +197 -0
  17. package/node_modules/@bytetrue/byspace-server/dist/server/server/session/daemon/daemon-session.d.ts +6 -0
  18. package/node_modules/@bytetrue/byspace-server/dist/server/server/session/daemon/daemon-session.js +15 -0
  19. package/node_modules/@bytetrue/byspace-server/dist/server/server/session.js +4 -0
  20. package/node_modules/@bytetrue/byspace-server/dist/server/server/websocket-server.js +2 -0
  21. package/node_modules/@bytetrue/byspace-server/dist/server/terminal/terminal-worker-process.js +8 -1
  22. package/node_modules/@bytetrue/byspace-server/dist/server/terminal/terminal.d.ts +1 -0
  23. package/node_modules/@bytetrue/byspace-server/dist/server/terminal/terminal.js +33 -10
  24. package/node_modules/@bytetrue/byspace-server/dist/server/terminal/worker-terminal-manager.js +3 -0
  25. package/node_modules/@bytetrue/byspace-server/dist/server/web-ui/_expo/static/js/web/{index-38ca1829d34e8fa57f6076abc4391d37.js → index-ba698ed4743a3ed98c16928de3e54cb1.js} +33 -33
  26. package/node_modules/@bytetrue/byspace-server/dist/server/web-ui/_expo/static/js/web/index-ba698ed4743a3ed98c16928de3e54cb1.js.br +0 -0
  27. package/node_modules/@bytetrue/byspace-server/dist/server/web-ui/_expo/static/js/web/index-ba698ed4743a3ed98c16928de3e54cb1.js.gz +0 -0
  28. package/node_modules/@bytetrue/byspace-server/dist/server/web-ui/index.html +1 -1
  29. package/node_modules/@bytetrue/byspace-server/dist/server/web-ui/index.html.br +0 -0
  30. package/node_modules/@bytetrue/byspace-server/dist/server/web-ui/index.html.gz +0 -0
  31. package/node_modules/@bytetrue/byspace-server/dist/skills/byspace/SKILL.md +147 -0
  32. package/node_modules/@bytetrue/byspace-server/dist/skills/byspace-advisor/SKILL.md +64 -0
  33. package/node_modules/@bytetrue/byspace-server/dist/skills/byspace-committee/SKILL.md +83 -0
  34. package/node_modules/@bytetrue/byspace-server/dist/skills/byspace-handoff/SKILL.md +71 -0
  35. package/node_modules/@bytetrue/byspace-server/dist/skills/byspace-loop/SKILL.md +45 -0
  36. package/node_modules/@bytetrue/byspace-server/package.json +3 -2
  37. package/package.json +6 -6
  38. package/node_modules/@bytetrue/byspace-server/dist/server/web-ui/_expo/static/js/web/index-38ca1829d34e8fa57f6076abc4391d37.js.br +0 -0
  39. package/node_modules/@bytetrue/byspace-server/dist/server/web-ui/_expo/static/js/web/index-38ca1829d34e8fa57f6076abc4391d37.js.gz +0 -0
@@ -576,7 +576,15 @@ export async function createTerminal(options) {
576
576
  let titleDebounceTimer = null;
577
577
  let pendingInput = "";
578
578
  let inputFlushImmediate = null;
579
- let stateRevision = 0;
579
+ // emitRevision tracks output emission (incremented immediately on PTY data).
580
+ // snapshotRevision tracks the headless xterm state (incremented when the
581
+ // headless xterm write callback fires). Output is emitted to listeners
582
+ // immediately without waiting for the headless xterm, so keystroke echo
583
+ // isn't serialized behind a backlog of TUI writes. Snapshots use
584
+ // snapshotRevision to stay consistent with the headless xterm buffer;
585
+ // drainHeadlessXterm() bridges the gap before on-demand snapshots.
586
+ let emitRevision = 0;
587
+ let snapshotRevision = 0;
580
588
  const inputModeTracker = new TerminalInputModeTracker();
581
589
  const activityTracker = new TerminalActivityTracker();
582
590
  const activityChangeListeners = new Set();
@@ -797,15 +805,21 @@ export async function createTerminal(options) {
797
805
  activityChangeListeners.clear();
798
806
  }
799
807
  function writeOutputToHeadless(data) {
808
+ emitRevision += 1;
809
+ const currentRevision = emitRevision;
810
+ // Write to headless xterm for snapshot fidelity. The callback updates
811
+ // snapshotRevision so getStateSnapshot() stays consistent with the buffer.
800
812
  terminal.write(data, () => {
801
- if (disposed || killed) {
802
- return;
803
- }
804
- stateRevision += 1;
805
- for (const listener of listeners) {
806
- listener({ type: "output", data, revision: stateRevision });
813
+ if (!disposed && !killed) {
814
+ snapshotRevision = currentRevision;
807
815
  }
808
816
  });
817
+ // Emit to listeners immediately — do not wait for the headless xterm to
818
+ // parse the write. This removes the serialization that delayed keystroke
819
+ // echo behind TUI output backlogs (notably ConPTY + Pi on Windows).
820
+ for (const listener of listeners) {
821
+ listener({ type: "output", data, revision: currentRevision });
822
+ }
809
823
  }
810
824
  // Pipe PTY output to terminal emulator
811
825
  ptyProcess.onData((data) => {
@@ -887,9 +901,14 @@ export async function createTerminal(options) {
887
901
  function getStateSnapshot(snapshotOptions) {
888
902
  return {
889
903
  state: getState(snapshotOptions),
890
- revision: stateRevision,
904
+ revision: snapshotRevision,
891
905
  };
892
906
  }
907
+ function drainHeadlessXterm() {
908
+ return new Promise((resolve) => {
909
+ terminal.write("", () => resolve());
910
+ });
911
+ }
893
912
  function getSize() {
894
913
  return {
895
914
  rows: terminal.rows,
@@ -936,7 +955,10 @@ export async function createTerminal(options) {
936
955
  flushPendingInput();
937
956
  terminal.resize(msg.cols, msg.rows);
938
957
  ptyProcess.resize(msg.cols, msg.rows);
939
- stateRevision += 1;
958
+ // Resize affects both headless xterm state and emitted output, so increment
959
+ // both revision counters to keep snapshots consistent.
960
+ emitRevision += 1;
961
+ snapshotRevision += 1;
940
962
  break;
941
963
  case "mouse":
942
964
  // Mouse events can be sent as escape sequences if terminal supports it
@@ -968,7 +990,7 @@ export async function createTerminal(options) {
968
990
  // (live restore) can replay it without a separate state fetch.
969
991
  listener({
970
992
  type: "snapshotReady",
971
- revision: stateRevision,
993
+ revision: snapshotRevision,
972
994
  replayPreamble: getReplayPreamble(),
973
995
  });
974
996
  }
@@ -1137,6 +1159,7 @@ export async function createTerminal(options) {
1137
1159
  getSize,
1138
1160
  getState,
1139
1161
  getStateSnapshot,
1162
+ drainHeadlessXterm,
1140
1163
  getReplayPreamble,
1141
1164
  getTitle,
1142
1165
  getActivity,
@@ -249,6 +249,9 @@ export function createWorkerTerminalManager(managerOptions = {}) {
249
249
  revision: 0,
250
250
  };
251
251
  },
252
+ drainHeadlessXterm() {
253
+ return Promise.resolve();
254
+ },
252
255
  getReplayPreamble() {
253
256
  // Refreshed from every getTerminalState response, which the controller fetches
254
257
  // before every snapshot replay (legacy + visible-snapshot restore). The one