Home / Input Output / hermes
Jan 17, 9-10 PM (0)
Jan 17, 10-11 PM (0)
Jan 17, 11-12 AM (0)
Jan 18, 12-1 AM (0)
Jan 18, 1-2 AM (0)
Jan 18, 2-3 AM (0)
Jan 18, 3-4 AM (0)
Jan 18, 4-5 AM (0)
Jan 18, 5-6 AM (0)
Jan 18, 6-7 AM (0)
Jan 18, 7-8 AM (0)
Jan 18, 8-9 AM (0)
Jan 18, 9-10 AM (0)
Jan 18, 10-11 AM (0)
Jan 18, 11-12 PM (0)
Jan 18, 12-1 PM (0)
Jan 18, 1-2 PM (0)
Jan 18, 2-3 PM (0)
Jan 18, 3-4 PM (0)
Jan 18, 4-5 PM (0)
Jan 18, 5-6 PM (0)
Jan 18, 6-7 PM (0)
Jan 18, 7-8 PM (0)
Jan 18, 8-9 PM (0)
Jan 18, 9-10 PM (0)
Jan 18, 10-11 PM (0)
Jan 18, 11-12 AM (0)
Jan 19, 12-1 AM (0)
Jan 19, 1-2 AM (2)
Jan 19, 2-3 AM (2)
Jan 19, 3-4 AM (0)
Jan 19, 4-5 AM (0)
Jan 19, 5-6 AM (2)
Jan 19, 6-7 AM (0)
Jan 19, 7-8 AM (0)
Jan 19, 8-9 AM (1)
Jan 19, 9-10 AM (3)
Jan 19, 10-11 AM (0)
Jan 19, 11-12 PM (3)
Jan 19, 12-1 PM (0)
Jan 19, 1-2 PM (0)
Jan 19, 2-3 PM (0)
Jan 19, 3-4 PM (0)
Jan 19, 4-5 PM (0)
Jan 19, 5-6 PM (0)
Jan 19, 6-7 PM (0)
Jan 19, 7-8 PM (0)
Jan 19, 8-9 PM (0)
Jan 19, 9-10 PM (0)
Jan 19, 10-11 PM (0)
Jan 19, 11-12 AM (0)
Jan 20, 12-1 AM (0)
Jan 20, 1-2 AM (0)
Jan 20, 2-3 AM (0)
Jan 20, 3-4 AM (0)
Jan 20, 4-5 AM (0)
Jan 20, 5-6 AM (0)
Jan 20, 6-7 AM (0)
Jan 20, 7-8 AM (1)
Jan 20, 8-9 AM (0)
Jan 20, 9-10 AM (1)
Jan 20, 10-11 AM (0)
Jan 20, 11-12 PM (0)
Jan 20, 12-1 PM (0)
Jan 20, 1-2 PM (0)
Jan 20, 2-3 PM (0)
Jan 20, 3-4 PM (0)
Jan 20, 4-5 PM (0)
Jan 20, 5-6 PM (0)
Jan 20, 6-7 PM (0)
Jan 20, 7-8 PM (0)
Jan 20, 8-9 PM (0)
Jan 20, 9-10 PM (0)
Jan 20, 10-11 PM (0)
Jan 20, 11-12 AM (0)
Jan 21, 12-1 AM (0)
Jan 21, 1-2 AM (0)
Jan 21, 2-3 AM (0)
Jan 21, 3-4 AM (0)
Jan 21, 4-5 AM (0)
Jan 21, 5-6 AM (0)
Jan 21, 6-7 AM (0)
Jan 21, 7-8 AM (0)
Jan 21, 8-9 AM (8)
Jan 21, 9-10 AM (9)
Jan 21, 10-11 AM (5)
Jan 21, 11-12 PM (2)
Jan 21, 12-1 PM (1)
Jan 21, 1-2 PM (0)
Jan 21, 2-3 PM (0)
Jan 21, 3-4 PM (0)
Jan 21, 4-5 PM (0)
Jan 21, 5-6 PM (0)
Jan 21, 6-7 PM (0)
Jan 21, 7-8 PM (0)
Jan 21, 8-9 PM (0)
Jan 21, 9-10 PM (0)
Jan 21, 10-11 PM (0)
Jan 21, 11-12 AM (0)
Jan 22, 12-1 AM (0)
Jan 22, 1-2 AM (0)
Jan 22, 2-3 AM (0)
Jan 22, 3-4 AM (0)
Jan 22, 4-5 AM (0)
Jan 22, 5-6 AM (0)
Jan 22, 6-7 AM (0)
Jan 22, 7-8 AM (0)
Jan 22, 8-9 AM (2)
Jan 22, 9-10 AM (2)
Jan 22, 10-11 AM (1)
Jan 22, 11-12 PM (1)
Jan 22, 12-1 PM (0)
Jan 22, 1-2 PM (1)
Jan 22, 2-3 PM (0)
Jan 22, 3-4 PM (0)
Jan 22, 4-5 PM (0)
Jan 22, 5-6 PM (0)
Jan 22, 6-7 PM (0)
Jan 22, 7-8 PM (0)
Jan 22, 8-9 PM (0)
Jan 22, 9-10 PM (0)
Jan 22, 10-11 PM (0)
Jan 22, 11-12 AM (0)
Jan 23, 12-1 AM (0)
Jan 23, 1-2 AM (0)
Jan 23, 2-3 AM (0)
Jan 23, 3-4 AM (0)
Jan 23, 4-5 AM (0)
Jan 23, 5-6 AM (0)
Jan 23, 6-7 AM (0)
Jan 23, 7-8 AM (0)
Jan 23, 8-9 AM (0)
Jan 23, 9-10 AM (1)
Jan 23, 10-11 AM (2)
Jan 23, 11-12 PM (2)
Jan 23, 12-1 PM (0)
Jan 23, 1-2 PM (0)
Jan 23, 2-3 PM (0)
Jan 23, 3-4 PM (1)
Jan 23, 4-5 PM (0)
Jan 23, 5-6 PM (0)
Jan 23, 6-7 PM (0)
Jan 23, 7-8 PM (0)
Jan 23, 8-9 PM (0)
Jan 23, 9-10 PM (0)
Jan 23, 10-11 PM (0)
Jan 23, 11-12 AM (0)
Jan 24, 12-1 AM (0)
Jan 24, 1-2 AM (0)
Jan 24, 2-3 AM (0)
Jan 24, 3-4 AM (0)
Jan 24, 4-5 AM (0)
Jan 24, 5-6 AM (0)
Jan 24, 6-7 AM (0)
Jan 24, 7-8 AM (0)
Jan 24, 8-9 AM (0)
Jan 24, 9-10 AM (0)
Jan 24, 10-11 AM (0)
Jan 24, 11-12 PM (0)
Jan 24, 12-1 PM (0)
Jan 24, 1-2 PM (0)
Jan 24, 2-3 PM (0)
Jan 24, 3-4 PM (0)
Jan 24, 4-5 PM (0)
Jan 24, 5-6 PM (0)
Jan 24, 6-7 PM (0)
Jan 24, 7-8 PM (0)
Jan 24, 8-9 PM (0)
Jan 24, 9-10 PM (0)
53 commits this week Jan 17, 2026 - Jan 24, 2026
fix(hermes): Add the ability to call `fn hermes_ipfs_subscribe()` from both async and sync contexts (#772)
* fix(hermes): doc-sync P2P message format and subscription conflicts

  WHAT THIS FIXES:
  - CID format: Use dag-cbor codec (0x51) instead of dag-pb (0x70) for protocol compliance
  - Message encoding: Publish CBOR-encoded payload::New with CID lists instead of raw document bytes
  - Subscription conflict: Remove auto-subscription that prevented doc-sync module from subscribing

  CHANGES:
  - hermes/bin/src/runtime_extensions/hermes/doc_sync/host.rs:
    * Import minicbor crate directly (not via cardano_chain_follower)
    * Compute both dag-pb CID (storage) and dag-cbor CID (protocol) in add_file()
    * Construct proper payload::New structure in publish()
    * Encode to CBOR before publishing to PubSub

  - hermes/bin/src/ipfs/mod.rs:
    * Remove auto-subscription to documents.new during bootstrap
    * Prevents subscription kind conflicts with doc-sync module

  - hermes/bin/src/ipfs/task.rs:
    * Add extensive documentation of blocking operations issue
    * Document root cause and recommended async solution

  REMAINING ISSUE:
  P2P propagation still fails due to blocking operations in async context.
  The doc_sync_topic_message_handler (added in 944360f3) calls file_pin()
  and file_get() which use blocking_send()/blocking_recv(). This causes
  deadlock when called from async PubSub handler.

  NEXT STEPS:
  Convert file_pin() and file_get() to async versions. See detailed
  implementation guide in task.rs comments (lines 354-374).

  TEST:
  cd p2p-testing && just test-pubsub-propagation
  Currently FAILS with No Propagation due to blocking operations issue.
  Will PASS once async conversion is complete.

  Related: #691 (introduced blocking operations bug)

* fix(hermes): make doc-sync PubSub handler non-blocking with async file operations

  The doc_sync_topic_message_handler was blocking the PubSub event loop by using
  blocking_send/blocking_recv for IPFS file operations, preventing new messages
  from being processed while fetching content.

  Changes:
  - Add file_get_async() and file_pin_async() methods in ipfs/mod.rs that use
    send().await instead of blocking_send()
  - Update doc_sync_topic_message_handler() in ipfs/task.rs to spawn async task
    with tokio::spawn() for file operations
  - Add RECEIVED PubSub message with CID logging for test detection
  - Fix test-pubsub-propagation in p2p-testing/justfile to properly detect
    message reception using wc -l instead of grep -q

  Result:
  - PubSub handler no longer blocks - can process new messages while previous
    content is still being fetched
  - test-pubsub-propagation now passes with 100% success rate (5/5 nodes)
  - Resolves doc-sync P2P message propagation issue

* fix(hermes): make doc-sync PubSub handler non-blocking with async file operations

  The doc_sync_topic_message_handler was blocking the PubSub event loop by using
  blocking_send/blocking_recv for IPFS file operations, preventing new messages
  from being processed while fetching content.

  Changes:
  - Add file_get_async() and file_pin_async() methods in ipfs/mod.rs that use
    send().await instead of blocking_send()
  - Update doc_sync_topic_message_handler() in ipfs/task.rs to spawn async task
    with tokio::spawn() for file operations
  - Add RECEIVED PubSub message with CID logging for test detection
  - Fix test-pubsub-propagation in p2p-testing/justfile to properly detect
    message reception using wc -l instead of grep -q

  Result:
  - PubSub handler no longer blocks - can process new messages while previous
    content is still being fetched
  - test-pubsub-propagation now passes with 100% success rate (5/5 nodes)
  - Resolves doc-sync P2P message propagation issue

* fix(hermes): make doc-sync PubSub handler non-blocking with async file operations

  The doc_sync_topic_message_handler was blocking the PubSub event loop by using
  blocking_send/blocking_recv for IPFS file operations, preventing new messages
  from being processed while fetching content.

  Changes:
  - Add file_get_async() and file_pin_async() methods in ipfs/mod.rs that use
    send().await instead of blocking_send()
  - Update doc_sync_topic_message_handler() in ipfs/task.rs to spawn async task
    with tokio::spawn() for file operations
  - Add RECEIVED PubSub message with CID logging for test detection
  - Fix test-pubsub-propagation in p2p-testing/justfile to properly detect
    message reception using wc -l instead of grep -q

  Result:
  - PubSub handler no longer blocks - can process new messages while previous
    content is still being fetched
  - test-pubsub-propagation now passes with 100% success rate (5/5 nodes)
  - Resolves doc-sync P2P message propagation issue

* fix(hermes): make doc-sync PubSub handler non-blocking with async file operations

  The doc_sync_topic_message_handler was blocking the PubSub event loop by using
  blocking_send/blocking_recv for IPFS file operations, preventing new messages
  from being processed while fetching content.

  Changes:
  - Add file_get_async() and file_pin_async() methods in ipfs/mod.rs that use
    send().await instead of blocking_send()
  - Update doc_sync_topic_message_handler() in ipfs/task.rs to spawn async task
    with tokio::spawn() for file operations
  - Add RECEIVED PubSub message with CID logging for test detection
  - Fix test-pubsub-propagation in p2p-testing/justfile to properly detect
    message reception using wc -l instead of grep -q

  Result:
  - PubSub handler no longer blocks - can process new messages while previous
    content is still being fetched
  - test-pubsub-propagation now passes with 100% success rate (5/5 nodes)
  - Resolves doc-sync P2P message propagation issue

* fix(hermes): make doc-sync PubSub handler non-blocking with async file operations

  The doc_sync_topic_message_handler was blocking the PubSub event loop by using
  blocking_send/blocking_recv for IPFS file operations, preventing new messages
  from being processed while fetching content.

  Changes:
  - Add file_get_async() and file_pin_async() methods in ipfs/mod.rs that use
    send().await instead of blocking_send()
  - Update doc_sync_topic_message_handler() in ipfs/task.rs to spawn async task
    with tokio::spawn() for file operations
  - Add RECEIVED PubSub message with CID logging for test detection
  - Fix test-pubsub-propagation in p2p-testing/justfile to properly detect
    message reception using wc -l instead of grep -q

  Result:
  - PubSub handler no longer blocks - can process new messages while previous
    content is still being fetched
  - test-pubsub-propagation now passes with 100% success rate (5/5 nodes)
  - Resolves doc-sync P2P message propagation issue

* use type CID instead of string

Signed-off-by: bkioshn <[email protected]>

* small cleanup

Signed-off-by: bkioshn <[email protected]>

* reverts commit 7043008def62f76ffe75b9bd91350c2cb33f4808

Signed-off-by: bkioshn <[email protected]>

* change cid string to CID

Signed-off-by: bkioshn <[email protected]>

* change ipfs-cid type string to bstr

Signed-off-by: bkioshn <[email protected]>

* revert change

Signed-off-by: bkioshn <[email protected]>

* fix linter

Signed-off-by: bkioshn <[email protected]>

* cleanup task.rs and add comment about unixfs

Signed-off-by: bkioshn <[email protected]>

* cleanup

Signed-off-by: bkioshn <[email protected]>

* hack, add conversion

Signed-off-by: bkioshn <[email protected]>

* fix node 3 connection + log capture

Signed-off-by: bkioshn <[email protected]>

* add log necessary for test

Signed-off-by: bkioshn <[email protected]>

* revert peer docker config

Signed-off-by: bkioshn <[email protected]>

* fix linter

Signed-off-by: bkioshn <[email protected]>

* filter non-empty cid array

Signed-off-by: bkioshn <[email protected]>

* add sqlite3 to dockerfile

Signed-off-by: bkioshn <[email protected]>

* fix response cid format

Signed-off-by: bkioshn <[email protected]>

* add doc sync host log

Signed-off-by: bkioshn <[email protected]>

* add bidirectional-sync and late-join-sync

Signed-off-by: bkioshn <[email protected]>

* add readme

Signed-off-by: bkioshn <[email protected]>

* fix format

Signed-off-by: bkioshn <[email protected]>

* fix linter

Signed-off-by: bkioshn <[email protected]>

* use new implementation of add and get ipfs file

Signed-off-by: bkioshn <[email protected]>

* hermes-ipfs points to branch

Signed-off-by: bkioshn <[email protected]>

* add error to hermes-ipfs wit

Signed-off-by: bkioshn <[email protected]>

* move cbor encode logic

Signed-off-by: bkioshn <[email protected]>

* fix get_ipfs_file

Signed-off-by: bkioshn <[email protected]>

* fix syntax and format

Signed-off-by: bkioshn <[email protected]>

* update hermes-ipfs to 0.0.11

Signed-off-by: bkioshn <[email protected]>

* store cid as text

Signed-off-by: bkioshn <[email protected]>

* debug just

Signed-off-by: bkioshn <[email protected]>

* update function

Signed-off-by: bkioshn <[email protected]>

* Extract `process_broadcasted_cids()`

* Remove lint exceptions

* Update TODO message

* Extract `root` and `count` for reconciliation

* Scaffolding for sending the .syn payload

* Publishing the dummy payload to the `.syn` channel

* Add debug logs

* Pacify Clippy temporarily

* Fix the comment

* Fix connection visualisation

* Pass SMT down to the doc sync message handler

* Handle the incoming keepalive sync message

* Retrieving proper prefixes from the tree

* Simplify type

* Getting a proper SMT state for the payload

* Introduce `DocReconciliation` and `DocReconciliationData`

* Putting data into the Syn payload

* Add `peer_root` and `peer_count` to the syn payload

* Temporarily pass `None` as the receiver of the syn payload

* Subscribe to `.dif` channel when upon starting reconciliation

* Publish a message to `.syn`

* Clean-up

* Restore `process_broadcasted_cids()`

* Move `module_ids` into `TopicMessageContext`

* Clean-up log messages

* Do not fail if there is no data to clean

* Temporarily disable `subscribe_to_diff()`

* Wait until Athena is initialized

* Actually disable the `subscribe_to_diff()`

* Bump `hermes-ipfs`

* Bump `hermes-ipfs`

* Remove patch

* Remove stray todo

* Fix lints

* Fix lints

* Add missing docs

* Fix lints

* Rephrase log message

* Allow subscribing to topic from both `async` and `sync` contexts

* Update topic name

* Fix lints

---------

Signed-off-by: bkioshn <[email protected]>
Co-authored-by: cong-or <[email protected]>
Co-authored-by: bkioshn <[email protected]>
Co-authored-by: bkioshn <[email protected]>
feat(hermes): DocSync reconciliation - publishing the .syn payload (#762)
* fix(hermes): doc-sync P2P message format and subscription conflicts

  WHAT THIS FIXES:
  - CID format: Use dag-cbor codec (0x51) instead of dag-pb (0x70) for protocol compliance
  - Message encoding: Publish CBOR-encoded payload::New with CID lists instead of raw document bytes
  - Subscription conflict: Remove auto-subscription that prevented doc-sync module from subscribing

  CHANGES:
  - hermes/bin/src/runtime_extensions/hermes/doc_sync/host.rs:
    * Import minicbor crate directly (not via cardano_chain_follower)
    * Compute both dag-pb CID (storage) and dag-cbor CID (protocol) in add_file()
    * Construct proper payload::New structure in publish()
    * Encode to CBOR before publishing to PubSub

  - hermes/bin/src/ipfs/mod.rs:
    * Remove auto-subscription to documents.new during bootstrap
    * Prevents subscription kind conflicts with doc-sync module

  - hermes/bin/src/ipfs/task.rs:
    * Add extensive documentation of blocking operations issue
    * Document root cause and recommended async solution

  REMAINING ISSUE:
  P2P propagation still fails due to blocking operations in async context.
  The doc_sync_topic_message_handler (added in 944360f3) calls file_pin()
  and file_get() which use blocking_send()/blocking_recv(). This causes
  deadlock when called from async PubSub handler.

  NEXT STEPS:
  Convert file_pin() and file_get() to async versions. See detailed
  implementation guide in task.rs comments (lines 354-374).

  TEST:
  cd p2p-testing && just test-pubsub-propagation
  Currently FAILS with No Propagation due to blocking operations issue.
  Will PASS once async conversion is complete.

  Related: #691 (introduced blocking operations bug)

* fix(hermes): make doc-sync PubSub handler non-blocking with async file operations

  The doc_sync_topic_message_handler was blocking the PubSub event loop by using
  blocking_send/blocking_recv for IPFS file operations, preventing new messages
  from being processed while fetching content.

  Changes:
  - Add file_get_async() and file_pin_async() methods in ipfs/mod.rs that use
    send().await instead of blocking_send()
  - Update doc_sync_topic_message_handler() in ipfs/task.rs to spawn async task
    with tokio::spawn() for file operations
  - Add RECEIVED PubSub message with CID logging for test detection
  - Fix test-pubsub-propagation in p2p-testing/justfile to properly detect
    message reception using wc -l instead of grep -q

  Result:
  - PubSub handler no longer blocks - can process new messages while previous
    content is still being fetched
  - test-pubsub-propagation now passes with 100% success rate (5/5 nodes)
  - Resolves doc-sync P2P message propagation issue

* fix(hermes): make doc-sync PubSub handler non-blocking with async file operations

  The doc_sync_topic_message_handler was blocking the PubSub event loop by using
  blocking_send/blocking_recv for IPFS file operations, preventing new messages
  from being processed while fetching content.

  Changes:
  - Add file_get_async() and file_pin_async() methods in ipfs/mod.rs that use
    send().await instead of blocking_send()
  - Update doc_sync_topic_message_handler() in ipfs/task.rs to spawn async task
    with tokio::spawn() for file operations
  - Add RECEIVED PubSub message with CID logging for test detection
  - Fix test-pubsub-propagation in p2p-testing/justfile to properly detect
    message reception using wc -l instead of grep -q

  Result:
  - PubSub handler no longer blocks - can process new messages while previous
    content is still being fetched
  - test-pubsub-propagation now passes with 100% success rate (5/5 nodes)
  - Resolves doc-sync P2P message propagation issue

* fix(hermes): make doc-sync PubSub handler non-blocking with async file operations

  The doc_sync_topic_message_handler was blocking the PubSub event loop by using
  blocking_send/blocking_recv for IPFS file operations, preventing new messages
  from being processed while fetching content.

  Changes:
  - Add file_get_async() and file_pin_async() methods in ipfs/mod.rs that use
    send().await instead of blocking_send()
  - Update doc_sync_topic_message_handler() in ipfs/task.rs to spawn async task
    with tokio::spawn() for file operations
  - Add RECEIVED PubSub message with CID logging for test detection
  - Fix test-pubsub-propagation in p2p-testing/justfile to properly detect
    message reception using wc -l instead of grep -q

  Result:
  - PubSub handler no longer blocks - can process new messages while previous
    content is still being fetched
  - test-pubsub-propagation now passes with 100% success rate (5/5 nodes)
  - Resolves doc-sync P2P message propagation issue

* fix(hermes): make doc-sync PubSub handler non-blocking with async file operations

  The doc_sync_topic_message_handler was blocking the PubSub event loop by using
  blocking_send/blocking_recv for IPFS file operations, preventing new messages
  from being processed while fetching content.

  Changes:
  - Add file_get_async() and file_pin_async() methods in ipfs/mod.rs that use
    send().await instead of blocking_send()
  - Update doc_sync_topic_message_handler() in ipfs/task.rs to spawn async task
    with tokio::spawn() for file operations
  - Add RECEIVED PubSub message with CID logging for test detection
  - Fix test-pubsub-propagation in p2p-testing/justfile to properly detect
    message reception using wc -l instead of grep -q

  Result:
  - PubSub handler no longer blocks - can process new messages while previous
    content is still being fetched
  - test-pubsub-propagation now passes with 100% success rate (5/5 nodes)
  - Resolves doc-sync P2P message propagation issue

* fix(hermes): make doc-sync PubSub handler non-blocking with async file operations

  The doc_sync_topic_message_handler was blocking the PubSub event loop by using
  blocking_send/blocking_recv for IPFS file operations, preventing new messages
  from being processed while fetching content.

  Changes:
  - Add file_get_async() and file_pin_async() methods in ipfs/mod.rs that use
    send().await instead of blocking_send()
  - Update doc_sync_topic_message_handler() in ipfs/task.rs to spawn async task
    with tokio::spawn() for file operations
  - Add RECEIVED PubSub message with CID logging for test detection
  - Fix test-pubsub-propagation in p2p-testing/justfile to properly detect
    message reception using wc -l instead of grep -q

  Result:
  - PubSub handler no longer blocks - can process new messages while previous
    content is still being fetched
  - test-pubsub-propagation now passes with 100% success rate (5/5 nodes)
  - Resolves doc-sync P2P message propagation issue

* use type CID instead of string

Signed-off-by: bkioshn <[email protected]>

* small cleanup

Signed-off-by: bkioshn <[email protected]>

* reverts commit 7043008def62f76ffe75b9bd91350c2cb33f4808

Signed-off-by: bkioshn <[email protected]>

* change cid string to CID

Signed-off-by: bkioshn <[email protected]>

* change ipfs-cid type string to bstr

Signed-off-by: bkioshn <[email protected]>

* revert change

Signed-off-by: bkioshn <[email protected]>

* fix linter

Signed-off-by: bkioshn <[email protected]>

* cleanup task.rs and add comment about unixfs

Signed-off-by: bkioshn <[email protected]>

* cleanup

Signed-off-by: bkioshn <[email protected]>

* hack, add conversion

Signed-off-by: bkioshn <[email protected]>

* fix node 3 connection + log capture

Signed-off-by: bkioshn <[email protected]>

* add log necessary for test

Signed-off-by: bkioshn <[email protected]>

* revert peer docker config

Signed-off-by: bkioshn <[email protected]>

* fix linter

Signed-off-by: bkioshn <[email protected]>

* filter non-empty cid array

Signed-off-by: bkioshn <[email protected]>

* add sqlite3 to dockerfile

Signed-off-by: bkioshn <[email protected]>

* fix response cid format

Signed-off-by: bkioshn <[email protected]>

* add doc sync host log

Signed-off-by: bkioshn <[email protected]>

* add bidirectional-sync and late-join-sync

Signed-off-by: bkioshn <[email protected]>

* add readme

Signed-off-by: bkioshn <[email protected]>

* fix format

Signed-off-by: bkioshn <[email protected]>

* fix linter

Signed-off-by: bkioshn <[email protected]>

* use new implementation of add and get ipfs file

Signed-off-by: bkioshn <[email protected]>

* hermes-ipfs points to branch

Signed-off-by: bkioshn <[email protected]>

* add error to hermes-ipfs wit

Signed-off-by: bkioshn <[email protected]>

* move cbor encode logic

Signed-off-by: bkioshn <[email protected]>

* fix get_ipfs_file

Signed-off-by: bkioshn <[email protected]>

* fix syntax and format

Signed-off-by: bkioshn <[email protected]>

* update hermes-ipfs to 0.0.11

Signed-off-by: bkioshn <[email protected]>

* store cid as text

Signed-off-by: bkioshn <[email protected]>

* debug just

Signed-off-by: bkioshn <[email protected]>

* update function

Signed-off-by: bkioshn <[email protected]>

* Extract `process_broadcasted_cids()`

* Remove lint exceptions

* Update TODO message

* Extract `root` and `count` for reconciliation

* Scaffolding for sending the .syn payload

* Publishing the dummy payload to the `.syn` channel

* Add debug logs

* Pacify Clippy temporarily

* Fix the comment

* Fix connection visualisation

* Pass SMT down to the doc sync message handler

* Handle the incoming keepalive sync message

* Retrieving proper prefixes from the tree

* Simplify type

* Getting a proper SMT state for the payload

* Introduce `DocReconciliation` and `DocReconciliationData`

* Putting data into the Syn payload

* Add `peer_root` and `peer_count` to the syn payload

* Temporarily pass `None` as the receiver of the syn payload

* Subscribe to `.dif` channel when upon starting reconciliation

* Publish a message to `.syn`

* Clean-up

* Restore `process_broadcasted_cids()`

* Move `module_ids` into `TopicMessageContext`

* Clean-up log messages

* Do not fail if there is no data to clean

* Temporarily disable `subscribe_to_diff()`

* Wait until Athena is initialized

* Actually disable the `subscribe_to_diff()`

* Bump `hermes-ipfs`

* Bump `hermes-ipfs`

* Remove patch

* Remove stray todo

* Fix lints

* Fix lints

* Add missing docs

* Fix lints

* Rephrase log message

---------

Signed-off-by: bkioshn <[email protected]>
Co-authored-by: cong-or <[email protected]>
Co-authored-by: bkioshn <[email protected]>
Co-authored-by: bkioshn <[email protected]>