@ganglion/xacpx-relay 0.1.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 (98) hide show
  1. package/README.md +10 -0
  2. package/dist/auth.d.ts +6 -0
  3. package/dist/cli.d.ts +24 -0
  4. package/dist/cli.js +1168 -0
  5. package/dist/db.d.ts +9 -0
  6. package/dist/gateway/instance-gateway.d.ts +30 -0
  7. package/dist/gateway/web-gateway.d.ts +11 -0
  8. package/dist/http/app.d.ts +33 -0
  9. package/dist/http/client-ip.d.ts +2 -0
  10. package/dist/maintenance.d.ts +22 -0
  11. package/dist/relay-web/assets/BrandLogo.vue_vue_type_script_setup_true_lang-CSPZDDtK.js +1 -0
  12. package/dist/relay-web/assets/DashboardView-AMivJ-D8.css +1 -0
  13. package/dist/relay-web/assets/DashboardView-Bhx2FJSv.js +256 -0
  14. package/dist/relay-web/assets/LoginView-CYhQnBi-.js +1 -0
  15. package/dist/relay-web/assets/SettingsView-hmSvIsKD.js +6 -0
  16. package/dist/relay-web/assets/index-DC1zO5jV.css +1 -0
  17. package/dist/relay-web/assets/index-DE2bTqBl.js +80 -0
  18. package/dist/relay-web/assets/inter-cyrillic-400-normal-HOLc17fK.woff +0 -0
  19. package/dist/relay-web/assets/inter-cyrillic-400-normal-obahsSVq.woff2 +0 -0
  20. package/dist/relay-web/assets/inter-cyrillic-500-normal-BasfLYem.woff2 +0 -0
  21. package/dist/relay-web/assets/inter-cyrillic-500-normal-CxZf_p3X.woff +0 -0
  22. package/dist/relay-web/assets/inter-cyrillic-600-normal-4D_pXhcN.woff +0 -0
  23. package/dist/relay-web/assets/inter-cyrillic-600-normal-CWCymEST.woff2 +0 -0
  24. package/dist/relay-web/assets/inter-cyrillic-700-normal-CjBOestx.woff2 +0 -0
  25. package/dist/relay-web/assets/inter-cyrillic-700-normal-DrXBdSj3.woff +0 -0
  26. package/dist/relay-web/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2 +0 -0
  27. package/dist/relay-web/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff +0 -0
  28. package/dist/relay-web/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2 +0 -0
  29. package/dist/relay-web/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff +0 -0
  30. package/dist/relay-web/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff +0 -0
  31. package/dist/relay-web/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2 +0 -0
  32. package/dist/relay-web/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2 +0 -0
  33. package/dist/relay-web/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff +0 -0
  34. package/dist/relay-web/assets/inter-greek-400-normal-B4URO6DV.woff2 +0 -0
  35. package/dist/relay-web/assets/inter-greek-400-normal-q2sYcFCs.woff +0 -0
  36. package/dist/relay-web/assets/inter-greek-500-normal-BIZE56-Y.woff2 +0 -0
  37. package/dist/relay-web/assets/inter-greek-500-normal-Xzm54t5V.woff +0 -0
  38. package/dist/relay-web/assets/inter-greek-600-normal-BZpKdvQh.woff +0 -0
  39. package/dist/relay-web/assets/inter-greek-600-normal-plRanbMR.woff2 +0 -0
  40. package/dist/relay-web/assets/inter-greek-700-normal-BUv2fZ6O.woff +0 -0
  41. package/dist/relay-web/assets/inter-greek-700-normal-C3JjAnD8.woff2 +0 -0
  42. package/dist/relay-web/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2 +0 -0
  43. package/dist/relay-web/assets/inter-greek-ext-400-normal-KugGGMne.woff +0 -0
  44. package/dist/relay-web/assets/inter-greek-ext-500-normal-2j5mBUwD.woff +0 -0
  45. package/dist/relay-web/assets/inter-greek-ext-500-normal-C4iEst2y.woff2 +0 -0
  46. package/dist/relay-web/assets/inter-greek-ext-600-normal-B8X0CLgF.woff +0 -0
  47. package/dist/relay-web/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2 +0 -0
  48. package/dist/relay-web/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff +0 -0
  49. package/dist/relay-web/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2 +0 -0
  50. package/dist/relay-web/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
  51. package/dist/relay-web/assets/inter-latin-400-normal-CyCys3Eg.woff +0 -0
  52. package/dist/relay-web/assets/inter-latin-500-normal-BL9OpVg8.woff +0 -0
  53. package/dist/relay-web/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
  54. package/dist/relay-web/assets/inter-latin-600-normal-CiBQ2DWP.woff +0 -0
  55. package/dist/relay-web/assets/inter-latin-600-normal-LgqL8muc.woff2 +0 -0
  56. package/dist/relay-web/assets/inter-latin-700-normal-BLAVimhd.woff +0 -0
  57. package/dist/relay-web/assets/inter-latin-700-normal-Yt3aPRUw.woff2 +0 -0
  58. package/dist/relay-web/assets/inter-latin-ext-400-normal-77YHD8bZ.woff +0 -0
  59. package/dist/relay-web/assets/inter-latin-ext-400-normal-C1nco2VV.woff2 +0 -0
  60. package/dist/relay-web/assets/inter-latin-ext-500-normal-BxGbmqWO.woff +0 -0
  61. package/dist/relay-web/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2 +0 -0
  62. package/dist/relay-web/assets/inter-latin-ext-600-normal-CIVaiw4L.woff +0 -0
  63. package/dist/relay-web/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2 +0 -0
  64. package/dist/relay-web/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2 +0 -0
  65. package/dist/relay-web/assets/inter-latin-ext-700-normal-TidjK2hL.woff +0 -0
  66. package/dist/relay-web/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff +0 -0
  67. package/dist/relay-web/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
  68. package/dist/relay-web/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
  69. package/dist/relay-web/assets/inter-vietnamese-500-normal-mJboJaSs.woff +0 -0
  70. package/dist/relay-web/assets/inter-vietnamese-600-normal-BuLX-rYi.woff +0 -0
  71. package/dist/relay-web/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
  72. package/dist/relay-web/assets/inter-vietnamese-700-normal-BZaoP0fm.woff +0 -0
  73. package/dist/relay-web/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2 +0 -0
  74. package/dist/relay-web/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
  75. package/dist/relay-web/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
  76. package/dist/relay-web/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff +0 -0
  77. package/dist/relay-web/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2 +0 -0
  78. package/dist/relay-web/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
  79. package/dist/relay-web/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
  80. package/dist/relay-web/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff +0 -0
  81. package/dist/relay-web/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2 +0 -0
  82. package/dist/relay-web/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  83. package/dist/relay-web/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  84. package/dist/relay-web/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
  85. package/dist/relay-web/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
  86. package/dist/relay-web/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
  87. package/dist/relay-web/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
  88. package/dist/relay-web/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2 +0 -0
  89. package/dist/relay-web/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff +0 -0
  90. package/dist/relay-web/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
  91. package/dist/relay-web/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff +0 -0
  92. package/dist/relay-web/assets/theme-CaepIjgl.js +1 -0
  93. package/dist/relay-web/index.html +28 -0
  94. package/dist/server.d.ts +42 -0
  95. package/dist/stores/accounts.d.ts +74 -0
  96. package/dist/stores/instances.d.ts +42 -0
  97. package/dist/stores/messages.d.ts +30 -0
  98. package/package.json +24 -0
package/README.md ADDED
@@ -0,0 +1,10 @@
1
+ # @ganglion/xacpx-relay
2
+
3
+ Self-hosted relay hub for xacpx. Multiple xacpx instances dial out to this
4
+ server over WebSocket; accounts log in over HTTP to manage and drive them.
5
+
6
+ Runtime: Node >= 22.13 (uses node:sqlite) or Bun >= 1.2 (uses bun:sqlite).
7
+ Two ports: HTTP API (default 8787) and instance WebSocket gateway (default 8788).
8
+
9
+ See `docs/relay-module.md` and the design spec
10
+ `docs/superpowers/specs/2026-06-13-relay-hub-design.md` in the repo root.
package/dist/auth.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ /** 32 random bytes, base64url — used for login tokens, pairing tokens, credentials, web sessions. */
2
+ export declare function generateToken(): string;
3
+ /** Tokens are stored hashed at rest; sha256 suffices for high-entropy random tokens. */
4
+ export declare function hashToken(token: string): string;
5
+ /** Constant-time comparison of two equal-length hex hash strings. */
6
+ export declare function hashEquals(a: string, b: string): boolean;
package/dist/cli.d.ts ADDED
@@ -0,0 +1,24 @@
1
+ export interface RelayCliIo {
2
+ print(line: string): void;
3
+ }
4
+ /** Fixed absolute default DB path — independent of cwd so `add token` and `start` always hit the same DB. */
5
+ export declare function defaultDbPath(): string;
6
+ /**
7
+ * Locates the bundled relay-web dashboard relative to the compiled cli.js.
8
+ * Returns the path only if `index.html` is present there; otherwise undefined.
9
+ * Defensive: returns undefined if process.argv[1] is not set.
10
+ */
11
+ export declare function resolveBundledWebRoot(): string | undefined;
12
+ export interface StartOptions {
13
+ dbPath: string;
14
+ httpPort: number;
15
+ wsPort: number;
16
+ host: string | undefined;
17
+ webRoot: string | undefined;
18
+ historyRetentionDays: number | undefined;
19
+ requestTimeoutMs: number | undefined;
20
+ trustProxy: boolean;
21
+ }
22
+ /** Pure arg-parser for the `start` subcommand — testable without starting a server. */
23
+ export declare function parseStartOptions(args: string[]): StartOptions;
24
+ export declare function runRelayCli(args: string[], io: RelayCliIo): Promise<number>;