@nordbyte/nordrelay 0.6.0 → 0.8.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 (62) hide show
  1. package/.env.example +52 -0
  2. package/README.md +171 -50
  3. package/dist/access-control.js +6 -1
  4. package/dist/activity-events.js +2 -2
  5. package/dist/adapter-conformance.js +61 -0
  6. package/dist/bot-preferences.js +1 -0
  7. package/dist/bot.js +95 -37
  8. package/dist/channel-adapter.js +44 -11
  9. package/dist/channel-command-catalog.js +94 -0
  10. package/dist/channel-command-core.js +60 -0
  11. package/dist/channel-command-service.js +230 -1
  12. package/dist/channel-mirror-registry.js +84 -0
  13. package/dist/channel-peer-prompt.js +95 -0
  14. package/dist/channel-prompt-engine.js +177 -0
  15. package/dist/channel-runtime.js +12 -5
  16. package/dist/channel-turn-lifecycle.js +73 -0
  17. package/dist/codex-state.js +114 -78
  18. package/dist/config-metadata.js +82 -8
  19. package/dist/config.js +79 -7
  20. package/dist/context-key.js +42 -0
  21. package/dist/discord-bot.js +173 -342
  22. package/dist/discord-command-surface.js +11 -73
  23. package/dist/index.js +29 -0
  24. package/dist/metrics.js +48 -0
  25. package/dist/peer-auth.js +85 -0
  26. package/dist/peer-client.js +288 -0
  27. package/dist/peer-context.js +21 -0
  28. package/dist/peer-identity.js +127 -0
  29. package/dist/peer-readiness.js +77 -0
  30. package/dist/peer-runtime-service.js +658 -0
  31. package/dist/peer-server.js +220 -0
  32. package/dist/peer-store.js +307 -0
  33. package/dist/peer-types.js +52 -0
  34. package/dist/relay-runtime-helpers.js +210 -0
  35. package/dist/relay-runtime.js +79 -274
  36. package/dist/remote-prompt.js +98 -0
  37. package/dist/settings-wizard-test.js +216 -0
  38. package/dist/slack-artifacts.js +165 -0
  39. package/dist/slack-bot.js +1461 -0
  40. package/dist/slack-channel-runtime.js +147 -0
  41. package/dist/slack-command-surface.js +46 -0
  42. package/dist/slack-diagnostics.js +116 -0
  43. package/dist/slack-rate-limit.js +139 -0
  44. package/dist/telegram-command-menu.js +3 -53
  45. package/dist/telegram-general-commands.js +14 -0
  46. package/dist/telegram-preference-commands.js +23 -127
  47. package/dist/user-management-crypto.js +38 -0
  48. package/dist/user-management-normalize.js +188 -0
  49. package/dist/user-management-types.js +1 -0
  50. package/dist/user-management.js +193 -196
  51. package/dist/web-api-contract.js +16 -0
  52. package/dist/web-dashboard-access-routes.js +62 -0
  53. package/dist/web-dashboard-assets.js +1 -0
  54. package/dist/web-dashboard-pages.js +26 -4
  55. package/dist/web-dashboard-peer-routes.js +225 -0
  56. package/dist/web-dashboard-ui.js +1 -0
  57. package/dist/web-dashboard.js +46 -0
  58. package/dist/web-state.js +2 -2
  59. package/dist/webui-assets/dashboard.css +193 -0
  60. package/dist/webui-assets/dashboard.js +870 -57
  61. package/package.json +5 -2
  62. package/plugins/nordrelay/scripts/nordrelay.mjs +468 -11
@@ -182,6 +182,15 @@
182
182
  grid-template-columns: repeat(2, minmax(0, 1fr));
183
183
  gap: 16px;
184
184
  }
185
+ .conformance-grid {
186
+ display: grid;
187
+ grid-template-columns: repeat(2, minmax(0, 1fr));
188
+ gap: 12px;
189
+ }
190
+ .conformance-grid h3 {
191
+ margin: 0 0 8px;
192
+ font-size: 15px;
193
+ }
185
194
  .session-detail-section {
186
195
  margin-top: 20px;
187
196
  }
@@ -239,6 +248,115 @@
239
248
  padding: 10px;
240
249
  margin: 0 0 12px;
241
250
  }
251
+ .settings-wizard {
252
+ display: grid;
253
+ gap: 14px;
254
+ margin-top: 14px;
255
+ }
256
+ .wizard-header {
257
+ display: flex;
258
+ align-items: flex-start;
259
+ justify-content: space-between;
260
+ gap: 12px;
261
+ }
262
+ .wizard-header h2 {
263
+ margin: 0 0 4px;
264
+ }
265
+ .wizard-header p,
266
+ .wizard-step p,
267
+ .wizard-card p {
268
+ margin: 0;
269
+ color: var(--muted);
270
+ line-height: 1.45;
271
+ }
272
+ .wizard-choice-grid {
273
+ display: grid;
274
+ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
275
+ gap: 12px;
276
+ }
277
+ .wizard-card {
278
+ display: grid;
279
+ gap: 8px;
280
+ border: 1px solid var(--border-soft);
281
+ border-radius: 8px;
282
+ background: var(--surface-soft);
283
+ padding: 12px;
284
+ min-width: 0;
285
+ }
286
+ .wizard-links {
287
+ display: flex;
288
+ gap: 8px;
289
+ align-items: center;
290
+ flex-wrap: wrap;
291
+ }
292
+ .wizard-links a {
293
+ font-size: 12px;
294
+ border: 1px solid var(--border);
295
+ border-radius: 999px;
296
+ padding: 4px 8px;
297
+ color: var(--accent);
298
+ text-decoration: none;
299
+ background: var(--surface);
300
+ }
301
+ .wizard-links a:hover {
302
+ text-decoration: underline;
303
+ }
304
+ .wizard-progress {
305
+ display: flex;
306
+ gap: 8px;
307
+ flex-wrap: wrap;
308
+ }
309
+ .wizard-progress button {
310
+ background: var(--surface);
311
+ color: var(--text);
312
+ border-color: var(--border);
313
+ min-height: 32px;
314
+ height: 32px;
315
+ line-height: 1;
316
+ }
317
+ .wizard-progress button:hover {
318
+ background: var(--accent-strong);
319
+ color: white;
320
+ border-color: var(--accent-strong);
321
+ }
322
+ .wizard-progress button.active {
323
+ background: var(--accent);
324
+ color: white;
325
+ border-color: var(--accent);
326
+ }
327
+ .wizard-step {
328
+ display: grid;
329
+ gap: 12px;
330
+ }
331
+ .wizard-step h3 {
332
+ margin: 0;
333
+ }
334
+ .wizard-actions {
335
+ display: flex;
336
+ gap: 8px;
337
+ align-items: center;
338
+ flex-wrap: wrap;
339
+ }
340
+ .wizard-errors {
341
+ display: grid;
342
+ gap: 6px;
343
+ }
344
+ .wizard-error,
345
+ .wizard-warning {
346
+ border-radius: 8px;
347
+ padding: 8px 10px;
348
+ font-size: 13px;
349
+ }
350
+ .wizard-error {
351
+ border: 1px solid var(--danger);
352
+ color: var(--danger);
353
+ background: color-mix(in srgb, var(--danger) 8%, transparent);
354
+ }
355
+ .wizard-warning {
356
+ border: 1px solid #d9c27a;
357
+ color: #8a6a12;
358
+ background: var(--warn);
359
+ }
242
360
  .task-grid,
243
361
  .metrics-grid {
244
362
  display: grid;
@@ -340,6 +458,69 @@
340
458
  gap: 8px;
341
459
  margin-top: 8px;
342
460
  }
461
+ .peer-invite-details {
462
+ display: grid;
463
+ gap: 6px;
464
+ margin: 10px 0;
465
+ padding: 10px;
466
+ border: 1px solid var(--border-soft);
467
+ border-radius: 8px;
468
+ background: var(--surface);
469
+ }
470
+ .peer-invite-details small {
471
+ margin-top: 0;
472
+ font-weight: 700;
473
+ }
474
+ .peer-invite-copy,
475
+ .peer-invite-command {
476
+ display: block;
477
+ width: 100%;
478
+ text-align: left;
479
+ overflow-wrap: anywhere;
480
+ white-space: pre-wrap;
481
+ }
482
+ .copy-id.peer-invite-command {
483
+ padding: 8px;
484
+ border: 1px solid var(--border-soft);
485
+ border-radius: 6px;
486
+ background: var(--surface);
487
+ color: var(--text);
488
+ text-decoration: none;
489
+ }
490
+ .copy-id.peer-invite-command:hover {
491
+ background: var(--accent-soft);
492
+ border-color: var(--accent);
493
+ color: var(--link);
494
+ text-decoration: none;
495
+ }
496
+ .peer-warning {
497
+ display: grid;
498
+ gap: 4px;
499
+ margin: 10px 0;
500
+ padding: 10px;
501
+ border: 1px solid #d9c27a;
502
+ border-radius: 8px;
503
+ background: var(--warn);
504
+ color: #8a6a12;
505
+ }
506
+ .peer-warning small {
507
+ color: #8a6a12;
508
+ }
509
+ .peer-probe-result {
510
+ margin-top: 10px;
511
+ padding: 10px;
512
+ border: 1px solid var(--border-soft);
513
+ border-radius: 8px;
514
+ background: var(--surface);
515
+ }
516
+ .peer-probe-result.ok {
517
+ border-color: #8ed0aa;
518
+ background: color-mix(in srgb, var(--accent-soft) 45%, var(--surface));
519
+ }
520
+ .peer-probe-result.warn {
521
+ border-color: #d9c27a;
522
+ background: var(--warn);
523
+ }
343
524
  * {
344
525
  box-sizing: border-box;
345
526
  }
@@ -991,6 +1172,9 @@ dialog::backdrop {
991
1172
  .overview-adapter-grid {
992
1173
  grid-template-columns: 1fr;
993
1174
  }
1175
+ .conformance-grid {
1176
+ grid-template-columns: 1fr;
1177
+ }
994
1178
  .chat-layout {
995
1179
  grid-template-columns: 1fr;
996
1180
  }
@@ -1060,4 +1244,13 @@ dialog::backdrop {
1060
1244
  margin-left: 0;
1061
1245
  justify-content: stretch;
1062
1246
  }
1247
+ .wizard-header,
1248
+ .wizard-actions {
1249
+ align-items: stretch;
1250
+ flex-direction: column;
1251
+ }
1252
+ .wizard-header button,
1253
+ .wizard-actions button {
1254
+ width: 100%;
1255
+ }
1063
1256
  }