@ghostlytools/cli 1.3.6 → 1.3.8

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 (63) hide show
  1. package/README.md +15 -6
  2. package/SKILL.md +2 -0
  3. package/dist/assets/{api-Br3msjtR.js → api-CYG-sByy.js} +2 -2
  4. package/dist/assets/{api-z9mlywrn.js → api-Q6QZ0oIy.js} +51 -25
  5. package/dist/assets/api-Q6QZ0oIy.js.map +1 -0
  6. package/dist/assets/{apiKit-lX3Xx_hY.js → apiKit-C9lLXQwt.js} +2 -2
  7. package/dist/assets/{apiKit-lX3Xx_hY.js.map → apiKit-C9lLXQwt.js.map} +1 -1
  8. package/dist/assets/{apps-Dn7rCafG.js → apps-Bs8xpLGv.js} +1 -1
  9. package/dist/assets/{apps-BUK6bEKW.js → apps-tcynvhlC.js} +2 -2
  10. package/dist/assets/{apps-BUK6bEKW.js.map → apps-tcynvhlC.js.map} +1 -1
  11. package/dist/assets/{arkade-uqAXA5BT.js → arkade-BgmB0fUk.js} +2 -2
  12. package/dist/assets/{arkade-uqAXA5BT.js.map → arkade-BgmB0fUk.js.map} +1 -1
  13. package/dist/assets/{backup-_JnqeFZb.js → backup-OlEHNkqQ.js} +1 -1
  14. package/dist/assets/{backup-CJQK5Miu.js → backup-XtMACsQ0.js} +4 -4
  15. package/dist/assets/{backup-CJQK5Miu.js.map → backup-XtMACsQ0.js.map} +1 -1
  16. package/dist/assets/buttons-BoGOYSHb.js +2 -0
  17. package/dist/assets/{buttons-DDvTuViY.js → buttons-mdl2Gol2.js} +3 -3
  18. package/dist/assets/{buttons-DDvTuViY.js.map → buttons-mdl2Gol2.js.map} +1 -1
  19. package/dist/assets/daemonProof-B53VnZ1Z.js +100 -0
  20. package/dist/assets/daemonProof-B53VnZ1Z.js.map +1 -0
  21. package/dist/assets/{envelope-BqvBb6hC.js → envelope-DHf3mrHv.js} +2 -2
  22. package/dist/assets/{envelope-BqvBb6hC.js.map → envelope-DHf3mrHv.js.map} +1 -1
  23. package/dist/assets/{groupFiles-B1lL6wch.js → groupFiles-CqrujNN1.js} +7 -4
  24. package/dist/assets/groupFiles-CqrujNN1.js.map +1 -0
  25. package/dist/assets/{host-DFzlKU3P.js → host-Mz74S9cM.js} +50 -12
  26. package/dist/assets/host-Mz74S9cM.js.map +1 -0
  27. package/dist/assets/{hyperdhtRelay-DwlOY6aD.js → hyperdhtRelay-BnqdXvmv.js} +2 -2
  28. package/dist/assets/{hyperdhtRelay-DwlOY6aD.js.map → hyperdhtRelay-BnqdXvmv.js.map} +1 -1
  29. package/dist/assets/{irohWeb-DZDCyL9b.js → irohWeb-C8iKFl8d.js} +2 -2
  30. package/dist/assets/{irohWeb-DZDCyL9b.js.map → irohWeb-C8iKFl8d.js.map} +1 -1
  31. package/dist/assets/{main-DgbdDDif.js → main-BXwlJall.js} +149 -52
  32. package/dist/assets/main-BXwlJall.js.map +1 -0
  33. package/dist/assets/{mainline-BHE5-R3A.js → mainline-CbrPHUrZ.js} +2 -2
  34. package/dist/assets/{mainline-BHE5-R3A.js.map → mainline-CbrPHUrZ.js.map} +1 -1
  35. package/dist/assets/{networkReason-Btv4b2C4.js → networkReason-CrrB031Y.js} +2 -2
  36. package/dist/assets/{networkReason-Btv4b2C4.js.map → networkReason-CrrB031Y.js.map} +1 -1
  37. package/dist/assets/{nwc-z0pa5zql.js → nwc-Cu5zwrE8.js} +3 -3
  38. package/dist/assets/{nwc-z0pa5zql.js.map → nwc-Cu5zwrE8.js.map} +1 -1
  39. package/dist/assets/{nwcProvider-C1AhPoFW.js → nwcProvider-BVVFfJM5.js} +2 -2
  40. package/dist/assets/{nwcProvider-C1AhPoFW.js.map → nwcProvider-BVVFfJM5.js.map} +1 -1
  41. package/dist/assets/{registry-JrnwUWmh.js → registry-BKm8N_TI.js} +3 -3
  42. package/dist/assets/{registry-JrnwUWmh.js.map → registry-BKm8N_TI.js.map} +1 -1
  43. package/dist/assets/{registry-C09xXyx-.js → registry-CshC1EyV.js} +1 -1
  44. package/dist/assets/{resolve-Ssq1nDy4.js → resolve-DKGaPeMz.js} +2 -2
  45. package/dist/assets/{resolve-Ssq1nDy4.js.map → resolve-DKGaPeMz.js.map} +1 -1
  46. package/dist/assets/{server-D6FSznK5.js → server-CaDVxJKy.js} +53 -21
  47. package/dist/assets/{server-D6FSznK5.js.map → server-CaDVxJKy.js.map} +1 -1
  48. package/dist/assets/{src-XhjSWnp-.js → src-CVYir6mP.js} +152 -18
  49. package/dist/assets/src-CVYir6mP.js.map +1 -0
  50. package/dist/assets/{turnRefs-Cle33IoV.js → turnRefs-BeWsTX0o.js} +2 -2
  51. package/dist/assets/{turnRefs-Cle33IoV.js.map → turnRefs-BeWsTX0o.js.map} +1 -1
  52. package/dist/assets/{usdt-DO86yko2.js → usdt-C5Q0BWHr.js} +3 -3
  53. package/dist/assets/{usdt-DO86yko2.js.map → usdt-C5Q0BWHr.js.map} +1 -1
  54. package/dist/ghostly.mjs +1 -1
  55. package/package.json +1 -1
  56. package/dist/assets/api-z9mlywrn.js.map +0 -1
  57. package/dist/assets/buttons-DDB9Xdha.js +0 -2
  58. package/dist/assets/groupFiles-B1lL6wch.js.map +0 -1
  59. package/dist/assets/host-DFzlKU3P.js.map +0 -1
  60. package/dist/assets/main-DgbdDDif.js.map +0 -1
  61. package/dist/assets/privateFolder-Bk9C9oFv.js +0 -38
  62. package/dist/assets/privateFolder-Bk9C9oFv.js.map +0 -1
  63. package/dist/assets/src-XhjSWnp-.js.map +0 -1
@@ -1,10 +1,10 @@
1
- import { $o as extractParamsFromSdp, Ai as isPublicAddress, Jo as RTC_CONFIG, Qo as callSignalHeardAt, Xo as buildSdpFromSignal, Yo as answersOffer, Zo as callRtcConfig, es as parseCallSignal, oi as checkPushEndpoint, qo as CALL_SIGNAL_MAX_AGE_MS, tl as setLinkTraceSink, ts as signalHasVideo, xl as fromBase64Url } from "./src-XhjSWnp-.js";
2
- import { a as fedimintSdkOn, r as irohRelayProblem } from "./irohWeb-DZDCyL9b.js";
1
+ import { $o as extractParamsFromSdp, Ai as isPublicAddress, Jo as RTC_CONFIG, Qo as callSignalHeardAt, Xo as buildSdpFromSignal, Yo as answersOffer, Zo as callRtcConfig, es as parseCallSignal, oi as checkPushEndpoint, qo as CALL_SIGNAL_MAX_AGE_MS, tl as setLinkTraceSink, ts as signalHasVideo, xl as fromBase64Url } from "./src-CVYir6mP.js";
2
+ import { a as fedimintSdkOn, r as irohRelayProblem } from "./irohWeb-C8iKFl8d.js";
3
3
  import { r as asCliError, t as CliError } from "./errors-B-zMxbcd.js";
4
- import { a as findChat } from "./apiKit-lX3Xx_hY.js";
5
- import { _ as flushCardUpdates, c as paymentJson, d as nodeLocalFetch, f as chatJson, g as resumeHolds, h as groupMessageJson, l as reportAppFrames, m as groupJson, p as chatMessageJson, r as callApi, u as servedApps } from "./api-z9mlywrn.js";
4
+ import { a as findChat } from "./apiKit-C9lLXQwt.js";
5
+ import { _ as flushCardUpdates, c as paymentJson, d as nodeLocalFetch, f as chatJson, g as resumeHolds, h as groupMessageJson, l as reportAppFrames, m as groupJson, p as chatMessageJson, r as callApi, u as servedApps } from "./api-Q6QZ0oIy.js";
6
6
  import { n as RESTORED_MARK, r as acquireLock } from "./profiles-gPCjLOQq.js";
7
- import { r as privateFolder, t as ownFolder } from "./privateFolder-Bk9C9oFv.js";
7
+ import { i as proof, l as privateFolder, n as newDaemonSecret, s as ownFolder } from "./daemonProof-B53VnZ1Z.js";
8
8
  import { createRequire } from "node:module";
9
9
  import { appendFileSync, chmodSync, closeSync, existsSync, fstatSync, fsyncSync, lstatSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, renameSync, rmSync, statSync, writeFileSync, writeSync } from "node:fs";
10
10
  import { readFile } from "node:fs/promises";
@@ -1877,10 +1877,30 @@ var EventHub = class {
1877
1877
  } catch (error) {
1878
1878
  process.stderr.write(`ghostly: event journal error: ${error instanceof Error ? error.message : String(error)}\n`);
1879
1879
  }
1880
+ this.tell(event);
1881
+ return event;
1882
+ }
1883
+ /**
1884
+ * An event for the listeners only, never the journal: a contact's app frames, live only (WISP 1200), which at the
1885
+ * receiver's rate would push every other chat's events out of it in seconds. It takes no seq of its own but the last
1886
+ * event's (as an `agent.turn` takes its source's): a cursor that handled it resumes after that event, a replay never
1887
+ * gives it, and a restart never numbers an event again.
1888
+ */
1889
+ emitLive(type, id, fields = {}) {
1890
+ const event = {
1891
+ seq: this.seq,
1892
+ id,
1893
+ type,
1894
+ at: this.now(),
1895
+ ...fields
1896
+ };
1897
+ this.tell(event);
1898
+ return event;
1899
+ }
1900
+ tell(event) {
1880
1901
  for (const listener of this.listeners) try {
1881
1902
  listener(event);
1882
1903
  } catch {}
1883
- return event;
1884
1904
  }
1885
1905
  /** Keeps the last `JOURNAL_KEEP` events, and of them no more than `JOURNAL_KEEP_BYTES`. */
1886
1906
  trimJournal() {
@@ -4581,14 +4601,14 @@ async function startRuntime(paths, options = {}) {
4581
4601
  (await import("./ghostly_iroh_web-BsAEFIjl.js")).initSync({ module: irohWasmBytes() });
4582
4602
  const [{ registerFileBytes }, { NodeFileBytes }] = await Promise.all([import("./fileBytes-CgbibpbV.js"), import("./fileBytes-CfSXjTFa.js")]);
4583
4603
  registerFileBytes("native", async () => new NodeFileBytes(paths.files), true);
4584
- const [{ EngineServer }, { createHyperEndpoint }] = await Promise.all([import("./server-D6FSznK5.js"), import("./endpoint-BOTFMpfS.js")]);
4604
+ const [{ EngineServer }, { createHyperEndpoint }] = await Promise.all([import("./server-CaDVxJKy.js"), import("./endpoint-BOTFMpfS.js")]);
4585
4605
  const network = hyperdhtNetwork();
4586
4606
  const dht = mainlineNetwork();
4587
- const mainline = dht.off ? null : new (await (import("./mainline-BHE5-R3A.js"))).Mainline({
4607
+ const mainline = dht.off ? null : new (await (import("./mainline-CbrPHUrZ.js"))).Mainline({
4588
4608
  bootstrap: dht.bootstrap,
4589
4609
  host: dht.host
4590
4610
  });
4591
- const transport = mainline || pinned ? new (await (import("./mainline-BHE5-R3A.js"))).RelaysAndDht(mainline, pinned ? { relays: pinned } : {}, !!pinned) : null;
4611
+ const transport = mainline || pinned ? new (await (import("./mainline-CbrPHUrZ.js"))).RelaysAndDht(mainline, pinned ? { relays: pinned } : {}, !!pinned) : null;
4592
4612
  const apps = servedApps(paths.dir).length > 0;
4593
4613
  const server = new EngineServer({
4594
4614
  ...transport ? { transport } : {},
@@ -4734,11 +4754,12 @@ async function serve(host) {
4734
4754
  else ownFolder(ctx.runtime.paths.dir, "the daemon will not put its socket there");
4735
4755
  }
4736
4756
  if (existsSync(path)) rmSync(path, { force: true });
4757
+ const secret = newDaemonSecret(ctx.runtime.paths.dir);
4737
4758
  const sockets = /* @__PURE__ */ new Set();
4738
4759
  const server = createServer((socket) => {
4739
4760
  sockets.add(socket);
4740
4761
  socket.on("close", () => sockets.delete(socket));
4741
- connection(ctx, socket);
4762
+ connection(ctx, socket, secret);
4742
4763
  });
4743
4764
  await new Promise((resolve, reject) => {
4744
4765
  server.once("error", reject);
@@ -4802,7 +4823,9 @@ function ownerOnlyUmask() {
4802
4823
  return null;
4803
4824
  }
4804
4825
  }
4805
- function connection(ctx, socket) {
4826
+ /** A client's nonce: 16 to 64 bytes as lowercase hex, so the proof is over nothing but a nonce. */
4827
+ var NONCE = /^(?:[0-9a-f]{2}){16,64}$/;
4828
+ function connection(ctx, socket, secret) {
4806
4829
  const unsubscribes = [];
4807
4830
  let limit = MAX_UNREAD;
4808
4831
  const unsubscribe = () => {
@@ -4852,6 +4875,21 @@ function connection(ctx, socket) {
4852
4875
  });
4853
4876
  return;
4854
4877
  }
4878
+ if (request.method === "daemon.hello") {
4879
+ const nonce = request.params?.nonce;
4880
+ if (typeof nonce !== "string" || !NONCE.test(nonce)) {
4881
+ write({
4882
+ id,
4883
+ error: new CliError("bad_request", "daemon.hello takes a nonce: 16 to 64 bytes as lowercase hex").toJSON()
4884
+ });
4885
+ return;
4886
+ }
4887
+ write({
4888
+ id,
4889
+ result: { proof: proof(secret, "daemon", nonce) }
4890
+ });
4891
+ return;
4892
+ }
4855
4893
  if (request.method === "events.subscribe") {
4856
4894
  if (unsubscribes.length) {
4857
4895
  write({
@@ -4907,4 +4945,4 @@ function connection(ctx, socket) {
4907
4945
  //#endregion
4908
4946
  export { BASELINE_NEWEST, MAX_LINE, MAX_UNREAD, keepServing, openHost, serve };
4909
4947
 
4910
- //# sourceMappingURL=host-DFzlKU3P.js.map
4948
+ //# sourceMappingURL=host-Mz74S9cM.js.map