@agent-relay/daemon 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 (109) hide show
  1. package/dist/agent-manager.d.ts +134 -0
  2. package/dist/agent-manager.d.ts.map +1 -0
  3. package/dist/agent-manager.js +578 -0
  4. package/dist/agent-manager.js.map +1 -0
  5. package/dist/agent-registry.d.ts +99 -0
  6. package/dist/agent-registry.d.ts.map +1 -0
  7. package/dist/agent-registry.js +213 -0
  8. package/dist/agent-registry.js.map +1 -0
  9. package/dist/agent-signing.d.ts +158 -0
  10. package/dist/agent-signing.d.ts.map +1 -0
  11. package/dist/agent-signing.js +523 -0
  12. package/dist/agent-signing.js.map +1 -0
  13. package/dist/api.d.ts +106 -0
  14. package/dist/api.d.ts.map +1 -0
  15. package/dist/api.js +876 -0
  16. package/dist/api.js.map +1 -0
  17. package/dist/auth.d.ts +94 -0
  18. package/dist/auth.d.ts.map +1 -0
  19. package/dist/auth.js +197 -0
  20. package/dist/auth.js.map +1 -0
  21. package/dist/channel-membership-store.d.ts +55 -0
  22. package/dist/channel-membership-store.d.ts.map +1 -0
  23. package/dist/channel-membership-store.js +176 -0
  24. package/dist/channel-membership-store.js.map +1 -0
  25. package/dist/cli-auth.d.ts +89 -0
  26. package/dist/cli-auth.d.ts.map +1 -0
  27. package/dist/cli-auth.js +792 -0
  28. package/dist/cli-auth.js.map +1 -0
  29. package/dist/cloud-sync.d.ts +150 -0
  30. package/dist/cloud-sync.d.ts.map +1 -0
  31. package/dist/cloud-sync.js +446 -0
  32. package/dist/cloud-sync.js.map +1 -0
  33. package/dist/connection.d.ts +130 -0
  34. package/dist/connection.d.ts.map +1 -0
  35. package/dist/connection.js +438 -0
  36. package/dist/connection.js.map +1 -0
  37. package/dist/consensus-integration.d.ts +167 -0
  38. package/dist/consensus-integration.d.ts.map +1 -0
  39. package/dist/consensus-integration.js +371 -0
  40. package/dist/consensus-integration.js.map +1 -0
  41. package/dist/consensus.d.ts +271 -0
  42. package/dist/consensus.d.ts.map +1 -0
  43. package/dist/consensus.js +632 -0
  44. package/dist/consensus.js.map +1 -0
  45. package/dist/delivery-tracker.d.ts +34 -0
  46. package/dist/delivery-tracker.d.ts.map +1 -0
  47. package/dist/delivery-tracker.js +104 -0
  48. package/dist/delivery-tracker.js.map +1 -0
  49. package/dist/enhanced-features.d.ts +118 -0
  50. package/dist/enhanced-features.d.ts.map +1 -0
  51. package/dist/enhanced-features.js +176 -0
  52. package/dist/enhanced-features.js.map +1 -0
  53. package/dist/index.d.ts +31 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +37 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/migrations/index.d.ts +73 -0
  58. package/dist/migrations/index.d.ts.map +1 -0
  59. package/dist/migrations/index.js +241 -0
  60. package/dist/migrations/index.js.map +1 -0
  61. package/dist/orchestrator.d.ts +217 -0
  62. package/dist/orchestrator.d.ts.map +1 -0
  63. package/dist/orchestrator.js +1143 -0
  64. package/dist/orchestrator.js.map +1 -0
  65. package/dist/rate-limiter.d.ts +68 -0
  66. package/dist/rate-limiter.d.ts.map +1 -0
  67. package/dist/rate-limiter.js +130 -0
  68. package/dist/rate-limiter.js.map +1 -0
  69. package/dist/registry.d.ts +9 -0
  70. package/dist/registry.d.ts.map +1 -0
  71. package/dist/registry.js +9 -0
  72. package/dist/registry.js.map +1 -0
  73. package/dist/relay-ledger.d.ts +261 -0
  74. package/dist/relay-ledger.d.ts.map +1 -0
  75. package/dist/relay-ledger.js +532 -0
  76. package/dist/relay-ledger.js.map +1 -0
  77. package/dist/relay-watchdog.d.ts +125 -0
  78. package/dist/relay-watchdog.d.ts.map +1 -0
  79. package/dist/relay-watchdog.js +611 -0
  80. package/dist/relay-watchdog.js.map +1 -0
  81. package/dist/repo-manager.d.ts +116 -0
  82. package/dist/repo-manager.d.ts.map +1 -0
  83. package/dist/repo-manager.js +384 -0
  84. package/dist/repo-manager.js.map +1 -0
  85. package/dist/router.d.ts +370 -0
  86. package/dist/router.d.ts.map +1 -0
  87. package/dist/router.js +1437 -0
  88. package/dist/router.js.map +1 -0
  89. package/dist/server.d.ts +174 -0
  90. package/dist/server.d.ts.map +1 -0
  91. package/dist/server.js +1001 -0
  92. package/dist/server.js.map +1 -0
  93. package/dist/spawn-manager.d.ts +78 -0
  94. package/dist/spawn-manager.d.ts.map +1 -0
  95. package/dist/spawn-manager.js +165 -0
  96. package/dist/spawn-manager.js.map +1 -0
  97. package/dist/sync-queue.d.ts +116 -0
  98. package/dist/sync-queue.d.ts.map +1 -0
  99. package/dist/sync-queue.js +361 -0
  100. package/dist/sync-queue.js.map +1 -0
  101. package/dist/types.d.ts +133 -0
  102. package/dist/types.d.ts.map +1 -0
  103. package/dist/types.js +6 -0
  104. package/dist/types.js.map +1 -0
  105. package/dist/workspace-manager.d.ts +80 -0
  106. package/dist/workspace-manager.d.ts.map +1 -0
  107. package/dist/workspace-manager.js +314 -0
  108. package/dist/workspace-manager.js.map +1 -0
  109. package/package.json +52 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-auth.js","sourceRoot":"","sources":["../src/cli-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACL,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GAGtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,iDAAiD;AACjD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;AAExC,0BAA0B;AAC1B,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAC;AAGlD;;;GAGG;AACH,SAAS,kBAAkB;IACzB,mEAAmE;IACnE,uEAAuE;IACvE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAE5D,MAAM,UAAU,GAAG;QACjB,kEAAkE;QAClE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;QACrC,gCAAgC;QAChC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC;QAChE,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC;QAC9D,uCAAuC;QACvC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC;QAClE,qBAAqB;QACrB,0BAA0B;QAC1B,iDAAiD;QACjD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,CAAC;KACvE,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AA+BD,kBAAkB;AAClB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;AAEhD,qCAAqC;AACrC,sEAAsE;AACtE,WAAW,CAAC,GAAG,EAAE;IACf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;QACrC,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YACvD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACzB,CAAC;gBAAC,MAAM,CAAC;oBACP,8BAA8B;gBAChC,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;AACH,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;AASlB;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,UAA+B,EAAE;IAEjC,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACtC,MAAM,OAAO,GAAgB;QAC3B,EAAE,EAAE,SAAS;QACb,QAAQ;QACR,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,EAAE;QACV,cAAc,EAAE,EAAE;QAClB,SAAS,EAAE,IAAI,IAAI,EAAE;KACtB,CAAC;IACF,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEjC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;QACtC,SAAS;QACT,QAAQ;QACR,mBAAmB,EAAE,QAAQ,CAAC,IAAI;QAClC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KAC3C,CAAC,CAAC;IAEH,qDAAqD;IACrD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACjF,IAAI,aAAa,EAAE,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,oDAAoD,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YAC3F,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAC3B,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;YACpC,OAAO,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;YAClD,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,SAAS,CAAC;YACjD,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;IACpD,CAAC;IAED,wBAAwB;IACxB,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;IAC1C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;QACzB,OAAO,CAAC,KAAK,GAAG,+EAA+E,CAAC;QAChG,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,kDAAkD;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC,cAAc;QACzD,CAAC,CAAC,MAAM,CAAC,cAAc;QACvB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAEhB,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE;QAC/B,QAAQ;QACR,SAAS;QACT,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE3C,qEAAqE;IACrE,IAAI,cAA0B,CAAC;IAC/B,MAAM,cAAc,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnD,cAAc,GAAG,OAAO,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,yEAAyE;IACzE,MAAM,qBAAqB,GAAG,KAAK,CAAC,CAAC,iCAAiC;IACtE,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;QACrC,MAAM,CAAC,IAAI,CAAC,sDAAsD,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7F,cAAc,EAAE,CAAC;IACnB,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAE1B,IAAI,CAAC;QACH,0EAA0E;QAC1E,4EAA4E;QAC5E,IAAI,OAAO,GAA2B,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,uBAAuB,EAAE,CAAC;gBACjD,OAAO,GAAG,cAAc,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC5D,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE;oBACrD,QAAQ;oBACR,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,IAAI,EAAE,OAAO,CAAC,IAAI;iBACnB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,+CAA+C,EAAE;oBAC3D,QAAQ;oBACR,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACxD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,MAAM,SAAS,GAAG;YAChB,QAAQ,EAAE,QAAQ,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YAC7C,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,OAAO,EAAE,0BAA0B;YAClD,IAAI,EAAE,MAAM,CAAC,OAAO;YACpB,GAAG,IAAI;SACR,CAAC;QAEF,MAAM,IAAI,GAAiB,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE;YACxD,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,GAAG,OAAO,EAAE,gDAAgD;gBAC5D,QAAQ,EAAE,GAAG;gBACb,IAAI,EAAE,gBAAgB;gBACtB,sFAAsF;gBACtF,mGAAmG;gBACnG,OAAO,EAAE,EAAE;aACZ;YACD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,wCAAwC;QACxC,MAAM,cAAc,GAAmB;YACrC,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC;YAChD,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;SACxB,CAAC;QACF,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC;QAEjC,oEAAoE;QACpE,uDAAuD;QACvD,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;QAC5D,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;gBACvE,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnF,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;gBACzB,OAAO,CAAC,KAAK,GAAG,oEAAoE,CAAC;YACvF,CAAC;QACH,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,wBAAwB,CAAC,CAAC;QAElD,8BAA8B;QAC9B,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE;YAClC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;YACvB,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YAEvC,oFAAoF;YACpF,oFAAoF;YACpF,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YACnE,IAAI,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC/C,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;oBACjC,QAAQ;oBACR,SAAS;oBACT,YAAY,EAAE,YAAY,CAAC,OAAO;oBAClC,WAAW,EAAE,YAAY,CAAC,WAAW;iBACtC,CAAC,CAAC;gBACH,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;gBACzB,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC;gBACrC,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC;gBACtC,OAAO,CAAC,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;YACjD,CAAC;YAED,wDAAwD;YACxD,oEAAoE;YACpE,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC/B,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;gBAClF,IAAI,cAAc,EAAE,CAAC;oBACnB,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;oBACjD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;oBACxD,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,WAAW,EAAE,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC;oBAEtF,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,IAAI,GAAG,CAAC;oBAC1C,UAAU,CAAC,GAAG,EAAE;wBACd,IAAI,CAAC;4BACH,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;wBAC7C,CAAC;wBAAC,MAAM,CAAC;4BACP,0BAA0B;wBAC5B,CAAC;oBACH,CAAC,EAAE,KAAK,CAAC,CAAC;gBACZ,CAAC;YACH,CAAC;YAED,uEAAuE;YACvE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACjD,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBACxE,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3B,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrE,mCAAmC;gBACnC,YAAY,CAAC,cAAc,CAAC,CAAC;gBAC7B,cAAc,EAAE,CAAC;YACnB,CAAC;YAED,4DAA4D;YAC5D,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;gBACrC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;wBACvC,QAAQ;wBACR,SAAS;wBACT,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;qBACtC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,mDAAmD;YACnD,+DAA+D;YAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;gBACtF,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,4DAA4D,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAExF,0EAA0E;gBAC1E,2DAA2D;gBAC3D,UAAU,CAAC,KAAK,IAAI,EAAE;oBACpB,wFAAwF;oBACxF,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;wBAC/B,MAAM,CAAC,IAAI,CAAC,4DAA4D,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;wBACxF,OAAO;oBACT,CAAC;oBACD,IAAI,CAAC;wBACH,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;wBACzE,IAAI,KAAK,EAAE,CAAC;4BACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;4BAC5B,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;4BAC1C,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC;4BACzC,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;wBACzG,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACnF,CAAC;gBACH,CAAC,EAAE,GAAG,CAAC,CAAC;YACV,CAAC;QACH,CAAC,CAAC;QAEF,kCAAkC;QAClC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACvC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,qDAAqD;QACrD,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACvC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YACjC,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,YAAY,CAAC,cAAc,CAAC,CAAC;YAE7B,8DAA8D;YAC9D,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;YAE5B,gDAAgD;YAChD,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACnD,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAChC,QAAQ;gBACR,QAAQ;gBACR,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;gBACnC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO;gBAC7B,aAAa,EAAE,OAAO,CAAC,MAAM;gBAC7B,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,yCAAyC;gBACzC,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;aACpC,CAAC,CAAC;YAEH,+DAA+D;YAC/D,4DAA4D;YAC5D,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBACtE,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;oBACzE,IAAI,KAAK,EAAE,CAAC;wBACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;wBAC5B,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;wBAC1C,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC;wBACzC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;oBAC7B,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBACrE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;gBACzB,OAAO,CAAC,KAAK,GAAG,4CAA4C,CAAC;YAC/D,CAAC;YAED,sCAAsC;YACtC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,YAAY,CAAC,cAAc,CAAC,CAAC;YAC7B,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;YACzB,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1D,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;QACzB,OAAO,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC;QAC3E,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACnE,YAAY,CAAC,cAAc,CAAC,CAAC;QAC7B,cAAe,EAAE,CAAC;IACpB,CAAC;IAED,gDAAgD;IAChD,MAAM,cAAc,CAAC;IAErB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;AACzC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,IAAY,EACZ,KAAc;IAEd,wCAAwC;IACxC,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;QACnC,SAAS;QACT,UAAU,EAAE,IAAI,CAAC,MAAM;QACvB,kBAAkB,EAAE,gBAAgB,CAAC,MAAM;QAC3C,gBAAgB;KACjB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,gDAAgD,EAAE;YAC5D,SAAS;YACT,gBAAgB;YAChB,IAAI,EAAE,mDAAmD;SAC1D,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACvF,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE;QAC/C,SAAS;QACT,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO;QAC7B,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO;QAC7B,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK;QACzB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;QAC1C,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;KAC1E,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE;YACzD,SAAS;YACT,aAAa,EAAE,OAAO,CAAC,MAAM;YAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;YACzC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW;SACtF,CAAC,CAAC;QAEH,6EAA6E;QAC7E,kCAAkC;QAClC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBACjF,oEAAoE;gBACpE,4FAA4F;gBAC5F,IAAI,KAAK,IAAK,OAAO,CAAC,MAAgC,KAAK,OAAO,EAAE,CAAC;oBACnE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;oBAC5B,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;oBAC1C,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC;oBACzC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAClF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC3B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,uBAAuB;YACzB,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,0DAA0D;QAC1D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,qIAAqI;YAC5I,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,wEAAwE;QACxE,uEAAuE;QACvE,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,SAAS,CAAC;YAC/B,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE;gBACrD,SAAS;gBACT,cAAc,EAAE,YAAY,CAAC,MAAM;gBACnC,WAAW,EAAE,SAAS,CAAC,MAAM;aAC9B,CAAC,CAAC;QACL,CAAC;QAED,yEAAyE;QACzE,qEAAqE;QACrE,kCAAkC;QAClC,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrD,6DAA6D;YAC7D,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAC3F,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAEvD,MAAM,CAAC,IAAI,CAAC,yDAAyD,EAAE;gBACrE,SAAS;gBACT,IAAI;gBACJ,UAAU,EAAE,SAAS,CAAC,MAAM;gBAC5B,QAAQ,EAAE,CAAC,CAAC,KAAK;aAClB,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,qDAAqD;gBACrD,0DAA0D;gBAC1D,IAAI,WAAW,GAAG,oBAAoB,IAAI,uBAAuB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjG,IAAI,KAAK,EAAE,CAAC;oBACV,WAAW,IAAI,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;oBACxC,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;iBAClC,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAChB,MAAM,CAAC,IAAI,CAAC,oDAAoD,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;oBAE1G,gCAAgC;oBAChC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACjD,IAAI,MAAM,EAAE,CAAC;wBACX,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBACtC,CAAC;oBAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,8CAA8C;oBAC9C,IAAI,SAAS,GAAG,EAAE,CAAC;oBACnB,IAAI,CAAC;wBACH,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACpC,CAAC;oBAAC,MAAM,CAAC;wBACP,SAAS;oBACX,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE;wBACvD,SAAS;wBACT,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;wBAC/B,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,iBAAiB;wBACzD,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,cAAc;qBAC3E,CAAC,CAAC;oBACH,wCAAwC;gBAC1C,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,0DAA0D,EAAE;oBACtE,SAAS;oBACT,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;iBACnB,CAAC,CAAC;gBACH,wCAAwC;YAC1C,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACtC,SAAS;YACT,cAAc,EAAE,IAAI,CAAC,MAAM;YAC3B,WAAW,EAAE,SAAS,CAAC,MAAM;YAC7B,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;SAChD,CAAC,CAAC;QAEH,0CAA0C;QAC1C,8DAA8D;QAC9D,8EAA8E;QAC9E,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,oDAAoD,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAEjF,mDAAmD;QACnD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAExD,2BAA2B;QAC3B,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAE7C,sDAAsD;QACtD,oEAAoE;QACpE,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,MAAM,EAAE,CAAC;YACX,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9E,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,gFAAgF;YACvF,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAAC,OAAoB,EAAE,MAAqB;IAC3E,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,WAAW;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QAEhE,qDAAqD;QACrD,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAChD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACjF,IAAI,KAAK,EAAE,CAAC;gBACV,oEAAoE;gBACpE,4FAA4F;gBAC5F,IAAK,OAAO,CAAC,MAAgC,KAAK,OAAO,EAAE,CAAC;oBAC1D,MAAM,CAAC,IAAI,CAAC,iEAAiE,EAAE;wBAC7E,QAAQ,EAAE,OAAO,CAAC,QAAQ;qBAC3B,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC5B,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAC1C,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC;gBACzC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;oBAC3C,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,OAAO,EAAE,CAAC,GAAG,CAAC;oBACd,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY;iBACtC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;QAC7C,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,0DAA0D,EAAE;QACtE,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,EAAE;KACtB,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,SAAiB;IAKzD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC;IACnE,CAAC;IAED,2BAA2B;IAC3B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;IACvD,CAAC;IAED,6DAA6D;IAC7D,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,YAAY,GAAG,IAAI,CAAC;IAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,yCAAyC;QACzC,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC/B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,uBAAuB,EAAE,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACjF,IAAI,KAAK,EAAE,CAAC;gBACV,oEAAoE;gBACpE,4FAA4F;gBAC5F,IAAK,OAAO,CAAC,MAAgC,KAAK,OAAO,EAAE,CAAC;oBAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,uBAAuB,EAAE,CAAC;gBAC7E,CAAC;gBACD,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC5B,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAC1C,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC;gBACzC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE;oBACpD,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,OAAO,EAAE,CAAC,GAAG,CAAC;iBACf,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,mFAAmF;KAC3F,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;AACd,CAAC;AAQD,SAAS,qBAAqB,CAC5B,QAAgB,EAChB,MAAqB,EACrB,MAAe;IAEf,IAAI,CAAC,MAAM,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IAExC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,uBAAuB,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,2DAA2D,EAAE;YACvE,QAAQ;YACR,MAAM;YACN,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,QAAgB,EAChB,MAAqB,EACrB,MAAe;IAEf,MAAM,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjE,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAElC,kCAAkC;QAClC,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC7B,yGAAyG;YACzG,IAAI,KAAK,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;gBACrC,OAAO;oBACL,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW;oBACtC,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,YAAY;oBAC9C,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;iBAC/F,CAAC;YACJ,CAAC;YACD,6BAA6B;YAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC;YACvE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAClC,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,wFAAwF;YACxF,IAAI,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;gBAC/B,OAAO;oBACL,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY;oBAChC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa;iBACzC,CAAC;YACJ,CAAC;YACD,sCAAsC;YACtC,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC;YACzF,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAClC,CAAC;aAAM,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YACnC,0GAA0G;YAC1G,uEAAuE;YACvE,IAAI,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;gBACxB,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YACvC,CAAC;YACD,IAAI,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;gBAC5B,OAAO;oBACL,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;oBAC7B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;oBACrC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;iBACnF,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBACzB,OAAO;oBACL,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;oBAC1B,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;oBAClC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;iBAC7E,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;gBACtB,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACrC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,qEAAqE;YACrE,4EAA4E;YAC5E,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,OAAO;oBACL,KAAK,EAAE,KAAK,CAAC,WAAW;oBACxB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;iBACnE,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;gBAC5B,OAAO;oBACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;oBAC7B,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY;oBACrC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;iBAC7E,CAAC;YACJ,CAAC;YACD,mCAAmC;YACnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC;YACjE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAClC,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC;QACjE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB,EAAE,MAAe;IACvE,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACjE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Cloud Sync Service
3
+ *
4
+ * Handles automatic bridging between local daemons via the cloud:
5
+ * - Heartbeat to report status
6
+ * - Agent discovery across machines
7
+ * - Cross-machine message relay
8
+ * - Credential sync from cloud
9
+ */
10
+ import { EventEmitter } from 'events';
11
+ import type { StorageAdapter, StoredMessage } from '@agent-relay/storage/adapter';
12
+ import { type SyncQueueConfig, type SyncQueueStats } from './sync-queue.js';
13
+ export interface CloudSyncConfig {
14
+ apiKey?: string;
15
+ cloudUrl: string;
16
+ heartbeatInterval: number;
17
+ enabled: boolean;
18
+ /** Enable message sync to cloud (default: true if connected) */
19
+ messageSyncEnabled?: boolean;
20
+ /** Batch size for message sync (default: 100) */
21
+ messageSyncBatchSize?: number;
22
+ /** Use optimized sync queue with compression and spillover (default: true) */
23
+ useOptimizedSync?: boolean;
24
+ /** Sync queue configuration */
25
+ syncQueue?: Partial<SyncQueueConfig>;
26
+ /** Project directory for git remote detection (defaults to cwd) */
27
+ projectDirectory?: string;
28
+ }
29
+ export interface RemoteAgent {
30
+ name: string;
31
+ status: string;
32
+ daemonId: string;
33
+ daemonName: string;
34
+ machineId: string;
35
+ }
36
+ export interface CrossMachineMessage {
37
+ from: {
38
+ daemonId: string;
39
+ daemonName: string;
40
+ agent: string;
41
+ };
42
+ to: string;
43
+ content: string;
44
+ metadata?: Record<string, unknown>;
45
+ timestamp: string;
46
+ }
47
+ export declare class CloudSyncService extends EventEmitter {
48
+ private config;
49
+ private heartbeatTimer?;
50
+ private machineId;
51
+ private localAgents;
52
+ private remoteAgents;
53
+ private remoteUsers;
54
+ private connected;
55
+ private storage;
56
+ private lastMessageSyncTs;
57
+ private messageSyncInProgress;
58
+ private projectDirectory;
59
+ private repoFullName;
60
+ private syncQueue;
61
+ constructor(config?: Partial<CloudSyncConfig>);
62
+ /**
63
+ * Get or create a persistent machine ID
64
+ */
65
+ private getMachineId;
66
+ /**
67
+ * Start the cloud sync service
68
+ */
69
+ start(): Promise<void>;
70
+ /**
71
+ * Stop the cloud sync service
72
+ */
73
+ stop(): Promise<void>;
74
+ /**
75
+ * Update local agent list (called by daemon when agents change)
76
+ */
77
+ updateAgents(agents: Array<{
78
+ name: string;
79
+ status: string;
80
+ isHuman?: boolean;
81
+ avatarUrl?: string;
82
+ }>): void;
83
+ /**
84
+ * Get all remote agents (from other machines)
85
+ */
86
+ getRemoteAgents(): RemoteAgent[];
87
+ /**
88
+ * Send a message to an agent on another machine
89
+ */
90
+ sendCrossMachineMessage(targetDaemonId: string, targetAgent: string, fromAgent: string, content: string, metadata?: Record<string, unknown>): Promise<void>;
91
+ /**
92
+ * Send heartbeat to cloud
93
+ */
94
+ private sendHeartbeat;
95
+ /**
96
+ * Sync agents with cloud and get remote agents
97
+ */
98
+ private syncAgents;
99
+ /**
100
+ * Fetch queued messages from cloud
101
+ */
102
+ private fetchMessages;
103
+ /**
104
+ * Sync credentials from cloud (pull latest tokens)
105
+ */
106
+ syncCredentials(): Promise<Array<{
107
+ provider: string;
108
+ accessToken: string;
109
+ tokenType?: string;
110
+ expiresAt?: string;
111
+ }>>;
112
+ /**
113
+ * Check if connected to cloud
114
+ */
115
+ isConnected(): boolean;
116
+ /**
117
+ * Get machine ID
118
+ */
119
+ getMachineIdentifier(): string;
120
+ /**
121
+ * Set the storage adapter for message sync
122
+ */
123
+ setStorage(storage: StorageAdapter): void;
124
+ /**
125
+ * Queue a single message for sync to cloud.
126
+ * Use this for real-time sync as messages are created.
127
+ * Falls back to batch sync if optimized queue is not enabled.
128
+ */
129
+ queueMessageForSync(message: StoredMessage): Promise<void>;
130
+ /**
131
+ * Get sync queue statistics (if optimized sync is enabled).
132
+ */
133
+ getSyncQueueStats(): SyncQueueStats | null;
134
+ /**
135
+ * Force flush the sync queue.
136
+ */
137
+ flushSyncQueue(): Promise<void>;
138
+ /**
139
+ * Sync local messages to cloud storage
140
+ *
141
+ * Reads messages from local SQLite since last sync and posts them
142
+ * to the cloud API for centralized storage and search.
143
+ */
144
+ syncMessagesToCloud(): Promise<{
145
+ synced: number;
146
+ duplicates: number;
147
+ }>;
148
+ }
149
+ export declare function getCloudSync(config?: Partial<CloudSyncConfig>): CloudSyncService;
150
+ //# sourceMappingURL=cloud-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-sync.d.ts","sourceRoot":"","sources":["../src/cloud-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,446 @@
1
+ /**
2
+ * Cloud Sync Service
3
+ *
4
+ * Handles automatic bridging between local daemons via the cloud:
5
+ * - Heartbeat to report status
6
+ * - Agent discovery across machines
7
+ * - Cross-machine message relay
8
+ * - Credential sync from cloud
9
+ */
10
+ import { EventEmitter } from 'events';
11
+ import * as fs from 'fs';
12
+ import * as path from 'path';
13
+ import * as os from 'os';
14
+ import { randomBytes } from 'crypto';
15
+ import { createLogger } from '@agent-relay/utils/logger';
16
+ import { SyncQueue } from './sync-queue.js';
17
+ import { getRepoFullNameFromPath } from '@agent-relay/utils/git-remote';
18
+ const log = createLogger('cloud-sync');
19
+ export class CloudSyncService extends EventEmitter {
20
+ config;
21
+ heartbeatTimer;
22
+ machineId;
23
+ localAgents = new Map();
24
+ remoteAgents = [];
25
+ remoteUsers = [];
26
+ connected = false;
27
+ storage = null;
28
+ lastMessageSyncTs = 0;
29
+ messageSyncInProgress = false;
30
+ // Project context for workspace resolution
31
+ projectDirectory;
32
+ repoFullName = null;
33
+ // Optimized sync queue
34
+ syncQueue = null;
35
+ constructor(config = {}) {
36
+ super();
37
+ this.config = {
38
+ apiKey: config.apiKey || process.env.AGENT_RELAY_API_KEY,
39
+ cloudUrl: config.cloudUrl || process.env.AGENT_RELAY_CLOUD_URL || 'https://agent-relay.com',
40
+ heartbeatInterval: config.heartbeatInterval || 30000, // 30 seconds
41
+ enabled: config.enabled ?? true,
42
+ useOptimizedSync: config.useOptimizedSync ?? true,
43
+ syncQueue: config.syncQueue,
44
+ projectDirectory: config.projectDirectory,
45
+ };
46
+ // Generate or load machine ID for consistent identification
47
+ this.machineId = this.getMachineId();
48
+ // Initialize project context for workspace resolution
49
+ this.projectDirectory = this.config.projectDirectory || process.cwd();
50
+ this.repoFullName = getRepoFullNameFromPath(this.projectDirectory);
51
+ if (this.repoFullName) {
52
+ log.info('Detected git repository', { repoFullName: this.repoFullName });
53
+ }
54
+ // Initialize optimized sync queue if enabled and API key is available
55
+ if (this.config.useOptimizedSync && this.config.apiKey) {
56
+ this.syncQueue = new SyncQueue({
57
+ cloudUrl: this.config.cloudUrl,
58
+ apiKey: this.config.apiKey,
59
+ ...this.config.syncQueue,
60
+ });
61
+ }
62
+ }
63
+ /**
64
+ * Get or create a persistent machine ID
65
+ */
66
+ getMachineId() {
67
+ const dataDir = process.env.AGENT_RELAY_DATA_DIR ||
68
+ path.join(os.homedir(), '.local', 'share', 'agent-relay');
69
+ const machineIdPath = path.join(dataDir, 'machine-id');
70
+ try {
71
+ if (fs.existsSync(machineIdPath)) {
72
+ return fs.readFileSync(machineIdPath, 'utf-8').trim();
73
+ }
74
+ // Generate new machine ID
75
+ const machineId = `${os.hostname()}-${randomBytes(8).toString('hex')}`;
76
+ fs.mkdirSync(dataDir, { recursive: true });
77
+ fs.writeFileSync(machineIdPath, machineId);
78
+ return machineId;
79
+ }
80
+ catch {
81
+ // Fallback: generate ephemeral ID
82
+ return `${os.hostname()}-${Date.now().toString(36)}`;
83
+ }
84
+ }
85
+ /**
86
+ * Start the cloud sync service
87
+ */
88
+ async start() {
89
+ if (!this.config.enabled || !this.config.apiKey) {
90
+ log.info('Disabled (no API key configured)');
91
+ log.info('Run `agent-relay cloud link` to connect to cloud');
92
+ return;
93
+ }
94
+ log.info('Starting cloud sync', { url: this.config.cloudUrl });
95
+ // Recover any spilled messages from previous runs
96
+ if (this.syncQueue) {
97
+ const { recovered, failed } = await this.syncQueue.recoverSpilledMessages();
98
+ if (recovered > 0 || failed > 0) {
99
+ log.info('Recovered spilled messages', { recovered, failed });
100
+ }
101
+ }
102
+ // Initial heartbeat
103
+ await this.sendHeartbeat();
104
+ // Start periodic heartbeat
105
+ this.heartbeatTimer = setInterval(() => this.sendHeartbeat().catch((err) => log.error('Heartbeat failed', { error: String(err) })), this.config.heartbeatInterval);
106
+ this.connected = true;
107
+ this.emit('connected');
108
+ }
109
+ /**
110
+ * Stop the cloud sync service
111
+ */
112
+ async stop() {
113
+ if (this.heartbeatTimer) {
114
+ clearInterval(this.heartbeatTimer);
115
+ this.heartbeatTimer = undefined;
116
+ }
117
+ // Gracefully close sync queue (flushes pending messages)
118
+ if (this.syncQueue) {
119
+ await this.syncQueue.close();
120
+ }
121
+ this.connected = false;
122
+ this.emit('disconnected');
123
+ }
124
+ /**
125
+ * Update local agent list (called by daemon when agents change)
126
+ */
127
+ updateAgents(agents) {
128
+ this.localAgents.clear();
129
+ for (const agent of agents) {
130
+ this.localAgents.set(agent.name, agent);
131
+ }
132
+ // Trigger immediate sync if connected
133
+ if (this.connected) {
134
+ this.syncAgents().catch((err) => log.error('Agent sync failed', { error: String(err) }));
135
+ }
136
+ }
137
+ /**
138
+ * Get all remote agents (from other machines)
139
+ */
140
+ getRemoteAgents() {
141
+ return this.remoteAgents;
142
+ }
143
+ /**
144
+ * Send a message to an agent on another machine
145
+ */
146
+ async sendCrossMachineMessage(targetDaemonId, targetAgent, fromAgent, content, metadata) {
147
+ if (!this.connected) {
148
+ throw new Error('Not connected to cloud');
149
+ }
150
+ const response = await fetch(`${this.config.cloudUrl}/api/daemons/message`, {
151
+ method: 'POST',
152
+ headers: {
153
+ Authorization: `Bearer ${this.config.apiKey}`,
154
+ 'Content-Type': 'application/json',
155
+ },
156
+ body: JSON.stringify({
157
+ targetDaemonId,
158
+ targetAgent,
159
+ message: {
160
+ from: fromAgent,
161
+ content,
162
+ metadata,
163
+ },
164
+ }),
165
+ });
166
+ if (!response.ok) {
167
+ const error = await response.text();
168
+ throw new Error(`Failed to send cross-machine message: ${error}`);
169
+ }
170
+ }
171
+ /**
172
+ * Send heartbeat to cloud
173
+ */
174
+ async sendHeartbeat() {
175
+ try {
176
+ const agents = Array.from(this.localAgents.entries()).map(([name, info]) => ({
177
+ name,
178
+ status: info.status,
179
+ isHuman: info.isHuman,
180
+ avatarUrl: info.avatarUrl,
181
+ }));
182
+ // Use AbortController for timeout (10 second timeout for heartbeat)
183
+ const controller = new AbortController();
184
+ const timeoutId = setTimeout(() => controller.abort(), 10000);
185
+ const response = await fetch(`${this.config.cloudUrl}/api/daemons/heartbeat`, {
186
+ method: 'POST',
187
+ headers: {
188
+ Authorization: `Bearer ${this.config.apiKey}`,
189
+ 'Content-Type': 'application/json',
190
+ },
191
+ body: JSON.stringify({
192
+ agents,
193
+ metrics: {
194
+ uptime: process.uptime(),
195
+ memoryUsage: process.memoryUsage(),
196
+ },
197
+ }),
198
+ signal: controller.signal,
199
+ }).finally(() => clearTimeout(timeoutId));
200
+ if (!response.ok) {
201
+ if (response.status === 401) {
202
+ log.error('Invalid API key. Run `agent-relay cloud link` to re-authenticate.');
203
+ this.stop();
204
+ return;
205
+ }
206
+ throw new Error(`Heartbeat failed: ${response.status}`);
207
+ }
208
+ const data = await response.json();
209
+ // Process any pending commands from cloud
210
+ if (data.commands && data.commands.length > 0) {
211
+ for (const cmd of data.commands) {
212
+ this.emit('command', cmd);
213
+ }
214
+ }
215
+ // Fetch messages, sync agents, and sync local messages to cloud
216
+ await Promise.all([
217
+ this.fetchMessages(),
218
+ this.syncAgents(),
219
+ this.syncMessagesToCloud(),
220
+ ]);
221
+ }
222
+ catch (error) {
223
+ // Provide more specific error messages for common issues
224
+ const errorMessage = String(error);
225
+ if (error instanceof Error && error.name === 'AbortError') {
226
+ log.error('Heartbeat timeout (10s)', { url: this.config.cloudUrl });
227
+ }
228
+ else if (errorMessage.includes('fetch failed') || errorMessage.includes('ECONNREFUSED')) {
229
+ log.error('Heartbeat network error - cloud server unreachable', {
230
+ url: this.config.cloudUrl,
231
+ error: errorMessage,
232
+ });
233
+ }
234
+ else if (errorMessage.includes('ENOTFOUND') || errorMessage.includes('getaddrinfo')) {
235
+ log.error('Heartbeat DNS error - cannot resolve cloud server', {
236
+ url: this.config.cloudUrl,
237
+ });
238
+ }
239
+ else {
240
+ log.error('Heartbeat error', { error: errorMessage });
241
+ }
242
+ this.emit('error', error);
243
+ }
244
+ }
245
+ /**
246
+ * Sync agents with cloud and get remote agents
247
+ */
248
+ async syncAgents() {
249
+ const agents = Array.from(this.localAgents.entries()).map(([name, info]) => ({
250
+ name,
251
+ status: info.status,
252
+ isHuman: info.isHuman,
253
+ avatarUrl: info.avatarUrl,
254
+ }));
255
+ const response = await fetch(`${this.config.cloudUrl}/api/daemons/agents`, {
256
+ method: 'POST',
257
+ headers: {
258
+ Authorization: `Bearer ${this.config.apiKey}`,
259
+ 'Content-Type': 'application/json',
260
+ },
261
+ body: JSON.stringify({ agents }),
262
+ });
263
+ if (!response.ok) {
264
+ throw new Error(`Agent sync failed: ${response.status}`);
265
+ }
266
+ const data = await response.json();
267
+ // Filter out our own agents
268
+ this.remoteAgents = data.allAgents.filter((a) => !this.localAgents.has(a.name));
269
+ if (this.remoteAgents.length > 0) {
270
+ this.emit('remote-agents-updated', this.remoteAgents);
271
+ }
272
+ // Handle remote users (humans connected via cloud dashboard)
273
+ if (data.allUsers) {
274
+ this.remoteUsers = data.allUsers.filter((u) => !this.localAgents.has(u.name));
275
+ if (this.remoteUsers.length > 0) {
276
+ this.emit('remote-users-updated', this.remoteUsers);
277
+ }
278
+ }
279
+ }
280
+ /**
281
+ * Fetch queued messages from cloud
282
+ */
283
+ async fetchMessages() {
284
+ const response = await fetch(`${this.config.cloudUrl}/api/daemons/messages`, {
285
+ headers: {
286
+ Authorization: `Bearer ${this.config.apiKey}`,
287
+ },
288
+ });
289
+ if (!response.ok) {
290
+ throw new Error(`Message fetch failed: ${response.status}`);
291
+ }
292
+ const data = await response.json();
293
+ for (const msg of data.messages) {
294
+ this.emit('cross-machine-message', msg);
295
+ }
296
+ }
297
+ /**
298
+ * Sync credentials from cloud (pull latest tokens)
299
+ */
300
+ async syncCredentials() {
301
+ if (!this.connected) {
302
+ throw new Error('Not connected to cloud');
303
+ }
304
+ const response = await fetch(`${this.config.cloudUrl}/api/daemons/credentials`, {
305
+ headers: {
306
+ Authorization: `Bearer ${this.config.apiKey}`,
307
+ },
308
+ });
309
+ if (!response.ok) {
310
+ throw new Error(`Credential sync failed: ${response.status}`);
311
+ }
312
+ const data = await response.json();
313
+ return data.credentials;
314
+ }
315
+ /**
316
+ * Check if connected to cloud
317
+ */
318
+ isConnected() {
319
+ return this.connected;
320
+ }
321
+ /**
322
+ * Get machine ID
323
+ */
324
+ getMachineIdentifier() {
325
+ return this.machineId;
326
+ }
327
+ /**
328
+ * Set the storage adapter for message sync
329
+ */
330
+ setStorage(storage) {
331
+ this.storage = storage;
332
+ log.info('Storage adapter configured for message sync');
333
+ }
334
+ /**
335
+ * Queue a single message for sync to cloud.
336
+ * Use this for real-time sync as messages are created.
337
+ * Falls back to batch sync if optimized queue is not enabled.
338
+ */
339
+ async queueMessageForSync(message) {
340
+ if (!this.connected || this.config.messageSyncEnabled === false) {
341
+ return;
342
+ }
343
+ if (this.syncQueue) {
344
+ await this.syncQueue.enqueue(message);
345
+ }
346
+ // If no sync queue, messages will be synced on next heartbeat via syncMessagesToCloud
347
+ }
348
+ /**
349
+ * Get sync queue statistics (if optimized sync is enabled).
350
+ */
351
+ getSyncQueueStats() {
352
+ return this.syncQueue?.getStats() ?? null;
353
+ }
354
+ /**
355
+ * Force flush the sync queue.
356
+ */
357
+ async flushSyncQueue() {
358
+ if (this.syncQueue) {
359
+ await this.syncQueue.flush();
360
+ }
361
+ }
362
+ /**
363
+ * Sync local messages to cloud storage
364
+ *
365
+ * Reads messages from local SQLite since last sync and posts them
366
+ * to the cloud API for centralized storage and search.
367
+ */
368
+ async syncMessagesToCloud() {
369
+ // Skip if disabled, not connected, no storage, or sync in progress
370
+ if (!this.connected || !this.storage || this.messageSyncInProgress) {
371
+ return { synced: 0, duplicates: 0 };
372
+ }
373
+ if (this.config.messageSyncEnabled === false) {
374
+ return { synced: 0, duplicates: 0 };
375
+ }
376
+ this.messageSyncInProgress = true;
377
+ try {
378
+ const batchSize = this.config.messageSyncBatchSize || 100;
379
+ // Get messages since last sync
380
+ const messages = await this.storage.getMessages({
381
+ sinceTs: this.lastMessageSyncTs > 0 ? this.lastMessageSyncTs : undefined,
382
+ limit: batchSize,
383
+ order: 'asc',
384
+ });
385
+ if (messages.length === 0) {
386
+ return { synced: 0, duplicates: 0 };
387
+ }
388
+ // Transform to API format
389
+ const syncPayload = messages.map((msg) => ({
390
+ id: msg.id,
391
+ ts: msg.ts,
392
+ from: msg.from,
393
+ to: msg.to,
394
+ body: msg.body,
395
+ kind: msg.kind,
396
+ topic: msg.topic,
397
+ thread: msg.thread,
398
+ is_broadcast: msg.is_broadcast,
399
+ is_urgent: msg.is_urgent,
400
+ data: msg.data,
401
+ payload_meta: msg.payloadMeta,
402
+ }));
403
+ // Post to cloud with repo context for workspace resolution
404
+ const response = await fetch(`${this.config.cloudUrl}/api/daemons/messages/sync`, {
405
+ method: 'POST',
406
+ headers: {
407
+ Authorization: `Bearer ${this.config.apiKey}`,
408
+ 'Content-Type': 'application/json',
409
+ },
410
+ body: JSON.stringify({
411
+ messages: syncPayload,
412
+ repoFullName: this.repoFullName,
413
+ }),
414
+ });
415
+ if (!response.ok) {
416
+ const errorText = await response.text();
417
+ throw new Error(`Message sync failed: ${response.status} - ${errorText}`);
418
+ }
419
+ const result = await response.json();
420
+ // Update last sync timestamp to the newest message we synced
421
+ if (messages.length > 0) {
422
+ this.lastMessageSyncTs = Math.max(...messages.map((m) => m.ts));
423
+ }
424
+ if (result.synced > 0) {
425
+ log.info(`Synced ${result.synced} messages to cloud`, { duplicates: result.duplicates });
426
+ }
427
+ return result;
428
+ }
429
+ catch (error) {
430
+ log.error('Message sync error', { error: String(error) });
431
+ return { synced: 0, duplicates: 0 };
432
+ }
433
+ finally {
434
+ this.messageSyncInProgress = false;
435
+ }
436
+ }
437
+ }
438
+ // Singleton instance
439
+ let _cloudSync = null;
440
+ export function getCloudSync(config) {
441
+ if (!_cloudSync) {
442
+ _cloudSync = new CloudSyncService(config);
443
+ }
444
+ return _cloudSync;
445
+ }
446
+ //# sourceMappingURL=cloud-sync.js.map