<commit_before>= Cirrocumulus

Cirrocumulus is an agent-based (cloud) infrastructure management system. Each agent, running on a host, is responsible for its own problem and cooperates with the rest via XMPP as a transport and FIPA-ACL messages as a protocol.

== Dependencies

Cirrocumulus uses Bundler for each agent's dependencies.
Among others, they depend on Sexpistol gem (for S-EXP parsing). This gem should be specially patched because of unconvenient handling of strings.

== Technical
=== Message structure

Each message is serialized in XML.
It contains routing information, action type and content. Content always is an s-expression.

Message structure looks like:
  <fipa-message
    receiver="optional receiving agent identifier"
    ontology="domain, e.g. cirrocumulus-vps, cirrocumulus-xen"
    act="request|query-ref|query-if|inform|failure">
    <content>
      (s-expression)
    </content>
  </fipa-message>

=== Action types<commit_msg>added action type details to README<commit_after>= Cirrocumulus

Cirrocumulus is an agent-based (cloud) infrastructure management system. Each agent, running on a host, is responsible for its own problem and cooperates with the rest via XMPP as a transport and FIPA-ACL messages as a protocol.

== Dependencies

Cirrocumulus uses Bundler for each agent's dependencies.
Among others, they depend on Sexpistol gem (for S-EXP parsing). This gem should be specially patched because of unconvenient handling of strings.

== Technical
=== Message structure

Each message is serialized in XML.
It contains routing information, action type and content. Content always is an s-expression.

Message structure looks like:
  <fipa-message
    receiver="optional receiving agent identifier"
    ontology="domain, e.g. cirrocumulus-vps, cirrocumulus-xen"
    act="request|query-ref|query-if|inform|failure">
    <content>
      (s-expression)
    </content>
  </fipa-message>

=== Action types
* request - asks receiver to perform some action, described in content
* query-ref - query receiver for some information
* query-if - asks receiver, if given proposition in content is true or false
{'fraction_non_alphanumeric': 0.07216494845360824, 'fraction_numerical': 0.0, 'mean_word_length': 4.460358056265985, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1293007', 'n_tokens_mistral': 582, 'n_tokens_neox': 571, 'n_words': 252}