From 1982a0ffd268049aa7f453629981e966a6555e08 Mon Sep 17 00:00:00 2001 From: It Apilium Date: Mon, 9 Mar 2026 12:20:06 +0100 Subject: [PATCH 1/5] refactor: rebrand AI crates and unify all versions to 0.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rename titans_memory → ineru (memory system) - Rename hope_agents → kaneru (agent framework) - Rename TitansMemory/TitansConfig → IneruMemory/IneruConfig - Rename HopeAgent/HopeConfig → KaneruAgent/KaneruConfig - Move crate::titans → crate::ineru in aingle_ai - Move crate::hope → crate::kaneru in aingle_ai - Bump all 13 main crates from 0.3.x to 0.4.0 - Update all internal dependency version specs - Standardize source file headers across all crates - Update docs, tutorials, templates, and CI workflows --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 8 +- CHANGELOG.md | 19 +- Cargo.lock | 152 +++++------ Cargo.toml | 4 +- LICENSE | 246 ++++-------------- LICENSE-APACHE | 190 ++++++++++++++ LICENSE-COMMERCIAL | 141 ++++++++++ NOTICE | 68 ++++- PATENTS | 81 ++++++ README.md | 36 ++- SECURITY.md | 48 ++++ crates/adk/Cargo.toml | 2 +- crates/adk/src/adk.rs | 3 + crates/adk/src/capability.rs | 3 + crates/adk/src/chain.rs | 3 + crates/adk/src/ed25519.rs | 3 + crates/adk/src/entry.rs | 3 + crates/adk/src/graph.rs | 3 + crates/adk/src/hash_path.rs | 3 + crates/adk/src/hash_path/anchor.rs | 3 + crates/adk/src/hash_path/path.rs | 3 + crates/adk/src/hash_path/shard.rs | 3 + crates/adk/src/info.rs | 3 + crates/adk/src/lib.rs | 3 + crates/adk/src/link.rs | 3 + crates/adk/src/map_extern.rs | 3 + crates/adk/src/memory.rs | 3 + crates/adk/src/p2p.rs | 3 + crates/adk/src/prelude.rs | 3 + crates/adk/src/random.rs | 3 + crates/adk/src/time.rs | 3 + crates/adk/src/trace.rs | 3 + crates/adk/src/x_salsa20_poly1305.rs | 3 + crates/adk_derive/Cargo.toml | 2 +- crates/adk_derive/src/lib.rs | 3 + crates/ai/Cargo.toml | 2 +- crates/ai/src/bin/ai.rs | 3 + crates/ai/src/lib.rs | 3 + crates/ai_bundle/Cargo.toml | 2 +- crates/ai_bundle/src/bin/ai-app.rs | 3 + crates/ai_bundle/src/bin/ai-saf.rs | 3 + crates/ai_bundle/src/cli.rs | 3 + crates/ai_bundle/src/error.rs | 3 + crates/ai_bundle/src/init.rs | 3 + crates/ai_bundle/src/lib.rs | 3 + crates/ai_bundle/src/packing.rs | 3 + crates/ai_bundle/tests/test_cli.rs | 3 + crates/ai_fixt/Cargo.toml | 2 +- crates/ai_fixt/src/bool.rs | 3 + crates/ai_fixt/src/bytes.rs | 3 + crates/ai_fixt/src/lib.rs | 3 + crates/ai_fixt/src/number.rs | 3 + crates/ai_fixt/src/prelude.rs | 3 + crates/ai_fixt/src/rng.rs | 3 + crates/ai_fixt/src/serialized_bytes.rs | 3 + crates/ai_fixt/src/string.rs | 3 + crates/ai_fixt/src/unit.rs | 3 + crates/ai_fixt/test/Cargo.toml | 2 +- crates/ai_fixt/test/src/lib.rs | 3 + crates/ai_hash/Cargo.toml | 4 +- crates/ai_hash/src/aliases.rs | 3 + crates/ai_hash/src/encode.rs | 3 + crates/ai_hash/src/encode_raw.rs | 3 + crates/ai_hash/src/error.rs | 3 + crates/ai_hash/src/fixt.rs | 3 + crates/ai_hash/src/has_hash.rs | 3 + crates/ai_hash/src/hash.rs | 3 + crates/ai_hash/src/hash_b64.rs | 3 + crates/ai_hash/src/hash_ext.rs | 3 + crates/ai_hash/src/hash_type.rs | 3 + crates/ai_hash/src/hash_type/composite.rs | 3 + crates/ai_hash/src/hash_type/primitive.rs | 3 + crates/ai_hash/src/hashable_content.rs | 3 + crates/ai_hash/src/hashed.rs | 3 + crates/ai_hash/src/lib.rs | 3 + crates/ai_hash/src/ser.rs | 3 + crates/ai_hash/src/tests.rs | 3 + crates/ai_sandbox/Cargo.toml | 2 +- crates/ai_sandbox/examples/setup_5.rs | 3 + crates/ai_sandbox/src/bin/ai-sandbox.rs | 3 + crates/ai_sandbox/src/bundles.rs | 3 + crates/ai_sandbox/src/calls.rs | 3 + crates/ai_sandbox/src/cli.rs | 3 + crates/ai_sandbox/src/cmds.rs | 3 + crates/ai_sandbox/src/config.rs | 3 + crates/ai_sandbox/src/generate.rs | 3 + crates/ai_sandbox/src/lib.rs | 3 + crates/ai_sandbox/src/ports.rs | 3 + crates/ai_sandbox/src/run.rs | 3 + crates/ai_sandbox/src/sandbox.rs | 3 + crates/ai_sandbox/src/save.rs | 3 + crates/ai_sandbox/tests/cli.rs | 3 + crates/aingle/Cargo.toml | 10 +- crates/aingle/benches/bench.rs | 3 + crates/aingle/benches/consistency.rs | 3 + crates/aingle/src/bin/aingle/main.rs | 3 + crates/aingle/src/conductor.rs | 3 + crates/aingle/src/conductor/ai_service.rs | 19 +- crates/aingle/src/conductor/api.rs | 3 + crates/aingle/src/conductor/api/api_cell.rs | 3 + .../aingle/src/conductor/api/api_external.rs | 3 + .../api/api_external/admin_interface.rs | 3 + .../api/api_external/app_interface.rs | 3 + crates/aingle/src/conductor/api/error.rs | 3 + crates/aingle/src/conductor/api/mock.rs | 3 + crates/aingle/src/conductor/cell.rs | 3 + crates/aingle/src/conductor/cell/error.rs | 3 + .../aingle/src/conductor/cell/gossip_test.rs | 3 + .../src/conductor/cell/op_query_test.rs | 3 + crates/aingle/src/conductor/cell/test.rs | 3 + .../src/conductor/cell/validation_package.rs | 3 + crates/aingle/src/conductor/conductor.rs | 3 + .../aingle/src/conductor/conductor/tests.rs | 3 + crates/aingle/src/conductor/config.rs | 3 + .../aingle/src/conductor/entry_def_store.rs | 3 + .../src/conductor/entry_def_store/error.rs | 3 + crates/aingle/src/conductor/error.rs | 3 + crates/aingle/src/conductor/handle.rs | 3 + crates/aingle/src/conductor/interactive.rs | 3 + crates/aingle/src/conductor/interface.rs | 3 + .../aingle/src/conductor/interface/error.rs | 3 + .../src/conductor/interface/websocket.rs | 3 + crates/aingle/src/conductor/logger.rs | 3 + crates/aingle/src/conductor/manager/error.rs | 3 + crates/aingle/src/conductor/manager/mod.rs | 3 + .../aingle/src/conductor/p2p_agent_store.rs | 3 + crates/aingle/src/conductor/p2p_metrics.rs | 3 + crates/aingle/src/conductor/paths.rs | 3 + crates/aingle/src/conductor/saf_store.rs | 3 + crates/aingle/src/conductor/state.rs | 3 + crates/aingle/src/core.rs | 3 + crates/aingle/src/core/queue_consumer.rs | 3 + .../queue_consumer/app_validation_consumer.rs | 3 + .../integrate_sgd_ops_consumer.rs | 3 + .../publish_sgd_ops_consumer.rs | 3 + .../queue_consumer/sys_validation_consumer.rs | 3 + .../validation_receipt_consumer.rs | 3 + crates/aingle/src/core/ribosome.rs | 3 + crates/aingle/src/core/ribosome/error.rs | 3 + .../src/core/ribosome/guest_callback.rs | 3 + .../ribosome/guest_callback/entry_defs.rs | 3 + .../guest_callback/genesis_self_check.rs | 3 + .../src/core/ribosome/guest_callback/init.rs | 3 + .../ribosome/guest_callback/migrate_agent.rs | 3 + .../ribosome/guest_callback/post_commit.rs | 3 + .../core/ribosome/guest_callback/validate.rs | 3 + .../ribosome/guest_callback/validate_link.rs | 3 + .../guest_callback/validation_package.rs | 3 + crates/aingle/src/core/ribosome/host_fn.rs | 3 + .../src/core/ribosome/host_fn/agent_info.rs | 3 + .../src/core/ribosome/host_fn/app_info.rs | 3 + .../aingle/src/core/ribosome/host_fn/call.rs | 3 + .../src/core/ribosome/host_fn/call_info.rs | 3 + .../src/core/ribosome/host_fn/call_remote.rs | 3 + .../ribosome/host_fn/capability_claims.rs | 3 + .../ribosome/host_fn/capability_grants.rs | 3 + .../core/ribosome/host_fn/capability_info.rs | 3 + .../src/core/ribosome/host_fn/create.rs | 3 + .../src/core/ribosome/host_fn/create_link.rs | 3 + .../ribosome/host_fn/create_x25519_keypair.rs | 3 + .../src/core/ribosome/host_fn/delete.rs | 3 + .../src/core/ribosome/host_fn/delete_link.rs | 3 + .../src/core/ribosome/host_fn/emit_signal.rs | 3 + .../aingle/src/core/ribosome/host_fn/get.rs | 3 + .../ribosome/host_fn/get_agent_activity.rs | 3 + .../src/core/ribosome/host_fn/get_details.rs | 3 + .../core/ribosome/host_fn/get_link_details.rs | 3 + .../src/core/ribosome/host_fn/get_links.rs | 3 + .../src/core/ribosome/host_fn/graph_query.rs | 3 + .../src/core/ribosome/host_fn/graph_store.rs | 3 + .../src/core/ribosome/host_fn/hash_entry.rs | 3 + .../core/ribosome/host_fn/memory_recall.rs | 3 + .../core/ribosome/host_fn/memory_remember.rs | 3 + .../aingle/src/core/ribosome/host_fn/query.rs | 3 + .../src/core/ribosome/host_fn/random_bytes.rs | 3 + .../core/ribosome/host_fn/remote_signal.rs | 3 + .../src/core/ribosome/host_fn/saf_info.rs | 3 + .../src/core/ribosome/host_fn/schedule.rs | 3 + .../aingle/src/core/ribosome/host_fn/sign.rs | 3 + .../core/ribosome/host_fn/sign_ephemeral.rs | 3 + .../aingle/src/core/ribosome/host_fn/sleep.rs | 3 + .../src/core/ribosome/host_fn/sys_time.rs | 3 + .../aingle/src/core/ribosome/host_fn/trace.rs | 3 + .../src/core/ribosome/host_fn/unreachable.rs | 3 + .../src/core/ribosome/host_fn/update.rs | 3 + .../core/ribosome/host_fn/verify_signature.rs | 3 + .../src/core/ribosome/host_fn/version.rs | 3 + .../x_25519_x_salsa20_poly1305_decrypt.rs | 3 + .../x_25519_x_salsa20_poly1305_encrypt.rs | 3 + .../host_fn/x_salsa20_poly1305_decrypt.rs | 3 + .../host_fn/x_salsa20_poly1305_encrypt.rs | 3 + .../src/core/ribosome/host_fn/zome_info.rs | 3 + .../src/core/ribosome/indirect_call_test.rs | 3 + .../aingle/src/core/ribosome/real_ribosome.rs | 3 + crates/aingle/src/core/sys_validate.rs | 3 + crates/aingle/src/core/sys_validate/error.rs | 3 + crates/aingle/src/core/sys_validate/tests.rs | 3 + crates/aingle/src/core/validation.rs | 3 + crates/aingle/src/core/workflow.rs | 3 + .../core/workflow/app_validation_workflow.rs | 3 + .../workflow/app_validation_workflow/error.rs | 3 + .../network_call_tests.rs | 3 + .../workflow/app_validation_workflow/tests.rs | 3 + .../workflow/app_validation_workflow/types.rs | 3 + .../validation_package.rs | 3 + .../src/core/workflow/call_zome_workflow.rs | 3 + .../call_zome_workflow/validation_test.rs | 3 + crates/aingle/src/core/workflow/error.rs | 3 + .../src/core/workflow/genesis_workflow.rs | 3 + .../workflow/incoming_sgd_ops_workflow.rs | 3 + .../incoming_sgd_ops_workflow/test.rs | 3 + .../workflow/initialize_zomes_workflow.rs | 3 + .../workflow/integrate_sgd_ops_workflow.rs | 3 + .../integrate_sgd_ops_workflow/query_tests.rs | 3 + .../integrate_sgd_ops_workflow/tests.rs | 3 + .../core/workflow/publish_sgd_ops_workflow.rs | 3 + .../publish_sgd_ops_workflow/publish_query.rs | 3 + .../core/workflow/sys_validation_workflow.rs | 3 + .../sys_validation_workflow/chain_test.rs | 3 + .../sys_validation_workflow/test_ideas.rs | 3 + .../workflow/sys_validation_workflow/tests.rs | 3 + .../workflow/sys_validation_workflow/types.rs | 3 + .../validation_query.rs | 3 + .../workflow/validation_receipt_workflow.rs | 3 + .../validation_receipt_workflow/tests.rs | 3 + crates/aingle/src/fixt.rs | 3 + crates/aingle/src/fixt/curve.rs | 3 + crates/aingle/src/lib.rs | 3 + crates/aingle/src/local_network_tests.rs | 3 + crates/aingle/src/perf.rs | 3 + crates/aingle/src/sweettest/mod.rs | 3 + crates/aingle/src/sweettest/sweet_agents.rs | 3 + crates/aingle/src/sweettest/sweet_app.rs | 3 + crates/aingle/src/sweettest/sweet_cell.rs | 3 + .../aingle/src/sweettest/sweet_conductor.rs | 3 + .../src/sweettest/sweet_conductor_batch.rs | 3 + .../src/sweettest/sweet_conductor_handle.rs | 3 + crates/aingle/src/sweettest/sweet_network.rs | 3 + crates/aingle/src/sweettest/sweet_saf.rs | 3 + crates/aingle/src/sweettest/sweet_zome.rs | 3 + crates/aingle/src/test_utils.rs | 3 + .../aingle/src/test_utils/conductor_setup.rs | 3 + .../aingle/src/test_utils/host_fn_caller.rs | 3 + .../test_utils/test_conductor/test_handle.rs | 3 + crates/aingle/src/test_utils/wait_for_any.rs | 3 + crates/aingle/tests/agent_scaling.rs | 3 + crates/aingle/tests/authored_test.rs | 3 + crates/aingle/tests/inline_zome_spec.rs | 3 + crates/aingle/tests/multi_conductor.rs | 3 + crates/aingle/tests/network_tests.rs | 3 + crates/aingle/tests/ser_regression.rs | 3 + crates/aingle/tests/sgd_arc.rs | 3 + crates/aingle/tests/speed_tests.rs | 3 + crates/aingle/tests/test_cli.rs | 3 + crates/aingle/tests/test_utils.rs | 3 + crates/aingle/tests/websocket.rs | 3 + crates/aingle_ai/Cargo.toml | 6 +- crates/aingle_ai/src/config.rs | 29 ++- .../src/emergent/adaptive_consensus.rs | 3 + crates/aingle_ai/src/emergent/mod.rs | 41 +-- .../src/emergent/predictive_validator.rs | 15 +- crates/aingle_ai/src/error.rs | 3 + .../aingle_ai/src/{titans => ineru}/config.rs | 27 +- .../src/{titans => ineru}/long_term.rs | 3 + crates/aingle_ai/src/{titans => ineru}/mod.rs | 49 ++-- .../src/{titans => ineru}/short_term.rs | 3 + .../src/{titans => ineru}/surprise_gate.rs | 5 +- .../aingle_ai/src/{hope => kaneru}/config.rs | 17 +- .../src/{hope => kaneru}/context_learner.rs | 3 + .../src/{hope => kaneru}/continuum_memory.rs | 3 + crates/aingle_ai/src/{hope => kaneru}/mod.rs | 47 ++-- .../src/{hope => kaneru}/reconfigurator.rs | 3 + .../src/{hope => kaneru}/self_modifier.rs | 11 +- crates/aingle_ai/src/lib.rs | 27 +- .../aingle_ai/src/nested_learning/config.rs | 3 + .../src/nested_learning/meta_level.rs | 3 + crates/aingle_ai/src/nested_learning/mod.rs | 3 + .../src/nested_learning/optimizer_level.rs | 3 + .../src/nested_learning/transaction_level.rs | 3 + crates/aingle_ai/src/types.rs | 3 + crates/aingle_cascade/Cargo.toml | 2 +- crates/aingle_cascade/src/agent_activity.rs | 3 + crates/aingle_cascade/src/authority.rs | 3 + .../src/authority/get_agent_activity_query.rs | 3 + .../get_agent_activity_query/deterministic.rs | 3 + .../get_agent_activity_query/hashes.rs | 3 + .../src/authority/get_element_query.rs | 3 + .../src/authority/get_entry_ops_query.rs | 3 + .../src/authority/get_links_ops_query.rs | 3 + crates/aingle_cascade/src/authority/test.rs | 3 + crates/aingle_cascade/src/error.rs | 3 + crates/aingle_cascade/src/lib.rs | 3 + crates/aingle_cascade/src/test_utils.rs | 3 + .../src/test_utils/activity_test_data.rs | 3 + .../src/test_utils/element_test_data.rs | 3 + .../src/test_utils/entry_test_data.rs | 3 + crates/aingle_cascade/tests/get_activity.rs | 3 + crates/aingle_cascade/tests/get_entry.rs | 3 + crates/aingle_cascade/tests/get_links.rs | 3 + crates/aingle_conductor_api/Cargo.toml | 2 +- .../src/admin_interface.rs | 3 + .../aingle_conductor_api/src/app_interface.rs | 3 + crates/aingle_conductor_api/src/config.rs | 3 + .../src/config/conductor.rs | 3 + .../conductor/admin_interface_config.rs | 3 + .../src/config/conductor/dpki_config.rs | 3 + .../src/config/conductor/error.rs | 3 + .../src/config/conductor/logger_config.rs | 3 + .../conductor/passphrase_service_config.rs | 3 + .../src/config/conductor/paths.rs | 3 + .../src/config/conductor/signal_config.rs | 3 + .../src/config/interface.rs | 3 + crates/aingle_conductor_api/src/lib.rs | 3 + .../src/signal_subscription.rs | 3 + crates/aingle_conductor_api/src/state_dump.rs | 3 + crates/aingle_contracts/Cargo.toml | 4 +- crates/aingle_contracts/src/contract.rs | 3 + crates/aingle_contracts/src/error.rs | 3 + crates/aingle_contracts/src/lib.rs | 3 + crates/aingle_contracts/src/runtime.rs | 3 + crates/aingle_contracts/src/storage.rs | 3 + crates/aingle_contracts/src/types.rs | 3 + crates/aingle_cortex/Cargo.toml | 12 +- crates/aingle_cortex/src/auth/jwt.rs | 3 + crates/aingle_cortex/src/auth/middleware.rs | 3 + crates/aingle_cortex/src/auth/mod.rs | 3 + crates/aingle_cortex/src/auth/users.rs | 3 + crates/aingle_cortex/src/client.rs | 3 + crates/aingle_cortex/src/error.rs | 3 + crates/aingle_cortex/src/graphql/mod.rs | 3 + crates/aingle_cortex/src/graphql/resolvers.rs | 3 + crates/aingle_cortex/src/graphql/schema.rs | 3 + .../src/graphql/subscriptions.rs | 3 + crates/aingle_cortex/src/lib.rs | 3 + crates/aingle_cortex/src/main.rs | 8 +- crates/aingle_cortex/src/middleware/mod.rs | 3 + .../aingle_cortex/src/middleware/namespace.rs | 3 + .../src/middleware/rate_limit.rs | 3 + crates/aingle_cortex/src/p2p/config.rs | 3 + crates/aingle_cortex/src/p2p/discovery.rs | 3 + crates/aingle_cortex/src/p2p/gossip.rs | 3 + crates/aingle_cortex/src/p2p/identity.rs | 3 + crates/aingle_cortex/src/p2p/manager.rs | 3 + crates/aingle_cortex/src/p2p/message.rs | 3 + crates/aingle_cortex/src/p2p/mod.rs | 3 + crates/aingle_cortex/src/p2p/peer_store.rs | 3 + crates/aingle_cortex/src/p2p/rate_limiter.rs | 3 + crates/aingle_cortex/src/p2p/sync_manager.rs | 3 + crates/aingle_cortex/src/p2p/transport.rs | 3 + crates/aingle_cortex/src/proofs/mod.rs | 3 + crates/aingle_cortex/src/proofs/store.rs | 3 + .../aingle_cortex/src/proofs/verification.rs | 3 + crates/aingle_cortex/src/rest/audit.rs | 3 + crates/aingle_cortex/src/rest/memory.rs | 13 +- crates/aingle_cortex/src/rest/mod.rs | 5 +- .../aingle_cortex/src/rest/observability.rs | 3 + crates/aingle_cortex/src/rest/p2p.rs | 3 + crates/aingle_cortex/src/rest/proof.rs | 3 + crates/aingle_cortex/src/rest/proof_api.rs | 3 + crates/aingle_cortex/src/rest/query.rs | 3 + crates/aingle_cortex/src/rest/reputation.rs | 3 + .../src/rest/skill_verification.rs | 3 + crates/aingle_cortex/src/rest/stats.rs | 3 + crates/aingle_cortex/src/rest/triples.rs | 3 + crates/aingle_cortex/src/server.rs | 3 + crates/aingle_cortex/src/sparql/executor.rs | 3 + crates/aingle_cortex/src/sparql/mod.rs | 3 + crates/aingle_cortex/src/sparql/parser.rs | 3 + crates/aingle_cortex/src/state.rs | 15 +- crates/aingle_cortex/src/wasm_types.rs | 3 + .../tests/graphql_subscriptions_test.rs | 3 + .../aingle_cortex/tests/proof_system_test.rs | 3 + .../aingle_cortex/tests/rate_limiting_test.rs | 3 + crates/aingle_graph/Cargo.toml | 4 +- crates/aingle_graph/benches/graph_bench.rs | 3 + crates/aingle_graph/src/backends/memory.rs | 3 + crates/aingle_graph/src/backends/mod.rs | 3 + crates/aingle_graph/src/backends/rocksdb.rs | 3 + crates/aingle_graph/src/backends/sled.rs | 3 + crates/aingle_graph/src/backends/sqlite.rs | 3 + crates/aingle_graph/src/error.rs | 3 + crates/aingle_graph/src/index.rs | 3 + crates/aingle_graph/src/lib.rs | 3 + crates/aingle_graph/src/node.rs | 3 + crates/aingle_graph/src/predicate.rs | 3 + crates/aingle_graph/src/query.rs | 3 + crates/aingle_graph/src/rdf/mod.rs | 3 + crates/aingle_graph/src/rdf/namespace.rs | 3 + crates/aingle_graph/src/rdf/parser.rs | 3 + crates/aingle_graph/src/rdf/serializer.rs | 3 + crates/aingle_graph/src/store.rs | 3 + crates/aingle_graph/src/triple.rs | 3 + crates/aingle_graph/src/value.rs | 3 + .../tests/graph_integration_tests.rs | 3 + crates/aingle_keystore/Cargo.toml | 2 +- .../aingle_keystore/src/agent_pubkey_ext.rs | 3 + .../src/crude_mock_keystore.rs | 3 + crates/aingle_keystore/src/error.rs | 3 + crates/aingle_keystore/src/keystore_actor.rs | 3 + crates/aingle_keystore/src/lair_keystore.rs | 3 + crates/aingle_keystore/src/lib.rs | 3 + crates/aingle_keystore/src/test_keystore.rs | 3 + crates/aingle_logic/Cargo.toml | 6 +- crates/aingle_logic/src/builtin.rs | 3 + crates/aingle_logic/src/engine.rs | 3 + crates/aingle_logic/src/error.rs | 3 + crates/aingle_logic/src/lib.rs | 3 + crates/aingle_logic/src/proof.rs | 3 + crates/aingle_logic/src/rule.rs | 3 + crates/aingle_logic/src/validator.rs | 3 + crates/aingle_minimal/Cargo.toml | 20 +- crates/aingle_minimal/README.md | 2 +- crates/aingle_minimal/benches/node_bench.rs | 3 + crates/aingle_minimal/src/bluetooth.rs | 3 + crates/aingle_minimal/src/coap.rs | 3 + crates/aingle_minimal/src/config.rs | 3 + crates/aingle_minimal/src/crypto.rs | 3 + crates/aingle_minimal/src/discovery.rs | 3 + crates/aingle_minimal/src/dtls.rs | 3 + crates/aingle_minimal/src/error.rs | 3 + crates/aingle_minimal/src/gossip.rs | 3 + crates/aingle_minimal/src/graph.rs | 3 + crates/aingle_minimal/src/lib.rs | 7 +- crates/aingle_minimal/src/main.rs | 7 +- crates/aingle_minimal/src/memory.rs | 27 +- crates/aingle_minimal/src/network.rs | 3 + crates/aingle_minimal/src/node.rs | 3 + crates/aingle_minimal/src/ota.rs | 3 + crates/aingle_minimal/src/power.rs | 3 + crates/aingle_minimal/src/quic.rs | 3 + crates/aingle_minimal/src/rest.rs | 3 + crates/aingle_minimal/src/rocks_storage.rs | 3 + crates/aingle_minimal/src/sensors.rs | 3 + crates/aingle_minimal/src/smart.rs | 39 +-- crates/aingle_minimal/src/storage.rs | 3 + crates/aingle_minimal/src/storage_factory.rs | 3 + crates/aingle_minimal/src/storage_trait.rs | 3 + crates/aingle_minimal/src/sync.rs | 3 + crates/aingle_minimal/src/types.rs | 3 + crates/aingle_minimal/src/wallet.rs | 3 + crates/aingle_minimal/src/webrtc.rs | 3 + .../tests/e2e_multi_node_tests.rs | 3 + .../tests/iot_integration_tests.rs | 3 + .../aingle_minimal/tests/p2p_network_tests.rs | 3 + .../tests/smart_node_integration_tests.rs | 13 +- .../tests/transport_integration_tests.rs | 3 + crates/aingle_p2p/Cargo.toml | 2 +- crates/aingle_p2p/src/lib.rs | 3 + crates/aingle_p2p/src/spawn.rs | 3 + crates/aingle_p2p/src/spawn/actor.rs | 3 + crates/aingle_p2p/src/test.rs | 3 + crates/aingle_p2p/src/types.rs | 3 + crates/aingle_p2p/src/types/actor.rs | 3 + crates/aingle_p2p/src/types/event.rs | 3 + crates/aingle_p2p/src/types/wire.rs | 3 + crates/aingle_sqlite/Cargo.toml | 2 +- crates/aingle_sqlite/src/conn.rs | 3 + .../aingle_sqlite/src/conn/singleton_conn.rs | 3 + crates/aingle_sqlite/src/db.rs | 3 + .../aingle_sqlite/src/db/p2p_agent_store.rs | 3 + .../src/db/p2p_agent_store/p2p_test.rs | 3 + crates/aingle_sqlite/src/db/p2p_metrics.rs | 3 + crates/aingle_sqlite/src/error.rs | 3 + crates/aingle_sqlite/src/exports.rs | 3 + crates/aingle_sqlite/src/fatal.rs | 3 + crates/aingle_sqlite/src/lib.rs | 3 + crates/aingle_sqlite/src/prelude.rs | 3 + crates/aingle_sqlite/src/schema.rs | 3 + crates/aingle_sqlite/src/schema/tables.rs | 3 + crates/aingle_sqlite/src/sql.rs | 3 + crates/aingle_sqlite/src/swansong.rs | 3 + crates/aingle_sqlite/src/table.rs | 3 + crates/aingle_sqlite/src/test_utils.rs | 3 + crates/aingle_state/Cargo.toml | 2 +- crates/aingle_state/src/entry_def.rs | 3 + crates/aingle_state/src/host_fn_workspace.rs | 3 + crates/aingle_state/src/lib.rs | 3 + crates/aingle_state/src/mutations.rs | 3 + crates/aingle_state/src/mutations/error.rs | 3 + crates/aingle_state/src/prelude.rs | 3 + crates/aingle_state/src/query.rs | 3 + crates/aingle_state/src/query/chain_head.rs | 3 + .../aingle_state/src/query/element_details.rs | 3 + .../aingle_state/src/query/entry_details.rs | 3 + crates/aingle_state/src/query/error.rs | 3 + crates/aingle_state/src/query/link.rs | 3 + crates/aingle_state/src/query/link_details.rs | 3 + crates/aingle_state/src/query/live_element.rs | 3 + .../src/query/live_element/test.rs | 3 + crates/aingle_state/src/query/live_entry.rs | 3 + .../aingle_state/src/query/live_entry/test.rs | 3 + crates/aingle_state/src/query/test_data.rs | 3 + crates/aingle_state/src/query/tests.rs | 3 + .../src/query/tests/chain_sequence.rs | 3 + .../src/query/tests/chain_test.rs | 3 + .../aingle_state/src/query/tests/details.rs | 3 + crates/aingle_state/src/query/tests/links.rs | 3 + .../src/query/tests/links_test.rs | 3 + crates/aingle_state/src/query/tests/store.rs | 3 + .../aingle_state/src/query/tests/sys_meta.rs | 3 + crates/aingle_state/src/saf_def.rs | 3 + crates/aingle_state/src/scratch.rs | 3 + crates/aingle_state/src/source_chain.rs | 3 + crates/aingle_state/src/source_chain/error.rs | 3 + crates/aingle_state/src/test_utils.rs | 3 + .../src/test_utils/mutations_helpers.rs | 3 + crates/aingle_state/src/validation_db.rs | 3 + .../aingle_state/src/validation_receipts.rs | 3 + crates/aingle_state/src/wasm.rs | 3 + crates/aingle_state/src/workspace.rs | 3 + crates/aingle_types/Cargo.toml | 2 +- crates/aingle_types/src/access.rs | 3 + crates/aingle_types/src/activity.rs | 3 + crates/aingle_types/src/app.rs | 3 + crates/aingle_types/src/app/app_bundle.rs | 3 + .../aingle_types/src/app/app_bundle/error.rs | 3 + .../aingle_types/src/app/app_bundle/tests.rs | 3 + crates/aingle_types/src/app/app_manifest.rs | 3 + .../src/app/app_manifest/app_manifest_v1.rs | 3 + .../app_manifest/app_manifest_validated.rs | 3 + .../src/app/app_manifest/current.rs | 3 + .../src/app/app_manifest/error.rs | 3 + crates/aingle_types/src/app/error.rs | 3 + crates/aingle_types/src/app/saf_gamut.rs | 3 + crates/aingle_types/src/autonomic.rs | 3 + crates/aingle_types/src/chain.rs | 3 + crates/aingle_types/src/db.rs | 3 + crates/aingle_types/src/element.rs | 3 + crates/aingle_types/src/element/error.rs | 3 + crates/aingle_types/src/entry.rs | 3 + crates/aingle_types/src/env.rs | 3 + crates/aingle_types/src/fixt.rs | 3 + crates/aingle_types/src/header.rs | 3 + crates/aingle_types/src/header/error.rs | 3 + crates/aingle_types/src/lib.rs | 3 + crates/aingle_types/src/link.rs | 3 + crates/aingle_types/src/macros.rs | 3 + crates/aingle_types/src/metadata.rs | 3 + crates/aingle_types/src/prelude.rs | 3 + crates/aingle_types/src/properties.rs | 3 + crates/aingle_types/src/saf.rs | 3 + crates/aingle_types/src/saf/error.rs | 3 + crates/aingle_types/src/saf/saf_bundle.rs | 3 + crates/aingle_types/src/saf/saf_file.rs | 3 + crates/aingle_types/src/saf/saf_manifest.rs | 3 + .../src/saf/saf_manifest/saf_manifest_v1.rs | 3 + crates/aingle_types/src/saf/saf_store.rs | 3 + crates/aingle_types/src/saf/wasm.rs | 3 + crates/aingle_types/src/sgd_op.rs | 3 + crates/aingle_types/src/sgd_op/error.rs | 3 + crates/aingle_types/src/sgd_op/tests.rs | 3 + crates/aingle_types/src/signal.rs | 3 + crates/aingle_types/src/test_utils.rs | 3 + crates/aingle_types/src/timestamp.rs | 3 + crates/aingle_types/src/validate.rs | 3 + crates/aingle_util/Cargo.toml | 2 +- crates/aingle_util/src/ffs/io_error.rs | 3 + crates/aingle_util/src/ffs/mod.rs | 3 + crates/aingle_util/src/lib.rs | 3 + crates/aingle_util/src/tokio_helper.rs | 3 + crates/aingle_viz/Cargo.toml | 8 +- crates/aingle_viz/src/api.rs | 3 + crates/aingle_viz/src/dag.rs | 3 + crates/aingle_viz/src/error.rs | 3 + crates/aingle_viz/src/events.rs | 3 + crates/aingle_viz/src/lib.rs | 3 + crates/aingle_viz/src/main.rs | 3 + crates/aingle_viz/src/server.rs | 3 + crates/aingle_websocket/Cargo.toml | 2 +- crates/aingle_websocket/benches/bench.rs | 3 + crates/aingle_websocket/examples/docs.rs | 3 + crates/aingle_websocket/examples/echo.rs | 3 + .../aingle_websocket/examples/echo_client.rs | 3 + .../aingle_websocket/examples/echo_server.rs | 3 + crates/aingle_websocket/src/error.rs | 3 + crates/aingle_websocket/src/lib.rs | 3 + crates/aingle_websocket/src/simple_actor.rs | 3 + crates/aingle_websocket/src/util.rs | 3 + crates/aingle_websocket/src/websocket.rs | 3 + .../aingle_websocket/src/websocket_config.rs | 3 + .../src/websocket_listener.rs | 3 + .../src/websocket_receiver.rs | 3 + .../aingle_websocket/src/websocket_sender.rs | 3 + crates/aingle_websocket/tests/integration.rs | 3 + crates/aingle_zk/Cargo.toml | 4 +- crates/aingle_zk/benches/full_benchmarks.rs | 3 + crates/aingle_zk/benches/zk_benchmarks.rs | 3 + .../aingle_zk/examples/batch_verification.rs | 3 + crates/aingle_zk/src/aggregation.rs | 3 + crates/aingle_zk/src/batch.rs | 3 + crates/aingle_zk/src/commitment.rs | 3 + crates/aingle_zk/src/error.rs | 3 + crates/aingle_zk/src/lib.rs | 3 + crates/aingle_zk/src/merkle.rs | 3 + crates/aingle_zk/src/proof.rs | 3 + crates/aingle_zk/src/range.rs | 3 + .../aingle_zk/tests/batch_integration_test.rs | 3 + crates/aingle_zome_types/Cargo.toml | 6 +- .../aingle_zome_types/src/agent_activity.rs | 3 + crates/aingle_zome_types/src/bytes.rs | 3 + crates/aingle_zome_types/src/call.rs | 3 + crates/aingle_zome_types/src/call_remote.rs | 3 + crates/aingle_zome_types/src/capability.rs | 3 + .../aingle_zome_types/src/capability/claim.rs | 3 + .../aingle_zome_types/src/capability/grant.rs | 3 + .../src/capability/secret.rs | 3 + crates/aingle_zome_types/src/cell.rs | 3 + crates/aingle_zome_types/src/crdt.rs | 3 + crates/aingle_zome_types/src/element.rs | 3 + crates/aingle_zome_types/src/entry.rs | 3 + .../src/entry/app_entry_bytes.rs | 3 + crates/aingle_zome_types/src/entry/error.rs | 3 + crates/aingle_zome_types/src/entry_def.rs | 3 + crates/aingle_zome_types/src/fixt.rs | 3 + crates/aingle_zome_types/src/genesis.rs | 3 + crates/aingle_zome_types/src/graph.rs | 3 + crates/aingle_zome_types/src/header.rs | 3 + .../aingle_zome_types/src/header/builder.rs | 3 + .../src/header/conversions.rs | 3 + crates/aingle_zome_types/src/info.rs | 3 + crates/aingle_zome_types/src/init.rs | 3 + crates/aingle_zome_types/src/judged.rs | 3 + crates/aingle_zome_types/src/lib.rs | 3 + crates/aingle_zome_types/src/link.rs | 3 + crates/aingle_zome_types/src/metadata.rs | 3 + crates/aingle_zome_types/src/migrate_agent.rs | 3 + crates/aingle_zome_types/src/post_commit.rs | 3 + crates/aingle_zome_types/src/prelude.rs | 3 + crates/aingle_zome_types/src/query.rs | 3 + crates/aingle_zome_types/src/request.rs | 3 + crates/aingle_zome_types/src/saf_def.rs | 3 + crates/aingle_zome_types/src/signal.rs | 3 + crates/aingle_zome_types/src/signature.rs | 3 + crates/aingle_zome_types/src/test_utils.rs | 3 + crates/aingle_zome_types/src/timestamp.rs | 3 + .../aingle_zome_types/src/timestamp/error.rs | 3 + crates/aingle_zome_types/src/trace.rs | 3 + crates/aingle_zome_types/src/validate.rs | 3 + crates/aingle_zome_types/src/validate_link.rs | 3 + crates/aingle_zome_types/src/version.rs | 3 + crates/aingle_zome_types/src/warrant.rs | 3 + .../src/x_salsa20_poly1305.rs | 3 + .../src/x_salsa20_poly1305/data.rs | 3 + .../src/x_salsa20_poly1305/encrypted_data.rs | 3 + .../src/x_salsa20_poly1305/key_ref.rs | 3 + .../src/x_salsa20_poly1305/nonce.rs | 3 + .../src/x_salsa20_poly1305/x25519.rs | 3 + crates/aingle_zome_types/src/zome.rs | 3 + crates/aingle_zome_types/src/zome/error.rs | 3 + .../aingle_zome_types/src/zome/inline_zome.rs | 3 + .../src/zome/inline_zome/error.rs | 3 + crates/aingle_zome_types/src/zome_info.rs | 3 + crates/aingle_zome_types/src/zome_io.rs | 3 + crates/{titans_memory => ineru}/Cargo.toml | 10 +- crates/{titans_memory => ineru}/README.md | 2 +- .../benches/memory_bench.rs | 23 +- crates/{titans_memory => ineru}/src/config.rs | 7 +- .../src/consolidation.rs | 3 + crates/{titans_memory => ineru}/src/error.rs | 7 +- crates/{titans_memory => ineru}/src/lib.rs | 71 ++--- crates/{titans_memory => ineru}/src/ltm.rs | 3 + crates/{titans_memory => ineru}/src/stm.rs | 3 + crates/{titans_memory => ineru}/src/types.rs | 5 +- .../COMPLETION_SUMMARY.md | 40 +-- crates/{hope_agents => kaneru}/Cargo.toml | 16 +- .../IMPLEMENTATION_SUMMARY.md | 52 ++-- .../KANERU_ORCHESTRATOR.md} | 38 +-- crates/{hope_agents => kaneru}/QUICK_START.md | 26 +- crates/{hope_agents => kaneru}/README.md | 4 +- .../README_KANERU_AGENT.md} | 50 ++-- .../benches/agent_bench.rs | 9 +- .../examples/complete_demo.rs | 27 +- .../examples/hierarchical_goals.rs | 5 +- .../examples/kaneru_orchestrator.rs} | 31 ++- crates/{hope_agents => kaneru}/src/action.rs | 49 ++-- crates/{hope_agents => kaneru}/src/agent.rs | 85 +++--- crates/{hope_agents => kaneru}/src/config.rs | 7 +- .../src/coordination.rs | 49 ++-- crates/{hope_agents => kaneru}/src/error.rs | 13 +- crates/{hope_agents => kaneru}/src/goal.rs | 5 +- .../src/hierarchical/README.md | 18 +- .../src/hierarchical/decomposition.rs | 3 + .../src/hierarchical/goal_solver.rs | 3 + .../src/hierarchical/mod.rs | 5 +- .../src/hierarchical/tests.rs | 3 + .../src/kaneru_agent.rs} | 61 ++--- .../src/learning/engine.rs | 7 +- .../src/learning/mod.rs | 9 +- .../src/learning/value_function.rs | 5 +- crates/{hope_agents => kaneru}/src/lib.rs | 43 +-- crates/{hope_agents => kaneru}/src/memory.rs | 33 +-- .../src/observation.rs | 57 ++-- .../src/persistence.rs | 59 +++-- crates/{hope_agents => kaneru}/src/policy.rs | 5 +- .../src/predictive/anomaly.rs | 5 +- .../src/predictive/mod.rs | 9 +- .../src/predictive/model.rs | 5 +- .../src/predictive/transition.rs | 3 + crates/{hope_agents => kaneru}/src/types.rs | 5 +- .../tests/agent_persistence_tests.rs | 9 +- .../tests/integration_test.rs | 49 ++-- .../tests/integration_tests.rs | 9 +- crates/kitsune_p2p/bootstrap/Cargo.toml | 2 +- crates/kitsune_p2p/bootstrap/benches/bench.rs | 3 + crates/kitsune_p2p/bootstrap/src/clear.rs | 3 + crates/kitsune_p2p/bootstrap/src/lib.rs | 3 + crates/kitsune_p2p/bootstrap/src/main.rs | 3 + crates/kitsune_p2p/bootstrap/src/now.rs | 3 + crates/kitsune_p2p/bootstrap/src/put.rs | 3 + crates/kitsune_p2p/bootstrap/src/random.rs | 3 + crates/kitsune_p2p/bootstrap/src/store.rs | 3 + crates/kitsune_p2p/direct/Cargo.toml | 2 +- .../kitsune_p2p/direct/examples/srv-echo.rs | 3 + .../kitsune_p2p/direct/src/bin/kd/cmd_node.rs | 3 + .../direct/src/bin/kd/cmd_proxy.rs | 3 + crates/kitsune_p2p/direct/src/bin/kd/main.rs | 3 + crates/kitsune_p2p/direct/src/handle_ws.rs | 3 + crates/kitsune_p2p/direct/src/lib.rs | 3 + crates/kitsune_p2p/direct/src/persist_mem.rs | 3 + crates/kitsune_p2p/direct/src/srv.rs | 3 + crates/kitsune_p2p/direct/src/test.rs | 3 + crates/kitsune_p2p/direct/src/types.rs | 3 + crates/kitsune_p2p/direct/src/types/direct.rs | 3 + crates/kitsune_p2p/direct/src/types/handle.rs | 3 + .../kitsune_p2p/direct/src/types/kdagent.rs | 3 + .../kitsune_p2p/direct/src/types/kdentry.rs | 3 + crates/kitsune_p2p/direct/src/types/kdhash.rs | 3 + .../direct/src/types/metric_store.rs | 3 + .../kitsune_p2p/direct/src/types/persist.rs | 3 + crates/kitsune_p2p/direct/src/types/srv.rs | 3 + crates/kitsune_p2p/direct/src/v1.rs | 3 + crates/kitsune_p2p/direct_api/Cargo.toml | 2 +- .../kitsune_p2p/direct_api/src/kd_sys_kind.rs | 3 + crates/kitsune_p2p/direct_api/src/kdagent.rs | 3 + crates/kitsune_p2p/direct_api/src/kdapi.rs | 3 + crates/kitsune_p2p/direct_api/src/kdentry.rs | 3 + crates/kitsune_p2p/direct_api/src/kderror.rs | 3 + crates/kitsune_p2p/direct_api/src/kdhash.rs | 3 + crates/kitsune_p2p/direct_api/src/lib.rs | 3 + crates/kitsune_p2p/direct_test/Cargo.toml | 2 +- .../src/bin/direct-test-local-periodic.rs | 3 + crates/kitsune_p2p/direct_test/src/lib.rs | 3 + crates/kitsune_p2p/kitsune_p2p/Cargo.toml | 2 +- crates/kitsune_p2p/kitsune_p2p/src/config.rs | 3 + crates/kitsune_p2p/kitsune_p2p/src/fixt.rs | 3 + crates/kitsune_p2p/kitsune_p2p/src/gossip.rs | 3 + .../kitsune_p2p/src/gossip/simple_bloom.rs | 3 + .../gossip/simple_bloom/step_1_check_inner.rs | 3 + .../simple_bloom/step_2_local_sync_inner.rs | 3 + .../simple_bloom/step_3_initiate_inner.rs | 3 + .../simple_bloom/step_4_com_loop_inner.rs | 3 + crates/kitsune_p2p/kitsune_p2p/src/lib.rs | 3 + crates/kitsune_p2p/kitsune_p2p/src/spawn.rs | 3 + .../kitsune_p2p/src/spawn/actor.rs | 3 + .../kitsune_p2p/src/spawn/actor/bootstrap.rs | 3 + .../kitsune_p2p/src/spawn/actor/discover.rs | 3 + .../kitsune_p2p/src/spawn/actor/space.rs | 3 + crates/kitsune_p2p/kitsune_p2p/src/test.rs | 3 + .../kitsune_p2p/kitsune_p2p/src/test_util.rs | 3 + .../src/test_util/harness_actor.rs | 3 + .../src/test_util/harness_agent.rs | 3 + .../src/test_util/harness_event.rs | 3 + .../kitsune_p2p/src/test_util/metric_store.rs | 3 + crates/kitsune_p2p/kitsune_p2p/src/types.rs | 3 + .../kitsune_p2p/src/types/actor.rs | 3 + .../kitsune_p2p/src/types/event.rs | 3 + .../kitsune_p2p/src/types/gossip.rs | 3 + .../kitsune_p2p/src/types/metrics.rs | 3 + .../kitsune_p2p/kitsune_p2p/src/types/wire.rs | 3 + crates/kitsune_p2p/mdns/Cargo.toml | 2 +- crates/kitsune_p2p/mdns/examples/broadcast.rs | 3 + crates/kitsune_p2p/mdns/examples/discover.rs | 3 + crates/kitsune_p2p/mdns/src/lib.rs | 3 + crates/kitsune_p2p/proxy/Cargo.toml | 2 +- .../proxy/benches/old_proxy_thru.rs | 3 + crates/kitsune_p2p/proxy/benches/thru.rs | 3 + crates/kitsune_p2p/proxy/examples/cli-chat.rs | 3 + .../proxy/src/bin/kitsune-p2p-proxy/main.rs | 3 + .../proxy/src/bin/kitsune-p2p-proxy/opt.rs | 3 + .../proxy/src/bin/kitsune-p2p-tx2-proxy.rs | 3 + crates/kitsune_p2p/proxy/src/bin/proxy-cli.rs | 3 + .../kitsune_p2p/proxy/src/bin/proxy-stress.rs | 3 + .../proxy/src/bin/proxy-tx2-cli.rs | 3 + crates/kitsune_p2p/proxy/src/config.rs | 3 + crates/kitsune_p2p/proxy/src/inner_listen.rs | 3 + crates/kitsune_p2p/proxy/src/lib.rs | 3 + crates/kitsune_p2p/proxy/src/proxy_url.rs | 3 + crates/kitsune_p2p/proxy/src/tls_cli.rs | 3 + crates/kitsune_p2p/proxy/src/tls_srv.rs | 3 + crates/kitsune_p2p/proxy/src/tls_tests.rs | 3 + crates/kitsune_p2p/proxy/src/tx2.rs | 3 + crates/kitsune_p2p/proxy/src/wire.rs | 3 + crates/kitsune_p2p/proxy/src/wire_read.rs | 3 + crates/kitsune_p2p/proxy/src/wire_write.rs | 3 + crates/kitsune_p2p/proxy/tests/no_proxy.rs | 3 + .../proxy/tests/proxy_integration.rs | 3 + .../proxy/tests/srv_cli_dump_test.rs | 3 + .../proxy/tests/tx2_con_up_down.rs | 3 + crates/kitsune_p2p/transport_quic/Cargo.toml | 2 +- .../kitsune_p2p/transport_quic/src/config.rs | 3 + crates/kitsune_p2p/transport_quic/src/lib.rs | 3 + .../transport_quic/src/listener.rs | 3 + crates/kitsune_p2p/transport_quic/src/test.rs | 3 + crates/kitsune_p2p/transport_quic/src/tx2.rs | 3 + crates/kitsune_p2p/types/Cargo.toml | 2 +- crates/kitsune_p2p/types/benches/api_thru.rs | 3 + crates/kitsune_p2p/types/examples/codec.rs | 3 + crates/kitsune_p2p/types/src/agent_info.rs | 3 + crates/kitsune_p2p/types/src/async_lazy.rs | 3 + .../types/src/auto_stream_select.rs | 3 + crates/kitsune_p2p/types/src/bin_types.rs | 3 + crates/kitsune_p2p/types/src/bootstrap.rs | 3 + crates/kitsune_p2p/types/src/codec.rs | 3 + crates/kitsune_p2p/types/src/config.rs | 3 + crates/kitsune_p2p/types/src/lib.rs | 3 + crates/kitsune_p2p/types/src/metrics.rs | 3 + crates/kitsune_p2p/types/src/sgd_arc.rs | 3 + crates/kitsune_p2p/types/src/sgd_arc/gaps.rs | 3 + crates/kitsune_p2p/types/src/sgd_arc/tests.rs | 3 + crates/kitsune_p2p/types/src/timeout.rs | 3 + crates/kitsune_p2p/types/src/tls.rs | 3 + crates/kitsune_p2p/types/src/transport.rs | 3 + crates/kitsune_p2p/types/src/transport_mem.rs | 3 + .../kitsune_p2p/types/src/transport_pool.rs | 3 + crates/kitsune_p2p/types/src/tx2.rs | 3 + crates/kitsune_p2p/types/src/tx2/framed.rs | 3 + crates/kitsune_p2p/types/src/tx2/mem.rs | 3 + .../kitsune_p2p/types/src/tx2/tx2_adapter.rs | 3 + crates/kitsune_p2p/types/src/tx2/tx2_api.rs | 3 + crates/kitsune_p2p/types/src/tx2/tx2_pool.rs | 3 + .../types/src/tx2/tx2_pool_promote.rs | 3 + crates/kitsune_p2p/types/src/tx2/tx2_utils.rs | 3 + .../types/src/tx2/tx2_utils/active.rs | 3 + .../types/src/tx2/tx2_utils/latency.rs | 3 + .../types/src/tx2/tx2_utils/logic_chan.rs | 3 + .../types/src/tx2/tx2_utils/mem_chan.rs | 3 + .../types/src/tx2/tx2_utils/notify_all.rs | 3 + .../types/src/tx2/tx2_utils/pool_buf.rs | 3 + .../src/tx2/tx2_utils/resource_bucket.rs | 3 + .../types/src/tx2/tx2_utils/share.rs | 3 + .../types/src/tx2/tx2_utils/t_chan.rs | 3 + .../types/src/tx2/tx2_utils/tx_url.rs | 3 + crates/mr_bundle/Cargo.toml | 2 +- crates/mr_bundle/src/bundle.rs | 3 + crates/mr_bundle/src/encoding.rs | 3 + crates/mr_bundle/src/error.rs | 3 + crates/mr_bundle/src/lib.rs | 3 + crates/mr_bundle/src/location.rs | 3 + crates/mr_bundle/src/manifest.rs | 3 + crates/mr_bundle/src/packing.rs | 3 + crates/mr_bundle/src/resource.rs | 3 + crates/mr_bundle/src/util.rs | 3 + crates/mr_bundle/tests/integration.rs | 3 + crates/test_utils/wasm/Cargo.toml | 2 +- crates/test_utils/wasm/build.rs | 3 + crates/test_utils/wasm/src/lib.rs | 3 + .../wasm/wasm_workspace/adk_extern/src/lib.rs | 3 + .../wasm/wasm_workspace/agent_info/src/lib.rs | 3 + .../wasm/wasm_workspace/anchor/src/lib.rs | 3 + .../wasm/wasm_workspace/bench/src/lib.rs | 3 + .../wasm/wasm_workspace/capability/src/lib.rs | 3 + .../wasm/wasm_workspace/crd/src/lib.rs | 3 + .../wasm_workspace/create_entry/src/lib.rs | 3 + .../wasm/wasm_workspace/crud/src/countree.rs | 3 + .../wasm/wasm_workspace/crud/src/lib.rs | 3 + .../wasm/wasm_workspace/debug/src/lib.rs | 3 + .../wasm_workspace/emit_signal/src/lib.rs | 3 + .../wasm/wasm_workspace/entry_defs/src/lib.rs | 3 + .../wasm/wasm_workspace/foo/src/lib.rs | 3 + .../genesis_self_check_invalid/src/lib.rs | 3 + .../genesis_self_check_valid/src/lib.rs | 3 + .../wasm/wasm_workspace/hash_entry/src/lib.rs | 3 + .../wasm/wasm_workspace/hash_path/src/lib.rs | 3 + .../wasm/wasm_workspace/init_fail/src/lib.rs | 3 + .../wasm/wasm_workspace/init_pass/src/lib.rs | 3 + .../wasm/wasm_workspace/link/src/lib.rs | 3 + .../migrate_agent_fail/src/lib.rs | 3 + .../migrate_agent_pass/src/lib.rs | 3 + .../wasm_workspace/multiple_calls/src/lib.rs | 3 + .../post_commit_fail/src/lib.rs | 3 + .../post_commit_success/src/lib.rs | 3 + .../wasm/wasm_workspace/query/src/lib.rs | 3 + .../wasm_workspace/random_bytes/src/lib.rs | 3 + .../wasm_workspace/ser_regression/src/lib.rs | 3 + .../wasm/wasm_workspace/sign/src/lib.rs | 3 + .../wasm/wasm_workspace/sys_time/src/lib.rs | 3 + .../wasm_workspace/update_entry/src/lib.rs | 3 + .../wasm/wasm_workspace/validate/src/lib.rs | 3 + .../validate_invalid/src/lib.rs | 3 + .../wasm_workspace/validate_link/src/lib.rs | 3 + .../validate_link_add_invalid/src/lib.rs | 3 + .../validate_link_add_valid/src/lib.rs | 3 + .../wasm_workspace/validate_valid/src/lib.rs | 3 + .../validation_package_fail/src/lib.rs | 3 + .../validation_package_success/src/lib.rs | 3 + .../wasm/wasm_workspace/whoami/src/lib.rs | 3 + .../x_salsa20_poly1305/src/lib.rs | 3 + .../wasm/wasm_workspace/zome_info/src/lib.rs | 3 + crates/test_utils/wasm_common/Cargo.toml | 2 +- crates/test_utils/wasm_common/src/lib.rs | 3 + docs/PROJECT_STATE.md | 14 +- docs/api/{hope_agents.md => kaneru.md} | 8 +- docs/api/smart_node.md | 12 +- docs/architecture/overview.md | 8 +- docs/tutorials/README.md | 8 +- docs/tutorials/ai-powered-app.md | 52 ++-- docs/tutorials/dag-visualization.md | 2 +- docs/tutorials/es/README.md | 6 +- docs/tutorials/es/ai-powered-app.md | 52 ++-- docs/tutorials/es/dag-visualization.md | 2 +- docs/tutorials/es/getting-started.md | 2 +- docs/tutorials/es/iot-sensor-app.md | 10 +- docs/tutorials/es/semantic-graph.md | 2 +- docs/tutorials/es/smart-contracts.md | 2 +- docs/tutorials/getting-started.md | 2 +- docs/tutorials/iot-sensor-app.md | 10 +- docs/tutorials/semantic-graph.md | 2 +- docs/tutorials/smart-contracts.md | 2 +- examples/ai_autonomous_agent/Cargo.toml | 6 +- examples/ai_autonomous_agent/src/main.rs | 6 +- templates/README.md | 24 +- templates/ai-agent/Cargo.toml | 2 +- templates/ai-agent/src/lib.rs | 8 +- 924 files changed, 4055 insertions(+), 1130 deletions(-) create mode 100644 LICENSE-APACHE create mode 100644 LICENSE-COMMERCIAL create mode 100644 PATENTS create mode 100644 SECURITY.md rename crates/aingle_ai/src/{titans => ineru}/config.rs (87%) rename crates/aingle_ai/src/{titans => ineru}/long_term.rs (98%) rename crates/aingle_ai/src/{titans => ineru}/mod.rs (90%) rename crates/aingle_ai/src/{titans => ineru}/short_term.rs (98%) rename crates/aingle_ai/src/{titans => ineru}/surprise_gate.rs (97%) rename crates/aingle_ai/src/{hope => kaneru}/config.rs (90%) rename crates/aingle_ai/src/{hope => kaneru}/context_learner.rs (97%) rename crates/aingle_ai/src/{hope => kaneru}/continuum_memory.rs (98%) rename crates/aingle_ai/src/{hope => kaneru}/mod.rs (91%) rename crates/aingle_ai/src/{hope => kaneru}/reconfigurator.rs (97%) rename crates/aingle_ai/src/{hope => kaneru}/self_modifier.rs (97%) rename crates/{titans_memory => ineru}/Cargo.toml (84%) rename crates/{titans_memory => ineru}/README.md (98%) rename crates/{titans_memory => ineru}/benches/memory_bench.rs (91%) rename crates/{titans_memory => ineru}/src/config.rs (97%) rename crates/{titans_memory => ineru}/src/consolidation.rs (99%) rename crates/{titans_memory => ineru}/src/error.rs (93%) rename crates/{titans_memory => ineru}/src/lib.rs (91%) rename crates/{titans_memory => ineru}/src/ltm.rs (99%) rename crates/{titans_memory => ineru}/src/stm.rs (99%) rename crates/{titans_memory => ineru}/src/types.rs (99%) rename crates/{hope_agents => kaneru}/COMPLETION_SUMMARY.md (87%) rename crates/{hope_agents => kaneru}/Cargo.toml (72%) rename crates/{hope_agents => kaneru}/IMPLEMENTATION_SUMMARY.md (86%) rename crates/{hope_agents/HOPE_ORCHESTRATOR.md => kaneru/KANERU_ORCHESTRATOR.md} (92%) rename crates/{hope_agents => kaneru}/QUICK_START.md (91%) rename crates/{hope_agents => kaneru}/README.md (83%) rename crates/{hope_agents/README_HOPE_AGENT.md => kaneru/README_KANERU_AGENT.md} (73%) rename crates/{hope_agents => kaneru}/benches/agent_bench.rs (96%) rename crates/{hope_agents => kaneru}/examples/complete_demo.rs (92%) rename crates/{hope_agents => kaneru}/examples/hierarchical_goals.rs (97%) rename crates/{hope_agents/examples/hope_orchestrator.rs => kaneru/examples/kaneru_orchestrator.rs} (92%) rename crates/{hope_agents => kaneru}/src/action.rs (95%) rename crates/{hope_agents => kaneru}/src/agent.rs (93%) rename crates/{hope_agents => kaneru}/src/config.rs (95%) rename crates/{hope_agents => kaneru}/src/coordination.rs (94%) rename crates/{hope_agents => kaneru}/src/error.rs (93%) rename crates/{hope_agents => kaneru}/src/goal.rs (99%) rename crates/{hope_agents => kaneru}/src/hierarchical/README.md (93%) rename crates/{hope_agents => kaneru}/src/hierarchical/decomposition.rs (99%) rename crates/{hope_agents => kaneru}/src/hierarchical/goal_solver.rs (99%) rename crates/{hope_agents => kaneru}/src/hierarchical/mod.rs (65%) rename crates/{hope_agents => kaneru}/src/hierarchical/tests.rs (98%) rename crates/{hope_agents/src/hope_agent.rs => kaneru/src/kaneru_agent.rs} (94%) rename crates/{hope_agents => kaneru}/src/learning/engine.rs (98%) rename crates/{hope_agents => kaneru}/src/learning/mod.rs (91%) rename crates/{hope_agents => kaneru}/src/learning/value_function.rs (98%) rename crates/{hope_agents => kaneru}/src/lib.rs (87%) rename crates/{hope_agents => kaneru}/src/memory.rs (87%) rename crates/{hope_agents => kaneru}/src/observation.rs (95%) rename crates/{hope_agents => kaneru}/src/persistence.rs (91%) rename crates/{hope_agents => kaneru}/src/policy.rs (99%) rename crates/{hope_agents => kaneru}/src/predictive/anomaly.rs (98%) rename crates/{hope_agents => kaneru}/src/predictive/mod.rs (81%) rename crates/{hope_agents => kaneru}/src/predictive/model.rs (98%) rename crates/{hope_agents => kaneru}/src/predictive/transition.rs (98%) rename crates/{hope_agents => kaneru}/src/types.rs (98%) rename crates/{hope_agents => kaneru}/tests/agent_persistence_tests.rs (96%) rename crates/{hope_agents => kaneru}/tests/integration_test.rs (90%) rename crates/{hope_agents => kaneru}/tests/integration_tests.rs (96%) rename docs/api/{hope_agents.md => kaneru.md} (97%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e23ab1b..4dd3548 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -195,7 +195,7 @@ jobs: - name: Test aingle_minimal with all transports run: cargo test -p aingle_minimal --features "sqlite,coap,quic,webrtc,rest" - # Note: Other crates (aingle_graph, hope_agents, titans_memory, etc.) + # Note: Other crates (aingle_graph, kaneru, ineru, etc.) # will be added to CI once they pass all checks independently # Security audit for dependencies diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3d4adac..911f2b9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -179,8 +179,8 @@ jobs: run: cargo publish -p aingle_zk --token ${{ secrets.CARGO_REGISTRY_TOKEN }} continue-on-error: true - - name: Publish titans_memory - run: cargo publish -p titans_memory --token ${{ secrets.CARGO_REGISTRY_TOKEN }} + - name: Publish ineru + run: cargo publish -p ineru --token ${{ secrets.CARGO_REGISTRY_TOKEN }} continue-on-error: true - name: Publish aingle_ai @@ -203,8 +203,8 @@ jobs: run: cargo publish -p aingle_logic --token ${{ secrets.CARGO_REGISTRY_TOKEN }} continue-on-error: true - - name: Publish hope_agents - run: cargo publish -p hope_agents --token ${{ secrets.CARGO_REGISTRY_TOKEN }} + - name: Publish kaneru + run: cargo publish -p kaneru --token ${{ secrets.CARGO_REGISTRY_TOKEN }} continue-on-error: true - name: Wait for crates.io index update diff --git a/CHANGELOG.md b/CHANGELOG.md index c122360..c8ef173 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.4.0] - 2026-03-09 + +### Changed +- Rename `titans_memory` crate to `ineru` — Ineru neural-inspired memory system +- Rename `hope_agents` crate to `kaneru` — Kaneru multi-agent execution system +- Rename `TitansMemory` → `IneruMemory`, `TitansConfig` → `IneruConfig` +- Rename `HopeAgent` → `KaneruAgent`, `HopeConfig` → `KaneruConfig` +- Move `crate::titans` module to `crate::ineru` in `aingle_ai` +- Move `crate::hope` module to `crate::kaneru` in `aingle_ai` +- Bump all main crate versions to 0.4.0 (unified version scheme) +- Update all internal dependency version specs to match +- Standardize copyright headers and license metadata across all crates + ## [0.1.0] - 2024-12-17 ### Technical Requirements @@ -43,9 +56,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Anonymous credentials #### AI & Machine Learning -- `aingle_ai` - AI integration layer (Titans Memory architecture) -- `titans_memory` - Neural-inspired memory system (STM/LTM) -- `hope_agents` - HOPE Agent framework +- `aingle_ai` - AI integration layer (Ineru architecture) +- `ineru` - Ineru neural-inspired memory system (STM/LTM) +- `kaneru` - Kaneru agent framework - Q-Learning - DQN (Deep Q-Network) - PPO (Proximal Policy Optimization) diff --git a/Cargo.lock b/Cargo.lock index c371bf1..5f7192d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -77,16 +77,16 @@ dependencies = [ name = "ai_autonomous_agent" version = "0.1.0" dependencies = [ - "hope_agents", + "ineru", + "kaneru", "rand 0.9.2", "serde", "serde_json", - "titans_memory", ] [[package]] name = "aingle_ai" -version = "0.3.8" +version = "0.4.0" dependencies = [ "blake2", "candle-core 0.9.2", @@ -108,7 +108,7 @@ dependencies = [ [[package]] name = "aingle_contracts" -version = "0.3.8" +version = "0.4.0" dependencies = [ "blake3", "dashmap 6.1.0", @@ -127,7 +127,7 @@ dependencies = [ [[package]] name = "aingle_cortex" -version = "0.3.8" +version = "0.4.0" dependencies = [ "aingle_graph", "aingle_logic", @@ -144,6 +144,7 @@ dependencies = [ "futures", "hex", "if-addrs 0.13.4", + "ineru", "jsonwebtoken", "log", "mdns-sd", @@ -159,7 +160,6 @@ dependencies = [ "spargebra", "tempfile", "thiserror 2.0.18", - "titans_memory", "tokio", "tokio-stream", "tokio-test", @@ -173,7 +173,7 @@ dependencies = [ [[package]] name = "aingle_graph" -version = "0.3.8" +version = "0.4.0" dependencies = [ "bincode", "blake3", @@ -194,7 +194,7 @@ dependencies = [ [[package]] name = "aingle_logic" -version = "0.3.8" +version = "0.4.0" dependencies = [ "aingle_graph", "chrono", @@ -210,7 +210,7 @@ dependencies = [ [[package]] name = "aingle_minimal" -version = "0.3.8" +version = "0.4.0" dependencies = [ "async-io", "async-tungstenite", @@ -228,8 +228,9 @@ dependencies = [ "esp32-nimble", "futures-util", "hex", - "hope_agents", "if-addrs 0.13.4", + "ineru", + "kaneru", "ledger-transport", "ledger-transport-hid", "log", @@ -245,14 +246,13 @@ dependencies = [ "serde_json", "smol", "tiny_http", - "titans_memory", "uuid", "webrtc", ] [[package]] name = "aingle_viz" -version = "0.3.8" +version = "0.4.0" dependencies = [ "aingle_graph", "aingle_minimal", @@ -274,7 +274,7 @@ dependencies = [ [[package]] name = "aingle_zk" -version = "0.3.8" +version = "0.4.0" dependencies = [ "blake3", "bulletproofs", @@ -596,9 +596,9 @@ dependencies = [ [[package]] name = "async-graphql" -version = "8.0.0-rc.3" +version = "8.0.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42a0665c286cedf580804229492c4f7666d0ea48ddb7432ccc07c1903fc6542a" +checksum = "992eec3a71c482790dc346a311a3cdcb1e9006b652a0b87e154b42adb0918b4c" dependencies = [ "askama", "async-graphql-derive", @@ -631,9 +631,9 @@ dependencies = [ [[package]] name = "async-graphql-axum" -version = "8.0.0-rc.3" +version = "8.0.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71520312fec282d5c584890fa09890ece18e853fedff98eff6670bb6f1778789" +checksum = "908f39c915dfdb310d87db08aac6ffc9704ddd210a7f7e0af8348822cff61744" dependencies = [ "async-graphql", "axum", @@ -648,9 +648,9 @@ dependencies = [ [[package]] name = "async-graphql-derive" -version = "8.0.0-rc.3" +version = "8.0.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a1cb5c969613b3c108500a0fe15737157341ba5af198692b08b436aeae3c940" +checksum = "0739ca16bca33d4071c1b45f19d902d6894696f997b9b4c9c0b316c509b4f83f" dependencies = [ "async-graphql-parser", "darling 0.23.0", @@ -658,16 +658,16 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "strum 0.27.2", + "strum 0.28.0", "syn 2.0.117", "thiserror 2.0.18", ] [[package]] name = "async-graphql-parser" -version = "8.0.0-rc.3" +version = "8.0.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d4f97b38939abe44e879e806f858261b8701fa43757d08d310f76750ee60aa" +checksum = "d85b5e90b08d72410b40c71a1878d78308a190f3bbb45a82ea000d0dbc4133a8" dependencies = [ "async-graphql-value", "pest", @@ -677,9 +677,9 @@ dependencies = [ [[package]] name = "async-graphql-value" -version = "8.0.0-rc.3" +version = "8.0.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3722caa711b9b669527259679764eff1a1dfddb5f0b7b9818d59bfe8275b74" +checksum = "fa3b3ae38aad471922da0c5be8318b58dcf0b9e0cf570aa5b57d7df4ef5e6c9e" dependencies = [ "bytes", "indexmap", @@ -2711,12 +2711,6 @@ dependencies = [ "regex", ] -[[package]] -name = "env_home" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe" - [[package]] name = "env_logger" version = "0.11.9" @@ -3655,19 +3649,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "hope_agents" -version = "0.3.8" -dependencies = [ - "chrono", - "criterion", - "log", - "rand 0.9.2", - "serde", - "serde_json", - "titans_memory", -] - [[package]] name = "http" version = "1.4.0" @@ -3721,9 +3702,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hybrid-array" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b229d73f5803b562cc26e4da0396c8610a4ee209f4fac8fa4f8d709166dc45" +checksum = "8655f91cd07f2b9d0c24137bd650fe69617773435ee5ec83022377777ce65ef1" dependencies = [ "typenum", ] @@ -3995,6 +3976,19 @@ dependencies = [ "serde_core", ] +[[package]] +name = "ineru" +version = "0.4.0" +dependencies = [ + "blake3", + "chrono", + "criterion", + "log", + "rusqlite", + "serde", + "serde_json", +] + [[package]] name = "inout" version = "0.1.4" @@ -4240,6 +4234,19 @@ dependencies = [ "simple_asn1", ] +[[package]] +name = "kaneru" +version = "0.4.0" +dependencies = [ + "chrono", + "criterion", + "ineru", + "log", + "rand 0.9.2", + "serde", + "serde_json", +] + [[package]] name = "keccak" version = "0.1.6" @@ -4324,9 +4331,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.182" +version = "0.2.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" [[package]] name = "libdbus-sys" @@ -5525,9 +5532,9 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.13" +version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" dependencies = [ "bytes", "fastbloom", @@ -6721,11 +6728,11 @@ dependencies = [ [[package]] name = "strum" -version = "0.27.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" dependencies = [ - "strum_macros 0.27.2", + "strum_macros 0.28.0", ] [[package]] @@ -6756,9 +6763,9 @@ dependencies = [ [[package]] name = "strum_macros" -version = "0.27.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -7054,19 +7061,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" -[[package]] -name = "titans_memory" -version = "0.3.8" -dependencies = [ - "blake3", - "chrono", - "criterion", - "log", - "rusqlite", - "serde", - "serde_json", -] - [[package]] name = "tokio" version = "1.50.0" @@ -7787,7 +7781,7 @@ dependencies = [ "wasmer-types", "wasmer-vm", "wasmparser", - "which 8.0.1", + "which 8.0.2", "windows-sys 0.61.2", ] @@ -8116,13 +8110,11 @@ dependencies = [ [[package]] name = "which" -version = "8.0.1" +version = "8.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a824aeba0fbb27264f815ada4cff43d65b1741b7a4ed7629ff9089148c4a4e0" +checksum = "81995fafaaaf6ae47a7d0cc83c67caf92aeb7e5331650ae6ff856f7c0c60c459" dependencies = [ - "env_home", - "rustix 1.1.4", - "winsafe", + "libc", ] [[package]] @@ -8555,12 +8547,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winsafe" -version = "0.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" - [[package]] name = "wit-bindgen" version = "0.51.0" @@ -8759,18 +8745,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.40" +version = "0.8.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5" +checksum = "96e13bc581734df6250836c59a5f44f3c57db9f9acb9dc8e3eaabdaf6170254d" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.40" +version = "0.8.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953" +checksum = "3545ea9e86d12ab9bba9fcd99b54c1556fd3199007def5a03c375623d05fac1c" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 0dd4f0b..16f2619 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,10 +4,10 @@ members = [ # ── Product crates ────────────────────────────────────────────── "crates/aingle_graph", # Native Semantic GraphDB "crates/aingle_zk", # Zero-Knowledge Proofs (Privacy) - "crates/titans_memory", # Titans Memory System + "crates/ineru", # Ineru Memory System "crates/aingle_ai", # AI Integration Layer "crates/aingle_logic", # Proof-of-Logic Validation Engine - "crates/hope_agents", # Hierarchical Optimistic Planning Engine + "crates/kaneru", # Kaneru — Unified Multi-Agent Execution System "crates/aingle_cortex", # Córtex API (REST/GraphQL/SPARQL) "crates/aingle_minimal", # IoT-optimized minimal node "crates/aingle_contracts", # Smart Contracts (DSL + WASM Runtime) diff --git a/LICENSE b/LICENSE index 931aba3..4176289 100644 --- a/LICENSE +++ b/LICENSE @@ -1,190 +1,56 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to the Licensor for inclusion in the Work by the copyright - owner or by an individual or Legal Entity authorized to submit on behalf - of the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright 2019-2025 Apilium Technologies - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +AIngle — Dual License + +Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. + +AIngle is available under a dual license model: + +1. APACHE LICENSE 2.0 (Non-Commercial Use) + + You may use, modify, and distribute AIngle under the Apache License, + Version 2.0 for non-commercial purposes. This includes: + + - Personal projects and experiments + - Academic research and education + - Evaluation and prototyping + - Use by organizations with annual gross revenue below USD $1,000,000 + + See LICENSE-APACHE for the full Apache 2.0 license text. + +2. COMMERCIAL LICENSE (Commercial Use) + + A separate commercial license is REQUIRED if: + + - You integrate AIngle into a product or service that is sold or + commercially distributed + - You offer AIngle (or a modified version) as a hosted service + (SaaS, PaaS, or similar) + - Your organization's annual gross revenue exceeds USD $1,000,000 + + See LICENSE-COMMERCIAL for terms and contact information. + +For commercial licensing inquiries: + + Email: partners@apilium.com + Web: https://apilium.com/en/contact + +================================================================================ + +TRADEMARKS + +"AIngle", "AIngle Cortex", "Ineru", and "Kaneru" are trademarks +of Apilium Technologies OÜ. See NOTICE for trademark policy. + +PATENTS + +See the PATENTS file for protected technologies and innovations. + +SECURITY + +See SECURITY.md for vulnerability reporting. + +================================================================================ + +Apilium Technologies OÜ +Registration Number: 17409213 +Tallinn, Estonia +https://apilium.com diff --git a/LICENSE-APACHE b/LICENSE-APACHE new file mode 100644 index 0000000..8f40ee4 --- /dev/null +++ b/LICENSE-APACHE @@ -0,0 +1,190 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to the Licensor for inclusion in the Work by the copyright + owner or by an individual or Legal Entity authorized to submit on behalf + of the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2019-2026 Apilium Technologies + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LICENSE-COMMERCIAL b/LICENSE-COMMERCIAL new file mode 100644 index 0000000..a6b71a4 --- /dev/null +++ b/LICENSE-COMMERCIAL @@ -0,0 +1,141 @@ +AINGLE COMMERCIAL LICENSE AGREEMENT +Version 1.0, March 2026 + +Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. + +================================================================================ + +IMPORTANT: READ CAREFULLY BEFORE USING THIS SOFTWARE UNDER COMMERCIAL TERMS. + +This Commercial License Agreement ("Agreement") is between Apilium Technologies +OÜ, a company registered in Tallinn, Estonia ("Licensor"), and the entity or +individual obtaining a commercial license ("Licensee"). + +================================================================================ + +1. DEFINITIONS + +"Software" means the AIngle source code, binaries, documentation, and any +associated materials available at https://github.com/ApiliumCode/aingle. + +"Commercial Use" means any use of the Software that meets one or more of the +following criteria: + (a) Integration, embedding, or bundling of the Software (in whole or in part) + into a product or service that is sold, licensed, or otherwise + commercially distributed; + (b) Offering the Software, or a modified version thereof, as a hosted or + managed service (SaaS, PaaS, or similar) to third parties; + (c) Use of the Software by an organization with annual gross revenue + exceeding one million United States dollars (USD $1,000,000). + +"Non-Commercial Use" means any use that does not constitute Commercial Use, +including personal projects, academic research, education, evaluation, and +use by organizations with annual gross revenue below USD $1,000,000. + +2. DUAL LICENSING + +The Software is available under two licenses: + + (a) Apache License, Version 2.0 ("Apache-2.0") — for Non-Commercial Use. + The full text is available in the file LICENSE-APACHE. + + (b) This Commercial License — for Commercial Use. A separate commercial + license must be obtained from the Licensor before any Commercial Use. + +If your use qualifies as Non-Commercial Use, you may use the Software under +the terms of Apache-2.0 without obtaining a commercial license. + +If your use qualifies as Commercial Use, you MUST obtain a commercial license +from the Licensor. Using the Software for Commercial Use without a valid +commercial license is a violation of the Licensor's intellectual property rights. + +3. COMMERCIAL LICENSE GRANT + +Upon execution of a Commercial License Agreement and payment of applicable +fees, the Licensor grants the Licensee a non-exclusive, non-transferable, +worldwide license to: + + (a) Use, modify, and create derivative works of the Software; + (b) Integrate the Software into Licensee's commercial products and services; + (c) Distribute the Software as part of Licensee's commercial offerings; + (d) Use the Software internally without limitation. + +The specific terms, scope, duration, and fees of each commercial license are +negotiated individually and documented in a separate Order Form or Statement +of Work. + +4. RESTRICTIONS + +Under this Commercial License, the Licensee may NOT: + + (a) Sublicense or resell the Software as a standalone product; + (b) Remove or alter copyright notices, trademark notices, or attribution + from the Software; + (c) Use the trademarks "AIngle", "AIngle Cortex", "Ineru", + or "Kaneru" except as permitted in writing by the Licensor; + (d) Represent that the Licensee's product IS AIngle or is endorsed by + Apilium Technologies; + (e) Use the Software to create a product that directly competes with the + Software itself (i.e., a semantic DAG database or knowledge graph + engine offered as a standalone product). + +5. INTELLECTUAL PROPERTY + +All intellectual property rights in the Software, including patents, copyrights, +trademarks, and trade secrets, remain with the Licensor. This Agreement does +not transfer any ownership rights to the Licensee. + +The protected technologies described in the PATENTS file are the proprietary +innovations of the Licensor. The commercial license grants usage rights only; +it does not grant patent rights beyond those necessary to use the Software as +licensed. + +6. SUPPORT AND MAINTENANCE + +Commercial license holders are entitled to: + + (a) Priority bug fixes and security patches; + (b) Direct communication with the engineering team; + (c) Service Level Agreements (SLAs) as negotiated in the Order Form; + (d) Early access to new releases and features. + +7. WARRANTY AND LIABILITY + +THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. THE LICENSOR +SHALL NOT BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR +PUNITIVE DAMAGES ARISING FROM THE USE OF THE SOFTWARE. + +The Licensor's total liability under this Agreement shall not exceed the total +fees paid by the Licensee in the twelve (12) months preceding the claim. + +8. TERM AND TERMINATION + + (a) This Agreement is effective upon execution and continues for the term + specified in the Order Form. + (b) Either party may terminate this Agreement for material breach with + thirty (30) days written notice. + (c) Upon termination, the Licensee must cease all Commercial Use of the + Software within sixty (60) days. + (d) Sections 4, 5, 7, and 9 survive termination. + +9. GOVERNING LAW + +This Agreement is governed by the laws of the Republic of Estonia, without +regard to conflict of law principles. Any disputes shall be resolved in the +courts of Tallinn, Estonia, or by arbitration under the rules of the Estonian +Chamber of Commerce and Industry. + +10. HOW TO OBTAIN A COMMERCIAL LICENSE + +Contact Apilium Technologies OÜ: + + Email: partners@apilium.com + Web: https://apilium.com/en/contact + Legal: legal@apilium.com + +================================================================================ + +Apilium Technologies OÜ +Registration Number: 17409213 +Tallinn, Estonia +https://apilium.com diff --git a/NOTICE b/NOTICE index 07568be..ea80c0d 100644 --- a/NOTICE +++ b/NOTICE @@ -1,7 +1,71 @@ -AIngle -Copyright 2019-2025 Apilium Technologies +AIngle (TM) +Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. This product includes software developed at Apilium Technologies (https://apilium.com/). Licensed under the Apache License, Version 2.0. + +================================================================================ +TRADEMARKS +================================================================================ + +"AIngle", "AIngle Cortex", "Ineru", "Kaneru", and the AIngle logo +are trademarks of Apilium Technologies OÜ. These trademarks may not be used +in connection with any product or service that is not provided by Apilium +Technologies, in any manner that is likely to cause confusion, or in any +manner that disparages or discredits Apilium Technologies. + +Use of these trademarks to describe the origin of this software, as required +by the Apache License, is permitted. Any other use requires prior written +permission from Apilium Technologies OÜ. + +================================================================================ +PROPRIETARY TECHNOLOGIES +================================================================================ + +The following technologies, architectures, and methodologies embodied in this +software are original works of Apilium Technologies OÜ and are protected under +applicable copyright and intellectual property laws: + + - Semantic DAG Architecture: Content-addressed directed acyclic graph with + integrated RDF triple store and provenance tracking + + - AIngle Cortex: Cryptographic semantic layer combining knowledge graphs, + reasoning engines, and zero-knowledge proof systems + + - Kaneru: Unified Multi-Agent Execution System for autonomous + goal decomposition and multi-step reasoning + + - Ineru: Neural-inspired persistence system with attention-weighted + short-term memory and semantic long-term consolidation + + - Proof-of-Logic Engine: Forward and backward chaining inference engine + with ontological consistency validation + + - Zero-Knowledge Integration: Pedersen commitments, Schnorr signatures, + and Bulletproofs range proofs for verifiable computation + + - Nested Learning: Meta-optimization framework for adaptive model behavior + + - AIngle Minimal: Lightweight edge runtime for IoT and embedded devices + +While the source code is licensed under Apache License 2.0, the architectural +designs, algorithms, and integration patterns constitute trade secrets and +proprietary know-how of Apilium Technologies OÜ. + +================================================================================ +CONTACT +================================================================================ + +Apilium Technologies OÜ +Tallinn, Estonia +Registration: 17409213 + +Legal inquiries: legal@apilium.com +Licensing inquiries: partners@apilium.com +Security reports: security@apilium.com +General: hello@apilium.com + +https://apilium.com +https://github.com/ApiliumCode/aingle diff --git a/PATENTS b/PATENTS new file mode 100644 index 0000000..6b70b1c --- /dev/null +++ b/PATENTS @@ -0,0 +1,81 @@ +# AIngle — Protected Technologies & Patent Notice + +Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. + +This file describes the proprietary technologies, algorithms, and +architectural innovations embodied in AIngle that are protected under +applicable intellectual property laws. This notice supplements (but +does not replace) the Apache License 2.0 patent grant in Section 3. + +## Protected Innovations + +### 1. Semantic DAG Architecture + +A content-addressed directed acyclic graph that combines cryptographic +integrity (blake3 hashing), RDF triple storage with SPO/POS/OSP indexing, +and provenance-tracked knowledge management in a single unified data +structure. + +### 2. AIngle Cortex + +A cryptographic semantic layer that integrates: +- Native RDF triple store with SPARQL 1.1 query execution +- Pattern-based graph queries with namespace isolation +- Proof-of-Logic validation engine +- Zero-knowledge proof generation and verification +- REST/WebSocket API for external integration + +### 3. Proof-of-Logic Engine + +An inference engine implementing both forward chaining (data-driven) +and backward chaining (goal-driven) reasoning over RDF knowledge graphs, +with ontological consistency validation and rule-based inference. + +### 4. Kaneru (Unified Multi-Agent Execution System) + +A multi-agent framework for autonomous goal decomposition featuring: +- Hierarchical task planning with optimistic execution +- Dynamic goal tree construction and pruning +- Inter-agent coordination via semantic message passing +- Capability-based agent selection and delegation + +### 5. Ineru + +A neural-inspired persistence system implementing: +- Attention-weighted short-term memory with configurable decay +- Semantic long-term memory with automatic consolidation +- Importance scoring for STM-to-LTM promotion +- Content-addressed storage with semantic similarity search + +### 6. Zero-Knowledge Proof Integration + +Integration of zero-knowledge proof systems into a semantic knowledge +graph, enabling verifiable computation over private data: +- Pedersen commitment schemes for value hiding +- Schnorr signature proofs for identity verification +- Bulletproofs range proofs for numerical assertions +- Proof composition for complex multi-step verification + +### 7. Nested Learning + +A meta-optimization framework that enables adaptive model behavior +through hierarchical learning loops operating on the knowledge graph. + +### 8. AIngle Minimal + +A lightweight edge runtime designed for IoT and resource-constrained +devices, implementing a subset of the AIngle protocol with: +- Minimal memory footprint graph operations +- Device capability sharing via semantic descriptors +- Peer-to-peer sync with gossip protocol + +## Patent Status + +Apilium Technologies OÜ reserves all rights to seek patent protection +for the innovations described above in any jurisdiction. The Apache +License 2.0 patent grant (Section 3) applies only to contributions +as defined in that license and does not constitute a waiver of patent +rights for the system-level architectural innovations described herein. + +For patent licensing inquiries: legal@apilium.com +For partnership opportunities: partners@apilium.com diff --git a/README.md b/README.md index 262b22e..743871f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- AIngle + AIngle(TM)

@@ -127,8 +127,8 @@ Prove facts without revealing data. Schnorr signatures, Pedersen commitments, an -### ⚡ HOPE Agents -Hierarchical Optimistic Policy Engine. Reinforcement learning (Q-Learning, SARSA, TD) for autonomous decision-making. From anomaly detection to resource optimization. +### ⚡ Kaneru +Unified Multi-Agent Execution System. Reinforcement learning (Q-Learning, SARSA, TD) for autonomous decision-making. From anomaly detection to resource optimization. @@ -162,7 +162,7 @@ Interactive D3.js dashboard. Watch your DAG evolve in real-time. Filter, search, ┌────────────────────────────────────────────────────────────────────────┐ │ APPLICATION LAYER │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │ -│ │ Zomes │ │ Contracts │ │ HOPE Agents │ │ DAG Viz │ │ +│ │ Zomes │ │ Contracts │ │ Kaneru │ │ DAG Viz │ │ │ │ (WASM) │ │ (Rust DSL) │ │ (RL) │ │ (D3.js) │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ └───────────┘ │ ├────────────────────────────────────────────────────────────────────────┤ @@ -233,7 +233,7 @@ cargo run --release -- --help |-------|-------------| | [Getting Started](docs/tutorials/getting-started.md) | Build your first AIngle application | | [IoT Networks](docs/tutorials/iot-sensor-network.md) | Deploy sensors with edge intelligence | -| [HOPE Agents](docs/tutorials/ai-powered-app.md) | Add autonomous decision-making | +| [Kaneru](docs/tutorials/ai-powered-app.md) | Add autonomous decision-making | | [Semantic Queries](docs/tutorials/semantic-queries.md) | Master GraphQL and SPARQL | | [Privacy (ZK)](docs/tutorials/privacy-with-zk.md) | Implement zero-knowledge proofs | | [Visualization](docs/tutorials/dag-visualization.md) | Monitor your system in real-time | @@ -260,7 +260,7 @@ cargo doc --workspace --no-deps --open | Component | Purpose | |-----------|---------| -| `hope_agents` | Reinforcement learning framework | +| `kaneru` | Kaneru multi-agent execution framework | | `aingle_logic` | Prolog-style reasoning engine | | `aingle_graph` | Semantic graph database | @@ -328,11 +328,17 @@ See our [contribution guidelines](CONTRIBUTING.md) for details. ## License -**Apache License 2.0** +**Dual License: Apache-2.0 + Commercial** -Copyright © 2019-2025 Apilium Technologies +Copyright © 2019-2026 Apilium Technologies OÜ -See [LICENSE](LICENSE) for the full license text. +AIngle is available under two licenses: + +- **Apache License 2.0** — Free for personal use, education, research, evaluation, and organizations with annual revenue below USD $1M. See [LICENSE-APACHE](LICENSE-APACHE). + +- **Commercial License** — Required for commercial integration, SaaS offerings, and organizations with annual revenue above USD $1M. See [LICENSE-COMMERCIAL](LICENSE-COMMERCIAL). + +For commercial licensing: [partners@apilium.com](mailto:partners@apilium.com) --- @@ -349,5 +355,15 @@ See [LICENSE](LICENSE) for the full license text.

- Apilium Technologies • Tallinn, Estonia + Apilium Technologies OÜ • Tallinn, Estonia

+ +--- + + + +**Trademarks**: AIngle, AIngle Cortex, Ineru, and Kaneru are trademarks of Apilium Technologies OÜ. See [NOTICE](./NOTICE) for details. + +**License**: Dual licensed under [Apache-2.0](./LICENSE-APACHE) and [Commercial](./LICENSE-COMMERCIAL). See [PATENTS](./PATENTS) for protected technologies. + + diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..31d526a --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,48 @@ +# Security Policy + +## Reporting a Vulnerability + +If you discover a security vulnerability in AIngle, please report it responsibly. + +**Email**: security@apilium.com + +Please include: +- Description of the vulnerability +- Steps to reproduce +- Potential impact +- Suggested fix (if any) + +## Response Timeline + +- **Acknowledgment**: Within 48 hours +- **Initial assessment**: Within 7 days +- **Patch release**: Within 30 days (critical vulnerabilities may be expedited) + +## Disclosure Policy + +- Do not disclose the vulnerability publicly until a patch has been released +- We will credit reporters in the security advisory (unless anonymity is requested) +- We do not pursue legal action against good-faith security researchers + +## Scope + +This policy covers all code in the AIngle repository, including: +- All crates under `crates/` +- Build scripts and CI/CD configurations +- Documentation that may expose sensitive implementation details + +## Cryptographic Components + +AIngle uses the following cryptographic libraries: +- `blake3` — Content hashing +- `ed25519-dalek` — Digital signatures +- `rustls` — TLS connections +- Custom zero-knowledge proof implementations (Pedersen, Schnorr, Bulletproofs) + +Issues in these components are considered high priority. + +## Contact + +Apilium Technologies OÜ +security@apilium.com +https://apilium.com/en/security diff --git a/crates/adk/Cargo.toml b/crates/adk/Cargo.toml index 8ad48a8..862ea24 100644 --- a/crates/adk/Cargo.toml +++ b/crates/adk/Cargo.toml @@ -2,7 +2,7 @@ name = "adk" version = "0.0.1" description = "The AIngle ADK" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/adk" diff --git a/crates/adk/src/adk.rs b/crates/adk/src/adk.rs index e9cfac8..b9cffd7 100644 --- a/crates/adk/src/adk.rs +++ b/crates/adk/src/adk.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; #[cfg(feature = "mock")] diff --git a/crates/adk/src/capability.rs b/crates/adk/src/capability.rs index f08460c..0e2c99f 100644 --- a/crates/adk/src/capability.rs +++ b/crates/adk/src/capability.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; /// Create capability claims on the local source chain. diff --git a/crates/adk/src/chain.rs b/crates/adk/src/chain.rs index c8a4952..8ed634c 100644 --- a/crates/adk/src/chain.rs +++ b/crates/adk/src/chain.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; /// Query the _headers_ of a remote agent's chain. diff --git a/crates/adk/src/ed25519.rs b/crates/adk/src/ed25519.rs index aee8d29..872ccdb 100644 --- a/crates/adk/src/ed25519.rs +++ b/crates/adk/src/ed25519.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; /// Sign something that is serializable using the private key for the passed public key. diff --git a/crates/adk/src/entry.rs b/crates/adk/src/entry.rs index 1dc4550..db1a674 100644 --- a/crates/adk/src/entry.rs +++ b/crates/adk/src/entry.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; /// General function that can create any entry type. diff --git a/crates/adk/src/graph.rs b/crates/adk/src/graph.rs index 96f389d..57d84b4 100644 --- a/crates/adk/src/graph.rs +++ b/crates/adk/src/graph.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; use aingle_zome_types::graph::{ GraphQueryInput, GraphQueryOutput, GraphStoreInput, GraphStoreOutput, ObjectValue, diff --git a/crates/adk/src/hash_path.rs b/crates/adk/src/hash_path.rs index bd5cc2b..0adde59 100644 --- a/crates/adk/src/hash_path.rs +++ b/crates/adk/src/hash_path.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + /// The anchor pattern implemented in terms of [ `path::Path` ] /// /// The anchor pattern predates the path crate. diff --git a/crates/adk/src/hash_path/anchor.rs b/crates/adk/src/hash_path/anchor.rs index 90edef8..09aba78 100644 --- a/crates/adk/src/hash_path/anchor.rs +++ b/crates/adk/src/hash_path/anchor.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::hash_path::path::Component; use crate::hash_path::path::Path; use crate::prelude::*; diff --git a/crates/adk/src/hash_path/path.rs b/crates/adk/src/hash_path/path.rs index 06b0ea1..549562a 100644 --- a/crates/adk/src/hash_path/path.rs +++ b/crates/adk/src/hash_path/path.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::hash_path::shard::ShardStrategy; use crate::hash_path::shard::SHARDEND; use crate::prelude::*; diff --git a/crates/adk/src/hash_path/shard.rs b/crates/adk/src/hash_path/shard.rs index 559506c..2223016 100644 --- a/crates/adk/src/hash_path/shard.rs +++ b/crates/adk/src/hash_path/shard.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::hash_path::path::Component; use crate::hash_path::path::Path; use std::str::FromStr; diff --git a/crates/adk/src/info.rs b/crates/adk/src/info.rs index 83160d6..a97efcc 100644 --- a/crates/adk/src/info.rs +++ b/crates/adk/src/info.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; /// Trivial wrapper for `__agent_info` host function. diff --git a/crates/adk/src/lib.rs b/crates/adk/src/lib.rs index 3ab162b..ab91cb3 100644 --- a/crates/adk/src/lib.rs +++ b/crates/adk/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(rustdoc::bare_urls)] #![allow(rustdoc::invalid_html_tags)] #![allow(rustdoc::broken_intra_doc_links)] diff --git a/crates/adk/src/link.rs b/crates/adk/src/link.rs index 78bd511..c775114 100644 --- a/crates/adk/src/link.rs +++ b/crates/adk/src/link.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; /// Create a link from a base entry to a target entry, with an optional tag. diff --git a/crates/adk/src/map_extern.rs b/crates/adk/src/map_extern.rs index d6804e3..a6bc730 100644 --- a/crates/adk/src/map_extern.rs +++ b/crates/adk/src/map_extern.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; /// Hides away the gross bit where we hook up integer pointers to length-prefixed guest memory diff --git a/crates/adk/src/memory.rs b/crates/adk/src/memory.rs index 9cf6a7c..6c845de 100644 --- a/crates/adk/src/memory.rs +++ b/crates/adk/src/memory.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; use aingle_zome_types::graph::{ MemoryRecallInput, MemoryRecallOutput, MemoryRememberInput, MemoryRememberOutput, diff --git a/crates/adk/src/p2p.rs b/crates/adk/src/p2p.rs index f1b4f35..e31a5bb 100644 --- a/crates/adk/src/p2p.rs +++ b/crates/adk/src/p2p.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; /// # Call diff --git a/crates/adk/src/prelude.rs b/crates/adk/src/prelude.rs index d0a63a2..203afa0 100644 --- a/crates/adk/src/prelude.rs +++ b/crates/adk/src/prelude.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + pub use crate::adk::*; pub use crate::app_entry; pub use crate::capability::create_cap_claim; diff --git a/crates/adk/src/random.rs b/crates/adk/src/random.rs index 09f17c8..9473c24 100644 --- a/crates/adk/src/random.rs +++ b/crates/adk/src/random.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; /// Get N cryptographically strong random bytes. diff --git a/crates/adk/src/time.rs b/crates/adk/src/time.rs index 1a252c7..776022b 100644 --- a/crates/adk/src/time.rs +++ b/crates/adk/src/time.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; /// Current system time from the host. diff --git a/crates/adk/src/trace.rs b/crates/adk/src/trace.rs index ba0d073..e362154 100644 --- a/crates/adk/src/trace.rs +++ b/crates/adk/src/trace.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; use std::fmt::Write; use std::sync::atomic::AtomicUsize; diff --git a/crates/adk/src/x_salsa20_poly1305.rs b/crates/adk/src/x_salsa20_poly1305.rs index ed0d85b..5842db5 100644 --- a/crates/adk/src/x_salsa20_poly1305.rs +++ b/crates/adk/src/x_salsa20_poly1305.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; /// Generate a new x25519 keypair in lair from entropy. diff --git a/crates/adk_derive/Cargo.toml b/crates/adk_derive/Cargo.toml index 552c9dc..d727f88 100644 --- a/crates/adk_derive/Cargo.toml +++ b/crates/adk_derive/Cargo.toml @@ -2,7 +2,7 @@ name = "adk_derive" version = "0.0.1" description = "derive macros for the aingle adk" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/adk_derive" diff --git a/crates/adk_derive/src/lib.rs b/crates/adk_derive/src/lib.rs index e339764..b1c0173 100644 --- a/crates/adk_derive/src/lib.rs +++ b/crates/adk_derive/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![crate_type = "proc-macro"] use proc_macro::TokenStream; diff --git a/crates/ai/Cargo.toml b/crates/ai/Cargo.toml index ffb9e2c..82602a8 100644 --- a/crates/ai/Cargo.toml +++ b/crates/ai/Cargo.toml @@ -2,7 +2,7 @@ name = "aingle_cli" version = "0.0.1" description = "Command-line interface for AIngle distributed ledger" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/aingle_cli" diff --git a/crates/ai/src/bin/ai.rs b/crates/ai/src/bin/ai.rs index 362e635..81e4236 100644 --- a/crates/ai/src/bin/ai.rs +++ b/crates/ai/src/bin/ai.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_cli as ai; use structopt::StructOpt; diff --git a/crates/ai/src/lib.rs b/crates/ai/src/lib.rs index 8adf26b..e461783 100644 --- a/crates/ai/src/lib.rs +++ b/crates/ai/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![warn(missing_docs)] //! A library and CLI to help create, run and interact with aingle conductor setups. diff --git a/crates/ai_bundle/Cargo.toml b/crates/ai_bundle/Cargo.toml index 9aaffac..c2b2fea 100644 --- a/crates/ai_bundle/Cargo.toml +++ b/crates/ai_bundle/Cargo.toml @@ -2,7 +2,7 @@ name = "aingle_cli_bundle" version = "0.0.1" description = "SAF and hApp bundling functionality for the `ai` AIngle CLI utility" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/aingle_cli_bundle" diff --git a/crates/ai_bundle/src/bin/ai-app.rs b/crates/ai_bundle/src/bin/ai-app.rs index eceb373..ea9a194 100644 --- a/crates/ai_bundle/src/bin/ai-app.rs +++ b/crates/ai_bundle/src/bin/ai-app.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_cli_bundle::AinAppBundle; use structopt::StructOpt; diff --git a/crates/ai_bundle/src/bin/ai-saf.rs b/crates/ai_bundle/src/bin/ai-saf.rs index ca3af45..b2d1772 100644 --- a/crates/ai_bundle/src/bin/ai-saf.rs +++ b/crates/ai_bundle/src/bin/ai-saf.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_cli_bundle::AinSafBundle; use structopt::StructOpt; diff --git a/crates/ai_bundle/src/cli.rs b/crates/ai_bundle/src/cli.rs index 75c3c27..44bdc6b 100644 --- a/crates/ai_bundle/src/cli.rs +++ b/crates/ai_bundle/src/cli.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![forbid(missing_docs)] //! Binary `ai-saf` command executable. diff --git a/crates/ai_bundle/src/error.rs b/crates/ai_bundle/src/error.rs index 413ed21..27e7bdb 100644 --- a/crates/ai_bundle/src/error.rs +++ b/crates/ai_bundle/src/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::path::PathBuf; use aingle_middleware_bytes::SerializedBytesError; diff --git a/crates/ai_bundle/src/init.rs b/crates/ai_bundle/src/init.rs index 2502256..8877a99 100644 --- a/crates/ai_bundle/src/init.rs +++ b/crates/ai_bundle/src/init.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::io::Write; use std::{io, path::PathBuf}; diff --git a/crates/ai_bundle/src/lib.rs b/crates/ai_bundle/src/lib.rs index f34e623..5e28d20 100644 --- a/crates/ai_bundle/src/lib.rs +++ b/crates/ai_bundle/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + mod cli; mod error; mod init; diff --git a/crates/ai_bundle/src/packing.rs b/crates/ai_bundle/src/packing.rs index fd359e4..74ae3a0 100644 --- a/crates/ai_bundle/src/packing.rs +++ b/crates/ai_bundle/src/packing.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![forbid(missing_docs)] //! Defines the CLI commands for packing/unpacking both SAF and hApp bundles diff --git a/crates/ai_bundle/tests/test_cli.rs b/crates/ai_bundle/tests/test_cli.rs index 4c068ca..e91e65a 100644 --- a/crates/ai_bundle/tests/test_cli.rs +++ b/crates/ai_bundle/tests/test_cli.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_types::prelude::*; use aingle_util::ffs; use assert_cmd::prelude::*; diff --git a/crates/ai_fixt/Cargo.toml b/crates/ai_fixt/Cargo.toml index d0e13f6..13b766f 100644 --- a/crates/ai_fixt/Cargo.toml +++ b/crates/ai_fixt/Cargo.toml @@ -2,7 +2,7 @@ name = "ai_fixt" version = "0.0.1" description = "minimum viable fixtures" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/ai_fixt" diff --git a/crates/ai_fixt/src/bool.rs b/crates/ai_fixt/src/bool.rs index 6f161ab..682b2c6 100644 --- a/crates/ai_fixt/src/bool.rs +++ b/crates/ai_fixt/src/bool.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; fixturator!(bool, false, crate::rng().random(), { diff --git a/crates/ai_fixt/src/bytes.rs b/crates/ai_fixt/src/bytes.rs index f03d179..95d7151 100644 --- a/crates/ai_fixt/src/bytes.rs +++ b/crates/ai_fixt/src/bytes.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; use rand::Rng; diff --git a/crates/ai_fixt/src/lib.rs b/crates/ai_fixt/src/lib.rs index e6d2f08..7f92b5f 100644 --- a/crates/ai_fixt/src/lib.rs +++ b/crates/ai_fixt/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(clippy::assign_op_pattern)] #![allow(rustdoc::bare_urls)] #![allow(rustdoc::invalid_html_tags)] diff --git a/crates/ai_fixt/src/number.rs b/crates/ai_fixt/src/number.rs index 59fe898..80bbd50 100644 --- a/crates/ai_fixt/src/number.rs +++ b/crates/ai_fixt/src/number.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; use rand::seq::IndexedRandom; diff --git a/crates/ai_fixt/src/prelude.rs b/crates/ai_fixt/src/prelude.rs index 584f98e..68b0ac6 100644 --- a/crates/ai_fixt/src/prelude.rs +++ b/crates/ai_fixt/src/prelude.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + pub use crate::basic_test; pub use crate::bool::BoolFixturator; pub use crate::bytes::Bytes; diff --git a/crates/ai_fixt/src/rng.rs b/crates/ai_fixt/src/rng.rs index 523b143..337883e 100644 --- a/crates/ai_fixt/src/rng.rs +++ b/crates/ai_fixt/src/rng.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Seedable random number generator to be used in all fixturator randomness //! //! In tests, when an unpredictable value causes a test failure, it's important to diff --git a/crates/ai_fixt/src/serialized_bytes.rs b/crates/ai_fixt/src/serialized_bytes.rs index 619ed7b..9862df4 100644 --- a/crates/ai_fixt/src/serialized_bytes.rs +++ b/crates/ai_fixt/src/serialized_bytes.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! @todo move all this out to the serialized bytes crate use crate::prelude::*; use aingle_middleware_bytes::prelude::*; diff --git a/crates/ai_fixt/src/string.rs b/crates/ai_fixt/src/string.rs index dfe27ad..72cb03f 100644 --- a/crates/ai_fixt/src/string.rs +++ b/crates/ai_fixt/src/string.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; use rand::Rng; diff --git a/crates/ai_fixt/src/unit.rs b/crates/ai_fixt/src/unit.rs index 6edff0d..02545dd 100644 --- a/crates/ai_fixt/src/unit.rs +++ b/crates/ai_fixt/src/unit.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; type Unit = (); diff --git a/crates/ai_fixt/test/Cargo.toml b/crates/ai_fixt/test/Cargo.toml index 3fcfaad..3fa66c9 100644 --- a/crates/ai_fixt/test/Cargo.toml +++ b/crates/ai_fixt/test/Cargo.toml @@ -2,7 +2,7 @@ name = "ai_fixt_test" version = "0.0.1" description = "tests the fixturator macros in an external crate" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/ai_fixt_test" diff --git a/crates/ai_fixt/test/src/lib.rs b/crates/ai_fixt/test/src/lib.rs index 51938f8..592cd0f 100644 --- a/crates/ai_fixt/test/src/lib.rs +++ b/crates/ai_fixt/test/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + /// this is in a separate crate from the ai_fixt crate to show that we've addressed the orphan rule /// and other issues e.g. pub/private data use ::ai_fixt::prelude::*; diff --git a/crates/ai_hash/Cargo.toml b/crates/ai_hash/Cargo.toml index 2763078..3577cd9 100644 --- a/crates/ai_hash/Cargo.toml +++ b/crates/ai_hash/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "ai_hash" -version = "0.3.6" +version = "0.4.0" authors = ["Apilium Technologies "] keywords = [ "aingle", "ai", "hash", "blake", "blake2b" ] categories = [ "cryptography" ] edition = "2018" description = "hashing helpers supporting sgd sharding" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/ai_hash" diff --git a/crates/ai_hash/src/aliases.rs b/crates/ai_hash/src/aliases.rs index 209bc9a..7094039 100644 --- a/crates/ai_hash/src/aliases.rs +++ b/crates/ai_hash/src/aliases.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Type aliases for the various concrete AiHash types use crate::hash_type; diff --git a/crates/ai_hash/src/encode.rs b/crates/ai_hash/src/encode.rs index 7154b46..4592b71 100644 --- a/crates/ai_hash/src/encode.rs +++ b/crates/ai_hash/src/encode.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::assert_length; use crate::error::AiHashError; use crate::AiHash; diff --git a/crates/ai_hash/src/encode_raw.rs b/crates/ai_hash/src/encode_raw.rs index 2445fd8..ea89811 100644 --- a/crates/ai_hash/src/encode_raw.rs +++ b/crates/ai_hash/src/encode_raw.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::AiHash; use crate::HashType; diff --git a/crates/ai_hash/src/error.rs b/crates/ai_hash/src/error.rs index d2610d2..349b5e5 100644 --- a/crates/ai_hash/src/error.rs +++ b/crates/ai_hash/src/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! AiHash Error Type. use crate::AI_HASH_PREFIX_LEN; diff --git a/crates/ai_hash/src/fixt.rs b/crates/ai_hash/src/fixt.rs index 4fcb095..a0b3031 100644 --- a/crates/ai_hash/src/fixt.rs +++ b/crates/ai_hash/src/fixt.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(missing_docs)] use crate::encode::ai_sgd_location_bytes; diff --git a/crates/ai_hash/src/has_hash.rs b/crates/ai_hash/src/has_hash.rs index 2f421ce..3c5f065 100644 --- a/crates/ai_hash/src/has_hash.rs +++ b/crates/ai_hash/src/has_hash.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Definition of the HasHash trait use crate::AiHash; diff --git a/crates/ai_hash/src/hash.rs b/crates/ai_hash/src/hash.rs index a8cc2b0..6585b77 100644 --- a/crates/ai_hash/src/hash.rs +++ b/crates/ai_hash/src/hash.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Defines the AiHash type, used for all hashes in AIngle. //! //! AiHashes come in a variety of types. See the `hash_type::primitive` diff --git a/crates/ai_hash/src/hash_b64.rs b/crates/ai_hash/src/hash_b64.rs index 223c8b2..48e566b 100644 --- a/crates/ai_hash/src/hash_b64.rs +++ b/crates/ai_hash/src/hash_b64.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Implements base-64 serialization for AiHashes //! //! It's already the case that AiHash can be deserialized from either a byte diff --git a/crates/ai_hash/src/hash_ext.rs b/crates/ai_hash/src/hash_ext.rs index 13eca5c..5bc0c0c 100644 --- a/crates/ai_hash/src/hash_ext.rs +++ b/crates/ai_hash/src/hash_ext.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::assert_length; use crate::encode; use crate::hash_type; diff --git a/crates/ai_hash/src/hash_type.rs b/crates/ai_hash/src/hash_type.rs index 418829d..42ae43b 100644 --- a/crates/ai_hash/src/hash_type.rs +++ b/crates/ai_hash/src/hash_type.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Defines the prefixes for the various HashTypes, as well as the traits //! which unify them diff --git a/crates/ai_hash/src/hash_type/composite.rs b/crates/ai_hash/src/hash_type/composite.rs index 7e99149..63a6eab 100644 --- a/crates/ai_hash/src/hash_type/composite.rs +++ b/crates/ai_hash/src/hash_type/composite.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; use crate::error::AiHashError; use std::convert::TryInto; diff --git a/crates/ai_hash/src/hash_type/primitive.rs b/crates/ai_hash/src/hash_type/primitive.rs index 5b2d292..0f09068 100644 --- a/crates/ai_hash/src/hash_type/primitive.rs +++ b/crates/ai_hash/src/hash_type/primitive.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; use crate::error::AiHashError; use crate::hash_type; diff --git a/crates/ai_hash/src/hashable_content.rs b/crates/ai_hash/src/hashable_content.rs index 55637e7..9864c04 100644 --- a/crates/ai_hash/src/hashable_content.rs +++ b/crates/ai_hash/src/hashable_content.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::HashType; use aingle_middleware_bytes::prelude::*; diff --git a/crates/ai_hash/src/hashed.rs b/crates/ai_hash/src/hashed.rs index 4858cef..a25780b 100644 --- a/crates/ai_hash/src/hashed.rs +++ b/crates/ai_hash/src/hashed.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::AiHashOf; use crate::HasHash; use crate::HashableContent; diff --git a/crates/ai_hash/src/lib.rs b/crates/ai_hash/src/lib.rs index def635c..6608008 100644 --- a/crates/ai_hash/src/lib.rs +++ b/crates/ai_hash/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Defines AiHash and its various HashTypes #![deny(missing_docs)] diff --git a/crates/ai_hash/src/ser.rs b/crates/ai_hash/src/ser.rs index 3c5bcdd..eeb40b2 100644 --- a/crates/ai_hash/src/ser.rs +++ b/crates/ai_hash/src/ser.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Defines the serialization rules for AiHashes use crate::AiHash; diff --git a/crates/ai_hash/src/tests.rs b/crates/ai_hash/src/tests.rs index a338a81..ba3ae57 100644 --- a/crates/ai_hash/src/tests.rs +++ b/crates/ai_hash/src/tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![cfg(test)] use crate::{HashableContent, AiHashed}; diff --git a/crates/ai_sandbox/Cargo.toml b/crates/ai_sandbox/Cargo.toml index 903e898..c5e1331 100644 --- a/crates/ai_sandbox/Cargo.toml +++ b/crates/ai_sandbox/Cargo.toml @@ -2,7 +2,7 @@ name = "aingle_cli_sandbox" version = "0.0.1" description = "Sandbox environment for AIngle development and testing" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/aingle_cli_sandbox" diff --git a/crates/ai_sandbox/examples/setup_5.rs b/crates/ai_sandbox/examples/setup_5.rs index 8ee21e9..9116ff9 100644 --- a/crates/ai_sandbox/examples/setup_5.rs +++ b/crates/ai_sandbox/examples/setup_5.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::path::PathBuf; use ai_sandbox::calls::ActivateApp; diff --git a/crates/ai_sandbox/src/bin/ai-sandbox.rs b/crates/ai_sandbox/src/bin/ai-sandbox.rs index 29317e6..9bfddd1 100644 --- a/crates/ai_sandbox/src/bin/ai-sandbox.rs +++ b/crates/ai_sandbox/src/bin/ai-sandbox.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use structopt::StructOpt; #[tokio::main] diff --git a/crates/ai_sandbox/src/bundles.rs b/crates/ai_sandbox/src/bundles.rs index d85aa40..bd1762b 100644 --- a/crates/ai_sandbox/src/bundles.rs +++ b/crates/ai_sandbox/src/bundles.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Helpers for working with saf files. use std::path::Path; use std::path::PathBuf; diff --git a/crates/ai_sandbox/src/calls.rs b/crates/ai_sandbox/src/calls.rs index 16cba2d..d4d33eb 100644 --- a/crates/ai_sandbox/src/calls.rs +++ b/crates/ai_sandbox/src/calls.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Helpers for making [`AdminRequest`]s to the admin api. //! //! This module is designed for use in a CLI so it is more simplified diff --git a/crates/ai_sandbox/src/cli.rs b/crates/ai_sandbox/src/cli.rs index 038e3da..fccd3b5 100644 --- a/crates/ai_sandbox/src/cli.rs +++ b/crates/ai_sandbox/src/cli.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Definitions of StructOpt options for use in the CLI use crate::cmds::*; diff --git a/crates/ai_sandbox/src/cmds.rs b/crates/ai_sandbox/src/cmds.rs index 0599e9b..9fed655 100644 --- a/crates/ai_sandbox/src/cmds.rs +++ b/crates/ai_sandbox/src/cmds.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::path::PathBuf; use aingle_p2p::kitsune_p2p::KitsuneP2pConfig; diff --git a/crates/ai_sandbox/src/config.rs b/crates/ai_sandbox/src/config.rs index 4e92a3b..c016e56 100644 --- a/crates/ai_sandbox/src/config.rs +++ b/crates/ai_sandbox/src/config.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Helpers for creating, reading and writing [`ConductorConfig`]s. use std::path::PathBuf; diff --git a/crates/ai_sandbox/src/generate.rs b/crates/ai_sandbox/src/generate.rs index 8cb9745..2fb7dfb 100644 --- a/crates/ai_sandbox/src/generate.rs +++ b/crates/ai_sandbox/src/generate.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Helpers for generating new directories and [`ConductorConfig`]. use std::path::PathBuf; diff --git a/crates/ai_sandbox/src/lib.rs b/crates/ai_sandbox/src/lib.rs index 2457966..e609e70 100644 --- a/crates/ai_sandbox/src/lib.rs +++ b/crates/ai_sandbox/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![warn(missing_docs)] //! A library and CLI to help create, run and interact with aingle conductor sandboxes. diff --git a/crates/ai_sandbox/src/ports.rs b/crates/ai_sandbox/src/ports.rs index 394c4fa..3289221 100644 --- a/crates/ai_sandbox/src/ports.rs +++ b/crates/ai_sandbox/src/ports.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Helpers for working with websockets and ports. use std::path::PathBuf; use std::sync::Arc; diff --git a/crates/ai_sandbox/src/run.rs b/crates/ai_sandbox/src/run.rs index 6aed570..811ee91 100644 --- a/crates/ai_sandbox/src/run.rs +++ b/crates/ai_sandbox/src/run.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Helpers for running the conductor. use std::path::Path; use std::{path::PathBuf, process::Stdio}; diff --git a/crates/ai_sandbox/src/sandbox.rs b/crates/ai_sandbox/src/sandbox.rs index 844b1fd..d1259a5 100644 --- a/crates/ai_sandbox/src/sandbox.rs +++ b/crates/ai_sandbox/src/sandbox.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Common use sandboxes with lots of default choices. use std::path::Path; use std::path::PathBuf; diff --git a/crates/ai_sandbox/src/save.rs b/crates/ai_sandbox/src/save.rs index ac282dc..66d6d73 100644 --- a/crates/ai_sandbox/src/save.rs +++ b/crates/ai_sandbox/src/save.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! # Manage persistence of sandboxes //! This module gives basic helpers to save / load your sandboxes //! in a `.ai` file. diff --git a/crates/ai_sandbox/tests/cli.rs b/crates/ai_sandbox/tests/cli.rs index 980b87d..80793bc 100644 --- a/crates/ai_sandbox/tests/cli.rs +++ b/crates/ai_sandbox/tests/cli.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::future::Future; use std::sync::Arc; diff --git a/crates/aingle/Cargo.toml b/crates/aingle/Cargo.toml index 33b9993..8224fd8 100644 --- a/crates/aingle/Cargo.toml +++ b/crates/aingle/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "aingle" -version = "0.0.101" +version = "0.4.0" description = "AIngle, a framework for distributed applications" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/aingle" @@ -26,14 +26,14 @@ ghost_actor = "0.3.0-alpha.1" ai_hash = { version = ">=0.0.1", path = "../ai_hash", features = ["full"] } aingle_cascade = { version = "0.0.1", path = "../aingle_cascade" } aingle_conductor_api = { version = "0.0.1", path = "../aingle_conductor_api" } -aingle_ai = { version = "0.3", path = "../aingle_ai", optional = true } +aingle_ai = { version = "0.4", path = "../aingle_ai", optional = true } aingle_keystore = { version = "0.0.1", path = "../aingle_keystore" } aingle_p2p = { version = "0.0.1", path = "../aingle_p2p" } aingle_sqlite = { version = "0.0.1", path = "../aingle_sqlite" } aingle_middleware_bytes = "=0.0.3" aingle_state = { version = "0.0.1", path = "../aingle_state" } aingle_types = { version = "0.0.1", path = "../aingle_types" } -aingle_cortex = { version = "0.3", path = "../aingle_cortex", default-features = false, features = ["rest"] } +aingle_cortex = { version = "0.4", path = "../aingle_cortex", default-features = false, features = ["rest"] } aingle_wasmer_host = "0.0.1" aingle_websocket = { version = "0.0.1", path = "../aingle_websocket" } wasmer = "=7.0.1" @@ -155,5 +155,5 @@ db-encryption = ['aingle_sqlite/db-encryption'] # Incompatible with "db-encryption" no-deps = ['aingle_sqlite/no-deps'] -# Enable AI integration layer (Titans Memory, Nested Learning, HOPE Agents) +# Enable AI integration layer (Ineru, Nested Learning, Kaneru) ai-integration = ['aingle_ai'] diff --git a/crates/aingle/benches/bench.rs b/crates/aingle/benches/bench.rs index ff6c0ce..da61db9 100644 --- a/crates/aingle/benches/bench.rs +++ b/crates/aingle/benches/bench.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ::ai_fixt::prelude::*; use adk::prelude::*; use ai_hash::fixt::AgentPubKeyFixturator; diff --git a/crates/aingle/benches/consistency.rs b/crates/aingle/benches/consistency.rs index 211421d..2ba1b48 100644 --- a/crates/aingle/benches/consistency.rs +++ b/crates/aingle/benches/consistency.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use criterion::criterion_group; use criterion::criterion_main; use criterion::BenchmarkId; diff --git a/crates/aingle/src/bin/aingle/main.rs b/crates/aingle/src/bin/aingle/main.rs index 853ce98..c6b4fa1 100644 --- a/crates/aingle/src/bin/aingle/main.rs +++ b/crates/aingle/src/bin/aingle/main.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle::conductor::config::ConductorConfig; use aingle::conductor::interactive; use aingle::conductor::manager::handle_shutdown; diff --git a/crates/aingle/src/conductor.rs b/crates/aingle/src/conductor.rs index 5bd11df..0f56bf1 100644 --- a/crates/aingle/src/conductor.rs +++ b/crates/aingle/src/conductor.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! A Conductor manages interactions between its contained [Cell]s, as well as //! interactions with the outside world. It is primarily a mediator of messages. //! diff --git a/crates/aingle/src/conductor/ai_service.rs b/crates/aingle/src/conductor/ai_service.rs index c456b4d..7088066 100644 --- a/crates/aingle/src/conductor/ai_service.rs +++ b/crates/aingle/src/conductor/ai_service.rs @@ -1,7 +1,10 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! AI Service for the AIngle Conductor //! //! This module provides AI-powered validation and consensus features -//! using the aingle_ai crate (Titans Memory, Nested Learning, HOPE Agents). +//! using the aingle_ai crate (Ineru, Nested Learning, Kaneru). #[cfg(feature = "ai-integration")] use aingle_ai::{emergent::AiLayer, AiConfig, AiTransaction, ConsensusLevel, ValidationPrediction}; @@ -47,7 +50,7 @@ use tracing::{debug, info, trace, warn}; /// AI Service for intelligent validation and consensus #[cfg(feature = "ai-integration")] pub struct AiService { - /// Unified AI layer (Titans + Nested Learning + Emergent) + /// Unified AI layer (Ineru + Nested Learning + Emergent) ai_layer: Arc>, /// Configuration @@ -225,8 +228,8 @@ impl AiService { let ai_layer = self.ai_layer.read(); let stats = ai_layer.stats(); AiLayerStatsSnapshot { - titans_short_term_size: stats.titans_short_term_size, - titans_long_term_size: stats.titans_long_term_size, + ineru_short_term_size: stats.ineru_short_term_size, + ineru_long_term_size: stats.ineru_long_term_size, nested_tx_count: stats.nested_tx_count, nested_block_count: stats.nested_block_count, } @@ -284,10 +287,10 @@ impl AiService { /// Snapshot of AI layer statistics #[derive(Debug, Clone)] pub struct AiLayerStatsSnapshot { - /// Titans short-term memory size - pub titans_short_term_size: usize, - /// Titans long-term memory size - pub titans_long_term_size: usize, + /// Ineru short-term memory size + pub ineru_short_term_size: usize, + /// Ineru long-term memory size + pub ineru_long_term_size: usize, /// Nested learning transaction count pub nested_tx_count: u64, /// Nested learning block count diff --git a/crates/aingle/src/conductor/api.rs b/crates/aingle/src/conductor/api.rs index 2af22aa..63498f8 100644 --- a/crates/aingle/src/conductor/api.rs +++ b/crates/aingle/src/conductor/api.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![deny(missing_docs)] //! Defines the three Conductor APIs by which other code can communicate diff --git a/crates/aingle/src/conductor/api/api_cell.rs b/crates/aingle/src/conductor/api/api_cell.rs index 4431860..51ab2fe 100644 --- a/crates/aingle/src/conductor/api/api_cell.rs +++ b/crates/aingle/src/conductor/api/api_cell.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The CellConductorApi allows Cells to talk to their Conductor use std::sync::Arc; diff --git a/crates/aingle/src/conductor/api/api_external.rs b/crates/aingle/src/conductor/api/api_external.rs index 58d9d2f..1361678 100644 --- a/crates/aingle/src/conductor/api/api_external.rs +++ b/crates/aingle/src/conductor/api/api_external.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::conductor::interface::error::InterfaceResult; use aingle_middleware_bytes::prelude::*; diff --git a/crates/aingle/src/conductor/api/api_external/admin_interface.rs b/crates/aingle/src/conductor/api/api_external/admin_interface.rs index 6071d54..b4e74a7 100644 --- a/crates/aingle/src/conductor/api/api_external/admin_interface.rs +++ b/crates/aingle/src/conductor/api/api_external/admin_interface.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::InterfaceApi; use crate::conductor::api::error::ConductorApiError; use crate::conductor::api::error::ConductorApiResult; diff --git a/crates/aingle/src/conductor/api/api_external/app_interface.rs b/crates/aingle/src/conductor/api/api_external/app_interface.rs index 8a1168e..a2b8d87 100644 --- a/crates/aingle/src/conductor/api/api_external/app_interface.rs +++ b/crates/aingle/src/conductor/api/api_external/app_interface.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::InterfaceApi; use crate::conductor::api::error::ConductorApiResult; use crate::conductor::api::error::ExternalApiWireError; diff --git a/crates/aingle/src/conductor/api/error.rs b/crates/aingle/src/conductor/api/error.rs index e1fb455..1f2c69f 100644 --- a/crates/aingle/src/conductor/api/error.rs +++ b/crates/aingle/src/conductor/api/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Errors occurring during a [CellConductorApi] or [InterfaceApi] call use crate::conductor::error::ConductorError; diff --git a/crates/aingle/src/conductor/api/mock.rs b/crates/aingle/src/conductor/api/mock.rs index b5e319d..0bd371f 100644 --- a/crates/aingle/src/conductor/api/mock.rs +++ b/crates/aingle/src/conductor/api/mock.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(missing_docs)] use super::CellConductorApiT; diff --git a/crates/aingle/src/conductor/cell.rs b/crates/aingle/src/conductor/cell.rs index 75d0392..c286d49 100644 --- a/crates/aingle/src/conductor/cell.rs +++ b/crates/aingle/src/conductor/cell.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! A Cell is an "instance" of AIngle SAF. //! //! It combines an AgentPubKey with a Saf to create a SourceChain, upon which diff --git a/crates/aingle/src/conductor/cell/error.rs b/crates/aingle/src/conductor/cell/error.rs index ce302fd..62aa765 100644 --- a/crates/aingle/src/conductor/cell/error.rs +++ b/crates/aingle/src/conductor/cell/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::conductor::entry_def_store::error::EntryDefStoreError; use crate::conductor::{api::error::ConductorApiError, error::ConductorError}; use crate::core::ribosome::error::RibosomeError; diff --git a/crates/aingle/src/conductor/cell/gossip_test.rs b/crates/aingle/src/conductor/cell/gossip_test.rs index dbd1826..d773423 100644 --- a/crates/aingle/src/conductor/cell/gossip_test.rs +++ b/crates/aingle/src/conductor/cell/gossip_test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::test_utils::conductor_setup::ConductorTestData; use crate::test_utils::new_zome_call; use crate::test_utils::wait_for_integration; diff --git a/crates/aingle/src/conductor/cell/op_query_test.rs b/crates/aingle/src/conductor/cell/op_query_test.rs index be51973..44bf694 100644 --- a/crates/aingle/src/conductor/cell/op_query_test.rs +++ b/crates/aingle/src/conductor/cell/op_query_test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_sqlite::db::WriteManager; use aingle_state::mutations; use aingle_state::prelude::test_cell_env; diff --git a/crates/aingle/src/conductor/cell/test.rs b/crates/aingle/src/conductor/cell/test.rs index 0c43196..e3adfa2 100644 --- a/crates/aingle/src/conductor/cell/test.rs +++ b/crates/aingle/src/conductor/cell/test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::conductor::manager::spawn_task_manager; use crate::core::ribosome::guest_callback::genesis_self_check::GenesisSelfCheckResult; use crate::core::ribosome::MockRibosomeT; diff --git a/crates/aingle/src/conductor/cell/validation_package.rs b/crates/aingle/src/conductor/cell/validation_package.rs index 66de308..ae3d341 100644 --- a/crates/aingle/src/conductor/cell/validation_package.rs +++ b/crates/aingle/src/conductor/cell/validation_package.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; use crate::core::ribosome::guest_callback::validation_package::ValidationPackageResult; use crate::core::ribosome::RibosomeT; diff --git a/crates/aingle/src/conductor/conductor.rs b/crates/aingle/src/conductor/conductor.rs index c384878..fc88d36 100644 --- a/crates/aingle/src/conductor/conductor.rs +++ b/crates/aingle/src/conductor/conductor.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![deny(missing_docs)] //! A Conductor is a dynamically changing group of [Cell]s. //! diff --git a/crates/aingle/src/conductor/conductor/tests.rs b/crates/aingle/src/conductor/conductor/tests.rs index be1d968..e36a092 100644 --- a/crates/aingle/src/conductor/conductor/tests.rs +++ b/crates/aingle/src/conductor/conductor/tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::Conductor; use super::ConductorState; use super::*; diff --git a/crates/aingle/src/conductor/config.rs b/crates/aingle/src/conductor/config.rs index 967dac9..d7fe026 100644 --- a/crates/aingle/src/conductor/config.rs +++ b/crates/aingle/src/conductor/config.rs @@ -1 +1,4 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + pub use aingle_conductor_api::config::conductor::*; diff --git a/crates/aingle/src/conductor/entry_def_store.rs b/crates/aingle/src/conductor/entry_def_store.rs index ec0f2ad..1eba21c 100644 --- a/crates/aingle/src/conductor/entry_def_store.rs +++ b/crates/aingle/src/conductor/entry_def_store.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! # Entry Defs Store //! Stores all the entry definitions across zomes use crate::core::ribosome::guest_callback::entry_defs::EntryDefsHostAccess; diff --git a/crates/aingle/src/conductor/entry_def_store/error.rs b/crates/aingle/src/conductor/entry_def_store/error.rs index ae6bf1f..4af8d25 100644 --- a/crates/aingle/src/conductor/entry_def_store/error.rs +++ b/crates/aingle/src/conductor/entry_def_store/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(missing_docs)] use crate::core::ribosome::error::RibosomeError; diff --git a/crates/aingle/src/conductor/error.rs b/crates/aingle/src/conductor/error.rs index 3dd0565..430577a 100644 --- a/crates/aingle/src/conductor/error.rs +++ b/crates/aingle/src/conductor/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::interface::error::InterfaceError; use super::{entry_def_store::error::EntryDefStoreError, state::AppInterfaceId}; use crate::conductor::cell::error::CellError; diff --git a/crates/aingle/src/conductor/handle.rs b/crates/aingle/src/conductor/handle.rs index 725d82f..dae5cc8 100644 --- a/crates/aingle/src/conductor/handle.rs +++ b/crates/aingle/src/conductor/handle.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Defines [ConductorHandle], a lightweight cloneable reference to a Conductor //! with a limited public interface. //! diff --git a/crates/aingle/src/conductor/interactive.rs b/crates/aingle/src/conductor/interactive.rs index fa68629..92739b4 100644 --- a/crates/aingle/src/conductor/interactive.rs +++ b/crates/aingle/src/conductor/interactive.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Helper functions for interacting with the user when running a Conductor //! with the --interactive flag diff --git a/crates/aingle/src/conductor/interface.rs b/crates/aingle/src/conductor/interface.rs index 3ff5efa..cec28f2 100644 --- a/crates/aingle/src/conductor/interface.rs +++ b/crates/aingle/src/conductor/interface.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Interfaces are long-running tasks which listen for incoming messages //! and dispatch them to the appropriate handlers within AIngle. //! They also allow emitting responses and one-way Signals. diff --git a/crates/aingle/src/conductor/interface/error.rs b/crates/aingle/src/conductor/interface/error.rs index 8001bb8..2f11b55 100644 --- a/crates/aingle/src/conductor/interface/error.rs +++ b/crates/aingle/src/conductor/interface/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::conductor::error::ConductorError; use aingle_middleware_bytes::SerializedBytesError; use aingle_types::signal::Signal; diff --git a/crates/aingle/src/conductor/interface/websocket.rs b/crates/aingle/src/conductor/interface/websocket.rs index 7b9c26c..1b54cb2 100644 --- a/crates/aingle/src/conductor/interface/websocket.rs +++ b/crates/aingle/src/conductor/interface/websocket.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Module for establishing Websocket-based Interfaces, //! i.e. those configured with `InterfaceDriver::Websocket` diff --git a/crates/aingle/src/conductor/logger.rs b/crates/aingle/src/conductor/logger.rs index e69de29..af77c4d 100644 --- a/crates/aingle/src/conductor/logger.rs +++ b/crates/aingle/src/conductor/logger.rs @@ -0,0 +1,3 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + diff --git a/crates/aingle/src/conductor/manager/error.rs b/crates/aingle/src/conductor/manager/error.rs index 8288d9d..a09de84 100644 --- a/crates/aingle/src/conductor/manager/error.rs +++ b/crates/aingle/src/conductor/manager/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(missing_docs)] use crate::conductor::error::ConductorError; diff --git a/crates/aingle/src/conductor/manager/mod.rs b/crates/aingle/src/conductor/manager/mod.rs index 34d7fef..9fc4901 100644 --- a/crates/aingle/src/conductor/manager/mod.rs +++ b/crates/aingle/src/conductor/manager/mod.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! We want to have control over certain long running //! tasks that we care about. //! If a task that is added to the task manager ends diff --git a/crates/aingle/src/conductor/p2p_agent_store.rs b/crates/aingle/src/conductor/p2p_agent_store.rs index 7e6c21c..5d84ff3 100644 --- a/crates/aingle/src/conductor/p2p_agent_store.rs +++ b/crates/aingle/src/conductor/p2p_agent_store.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Queries for the P2pAgentStore db use ai_hash::AgentPubKey; diff --git a/crates/aingle/src/conductor/p2p_metrics.rs b/crates/aingle/src/conductor/p2p_metrics.rs index 1332f3d..ba38a2d 100644 --- a/crates/aingle/src/conductor/p2p_metrics.rs +++ b/crates/aingle/src/conductor/p2p_metrics.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Queries for the P2pMetrics store // TODO [ B-04249 ] move this to the combined aingle_sqlite crate once // consolidated with aingle_state diff --git a/crates/aingle/src/conductor/paths.rs b/crates/aingle/src/conductor/paths.rs index 0b7fecd..568b807 100644 --- a/crates/aingle/src/conductor/paths.rs +++ b/crates/aingle/src/conductor/paths.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Defines default paths for various resources pub use aingle_conductor_api::config::conductor::paths::*; diff --git a/crates/aingle/src/conductor/saf_store.rs b/crates/aingle/src/conductor/saf_store.rs index 77c78bb..77a2c9e 100644 --- a/crates/aingle/src/conductor/saf_store.rs +++ b/crates/aingle/src/conductor/saf_store.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_types::prelude::*; use aingle_zome_types::entry_def::EntryDef; use std::collections::HashMap; diff --git a/crates/aingle/src/conductor/state.rs b/crates/aingle/src/conductor/state.rs index e62cef2..e6b4dd2 100644 --- a/crates/aingle/src/conductor/state.rs +++ b/crates/aingle/src/conductor/state.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Structs which allow the Conductor's state to be persisted across //! startups and shutdowns diff --git a/crates/aingle/src/core.rs b/crates/aingle/src/core.rs index 1e376e6..2a6dfa4 100644 --- a/crates/aingle/src/core.rs +++ b/crates/aingle/src/core.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Defines the core AIngle workflows #![deny(missing_docs)] diff --git a/crates/aingle/src/core/queue_consumer.rs b/crates/aingle/src/core/queue_consumer.rs index 08b626b..d68b84c 100644 --- a/crates/aingle/src/core/queue_consumer.rs +++ b/crates/aingle/src/core/queue_consumer.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Manages the spawning of tasks which process the various work queues in //! the system, as well as notifying subsequent queue processors to pick up the //! work that was left off. diff --git a/crates/aingle/src/core/queue_consumer/app_validation_consumer.rs b/crates/aingle/src/core/queue_consumer/app_validation_consumer.rs index df784ff..6e0900e 100644 --- a/crates/aingle/src/core/queue_consumer/app_validation_consumer.rs +++ b/crates/aingle/src/core/queue_consumer/app_validation_consumer.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The workflow and queue consumer for sys validation use super::*; diff --git a/crates/aingle/src/core/queue_consumer/integrate_sgd_ops_consumer.rs b/crates/aingle/src/core/queue_consumer/integrate_sgd_ops_consumer.rs index 3f99d87..820cf39 100644 --- a/crates/aingle/src/core/queue_consumer/integrate_sgd_ops_consumer.rs +++ b/crates/aingle/src/core/queue_consumer/integrate_sgd_ops_consumer.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The workflow and queue consumer for SgdOp integration use super::*; diff --git a/crates/aingle/src/core/queue_consumer/publish_sgd_ops_consumer.rs b/crates/aingle/src/core/queue_consumer/publish_sgd_ops_consumer.rs index 67b30cd..ea0de96 100644 --- a/crates/aingle/src/core/queue_consumer/publish_sgd_ops_consumer.rs +++ b/crates/aingle/src/core/queue_consumer/publish_sgd_ops_consumer.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The workflow and queue consumer for sys validation use super::*; diff --git a/crates/aingle/src/core/queue_consumer/sys_validation_consumer.rs b/crates/aingle/src/core/queue_consumer/sys_validation_consumer.rs index 3116376..1129472 100644 --- a/crates/aingle/src/core/queue_consumer/sys_validation_consumer.rs +++ b/crates/aingle/src/core/queue_consumer/sys_validation_consumer.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The workflow and queue consumer for sys validation use super::*; diff --git a/crates/aingle/src/core/queue_consumer/validation_receipt_consumer.rs b/crates/aingle/src/core/queue_consumer/validation_receipt_consumer.rs index a86d3ee..ee184f0 100644 --- a/crates/aingle/src/core/queue_consumer/validation_receipt_consumer.rs +++ b/crates/aingle/src/core/queue_consumer/validation_receipt_consumer.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The workflow and queue consumer for validation receipt use super::*; diff --git a/crates/aingle/src/core/ribosome.rs b/crates/aingle/src/core/ribosome.rs index c60fa8a..d75a827 100644 --- a/crates/aingle/src/core/ribosome.rs +++ b/crates/aingle/src/core/ribosome.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! A Ribosome is a structure which knows how to execute hApp code. //! //! We have only one instance of this: [RealRibosome]. The abstract trait exists diff --git a/crates/aingle/src/core/ribosome/error.rs b/crates/aingle/src/core/ribosome/error.rs index 9d42734..ccd38da 100644 --- a/crates/aingle/src/core/ribosome/error.rs +++ b/crates/aingle/src/core/ribosome/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![deny(missing_docs)] //! Errors occurring during a [Ribosome] call diff --git a/crates/aingle/src/core/ribosome/guest_callback.rs b/crates/aingle/src/core/ribosome/guest_callback.rs index 3f3878d..70d86dc 100644 --- a/crates/aingle/src/core/ribosome/guest_callback.rs +++ b/crates/aingle/src/core/ribosome/guest_callback.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + pub mod entry_defs; pub mod genesis_self_check; pub mod init; diff --git a/crates/aingle/src/core/ribosome/guest_callback/entry_defs.rs b/crates/aingle/src/core/ribosome/guest_callback/entry_defs.rs index 07db341..ee5a64e 100644 --- a/crates/aingle/src/core/ribosome/guest_callback/entry_defs.rs +++ b/crates/aingle/src/core/ribosome/guest_callback/entry_defs.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::FnComponents; use crate::core::ribosome::HostAccess; use crate::core::ribosome::Invocation; diff --git a/crates/aingle/src/core/ribosome/guest_callback/genesis_self_check.rs b/crates/aingle/src/core/ribosome/guest_callback/genesis_self_check.rs index fc76e6f..fc39b3c 100644 --- a/crates/aingle/src/core/ribosome/guest_callback/genesis_self_check.rs +++ b/crates/aingle/src/core/ribosome/guest_callback/genesis_self_check.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::FnComponents; use crate::core::ribosome::HostAccess; use crate::core::ribosome::Invocation; diff --git a/crates/aingle/src/core/ribosome/guest_callback/init.rs b/crates/aingle/src/core/ribosome/guest_callback/init.rs index 3758850..d98fa04 100644 --- a/crates/aingle/src/core/ribosome/guest_callback/init.rs +++ b/crates/aingle/src/core/ribosome/guest_callback/init.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::FnComponents; use crate::core::ribosome::HostAccess; use crate::core::ribosome::Invocation; diff --git a/crates/aingle/src/core/ribosome/guest_callback/migrate_agent.rs b/crates/aingle/src/core/ribosome/guest_callback/migrate_agent.rs index 3afeedb..5bc91e9 100644 --- a/crates/aingle/src/core/ribosome/guest_callback/migrate_agent.rs +++ b/crates/aingle/src/core/ribosome/guest_callback/migrate_agent.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::FnComponents; use crate::core::ribosome::HostAccess; use crate::core::ribosome::Invocation; diff --git a/crates/aingle/src/core/ribosome/guest_callback/post_commit.rs b/crates/aingle/src/core/ribosome/guest_callback/post_commit.rs index 964f361..bdde324 100644 --- a/crates/aingle/src/core/ribosome/guest_callback/post_commit.rs +++ b/crates/aingle/src/core/ribosome/guest_callback/post_commit.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::FnComponents; use crate::core::ribosome::HostAccess; use crate::core::ribosome::Invocation; diff --git a/crates/aingle/src/core/ribosome/guest_callback/validate.rs b/crates/aingle/src/core/ribosome/guest_callback/validate.rs index 857b221..0034d7d 100644 --- a/crates/aingle/src/core/ribosome/guest_callback/validate.rs +++ b/crates/aingle/src/core/ribosome/guest_callback/validate.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::FnComponents; use crate::core::ribosome::HostAccess; use crate::core::ribosome::Invocation; diff --git a/crates/aingle/src/core/ribosome/guest_callback/validate_link.rs b/crates/aingle/src/core/ribosome/guest_callback/validate_link.rs index 9d99fd4..a3d6442 100644 --- a/crates/aingle/src/core/ribosome/guest_callback/validate_link.rs +++ b/crates/aingle/src/core/ribosome/guest_callback/validate_link.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::FnComponents; use crate::core::ribosome::HostAccess; use crate::core::ribosome::Invocation; diff --git a/crates/aingle/src/core/ribosome/guest_callback/validation_package.rs b/crates/aingle/src/core/ribosome/guest_callback/validation_package.rs index 9e7c3cc..13dba2e 100644 --- a/crates/aingle/src/core/ribosome/guest_callback/validation_package.rs +++ b/crates/aingle/src/core/ribosome/guest_callback/validation_package.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::FnComponents; use crate::core::ribosome::HostAccess; use crate::core::ribosome::Invocation; diff --git a/crates/aingle/src/core/ribosome/host_fn.rs b/crates/aingle/src/core/ribosome/host_fn.rs index 9f1580f..699bccc 100644 --- a/crates/aingle/src/core/ribosome/host_fn.rs +++ b/crates/aingle/src/core/ribosome/host_fn.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::CallContext; use super::RibosomeT; use aingle_types::prelude::*; diff --git a/crates/aingle/src/core/ribosome/host_fn/agent_info.rs b/crates/aingle/src/core/ribosome/host_fn/agent_info.rs index 9b1709d..7673f86 100644 --- a/crates/aingle/src/core/ribosome/host_fn/agent_info.rs +++ b/crates/aingle/src/core/ribosome/host_fn/agent_info.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_types::prelude::*; diff --git a/crates/aingle/src/core/ribosome/host_fn/app_info.rs b/crates/aingle/src/core/ribosome/host_fn/app_info.rs index a7e49a5..a47d772 100644 --- a/crates/aingle/src/core/ribosome/host_fn/app_info.rs +++ b/crates/aingle/src/core/ribosome/host_fn/app_info.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use std::sync::Arc; diff --git a/crates/aingle/src/core/ribosome/host_fn/call.rs b/crates/aingle/src/core/ribosome/host_fn/call.rs index 3dbd8cc..c8f6ebc 100644 --- a/crates/aingle/src/core/ribosome/host_fn/call.rs +++ b/crates/aingle/src/core/ribosome/host_fn/call.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use crate::core::ribosome::ZomeCall; diff --git a/crates/aingle/src/core/ribosome/host_fn/call_info.rs b/crates/aingle/src/core/ribosome/host_fn/call_info.rs index 8e596f3..1e53b2d 100644 --- a/crates/aingle/src/core/ribosome/host_fn/call_info.rs +++ b/crates/aingle/src/core/ribosome/host_fn/call_info.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use std::sync::Arc; diff --git a/crates/aingle/src/core/ribosome/host_fn/call_remote.rs b/crates/aingle/src/core/ribosome/host_fn/call_remote.rs index 51cdfde..bb35afc 100644 --- a/crates/aingle/src/core/ribosome/host_fn/call_remote.rs +++ b/crates/aingle/src/core/ribosome/host_fn/call_remote.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_p2p::AIngleP2pCellT; diff --git a/crates/aingle/src/core/ribosome/host_fn/capability_claims.rs b/crates/aingle/src/core/ribosome/host_fn/capability_claims.rs index c934701..ae423ad 100644 --- a/crates/aingle/src/core/ribosome/host_fn/capability_claims.rs +++ b/crates/aingle/src/core/ribosome/host_fn/capability_claims.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use std::sync::Arc; diff --git a/crates/aingle/src/core/ribosome/host_fn/capability_grants.rs b/crates/aingle/src/core/ribosome/host_fn/capability_grants.rs index 14110ac..972ff90 100644 --- a/crates/aingle/src/core/ribosome/host_fn/capability_grants.rs +++ b/crates/aingle/src/core/ribosome/host_fn/capability_grants.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_wasmer_host::prelude::WasmError; diff --git a/crates/aingle/src/core/ribosome/host_fn/capability_info.rs b/crates/aingle/src/core/ribosome/host_fn/capability_info.rs index 15dac53..e548b43 100644 --- a/crates/aingle/src/core/ribosome/host_fn/capability_info.rs +++ b/crates/aingle/src/core/ribosome/host_fn/capability_info.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use std::sync::Arc; diff --git a/crates/aingle/src/core/ribosome/host_fn/create.rs b/crates/aingle/src/core/ribosome/host_fn/create.rs index bc52a73..0f1a316 100644 --- a/crates/aingle/src/core/ribosome/host_fn/create.rs +++ b/crates/aingle/src/core/ribosome/host_fn/create.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::error::RibosomeError; use crate::core::ribosome::guest_callback::entry_defs::EntryDefsInvocation; use crate::core::ribosome::guest_callback::entry_defs::EntryDefsResult; diff --git a/crates/aingle/src/core/ribosome/host_fn/create_link.rs b/crates/aingle/src/core/ribosome/host_fn/create_link.rs index ba0ead4..e52ff31 100644 --- a/crates/aingle/src/core/ribosome/host_fn/create_link.rs +++ b/crates/aingle/src/core/ribosome/host_fn/create_link.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeError; use crate::core::ribosome::RibosomeT; diff --git a/crates/aingle/src/core/ribosome/host_fn/create_x25519_keypair.rs b/crates/aingle/src/core/ribosome/host_fn/create_x25519_keypair.rs index d64af1f..c436130 100644 --- a/crates/aingle/src/core/ribosome/host_fn/create_x25519_keypair.rs +++ b/crates/aingle/src/core/ribosome/host_fn/create_x25519_keypair.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_keystore::keystore_actor::KeystoreSenderExt; diff --git a/crates/aingle/src/core/ribosome/host_fn/delete.rs b/crates/aingle/src/core/ribosome/host_fn/delete.rs index 79a34a2..3d3008c 100644 --- a/crates/aingle/src/core/ribosome/host_fn/delete.rs +++ b/crates/aingle/src/core/ribosome/host_fn/delete.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::error::RibosomeError; use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; diff --git a/crates/aingle/src/core/ribosome/host_fn/delete_link.rs b/crates/aingle/src/core/ribosome/host_fn/delete_link.rs index 7812ce0..f163205 100644 --- a/crates/aingle/src/core/ribosome/host_fn/delete_link.rs +++ b/crates/aingle/src/core/ribosome/host_fn/delete_link.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::error::RibosomeError; use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; diff --git a/crates/aingle/src/core/ribosome/host_fn/emit_signal.rs b/crates/aingle/src/core/ribosome/host_fn/emit_signal.rs index 9fe52db..9bca996 100644 --- a/crates/aingle/src/core/ribosome/host_fn/emit_signal.rs +++ b/crates/aingle/src/core/ribosome/host_fn/emit_signal.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::RibosomeT; use crate::core::ribosome::CallContext; use aingle_types::signal::Signal; diff --git a/crates/aingle/src/core/ribosome/host_fn/get.rs b/crates/aingle/src/core/ribosome/host_fn/get.rs index 098ce67..f2128aa 100644 --- a/crates/aingle/src/core/ribosome/host_fn/get.rs +++ b/crates/aingle/src/core/ribosome/host_fn/get.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_cascade::Cascade; diff --git a/crates/aingle/src/core/ribosome/host_fn/get_agent_activity.rs b/crates/aingle/src/core/ribosome/host_fn/get_agent_activity.rs index 22b81c7..3824720 100644 --- a/crates/aingle/src/core/ribosome/host_fn/get_agent_activity.rs +++ b/crates/aingle/src/core/ribosome/host_fn/get_agent_activity.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_cascade::Cascade; diff --git a/crates/aingle/src/core/ribosome/host_fn/get_details.rs b/crates/aingle/src/core/ribosome/host_fn/get_details.rs index a715e0d..9d0c6ea 100644 --- a/crates/aingle/src/core/ribosome/host_fn/get_details.rs +++ b/crates/aingle/src/core/ribosome/host_fn/get_details.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_cascade::Cascade; diff --git a/crates/aingle/src/core/ribosome/host_fn/get_link_details.rs b/crates/aingle/src/core/ribosome/host_fn/get_link_details.rs index 3e9cf91..7023797 100644 --- a/crates/aingle/src/core/ribosome/host_fn/get_link_details.rs +++ b/crates/aingle/src/core/ribosome/host_fn/get_link_details.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_cascade::Cascade; diff --git a/crates/aingle/src/core/ribosome/host_fn/get_links.rs b/crates/aingle/src/core/ribosome/host_fn/get_links.rs index 8782627..9e6f0e0 100644 --- a/crates/aingle/src/core/ribosome/host_fn/get_links.rs +++ b/crates/aingle/src/core/ribosome/host_fn/get_links.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_cascade::Cascade; diff --git a/crates/aingle/src/core/ribosome/host_fn/graph_query.rs b/crates/aingle/src/core/ribosome/host_fn/graph_query.rs index 1a7213b..a741dab 100644 --- a/crates/aingle/src/core/ribosome/host_fn/graph_query.rs +++ b/crates/aingle/src/core/ribosome/host_fn/graph_query.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_cortex::client::{CortexClientConfig, CortexInternalClient}; diff --git a/crates/aingle/src/core/ribosome/host_fn/graph_store.rs b/crates/aingle/src/core/ribosome/host_fn/graph_store.rs index 84528b0..3cd2499 100644 --- a/crates/aingle/src/core/ribosome/host_fn/graph_store.rs +++ b/crates/aingle/src/core/ribosome/host_fn/graph_store.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_cortex::client::{CortexClientConfig, CortexInternalClient}; diff --git a/crates/aingle/src/core/ribosome/host_fn/hash_entry.rs b/crates/aingle/src/core/ribosome/host_fn/hash_entry.rs index a7627d5..3e53a69 100644 --- a/crates/aingle/src/core/ribosome/host_fn/hash_entry.rs +++ b/crates/aingle/src/core/ribosome/host_fn/hash_entry.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use ai_hash::HasHash; diff --git a/crates/aingle/src/core/ribosome/host_fn/memory_recall.rs b/crates/aingle/src/core/ribosome/host_fn/memory_recall.rs index c003dd5..041f5ec 100644 --- a/crates/aingle/src/core/ribosome/host_fn/memory_recall.rs +++ b/crates/aingle/src/core/ribosome/host_fn/memory_recall.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_cortex::client::{CortexClientConfig, CortexInternalClient}; diff --git a/crates/aingle/src/core/ribosome/host_fn/memory_remember.rs b/crates/aingle/src/core/ribosome/host_fn/memory_remember.rs index eb01220..7607c44 100644 --- a/crates/aingle/src/core/ribosome/host_fn/memory_remember.rs +++ b/crates/aingle/src/core/ribosome/host_fn/memory_remember.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_cortex::client::{CortexClientConfig, CortexInternalClient}; diff --git a/crates/aingle/src/core/ribosome/host_fn/query.rs b/crates/aingle/src/core/ribosome/host_fn/query.rs index 4d46b7d..abde2da 100644 --- a/crates/aingle/src/core/ribosome/host_fn/query.rs +++ b/crates/aingle/src/core/ribosome/host_fn/query.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_types::prelude::*; diff --git a/crates/aingle/src/core/ribosome/host_fn/random_bytes.rs b/crates/aingle/src/core/ribosome/host_fn/random_bytes.rs index d905364..fbeb5a6 100644 --- a/crates/aingle/src/core/ribosome/host_fn/random_bytes.rs +++ b/crates/aingle/src/core/ribosome/host_fn/random_bytes.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_types::prelude::*; diff --git a/crates/aingle/src/core/ribosome/host_fn/remote_signal.rs b/crates/aingle/src/core/ribosome/host_fn/remote_signal.rs index 6aa3314..0b2bacd 100644 --- a/crates/aingle/src/core/ribosome/host_fn/remote_signal.rs +++ b/crates/aingle/src/core/ribosome/host_fn/remote_signal.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_p2p::AIngleP2pCellT; diff --git a/crates/aingle/src/core/ribosome/host_fn/saf_info.rs b/crates/aingle/src/core/ribosome/host_fn/saf_info.rs index 14e38a9..47359bf 100644 --- a/crates/aingle/src/core/ribosome/host_fn/saf_info.rs +++ b/crates/aingle/src/core/ribosome/host_fn/saf_info.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use std::sync::Arc; diff --git a/crates/aingle/src/core/ribosome/host_fn/schedule.rs b/crates/aingle/src/core/ribosome/host_fn/schedule.rs index a7275ba..70bcd12 100644 --- a/crates/aingle/src/core/ribosome/host_fn/schedule.rs +++ b/crates/aingle/src/core/ribosome/host_fn/schedule.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use std::sync::Arc; diff --git a/crates/aingle/src/core/ribosome/host_fn/sign.rs b/crates/aingle/src/core/ribosome/host_fn/sign.rs index c58d14c..ece6e3c 100644 --- a/crates/aingle/src/core/ribosome/host_fn/sign.rs +++ b/crates/aingle/src/core/ribosome/host_fn/sign.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_keystore::keystore_actor::KeystoreSenderExt; diff --git a/crates/aingle/src/core/ribosome/host_fn/sign_ephemeral.rs b/crates/aingle/src/core/ribosome/host_fn/sign_ephemeral.rs index 13a26a6..4f5456c 100644 --- a/crates/aingle/src/core/ribosome/host_fn/sign_ephemeral.rs +++ b/crates/aingle/src/core/ribosome/host_fn/sign_ephemeral.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_types::prelude::*; diff --git a/crates/aingle/src/core/ribosome/host_fn/sleep.rs b/crates/aingle/src/core/ribosome/host_fn/sleep.rs index 9e09647..3dfe148 100644 --- a/crates/aingle/src/core/ribosome/host_fn/sleep.rs +++ b/crates/aingle/src/core/ribosome/host_fn/sleep.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use std::sync::Arc; diff --git a/crates/aingle/src/core/ribosome/host_fn/sys_time.rs b/crates/aingle/src/core/ribosome/host_fn/sys_time.rs index 042b835..4b14fdd 100644 --- a/crates/aingle/src/core/ribosome/host_fn/sys_time.rs +++ b/crates/aingle/src/core/ribosome/host_fn/sys_time.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_wasmer_host::prelude::WasmError; diff --git a/crates/aingle/src/core/ribosome/host_fn/trace.rs b/crates/aingle/src/core/ribosome/host_fn/trace.rs index d85b2dc..b92abaf 100644 --- a/crates/aingle/src/core/ribosome/host_fn/trace.rs +++ b/crates/aingle/src/core/ribosome/host_fn/trace.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_types::prelude::*; diff --git a/crates/aingle/src/core/ribosome/host_fn/unreachable.rs b/crates/aingle/src/core/ribosome/host_fn/unreachable.rs index c7b650f..037c283 100644 --- a/crates/aingle/src/core/ribosome/host_fn/unreachable.rs +++ b/crates/aingle/src/core/ribosome/host_fn/unreachable.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use std::sync::Arc; diff --git a/crates/aingle/src/core/ribosome/host_fn/update.rs b/crates/aingle/src/core/ribosome/host_fn/update.rs index 59cc12b..19a3111 100644 --- a/crates/aingle/src/core/ribosome/host_fn/update.rs +++ b/crates/aingle/src/core/ribosome/host_fn/update.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::create::extract_entry_def; use super::delete::get_original_address; use crate::core::ribosome::CallContext; diff --git a/crates/aingle/src/core/ribosome/host_fn/verify_signature.rs b/crates/aingle/src/core/ribosome/host_fn/verify_signature.rs index d10dcf2..d47ba0f 100644 --- a/crates/aingle/src/core/ribosome/host_fn/verify_signature.rs +++ b/crates/aingle/src/core/ribosome/host_fn/verify_signature.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_keystore::AgentPubKeyExt; diff --git a/crates/aingle/src/core/ribosome/host_fn/version.rs b/crates/aingle/src/core/ribosome/host_fn/version.rs index 9d93055..1690671 100644 --- a/crates/aingle/src/core/ribosome/host_fn/version.rs +++ b/crates/aingle/src/core/ribosome/host_fn/version.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use std::sync::Arc; diff --git a/crates/aingle/src/core/ribosome/host_fn/x_25519_x_salsa20_poly1305_decrypt.rs b/crates/aingle/src/core/ribosome/host_fn/x_25519_x_salsa20_poly1305_decrypt.rs index a317b68..0e334ba 100644 --- a/crates/aingle/src/core/ribosome/host_fn/x_25519_x_salsa20_poly1305_decrypt.rs +++ b/crates/aingle/src/core/ribosome/host_fn/x_25519_x_salsa20_poly1305_decrypt.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_keystore::keystore_actor::KeystoreSenderExt; diff --git a/crates/aingle/src/core/ribosome/host_fn/x_25519_x_salsa20_poly1305_encrypt.rs b/crates/aingle/src/core/ribosome/host_fn/x_25519_x_salsa20_poly1305_encrypt.rs index a04f9aa..d86af9b 100644 --- a/crates/aingle/src/core/ribosome/host_fn/x_25519_x_salsa20_poly1305_encrypt.rs +++ b/crates/aingle/src/core/ribosome/host_fn/x_25519_x_salsa20_poly1305_encrypt.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_keystore::keystore_actor::KeystoreSenderExt; diff --git a/crates/aingle/src/core/ribosome/host_fn/x_salsa20_poly1305_decrypt.rs b/crates/aingle/src/core/ribosome/host_fn/x_salsa20_poly1305_decrypt.rs index 4622463..1113d09 100644 --- a/crates/aingle/src/core/ribosome/host_fn/x_salsa20_poly1305_decrypt.rs +++ b/crates/aingle/src/core/ribosome/host_fn/x_salsa20_poly1305_decrypt.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use std::sync::Arc; diff --git a/crates/aingle/src/core/ribosome/host_fn/x_salsa20_poly1305_encrypt.rs b/crates/aingle/src/core/ribosome/host_fn/x_salsa20_poly1305_encrypt.rs index 12a9789..ca25a49 100644 --- a/crates/aingle/src/core/ribosome/host_fn/x_salsa20_poly1305_encrypt.rs +++ b/crates/aingle/src/core/ribosome/host_fn/x_salsa20_poly1305_encrypt.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use aingle_types::prelude::*; diff --git a/crates/aingle/src/core/ribosome/host_fn/zome_info.rs b/crates/aingle/src/core/ribosome/host_fn/zome_info.rs index 473a2d6..4546c20 100644 --- a/crates/aingle/src/core/ribosome/host_fn/zome_info.rs +++ b/crates/aingle/src/core/ribosome/host_fn/zome_info.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::core::ribosome::CallContext; use crate::core::ribosome::RibosomeT; use ai_hash::HasHash; diff --git a/crates/aingle/src/core/ribosome/indirect_call_test.rs b/crates/aingle/src/core/ribosome/indirect_call_test.rs index d3f509e..63f971d 100644 --- a/crates/aingle/src/core/ribosome/indirect_call_test.rs +++ b/crates/aingle/src/core/ribosome/indirect_call_test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Minimal test to debug indirect call type mismatch //! //! This test creates a minimal WASM module to verify if the issue diff --git a/crates/aingle/src/core/ribosome/real_ribosome.rs b/crates/aingle/src/core/ribosome/real_ribosome.rs index 6758f23..014511e 100644 --- a/crates/aingle/src/core/ribosome/real_ribosome.rs +++ b/crates/aingle/src/core/ribosome/real_ribosome.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::guest_callback::entry_defs::EntryDefsHostAccess; use super::guest_callback::init::InitHostAccess; use super::guest_callback::migrate_agent::MigrateAgentHostAccess; diff --git a/crates/aingle/src/core/sys_validate.rs b/crates/aingle/src/core/sys_validate.rs index 0161df5..edbc49c 100644 --- a/crates/aingle/src/core/sys_validate.rs +++ b/crates/aingle/src/core/sys_validate.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! # System Validation Checks //! This module contains all the checks we run for sys validation diff --git a/crates/aingle/src/core/sys_validate/error.rs b/crates/aingle/src/core/sys_validate/error.rs index 0aba044..a3c53c2 100644 --- a/crates/aingle/src/core/sys_validate/error.rs +++ b/crates/aingle/src/core/sys_validate/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::convert::TryFrom; use super::SourceChainError; diff --git a/crates/aingle/src/core/sys_validate/tests.rs b/crates/aingle/src/core/sys_validate/tests.rs index b7f0995..f644ba6 100644 --- a/crates/aingle/src/core/sys_validate/tests.rs +++ b/crates/aingle/src/core/sys_validate/tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; use crate::conductor::api::error::ConductorApiError; use crate::conductor::api::MockCellConductorApi; diff --git a/crates/aingle/src/core/validation.rs b/crates/aingle/src/core/validation.rs index 98f4ec0..5d6895d 100644 --- a/crates/aingle/src/core/validation.rs +++ b/crates/aingle/src/core/validation.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Types needed for all validation use std::convert::TryFrom; diff --git a/crates/aingle/src/core/workflow.rs b/crates/aingle/src/core/workflow.rs index ac0ecf9..f537406 100644 --- a/crates/aingle/src/core/workflow.rs +++ b/crates/aingle/src/core/workflow.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Workflows are the core building block of AIngle functionality. //! //! ## Properties diff --git a/crates/aingle/src/core/workflow/app_validation_workflow.rs b/crates/aingle/src/core/workflow/app_validation_workflow.rs index 7822c65..de4b2cc 100644 --- a/crates/aingle/src/core/workflow/app_validation_workflow.rs +++ b/crates/aingle/src/core/workflow/app_validation_workflow.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The workflow and queue consumer for sys validation use std::convert::TryInto; diff --git a/crates/aingle/src/core/workflow/app_validation_workflow/error.rs b/crates/aingle/src/core/workflow/app_validation_workflow/error.rs index 39b3570..c563744 100644 --- a/crates/aingle/src/core/workflow/app_validation_workflow/error.rs +++ b/crates/aingle/src/core/workflow/app_validation_workflow/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_p2p::AIngleP2pError; use aingle_types::prelude::*; use thiserror::Error; diff --git a/crates/aingle/src/core/workflow/app_validation_workflow/network_call_tests.rs b/crates/aingle/src/core/workflow/app_validation_workflow/network_call_tests.rs index d98ca43..1f97690 100644 --- a/crates/aingle/src/core/workflow/app_validation_workflow/network_call_tests.rs +++ b/crates/aingle/src/core/workflow/app_validation_workflow/network_call_tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::Element; use adk::prelude::EntryType; use adk::prelude::ValidationPackage; diff --git a/crates/aingle/src/core/workflow/app_validation_workflow/tests.rs b/crates/aingle/src/core/workflow/app_validation_workflow/tests.rs index a3dc32a..839b647 100644 --- a/crates/aingle/src/core/workflow/app_validation_workflow/tests.rs +++ b/crates/aingle/src/core/workflow/app_validation_workflow/tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::conductor::ConductorHandle; use crate::core::ribosome::ZomeCallInvocation; use crate::test_utils::host_fn_caller::*; diff --git a/crates/aingle/src/core/workflow/app_validation_workflow/types.rs b/crates/aingle/src/core/workflow/app_validation_workflow/types.rs index 7286389..d0aef14 100644 --- a/crates/aingle/src/core/workflow/app_validation_workflow/types.rs +++ b/crates/aingle/src/core/workflow/app_validation_workflow/types.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::convert::TryFrom; use ai_hash::AnySgdHash; diff --git a/crates/aingle/src/core/workflow/app_validation_workflow/validation_package.rs b/crates/aingle/src/core/workflow/app_validation_workflow/validation_package.rs index 733cc6a..443d17f 100644 --- a/crates/aingle/src/core/workflow/app_validation_workflow/validation_package.rs +++ b/crates/aingle/src/core/workflow/app_validation_workflow/validation_package.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_p2p::AIngleP2pCell; use aingle_state::host_fn_workspace::HostFnWorkspace; use aingle_types::prelude::*; diff --git a/crates/aingle/src/core/workflow/call_zome_workflow.rs b/crates/aingle/src/core/workflow/call_zome_workflow.rs index c8953d2..73d294f 100644 --- a/crates/aingle/src/core/workflow/call_zome_workflow.rs +++ b/crates/aingle/src/core/workflow/call_zome_workflow.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::app_validation_workflow; use super::app_validation_workflow::Outcome; use super::error::WorkflowResult; diff --git a/crates/aingle/src/core/workflow/call_zome_workflow/validation_test.rs b/crates/aingle/src/core/workflow/call_zome_workflow/validation_test.rs index c513f46..6d740bc 100644 --- a/crates/aingle/src/core/workflow/call_zome_workflow/validation_test.rs +++ b/crates/aingle/src/core/workflow/call_zome_workflow/validation_test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::conductor::api::error::ConductorApiError; use crate::conductor::CellError; use crate::conductor::ConductorHandle; diff --git a/crates/aingle/src/core/workflow/error.rs b/crates/aingle/src/core/workflow/error.rs index cd3a21a..340c2be 100644 --- a/crates/aingle/src/core/workflow/error.rs +++ b/crates/aingle/src/core/workflow/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + // Error types are self-explanatory #![allow(missing_docs)] diff --git a/crates/aingle/src/core/workflow/genesis_workflow.rs b/crates/aingle/src/core/workflow/genesis_workflow.rs index b46a0ff..f080a17 100644 --- a/crates/aingle/src/core/workflow/genesis_workflow.rs +++ b/crates/aingle/src/core/workflow/genesis_workflow.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Genesis Workflow: Initialize the source chain with the initial entries: //! - Saf //! - AgentValidationPkg diff --git a/crates/aingle/src/core/workflow/incoming_sgd_ops_workflow.rs b/crates/aingle/src/core/workflow/incoming_sgd_ops_workflow.rs index 4c2ac94..89dd8c5 100644 --- a/crates/aingle/src/core/workflow/incoming_sgd_ops_workflow.rs +++ b/crates/aingle/src/core/workflow/incoming_sgd_ops_workflow.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The workflow and queue consumer for SgdOp integration use super::error::WorkflowResult; diff --git a/crates/aingle/src/core/workflow/incoming_sgd_ops_workflow/test.rs b/crates/aingle/src/core/workflow/incoming_sgd_ops_workflow/test.rs index fd5bc7f..394c6e9 100644 --- a/crates/aingle/src/core/workflow/incoming_sgd_ops_workflow/test.rs +++ b/crates/aingle/src/core/workflow/incoming_sgd_ops_workflow/test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; use ::ai_fixt::prelude::*; use aingle_keystore::AgentPubKeyExt; diff --git a/crates/aingle/src/core/workflow/initialize_zomes_workflow.rs b/crates/aingle/src/core/workflow/initialize_zomes_workflow.rs index 4824548..415e56c 100644 --- a/crates/aingle/src/core/workflow/initialize_zomes_workflow.rs +++ b/crates/aingle/src/core/workflow/initialize_zomes_workflow.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::error::WorkflowResult; use crate::conductor::api::CellConductorApiT; use crate::core::ribosome::guest_callback::init::InitHostAccess; diff --git a/crates/aingle/src/core/workflow/integrate_sgd_ops_workflow.rs b/crates/aingle/src/core/workflow/integrate_sgd_ops_workflow.rs index dcb6fd0..c2d5b8d 100644 --- a/crates/aingle/src/core/workflow/integrate_sgd_ops_workflow.rs +++ b/crates/aingle/src/core/workflow/integrate_sgd_ops_workflow.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The workflow and queue consumer for SgdOp integration use super::error::WorkflowResult; diff --git a/crates/aingle/src/core/workflow/integrate_sgd_ops_workflow/query_tests.rs b/crates/aingle/src/core/workflow/integrate_sgd_ops_workflow/query_tests.rs index 080dbd4..bc780e2 100644 --- a/crates/aingle/src/core/workflow/integrate_sgd_ops_workflow/query_tests.rs +++ b/crates/aingle/src/core/workflow/integrate_sgd_ops_workflow/query_tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::collections::HashMap; use std::collections::HashSet; diff --git a/crates/aingle/src/core/workflow/integrate_sgd_ops_workflow/tests.rs b/crates/aingle/src/core/workflow/integrate_sgd_ops_workflow/tests.rs index b52f6d3..a93de5f 100644 --- a/crates/aingle/src/core/workflow/integrate_sgd_ops_workflow/tests.rs +++ b/crates/aingle/src/core/workflow/integrate_sgd_ops_workflow/tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![cfg(test)] #![cfg(feature = "test_utils")] diff --git a/crates/aingle/src/core/workflow/publish_sgd_ops_workflow.rs b/crates/aingle/src/core/workflow/publish_sgd_ops_workflow.rs index 5c26df3..3b4629e 100644 --- a/crates/aingle/src/core/workflow/publish_sgd_ops_workflow.rs +++ b/crates/aingle/src/core/workflow/publish_sgd_ops_workflow.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! # Publish Sgd Op Workflow //! //! ## Open questions diff --git a/crates/aingle/src/core/workflow/publish_sgd_ops_workflow/publish_query.rs b/crates/aingle/src/core/workflow/publish_sgd_ops_workflow/publish_query.rs index d11696d..773aeac 100644 --- a/crates/aingle/src/core/workflow/publish_sgd_ops_workflow/publish_query.rs +++ b/crates/aingle/src/core/workflow/publish_sgd_ops_workflow/publish_query.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + // use std::time::SystemTime; // use std::time::UNIX_EPOCH; diff --git a/crates/aingle/src/core/workflow/sys_validation_workflow.rs b/crates/aingle/src/core/workflow/sys_validation_workflow.rs index c29d472..33bd994 100644 --- a/crates/aingle/src/core/workflow/sys_validation_workflow.rs +++ b/crates/aingle/src/core/workflow/sys_validation_workflow.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The workflow and queue consumer for sys validation #![allow(deprecated)] diff --git a/crates/aingle/src/core/workflow/sys_validation_workflow/chain_test.rs b/crates/aingle/src/core/workflow/sys_validation_workflow/chain_test.rs index 17f5639..5077506 100644 --- a/crates/aingle/src/core/workflow/sys_validation_workflow/chain_test.rs +++ b/crates/aingle/src/core/workflow/sys_validation_workflow/chain_test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; use crate::conductor::ConductorHandle; use crate::test_utils::setup_app; diff --git a/crates/aingle/src/core/workflow/sys_validation_workflow/test_ideas.rs b/crates/aingle/src/core/workflow/sys_validation_workflow/test_ideas.rs index 3dc2353..6315286 100644 --- a/crates/aingle/src/core/workflow/sys_validation_workflow/test_ideas.rs +++ b/crates/aingle/src/core/workflow/sys_validation_workflow/test_ideas.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + /// Stubs for things that might break validation /// This test shows a way to create a delete with a rejected header diff --git a/crates/aingle/src/core/workflow/sys_validation_workflow/tests.rs b/crates/aingle/src/core/workflow/sys_validation_workflow/tests.rs index 94844d2..c1468cf 100644 --- a/crates/aingle/src/core/workflow/sys_validation_workflow/tests.rs +++ b/crates/aingle/src/core/workflow/sys_validation_workflow/tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::test_utils::host_fn_caller::*; use crate::test_utils::setup_app; use crate::test_utils::wait_for_integration; diff --git a/crates/aingle/src/core/workflow/sys_validation_workflow/types.rs b/crates/aingle/src/core/workflow/sys_validation_workflow/types.rs index 58bbea2..30258a0 100644 --- a/crates/aingle/src/core/workflow/sys_validation_workflow/types.rs +++ b/crates/aingle/src/core/workflow/sys_validation_workflow/types.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; #[derive(Debug)] diff --git a/crates/aingle/src/core/workflow/sys_validation_workflow/validation_query.rs b/crates/aingle/src/core/workflow/sys_validation_workflow/validation_query.rs index 6380a7c..ed26f3d 100644 --- a/crates/aingle/src/core/workflow/sys_validation_workflow/validation_query.rs +++ b/crates/aingle/src/core/workflow/sys_validation_workflow/validation_query.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::SgdOpHash; use aingle_state::query::prelude::*; use aingle_types::env::EnvRead; diff --git a/crates/aingle/src/core/workflow/validation_receipt_workflow.rs b/crates/aingle/src/core/workflow/validation_receipt_workflow.rs index 15399e1..fda9e93 100644 --- a/crates/aingle/src/core/workflow/validation_receipt_workflow.rs +++ b/crates/aingle/src/core/workflow/validation_receipt_workflow.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_p2p::AIngleP2pCell; use aingle_p2p::AIngleP2pCellT; use aingle_state::prelude::*; diff --git a/crates/aingle/src/core/workflow/validation_receipt_workflow/tests.rs b/crates/aingle/src/core/workflow/validation_receipt_workflow/tests.rs index 8479609..3d36c86 100644 --- a/crates/aingle/src/core/workflow/validation_receipt_workflow/tests.rs +++ b/crates/aingle/src/core/workflow/validation_receipt_workflow/tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::sweettest::*; use crate::test_utils::consistency_10s; use adk::prelude::*; diff --git a/crates/aingle/src/fixt.rs b/crates/aingle/src/fixt.rs index f4fb116..58df15e 100644 --- a/crates/aingle/src/fixt.rs +++ b/crates/aingle/src/fixt.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + pub mod curve; use crate::conductor::api::CellConductorApi; diff --git a/crates/aingle/src/fixt/curve.rs b/crates/aingle/src/fixt/curve.rs index 6c4c840..15f4b23 100644 --- a/crates/aingle/src/fixt/curve.rs +++ b/crates/aingle/src/fixt/curve.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_wasm_test_utils::TestWasm; pub struct Zomes(pub Vec); diff --git a/crates/aingle/src/lib.rs b/crates/aingle/src/lib.rs index abbab25..b8c4b3f 100644 --- a/crates/aingle/src/lib.rs +++ b/crates/aingle/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! All the components you need to build a AIngle Conductor // Toggle this to see what needs to be eventually refactored (as warnings). diff --git a/crates/aingle/src/local_network_tests.rs b/crates/aingle/src/local_network_tests.rs index 826b1c6..a2724fe 100644 --- a/crates/aingle/src/local_network_tests.rs +++ b/crates/aingle/src/local_network_tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::convert::TryFrom; use std::sync::Arc; diff --git a/crates/aingle/src/perf.rs b/crates/aingle/src/perf.rs index e69de29..af77c4d 100644 --- a/crates/aingle/src/perf.rs +++ b/crates/aingle/src/perf.rs @@ -0,0 +1,3 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + diff --git a/crates/aingle/src/sweettest/mod.rs b/crates/aingle/src/sweettest/mod.rs index 404667b..b56e1e1 100644 --- a/crates/aingle/src/sweettest/mod.rs +++ b/crates/aingle/src/sweettest/mod.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! sweettest = Streamlined AIngle test utils with lots of added sugar //! //! Features: diff --git a/crates/aingle/src/sweettest/sweet_agents.rs b/crates/aingle/src/sweettest/sweet_agents.rs index 55e1841..6b2e414 100644 --- a/crates/aingle/src/sweettest/sweet_agents.rs +++ b/crates/aingle/src/sweettest/sweet_agents.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Simple methods for generating collections of AgentPubKeys for use in tests use ai_hash::AgentPubKey; diff --git a/crates/aingle/src/sweettest/sweet_app.rs b/crates/aingle/src/sweettest/sweet_app.rs index efe9a58..8bd82a0 100644 --- a/crates/aingle/src/sweettest/sweet_app.rs +++ b/crates/aingle/src/sweettest/sweet_app.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::SweetCell; use ai_hash::AgentPubKey; use aingle_types::app::InstalledAppId; diff --git a/crates/aingle/src/sweettest/sweet_cell.rs b/crates/aingle/src/sweettest/sweet_cell.rs index 50a05f5..39247e5 100644 --- a/crates/aingle/src/sweettest/sweet_cell.rs +++ b/crates/aingle/src/sweettest/sweet_cell.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::SweetZome; use adk::prelude::*; use ai_hash::SafHash; diff --git a/crates/aingle/src/sweettest/sweet_conductor.rs b/crates/aingle/src/sweettest/sweet_conductor.rs index 31da27c..064dc77 100644 --- a/crates/aingle/src/sweettest/sweet_conductor.rs +++ b/crates/aingle/src/sweettest/sweet_conductor.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! A wrapper around ConductorHandle with more convenient methods for testing // TODO [ B-03669 ] move to own crate diff --git a/crates/aingle/src/sweettest/sweet_conductor_batch.rs b/crates/aingle/src/sweettest/sweet_conductor_batch.rs index 2ba3880..cf60262 100644 --- a/crates/aingle/src/sweettest/sweet_conductor_batch.rs +++ b/crates/aingle/src/sweettest/sweet_conductor_batch.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::{standard_config, SweetAgents, SweetAppBatch, SweetConductor}; use crate::conductor::{config::ConductorConfig, error::ConductorResult}; use adk::prelude::*; diff --git a/crates/aingle/src/sweettest/sweet_conductor_handle.rs b/crates/aingle/src/sweettest/sweet_conductor_handle.rs index d7e3965..134826e 100644 --- a/crates/aingle/src/sweettest/sweet_conductor_handle.rs +++ b/crates/aingle/src/sweettest/sweet_conductor_handle.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::SweetZome; use crate::conductor::{api::error::ConductorApiResult, ConductorHandle}; use aingle_conductor_api::ZomeCall; diff --git a/crates/aingle/src/sweettest/sweet_network.rs b/crates/aingle/src/sweettest/sweet_network.rs index 9ef5a0c..dacea90 100644 --- a/crates/aingle/src/sweettest/sweet_network.rs +++ b/crates/aingle/src/sweettest/sweet_network.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use kitsune_p2p::KitsuneP2pConfig; /// Helper for constructing common kitsune networks diff --git a/crates/aingle/src/sweettest/sweet_saf.rs b/crates/aingle/src/sweettest/sweet_saf.rs index 5f45bbe..ac8e752 100644 --- a/crates/aingle/src/sweettest/sweet_saf.rs +++ b/crates/aingle/src/sweettest/sweet_saf.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_types::prelude::*; use std::path::Path; diff --git a/crates/aingle/src/sweettest/sweet_zome.rs b/crates/aingle/src/sweettest/sweet_zome.rs index b028c56..86c6590 100644 --- a/crates/aingle/src/sweettest/sweet_zome.rs +++ b/crates/aingle/src/sweettest/sweet_zome.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; /// A reference to a Zome in a Cell created by a SweetConductor installation function. diff --git a/crates/aingle/src/test_utils.rs b/crates/aingle/src/test_utils.rs index 86512a0..c0c8384 100644 --- a/crates/aingle/src/test_utils.rs +++ b/crates/aingle/src/test_utils.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Utils for AIngle tests use crate::conductor::api::RealAppInterfaceApi; diff --git a/crates/aingle/src/test_utils/conductor_setup.rs b/crates/aingle/src/test_utils/conductor_setup.rs index fe36260..9b526eb 100644 --- a/crates/aingle/src/test_utils/conductor_setup.rs +++ b/crates/aingle/src/test_utils/conductor_setup.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(missing_docs)] use super::host_fn_caller::HostFnCaller; diff --git a/crates/aingle/src/test_utils/host_fn_caller.rs b/crates/aingle/src/test_utils/host_fn_caller.rs index 8f1b57a..b80a989 100644 --- a/crates/aingle/src/test_utils/host_fn_caller.rs +++ b/crates/aingle/src/test_utils/host_fn_caller.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(missing_docs)] use crate::conductor::api::CellConductorApi; diff --git a/crates/aingle/src/test_utils/test_conductor/test_handle.rs b/crates/aingle/src/test_utils/test_conductor/test_handle.rs index e3b6d36..1d9ea54 100644 --- a/crates/aingle/src/test_utils/test_conductor/test_handle.rs +++ b/crates/aingle/src/test_utils/test_conductor/test_handle.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! A wrapper around ConductorHandle with more convenient methods for testing // TODO [ B-03669 ] move to own crate diff --git a/crates/aingle/src/test_utils/wait_for_any.rs b/crates/aingle/src/test_utils/wait_for_any.rs index 09b5585..15f500a 100644 --- a/crates/aingle/src/test_utils/wait_for_any.rs +++ b/crates/aingle/src/test_utils/wait_for_any.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::time::Duration; /// Wait for any condition with custom wait parameters and assertions. diff --git a/crates/aingle/tests/agent_scaling.rs b/crates/aingle/tests/agent_scaling.rs index 1088919..db09f6f 100644 --- a/crates/aingle/tests/agent_scaling.rs +++ b/crates/aingle/tests/agent_scaling.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![cfg(feature = "test_utils")] use adk::prelude::Links; diff --git a/crates/aingle/tests/authored_test.rs b/crates/aingle/tests/authored_test.rs index 92b1b89..5a44d74 100644 --- a/crates/aingle/tests/authored_test.rs +++ b/crates/aingle/tests/authored_test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::convert::TryFrom; use std::convert::TryInto; use std::time::Duration; diff --git a/crates/aingle/tests/inline_zome_spec.rs b/crates/aingle/tests/inline_zome_spec.rs index 136a466..b64aeb0 100644 --- a/crates/aingle/tests/inline_zome_spec.rs +++ b/crates/aingle/tests/inline_zome_spec.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![cfg(feature = "test_utils")] use std::sync::Arc; diff --git a/crates/aingle/tests/multi_conductor.rs b/crates/aingle/tests/multi_conductor.rs index fd8361d..014fe29 100644 --- a/crates/aingle/tests/multi_conductor.rs +++ b/crates/aingle/tests/multi_conductor.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; use aingle::conductor::config::ConductorConfig; use aingle::sweettest::SweetNetwork; diff --git a/crates/aingle/tests/network_tests.rs b/crates/aingle/tests/network_tests.rs index 0a2746b..1f9e4ac 100644 --- a/crates/aingle/tests/network_tests.rs +++ b/crates/aingle/tests/network_tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![cfg(feature = "test_utils")] #![cfg(todo_redo_old_tests)] #![allow(unused_imports)] diff --git a/crates/aingle/tests/ser_regression.rs b/crates/aingle/tests/ser_regression.rs index 1a7e4a2..9157be1 100644 --- a/crates/aingle/tests/ser_regression.rs +++ b/crates/aingle/tests/ser_regression.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(deprecated)] use ::ai_fixt::prelude::*; diff --git a/crates/aingle/tests/sgd_arc.rs b/crates/aingle/tests/sgd_arc.rs index b10996e..210d021 100644 --- a/crates/aingle/tests/sgd_arc.rs +++ b/crates/aingle/tests/sgd_arc.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle::sweettest::SweetAgents; use aingle::sweettest::SweetConductor; use aingle_keystore::KeystoreSender; diff --git a/crates/aingle/tests/speed_tests.rs b/crates/aingle/tests/speed_tests.rs index d34760c..8eb3de4 100644 --- a/crates/aingle/tests/speed_tests.rs +++ b/crates/aingle/tests/speed_tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! # Speed tests //! These are designed to diagnose performance issues from a macro level. //! They are not intended to detect performance regressions or to be run in CI. diff --git a/crates/aingle/tests/test_cli.rs b/crates/aingle/tests/test_cli.rs index 0b152ca..81dfba7 100644 --- a/crates/aingle/tests/test_cli.rs +++ b/crates/aingle/tests/test_cli.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![cfg(test)] use assert_cmd::prelude::*; diff --git a/crates/aingle/tests/test_utils.rs b/crates/aingle/tests/test_utils.rs index bc1fe56..5ac6c24 100644 --- a/crates/aingle/tests/test_utils.rs +++ b/crates/aingle/tests/test_utils.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle::conductor::ConductorHandle; use aingle_websocket::WebsocketReceiver; use aingle_websocket::WebsocketSender; diff --git a/crates/aingle/tests/websocket.rs b/crates/aingle/tests/websocket.rs index 1aaf747..6d7ca16 100644 --- a/crates/aingle/tests/websocket.rs +++ b/crates/aingle/tests/websocket.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ::ai_fixt::prelude::*; use adk::prelude::RemoteSignal; use aingle::sweettest::SweetAgents; diff --git a/crates/aingle_ai/Cargo.toml b/crates/aingle_ai/Cargo.toml index 3676a66..d8a10f5 100644 --- a/crates/aingle_ai/Cargo.toml +++ b/crates/aingle_ai/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "aingle_ai" -version = "0.3.8" -description = "AI integration layer for AIngle - Titans Memory, Nested Learning, HOPE Agents" -license = "Apache-2.0" +version = "0.4.0" +description = "AI integration layer for AIngle - Ineru, Nested Learning, Kaneru" +license = "Apache-2.0 OR LicenseRef-Commercial" repository = "https://github.com/ApiliumCode/aingle" homepage = "https://apilium.com" documentation = "https://docs.rs/aingle_ai" diff --git a/crates/aingle_ai/src/config.rs b/crates/aingle_ai/src/config.rs index ced1f43..9b55a28 100644 --- a/crates/aingle_ai/src/config.rs +++ b/crates/aingle_ai/src/config.rs @@ -1,21 +1,24 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Global AI configuration -use crate::hope::HopeConfig; +use crate::kaneru::KaneruConfig; use crate::nested_learning::NestedConfig; -use crate::titans::TitansConfig; +use crate::ineru::IneruConfig; use serde::{Deserialize, Serialize}; /// Global AI configuration for AIngle nodes #[derive(Debug, Clone, Serialize, Deserialize)] pub struct AiConfig { - /// Titans Memory configuration - pub titans: TitansConfig, + /// Ineru memory configuration + pub titans: IneruConfig, /// Nested Learning configuration pub nested_learning: NestedConfig, - /// HOPE Agent configuration - pub hope: HopeConfig, + /// Kaneru Agent configuration + pub kaneru: KaneruConfig, /// Enable predictive validation pub predictive_validation: bool, @@ -30,9 +33,9 @@ pub struct AiConfig { impl Default for AiConfig { fn default() -> Self { Self { - titans: TitansConfig::default(), + titans: IneruConfig::default(), nested_learning: NestedConfig::default(), - hope: HopeConfig::default(), + kaneru: KaneruConfig::default(), predictive_validation: true, adaptive_consensus: true, iot_mode: false, @@ -44,9 +47,9 @@ impl AiConfig { /// Create IoT-optimized configuration pub fn iot() -> Self { Self { - titans: TitansConfig::iot(), + titans: IneruConfig::iot(), nested_learning: NestedConfig::iot(), - hope: HopeConfig::iot(), + kaneru: KaneruConfig::iot(), predictive_validation: false, // Too expensive for IoT adaptive_consensus: true, iot_mode: true, @@ -56,9 +59,9 @@ impl AiConfig { /// Create full-power configuration for servers pub fn full_power() -> Self { Self { - titans: TitansConfig::full_power(), + titans: IneruConfig::full_power(), nested_learning: NestedConfig::full_power(), - hope: HopeConfig::full_power(), + kaneru: KaneruConfig::full_power(), predictive_validation: true, adaptive_consensus: true, iot_mode: false, @@ -79,7 +82,7 @@ impl AiConfig { pub fn validate(&self) -> Result<(), String> { self.titans.validate()?; self.nested_learning.validate()?; - self.hope.validate()?; + self.kaneru.validate()?; Ok(()) } } diff --git a/crates/aingle_ai/src/emergent/adaptive_consensus.rs b/crates/aingle_ai/src/emergent/adaptive_consensus.rs index 63e7aa2..1ddc2f9 100644 --- a/crates/aingle_ai/src/emergent/adaptive_consensus.rs +++ b/crates/aingle_ai/src/emergent/adaptive_consensus.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Adaptive Consensus //! //! Adjust consensus level based on transaction importance. diff --git a/crates/aingle_ai/src/emergent/mod.rs b/crates/aingle_ai/src/emergent/mod.rs index 2626599..d591a5d 100644 --- a/crates/aingle_ai/src/emergent/mod.rs +++ b/crates/aingle_ai/src/emergent/mod.rs @@ -1,7 +1,10 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! # Emergent Capabilities //! -//! Higher-level AI capabilities that emerge from combining Titans Memory, -//! Nested Learning, and HOPE Agents. +//! Higher-level AI capabilities that emerge from combining Ineru, +//! Nested Learning, and Kaneru. //! //! ## Components //! @@ -15,13 +18,13 @@ pub use adaptive_consensus::AdaptiveConsensus; pub use predictive_validator::PredictiveValidator; use crate::nested_learning::NestedLearning; -use crate::titans::TitansMemory; +use crate::ineru::IneruMemory; use crate::types::{AiTransaction, ConsensusLevel, ValidationPrediction}; /// Unified AI layer combining all capabilities pub struct AiLayer { - /// Titans Memory for pattern learning - titans: TitansMemory, + /// Ineru memory for pattern learning + ineru: IneruMemory, /// Nested Learning for optimization nested: NestedLearning, @@ -37,10 +40,10 @@ impl AiLayer { /// Create a new AI layer with default configuration pub fn new() -> Self { use crate::nested_learning::NestedConfig; - use crate::titans::TitansConfig; + use crate::ineru::IneruConfig; Self { - titans: TitansMemory::new(TitansConfig::default()), + ineru: IneruMemory::new(IneruConfig::default()), nested: NestedLearning::new(NestedConfig::default()), predictor: PredictiveValidator::new(), consensus: AdaptiveConsensus::new(), @@ -49,14 +52,14 @@ impl AiLayer { /// Process a transaction through the full AI pipeline pub fn process(&mut self, tx: &AiTransaction) -> AiProcessResult { - // 1. Process through Titans memory - let titans_result = self.titans.process(tx).ok(); + // 1. Process through Ineru memory + let ineru_result = self.ineru.process(tx).ok(); // 2. Process through Nested Learning let nested_result = self.nested.process(tx).ok(); // 3. Get validation prediction - let prediction = self.predictor.predict(tx, &self.titans, &self.nested); + let prediction = self.predictor.predict(tx, &self.ineru, &self.nested); // 4. Determine consensus level let consensus_level = self.consensus.determine_level(tx, &prediction); @@ -64,7 +67,7 @@ impl AiLayer { AiProcessResult { prediction, consensus_level, - stored_pattern: titans_result.map(|r| r.stored_long_term).unwrap_or(false), + stored_pattern: ineru_result.map(|r| r.stored_long_term).unwrap_or(false), validation_strategy: nested_result.map(|r| r.strategy), } } @@ -72,7 +75,7 @@ impl AiLayer { /// Query for similar patterns pub fn query_similar(&self, tx: &AiTransaction, limit: usize) -> Vec { let pattern = tx.to_pattern(); - self.titans + self.ineru .query(&pattern, limit) .into_iter() .map(|m| PatternMatch { @@ -84,12 +87,12 @@ impl AiLayer { /// Get AI layer statistics pub fn stats(&self) -> AiLayerStats { - let titans_stats = self.titans.stats(); + let ineru_stats = self.ineru.stats(); let nested_stats = self.nested.stats(); AiLayerStats { - titans_short_term_size: titans_stats.short_term_size, - titans_long_term_size: titans_stats.long_term_size, + ineru_short_term_size: ineru_stats.short_term_size, + ineru_long_term_size: ineru_stats.long_term_size, nested_tx_count: nested_stats.tx_count, nested_block_count: nested_stats.block_count, } @@ -127,10 +130,10 @@ pub struct PatternMatch { /// AI layer statistics #[derive(Debug, Clone)] pub struct AiLayerStats { - /// Titans short-term memory size - pub titans_short_term_size: usize, - /// Titans long-term memory size - pub titans_long_term_size: usize, + /// Ineru short-term memory size + pub ineru_short_term_size: usize, + /// Ineru long-term memory size + pub ineru_long_term_size: usize, /// Nested learning transaction count pub nested_tx_count: u64, /// Nested learning block count diff --git a/crates/aingle_ai/src/emergent/predictive_validator.rs b/crates/aingle_ai/src/emergent/predictive_validator.rs index 8cf85ad..d96d7f2 100644 --- a/crates/aingle_ai/src/emergent/predictive_validator.rs +++ b/crates/aingle_ai/src/emergent/predictive_validator.rs @@ -1,9 +1,12 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Predictive Validator //! //! Predict validation outcome before full validation. use crate::nested_learning::NestedLearning; -use crate::titans::TitansMemory; +use crate::ineru::IneruMemory; use crate::types::{AiTransaction, ValidationPrediction}; /// Predict validation outcome before full validation @@ -32,12 +35,12 @@ impl PredictiveValidator { pub fn predict( &self, tx: &AiTransaction, - titans: &TitansMemory, + ineru: &IneruMemory, nested: &NestedLearning, ) -> ValidationPrediction { // Use Titans memory for pattern matching let pattern = tx.to_pattern(); - let similar_patterns = titans.query(&pattern, 100); + let similar_patterns = ineru.query(&pattern, 100); // Use Nested Learning for complexity estimation let complexity = { @@ -158,7 +161,7 @@ pub struct PredictionAccuracy { mod tests { use super::*; use crate::nested_learning::NestedConfig; - use crate::titans::TitansConfig; + use crate::ineru::IneruConfig; fn make_test_tx(id: u8) -> AiTransaction { AiTransaction { @@ -174,11 +177,11 @@ mod tests { #[test] fn test_predictive_validator() { let validator = PredictiveValidator::new(); - let titans = TitansMemory::new(TitansConfig::default()); + let ineru = IneruMemory::new(IneruConfig::default()); let nested = NestedLearning::new(NestedConfig::default()); let tx = make_test_tx(1); - let prediction = validator.predict(&tx, &titans, &nested); + let prediction = validator.predict(&tx, &ineru, &nested); assert!(prediction.confidence >= 0.0 && prediction.confidence <= 1.0); assert!(prediction.estimated_time_ms > 0); diff --git a/crates/aingle_ai/src/error.rs b/crates/aingle_ai/src/error.rs index 7517366..976ef67 100644 --- a/crates/aingle_ai/src/error.rs +++ b/crates/aingle_ai/src/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Error types for the AI module use thiserror::Error; diff --git a/crates/aingle_ai/src/titans/config.rs b/crates/aingle_ai/src/ineru/config.rs similarity index 87% rename from crates/aingle_ai/src/titans/config.rs rename to crates/aingle_ai/src/ineru/config.rs index 69cb0b1..b884d75 100644 --- a/crates/aingle_ai/src/titans/config.rs +++ b/crates/aingle_ai/src/ineru/config.rs @@ -1,10 +1,13 @@ -//! Titans Memory configuration +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Ineru memory configuration use serde::{Deserialize, Serialize}; -/// Configuration for Titans Memory system +/// Configuration for Ineru memory system #[derive(Debug, Clone, Serialize, Deserialize)] -pub struct TitansConfig { +pub struct IneruConfig { /// Short-term window size (number of transactions) pub window_size: usize, @@ -34,7 +37,7 @@ pub struct TitansConfig { pub compression_ratio: f32, } -impl Default for TitansConfig { +impl Default for IneruConfig { fn default() -> Self { Self { window_size: 1000, @@ -50,7 +53,7 @@ impl Default for TitansConfig { } } -impl TitansConfig { +impl IneruConfig { /// IoT-optimized configuration (minimal memory usage) pub fn iot() -> Self { Self { @@ -119,35 +122,35 @@ mod tests { #[test] fn test_default_config() { - let config = TitansConfig::default(); + let config = IneruConfig::default(); assert!(config.validate().is_ok()); } #[test] fn test_iot_config() { - let config = TitansConfig::iot(); + let config = IneruConfig::iot(); assert!(config.validate().is_ok()); - assert!(config.window_size < TitansConfig::default().window_size); + assert!(config.window_size < IneruConfig::default().window_size); } #[test] fn test_validation() { - let mut config = TitansConfig::default(); + let mut config = IneruConfig::default(); config.window_size = 0; assert!(config.validate().is_err()); - config = TitansConfig::default(); + config = IneruConfig::default(); config.surprise_threshold = 1.5; assert!(config.validate().is_err()); } #[test] fn test_memory_estimation() { - let config = TitansConfig::default(); + let config = IneruConfig::default(); let bytes = config.estimated_memory_bytes(); assert!(bytes > 0); - let iot_config = TitansConfig::iot(); + let iot_config = IneruConfig::iot(); let iot_bytes = iot_config.estimated_memory_bytes(); assert!(iot_bytes < bytes); } diff --git a/crates/aingle_ai/src/titans/long_term.rs b/crates/aingle_ai/src/ineru/long_term.rs similarity index 98% rename from crates/aingle_ai/src/titans/long_term.rs rename to crates/aingle_ai/src/ineru/long_term.rs index 99de109..f4502b9 100644 --- a/crates/aingle_ai/src/titans/long_term.rs +++ b/crates/aingle_ai/src/ineru/long_term.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Long-Term Memory implementation //! //! Neural compression of historical patterns with surprise-based updates. diff --git a/crates/aingle_ai/src/titans/mod.rs b/crates/aingle_ai/src/ineru/mod.rs similarity index 90% rename from crates/aingle_ai/src/titans/mod.rs rename to crates/aingle_ai/src/ineru/mod.rs index 5974a93..0393fba 100644 --- a/crates/aingle_ai/src/titans/mod.rs +++ b/crates/aingle_ai/src/ineru/mod.rs @@ -1,4 +1,7 @@ -//! # Titans Memory Layer +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! # Ineru Memory Layer //! //! Implementation of dual memory system based on the Titans paper (arXiv 2501.00663). //! @@ -11,11 +14,11 @@ //! ## Example //! //! ```rust,no_run -//! use aingle_ai::titans::{TitansMemory, TitansConfig}; +//! use aingle_ai::ineru::{IneruMemory, IneruConfig}; //! use aingle_ai::AiTransaction; //! -//! let config = TitansConfig::default(); -//! let mut memory = TitansMemory::new(config); +//! let config = IneruConfig::default(); +//! let mut memory = IneruMemory::new(config); //! //! // Process a transaction //! // let result = memory.process(&tx); @@ -26,7 +29,7 @@ mod long_term; mod short_term; mod surprise_gate; -pub use config::TitansConfig; +pub use config::IneruConfig; pub use long_term::{LongTermMemory, MemoryBank}; pub use short_term::ShortTermMemory; pub use surprise_gate::SurpriseGate; @@ -39,12 +42,12 @@ use parking_lot::RwLock; use std::sync::Arc; use tracing::{debug, trace}; -/// Titans Memory System for AIngle nodes +/// Ineru Memory System for AIngle nodes /// /// Implements dual memory architecture: /// - Short-term: Fast access to recent transactions /// - Long-term: Compressed historical patterns -pub struct TitansMemory { +pub struct IneruMemory { /// Short-term memory: Recent transactions (attention-based) short_term: Arc>, @@ -55,12 +58,12 @@ pub struct TitansMemory { surprise_gate: SurpriseGate, /// Configuration - config: TitansConfig, + config: IneruConfig, } -impl TitansMemory { - /// Create a new Titans memory system - pub fn new(config: TitansConfig) -> Self { +impl IneruMemory { + /// Create a new Ineru memory system + pub fn new(config: IneruConfig) -> Self { let short_term = ShortTermMemory::new(config.window_size); let long_term = LongTermMemory::new(config.memory_capacity, config.embedding_dim); let surprise_gate = SurpriseGate::new(config.surprise_threshold); @@ -81,7 +84,7 @@ impl TitansMemory { /// 4. Updates long-term memory if threshold exceeded pub fn process(&mut self, tx: &AiTransaction) -> AiResult { let pattern = tx.to_pattern(); - trace!(hash = ?tx.hash, "Processing transaction through Titans memory"); + trace!(hash = ?tx.hash, "Processing transaction through Ineru memory"); // 1. Add to short-term memory { @@ -288,9 +291,9 @@ mod tests { } #[test] - fn test_titans_memory_basic() { - let config = TitansConfig::default(); - let mut memory = TitansMemory::new(config); + fn test_ineru_memory_basic() { + let config = IneruConfig::default(); + let mut memory = IneruMemory::new(config); let tx = make_test_tx(1); let result = memory.process(&tx).unwrap(); @@ -300,9 +303,9 @@ mod tests { } #[test] - fn test_titans_memory_query() { - let config = TitansConfig::default(); - let mut memory = TitansMemory::new(config); + fn test_ineru_memory_query() { + let config = IneruConfig::default(); + let mut memory = IneruMemory::new(config); // Add some transactions for i in 0..10 { @@ -320,12 +323,12 @@ mod tests { #[test] fn test_anomaly_detection() { - let config = TitansConfig { + let config = IneruConfig { anomaly_detection: true, anomaly_threshold: 0.5, - ..TitansConfig::default() + ..IneruConfig::default() }; - let mut memory = TitansMemory::new(config); + let mut memory = IneruMemory::new(config); // Train on similar transactions for i in 0..20 { @@ -354,8 +357,8 @@ mod tests { #[test] fn test_memory_stats() { - let config = TitansConfig::default(); - let mut memory = TitansMemory::new(config.clone()); + let config = IneruConfig::default(); + let mut memory = IneruMemory::new(config.clone()); let stats = memory.stats(); assert_eq!(stats.short_term_size, 0); diff --git a/crates/aingle_ai/src/titans/short_term.rs b/crates/aingle_ai/src/ineru/short_term.rs similarity index 98% rename from crates/aingle_ai/src/titans/short_term.rs rename to crates/aingle_ai/src/ineru/short_term.rs index e8cce01..a869162 100644 --- a/crates/aingle_ai/src/titans/short_term.rs +++ b/crates/aingle_ai/src/ineru/short_term.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Short-Term Memory implementation //! //! Sliding window of recent transactions with attention-based weighting. diff --git a/crates/aingle_ai/src/titans/surprise_gate.rs b/crates/aingle_ai/src/ineru/surprise_gate.rs similarity index 97% rename from crates/aingle_ai/src/titans/surprise_gate.rs rename to crates/aingle_ai/src/ineru/surprise_gate.rs index 1de0669..48a21b8 100644 --- a/crates/aingle_ai/src/titans/surprise_gate.rs +++ b/crates/aingle_ai/src/ineru/surprise_gate.rs @@ -1,9 +1,12 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Surprise Gate implementation //! //! Controls when to update long-term memory based on "surprise" metric. //! Inspired by the Titans paper's surprise-gated memory updates. -use crate::titans::LongTermMemory; +use crate::ineru::LongTermMemory; use crate::types::Pattern; use std::collections::VecDeque; diff --git a/crates/aingle_ai/src/hope/config.rs b/crates/aingle_ai/src/kaneru/config.rs similarity index 90% rename from crates/aingle_ai/src/hope/config.rs rename to crates/aingle_ai/src/kaneru/config.rs index ae52e42..1193608 100644 --- a/crates/aingle_ai/src/hope/config.rs +++ b/crates/aingle_ai/src/kaneru/config.rs @@ -1,10 +1,13 @@ -//! HOPE Agent configuration +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Kaneru Agent configuration use serde::{Deserialize, Serialize}; -/// Configuration for HOPE Agent +/// Configuration for Kaneru Agent #[derive(Debug, Clone, Serialize, Deserialize)] -pub struct HopeConfig { +pub struct KaneruConfig { /// Enable self-modification pub self_modification_enabled: bool, @@ -41,7 +44,7 @@ pub enum SafetyLevel { Permissive, } -impl Default for HopeConfig { +impl Default for KaneruConfig { fn default() -> Self { Self { self_modification_enabled: true, @@ -56,7 +59,7 @@ impl Default for HopeConfig { } } -impl HopeConfig { +impl KaneruConfig { /// IoT-optimized configuration pub fn iot() -> Self { Self { @@ -112,13 +115,13 @@ mod tests { #[test] fn test_default_config() { - let config = HopeConfig::default(); + let config = KaneruConfig::default(); assert!(config.validate().is_ok()); } #[test] fn test_iot_config() { - let config = HopeConfig::iot(); + let config = KaneruConfig::iot(); assert!(config.validate().is_ok()); assert!(!config.self_modification_enabled); } diff --git a/crates/aingle_ai/src/hope/context_learner.rs b/crates/aingle_ai/src/kaneru/context_learner.rs similarity index 97% rename from crates/aingle_ai/src/hope/context_learner.rs rename to crates/aingle_ai/src/kaneru/context_learner.rs index a462457..925acfb 100644 --- a/crates/aingle_ai/src/hope/context_learner.rs +++ b/crates/aingle_ai/src/kaneru/context_learner.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Context Learner implementation //! //! Infinite in-context learning without forgetting. diff --git a/crates/aingle_ai/src/hope/continuum_memory.rs b/crates/aingle_ai/src/kaneru/continuum_memory.rs similarity index 98% rename from crates/aingle_ai/src/hope/continuum_memory.rs rename to crates/aingle_ai/src/kaneru/continuum_memory.rs index 2f244b7..4104c47 100644 --- a/crates/aingle_ai/src/hope/continuum_memory.rs +++ b/crates/aingle_ai/src/kaneru/continuum_memory.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Continuum Memory implementation //! //! Non-discrete memory system with smooth interpolation. diff --git a/crates/aingle_ai/src/hope/mod.rs b/crates/aingle_ai/src/kaneru/mod.rs similarity index 91% rename from crates/aingle_ai/src/hope/mod.rs rename to crates/aingle_ai/src/kaneru/mod.rs index f7ffa54..22b9060 100644 --- a/crates/aingle_ai/src/hope/mod.rs +++ b/crates/aingle_ai/src/kaneru/mod.rs @@ -1,6 +1,9 @@ -//! # HOPE Agent Layer +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! # Kaneru Agent Layer //! -//! Higher Order Program Evolution - Self-modifying nodes with continual learning. +//! Unified Multi-Agent Execution System - Self-modifying nodes with continual learning. //! //! ## Components //! @@ -11,7 +14,7 @@ //! //! ## Safety //! -//! HOPE agents have strict safety bounds that prevent: +//! Kaneru agents have strict safety bounds that prevent: //! - Modification of cryptographic code //! - Modification of consensus rules //! - Modification of identity handling @@ -19,10 +22,10 @@ //! ## Example //! //! ```rust,no_run -//! use aingle_ai::hope::{HopeAgent, HopeConfig}; +//! use aingle_ai::kaneru::{KaneruAgent, KaneruConfig}; //! -//! let config = HopeConfig::default(); -//! let mut agent = HopeAgent::new(config); +//! let config = KaneruConfig::default(); +//! let mut agent = KaneruAgent::new(config); //! //! // Process experience //! // agent.process_experience(&experience); @@ -34,7 +37,7 @@ mod continuum_memory; mod reconfigurator; mod self_modifier; -pub use config::HopeConfig; +pub use config::KaneruConfig; pub use context_learner::ContextLearner; pub use continuum_memory::ContinuumMemory; pub use reconfigurator::{AutoReconfigurator, NodeConfig}; @@ -46,8 +49,8 @@ use parking_lot::RwLock; use std::sync::Arc; use tracing::{debug, info}; -/// HOPE Agent: Self-modifying node with continual learning -pub struct HopeAgent { +/// Kaneru Agent: Self-modifying node with continual learning +pub struct KaneruAgent { /// Continuum memory (non-discrete) memory: Arc>, @@ -61,15 +64,15 @@ pub struct HopeAgent { reconfigurator: Arc>, /// Configuration - config: HopeConfig, + config: KaneruConfig, /// Agent state state: AgentState, } -impl HopeAgent { - /// Create a new HOPE agent - pub fn new(config: HopeConfig) -> Self { +impl KaneruAgent { + /// Create a new Kaneru agent + pub fn new(config: KaneruConfig) -> Self { Self { memory: Arc::new(RwLock::new(ContinuumMemory::new(config.memory_dim))), modifier: Arc::new(RwLock::new(SelfModifier::new(&config))), @@ -157,7 +160,7 @@ impl HopeAgent { if let ReconfigResult::Changed(ref new_config) = result { info!( mode = ?new_config.mode, - "HOPE Agent reconfigured" + "Kaneru Agent reconfigured" ); self.apply_node_config(new_config); } @@ -392,9 +395,9 @@ mod tests { } #[test] - fn test_hope_agent_basic() { - let config = HopeConfig::default(); - let mut agent = HopeAgent::new(config); + fn test_kaneru_agent_basic() { + let config = KaneruConfig::default(); + let mut agent = KaneruAgent::new(config); let exp = make_experience(1); let result = agent.process_experience(&exp).unwrap(); @@ -403,9 +406,9 @@ mod tests { } #[test] - fn test_hope_agent_query() { - let config = HopeConfig::default(); - let mut agent = HopeAgent::new(config); + fn test_kaneru_agent_query() { + let config = KaneruConfig::default(); + let mut agent = KaneruAgent::new(config); // Add some experiences for i in 0..5 { @@ -443,8 +446,8 @@ mod tests { #[test] fn test_reconfiguration() { - let config = HopeConfig::default(); - let mut agent = HopeAgent::new(config); + let config = KaneruConfig::default(); + let mut agent = KaneruAgent::new(config); let resources = Resources { memory_available: 5 * 1024 * 1024, // 5MB - Critical diff --git a/crates/aingle_ai/src/hope/reconfigurator.rs b/crates/aingle_ai/src/kaneru/reconfigurator.rs similarity index 97% rename from crates/aingle_ai/src/hope/reconfigurator.rs rename to crates/aingle_ai/src/kaneru/reconfigurator.rs index d8034f5..5b6ea35 100644 --- a/crates/aingle_ai/src/hope/reconfigurator.rs +++ b/crates/aingle_ai/src/kaneru/reconfigurator.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Auto-Reconfigurator implementation //! //! Resource-aware automatic reconfiguration. diff --git a/crates/aingle_ai/src/hope/self_modifier.rs b/crates/aingle_ai/src/kaneru/self_modifier.rs similarity index 97% rename from crates/aingle_ai/src/hope/self_modifier.rs rename to crates/aingle_ai/src/kaneru/self_modifier.rs index 7af1bd6..2200b30 100644 --- a/crates/aingle_ai/src/hope/self_modifier.rs +++ b/crates/aingle_ai/src/kaneru/self_modifier.rs @@ -1,9 +1,12 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Self-Modifier implementation //! //! Behavior modification with safety bounds. use super::config::SafetyLevel; -use super::{HopeConfig, Outcome}; +use super::{KaneruConfig, Outcome}; /// Self-Modifier: Node that modifies its own behavior pub struct SelfModifier { @@ -28,7 +31,7 @@ pub struct SelfModifier { impl SelfModifier { /// Create new self-modifier - pub fn new(config: &HopeConfig) -> Self { + pub fn new(config: &KaneruConfig) -> Self { Self { rules: Vec::new(), history: Vec::new(), @@ -319,7 +322,7 @@ mod tests { #[test] fn test_self_modifier_basic() { - let config = HopeConfig::default(); + let config = KaneruConfig::default(); let mut modifier = SelfModifier::new(&config); let outcome = Outcome { @@ -356,7 +359,7 @@ mod tests { #[test] fn test_rule_evolution() { - let mut config = HopeConfig::default(); + let mut config = KaneruConfig::default(); config.max_rules = 10; let mut modifier = SelfModifier::new(&config); diff --git a/crates/aingle_ai/src/lib.rs b/crates/aingle_ai/src/lib.rs index add1457..1be71d3 100644 --- a/crates/aingle_ai/src/lib.rs +++ b/crates/aingle_ai/src/lib.rs @@ -1,10 +1,13 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! # AIngle AI Integration Layer //! //! This crate provides AI capabilities for AIngle nodes, implementing: //! -//! - **Titans Memory**: Dual memory system (short-term + long-term) for pattern learning +//! - **Ineru**: Dual memory system (short-term + long-term) for pattern learning //! - **Nested Learning**: Multi-level optimization for consensus and validation -//! - **HOPE Agents**: Self-modifying nodes with continual learning +//! - **Kaneru**: Self-modifying nodes with continual learning //! - **Emergent Capabilities**: Predictive validation, adaptive consensus //! //! ## Architecture @@ -17,7 +20,7 @@ //! │ //! ▼ //! ┌─────────────────────────────────────────────────────────────┐ -//! │ TITANS MEMORY LAYER │ +//! │ INERU MEMORY LAYER │ //! │ (Dual memory per node) │ //! │ ┌──────────────────┐ ┌──────────────────┐ │ //! │ │ SHORT-TERM │◄──►│ LONG-TERM │ │ @@ -27,7 +30,7 @@ //! │ //! ▼ //! ┌─────────────────────────────────────────────────────────────┐ -//! │ HOPE AGENT LAYER │ +//! │ KANERU AGENT LAYER │ //! │ (Self-modifying nodes) │ //! └─────────────────────────────────────────────────────────────┘ //! ``` @@ -41,11 +44,11 @@ //! ## Example //! //! ```rust,no_run -//! use aingle_ai::titans::{TitansMemory, TitansConfig}; +//! use aingle_ai::ineru::{IneruMemory, IneruConfig}; //! -//! // Create Titans memory system -//! let config = TitansConfig::default(); -//! let mut memory = TitansMemory::new(config); +//! // Create Ineru memory system +//! let config = IneruConfig::default(); +//! let mut memory = IneruMemory::new(config); //! //! // Process transactions //! // let result = memory.process(&transaction); @@ -55,9 +58,9 @@ #![warn(clippy::all)] pub mod emergent; -pub mod hope; +pub mod kaneru; pub mod nested_learning; -pub mod titans; +pub mod ineru; mod config; mod error; @@ -72,7 +75,7 @@ pub mod prelude { pub use crate::config::AiConfig; pub use crate::emergent::{AdaptiveConsensus, PredictiveValidator}; pub use crate::error::{AiError, AiResult}; - pub use crate::hope::{HopeAgent, HopeConfig}; + pub use crate::kaneru::{KaneruAgent, KaneruConfig}; pub use crate::nested_learning::{NestedConfig, NestedLearning}; - pub use crate::titans::{LongTermMemory, ShortTermMemory, TitansConfig, TitansMemory}; + pub use crate::ineru::{LongTermMemory, ShortTermMemory, IneruConfig, IneruMemory}; } diff --git a/crates/aingle_ai/src/nested_learning/config.rs b/crates/aingle_ai/src/nested_learning/config.rs index dd3dd82..e822f51 100644 --- a/crates/aingle_ai/src/nested_learning/config.rs +++ b/crates/aingle_ai/src/nested_learning/config.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Nested Learning configuration use serde::{Deserialize, Serialize}; diff --git a/crates/aingle_ai/src/nested_learning/meta_level.rs b/crates/aingle_ai/src/nested_learning/meta_level.rs index 6d75751..21d0c25 100644 --- a/crates/aingle_ai/src/nested_learning/meta_level.rs +++ b/crates/aingle_ai/src/nested_learning/meta_level.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Meta-Level optimization //! //! Global network parameters with slow updates (~1000 blocks). diff --git a/crates/aingle_ai/src/nested_learning/mod.rs b/crates/aingle_ai/src/nested_learning/mod.rs index df29afc..d661db9 100644 --- a/crates/aingle_ai/src/nested_learning/mod.rs +++ b/crates/aingle_ai/src/nested_learning/mod.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! # Nested Learning Layer //! //! Multi-level optimization system based on Nested Learning paper (OpenReview nbMeRvNb7A). diff --git a/crates/aingle_ai/src/nested_learning/optimizer_level.rs b/crates/aingle_ai/src/nested_learning/optimizer_level.rs index 687d46d..d25e0da 100644 --- a/crates/aingle_ai/src/nested_learning/optimizer_level.rs +++ b/crates/aingle_ai/src/nested_learning/optimizer_level.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Optimizer-Level optimization //! //! Validation strategies with medium-frequency updates (~100 transactions). diff --git a/crates/aingle_ai/src/nested_learning/transaction_level.rs b/crates/aingle_ai/src/nested_learning/transaction_level.rs index 9a12649..fd38a93 100644 --- a/crates/aingle_ai/src/nested_learning/transaction_level.rs +++ b/crates/aingle_ai/src/nested_learning/transaction_level.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Transaction-Level processing //! //! Fast feature extraction and classification per transaction. diff --git a/crates/aingle_ai/src/types.rs b/crates/aingle_ai/src/types.rs index e5dbf3c..502a3d3 100644 --- a/crates/aingle_ai/src/types.rs +++ b/crates/aingle_ai/src/types.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Common types for the AI module use serde::{Deserialize, Serialize}; diff --git a/crates/aingle_cascade/Cargo.toml b/crates/aingle_cascade/Cargo.toml index 3dacd73..5ff14a2 100644 --- a/crates/aingle_cascade/Cargo.toml +++ b/crates/aingle_cascade/Cargo.toml @@ -2,7 +2,7 @@ name = "aingle_cascade" version = "0.0.1" description = "Logic for cascading updates to AIngle state and network interaction" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/aingle_cascade" diff --git a/crates/aingle_cascade/src/agent_activity.rs b/crates/aingle_cascade/src/agent_activity.rs index 4af7031..e6b1c5a 100644 --- a/crates/aingle_cascade/src/agent_activity.rs +++ b/crates/aingle_cascade/src/agent_activity.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::collections::HashSet; use super::*; diff --git a/crates/aingle_cascade/src/authority.rs b/crates/aingle_cascade/src/authority.rs index 99831c6..d023e3b 100644 --- a/crates/aingle_cascade/src/authority.rs +++ b/crates/aingle_cascade/src/authority.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use self::get_agent_activity_query::hashes::GetAgentActivityQuery; use self::get_entry_ops_query::GetEntryOpsQuery; use self::get_links_ops_query::GetLinksOpsQuery; diff --git a/crates/aingle_cascade/src/authority/get_agent_activity_query.rs b/crates/aingle_cascade/src/authority/get_agent_activity_query.rs index be37b1f..024574e 100644 --- a/crates/aingle_cascade/src/authority/get_agent_activity_query.rs +++ b/crates/aingle_cascade/src/authority/get_agent_activity_query.rs @@ -1,2 +1,5 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + pub mod deterministic; pub mod hashes; diff --git a/crates/aingle_cascade/src/authority/get_agent_activity_query/deterministic.rs b/crates/aingle_cascade/src/authority/get_agent_activity_query/deterministic.rs index 85ae3e9..61c75d2 100644 --- a/crates/aingle_cascade/src/authority/get_agent_activity_query/deterministic.rs +++ b/crates/aingle_cascade/src/authority/get_agent_activity_query/deterministic.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Query for `deterministic_get_agent_activity`, designed for use in //! validation callbacks. //! diff --git a/crates/aingle_cascade/src/authority/get_agent_activity_query/hashes.rs b/crates/aingle_cascade/src/authority/get_agent_activity_query/hashes.rs index bad3a12..e000903 100644 --- a/crates/aingle_cascade/src/authority/get_agent_activity_query/hashes.rs +++ b/crates/aingle_cascade/src/authority/get_agent_activity_query/hashes.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::*; use aingle_p2p::event::GetActivityOptions; use aingle_sqlite::rusqlite::*; diff --git a/crates/aingle_cascade/src/authority/get_element_query.rs b/crates/aingle_cascade/src/authority/get_element_query.rs index 02a4780..ff61fe3 100644 --- a/crates/aingle_cascade/src/authority/get_element_query.rs +++ b/crates/aingle_cascade/src/authority/get_element_query.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::HeaderHash; use aingle_p2p::event::GetOptions; use aingle_sqlite::rusqlite::named_params; diff --git a/crates/aingle_cascade/src/authority/get_entry_ops_query.rs b/crates/aingle_cascade/src/authority/get_entry_ops_query.rs index 4967c0b..f05f534 100644 --- a/crates/aingle_cascade/src/authority/get_entry_ops_query.rs +++ b/crates/aingle_cascade/src/authority/get_entry_ops_query.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::EntryHash; use aingle_sqlite::rusqlite::named_params; use aingle_sqlite::rusqlite::Row; diff --git a/crates/aingle_cascade/src/authority/get_links_ops_query.rs b/crates/aingle_cascade/src/authority/get_links_ops_query.rs index 92ae168..746e080 100644 --- a/crates/aingle_cascade/src/authority/get_links_ops_query.rs +++ b/crates/aingle_cascade/src/authority/get_links_ops_query.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::EntryHash; use aingle_sqlite::rusqlite::named_params; use aingle_sqlite::rusqlite::Row; diff --git a/crates/aingle_cascade/src/authority/test.rs b/crates/aingle_cascade/src/authority/test.rs index da460f0..cc0bcf5 100644 --- a/crates/aingle_cascade/src/authority/test.rs +++ b/crates/aingle_cascade/src/authority/test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; use crate::authority::handle_get_agent_activity; use crate::test_utils::*; diff --git a/crates/aingle_cascade/src/error.rs b/crates/aingle_cascade/src/error.rs index f0ca349..ecea3c3 100644 --- a/crates/aingle_cascade/src/error.rs +++ b/crates/aingle_cascade/src/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::{AnySgdHash, HeaderHash}; use aingle_middleware_bytes::SerializedBytesError; use aingle_p2p::AIngleP2pError; diff --git a/crates/aingle_cascade/src/lib.rs b/crates/aingle_cascade/src/lib.rs index 9a32099..d773275 100644 --- a/crates/aingle_cascade/src/lib.rs +++ b/crates/aingle_cascade/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! # Cascade //! ## Retrieve vs Get //! Get checks CRUD metadata before returning an the data diff --git a/crates/aingle_cascade/src/test_utils.rs b/crates/aingle_cascade/src/test_utils.rs index 03e2a24..9e8d07a 100644 --- a/crates/aingle_cascade/src/test_utils.rs +++ b/crates/aingle_cascade/src/test_utils.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::authority; use ai_hash::hash_type::AnySgd; use ai_hash::AgentPubKey; diff --git a/crates/aingle_cascade/src/test_utils/activity_test_data.rs b/crates/aingle_cascade/src/test_utils/activity_test_data.rs index dc420e3..0843b7a 100644 --- a/crates/aingle_cascade/src/test_utils/activity_test_data.rs +++ b/crates/aingle_cascade/src/test_utils/activity_test_data.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ::ai_fixt::prelude::*; use ai_hash::AgentPubKey; use ai_hash::EntryHash; diff --git a/crates/aingle_cascade/src/test_utils/element_test_data.rs b/crates/aingle_cascade/src/test_utils/element_test_data.rs index 9941897..3569888 100644 --- a/crates/aingle_cascade/src/test_utils/element_test_data.rs +++ b/crates/aingle_cascade/src/test_utils/element_test_data.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::EntryHash; use ai_hash::HeaderHash; use aingle_types::header::WireDelete; diff --git a/crates/aingle_cascade/src/test_utils/entry_test_data.rs b/crates/aingle_cascade/src/test_utils/entry_test_data.rs index f68ea90..bd8f138 100644 --- a/crates/aingle_cascade/src/test_utils/entry_test_data.rs +++ b/crates/aingle_cascade/src/test_utils/entry_test_data.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::EntryHash; use ai_hash::HeaderHash; use aingle_types::header::NewEntryHeader; diff --git a/crates/aingle_cascade/tests/get_activity.rs b/crates/aingle_cascade/tests/get_activity.rs index a2ad34d..c2c3bfb 100644 --- a/crates/aingle_cascade/tests/get_activity.rs +++ b/crates/aingle_cascade/tests/get_activity.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_cascade::test_utils::*; use aingle_cascade::Cascade; use aingle_state::prelude::test_cell_env; diff --git a/crates/aingle_cascade/tests/get_entry.rs b/crates/aingle_cascade/tests/get_entry.rs index 9dc1408..2d40e46 100644 --- a/crates/aingle_cascade/tests/get_entry.rs +++ b/crates/aingle_cascade/tests/get_entry.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::HasHash; use aingle_cascade::test_utils::*; use aingle_cascade::Cascade; diff --git a/crates/aingle_cascade/tests/get_links.rs b/crates/aingle_cascade/tests/get_links.rs index 24eaa1e..a4b0bfb 100644 --- a/crates/aingle_cascade/tests/get_links.rs +++ b/crates/aingle_cascade/tests/get_links.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_cascade::test_utils::*; use aingle_cascade::Cascade; use aingle_p2p::MockAIngleP2pCellT; diff --git a/crates/aingle_conductor_api/Cargo.toml b/crates/aingle_conductor_api/Cargo.toml index 1191a9c..7d289c7 100644 --- a/crates/aingle_conductor_api/Cargo.toml +++ b/crates/aingle_conductor_api/Cargo.toml @@ -2,7 +2,7 @@ name = "aingle_conductor_api" version = "0.0.1" description = "Message types for AIngle admin and app interface protocols" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/aingle_conductor_api" diff --git a/crates/aingle_conductor_api/src/admin_interface.rs b/crates/aingle_conductor_api/src/admin_interface.rs index 0153d33..a960d4f 100644 --- a/crates/aingle_conductor_api/src/admin_interface.rs +++ b/crates/aingle_conductor_api/src/admin_interface.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::*; use aingle_types::prelude::*; use aingle_zome_types::cell::CellId; diff --git a/crates/aingle_conductor_api/src/app_interface.rs b/crates/aingle_conductor_api/src/app_interface.rs index 0759498..8d2c2be 100644 --- a/crates/aingle_conductor_api/src/app_interface.rs +++ b/crates/aingle_conductor_api/src/app_interface.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::{signal_subscription::SignalSubscription, ExternalApiWireError}; use ai_hash::AgentPubKey; use aingle_types::prelude::*; diff --git a/crates/aingle_conductor_api/src/config.rs b/crates/aingle_conductor_api/src/config.rs index 4ae893a..53bb5b0 100644 --- a/crates/aingle_conductor_api/src/config.rs +++ b/crates/aingle_conductor_api/src/config.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + pub mod conductor; mod interface; pub use interface::*; diff --git a/crates/aingle_conductor_api/src/config/conductor.rs b/crates/aingle_conductor_api/src/config/conductor.rs index b4e3460..2e45260 100644 --- a/crates/aingle_conductor_api/src/config/conductor.rs +++ b/crates/aingle_conductor_api/src/config/conductor.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![deny(missing_docs)] //! This module is used to configure the conductor diff --git a/crates/aingle_conductor_api/src/config/conductor/admin_interface_config.rs b/crates/aingle_conductor_api/src/config/conductor/admin_interface_config.rs index 0f5f42e..80adc63 100644 --- a/crates/aingle_conductor_api/src/config/conductor/admin_interface_config.rs +++ b/crates/aingle_conductor_api/src/config/conductor/admin_interface_config.rs @@ -1 +1,4 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![deny(missing_docs)] diff --git a/crates/aingle_conductor_api/src/config/conductor/dpki_config.rs b/crates/aingle_conductor_api/src/config/conductor/dpki_config.rs index 509212a..7cefec4 100644 --- a/crates/aingle_conductor_api/src/config/conductor/dpki_config.rs +++ b/crates/aingle_conductor_api/src/config/conductor/dpki_config.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + // Legacy config that will probably change #![allow(missing_docs)] diff --git a/crates/aingle_conductor_api/src/config/conductor/error.rs b/crates/aingle_conductor_api/src/config/conductor/error.rs index 8c3bdc0..bad9083 100644 --- a/crates/aingle_conductor_api/src/config/conductor/error.rs +++ b/crates/aingle_conductor_api/src/config/conductor/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::path::PathBuf; use thiserror::Error; diff --git a/crates/aingle_conductor_api/src/config/conductor/logger_config.rs b/crates/aingle_conductor_api/src/config/conductor/logger_config.rs index 6b80f42..91965f2 100644 --- a/crates/aingle_conductor_api/src/config/conductor/logger_config.rs +++ b/crates/aingle_conductor_api/src/config/conductor/logger_config.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use serde::{Deserialize, Serialize}; /// FIXME: implement diff --git a/crates/aingle_conductor_api/src/config/conductor/passphrase_service_config.rs b/crates/aingle_conductor_api/src/config/conductor/passphrase_service_config.rs index 6e410c6..142ec14 100644 --- a/crates/aingle_conductor_api/src/config/conductor/passphrase_service_config.rs +++ b/crates/aingle_conductor_api/src/config/conductor/passphrase_service_config.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use serde::Deserialize; use serde::Serialize; use std::path::PathBuf; diff --git a/crates/aingle_conductor_api/src/config/conductor/paths.rs b/crates/aingle_conductor_api/src/config/conductor/paths.rs index 72ccb7f..b005b5e 100644 --- a/crates/aingle_conductor_api/src/config/conductor/paths.rs +++ b/crates/aingle_conductor_api/src/config/conductor/paths.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Defines default paths for various resources use derive_more::AsRef; diff --git a/crates/aingle_conductor_api/src/config/conductor/signal_config.rs b/crates/aingle_conductor_api/src/config/conductor/signal_config.rs index 7efa669..7e9766a 100644 --- a/crates/aingle_conductor_api/src/config/conductor/signal_config.rs +++ b/crates/aingle_conductor_api/src/config/conductor/signal_config.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use serde::{self, Deserialize, Serialize}; /// Configure which signals to emit, to reduce unwanted signal volume diff --git a/crates/aingle_conductor_api/src/config/interface.rs b/crates/aingle_conductor_api/src/config/interface.rs index f323d9e..6a2bfbc 100644 --- a/crates/aingle_conductor_api/src/config/interface.rs +++ b/crates/aingle_conductor_api/src/config/interface.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use serde::Deserialize; use serde::Serialize; diff --git a/crates/aingle_conductor_api/src/lib.rs b/crates/aingle_conductor_api/src/lib.rs index 13554ed..c631672 100644 --- a/crates/aingle_conductor_api/src/lib.rs +++ b/crates/aingle_conductor_api/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(deprecated)] mod admin_interface; diff --git a/crates/aingle_conductor_api/src/signal_subscription.rs b/crates/aingle_conductor_api/src/signal_subscription.rs index bfa49dc..813bb1f 100644 --- a/crates/aingle_conductor_api/src/signal_subscription.rs +++ b/crates/aingle_conductor_api/src/signal_subscription.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_middleware_bytes::prelude::*; use aingle_types::app::InstalledAppId; use aingle_zome_types::cell::CellId; diff --git a/crates/aingle_conductor_api/src/state_dump.rs b/crates/aingle_conductor_api/src/state_dump.rs index d8cb774..8cc54cd 100644 --- a/crates/aingle_conductor_api/src/state_dump.rs +++ b/crates/aingle_conductor_api/src/state_dump.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::AgentPubKey; use ai_hash::SafHash; use aingle_state::source_chain::SourceChainJsonDump; diff --git a/crates/aingle_contracts/Cargo.toml b/crates/aingle_contracts/Cargo.toml index 6599426..e3f07cc 100644 --- a/crates/aingle_contracts/Cargo.toml +++ b/crates/aingle_contracts/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "aingle_contracts" -version = "0.3.8" +version = "0.4.0" description = "Smart Contracts DSL and WASM Runtime for AIngle" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" repository = "https://github.com/ApiliumCode/aingle" homepage = "https://apilium.com" documentation = "https://docs.rs/aingle_contracts" diff --git a/crates/aingle_contracts/src/contract.rs b/crates/aingle_contracts/src/contract.rs index bb6e324..bb437e1 100644 --- a/crates/aingle_contracts/src/contract.rs +++ b/crates/aingle_contracts/src/contract.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Contract definition and DSL //! //! Provides a builder pattern for defining contracts. diff --git a/crates/aingle_contracts/src/error.rs b/crates/aingle_contracts/src/error.rs index 53053b7..16c9bb2 100644 --- a/crates/aingle_contracts/src/error.rs +++ b/crates/aingle_contracts/src/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Error types for contract operations use thiserror::Error; diff --git a/crates/aingle_contracts/src/lib.rs b/crates/aingle_contracts/src/lib.rs index 66a8e87..da67541 100644 --- a/crates/aingle_contracts/src/lib.rs +++ b/crates/aingle_contracts/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! # AIngle Contracts - Smart Contract DSL and Runtime //! //! A lightweight smart contract system for AIngle with: diff --git a/crates/aingle_contracts/src/runtime.rs b/crates/aingle_contracts/src/runtime.rs index ecc1aa1..c84fe45 100644 --- a/crates/aingle_contracts/src/runtime.rs +++ b/crates/aingle_contracts/src/runtime.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Contract runtime and WASM execution //! //! Provides sandboxed execution environment for contracts. diff --git a/crates/aingle_contracts/src/storage.rs b/crates/aingle_contracts/src/storage.rs index 2254af2..ac820c3 100644 --- a/crates/aingle_contracts/src/storage.rs +++ b/crates/aingle_contracts/src/storage.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Contract storage abstraction //! //! Provides key-value storage for contract state. diff --git a/crates/aingle_contracts/src/types.rs b/crates/aingle_contracts/src/types.rs index f03a6f6..cc7f6b2 100644 --- a/crates/aingle_contracts/src/types.rs +++ b/crates/aingle_contracts/src/types.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Core types for contracts use serde::{Deserialize, Serialize}; diff --git a/crates/aingle_cortex/Cargo.toml b/crates/aingle_cortex/Cargo.toml index 2edba31..03ecbee 100644 --- a/crates/aingle_cortex/Cargo.toml +++ b/crates/aingle_cortex/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "aingle_cortex" -version = "0.3.8" +version = "0.4.0" description = "Córtex API - REST/GraphQL/SPARQL interface for AIngle semantic graphs" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" repository = "https://github.com/ApiliumCode/aingle" homepage = "https://apilium.com" documentation = "https://docs.rs/aingle_cortex" @@ -28,10 +28,10 @@ path = "src/main.rs" [dependencies] # Core AIngle crates -aingle_graph = { version = "0.3", path = "../aingle_graph" } -aingle_logic = { version = "0.3", path = "../aingle_logic" } -aingle_zk = { version = "0.3", path = "../aingle_zk" } -titans_memory = { version = "0.3", path = "../titans_memory" } +aingle_graph = { version = "0.4", path = "../aingle_graph" } +aingle_logic = { version = "0.4", path = "../aingle_logic" } +aingle_zk = { version = "0.4", path = "../aingle_zk" } +ineru = { version = "0.4", path = "../ineru" } # Web framework axum = { version = "0.8", features = ["ws", "macros"] } diff --git a/crates/aingle_cortex/src/auth/jwt.rs b/crates/aingle_cortex/src/auth/jwt.rs index 2cd0e39..e15597a 100644 --- a/crates/aingle_cortex/src/auth/jwt.rs +++ b/crates/aingle_cortex/src/auth/jwt.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! JWT token handling use axum::{extract::State, Json}; diff --git a/crates/aingle_cortex/src/auth/middleware.rs b/crates/aingle_cortex/src/auth/middleware.rs index 5875957..e1e7a11 100644 --- a/crates/aingle_cortex/src/auth/middleware.rs +++ b/crates/aingle_cortex/src/auth/middleware.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Authentication middleware use axum::{ diff --git a/crates/aingle_cortex/src/auth/mod.rs b/crates/aingle_cortex/src/auth/mod.rs index 90585de..41e96f2 100644 --- a/crates/aingle_cortex/src/auth/mod.rs +++ b/crates/aingle_cortex/src/auth/mod.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Authentication and authorization for Córtex API //! //! Provides JWT-based authentication with role-based access control. diff --git a/crates/aingle_cortex/src/auth/users.rs b/crates/aingle_cortex/src/auth/users.rs index 2496518..928715e 100644 --- a/crates/aingle_cortex/src/auth/users.rs +++ b/crates/aingle_cortex/src/auth/users.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! User management and credential validation use argon2::{ diff --git a/crates/aingle_cortex/src/client.rs b/crates/aingle_cortex/src/client.rs index 2018dff..26434ff 100644 --- a/crates/aingle_cortex/src/client.rs +++ b/crates/aingle_cortex/src/client.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Internal Rust client for AIngle Cortex. //! //! Provides programmatic access to the Cortex semantic graph and Titans diff --git a/crates/aingle_cortex/src/error.rs b/crates/aingle_cortex/src/error.rs index b138aff..c0f95ed 100644 --- a/crates/aingle_cortex/src/error.rs +++ b/crates/aingle_cortex/src/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Error types for the Córtex API server. use axum::http::StatusCode; diff --git a/crates/aingle_cortex/src/graphql/mod.rs b/crates/aingle_cortex/src/graphql/mod.rs index d260a76..633350a 100644 --- a/crates/aingle_cortex/src/graphql/mod.rs +++ b/crates/aingle_cortex/src/graphql/mod.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! GraphQL API for Córtex //! //! Provides a complete GraphQL schema with queries, mutations, and subscriptions diff --git a/crates/aingle_cortex/src/graphql/resolvers.rs b/crates/aingle_cortex/src/graphql/resolvers.rs index 6dd50eb..9751de9 100644 --- a/crates/aingle_cortex/src/graphql/resolvers.rs +++ b/crates/aingle_cortex/src/graphql/resolvers.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! GraphQL resolvers use async_graphql::*; diff --git a/crates/aingle_cortex/src/graphql/schema.rs b/crates/aingle_cortex/src/graphql/schema.rs index 51f1f26..20d4395 100644 --- a/crates/aingle_cortex/src/graphql/schema.rs +++ b/crates/aingle_cortex/src/graphql/schema.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! GraphQL schema definitions use async_graphql::*; diff --git a/crates/aingle_cortex/src/graphql/subscriptions.rs b/crates/aingle_cortex/src/graphql/subscriptions.rs index ba503a9..2ce7422 100644 --- a/crates/aingle_cortex/src/graphql/subscriptions.rs +++ b/crates/aingle_cortex/src/graphql/subscriptions.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! GraphQL subscriptions for real-time updates //! //! This module provides WebSocket-based subscriptions for: diff --git a/crates/aingle_cortex/src/lib.rs b/crates/aingle_cortex/src/lib.rs index 209615b..faf2113 100644 --- a/crates/aingle_cortex/src/lib.rs +++ b/crates/aingle_cortex/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![doc = include_str!("../README.md")] //! # AIngle Córtex - External API Layer //! diff --git a/crates/aingle_cortex/src/main.rs b/crates/aingle_cortex/src/main.rs index 47a30a1..f657838 100644 --- a/crates/aingle_cortex/src/main.rs +++ b/crates/aingle_cortex/src/main.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! AIngle Córtex API Server //! //! REST/GraphQL/SPARQL interface for AIngle semantic graphs. @@ -21,7 +24,10 @@ async fn main() -> Result<(), Box> { // Handle --version before anything else (no server init needed) if args.iter().any(|a| a == "--version" || a == "-V") { - println!("{}", env!("CARGO_PKG_VERSION")); + println!("AIngle Cortex v{}", env!("CARGO_PKG_VERSION")); + println!("Copyright 2019-2026 Apilium Technologies OÜ"); + println!("Licensed under Apache License 2.0"); + println!("https://github.com/ApiliumCode/aingle"); return Ok(()); } diff --git a/crates/aingle_cortex/src/middleware/mod.rs b/crates/aingle_cortex/src/middleware/mod.rs index 0cfb5dd..3aaa1c0 100644 --- a/crates/aingle_cortex/src/middleware/mod.rs +++ b/crates/aingle_cortex/src/middleware/mod.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Middleware for Córtex API //! //! This module provides middleware components for the Córtex API server: diff --git a/crates/aingle_cortex/src/middleware/namespace.rs b/crates/aingle_cortex/src/middleware/namespace.rs index 1c6d78a..31ba729 100644 --- a/crates/aingle_cortex/src/middleware/namespace.rs +++ b/crates/aingle_cortex/src/middleware/namespace.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Namespace scoping middleware //! //! Extracts the `namespace` from JWT claims and injects it into Axum request diff --git a/crates/aingle_cortex/src/middleware/rate_limit.rs b/crates/aingle_cortex/src/middleware/rate_limit.rs index 4e268d4..dc2ea90 100644 --- a/crates/aingle_cortex/src/middleware/rate_limit.rs +++ b/crates/aingle_cortex/src/middleware/rate_limit.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Rate limiting middleware using Token Bucket algorithm //! //! This module implements a token bucket rate limiter that tracks requests per IP address. diff --git a/crates/aingle_cortex/src/p2p/config.rs b/crates/aingle_cortex/src/p2p/config.rs index 04e1cb5..68ab7fb 100644 --- a/crates/aingle_cortex/src/p2p/config.rs +++ b/crates/aingle_cortex/src/p2p/config.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! P2P configuration with CLI flag parsing and validation. use std::net::SocketAddr; diff --git a/crates/aingle_cortex/src/p2p/discovery.rs b/crates/aingle_cortex/src/p2p/discovery.rs index ee1c6d3..7778d07 100644 --- a/crates/aingle_cortex/src/p2p/discovery.rs +++ b/crates/aingle_cortex/src/p2p/discovery.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! mDNS-based peer discovery for Cortex P2P. //! //! Feature-gated behind `p2p-mdns`. Provides a no-op stub when disabled. diff --git a/crates/aingle_cortex/src/p2p/gossip.rs b/crates/aingle_cortex/src/p2p/gossip.rs index 20dc231..067afb8 100644 --- a/crates/aingle_cortex/src/p2p/gossip.rs +++ b/crates/aingle_cortex/src/p2p/gossip.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Bloom filter gossip adapted for triple synchronization. //! //! Ported from `aingle_minimal::gossip` with `Hash` replaced by `[u8; 32]` diff --git a/crates/aingle_cortex/src/p2p/identity.rs b/crates/aingle_cortex/src/p2p/identity.rs index 1430219..802c72f 100644 --- a/crates/aingle_cortex/src/p2p/identity.rs +++ b/crates/aingle_cortex/src/p2p/identity.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Node identity backed by Ed25519 keypair with persistent storage. use aingle_graph::{Triple, TripleId}; diff --git a/crates/aingle_cortex/src/p2p/manager.rs b/crates/aingle_cortex/src/p2p/manager.rs index 5164190..bed0b71 100644 --- a/crates/aingle_cortex/src/p2p/manager.rs +++ b/crates/aingle_cortex/src/p2p/manager.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! P2P manager — orchestrates identity, transport, gossip, sync, and discovery. use crate::p2p::config::P2pConfig; diff --git a/crates/aingle_cortex/src/p2p/message.rs b/crates/aingle_cortex/src/p2p/message.rs index c763778..1c03e68 100644 --- a/crates/aingle_cortex/src/p2p/message.rs +++ b/crates/aingle_cortex/src/p2p/message.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! P2P wire protocol messages adapted for triple synchronization. use aingle_graph::{NodeId, Predicate, Triple, TripleMeta, Value}; diff --git a/crates/aingle_cortex/src/p2p/mod.rs b/crates/aingle_cortex/src/p2p/mod.rs index 6f5c532..4d57cb1 100644 --- a/crates/aingle_cortex/src/p2p/mod.rs +++ b/crates/aingle_cortex/src/p2p/mod.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! P2P networking for Cortex triple synchronization. //! //! Enables multi-node knowledge graph sync via QUIC transport, diff --git a/crates/aingle_cortex/src/p2p/peer_store.rs b/crates/aingle_cortex/src/p2p/peer_store.rs index 364f2b9..3228e5b 100644 --- a/crates/aingle_cortex/src/p2p/peer_store.rs +++ b/crates/aingle_cortex/src/p2p/peer_store.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Persistent peer storage backed by a JSON file. //! //! Stores known peers in `{data_dir}/known_peers.json` so they survive restarts. diff --git a/crates/aingle_cortex/src/p2p/rate_limiter.rs b/crates/aingle_cortex/src/p2p/rate_limiter.rs index 7f55d1d..3aa5d48 100644 --- a/crates/aingle_cortex/src/p2p/rate_limiter.rs +++ b/crates/aingle_cortex/src/p2p/rate_limiter.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Ingress rate limiter for P2P triple reception. //! //! Per-peer and global token-bucket rate limiting to prevent DoS diff --git a/crates/aingle_cortex/src/p2p/sync_manager.rs b/crates/aingle_cortex/src/p2p/sync_manager.rs index 247b25d..a55ba23 100644 --- a/crates/aingle_cortex/src/p2p/sync_manager.rs +++ b/crates/aingle_cortex/src/p2p/sync_manager.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Triple synchronization manager. //! //! Tracks per-peer sync state and coordinates bloom-filter-based reconciliation diff --git a/crates/aingle_cortex/src/p2p/transport.rs b/crates/aingle_cortex/src/p2p/transport.rs index 14bbbf7..68b42c0 100644 --- a/crates/aingle_cortex/src/p2p/transport.rs +++ b/crates/aingle_cortex/src/p2p/transport.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! QUIC transport layer for P2P communication. //! //! Ported from `aingle_minimal::quic` with cortex-specific ALPN and diff --git a/crates/aingle_cortex/src/proofs/mod.rs b/crates/aingle_cortex/src/proofs/mod.rs index 53418ac..8449cc3 100644 --- a/crates/aingle_cortex/src/proofs/mod.rs +++ b/crates/aingle_cortex/src/proofs/mod.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Cryptographic proof storage and verification //! //! This module provides storage, retrieval, and verification of zero-knowledge proofs diff --git a/crates/aingle_cortex/src/proofs/store.rs b/crates/aingle_cortex/src/proofs/store.rs index 54f5729..d5a9905 100644 --- a/crates/aingle_cortex/src/proofs/store.rs +++ b/crates/aingle_cortex/src/proofs/store.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Proof storage and management //! //! Provides in-memory storage of zero-knowledge proofs with LRU caching diff --git a/crates/aingle_cortex/src/proofs/verification.rs b/crates/aingle_cortex/src/proofs/verification.rs index 3a24ebc..227c745 100644 --- a/crates/aingle_cortex/src/proofs/verification.rs +++ b/crates/aingle_cortex/src/proofs/verification.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Proof verification using aingle_zk //! //! This module integrates with aingle_zk to verify different types of diff --git a/crates/aingle_cortex/src/rest/audit.rs b/crates/aingle_cortex/src/rest/audit.rs index 375609a..b326113 100644 --- a/crates/aingle_cortex/src/rest/audit.rs +++ b/crates/aingle_cortex/src/rest/audit.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Audit log for tracking API actions //! //! Provides an append-only, file-backed audit log with REST endpoints diff --git a/crates/aingle_cortex/src/rest/memory.rs b/crates/aingle_cortex/src/rest/memory.rs index 688e38c..dcc7413 100644 --- a/crates/aingle_cortex/src/rest/memory.rs +++ b/crates/aingle_cortex/src/rest/memory.rs @@ -1,4 +1,7 @@ -//! REST endpoints for the Titans Memory subsystem. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! REST endpoints for the Ineru memory subsystem. //! //! These endpoints expose the STM/LTM dual-memory architecture through //! the Cortex REST API, allowing agents to store, recall, consolidate, @@ -21,7 +24,7 @@ use axum::{ Json, }; use serde::{Deserialize, Serialize}; -use titans_memory::{MemoryEntry, MemoryId, MemoryQuery}; +use ineru::{MemoryEntry, MemoryId, MemoryQuery}; use crate::error::{Error, Result}; use crate::state::AppState; @@ -127,7 +130,7 @@ pub async fn remember( entry = entry.with_importance(req.importance); if let Some(emb) = req.embedding { - entry = entry.with_embedding(titans_memory::Embedding::new(emb)); + entry = entry.with_embedding(ineru::Embedding::new(emb)); } let mut memory = state.memory.write().await; @@ -164,8 +167,8 @@ pub async fn recall( importance: r.entry.metadata.importance, relevance: r.relevance, source: match r.source { - titans_memory::types::MemorySource::ShortTerm => "ShortTerm".to_string(), - titans_memory::types::MemorySource::LongTerm => "LongTerm".to_string(), + ineru::types::MemorySource::ShortTerm => "ShortTerm".to_string(), + ineru::types::MemorySource::LongTerm => "LongTerm".to_string(), }, created_at: r.entry.metadata.created_at.0.to_string(), last_accessed: r.entry.metadata.last_accessed.0.to_string(), diff --git a/crates/aingle_cortex/src/rest/mod.rs b/crates/aingle_cortex/src/rest/mod.rs index fa404b5..1876f00 100644 --- a/crates/aingle_cortex/src/rest/mod.rs +++ b/crates/aingle_cortex/src/rest/mod.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! REST API endpoints for Córtex //! //! ## Endpoints @@ -97,7 +100,7 @@ pub fn router() -> Router { "/api/v1/proofs/{id}/verify", get(proof_api::verify_proof_by_id), ) - // Titans Memory endpoints + // Ineru memory endpoints .merge(memory::memory_router()) // Semantic Observability endpoints .merge(observability::observability_router()) diff --git a/crates/aingle_cortex/src/rest/observability.rs b/crates/aingle_cortex/src/rest/observability.rs index b4ca124..e9493af 100644 --- a/crates/aingle_cortex/src/rest/observability.rs +++ b/crates/aingle_cortex/src/rest/observability.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Observability REST endpoints for semantic tracing. //! //! These endpoints provide a thin layer over the triple API, scoped to diff --git a/crates/aingle_cortex/src/rest/p2p.rs b/crates/aingle_cortex/src/rest/p2p.rs index 1e248d1..2e4982d 100644 --- a/crates/aingle_cortex/src/rest/p2p.rs +++ b/crates/aingle_cortex/src/rest/p2p.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! REST endpoints for P2P status and peer management. use crate::state::AppState; diff --git a/crates/aingle_cortex/src/rest/proof.rs b/crates/aingle_cortex/src/rest/proof.rs index ba66273..3dbfb90 100644 --- a/crates/aingle_cortex/src/rest/proof.rs +++ b/crates/aingle_cortex/src/rest/proof.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Proof validation endpoints use axum::{ diff --git a/crates/aingle_cortex/src/rest/proof_api.rs b/crates/aingle_cortex/src/rest/proof_api.rs index a5f5e71..9c44dff 100644 --- a/crates/aingle_cortex/src/rest/proof_api.rs +++ b/crates/aingle_cortex/src/rest/proof_api.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! REST API endpoints for proof storage and verification use axum::{ diff --git a/crates/aingle_cortex/src/rest/query.rs b/crates/aingle_cortex/src/rest/query.rs index d013611..09504b9 100644 --- a/crates/aingle_cortex/src/rest/query.rs +++ b/crates/aingle_cortex/src/rest/query.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Query endpoints for pattern matching use axum::{ diff --git a/crates/aingle_cortex/src/rest/reputation.rs b/crates/aingle_cortex/src/rest/reputation.rs index 70aaf89..badc43d 100644 --- a/crates/aingle_cortex/src/rest/reputation.rs +++ b/crates/aingle_cortex/src/rest/reputation.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Reputation REST endpoints. //! //! Provides agent consistency scoring and batch assertion verification diff --git a/crates/aingle_cortex/src/rest/skill_verification.rs b/crates/aingle_cortex/src/rest/skill_verification.rs index a493dcb..db824bc 100644 --- a/crates/aingle_cortex/src/rest/skill_verification.rs +++ b/crates/aingle_cortex/src/rest/skill_verification.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Skill verification REST endpoints. //! //! These endpoints support semantic skill validation, sandbox creation, diff --git a/crates/aingle_cortex/src/rest/stats.rs b/crates/aingle_cortex/src/rest/stats.rs index b341b9c..ef9475a 100644 --- a/crates/aingle_cortex/src/rest/stats.rs +++ b/crates/aingle_cortex/src/rest/stats.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Statistics and health check endpoints use axum::{extract::State, Json}; diff --git a/crates/aingle_cortex/src/rest/triples.rs b/crates/aingle_cortex/src/rest/triples.rs index 96e647a..2640926 100644 --- a/crates/aingle_cortex/src/rest/triples.rs +++ b/crates/aingle_cortex/src/rest/triples.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Triple CRUD operations use axum::{ diff --git a/crates/aingle_cortex/src/server.rs b/crates/aingle_cortex/src/server.rs index 92c8f8f..2c6f6c5 100644 --- a/crates/aingle_cortex/src/server.rs +++ b/crates/aingle_cortex/src/server.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The main Córtex API server. use crate::error::Result; diff --git a/crates/aingle_cortex/src/sparql/executor.rs b/crates/aingle_cortex/src/sparql/executor.rs index 553ba4c..0baac00 100644 --- a/crates/aingle_cortex/src/sparql/executor.rs +++ b/crates/aingle_cortex/src/sparql/executor.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! SPARQL query executor use super::{ParsedQuery, QueryType, SparqlResult}; diff --git a/crates/aingle_cortex/src/sparql/mod.rs b/crates/aingle_cortex/src/sparql/mod.rs index 5bf499e..89551f1 100644 --- a/crates/aingle_cortex/src/sparql/mod.rs +++ b/crates/aingle_cortex/src/sparql/mod.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! SPARQL query engine for Córtex //! //! Provides SPARQL 1.1 query support for the AIngle graph. diff --git a/crates/aingle_cortex/src/sparql/parser.rs b/crates/aingle_cortex/src/sparql/parser.rs index 5905499..4dc30d2 100644 --- a/crates/aingle_cortex/src/sparql/parser.rs +++ b/crates/aingle_cortex/src/sparql/parser.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! SPARQL query parser use crate::error::{Error, Result}; diff --git a/crates/aingle_cortex/src/state.rs b/crates/aingle_cortex/src/state.rs index d1d1864..aaead31 100644 --- a/crates/aingle_cortex/src/state.rs +++ b/crates/aingle_cortex/src/state.rs @@ -1,9 +1,12 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The shared application state for the Córtex API server. use aingle_graph::GraphDB; use aingle_logic::RuleEngine; use std::sync::Arc; -use titans_memory::TitansMemory; +use ineru::IneruMemory; use tokio::sync::RwLock; #[cfg(feature = "auth")] @@ -21,8 +24,8 @@ pub struct AppState { pub graph: Arc>, /// A thread-safe reference to the logic and validation engine. pub logic: Arc>, - /// The Titans dual-memory system (STM + LTM with consolidation). - pub memory: Arc>, + /// The Ineru dual-memory system (STM + LTM with consolidation). + pub memory: Arc>, /// The event broadcaster for sending real-time updates to WebSocket subscribers. pub broadcaster: Arc, /// The store for managing and verifying zero-knowledge proofs. @@ -47,7 +50,7 @@ impl AppState { pub fn new() -> Self { let graph = GraphDB::memory().expect("Failed to create in-memory graph"); let logic = RuleEngine::new(); - let memory = TitansMemory::agent_mode(); + let memory = IneruMemory::agent_mode(); #[cfg(feature = "auth")] let user_store = { @@ -75,7 +78,7 @@ impl AppState { /// Creates a new `AppState` with a pre-configured `GraphDB` instance. pub fn with_graph(graph: GraphDB) -> Self { let logic = RuleEngine::new(); - let memory = TitansMemory::agent_mode(); + let memory = IneruMemory::agent_mode(); #[cfg(feature = "auth")] let user_store = { @@ -104,7 +107,7 @@ impl AppState { pub fn with_audit_path(path: std::path::PathBuf) -> Self { let graph = GraphDB::memory().expect("Failed to create in-memory graph"); let logic = RuleEngine::new(); - let memory = TitansMemory::agent_mode(); + let memory = IneruMemory::agent_mode(); #[cfg(feature = "auth")] let user_store = { diff --git a/crates/aingle_cortex/src/wasm_types.rs b/crates/aingle_cortex/src/wasm_types.rs index b544e20..63ed07b 100644 --- a/crates/aingle_cortex/src/wasm_types.rs +++ b/crates/aingle_cortex/src/wasm_types.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! WASM boundary types for semantic graph and memory operations. //! //! These types define the interface between zome code and the Cortex diff --git a/crates/aingle_cortex/tests/graphql_subscriptions_test.rs b/crates/aingle_cortex/tests/graphql_subscriptions_test.rs index 09f1ffd..86df9fd 100644 --- a/crates/aingle_cortex/tests/graphql_subscriptions_test.rs +++ b/crates/aingle_cortex/tests/graphql_subscriptions_test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Integration tests for GraphQL subscriptions //! //! Tests WebSocket-based real-time updates for: diff --git a/crates/aingle_cortex/tests/proof_system_test.rs b/crates/aingle_cortex/tests/proof_system_test.rs index e61e8aa..826fa45 100644 --- a/crates/aingle_cortex/tests/proof_system_test.rs +++ b/crates/aingle_cortex/tests/proof_system_test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Integration tests for the proof storage and verification system use aingle_cortex::prelude::*; diff --git a/crates/aingle_cortex/tests/rate_limiting_test.rs b/crates/aingle_cortex/tests/rate_limiting_test.rs index be1377a..1968721 100644 --- a/crates/aingle_cortex/tests/rate_limiting_test.rs +++ b/crates/aingle_cortex/tests/rate_limiting_test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Integration tests for rate limiting middleware //! //! Tests the token bucket rate limiter: diff --git a/crates/aingle_graph/Cargo.toml b/crates/aingle_graph/Cargo.toml index 8f6a5d6..3cd8034 100644 --- a/crates/aingle_graph/Cargo.toml +++ b/crates/aingle_graph/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "aingle_graph" -version = "0.3.8" +version = "0.4.0" description = "Native GraphDB for AIngle - Semantic triple store with SPO indexes" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" repository = "https://github.com/ApiliumCode/aingle" homepage = "https://apilium.com" documentation = "https://docs.rs/aingle_graph" diff --git a/crates/aingle_graph/benches/graph_bench.rs b/crates/aingle_graph/benches/graph_bench.rs index 38151d2..5367633 100644 --- a/crates/aingle_graph/benches/graph_bench.rs +++ b/crates/aingle_graph/benches/graph_bench.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Benchmarks for aingle_graph //! //! Run with: cargo bench -p aingle_graph diff --git a/crates/aingle_graph/src/backends/memory.rs b/crates/aingle_graph/src/backends/memory.rs index 2adfbfd..84c4a39 100644 --- a/crates/aingle_graph/src/backends/memory.rs +++ b/crates/aingle_graph/src/backends/memory.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! In-memory storage backend //! //! Provides fast, ephemeral storage for testing and temporary graphs. diff --git a/crates/aingle_graph/src/backends/mod.rs b/crates/aingle_graph/src/backends/mod.rs index 553eb98..2958aef 100644 --- a/crates/aingle_graph/src/backends/mod.rs +++ b/crates/aingle_graph/src/backends/mod.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Storage backends for the graph database //! //! Multiple backends are supported: diff --git a/crates/aingle_graph/src/backends/rocksdb.rs b/crates/aingle_graph/src/backends/rocksdb.rs index 769f740..37c0a10 100644 --- a/crates/aingle_graph/src/backends/rocksdb.rs +++ b/crates/aingle_graph/src/backends/rocksdb.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! RocksDB storage backend //! //! Provides high-performance persistent storage using RocksDB. diff --git a/crates/aingle_graph/src/backends/sled.rs b/crates/aingle_graph/src/backends/sled.rs index 63c932d..18bd6a6 100644 --- a/crates/aingle_graph/src/backends/sled.rs +++ b/crates/aingle_graph/src/backends/sled.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Sled storage backend //! //! Provides persistent, transactional storage using the Sled embedded database. diff --git a/crates/aingle_graph/src/backends/sqlite.rs b/crates/aingle_graph/src/backends/sqlite.rs index 795248a..1617d47 100644 --- a/crates/aingle_graph/src/backends/sqlite.rs +++ b/crates/aingle_graph/src/backends/sqlite.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! SQLite storage backend //! //! Provides portable, lightweight storage for IoT and embedded devices. diff --git a/crates/aingle_graph/src/error.rs b/crates/aingle_graph/src/error.rs index 18609d7..ec44f09 100644 --- a/crates/aingle_graph/src/error.rs +++ b/crates/aingle_graph/src/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Error types for AIngle Graph. //! //! This module provides a unified `Error` type for all graph database operations. diff --git a/crates/aingle_graph/src/index.rs b/crates/aingle_graph/src/index.rs index f078fa0..b929f14 100644 --- a/crates/aingle_graph/src/index.rs +++ b/crates/aingle_graph/src/index.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Triple indexes for efficient querying //! //! Implements SPO, POS, and OSP indexes for O(1) lookups: diff --git a/crates/aingle_graph/src/lib.rs b/crates/aingle_graph/src/lib.rs index 0fd22dc..0acaea6 100644 --- a/crates/aingle_graph/src/lib.rs +++ b/crates/aingle_graph/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! AIngle Graph - Native Semantic GraphDB //! //! A high-performance triple store designed for the AIngle distributed ledger. diff --git a/crates/aingle_graph/src/node.rs b/crates/aingle_graph/src/node.rs index 8efdaad..c7c5d6e 100644 --- a/crates/aingle_graph/src/node.rs +++ b/crates/aingle_graph/src/node.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Node identifiers for graph subjects and objects. //! //! A `NodeId` uniquely identifies a node (a subject or an object) in the graph. diff --git a/crates/aingle_graph/src/predicate.rs b/crates/aingle_graph/src/predicate.rs index d37348f..012f2b6 100644 --- a/crates/aingle_graph/src/predicate.rs +++ b/crates/aingle_graph/src/predicate.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Predicates for semantic relationships. //! //! A `Predicate` represents the relationship between a subject and an object in a triple. diff --git a/crates/aingle_graph/src/query.rs b/crates/aingle_graph/src/query.rs index a4f5757..ea67e8f 100644 --- a/crates/aingle_graph/src/query.rs +++ b/crates/aingle_graph/src/query.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Query engine for the graph database. //! //! This module provides a `QueryBuilder` for pattern matching and a `TraversalBuilder` diff --git a/crates/aingle_graph/src/rdf/mod.rs b/crates/aingle_graph/src/rdf/mod.rs index 0c3fea9..7ee2815 100644 --- a/crates/aingle_graph/src/rdf/mod.rs +++ b/crates/aingle_graph/src/rdf/mod.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! RDF/Turtle support for semantic graph data //! //! This module provides parsing and serialization of standard RDF formats: diff --git a/crates/aingle_graph/src/rdf/namespace.rs b/crates/aingle_graph/src/rdf/namespace.rs index 0304d78..43a1cd4 100644 --- a/crates/aingle_graph/src/rdf/namespace.rs +++ b/crates/aingle_graph/src/rdf/namespace.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! RDF Namespace and prefix management //! //! Provides standard RDF prefixes and custom namespace handling. diff --git a/crates/aingle_graph/src/rdf/parser.rs b/crates/aingle_graph/src/rdf/parser.rs index 5b315ac..1283ce3 100644 --- a/crates/aingle_graph/src/rdf/parser.rs +++ b/crates/aingle_graph/src/rdf/parser.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! RDF parsers for Turtle and N-Triples formats //! //! This module provides parsers for standard RDF serialization formats. diff --git a/crates/aingle_graph/src/rdf/serializer.rs b/crates/aingle_graph/src/rdf/serializer.rs index a612e89..f395fb1 100644 --- a/crates/aingle_graph/src/rdf/serializer.rs +++ b/crates/aingle_graph/src/rdf/serializer.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! RDF serializers for Turtle and N-Triples formats //! //! This module provides serializers for standard RDF serialization formats. diff --git a/crates/aingle_graph/src/store.rs b/crates/aingle_graph/src/store.rs index 45a98cb..29d7463 100644 --- a/crates/aingle_graph/src/store.rs +++ b/crates/aingle_graph/src/store.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The core graph storage engine. //! //! `GraphStore` orchestrates operations between the storage backend and the in-memory triple indexes. diff --git a/crates/aingle_graph/src/triple.rs b/crates/aingle_graph/src/triple.rs index fe61f43..bff9733 100644 --- a/crates/aingle_graph/src/triple.rs +++ b/crates/aingle_graph/src/triple.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Semantic triples, the core data structure of the graph. //! //! A `Triple` represents a single fact in the form of a `(Subject, Predicate, Object)` diff --git a/crates/aingle_graph/src/value.rs b/crates/aingle_graph/src/value.rs index 5e1aabe..dfa8836 100644 --- a/crates/aingle_graph/src/value.rs +++ b/crates/aingle_graph/src/value.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Defines the `Value` type for the object of a semantic triple. //! //! A `Value` can be either a literal (like a string, number, or boolean) or a diff --git a/crates/aingle_graph/tests/graph_integration_tests.rs b/crates/aingle_graph/tests/graph_integration_tests.rs index 467c012..5686012 100644 --- a/crates/aingle_graph/tests/graph_integration_tests.rs +++ b/crates/aingle_graph/tests/graph_integration_tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Integration tests for GraphDB //! //! Tests graph database operations across different backends, diff --git a/crates/aingle_keystore/Cargo.toml b/crates/aingle_keystore/Cargo.toml index 78303be..f14026b 100644 --- a/crates/aingle_keystore/Cargo.toml +++ b/crates/aingle_keystore/Cargo.toml @@ -2,7 +2,7 @@ name = "aingle_keystore" version = "0.0.1" description = "keystore for libsodium keypairs" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/aingle_keystore" diff --git a/crates/aingle_keystore/src/agent_pubkey_ext.rs b/crates/aingle_keystore/src/agent_pubkey_ext.rs index 4e2057f..e7e70b3 100644 --- a/crates/aingle_keystore/src/agent_pubkey_ext.rs +++ b/crates/aingle_keystore/src/agent_pubkey_ext.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::*; use aingle_zome_types::prelude::*; use std::sync::Arc; diff --git a/crates/aingle_keystore/src/crude_mock_keystore.rs b/crates/aingle_keystore/src/crude_mock_keystore.rs index e310173..9c67f4f 100644 --- a/crates/aingle_keystore/src/crude_mock_keystore.rs +++ b/crates/aingle_keystore/src/crude_mock_keystore.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Defines a crude mock Keystore which always returns the same Error for every //! call. This is about as close as we can get to a true mock which would allow //! tweaking individual handlers, hence why this is a "crude" mock. diff --git a/crates/aingle_keystore/src/error.rs b/crates/aingle_keystore/src/error.rs index e8734bc..86e054a 100644 --- a/crates/aingle_keystore/src/error.rs +++ b/crates/aingle_keystore/src/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::*; use aingle_zome_types::signature::Signature; diff --git a/crates/aingle_keystore/src/keystore_actor.rs b/crates/aingle_keystore/src/keystore_actor.rs index 1396760..0543c85 100644 --- a/crates/aingle_keystore/src/keystore_actor.rs +++ b/crates/aingle_keystore/src/keystore_actor.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! This module contains all the types needed to implement a keystore actor. //! We will re-export the main KeystoreSender usable by clients at the lib. diff --git a/crates/aingle_keystore/src/lair_keystore.rs b/crates/aingle_keystore/src/lair_keystore.rs index 6294c75..1ece53c 100644 --- a/crates/aingle_keystore/src/lair_keystore.rs +++ b/crates/aingle_keystore/src/lair_keystore.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Keystore backed by lair_keystore_client. use crate::*; diff --git a/crates/aingle_keystore/src/lib.rs b/crates/aingle_keystore/src/lib.rs index b6b7590..be68ba4 100644 --- a/crates/aingle_keystore/src/lib.rs +++ b/crates/aingle_keystore/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![deny(missing_docs)] #![allow(clippy::needless_doctest_main)] //! A Keystore is a secure repository of private keys. KeystoreSender is a diff --git a/crates/aingle_keystore/src/test_keystore.rs b/crates/aingle_keystore/src/test_keystore.rs index d07b763..8c7a7af 100644 --- a/crates/aingle_keystore/src/test_keystore.rs +++ b/crates/aingle_keystore/src/test_keystore.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! DANGER! This is a mock keystore for testing, DO NOT USE THIS IN PRODUCTION! use crate::*; diff --git a/crates/aingle_logic/Cargo.toml b/crates/aingle_logic/Cargo.toml index 00f2cce..675bb57 100644 --- a/crates/aingle_logic/Cargo.toml +++ b/crates/aingle_logic/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "aingle_logic" -version = "0.3.8" +version = "0.4.0" description = "Proof-of-Logic validation engine for AIngle semantic graphs" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" repository = "https://github.com/ApiliumCode/aingle" homepage = "https://apilium.com" documentation = "https://docs.rs/aingle_logic" @@ -21,7 +21,7 @@ owl = [] [dependencies] # Graph database -aingle_graph = { version = "0.3", path = "../aingle_graph" } +aingle_graph = { version = "0.4", path = "../aingle_graph" } # Serialization serde = { version = "1.0", features = ["derive"] } diff --git a/crates/aingle_logic/src/builtin.rs b/crates/aingle_logic/src/builtin.rs index 941bf07..96c8069 100644 --- a/crates/aingle_logic/src/builtin.rs +++ b/crates/aingle_logic/src/builtin.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Built-in rules for common validation scenarios //! //! These rules cover common patterns like: diff --git a/crates/aingle_logic/src/engine.rs b/crates/aingle_logic/src/engine.rs index 7a17a1a..6fafa0d 100644 --- a/crates/aingle_logic/src/engine.rs +++ b/crates/aingle_logic/src/engine.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Rule Engine with Forward and Backward Chaining //! //! The rule engine evaluates rules against triples and can: diff --git a/crates/aingle_logic/src/error.rs b/crates/aingle_logic/src/error.rs index f6c67b0..16c6baf 100644 --- a/crates/aingle_logic/src/error.rs +++ b/crates/aingle_logic/src/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Error types for the AIngle Logic engine. use thiserror::Error; diff --git a/crates/aingle_logic/src/lib.rs b/crates/aingle_logic/src/lib.rs index 7b76bf5..b21ff25 100644 --- a/crates/aingle_logic/src/lib.rs +++ b/crates/aingle_logic/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! AIngle Logic - Proof-of-Logic Validation Engine //! //! This crate provides logical reasoning and validation for semantic graphs. diff --git a/crates/aingle_logic/src/proof.rs b/crates/aingle_logic/src/proof.rs index 0acf651..c4f0aee 100644 --- a/crates/aingle_logic/src/proof.rs +++ b/crates/aingle_logic/src/proof.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Logic Proof Generation and Verification //! //! Proofs are cryptographic evidence that a logical derivation is valid. diff --git a/crates/aingle_logic/src/rule.rs b/crates/aingle_logic/src/rule.rs index e42aa4c..e89b7f0 100644 --- a/crates/aingle_logic/src/rule.rs +++ b/crates/aingle_logic/src/rule.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Rule definitions for the Proof-of-Logic engine //! //! Rules are the fundamental building blocks of logical validation. diff --git a/crates/aingle_logic/src/validator.rs b/crates/aingle_logic/src/validator.rs index da26f14..2cd7f82 100644 --- a/crates/aingle_logic/src/validator.rs +++ b/crates/aingle_logic/src/validator.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Logic Validator - Validates logical consistency of semantic graphs //! //! The validator checks for: diff --git a/crates/aingle_minimal/Cargo.toml b/crates/aingle_minimal/Cargo.toml index 98beffb..61167e3 100644 --- a/crates/aingle_minimal/Cargo.toml +++ b/crates/aingle_minimal/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "aingle_minimal" -version = "0.3.8" +version = "0.4.0" description = "Ultra-light AIngle node for IoT devices (<1MB RAM)" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" repository = "https://github.com/ApiliumCode/aingle" homepage = "https://apilium.com" documentation = "https://docs.rs/aingle_minimal" @@ -39,10 +39,10 @@ quic = ["dep:quinn", "dep:rustls", "dep:rcgen"] minimal_crypto = [] # Embedded HAL support for real hardware sensors embedded = ["dep:embedded-hal", "dep:embedded-hal-async"] -# Enable AI memory (Titans Memory) -ai_memory = ["titans_memory"] -# Enable smart agents (HOPE Agents) -smart_agents = ["hope_agents"] +# Enable AI memory (Ineru) +ai_memory = ["ineru"] +# Enable smart agents (Kaneru) +smart_agents = ["kaneru"] # Enable REST API server for SDK integration rest = ["dep:tiny_http"] @@ -123,11 +123,11 @@ semver = "1.0" embedded-hal = { version = "1.0", optional = true } embedded-hal-async = { version = "1.0", optional = true } -# AI Memory (Titans Memory) -titans_memory = { version = "0.3", path = "../titans_memory", optional = true } +# AI Memory (Ineru) +ineru = { version = "0.4", path = "../ineru", optional = true } -# HOPE Agents (AI Agent Framework) -hope_agents = { version = "0.3", path = "../hope_agents", optional = true } +# Kaneru (AI Agent Framework) +kaneru = { version = "0.4", path = "../kaneru", optional = true } # REST API server (lightweight HTTP) tiny_http = { version = "0.12", optional = true } diff --git a/crates/aingle_minimal/README.md b/crates/aingle_minimal/README.md index aedd668..11f05b1 100644 --- a/crates/aingle_minimal/README.md +++ b/crates/aingle_minimal/README.md @@ -42,7 +42,7 @@ Ultra-lightweight AIngle node for IoT devices with **< 1MB RAM** footprint. Supp | `ble-esp32` | Bluetooth LE (ESP32) | Embedded IoT | | `webrtc` | WebRTC transport | Browser nodes | | `hw_wallet` | Ledger/Trezor support | Secure signing | -| `smart_agents` | HOPE AI agents | Edge intelligence | +| `smart_agents` | Kaneru AI agents | Edge intelligence | ## Quick Start diff --git a/crates/aingle_minimal/benches/node_bench.rs b/crates/aingle_minimal/benches/node_bench.rs index e22ea00..c0898f8 100644 --- a/crates/aingle_minimal/benches/node_bench.rs +++ b/crates/aingle_minimal/benches/node_bench.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Benchmarks for AIngle Minimal Node //! //! Run with: cargo bench -p aingle_minimal diff --git a/crates/aingle_minimal/src/bluetooth.rs b/crates/aingle_minimal/src/bluetooth.rs index b2ae5cc..97606c2 100644 --- a/crates/aingle_minimal/src/bluetooth.rs +++ b/crates/aingle_minimal/src/bluetooth.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Bluetooth LE Mesh Transport for IoT Devices //! //! This module enables AIngle nodes to communicate via Bluetooth Low Energy (BLE), diff --git a/crates/aingle_minimal/src/coap.rs b/crates/aingle_minimal/src/coap.rs index ebf0554..494997a 100644 --- a/crates/aingle_minimal/src/coap.rs +++ b/crates/aingle_minimal/src/coap.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! CoAP Transport for IoT nodes //! //! Implements the Constrained Application Protocol (RFC 7252) for diff --git a/crates/aingle_minimal/src/config.rs b/crates/aingle_minimal/src/config.rs index 720dff7..13714e5 100644 --- a/crates/aingle_minimal/src/config.rs +++ b/crates/aingle_minimal/src/config.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Configuration for the minimal AIngle node. //! //! This module provides configuration types and presets for different deployment diff --git a/crates/aingle_minimal/src/crypto.rs b/crates/aingle_minimal/src/crypto.rs index c961bb4..d2a5e93 100644 --- a/crates/aingle_minimal/src/crypto.rs +++ b/crates/aingle_minimal/src/crypto.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Cryptography for IoT nodes //! //! Uses Ed25519 for signing/verification and Blake3 for hashing. diff --git a/crates/aingle_minimal/src/discovery.rs b/crates/aingle_minimal/src/discovery.rs index ff44b70..15c62f1 100644 --- a/crates/aingle_minimal/src/discovery.rs +++ b/crates/aingle_minimal/src/discovery.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Multi-protocol peer discovery for AIngle nodes //! //! Supports both mDNS/DNS-SD and CoAP multicast discovery for automatic diff --git a/crates/aingle_minimal/src/dtls.rs b/crates/aingle_minimal/src/dtls.rs index a282f93..0408fad 100644 --- a/crates/aingle_minimal/src/dtls.rs +++ b/crates/aingle_minimal/src/dtls.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! DTLS Security Layer for CoAP //! //! Implements Datagram Transport Layer Security (DTLS) for secure CoAP communications. diff --git a/crates/aingle_minimal/src/error.rs b/crates/aingle_minimal/src/error.rs index 00c4fca..4a3249e 100644 --- a/crates/aingle_minimal/src/error.rs +++ b/crates/aingle_minimal/src/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Error types for the minimal AIngle node. //! //! This module provides a comprehensive error hierarchy with specific error diff --git a/crates/aingle_minimal/src/gossip.rs b/crates/aingle_minimal/src/gossip.rs index 2cae1e7..5646396 100644 --- a/crates/aingle_minimal/src/gossip.rs +++ b/crates/aingle_minimal/src/gossip.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Optimized Gossip Protocol for AIngle Minimal //! //! Implements efficient gossip with: diff --git a/crates/aingle_minimal/src/graph.rs b/crates/aingle_minimal/src/graph.rs index ae46188..36d49e2 100644 --- a/crates/aingle_minimal/src/graph.rs +++ b/crates/aingle_minimal/src/graph.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Semantic Graph integration for AIngle Minimal //! //! This module provides a semantic graph view of the AIngle data, diff --git a/crates/aingle_minimal/src/lib.rs b/crates/aingle_minimal/src/lib.rs index 096b650..72f332e 100644 --- a/crates/aingle_minimal/src/lib.rs +++ b/crates/aingle_minimal/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![doc = include_str!("../README.md")] #![allow(rustdoc::bare_urls)] #![allow(rustdoc::invalid_html_tags)] @@ -140,8 +143,8 @@ //! | `ble` | Bluetooth LE for Desktop (macOS/Linux/Windows) | btleplug, uuid | //! | `ble-esp32` | Bluetooth LE for ESP32 devices | esp32-nimble | //! | `hw_wallet` | Hardware wallet support (Ledger/Trezor) | ledger-transport-hid | -//! | `ai_memory` | Titans memory system for agents | titans_memory | -//! | `smart_agents` | HOPE agents integration | hope_agents | +//! | `ai_memory` | Ineru memory system for agents | ineru | +//! | `smart_agents` | Kaneru agents integration | kaneru | //! | `no_std` | Compile without standard library | - | //! //! ## Platform Support diff --git a/crates/aingle_minimal/src/main.rs b/crates/aingle_minimal/src/main.rs index b19b656..d1ae24f 100644 --- a/crates/aingle_minimal/src/main.rs +++ b/crates/aingle_minimal/src/main.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! AIngle Minimal Node CLI //! //! Ultra-light node for IoT devices with comprehensive subcommands. @@ -408,9 +411,9 @@ fn show_info() -> Result<()> { println!(" [ ] Hardware wallet"); #[cfg(feature = "smart_agents")] - println!(" [x] Smart agents (HOPE)"); + println!(" [x] Smart agents (Kaneru)"); #[cfg(not(feature = "smart_agents"))] - println!(" [ ] Smart agents (HOPE)"); + println!(" [ ] Smart agents (Kaneru)"); #[cfg(feature = "ai_memory")] println!(" [x] AI memory (Titans)"); diff --git a/crates/aingle_minimal/src/memory.rs b/crates/aingle_minimal/src/memory.rs index 3efc502..8577cbc 100644 --- a/crates/aingle_minimal/src/memory.rs +++ b/crates/aingle_minimal/src/memory.rs @@ -1,13 +1,16 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! AI Memory integration for IoT nodes //! -//! This module provides Titans Memory integration for IoT applications, +//! This module provides Ineru memory integration for IoT applications, //! enabling AI agents to maintain short-term and long-term memory. #[cfg(feature = "ai_memory")] -pub use titans_memory::{ +pub use ineru::{ ConsolidationConfig, Embedding, Entity, EntityId, KnowledgeGraph, Link, LinkType, LongTermMemory, LtmConfig, MemoryConfig, MemoryEntry, MemoryId, MemoryMetadata, MemoryQuery, - MemoryResult, MemoryStats, Relation, SemanticTag, ShortTermMemory, StmConfig, TitansMemory, + MemoryResult, MemoryStats, Relation, SemanticTag, ShortTermMemory, StmConfig, IneruMemory, }; #[cfg(feature = "ai_memory")] @@ -15,11 +18,11 @@ use crate::error::{Error, Result}; /// IoT-optimized memory system /// -/// Wraps TitansMemory with IoT-specific defaults and integration points. +/// Wraps IneruMemory with IoT-specific defaults and integration points. #[cfg(feature = "ai_memory")] pub struct IoTMemory { - /// Inner Titans Memory system - inner: TitansMemory, + /// Inner Ineru memory system + inner: IneruMemory, /// Auto-consolidation enabled auto_consolidate: bool, /// Last consolidation check @@ -31,7 +34,7 @@ impl IoTMemory { /// Create new IoT memory with default configuration pub fn new() -> Self { Self { - inner: TitansMemory::iot_mode(), + inner: IneruMemory::iot_mode(), auto_consolidate: true, last_check: 0, } @@ -40,7 +43,7 @@ impl IoTMemory { /// Create with custom configuration pub fn with_config(config: MemoryConfig) -> Self { Self { - inner: TitansMemory::new(config), + inner: IneruMemory::new(config), auto_consolidate: true, last_check: 0, } @@ -154,13 +157,13 @@ impl IoTMemory { .map_err(|e| Error::Internal(e.to_string())) } - /// Access the underlying TitansMemory - pub fn inner(&self) -> &TitansMemory { + /// Access the underlying IneruMemory + pub fn inner(&self) -> &IneruMemory { &self.inner } - /// Access the underlying TitansMemory mutably - pub fn inner_mut(&mut self) -> &mut TitansMemory { + /// Access the underlying IneruMemory mutably + pub fn inner_mut(&mut self) -> &mut IneruMemory { &mut self.inner } } diff --git a/crates/aingle_minimal/src/network.rs b/crates/aingle_minimal/src/network.rs index 2be1513..62faa22 100644 --- a/crates/aingle_minimal/src/network.rs +++ b/crates/aingle_minimal/src/network.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Minimal networking for IoT nodes //! //! Supports CoAP for lightweight IoT communication and diff --git a/crates/aingle_minimal/src/node.rs b/crates/aingle_minimal/src/node.rs index d3ea614..6b9e4b1 100644 --- a/crates/aingle_minimal/src/node.rs +++ b/crates/aingle_minimal/src/node.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The main [`MinimalNode`] implementation. //! //! This module ties together all the components of the lightweight node, including diff --git a/crates/aingle_minimal/src/ota.rs b/crates/aingle_minimal/src/ota.rs index b63007c..02f44a8 100644 --- a/crates/aingle_minimal/src/ota.rs +++ b/crates/aingle_minimal/src/ota.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Over-The-Air (OTA) Update Manager for IoT Devices //! //! Provides secure firmware updates over the network with integrity verification, diff --git a/crates/aingle_minimal/src/power.rs b/crates/aingle_minimal/src/power.rs index 9afbabb..8f0a231 100644 --- a/crates/aingle_minimal/src/power.rs +++ b/crates/aingle_minimal/src/power.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Power Management for IoT Devices //! //! Provides battery-aware power management with multiple power profiles diff --git a/crates/aingle_minimal/src/quic.rs b/crates/aingle_minimal/src/quic.rs index 631a473..57202f7 100644 --- a/crates/aingle_minimal/src/quic.rs +++ b/crates/aingle_minimal/src/quic.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! QUIC Transport for AIngle Minimal Node //! //! Provides reliable, encrypted transport over UDP using the QUIC protocol. diff --git a/crates/aingle_minimal/src/rest.rs b/crates/aingle_minimal/src/rest.rs index 80f0238..d266f99 100644 --- a/crates/aingle_minimal/src/rest.rs +++ b/crates/aingle_minimal/src/rest.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! REST API server for SDK integration. //! //! This module provides a lightweight HTTP REST API that allows SDKs in various diff --git a/crates/aingle_minimal/src/rocks_storage.rs b/crates/aingle_minimal/src/rocks_storage.rs index 40d9593..acfd0f8 100644 --- a/crates/aingle_minimal/src/rocks_storage.rs +++ b/crates/aingle_minimal/src/rocks_storage.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! RocksDB storage backend for high-performance production deployments //! //! Uses LSM-tree architecture optimized for: diff --git a/crates/aingle_minimal/src/sensors.rs b/crates/aingle_minimal/src/sensors.rs index b6b606d..3c263f6 100644 --- a/crates/aingle_minimal/src/sensors.rs +++ b/crates/aingle_minimal/src/sensors.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Sensor Abstraction Layer for IoT Devices //! //! Provides a unified interface for reading various types of sensors commonly diff --git a/crates/aingle_minimal/src/smart.rs b/crates/aingle_minimal/src/smart.rs index 668dd82..b940131 100644 --- a/crates/aingle_minimal/src/smart.rs +++ b/crates/aingle_minimal/src/smart.rs @@ -1,6 +1,9 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Smart Node - IoT+AI Pipeline Integration //! -//! Combines `MinimalNode` with HOPE Agents to create intelligent IoT nodes +//! Combines `MinimalNode` with Kaneru to create intelligent IoT nodes //! that can observe, decide, act, and learn. //! //! # Architecture @@ -11,7 +14,7 @@ //! ├─────────────────────────────────────────────────────────────┤ //! │ │ //! │ ┌──────────────┐ ┌──────────────┐ ┌─────────────┐ │ -//! │ │ Sensors │────>│ HOPE │────>│ Network │ │ +//! │ │ Sensors │────>│ Kaneru │────>│ Network │ │ //! │ │ (IoT) │ │ Agent │ │ (CoAP) │ │ //! │ └──────────────┘ └──────────────┘ └─────────────┘ │ //! │ │ │ │ │ @@ -28,7 +31,7 @@ //! //! ```rust,ignore //! use aingle_minimal::{SmartNode, SmartNodeConfig}; -//! use hope_agents::{Observation, Goal}; +//! use kaneru::{Observation, Goal}; //! //! // Create smart node with AI capabilities //! let config = SmartNodeConfig::iot_mode(); @@ -51,8 +54,8 @@ use crate::error::Result; use crate::node::MinimalNode; use crate::types::{Entry, EntryType, Hash, NodeStats}; -use hope_agents::agent::AgentStats; -use hope_agents::{ +use kaneru::agent::AgentStats; +use kaneru::{ Action, ActionResult, ActionType, Agent, AgentConfig, AgentState, Goal, Observation, Policy, Rule, SimpleAgent, }; @@ -116,11 +119,11 @@ impl SmartNodeConfig { } } -/// Smart Node combining MinimalNode with HOPE Agent +/// Smart Node combining MinimalNode with Kaneru Agent pub struct SmartNode { /// Base AIngle node node: MinimalNode, - /// HOPE Agent + /// Kaneru Agent agent: SimpleAgent, /// Configuration config: SmartNodeConfig, @@ -391,24 +394,24 @@ impl SmartNode { fn execute_remote_call(&self, action: &Action, target: &str) -> Result { log::info!("Remote call to target: {}", target); - // Get method from params (hope_agents::Value) + // Get method from params (kaneru::Value) let method = action .params .get("method") .and_then(|v| match v { - hope_agents::Value::String(s) => Some(s.as_str()), + kaneru::Value::String(s) => Some(s.as_str()), _ => None, }) .unwrap_or("ping"); - // Get payload from params (convert hope_agents::Value to bytes) + // Get payload from params (convert kaneru::Value to bytes) let payload = action .params .get("payload") .map(|v| match v { - hope_agents::Value::Bytes(b) => b.clone(), - hope_agents::Value::String(s) => s.as_bytes().to_vec(), - hope_agents::Value::Json(j) => serde_json::to_vec(j).unwrap_or_default(), + kaneru::Value::Bytes(b) => b.clone(), + kaneru::Value::String(s) => s.as_bytes().to_vec(), + kaneru::Value::Json(j) => serde_json::to_vec(j).unwrap_or_default(), _ => Vec::new(), }) .unwrap_or_default(); @@ -573,7 +576,7 @@ pub struct SmartNodeStats { pub observation_entries: usize, } -/// Sensor adapter for converting sensor readings to HOPE observations +/// Sensor adapter for converting sensor readings to Kaneru observations pub struct SensorAdapter { name: String, scale: f64, @@ -622,7 +625,7 @@ pub struct IoTPolicyBuilder; impl IoTPolicyBuilder { /// Create a threshold alert policy pub fn threshold_alert(sensor_name: &str, threshold: f64, alert_message: &str) -> Rule { - use hope_agents::policy::Condition; + use kaneru::policy::Condition; Rule::new( &format!("{}_threshold", sensor_name), @@ -639,7 +642,7 @@ impl IoTPolicyBuilder { action_low: Action, action_high: Action, ) -> Vec { - use hope_agents::policy::Condition; + use kaneru::policy::Condition; vec![ Rule::new( @@ -662,7 +665,7 @@ impl IoTPolicyBuilder { on_action: Action, off_action: Action, ) -> Vec { - use hope_agents::policy::Condition; + use kaneru::policy::Condition; vec![ Rule::new( @@ -740,7 +743,7 @@ mod tests { #[test] fn test_smart_node_with_rule() { - use hope_agents::policy::Condition; + use kaneru::policy::Condition; let config = test_config(); let mut node = SmartNode::new(config).unwrap(); diff --git a/crates/aingle_minimal/src/storage.rs b/crates/aingle_minimal/src/storage.rs index 25551da..547cba1 100644 --- a/crates/aingle_minimal/src/storage.rs +++ b/crates/aingle_minimal/src/storage.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! SQLite storage backend for IoT nodes //! //! Uses SQLite with aggressive pruning for constrained storage. diff --git a/crates/aingle_minimal/src/storage_factory.rs b/crates/aingle_minimal/src/storage_factory.rs index a5ab296..f02ef81 100644 --- a/crates/aingle_minimal/src/storage_factory.rs +++ b/crates/aingle_minimal/src/storage_factory.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Storage factory for dynamic backend selection //! //! Creates the appropriate storage backend based on configuration. diff --git a/crates/aingle_minimal/src/storage_trait.rs b/crates/aingle_minimal/src/storage_trait.rs index 1ed1075..95b1aac 100644 --- a/crates/aingle_minimal/src/storage_trait.rs +++ b/crates/aingle_minimal/src/storage_trait.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Storage backend trait definition //! //! This module defines the common interface for all storage backends. diff --git a/crates/aingle_minimal/src/sync.rs b/crates/aingle_minimal/src/sync.rs index 1ebc024..e5084fc 100644 --- a/crates/aingle_minimal/src/sync.rs +++ b/crates/aingle_minimal/src/sync.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Node-to-node synchronization protocol //! //! Implements efficient record synchronization using bloom filter-based diff --git a/crates/aingle_minimal/src/types.rs b/crates/aingle_minimal/src/types.rs index 43c297a..5de73a1 100644 --- a/crates/aingle_minimal/src/types.rs +++ b/crates/aingle_minimal/src/types.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Core data types for the minimal AIngle node. //! //! This module defines the fundamental types used throughout the aingle_minimal crate, diff --git a/crates/aingle_minimal/src/wallet.rs b/crates/aingle_minimal/src/wallet.rs index 6910909..6303af0 100644 --- a/crates/aingle_minimal/src/wallet.rs +++ b/crates/aingle_minimal/src/wallet.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Hardware Wallet Integration for Secure Key Management //! //! This module provides integration with hardware wallets (Ledger, Trezor) diff --git a/crates/aingle_minimal/src/webrtc.rs b/crates/aingle_minimal/src/webrtc.rs index 0770bb4..60a213e 100644 --- a/crates/aingle_minimal/src/webrtc.rs +++ b/crates/aingle_minimal/src/webrtc.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! WebRTC Transport for Browser Support //! //! This module enables AIngle nodes to run in web browsers and communicate diff --git a/crates/aingle_minimal/tests/e2e_multi_node_tests.rs b/crates/aingle_minimal/tests/e2e_multi_node_tests.rs index 2860f6d..ef5af90 100644 --- a/crates/aingle_minimal/tests/e2e_multi_node_tests.rs +++ b/crates/aingle_minimal/tests/e2e_multi_node_tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! End-to-End Multi-Node Integration Tests //! //! These tests verify that multiple AIngle nodes can: diff --git a/crates/aingle_minimal/tests/iot_integration_tests.rs b/crates/aingle_minimal/tests/iot_integration_tests.rs index c1513da..9bd70f6 100644 --- a/crates/aingle_minimal/tests/iot_integration_tests.rs +++ b/crates/aingle_minimal/tests/iot_integration_tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Integration tests for IoT features //! //! Tests complete workflows combining multiple IoT components: diff --git a/crates/aingle_minimal/tests/p2p_network_tests.rs b/crates/aingle_minimal/tests/p2p_network_tests.rs index f8c96d7..4bbe98f 100644 --- a/crates/aingle_minimal/tests/p2p_network_tests.rs +++ b/crates/aingle_minimal/tests/p2p_network_tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! P2P Network Integration Tests //! //! Tests for peer-to-peer networking including: diff --git a/crates/aingle_minimal/tests/smart_node_integration_tests.rs b/crates/aingle_minimal/tests/smart_node_integration_tests.rs index 5f42ed0..bc15299 100644 --- a/crates/aingle_minimal/tests/smart_node_integration_tests.rs +++ b/crates/aingle_minimal/tests/smart_node_integration_tests.rs @@ -1,15 +1,18 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Integration tests for SmartNode pipeline //! //! Tests the complete flow: Sensor → Observation → Agent → Action → DAG -//! These tests verify the integration between MinimalNode and HOPE Agents. +//! These tests verify the integration between MinimalNode and Kaneru. //! //! Requires the `smart_agents` feature to be enabled. #![cfg(feature = "smart_agents")] use aingle_minimal::*; -use hope_agents::policy::Condition; -use hope_agents::{ +use kaneru::policy::Condition; +use kaneru::{ Action, ActionType, AgentConfig, Goal, Observation, ObservationType, Policy, Rule, }; @@ -71,7 +74,7 @@ fn test_smart_node_creation_low_power() { #[test] fn test_smart_node_with_custom_agent() { - use hope_agents::SimpleAgent; + use kaneru::SimpleAgent; let mut agent = SimpleAgent::new("custom_agent"); agent.add_rule(Rule::new( @@ -502,7 +505,7 @@ fn test_add_goal_to_smart_node() { #[test] fn test_smart_node_pause_resume() { - use hope_agents::AgentState; + use kaneru::AgentState; let config = test_smart_config(); let mut node = SmartNode::new(config).unwrap(); diff --git a/crates/aingle_minimal/tests/transport_integration_tests.rs b/crates/aingle_minimal/tests/transport_integration_tests.rs index 5ae9d3d..d406b5a 100644 --- a/crates/aingle_minimal/tests/transport_integration_tests.rs +++ b/crates/aingle_minimal/tests/transport_integration_tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Integration tests for transport features with mocks //! //! Tests WebRTC, Bluetooth LE, and Hardware Wallet integration: diff --git a/crates/aingle_p2p/Cargo.toml b/crates/aingle_p2p/Cargo.toml index 836184f..d4475d8 100644 --- a/crates/aingle_p2p/Cargo.toml +++ b/crates/aingle_p2p/Cargo.toml @@ -2,7 +2,7 @@ name = "aingle_p2p" version = "0.0.1" description = "aingle specific wrapper around more generic p2p module" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/aingle_p2p" diff --git a/crates/aingle_p2p/src/lib.rs b/crates/aingle_p2p/src/lib.rs index b2f4c4b..ebcd1d1 100644 --- a/crates/aingle_p2p/src/lib.rs +++ b/crates/aingle_p2p/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![deny(missing_docs)] //! aingle specific wrapper around more generic p2p module diff --git a/crates/aingle_p2p/src/spawn.rs b/crates/aingle_p2p/src/spawn.rs index 48bb701..4c69923 100644 --- a/crates/aingle_p2p/src/spawn.rs +++ b/crates/aingle_p2p/src/spawn.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::actor::*; use crate::event::*; diff --git a/crates/aingle_p2p/src/spawn/actor.rs b/crates/aingle_p2p/src/spawn/actor.rs index d06122b..97e4bae 100644 --- a/crates/aingle_p2p/src/spawn/actor.rs +++ b/crates/aingle_p2p/src/spawn/actor.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(clippy::too_many_arguments)] use crate::actor::*; use crate::event::*; diff --git a/crates/aingle_p2p/src/test.rs b/crates/aingle_p2p/src/test.rs index 64c7d68..83c295e 100644 --- a/crates/aingle_p2p/src/test.rs +++ b/crates/aingle_p2p/src/test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::actor::*; use crate::AIngleP2pCell; use crate::*; diff --git a/crates/aingle_p2p/src/types.rs b/crates/aingle_p2p/src/types.rs index 38c28c3..8d612c7 100644 --- a/crates/aingle_p2p/src/types.rs +++ b/crates/aingle_p2p/src/types.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + /// Error type for AIngle P2p. #[derive(Debug, thiserror::Error)] #[non_exhaustive] diff --git a/crates/aingle_p2p/src/types/actor.rs b/crates/aingle_p2p/src/types/actor.rs index 62d948a..aa3a875 100644 --- a/crates/aingle_p2p/src/types/actor.rs +++ b/crates/aingle_p2p/src/types/actor.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Module containing the AIngleP2p actor definition. #![allow(clippy::too_many_arguments)] diff --git a/crates/aingle_p2p/src/types/event.rs b/crates/aingle_p2p/src/types/event.rs index 64b81ae..5aade5a 100644 --- a/crates/aingle_p2p/src/types/event.rs +++ b/crates/aingle_p2p/src/types/event.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(clippy::too_many_arguments)] //! Module containing incoming events from the AIngleP2p actor. diff --git a/crates/aingle_p2p/src/types/wire.rs b/crates/aingle_p2p/src/types/wire.rs index d46cd37..52466a4 100644 --- a/crates/aingle_p2p/src/types/wire.rs +++ b/crates/aingle_p2p/src/types/wire.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::*; use aingle_zome_types::zome::FunctionName; diff --git a/crates/aingle_sqlite/Cargo.toml b/crates/aingle_sqlite/Cargo.toml index 559378e..2747f3a 100644 --- a/crates/aingle_sqlite/Cargo.toml +++ b/crates/aingle_sqlite/Cargo.toml @@ -2,7 +2,7 @@ name = "aingle_sqlite" version = "0.0.1" description = "Abstractions for persistence of AIngle state via SQLite" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/aingle_sqlite" diff --git a/crates/aingle_sqlite/src/conn.rs b/crates/aingle_sqlite/src/conn.rs index 9af1325..6772e9d 100644 --- a/crates/aingle_sqlite/src/conn.rs +++ b/crates/aingle_sqlite/src/conn.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; use chashmap::CHashMap; use once_cell::sync::Lazy; diff --git a/crates/aingle_sqlite/src/conn/singleton_conn.rs b/crates/aingle_sqlite/src/conn/singleton_conn.rs index 6667716..475ad8e 100644 --- a/crates/aingle_sqlite/src/conn/singleton_conn.rs +++ b/crates/aingle_sqlite/src/conn/singleton_conn.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(deprecated)] #![allow(dead_code)] diff --git a/crates/aingle_sqlite/src/db.rs b/crates/aingle_sqlite/src/db.rs index b8da6cd..d53af34 100644 --- a/crates/aingle_sqlite/src/db.rs +++ b/crates/aingle_sqlite/src/db.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Functions dealing with obtaining and referencing singleton databases use crate::{ diff --git a/crates/aingle_sqlite/src/db/p2p_agent_store.rs b/crates/aingle_sqlite/src/db/p2p_agent_store.rs index 0a7ccd1..17b8d05 100644 --- a/crates/aingle_sqlite/src/db/p2p_agent_store.rs +++ b/crates/aingle_sqlite/src/db/p2p_agent_store.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! p2p_agent_store sql logic use crate::prelude::*; diff --git a/crates/aingle_sqlite/src/db/p2p_agent_store/p2p_test.rs b/crates/aingle_sqlite/src/db/p2p_agent_store/p2p_test.rs index f614d12..675c2bc 100644 --- a/crates/aingle_sqlite/src/db/p2p_agent_store/p2p_test.rs +++ b/crates/aingle_sqlite/src/db/p2p_agent_store/p2p_test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; use kitsune_p2p::agent_store::AgentInfoSigned; use kitsune_p2p::sgd_arc::SgdArc; diff --git a/crates/aingle_sqlite/src/db/p2p_metrics.rs b/crates/aingle_sqlite/src/db/p2p_metrics.rs index 20abd13..a7bb1c5 100644 --- a/crates/aingle_sqlite/src/db/p2p_metrics.rs +++ b/crates/aingle_sqlite/src/db/p2p_metrics.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::{ prelude::{DatabaseError, DatabaseResult}, sql::sql_p2p_metrics, diff --git a/crates/aingle_sqlite/src/error.rs b/crates/aingle_sqlite/src/error.rs index 8a38a56..f873277 100644 --- a/crates/aingle_sqlite/src/error.rs +++ b/crates/aingle_sqlite/src/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! All possible errors when working with SQLite databases // missing_docs allowed here since the errors already have self-descriptive strings diff --git a/crates/aingle_sqlite/src/exports.rs b/crates/aingle_sqlite/src/exports.rs index d601700..80df5fc 100644 --- a/crates/aingle_sqlite/src/exports.rs +++ b/crates/aingle_sqlite/src/exports.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! A few imports from `rkv`, to avoid consumers needing to import `rkv` explicitly pub use fallible_iterator::FallibleIterator; diff --git a/crates/aingle_sqlite/src/fatal.rs b/crates/aingle_sqlite/src/fatal.rs index b0c7a7d..c0b70c3 100644 --- a/crates/aingle_sqlite/src/fatal.rs +++ b/crates/aingle_sqlite/src/fatal.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Sometimes we have fatal errors, and need to halt the system. //! This module provides standards for showing these messages to the user. diff --git a/crates/aingle_sqlite/src/lib.rs b/crates/aingle_sqlite/src/lib.rs index 27b632d..8cefb26 100644 --- a/crates/aingle_sqlite/src/lib.rs +++ b/crates/aingle_sqlite/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(rustdoc::bare_urls)] #![allow(rustdoc::invalid_html_tags)] //! # Building blocks for persisted AIngle state diff --git a/crates/aingle_sqlite/src/prelude.rs b/crates/aingle_sqlite/src/prelude.rs index a94793c..04cd627 100644 --- a/crates/aingle_sqlite/src/prelude.rs +++ b/crates/aingle_sqlite/src/prelude.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Common types, especially traits, which we'd like to import en masse // pub use crate::buffer::*; diff --git a/crates/aingle_sqlite/src/schema.rs b/crates/aingle_sqlite/src/schema.rs index 3ef0679..09fb667 100644 --- a/crates/aingle_sqlite/src/schema.rs +++ b/crates/aingle_sqlite/src/schema.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use once_cell::sync::Lazy; use rusqlite::Connection; diff --git a/crates/aingle_sqlite/src/schema/tables.rs b/crates/aingle_sqlite/src/schema/tables.rs index f1fa0b0..36b3438 100644 --- a/crates/aingle_sqlite/src/schema/tables.rs +++ b/crates/aingle_sqlite/src/schema/tables.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + pub trait SqlInsert { fn sql_insert(&self, txn: &mut R) -> DatabaseResult<()>; } diff --git a/crates/aingle_sqlite/src/sql.rs b/crates/aingle_sqlite/src/sql.rs index f269083..bdb3b79 100644 --- a/crates/aingle_sqlite/src/sql.rs +++ b/crates/aingle_sqlite/src/sql.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + pub mod sql_cell { pub(crate) const SCHEMA: &str = include_str!("sql/cell/schema.sql"); pub const UPDATE_INTEGRATE_OPS: &str = include_str!("sql/cell/update_integrate_ops.sql"); diff --git a/crates/aingle_sqlite/src/swansong.rs b/crates/aingle_sqlite/src/swansong.rs index 2c36e95..0b5b7ca 100644 --- a/crates/aingle_sqlite/src/swansong.rs +++ b/crates/aingle_sqlite/src/swansong.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + /// A shrinkwrapped type with a Drop impl provided as a simple closure #[derive(shrinkwraprs::Shrinkwrap)] #[shrinkwrap(mutable, unsafe_ignore_visibility)] diff --git a/crates/aingle_sqlite/src/table.rs b/crates/aingle_sqlite/src/table.rs index 5b59aab..008963d 100644 --- a/crates/aingle_sqlite/src/table.rs +++ b/crates/aingle_sqlite/src/table.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Functionality for safely accessing databases. use rusqlite::Connection; diff --git a/crates/aingle_sqlite/src/test_utils.rs b/crates/aingle_sqlite/src/test_utils.rs index 43ad386..b88c1fc 100644 --- a/crates/aingle_sqlite/src/test_utils.rs +++ b/crates/aingle_sqlite/src/test_utils.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Helpers for unit tests use crate::db::DbKind; diff --git a/crates/aingle_state/Cargo.toml b/crates/aingle_state/Cargo.toml index ab470bb..f62b043 100644 --- a/crates/aingle_state/Cargo.toml +++ b/crates/aingle_state/Cargo.toml @@ -2,7 +2,7 @@ name = "aingle_state" version = "0.0.1" description = "TODO minimize deps" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/aingle_state" diff --git a/crates/aingle_state/src/entry_def.rs b/crates/aingle_state/src/entry_def.rs index 2cb700a..a36cac0 100644 --- a/crates/aingle_state/src/entry_def.rs +++ b/crates/aingle_state/src/entry_def.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_middleware_bytes::prelude::*; use aingle_sqlite::rusqlite; use aingle_sqlite::rusqlite::named_params; diff --git a/crates/aingle_state/src/host_fn_workspace.rs b/crates/aingle_state/src/host_fn_workspace.rs index c80323c..3a3158d 100644 --- a/crates/aingle_state/src/host_fn_workspace.rs +++ b/crates/aingle_state/src/host_fn_workspace.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::AgentPubKey; use aingle_types::env::EnvRead; use aingle_types::env::EnvWrite; diff --git a/crates/aingle_state/src/lib.rs b/crates/aingle_state/src/lib.rs index c97da02..d2e102a 100644 --- a/crates/aingle_state/src/lib.rs +++ b/crates/aingle_state/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! # Persisted State building blocks //! //! This crate provides a few types for working with databases. The types build upon those found in [aingle_sqlite::buffer]. diff --git a/crates/aingle_state/src/mutations.rs b/crates/aingle_state/src/mutations.rs index 2e77942..942914b 100644 --- a/crates/aingle_state/src/mutations.rs +++ b/crates/aingle_state/src/mutations.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::entry_def::EntryDefStoreKey; use crate::prelude::SignedValidationReceipt; use crate::query::to_blob; diff --git a/crates/aingle_state/src/mutations/error.rs b/crates/aingle_state/src/mutations/error.rs index 4f075a7..492d617 100644 --- a/crates/aingle_state/src/mutations/error.rs +++ b/crates/aingle_state/src/mutations/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use thiserror::Error; use crate::query::StateQueryError; diff --git a/crates/aingle_state/src/prelude.rs b/crates/aingle_state/src/prelude.rs index 8e07075..289b949 100644 --- a/crates/aingle_state/src/prelude.rs +++ b/crates/aingle_state/src/prelude.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + pub use crate::mutations::*; pub use crate::query::prelude::*; pub use crate::source_chain::*; diff --git a/crates/aingle_state/src/query.rs b/crates/aingle_state/src/query.rs index 6713390..88278e0 100644 --- a/crates/aingle_state/src/query.rs +++ b/crates/aingle_state/src/query.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::scratch::FilteredScratch; use crate::scratch::Scratch; use ai_hash::hash_type::AnySgd; diff --git a/crates/aingle_state/src/query/chain_head.rs b/crates/aingle_state/src/query/chain_head.rs index 2eb67e1..a9e9360 100644 --- a/crates/aingle_state/src/query/chain_head.rs +++ b/crates/aingle_state/src/query/chain_head.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::*; use aingle_sqlite::rusqlite::*; use aingle_zome_types::*; diff --git a/crates/aingle_state/src/query/element_details.rs b/crates/aingle_state/src/query/element_details.rs index 89dd4c0..be5797b 100644 --- a/crates/aingle_state/src/query/element_details.rs +++ b/crates/aingle_state/src/query/element_details.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::*; use aingle_sqlite::rusqlite::named_params; use aingle_types::prelude::Judged; diff --git a/crates/aingle_state/src/query/entry_details.rs b/crates/aingle_state/src/query/entry_details.rs index 401057e..402e424 100644 --- a/crates/aingle_state/src/query/entry_details.rs +++ b/crates/aingle_state/src/query/entry_details.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::*; use aingle_sqlite::rusqlite::named_params; use aingle_types::prelude::Judged; diff --git a/crates/aingle_state/src/query/error.rs b/crates/aingle_state/src/query/error.rs index cf824f4..67fa1da 100644 --- a/crates/aingle_state/src/query/error.rs +++ b/crates/aingle_state/src/query/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_types::sgd_op::SgdOpType; use aingle_zome_types::HeaderType; use thiserror::Error; diff --git a/crates/aingle_state/src/query/link.rs b/crates/aingle_state/src/query/link.rs index 6c86eeb..a1146cc 100644 --- a/crates/aingle_state/src/query/link.rs +++ b/crates/aingle_state/src/query/link.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::*; use aingle_sqlite::rusqlite::named_params; use aingle_types::sgd_op::SgdOpType; diff --git a/crates/aingle_state/src/query/link_details.rs b/crates/aingle_state/src/query/link_details.rs index 2739e2d..80d76cb 100644 --- a/crates/aingle_state/src/query/link_details.rs +++ b/crates/aingle_state/src/query/link_details.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::*; use aingle_zome_types::*; use std::fmt::Debug; diff --git a/crates/aingle_state/src/query/live_element.rs b/crates/aingle_state/src/query/live_element.rs index 7a13b47..dfcd4b7 100644 --- a/crates/aingle_state/src/query/live_element.rs +++ b/crates/aingle_state/src/query/live_element.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::*; use aingle_sqlite::rusqlite::named_params; use aingle_types::sgd_op::SgdOpType; diff --git a/crates/aingle_state/src/query/live_element/test.rs b/crates/aingle_state/src/query/live_element/test.rs index 13e995b..0f635e0 100644 --- a/crates/aingle_state/src/query/live_element/test.rs +++ b/crates/aingle_state/src/query/live_element/test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_sqlite::rusqlite::Connection; use aingle_sqlite::rusqlite::TransactionBehavior; use aingle_sqlite::schema::SCHEMA_CELL; diff --git a/crates/aingle_state/src/query/live_entry.rs b/crates/aingle_state/src/query/live_entry.rs index d252a25..ca70121 100644 --- a/crates/aingle_state/src/query/live_entry.rs +++ b/crates/aingle_state/src/query/live_entry.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::*; use aingle_sqlite::rusqlite::named_params; use aingle_types::prelude::SgdOpError; diff --git a/crates/aingle_state/src/query/live_entry/test.rs b/crates/aingle_state/src/query/live_entry/test.rs index 093d357..ddf4535 100644 --- a/crates/aingle_state/src/query/live_entry/test.rs +++ b/crates/aingle_state/src/query/live_entry/test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_sqlite::rusqlite::Connection; use aingle_sqlite::rusqlite::TransactionBehavior; use aingle_sqlite::schema::SCHEMA_CELL; diff --git a/crates/aingle_state/src/query/test_data.rs b/crates/aingle_state/src/query/test_data.rs index 16279a6..b82a579 100644 --- a/crates/aingle_state/src/query/test_data.rs +++ b/crates/aingle_state/src/query/test_data.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(clippy::clippy::redundant_clone)] use ::ai_fixt::prelude::*; use ai_hash::*; diff --git a/crates/aingle_state/src/query/tests.rs b/crates/aingle_state/src/query/tests.rs index 01af20f..dfe9775 100644 --- a/crates/aingle_state/src/query/tests.rs +++ b/crates/aingle_state/src/query/tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::mutations_helpers::insert_valid_authored_op; use crate::scratch::Scratch; use ::ai_fixt::prelude::*; diff --git a/crates/aingle_state/src/query/tests/chain_sequence.rs b/crates/aingle_state/src/query/tests/chain_sequence.rs index c1df8d3..d546646 100644 --- a/crates/aingle_state/src/query/tests/chain_sequence.rs +++ b/crates/aingle_state/src/query/tests/chain_sequence.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::{source_chain::SourceChainResult, test_utils::test_cell_env}; use ai_hash::HeaderHash; use aingle_sqlite::prelude::*; diff --git a/crates/aingle_state/src/query/tests/chain_test.rs b/crates/aingle_state/src/query/tests/chain_test.rs index e150692..bf36f82 100644 --- a/crates/aingle_state/src/query/tests/chain_test.rs +++ b/crates/aingle_state/src/query/tests/chain_test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::test_utils::{test_cell_env, TestEnv}; use ::ai_fixt::prelude::*; use ai_hash::AgentPubKey; diff --git a/crates/aingle_state/src/query/tests/details.rs b/crates/aingle_state/src/query/tests/details.rs index 977d7b8..cc33a4f 100644 --- a/crates/aingle_state/src/query/tests/details.rs +++ b/crates/aingle_state/src/query/tests/details.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use element_details::GetElementDetailsQuery; use crate::query::entry_details::GetEntryDetailsQuery; diff --git a/crates/aingle_state/src/query/tests/links.rs b/crates/aingle_state/src/query/tests/links.rs index bd4cbd0..baeb3e6 100644 --- a/crates/aingle_state/src/query/tests/links.rs +++ b/crates/aingle_state/src/query/tests/links.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; #[tokio::test(flavor = "multi_thread")] diff --git a/crates/aingle_state/src/query/tests/links_test.rs b/crates/aingle_state/src/query/tests/links_test.rs index 9163cf7..70ae40f 100644 --- a/crates/aingle_state/src/query/tests/links_test.rs +++ b/crates/aingle_state/src/query/tests/links_test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; use crate::here; use crate::prelude::*; diff --git a/crates/aingle_state/src/query/tests/store.rs b/crates/aingle_state/src/query/tests/store.rs index c0ac2ce..fea48f8 100644 --- a/crates/aingle_state/src/query/tests/store.rs +++ b/crates/aingle_state/src/query/tests/store.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; #[tokio::test(flavor = "multi_thread")] diff --git a/crates/aingle_state/src/query/tests/sys_meta.rs b/crates/aingle_state/src/query/tests/sys_meta.rs index cc0ec13..1cba5ab 100644 --- a/crates/aingle_state/src/query/tests/sys_meta.rs +++ b/crates/aingle_state/src/query/tests/sys_meta.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #[cfg(test)] mod tests { use ::ai_fixt::prelude::*; diff --git a/crates/aingle_state/src/saf_def.rs b/crates/aingle_state/src/saf_def.rs index d12468a..bb5876f 100644 --- a/crates/aingle_state/src/saf_def.rs +++ b/crates/aingle_state/src/saf_def.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::SafHash; use aingle_sqlite::rusqlite::named_params; use aingle_sqlite::rusqlite::OptionalExtension; diff --git a/crates/aingle_state/src/scratch.rs b/crates/aingle_state/src/scratch.rs index c71e60a..d54f434 100644 --- a/crates/aingle_state/src/scratch.rs +++ b/crates/aingle_state/src/scratch.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::collections::HashMap; use std::sync::Arc; use std::sync::Mutex; diff --git a/crates/aingle_state/src/source_chain.rs b/crates/aingle_state/src/source_chain.rs index 42a8428..bb2759a 100644 --- a/crates/aingle_state/src/source_chain.rs +++ b/crates/aingle_state/src/source_chain.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::AgentPubKey; use ai_hash::HasHash; use ai_hash::HeaderHash; diff --git a/crates/aingle_state/src/source_chain/error.rs b/crates/aingle_state/src/source_chain/error.rs index 9e7ee82..2af424c 100644 --- a/crates/aingle_state/src/source_chain/error.rs +++ b/crates/aingle_state/src/source_chain/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + // use crate::aingle::core::workflow::produce_sgd_ops_workflow::sgd_op_light::error::SgdOpConvertError; use ai_hash::EntryHash; use ai_hash::HeaderHash; diff --git a/crates/aingle_state/src/test_utils.rs b/crates/aingle_state/src/test_utils.rs index 03012f3..6bedfd1 100644 --- a/crates/aingle_state/src/test_utils.rs +++ b/crates/aingle_state/src/test_utils.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Helpers for unit tests use aingle_sqlite::prelude::*; diff --git a/crates/aingle_state/src/test_utils/mutations_helpers.rs b/crates/aingle_state/src/test_utils/mutations_helpers.rs index 5a87335..30e2984 100644 --- a/crates/aingle_state/src/test_utils/mutations_helpers.rs +++ b/crates/aingle_state/src/test_utils/mutations_helpers.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::mutations::*; use ai_hash::HasHash; use aingle_sqlite::rusqlite::Transaction; diff --git a/crates/aingle_state/src/validation_db.rs b/crates/aingle_state/src/validation_db.rs index 76453bb..6d9561a 100644 --- a/crates/aingle_state/src/validation_db.rs +++ b/crates/aingle_state/src/validation_db.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! # Validation Database Types use ai_hash::AnySgdHash; diff --git a/crates/aingle_state/src/validation_receipts.rs b/crates/aingle_state/src/validation_receipts.rs index 623e48a..0d60369 100644 --- a/crates/aingle_state/src/validation_receipts.rs +++ b/crates/aingle_state/src/validation_receipts.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Module for items related to aggregating validation_receipts use ai_hash::AgentPubKey; diff --git a/crates/aingle_state/src/wasm.rs b/crates/aingle_state/src/wasm.rs index 4af1eb4..a326b37 100644 --- a/crates/aingle_state/src/wasm.rs +++ b/crates/aingle_state/src/wasm.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ai_hash::WasmHash; use aingle_sqlite::rusqlite::named_params; use aingle_sqlite::rusqlite::OptionalExtension; diff --git a/crates/aingle_state/src/workspace.rs b/crates/aingle_state/src/workspace.rs index 1fd974c..c00584c 100644 --- a/crates/aingle_state/src/workspace.rs +++ b/crates/aingle_state/src/workspace.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Workspaces are a simple abstraction used to stage changes during Workflow //! execution to be persisted later //! diff --git a/crates/aingle_types/Cargo.toml b/crates/aingle_types/Cargo.toml index 36ece80..8a36dbd 100644 --- a/crates/aingle_types/Cargo.toml +++ b/crates/aingle_types/Cargo.toml @@ -2,7 +2,7 @@ name = "aingle_types" version = "0.0.1" description = "AIngle common types" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/aingle_types" diff --git a/crates/aingle_types/src/access.rs b/crates/aingle_types/src/access.rs index 5083f27..06f3afe 100644 --- a/crates/aingle_types/src/access.rs +++ b/crates/aingle_types/src/access.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Defines HostFnAccess and Permission /// Access a call has to host functions diff --git a/crates/aingle_types/src/activity.rs b/crates/aingle_types/src/activity.rs index 16410b0..fa4a023 100644 --- a/crates/aingle_types/src/activity.rs +++ b/crates/aingle_types/src/activity.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Types for agents chain activity use ai_hash::AgentPubKey; diff --git a/crates/aingle_types/src/app.rs b/crates/aingle_types/src/app.rs index d267b11..fddd9b5 100644 --- a/crates/aingle_types/src/app.rs +++ b/crates/aingle_types/src/app.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Everything to do with App (hApp) installation and uninstallation //! //! An App is a essentially a collection of Cells which are intended to be diff --git a/crates/aingle_types/src/app/app_bundle.rs b/crates/aingle_types/src/app/app_bundle.rs index ab06b52..9fd3433 100644 --- a/crates/aingle_types/src/app/app_bundle.rs +++ b/crates/aingle_types/src/app/app_bundle.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::{collections::HashMap, path::PathBuf, sync::Arc}; use self::error::AppBundleResult; diff --git a/crates/aingle_types/src/app/app_bundle/error.rs b/crates/aingle_types/src/app/app_bundle/error.rs index e2e667e..81c31ed 100644 --- a/crates/aingle_types/src/app/app_bundle/error.rs +++ b/crates/aingle_types/src/app/app_bundle/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_util::ffs; use mr_bundle::error::MrBundleError; diff --git a/crates/aingle_types/src/app/app_bundle/tests.rs b/crates/aingle_types/src/app/app_bundle/tests.rs index a179281..990a537 100644 --- a/crates/aingle_types/src/app/app_bundle/tests.rs +++ b/crates/aingle_types/src/app/app_bundle/tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::path::PathBuf; use crate::prelude::*; diff --git a/crates/aingle_types/src/app/app_manifest.rs b/crates/aingle_types/src/app/app_manifest.rs index a1b1379..d05ec8b 100644 --- a/crates/aingle_types/src/app/app_manifest.rs +++ b/crates/aingle_types/src/app/app_manifest.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![warn(missing_docs)] //! Defines the hApp Manifest YAML format, including validation. diff --git a/crates/aingle_types/src/app/app_manifest/app_manifest_v1.rs b/crates/aingle_types/src/app/app_manifest/app_manifest_v1.rs index c8e41b1..f7faada 100644 --- a/crates/aingle_types/src/app/app_manifest/app_manifest_v1.rs +++ b/crates/aingle_types/src/app/app_manifest/app_manifest_v1.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! App Manifest format, version 1. //! //! NB: After stabilization, *do not modify this file*! Create a new version of diff --git a/crates/aingle_types/src/app/app_manifest/app_manifest_validated.rs b/crates/aingle_types/src/app/app_manifest/app_manifest_validated.rs index e303437..fefac94 100644 --- a/crates/aingle_types/src/app/app_manifest/app_manifest_validated.rs +++ b/crates/aingle_types/src/app/app_manifest/app_manifest_validated.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Normalized, validated representation of the App Manifest. //! //! The versioned manifest structs are designed to be deserialized from YAML, diff --git a/crates/aingle_types/src/app/app_manifest/current.rs b/crates/aingle_types/src/app/app_manifest/current.rs index 432bef6..5597385 100644 --- a/crates/aingle_types/src/app/app_manifest/current.rs +++ b/crates/aingle_types/src/app/app_manifest/current.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Re-export types from the current version. //! Simply adjust this import when using a new version. diff --git a/crates/aingle_types/src/app/app_manifest/error.rs b/crates/aingle_types/src/app/app_manifest/error.rs index 3321da8..3f204d3 100644 --- a/crates/aingle_types/src/app/app_manifest/error.rs +++ b/crates/aingle_types/src/app/app_manifest/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use thiserror::Error; use crate::prelude::CellNick; diff --git a/crates/aingle_types/src/app/error.rs b/crates/aingle_types/src/app/error.rs index 08068f6..f7f27a6 100644 --- a/crates/aingle_types/src/app/error.rs +++ b/crates/aingle_types/src/app/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(missing_docs)] use super::AppSlot; diff --git a/crates/aingle_types/src/app/saf_gamut.rs b/crates/aingle_types/src/app/saf_gamut.rs index a8f2dfa..48fe51f 100644 --- a/crates/aingle_types/src/app/saf_gamut.rs +++ b/crates/aingle_types/src/app/saf_gamut.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! A SAF gamut is a representation of all SAFs available in a given context. use super::SafVersionSpec; diff --git a/crates/aingle_types/src/autonomic.rs b/crates/aingle_types/src/autonomic.rs index a9a7486..3f0f398 100644 --- a/crates/aingle_types/src/autonomic.rs +++ b/crates/aingle_types/src/autonomic.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! AIngle autonomic type helpers. /// The various processes which run "autonomically", aka subconsciously. diff --git a/crates/aingle_types/src/chain.rs b/crates/aingle_types/src/chain.rs index ff15340..b5c83d3 100644 --- a/crates/aingle_types/src/chain.rs +++ b/crates/aingle_types/src/chain.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Types related to an agents for chain activity use crate::activity::AgentActivityResponse; use crate::activity::ChainItems; diff --git a/crates/aingle_types/src/db.rs b/crates/aingle_types/src/db.rs index 755113f..5819c85 100644 --- a/crates/aingle_types/src/db.rs +++ b/crates/aingle_types/src/db.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Utility items related to data persistence. use aingle_zome_types::cell::CellId; diff --git a/crates/aingle_types/src/element.rs b/crates/aingle_types/src/element.rs index fae4f13..aceac5b 100644 --- a/crates/aingle_types/src/element.rs +++ b/crates/aingle_types/src/element.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Defines a Element, the basic unit of AIngle data. use crate::header::WireDelete; diff --git a/crates/aingle_types/src/element/error.rs b/crates/aingle_types/src/element/error.rs index f55cc0b..6b2e1a8 100644 --- a/crates/aingle_types/src/element/error.rs +++ b/crates/aingle_types/src/element/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use thiserror::Error; #[derive(Error, Debug)] diff --git a/crates/aingle_types/src/entry.rs b/crates/aingle_types/src/entry.rs index 90e6ad5..c1760d7 100644 --- a/crates/aingle_types/src/entry.rs +++ b/crates/aingle_types/src/entry.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! An Entry is a unit of data in a AIngle Source Chain. //! //! This module contains all the necessary definitions for Entry, which broadly speaking diff --git a/crates/aingle_types/src/env.rs b/crates/aingle_types/src/env.rs index 84730e7..81fa729 100644 --- a/crates/aingle_types/src/env.rs +++ b/crates/aingle_types/src/env.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! An "Env" Combines a database reference with a KeystoreSender use std::path::Path; diff --git a/crates/aingle_types/src/fixt.rs b/crates/aingle_types/src/fixt.rs index a0e8b34..345db44 100644 --- a/crates/aingle_types/src/fixt.rs +++ b/crates/aingle_types/src/fixt.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Fixture definitions for crate structs #![allow(missing_docs)] diff --git a/crates/aingle_types/src/header.rs b/crates/aingle_types/src/header.rs index 0ea8dea..682b44b 100644 --- a/crates/aingle_types/src/header.rs +++ b/crates/aingle_types/src/header.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! AIngle's [`Header`] and its variations. //! //! All header variations contain the fields `author` and `timestamp`. diff --git a/crates/aingle_types/src/header/error.rs b/crates/aingle_types/src/header/error.rs index a2616d8..501ce22 100644 --- a/crates/aingle_types/src/header/error.rs +++ b/crates/aingle_types/src/header/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_zome_types::header::conversions::WrongHeaderError; use thiserror::Error; diff --git a/crates/aingle_types/src/lib.rs b/crates/aingle_types/src/lib.rs index f055efb..2c61397 100644 --- a/crates/aingle_types/src/lib.rs +++ b/crates/aingle_types/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Common types used by other AIngle crates. //! //! This crate is a complement to the diff --git a/crates/aingle_types/src/link.rs b/crates/aingle_types/src/link.rs index c0a639c..918f4d7 100644 --- a/crates/aingle_types/src/link.rs +++ b/crates/aingle_types/src/link.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Links interrelate entries in a source chain. use ai_hash::AgentPubKey; diff --git a/crates/aingle_types/src/macros.rs b/crates/aingle_types/src/macros.rs index 9042442..42b26c3 100644 --- a/crates/aingle_types/src/macros.rs +++ b/crates/aingle_types/src/macros.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! General-purpose macros //! (Consider moving this to its own crate?) diff --git a/crates/aingle_types/src/metadata.rs b/crates/aingle_types/src/metadata.rs index 537e0e1..d010a10 100644 --- a/crates/aingle_types/src/metadata.rs +++ b/crates/aingle_types/src/metadata.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Types for getting and storing metadata use crate::timestamp; diff --git a/crates/aingle_types/src/prelude.rs b/crates/aingle_types/src/prelude.rs index 1a58c76..a1bd80d 100644 --- a/crates/aingle_types/src/prelude.rs +++ b/crates/aingle_types/src/prelude.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! reexport some common things #![allow(ambiguous_glob_reexports)] diff --git a/crates/aingle_types/src/properties.rs b/crates/aingle_types/src/properties.rs index 87ca39f..bbe920c 100644 --- a/crates/aingle_types/src/properties.rs +++ b/crates/aingle_types/src/properties.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Implements YamlProperties, and potentially any other data types that can //! represent "properties" of a SAF diff --git a/crates/aingle_types/src/saf.rs b/crates/aingle_types/src/saf.rs index f3e3567..ccaa3f0 100644 --- a/crates/aingle_types/src/saf.rs +++ b/crates/aingle_types/src/saf.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! saf is a library for working with aingle saf files/entries. //! //! It includes utilities for representing saf structures in memory, diff --git a/crates/aingle_types/src/saf/error.rs b/crates/aingle_types/src/saf/error.rs index 7ffe475..50d8fb2 100644 --- a/crates/aingle_types/src/saf/error.rs +++ b/crates/aingle_types/src/saf/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! AIngle SafError type. use ai_hash::{SafHash, WasmHash}; diff --git a/crates/aingle_types/src/saf/saf_bundle.rs b/crates/aingle_types/src/saf/saf_bundle.rs index 63e958d..d4aab59 100644 --- a/crates/aingle_types/src/saf/saf_bundle.rs +++ b/crates/aingle_types/src/saf/saf_bundle.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::{ collections::BTreeMap, path::{Path, PathBuf}, diff --git a/crates/aingle_types/src/saf/saf_file.rs b/crates/aingle_types/src/saf/saf_file.rs index 449157d..68c299d 100644 --- a/crates/aingle_types/src/saf/saf_file.rs +++ b/crates/aingle_types/src/saf/saf_file.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::error::SafError; use crate::prelude::*; use ai_hash::*; diff --git a/crates/aingle_types/src/saf/saf_manifest.rs b/crates/aingle_types/src/saf/saf_manifest.rs index eeec968..23b1775 100644 --- a/crates/aingle_types/src/saf/saf_manifest.rs +++ b/crates/aingle_types/src/saf/saf_manifest.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; use std::path::PathBuf; mod saf_manifest_v1; diff --git a/crates/aingle_types/src/saf/saf_manifest/saf_manifest_v1.rs b/crates/aingle_types/src/saf/saf_manifest/saf_manifest_v1.rs index 4727d1a..b71099c 100644 --- a/crates/aingle_types/src/saf/saf_manifest/saf_manifest_v1.rs +++ b/crates/aingle_types/src/saf/saf_manifest/saf_manifest_v1.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; use ai_hash::*; use aingle_zome_types::ZomeName; diff --git a/crates/aingle_types/src/saf/saf_store.rs b/crates/aingle_types/src/saf/saf_store.rs index 1a8159f..91f1950 100644 --- a/crates/aingle_types/src/saf/saf_store.rs +++ b/crates/aingle_types/src/saf/saf_store.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; /// A readable and writable store of SafFiles and EntryDefs diff --git a/crates/aingle_types/src/saf/wasm.rs b/crates/aingle_types/src/saf/wasm.rs index 423cbce..bfa69c3 100644 --- a/crates/aingle_types/src/saf/wasm.rs +++ b/crates/aingle_types/src/saf/wasm.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! crate::saf::wasm is a module for managing webassembly code //! - within the in-memory saf struct //! - and serialized to json diff --git a/crates/aingle_types/src/sgd_op.rs b/crates/aingle_types/src/sgd_op.rs index cece17d..b1ed72a 100644 --- a/crates/aingle_types/src/sgd_op.rs +++ b/crates/aingle_types/src/sgd_op.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Data structures representing the operations that can be performed within a AIngle SGD. //! //! See the [item-level documentation for `SgdOp`][SgdOp] for more details. diff --git a/crates/aingle_types/src/sgd_op/error.rs b/crates/aingle_types/src/sgd_op/error.rs index 30e4b3d..17a719a 100644 --- a/crates/aingle_types/src/sgd_op/error.rs +++ b/crates/aingle_types/src/sgd_op/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_middleware_bytes::SerializedBytesError; use aingle_zome_types::header::conversions::WrongHeaderError; use aingle_zome_types::Header; diff --git a/crates/aingle_types/src/sgd_op/tests.rs b/crates/aingle_types/src/sgd_op/tests.rs index 67a7523..88a18d3 100644 --- a/crates/aingle_types/src/sgd_op/tests.rs +++ b/crates/aingle_types/src/sgd_op/tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::fixt::AgentValidationPkgFixturator; use crate::fixt::CloseChainFixturator; use crate::fixt::CreateFixturator; diff --git a/crates/aingle_types/src/signal.rs b/crates/aingle_types/src/signal.rs index d17ea1c..3b62393 100644 --- a/crates/aingle_types/src/signal.rs +++ b/crates/aingle_types/src/signal.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Signals which can be emitted from within AIngle, out across an interface. //! There are two main kinds of Signal: system-defined, and app-defined: //! - App-defined signals are produced via the `emit_signal` host function. diff --git a/crates/aingle_types/src/test_utils.rs b/crates/aingle_types/src/test_utils.rs index fd576cc..64bb3da 100644 --- a/crates/aingle_types/src/test_utils.rs +++ b/crates/aingle_types/src/test_utils.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Some common testing helpers. use crate::element::SignedHeaderHashedExt; diff --git a/crates/aingle_types/src/timestamp.rs b/crates/aingle_types/src/timestamp.rs index 828397d..c731db3 100644 --- a/crates/aingle_types/src/timestamp.rs +++ b/crates/aingle_types/src/timestamp.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! A UTC timestamp for use in AIngle's headers. //! //! Includes a struct that gives a uniform well-ordered byte representation diff --git a/crates/aingle_types/src/validate.rs b/crates/aingle_types/src/validate.rs index aff1818..43aa744 100644 --- a/crates/aingle_types/src/validate.rs +++ b/crates/aingle_types/src/validate.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! the _host_ types used to track the status/result of validating entries //! c.f. _guest_ types for validation callbacks and packages across the wasm boudary in zome_types diff --git a/crates/aingle_util/Cargo.toml b/crates/aingle_util/Cargo.toml index ced28d6..190d1d6 100644 --- a/crates/aingle_util/Cargo.toml +++ b/crates/aingle_util/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.1" authors = ["Apilium Technologies "] edition = "2018" description = "This crate is a collection of various utility functions that are used in the other crates in the aingle repository." -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/aingle_util" diff --git a/crates/aingle_util/src/ffs/io_error.rs b/crates/aingle_util/src/ffs/io_error.rs index cf9482d..a310b19 100644 --- a/crates/aingle_util/src/ffs/io_error.rs +++ b/crates/aingle_util/src/ffs/io_error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #[derive(Debug)] pub struct IoError { pub(crate) original: std::io::Error, diff --git a/crates/aingle_util/src/ffs/mod.rs b/crates/aingle_util/src/ffs/mod.rs index 516759d..9bc3a57 100644 --- a/crates/aingle_util/src/ffs/mod.rs +++ b/crates/aingle_util/src/ffs/mod.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! ffs - the Friendly Filesystem //! //! Wraps std::fs (or optionally, tokio::fs) in functions with identical diff --git a/crates/aingle_util/src/lib.rs b/crates/aingle_util/src/lib.rs index f1972ce..caaf82d 100644 --- a/crates/aingle_util/src/lib.rs +++ b/crates/aingle_util/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(rustdoc::bare_urls)] #![allow(rustdoc::invalid_html_tags)] #![allow(rustdoc::invalid_rust_codeblocks)] diff --git a/crates/aingle_util/src/tokio_helper.rs b/crates/aingle_util/src/tokio_helper.rs index 1b33ea9..f94fb60 100644 --- a/crates/aingle_util/src/tokio_helper.rs +++ b/crates/aingle_util/src/tokio_helper.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use once_cell::sync::Lazy; use tokio::runtime::Runtime; diff --git a/crates/aingle_viz/Cargo.toml b/crates/aingle_viz/Cargo.toml index f022169..27205ec 100644 --- a/crates/aingle_viz/Cargo.toml +++ b/crates/aingle_viz/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "aingle_viz" -version = "0.3.8" +version = "0.4.0" description = "DAG Visualization for AIngle - Web-based graph explorer" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" repository = "https://github.com/ApiliumCode/aingle" homepage = "https://apilium.com" documentation = "https://docs.rs/aingle_viz" @@ -30,8 +30,8 @@ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" # Graph data -aingle_graph = { version = "0.3", path = "../aingle_graph" } -aingle_minimal = { version = "0.3", path = "../aingle_minimal", default-features = false, features = ["sqlite"] } +aingle_graph = { version = "0.4", path = "../aingle_graph" } +aingle_minimal = { version = "0.4", path = "../aingle_minimal", default-features = false, features = ["sqlite"] } # Utilities log = "0.4" diff --git a/crates/aingle_viz/src/api.rs b/crates/aingle_viz/src/api.rs index 15ddbcf..617dece 100644 --- a/crates/aingle_viz/src/api.rs +++ b/crates/aingle_viz/src/api.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! REST and WebSocket API endpoints for the visualization server. //! //! This module provides the HTTP API layer built on [axum](https://docs.rs/axum). diff --git a/crates/aingle_viz/src/dag.rs b/crates/aingle_viz/src/dag.rs index 3c16464..9f4a168 100644 --- a/crates/aingle_viz/src/dag.rs +++ b/crates/aingle_viz/src/dag.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Data structures for representing the AIngle DAG in a visualization-friendly format. //! //! This module provides the core types for building and manipulating DAG visualizations. diff --git a/crates/aingle_viz/src/error.rs b/crates/aingle_viz/src/error.rs index 55b2c45..c0b5961 100644 --- a/crates/aingle_viz/src/error.rs +++ b/crates/aingle_viz/src/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Error types for the AIngle visualization server. use thiserror::Error; diff --git a/crates/aingle_viz/src/events.rs b/crates/aingle_viz/src/events.rs index 675eaa5..6391e30 100644 --- a/crates/aingle_viz/src/events.rs +++ b/crates/aingle_viz/src/events.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Real-time event system for broadcasting DAG updates to WebSocket clients. //! //! This module provides the [`EventBroadcaster`] which manages WebSocket connections diff --git a/crates/aingle_viz/src/lib.rs b/crates/aingle_viz/src/lib.rs index 3c20210..afc9950 100644 --- a/crates/aingle_viz/src/lib.rs +++ b/crates/aingle_viz/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![doc = include_str!("../README.md")] //! # AIngle Visualization - DAG Explorer //! diff --git a/crates/aingle_viz/src/main.rs b/crates/aingle_viz/src/main.rs index c65c7d2..cc3c40d 100644 --- a/crates/aingle_viz/src/main.rs +++ b/crates/aingle_viz/src/main.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! AIngle Viz - DAG Visualization Server //! //! A standalone web server for visualizing AIngle DAG structures. diff --git a/crates/aingle_viz/src/server.rs b/crates/aingle_viz/src/server.rs index 8b904da..25e6418 100644 --- a/crates/aingle_viz/src/server.rs +++ b/crates/aingle_viz/src/server.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! HTTP and WebSocket server for the DAG visualization. //! //! This module provides the main [`VizServer`] that serves the web UI and the REST/WebSocket API diff --git a/crates/aingle_websocket/Cargo.toml b/crates/aingle_websocket/Cargo.toml index 196ba07..1c9d02a 100644 --- a/crates/aingle_websocket/Cargo.toml +++ b/crates/aingle_websocket/Cargo.toml @@ -2,7 +2,7 @@ name = "aingle_websocket" version = "0.0.1" description = "AIngle utilities for serving and connection with websockets" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/aingle_websocket" diff --git a/crates/aingle_websocket/benches/bench.rs b/crates/aingle_websocket/benches/bench.rs index 84b0d3b..6d41467 100644 --- a/crates/aingle_websocket/benches/bench.rs +++ b/crates/aingle_websocket/benches/bench.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use criterion::criterion_group; use criterion::criterion_main; use criterion::BenchmarkId; diff --git a/crates/aingle_websocket/examples/docs.rs b/crates/aingle_websocket/examples/docs.rs index a90ca52..9fe5ffb 100644 --- a/crates/aingle_websocket/examples/docs.rs +++ b/crates/aingle_websocket/examples/docs.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_middleware_bytes::prelude::*; use aingle_websocket::*; use std::time::Duration; diff --git a/crates/aingle_websocket/examples/echo.rs b/crates/aingle_websocket/examples/echo.rs index 0b90251..02e38f6 100644 --- a/crates/aingle_websocket/examples/echo.rs +++ b/crates/aingle_websocket/examples/echo.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_middleware_bytes::prelude::*; use aingle_websocket::*; diff --git a/crates/aingle_websocket/examples/echo_client.rs b/crates/aingle_websocket/examples/echo_client.rs index 613368f..8394aac 100644 --- a/crates/aingle_websocket/examples/echo_client.rs +++ b/crates/aingle_websocket/examples/echo_client.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_middleware_bytes::prelude::*; use aingle_websocket::*; use std::convert::TryInto; diff --git a/crates/aingle_websocket/examples/echo_server.rs b/crates/aingle_websocket/examples/echo_server.rs index 156be13..90bfcad 100644 --- a/crates/aingle_websocket/examples/echo_server.rs +++ b/crates/aingle_websocket/examples/echo_server.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_middleware_bytes::prelude::*; use aingle_websocket::*; use std::convert::TryInto; diff --git a/crates/aingle_websocket/src/error.rs b/crates/aingle_websocket/src/error.rs index efe3111..0b4f1e4 100644 --- a/crates/aingle_websocket/src/error.rs +++ b/crates/aingle_websocket/src/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_middleware_bytes::SerializedBytesError; use ghost_actor::GhostError; diff --git a/crates/aingle_websocket/src/lib.rs b/crates/aingle_websocket/src/lib.rs index 51e0785..05ff22f 100644 --- a/crates/aingle_websocket/src/lib.rs +++ b/crates/aingle_websocket/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![deny(missing_docs)] //! AIngle utilities for websocket serving and connecting. //! diff --git a/crates/aingle_websocket/src/simple_actor.rs b/crates/aingle_websocket/src/simple_actor.rs index 3e5229d..2e9909e 100644 --- a/crates/aingle_websocket/src/simple_actor.rs +++ b/crates/aingle_websocket/src/simple_actor.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Simple actor implementation to replace the missing GhostActor from ghost_actor crate. //! //! This provides a minimal actor implementation that: diff --git a/crates/aingle_websocket/src/util.rs b/crates/aingle_websocket/src/util.rs index ca27a99..ea4f15e 100644 --- a/crates/aingle_websocket/src/util.rs +++ b/crates/aingle_websocket/src/util.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! internal websocket utility types and code use std::net::SocketAddr; diff --git a/crates/aingle_websocket/src/websocket.rs b/crates/aingle_websocket/src/websocket.rs index d1783bb..214b1c1 100644 --- a/crates/aingle_websocket/src/websocket.rs +++ b/crates/aingle_websocket/src/websocket.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::collections::HashMap; use std::convert::TryInto; use std::sync::Arc; diff --git a/crates/aingle_websocket/src/websocket_config.rs b/crates/aingle_websocket/src/websocket_config.rs index e2a07a9..47c0c82 100644 --- a/crates/aingle_websocket/src/websocket_config.rs +++ b/crates/aingle_websocket/src/websocket_config.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! defines a builder-style config struct for setting up websockets /// A builder-style config struct for setting up websockets. diff --git a/crates/aingle_websocket/src/websocket_listener.rs b/crates/aingle_websocket/src/websocket_listener.rs index 7bbbbc2..f2e3c90 100644 --- a/crates/aingle_websocket/src/websocket_listener.rs +++ b/crates/aingle_websocket/src/websocket_listener.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use futures::stream::BoxStream; use futures::StreamExt; use futures::TryStreamExt; diff --git a/crates/aingle_websocket/src/websocket_receiver.rs b/crates/aingle_websocket/src/websocket_receiver.rs index 5495422..9e7d1b3 100644 --- a/crates/aingle_websocket/src/websocket_receiver.rs +++ b/crates/aingle_websocket/src/websocket_receiver.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::sync::Arc; use aingle_middleware_bytes::SerializedBytes; diff --git a/crates/aingle_websocket/src/websocket_sender.rs b/crates/aingle_websocket/src/websocket_sender.rs index fa6d2ee..71cd56c 100644 --- a/crates/aingle_websocket/src/websocket_sender.rs +++ b/crates/aingle_websocket/src/websocket_sender.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_middleware_bytes::{SerializedBytes, SerializedBytesError}; use futures::FutureExt; use futures::StreamExt; diff --git a/crates/aingle_websocket/tests/integration.rs b/crates/aingle_websocket/tests/integration.rs index 882af0a..4d9b8f4 100644 --- a/crates/aingle_websocket/tests/integration.rs +++ b/crates/aingle_websocket/tests/integration.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::sync::Arc; use aingle_middleware_bytes::prelude::*; diff --git a/crates/aingle_zk/Cargo.toml b/crates/aingle_zk/Cargo.toml index 151eaec..c9f5d76 100644 --- a/crates/aingle_zk/Cargo.toml +++ b/crates/aingle_zk/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "aingle_zk" -version = "0.3.8" +version = "0.4.0" description = "Zero-Knowledge Proofs for AIngle - privacy-preserving cryptographic primitives" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" repository = "https://github.com/ApiliumCode/aingle" homepage = "https://apilium.com" documentation = "https://docs.rs/aingle_zk" diff --git a/crates/aingle_zk/benches/full_benchmarks.rs b/crates/aingle_zk/benches/full_benchmarks.rs index b04ef26..d4b8c7a 100644 --- a/crates/aingle_zk/benches/full_benchmarks.rs +++ b/crates/aingle_zk/benches/full_benchmarks.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Comprehensive benchmarks for all ZK operations //! //! This benchmark suite covers: diff --git a/crates/aingle_zk/benches/zk_benchmarks.rs b/crates/aingle_zk/benches/zk_benchmarks.rs index 42f989a..378a2c4 100644 --- a/crates/aingle_zk/benches/zk_benchmarks.rs +++ b/crates/aingle_zk/benches/zk_benchmarks.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Benchmarks for ZK operations use aingle_zk::{ diff --git a/crates/aingle_zk/examples/batch_verification.rs b/crates/aingle_zk/examples/batch_verification.rs index 859a70d..12d0cdc 100644 --- a/crates/aingle_zk/examples/batch_verification.rs +++ b/crates/aingle_zk/examples/batch_verification.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Batch Verification Example //! //! This example demonstrates the efficiency gains from batch verification. diff --git a/crates/aingle_zk/src/aggregation.rs b/crates/aingle_zk/src/aggregation.rs index 6a0a137..0976bb1 100644 --- a/crates/aingle_zk/src/aggregation.rs +++ b/crates/aingle_zk/src/aggregation.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Proof aggregation for efficient batch verification //! //! This module provides tools for aggregating multiple ZK proofs into diff --git a/crates/aingle_zk/src/batch.rs b/crates/aingle_zk/src/batch.rs index 7c00e67..7892cde 100644 --- a/crates/aingle_zk/src/batch.rs +++ b/crates/aingle_zk/src/batch.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Batch verification for zero-knowledge proofs //! //! Batch verification allows verifying multiple proofs more efficiently than diff --git a/crates/aingle_zk/src/commitment.rs b/crates/aingle_zk/src/commitment.rs index 6499613..5a564db 100644 --- a/crates/aingle_zk/src/commitment.rs +++ b/crates/aingle_zk/src/commitment.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Cryptographic commitment schemes //! //! Commitments allow you to commit to a value without revealing it, diff --git a/crates/aingle_zk/src/error.rs b/crates/aingle_zk/src/error.rs index feec73d..3aa9b89 100644 --- a/crates/aingle_zk/src/error.rs +++ b/crates/aingle_zk/src/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Error types for ZK operations use thiserror::Error; diff --git a/crates/aingle_zk/src/lib.rs b/crates/aingle_zk/src/lib.rs index e9980e1..6333402 100644 --- a/crates/aingle_zk/src/lib.rs +++ b/crates/aingle_zk/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![doc = include_str!("../README.md")] //! # AIngle ZK - Zero-Knowledge Proofs //! diff --git a/crates/aingle_zk/src/merkle.rs b/crates/aingle_zk/src/merkle.rs index e95d821..f69eb95 100644 --- a/crates/aingle_zk/src/merkle.rs +++ b/crates/aingle_zk/src/merkle.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Merkle tree for membership proofs //! //! Allows proving that an element is part of a set without revealing diff --git a/crates/aingle_zk/src/proof.rs b/crates/aingle_zk/src/proof.rs index 3b8ff37..5b0ed3c 100644 --- a/crates/aingle_zk/src/proof.rs +++ b/crates/aingle_zk/src/proof.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Zero-knowledge proof types and verification //! //! High-level proof API for AIngle. diff --git a/crates/aingle_zk/src/range.rs b/crates/aingle_zk/src/range.rs index 42b5646..15010b1 100644 --- a/crates/aingle_zk/src/range.rs +++ b/crates/aingle_zk/src/range.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Range proofs using Bulletproofs //! //! Prove that a committed value is within a specific range without revealing the actual value. diff --git a/crates/aingle_zk/tests/batch_integration_test.rs b/crates/aingle_zk/tests/batch_integration_test.rs index 2053a25..a2c715c 100644 --- a/crates/aingle_zk/tests/batch_integration_test.rs +++ b/crates/aingle_zk/tests/batch_integration_test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Integration tests for batch verification use aingle_zk::{ diff --git a/crates/aingle_zome_types/Cargo.toml b/crates/aingle_zome_types/Cargo.toml index c28a78f..9842680 100644 --- a/crates/aingle_zome_types/Cargo.toml +++ b/crates/aingle_zome_types/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "aingle_zome_types" -version = "0.3.6" +version = "0.4.0" description = "AIngle zome types" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/aingle_zome_types" @@ -14,7 +14,7 @@ edition = "2018" [dependencies] chrono = { version = "0.4", default-features = false, features = ["clock", "std"] } -ai_hash = { version = ">=0.3", path = "../ai_hash", default-features = false, features = ["serialized-bytes", "string-encoding"] } +ai_hash = { version = ">=0.4", path = "../ai_hash", default-features = false, features = ["serialized-bytes", "string-encoding"] } aingle_middleware_bytes = "=0.0.3" paste = "1.0" serde = { version = "1.0", features = [ "derive" ] } diff --git a/crates/aingle_zome_types/src/agent_activity.rs b/crates/aingle_zome_types/src/agent_activity.rs index d182554..785ede3 100644 --- a/crates/aingle_zome_types/src/agent_activity.rs +++ b/crates/aingle_zome_types/src/agent_activity.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::{judged::Judged, HeaderType}; use crate::{EntryType, SignedHeader}; use ai_hash::HeaderHash; diff --git a/crates/aingle_zome_types/src/bytes.rs b/crates/aingle_zome_types/src/bytes.rs index c321a55..d208f2f 100644 --- a/crates/aingle_zome_types/src/bytes.rs +++ b/crates/aingle_zome_types/src/bytes.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! represent arbitrary bytes (not serialized) //! e.g. totally random crypto bytes from random_bytes diff --git a/crates/aingle_zome_types/src/call.rs b/crates/aingle_zome_types/src/call.rs index 5796101..1dcff5e 100644 --- a/crates/aingle_zome_types/src/call.rs +++ b/crates/aingle_zome_types/src/call.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::capability::CapSecret; use crate::cell::CellId; use crate::zome::FunctionName; diff --git a/crates/aingle_zome_types/src/call_remote.rs b/crates/aingle_zome_types/src/call_remote.rs index 7eeb19d..01be22c 100644 --- a/crates/aingle_zome_types/src/call_remote.rs +++ b/crates/aingle_zome_types/src/call_remote.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::capability::CapSecret; use crate::prelude::*; use crate::zome::FunctionName; diff --git a/crates/aingle_zome_types/src/capability.rs b/crates/aingle_zome_types/src/capability.rs index 1374733..69a7621 100644 --- a/crates/aingle_zome_types/src/capability.rs +++ b/crates/aingle_zome_types/src/capability.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Capability Grants and Claims //! //! This module provides a custom system for defining application-specific diff --git a/crates/aingle_zome_types/src/capability/claim.rs b/crates/aingle_zome_types/src/capability/claim.rs index 59b1acf..1445318 100644 --- a/crates/aingle_zome_types/src/capability/claim.rs +++ b/crates/aingle_zome_types/src/capability/claim.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::CapSecret; use ai_hash::*; use aingle_middleware_bytes::prelude::*; diff --git a/crates/aingle_zome_types/src/capability/grant.rs b/crates/aingle_zome_types/src/capability/grant.rs index 51c7e1c..02d3178 100644 --- a/crates/aingle_zome_types/src/capability/grant.rs +++ b/crates/aingle_zome_types/src/capability/grant.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::CapSecret; use crate::zome::FunctionName; use crate::zome::ZomeName; diff --git a/crates/aingle_zome_types/src/capability/secret.rs b/crates/aingle_zome_types/src/capability/secret.rs index 19d6eb6..af262a3 100644 --- a/crates/aingle_zome_types/src/capability/secret.rs +++ b/crates/aingle_zome_types/src/capability/secret.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_middleware_bytes::prelude::*; /// The number of bits we want for a comfy secret. diff --git a/crates/aingle_zome_types/src/cell.rs b/crates/aingle_zome_types/src/cell.rs index 7a9dd8a..b002996 100644 --- a/crates/aingle_zome_types/src/cell.rs +++ b/crates/aingle_zome_types/src/cell.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! A "Cell" represents a SAF/AgentId pair - a space where one saf/agent //! can track its source chain and service network requests / responses. diff --git a/crates/aingle_zome_types/src/crdt.rs b/crates/aingle_zome_types/src/crdt.rs index 200d86e..67de52a 100644 --- a/crates/aingle_zome_types/src/crdt.rs +++ b/crates/aingle_zome_types/src/crdt.rs @@ -1,2 +1,5 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #[derive(Default, Clone, Copy, Debug, PartialEq, serde::Serialize, serde::Deserialize)] pub struct CrdtType; diff --git a/crates/aingle_zome_types/src/element.rs b/crates/aingle_zome_types/src/element.rs index 9fc7482..cbd3be8 100644 --- a/crates/aingle_zome_types/src/element.rs +++ b/crates/aingle_zome_types/src/element.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Defines a Element, the basic unit of AIngle data. use crate::entry_def::EntryVisibility; diff --git a/crates/aingle_zome_types/src/entry.rs b/crates/aingle_zome_types/src/entry.rs index 8edae65..a6c0ff2 100644 --- a/crates/aingle_zome_types/src/entry.rs +++ b/crates/aingle_zome_types/src/entry.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! An Entry is a unit of data in a AIngle Source Chain. //! //! This module contains all the necessary definitions for Entry, which broadly speaking diff --git a/crates/aingle_zome_types/src/entry/app_entry_bytes.rs b/crates/aingle_zome_types/src/entry/app_entry_bytes.rs index ebae511..3185b3d 100644 --- a/crates/aingle_zome_types/src/entry/app_entry_bytes.rs +++ b/crates/aingle_zome_types/src/entry/app_entry_bytes.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::EntryError; use super::ENTRY_SIZE_LIMIT; use aingle_middleware_bytes::prelude::*; diff --git a/crates/aingle_zome_types/src/entry/error.rs b/crates/aingle_zome_types/src/entry/error.rs index f71d308..6475acd 100644 --- a/crates/aingle_zome_types/src/entry/error.rs +++ b/crates/aingle_zome_types/src/entry/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; /// Errors involving app entry creation diff --git a/crates/aingle_zome_types/src/entry_def.rs b/crates/aingle_zome_types/src/entry_def.rs index f25cec0..dbff1ce 100644 --- a/crates/aingle_zome_types/src/entry_def.rs +++ b/crates/aingle_zome_types/src/entry_def.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::crdt::CrdtType; use crate::validate::RequiredValidationType; use crate::zome_io::ExternIO; diff --git a/crates/aingle_zome_types/src/fixt.rs b/crates/aingle_zome_types/src/fixt.rs index 2649a15..3b9c223 100644 --- a/crates/aingle_zome_types/src/fixt.rs +++ b/crates/aingle_zome_types/src/fixt.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Fixturators for zome types use crate::capability::*; diff --git a/crates/aingle_zome_types/src/genesis.rs b/crates/aingle_zome_types/src/genesis.rs index 3de9a91..74e1d66 100644 --- a/crates/aingle_zome_types/src/genesis.rs +++ b/crates/aingle_zome_types/src/genesis.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Types related to the genesis process whereby a user commits their initial //! elements and validates them to the best of their ability. Full validation //! may not be possible if network access is required, so they perform a diff --git a/crates/aingle_zome_types/src/graph.rs b/crates/aingle_zome_types/src/graph.rs index b4ab1ff..af263e4 100644 --- a/crates/aingle_zome_types/src/graph.rs +++ b/crates/aingle_zome_types/src/graph.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Types for semantic graph operations across the WASM boundary. //! //! These types allow zome code to interact with the AIngle Cortex diff --git a/crates/aingle_zome_types/src/header.rs b/crates/aingle_zome_types/src/header.rs index 890fb07..8de3774 100644 --- a/crates/aingle_zome_types/src/header.rs +++ b/crates/aingle_zome_types/src/header.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::entry_def::EntryVisibility; use crate::link::LinkTag; use crate::timestamp::Timestamp; diff --git a/crates/aingle_zome_types/src/header/builder.rs b/crates/aingle_zome_types/src/header/builder.rs index 988c96c..5259751 100644 --- a/crates/aingle_zome_types/src/header/builder.rs +++ b/crates/aingle_zome_types/src/header/builder.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::EntryType; use super::Timestamp; use crate::header; diff --git a/crates/aingle_zome_types/src/header/conversions.rs b/crates/aingle_zome_types/src/header/conversions.rs index e9253be..bacdf38 100644 --- a/crates/aingle_zome_types/src/header/conversions.rs +++ b/crates/aingle_zome_types/src/header/conversions.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; impl From for ZomeId { diff --git a/crates/aingle_zome_types/src/info.rs b/crates/aingle_zome_types/src/info.rs index 93aef60..0bfaf0f 100644 --- a/crates/aingle_zome_types/src/info.rs +++ b/crates/aingle_zome_types/src/info.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::header::ZomeId; use crate::zome::ZomeName; use ai_hash::AgentPubKey; diff --git a/crates/aingle_zome_types/src/init.rs b/crates/aingle_zome_types/src/init.rs index fd7e3a8..dfb3489 100644 --- a/crates/aingle_zome_types/src/init.rs +++ b/crates/aingle_zome_types/src/init.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::zome_io::ExternIO; use crate::CallbackResult; use ai_hash::EntryHash; diff --git a/crates/aingle_zome_types/src/judged.rs b/crates/aingle_zome_types/src/judged.rs index 0751bed..f844fee 100644 --- a/crates/aingle_zome_types/src/judged.rs +++ b/crates/aingle_zome_types/src/judged.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Wrapper type to indicate some data which has a ValidationStatus associated //! with it. //! diff --git a/crates/aingle_zome_types/src/lib.rs b/crates/aingle_zome_types/src/lib.rs index 3e5abcd..f7928c1 100644 --- a/crates/aingle_zome_types/src/lib.rs +++ b/crates/aingle_zome_types/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! AIngle Zome Types: only the types needed by AIngle application //! developers to use in their Zome code, and nothing more. //! diff --git a/crates/aingle_zome_types/src/link.rs b/crates/aingle_zome_types/src/link.rs index 6a00606..51a0746 100644 --- a/crates/aingle_zome_types/src/link.rs +++ b/crates/aingle_zome_types/src/link.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::element::SignedHeaderHashed; use ai_hash::HeaderHash; use aingle_middleware_bytes::prelude::*; diff --git a/crates/aingle_zome_types/src/metadata.rs b/crates/aingle_zome_types/src/metadata.rs index 399d8c5..8f78f94 100644 --- a/crates/aingle_zome_types/src/metadata.rs +++ b/crates/aingle_zome_types/src/metadata.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Metadata types for use in wasm use crate::element::Element; use crate::element::SignedHeaderHashed; diff --git a/crates/aingle_zome_types/src/migrate_agent.rs b/crates/aingle_zome_types/src/migrate_agent.rs index 4f79045..7e4c231 100644 --- a/crates/aingle_zome_types/src/migrate_agent.rs +++ b/crates/aingle_zome_types/src/migrate_agent.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::zome_io::ExternIO; use crate::CallbackResult; use aingle_middleware_bytes::prelude::*; diff --git a/crates/aingle_zome_types/src/post_commit.rs b/crates/aingle_zome_types/src/post_commit.rs index 95e268f..0898a30 100644 --- a/crates/aingle_zome_types/src/post_commit.rs +++ b/crates/aingle_zome_types/src/post_commit.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::header::HeaderHashes; use crate::zome_io::ExternIO; use crate::CallbackResult; diff --git a/crates/aingle_zome_types/src/prelude.rs b/crates/aingle_zome_types/src/prelude.rs index 76bfaef..4fd190c 100644 --- a/crates/aingle_zome_types/src/prelude.rs +++ b/crates/aingle_zome_types/src/prelude.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Common types pub use crate::agent_activity::*; diff --git a/crates/aingle_zome_types/src/query.rs b/crates/aingle_zome_types/src/query.rs index 9c30768..47dda34 100644 --- a/crates/aingle_zome_types/src/query.rs +++ b/crates/aingle_zome_types/src/query.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Types for source chain queries use crate::header::EntryType; diff --git a/crates/aingle_zome_types/src/request.rs b/crates/aingle_zome_types/src/request.rs index 854e321..93a92d4 100644 --- a/crates/aingle_zome_types/src/request.rs +++ b/crates/aingle_zome_types/src/request.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Types for requesting metadata use aingle_middleware_bytes::prelude::*; diff --git a/crates/aingle_zome_types/src/saf_def.rs b/crates/aingle_zome_types/src/saf_def.rs index d360249..44f7359 100644 --- a/crates/aingle_zome_types/src/saf_def.rs +++ b/crates/aingle_zome_types/src/saf_def.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Defines SafDef struct use super::zome; diff --git a/crates/aingle_zome_types/src/signal.rs b/crates/aingle_zome_types/src/signal.rs index 8584fa5..dabe96b 100644 --- a/crates/aingle_zome_types/src/signal.rs +++ b/crates/aingle_zome_types/src/signal.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! App-defined signals use ai_hash::AgentPubKey; diff --git a/crates/aingle_zome_types/src/signature.rs b/crates/aingle_zome_types/src/signature.rs index d1bce88..c5024e1 100644 --- a/crates/aingle_zome_types/src/signature.rs +++ b/crates/aingle_zome_types/src/signature.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Signature for authenticity of data use crate::Bytes; use ai_hash::AgentPubKey; diff --git a/crates/aingle_zome_types/src/test_utils.rs b/crates/aingle_zome_types/src/test_utils.rs index a16af90..b608267 100644 --- a/crates/aingle_zome_types/src/test_utils.rs +++ b/crates/aingle_zome_types/src/test_utils.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Common helpers for writing tests against zome types //! //! We don't use fixturators for these, because this crate defines no fixturators diff --git a/crates/aingle_zome_types/src/timestamp.rs b/crates/aingle_zome_types/src/timestamp.rs index 4726075..c50b673 100644 --- a/crates/aingle_zome_types/src/timestamp.rs +++ b/crates/aingle_zome_types/src/timestamp.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! # Timestamp #[allow(missing_docs)] diff --git a/crates/aingle_zome_types/src/timestamp/error.rs b/crates/aingle_zome_types/src/timestamp/error.rs index facdd02..99604d0 100644 --- a/crates/aingle_zome_types/src/timestamp/error.rs +++ b/crates/aingle_zome_types/src/timestamp/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use chrono::ParseError; #[derive(thiserror::Error, Debug, Clone, PartialEq)] diff --git a/crates/aingle_zome_types/src/trace.rs b/crates/aingle_zome_types/src/trace.rs index 87111a6..73e3da1 100644 --- a/crates/aingle_zome_types/src/trace.rs +++ b/crates/aingle_zome_types/src/trace.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Types related to the `debug` host function use aingle_middleware_bytes::prelude::*; diff --git a/crates/aingle_zome_types/src/validate.rs b/crates/aingle_zome_types/src/validate.rs index 6c09c59..50b7886 100644 --- a/crates/aingle_zome_types/src/validate.rs +++ b/crates/aingle_zome_types/src/validate.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::element::Element; use crate::zome_io::ExternIO; use crate::CallbackResult; diff --git a/crates/aingle_zome_types/src/validate_link.rs b/crates/aingle_zome_types/src/validate_link.rs index 83080a3..1301d49 100644 --- a/crates/aingle_zome_types/src/validate_link.rs +++ b/crates/aingle_zome_types/src/validate_link.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::entry::Entry; use crate::header::CreateLink; use crate::header::DeleteLink; diff --git a/crates/aingle_zome_types/src/version.rs b/crates/aingle_zome_types/src/version.rs index 77aea05..3280d83 100644 --- a/crates/aingle_zome_types/src/version.rs +++ b/crates/aingle_zome_types/src/version.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; /// The version of the API so that wasm host/guest can stay aligned. diff --git a/crates/aingle_zome_types/src/warrant.rs b/crates/aingle_zome_types/src/warrant.rs index 613ad73..64517dc 100644 --- a/crates/aingle_zome_types/src/warrant.rs +++ b/crates/aingle_zome_types/src/warrant.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Types for warrants pub use aingle_middleware_bytes::prelude::*; diff --git a/crates/aingle_zome_types/src/x_salsa20_poly1305.rs b/crates/aingle_zome_types/src/x_salsa20_poly1305.rs index 9411236..08a86f9 100644 --- a/crates/aingle_zome_types/src/x_salsa20_poly1305.rs +++ b/crates/aingle_zome_types/src/x_salsa20_poly1305.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; pub mod data; pub mod encrypted_data; diff --git a/crates/aingle_zome_types/src/x_salsa20_poly1305/data.rs b/crates/aingle_zome_types/src/x_salsa20_poly1305/data.rs index ac6e7c9..cc6051b 100644 --- a/crates/aingle_zome_types/src/x_salsa20_poly1305/data.rs +++ b/crates/aingle_zome_types/src/x_salsa20_poly1305/data.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + /// Data that can be encrypted with secretbox. #[derive(PartialEq, serde::Serialize, serde::Deserialize, Debug, Clone)] pub struct XSalsa20Poly1305Data(#[serde(with = "serde_bytes")] Vec); diff --git a/crates/aingle_zome_types/src/x_salsa20_poly1305/encrypted_data.rs b/crates/aingle_zome_types/src/x_salsa20_poly1305/encrypted_data.rs index cf9ad60..a7fdbf6 100644 --- a/crates/aingle_zome_types/src/x_salsa20_poly1305/encrypted_data.rs +++ b/crates/aingle_zome_types/src/x_salsa20_poly1305/encrypted_data.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::x_salsa20_poly1305::nonce::XSalsa20Poly1305Nonce; #[derive(PartialEq, serde::Serialize, serde::Deserialize, Debug, Clone)] diff --git a/crates/aingle_zome_types/src/x_salsa20_poly1305/key_ref.rs b/crates/aingle_zome_types/src/x_salsa20_poly1305/key_ref.rs index 32be34c..fc91f45 100644 --- a/crates/aingle_zome_types/src/x_salsa20_poly1305/key_ref.rs +++ b/crates/aingle_zome_types/src/x_salsa20_poly1305/key_ref.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_middleware_bytes::prelude::*; /// Key refs are the same length as the keys themselves. diff --git a/crates/aingle_zome_types/src/x_salsa20_poly1305/nonce.rs b/crates/aingle_zome_types/src/x_salsa20_poly1305/nonce.rs index 4bb980b..028288d 100644 --- a/crates/aingle_zome_types/src/x_salsa20_poly1305/nonce.rs +++ b/crates/aingle_zome_types/src/x_salsa20_poly1305/nonce.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_middleware_bytes::prelude::*; pub const NONCE_BYTES: usize = 24; diff --git a/crates/aingle_zome_types/src/x_salsa20_poly1305/x25519.rs b/crates/aingle_zome_types/src/x_salsa20_poly1305/x25519.rs index 01887f5..404fb67 100644 --- a/crates/aingle_zome_types/src/x_salsa20_poly1305/x25519.rs +++ b/crates/aingle_zome_types/src/x_salsa20_poly1305/x25519.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_middleware_bytes::prelude::*; pub const X25519_PUB_KEY_BYTES: usize = 32; diff --git a/crates/aingle_zome_types/src/zome.rs b/crates/aingle_zome_types/src/zome.rs index 8f85ca7..ea7d3e1 100644 --- a/crates/aingle_zome_types/src/zome.rs +++ b/crates/aingle_zome_types/src/zome.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! A `Zome` is a module of app-defined code which can be run by AIngle. //! A group of Zomes are composed to form a `SafDef`. //! diff --git a/crates/aingle_zome_types/src/zome/error.rs b/crates/aingle_zome_types/src/zome/error.rs index fc02ba9..bc5b664 100644 --- a/crates/aingle_zome_types/src/zome/error.rs +++ b/crates/aingle_zome_types/src/zome/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::ZomeName; /// Anything that can go wrong while calling a HostFnApi method diff --git a/crates/aingle_zome_types/src/zome/inline_zome.rs b/crates/aingle_zome_types/src/zome/inline_zome.rs index ebf0f69..03e3a68 100644 --- a/crates/aingle_zome_types/src/zome/inline_zome.rs +++ b/crates/aingle_zome_types/src/zome/inline_zome.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! A variant of Zome which is defined entirely by native, inline Rust code //! //! This type of Zome is only meant to be used for testing. It's designed to diff --git a/crates/aingle_zome_types/src/zome/inline_zome/error.rs b/crates/aingle_zome_types/src/zome/inline_zome/error.rs index 6382b8f..901a4be 100644 --- a/crates/aingle_zome_types/src/zome/inline_zome/error.rs +++ b/crates/aingle_zome_types/src/zome/inline_zome/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(missing_docs)] use crate::prelude::*; diff --git a/crates/aingle_zome_types/src/zome_info.rs b/crates/aingle_zome_types/src/zome_info.rs index 7f735d1..1ffee50 100644 --- a/crates/aingle_zome_types/src/zome_info.rs +++ b/crates/aingle_zome_types/src/zome_info.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::header::ZomeId; use crate::zome::ZomeName; use ai_hash::SafHash; diff --git a/crates/aingle_zome_types/src/zome_io.rs b/crates/aingle_zome_types/src/zome_io.rs index 55fd1f4..a77ac53 100644 --- a/crates/aingle_zome_types/src/zome_io.rs +++ b/crates/aingle_zome_types/src/zome_io.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::cell::CellId; use crate::prelude as zt; use crate::zome::FunctionName; diff --git a/crates/titans_memory/Cargo.toml b/crates/ineru/Cargo.toml similarity index 84% rename from crates/titans_memory/Cargo.toml rename to crates/ineru/Cargo.toml index 3011802..6c89e43 100644 --- a/crates/titans_memory/Cargo.toml +++ b/crates/ineru/Cargo.toml @@ -1,11 +1,11 @@ [package] -name = "titans_memory" -version = "0.3.8" -description = "Titans Memory: Neural-inspired memory system for AIngle AI agents" -license = "Apache-2.0" +name = "ineru" +version = "0.4.0" +description = "Ineru: Neural-inspired memory system for AIngle AI agents" +license = "Apache-2.0 OR LicenseRef-Commercial" repository = "https://github.com/ApiliumCode/aingle" homepage = "https://apilium.com" -documentation = "https://docs.rs/titans_memory" +documentation = "https://docs.rs/ineru" authors = ["Apilium Technologies "] keywords = ["aingle", "ai", "memory", "neural", "agents"] categories = ["science", "data-structures"] diff --git a/crates/titans_memory/README.md b/crates/ineru/README.md similarity index 98% rename from crates/titans_memory/README.md rename to crates/ineru/README.md index 98d6581..6796627 100644 --- a/crates/titans_memory/README.md +++ b/crates/ineru/README.md @@ -25,6 +25,6 @@ --- -# Titans Memory +# Ineru This crate provides advanced memory management functionalities for the AIngle framework, focusing on optimizing data storage and retrieval for intelligent agents and semantic graphs. diff --git a/crates/titans_memory/benches/memory_bench.rs b/crates/ineru/benches/memory_bench.rs similarity index 91% rename from crates/titans_memory/benches/memory_bench.rs rename to crates/ineru/benches/memory_bench.rs index be99965..78a282c 100644 --- a/crates/titans_memory/benches/memory_bench.rs +++ b/crates/ineru/benches/memory_bench.rs @@ -1,10 +1,13 @@ -//! Benchmarks for Titans Memory +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Benchmarks for Ineru memory //! -//! Run with: cargo bench -p titans_memory +//! Run with: cargo bench -p ineru use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion}; -use titans_memory::{ - ConsolidationConfig, LtmConfig, MemoryConfig, MemoryEntry, MemoryQuery, StmConfig, TitansMemory, +use ineru::{ + ConsolidationConfig, LtmConfig, MemoryConfig, MemoryEntry, MemoryQuery, StmConfig, IneruMemory, }; /// Benchmark STM store operations @@ -13,7 +16,7 @@ fn bench_stm_store(c: &mut Criterion) { for size in [10, 100, 1000].iter() { group.bench_with_input(BenchmarkId::new("entries", size), size, |b, &size| { - let mut memory = TitansMemory::iot_mode(); + let mut memory = IneruMemory::iot_mode(); let entries: Vec<_> = (0..size) .map(|i| MemoryEntry::new("sensor", serde_json::json!({"value": i}))) .collect(); @@ -34,7 +37,7 @@ fn bench_stm_recall(c: &mut Criterion) { let mut group = c.benchmark_group("STM Recall"); // Prepare memory with data - let mut memory = TitansMemory::agent_mode(); + let mut memory = IneruMemory::agent_mode(); for i in 0..500 { let entry = MemoryEntry::new("sensor", serde_json::json!({"value": i})) .with_tags(&["temperature", "iot"]); @@ -64,7 +67,7 @@ fn bench_consolidation(c: &mut Criterion) { group.bench_function("consolidate_100", |b| { b.iter_batched( || { - let mut memory = TitansMemory::new(MemoryConfig { + let mut memory = IneruMemory::new(MemoryConfig { stm: StmConfig { max_entries: 200, ..Default::default() @@ -104,7 +107,7 @@ fn bench_decay(c: &mut Criterion) { group.bench_with_input(BenchmarkId::new("entries", size), size, |b, &size| { b.iter_batched( || { - let mut memory = TitansMemory::new(MemoryConfig { + let mut memory = IneruMemory::new(MemoryConfig { stm: StmConfig { max_entries: size + 100, decay_interval: std::time::Duration::from_secs(0), @@ -135,7 +138,7 @@ fn bench_memory_size(c: &mut Criterion) { group.bench_function("iot_mode_1000_entries", |b| { b.iter_batched( || { - let mut memory = TitansMemory::iot_mode(); + let mut memory = IneruMemory::iot_mode(); for i in 0..1000 { let entry = MemoryEntry::new( "sensor", @@ -163,7 +166,7 @@ fn bench_iot_mode(c: &mut Criterion) { let mut group = c.benchmark_group("IoT Mode"); group.bench_function("sensor_reading_cycle", |b| { - let mut memory = TitansMemory::iot_mode(); + let mut memory = IneruMemory::iot_mode(); let mut counter = 0u64; b.iter(|| { diff --git a/crates/titans_memory/src/config.rs b/crates/ineru/src/config.rs similarity index 97% rename from crates/titans_memory/src/config.rs rename to crates/ineru/src/config.rs index e05f3b9..2e6ecb7 100644 --- a/crates/titans_memory/src/config.rs +++ b/crates/ineru/src/config.rs @@ -1,9 +1,12 @@ -//! Configuration for the Titans Memory system. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Configuration for the Ineru memory system. use serde::{Deserialize, Serialize}; use std::time::Duration; -/// Main configuration for the `TitansMemory` system. +/// Main configuration for the `IneruMemory` system. /// /// This struct aggregates the configurations for all subsystems: /// Short-Term Memory, Long-Term Memory, and the consolidation process. diff --git a/crates/titans_memory/src/consolidation.rs b/crates/ineru/src/consolidation.rs similarity index 99% rename from crates/titans_memory/src/consolidation.rs rename to crates/ineru/src/consolidation.rs index 7ef620e..4e057ae 100644 --- a/crates/titans_memory/src/consolidation.rs +++ b/crates/ineru/src/consolidation.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Memory Consolidation: STM → LTM Transfer //! //! Implements the consolidation process that transfers important memories diff --git a/crates/titans_memory/src/error.rs b/crates/ineru/src/error.rs similarity index 93% rename from crates/titans_memory/src/error.rs rename to crates/ineru/src/error.rs index 6a9ef5d..1b5946f 100644 --- a/crates/titans_memory/src/error.rs +++ b/crates/ineru/src/error.rs @@ -1,9 +1,12 @@ -//! Error types for the Titans Memory system. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Error types for the Ineru memory system. /// A specialized `Result` type for memory operations. pub type Result = std::result::Result; -/// The primary error enum for all operations within the `titans_memory` crate. +/// The primary error enum for all operations within the `ineru` crate. #[derive(Debug)] pub enum Error { /// Indicates that a memory store (e.g., STM or LTM) has reached its capacity limit. diff --git a/crates/titans_memory/src/lib.rs b/crates/ineru/src/lib.rs similarity index 91% rename from crates/titans_memory/src/lib.rs rename to crates/ineru/src/lib.rs index 2e1927b..9c94c43 100644 --- a/crates/titans_memory/src/lib.rs +++ b/crates/ineru/src/lib.rs @@ -1,15 +1,18 @@ -//! # Titans Memory +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! # Ineru //! //! Neural-inspired memory system for AIngle AI agents. //! //! ## Architecture //! -//! Titans Memory implements a dual-memory architecture inspired by +//! Ineru implements a dual-memory architecture inspired by //! cognitive neuroscience and modern AI memory systems: //! //! ```text //! ┌─────────────────────────────────────────────────────────────┐ -//! │ Titans Memory System │ +//! │ Ineru Memory System │ //! ├─────────────────────────────────────────────────────────────┤ //! │ │ //! │ ┌──────────────────┐ ┌──────────────────────────────┐ │ @@ -36,10 +39,10 @@ //! ## Usage //! //! ```rust,ignore -//! use titans_memory::{TitansMemory, MemoryConfig, MemoryEntry}; +//! use ineru::{IneruMemory, MemoryConfig, MemoryEntry}; //! //! // Create memory system -//! let mut memory = TitansMemory::new(MemoryConfig::default()); +//! let mut memory = IneruMemory::new(MemoryConfig::default()); //! //! // Store in short-term memory //! let entry = MemoryEntry::new("sensor_data", json!({"temp": 23.5})); @@ -77,11 +80,11 @@ pub use types::{ MemoryQuery, MemoryResult, Relation, SemanticTag, }; -/// The main interface for the Titans Memory system. +/// The main interface for the Ineru memory system. /// /// This struct integrates a `ShortTermMemory` (STM) and a `LongTermMemory` (LTM) /// to provide a comprehensive, neural-inspired memory solution for AI agents. -pub struct TitansMemory { +pub struct IneruMemory { /// The fast, volatile, and bounded Short-Term Memory. pub stm: ShortTermMemory, /// The persistent, graph-based Long-Term Memory. @@ -92,8 +95,8 @@ pub struct TitansMemory { config: MemoryConfig, } -impl TitansMemory { - /// Creates a new `TitansMemory` system with the given configuration. +impl IneruMemory { + /// Creates a new `IneruMemory` system with the given configuration. /// /// # Arguments /// @@ -108,14 +111,14 @@ impl TitansMemory { } } - /// Creates a new `TitansMemory` system with defaults optimized for IoT devices. + /// Creates a new `IneruMemory` system with defaults optimized for IoT devices. /// /// This configuration prioritizes a low memory footprint. pub fn iot_mode() -> Self { Self::new(MemoryConfig::iot_mode()) } - /// Creates a new `TitansMemory` system with defaults optimized for general AI agents. + /// Creates a new `IneruMemory` system with defaults optimized for general AI agents. /// /// This configuration provides a balanced trade-off between performance and memory usage. pub fn agent_mode() -> Self { @@ -319,7 +322,7 @@ impl TitansMemory { } } -/// Provides statistics about the state of the `TitansMemory` system. +/// Provides statistics about the state of the `IneruMemory` system. #[derive(Debug, Clone)] pub struct MemoryStats { /// The number of entries currently in Short-Term Memory (STM). @@ -334,7 +337,7 @@ pub struct MemoryStats { pub total_memory_bytes: usize, } -impl Default for TitansMemory { +impl Default for IneruMemory { fn default() -> Self { Self::new(MemoryConfig::default()) } @@ -346,13 +349,13 @@ mod tests { #[test] fn test_memory_creation() { - let memory = TitansMemory::default(); + let memory = IneruMemory::default(); assert_eq!(memory.stats().stm_count, 0); } #[test] fn test_remember_recall() { - let mut memory = TitansMemory::default(); + let mut memory = IneruMemory::default(); let entry = MemoryEntry::new("test", serde_json::json!({"value": 42})); let id = memory.remember(entry).unwrap(); @@ -363,21 +366,21 @@ mod tests { #[test] fn test_iot_mode() { - let memory = TitansMemory::iot_mode(); + let memory = IneruMemory::iot_mode(); // IoT mode has smaller capacity assert!(memory.config.stm.max_entries <= 100); } #[test] fn test_agent_mode() { - let memory = TitansMemory::agent_mode(); + let memory = IneruMemory::agent_mode(); // Agent mode has larger capacity assert!(memory.config.stm.max_entries >= 100); } #[test] fn test_remember_important() { - let mut memory = TitansMemory::default(); + let mut memory = IneruMemory::default(); let entry = MemoryEntry::new("important", serde_json::json!({"critical": true})); let id = memory.remember_important(entry, 0.95).unwrap(); @@ -388,7 +391,7 @@ mod tests { #[test] fn test_recall_empty() { - let memory = TitansMemory::default(); + let memory = IneruMemory::default(); let query = MemoryQuery::text("anything"); let results = memory.recall(&query).unwrap(); assert!(results.is_empty()); @@ -396,7 +399,7 @@ mod tests { #[test] fn test_recall_with_limit() { - let mut memory = TitansMemory::default(); + let mut memory = IneruMemory::default(); // Add multiple entries for i in 0..10 { @@ -412,7 +415,7 @@ mod tests { #[test] fn test_recall_text() { - let mut memory = TitansMemory::default(); + let mut memory = IneruMemory::default(); let entry = MemoryEntry::new("sensor_data", serde_json::json!({"temp": 25.0})); memory.remember(entry).unwrap(); @@ -424,7 +427,7 @@ mod tests { #[test] fn test_recall_tagged() { - let mut memory = TitansMemory::default(); + let mut memory = IneruMemory::default(); let mut entry = MemoryEntry::new("tagged_entry", serde_json::json!({"data": 123})); entry.tags.push(SemanticTag::new("test_tag")); @@ -436,7 +439,7 @@ mod tests { #[test] fn test_recall_recent() { - let mut memory = TitansMemory::default(); + let mut memory = IneruMemory::default(); for i in 0..5 { let entry = MemoryEntry::new(&format!("recent_{}", i), serde_json::json!({"n": i})); @@ -449,7 +452,7 @@ mod tests { #[test] fn test_consolidate() { - let mut memory = TitansMemory::default(); + let mut memory = IneruMemory::default(); // Add some important entries for i in 0..3 { @@ -464,7 +467,7 @@ mod tests { #[test] fn test_consolidate_memory() { - let mut memory = TitansMemory::default(); + let mut memory = IneruMemory::default(); let entry = MemoryEntry::new("to_consolidate", serde_json::json!({"data": 1})); let id = memory.remember(entry).unwrap(); @@ -478,7 +481,7 @@ mod tests { #[test] fn test_consolidate_nonexistent() { - let mut memory = TitansMemory::default(); + let mut memory = IneruMemory::default(); let fake_id = MemoryId::from_bytes([0u8; 32]); // Should not panic @@ -487,7 +490,7 @@ mod tests { #[test] fn test_forget() { - let mut memory = TitansMemory::default(); + let mut memory = IneruMemory::default(); let entry = MemoryEntry::new("to_forget", serde_json::json!({"temp": 1})); let id = memory.remember(entry).unwrap(); @@ -504,7 +507,7 @@ mod tests { #[test] fn test_decay() { - let mut memory = TitansMemory::default(); + let mut memory = IneruMemory::default(); let entry = MemoryEntry::new("decaying", serde_json::json!({"val": 1})); memory.remember_important(entry, 1.0).unwrap(); @@ -518,7 +521,7 @@ mod tests { #[test] fn test_prune_stm() { - let mut memory = TitansMemory::iot_mode(); // Smaller capacity + let mut memory = IneruMemory::iot_mode(); // Smaller capacity // Add many entries to exceed capacity for i in 0..200 { @@ -533,7 +536,7 @@ mod tests { #[test] fn test_stats() { - let mut memory = TitansMemory::default(); + let mut memory = IneruMemory::default(); for i in 0..5 { let entry = MemoryEntry::new(&format!("stat_{}", i), serde_json::json!({"n": i})); @@ -577,7 +580,7 @@ mod tests { #[test] fn test_clear() { - let mut memory = TitansMemory::default(); + let mut memory = IneruMemory::default(); for i in 0..5 { let entry = MemoryEntry::new(&format!("clear_{}", i), serde_json::json!({"n": i})); @@ -593,7 +596,7 @@ mod tests { #[test] fn test_get_from_ltm() { - let mut memory = TitansMemory::default(); + let mut memory = IneruMemory::default(); let entry = MemoryEntry::new("ltm_entry", serde_json::json!({"data": 42})); let id = memory.remember(entry).unwrap(); @@ -610,7 +613,7 @@ mod tests { #[test] fn test_get_nonexistent() { - let memory = TitansMemory::default(); + let memory = IneruMemory::default(); let fake_id = MemoryId::from_bytes([99u8; 32]); let result = memory.get(&fake_id).unwrap(); @@ -619,7 +622,7 @@ mod tests { #[test] fn test_multiple_operations() { - let mut memory = TitansMemory::default(); + let mut memory = IneruMemory::default(); // Add entries let ids: Vec = (0..10) diff --git a/crates/titans_memory/src/ltm.rs b/crates/ineru/src/ltm.rs similarity index 99% rename from crates/titans_memory/src/ltm.rs rename to crates/ineru/src/ltm.rs index 4b57432..0f5eeb9 100644 --- a/crates/titans_memory/src/ltm.rs +++ b/crates/ineru/src/ltm.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Long-Term Memory (LTM) with a Knowledge Graph. //! //! LTM stores persistent knowledge as a graph of entities and the relationships diff --git a/crates/titans_memory/src/stm.rs b/crates/ineru/src/stm.rs similarity index 99% rename from crates/titans_memory/src/stm.rs rename to crates/ineru/src/stm.rs index e9b1d2e..5e6e67e 100644 --- a/crates/titans_memory/src/stm.rs +++ b/crates/ineru/src/stm.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Short-Term Memory (STM) with attention-based weighting. //! //! STM provides fast, volatile access to recent memories. It uses an attention-based diff --git a/crates/titans_memory/src/types.rs b/crates/ineru/src/types.rs similarity index 99% rename from crates/titans_memory/src/types.rs rename to crates/ineru/src/types.rs index 3a80ca3..db16058 100644 --- a/crates/titans_memory/src/types.rs +++ b/crates/ineru/src/types.rs @@ -1,4 +1,7 @@ -//! Core data types for the Titans Memory system. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Core data types for the Ineru memory system. use serde::{Deserialize, Serialize}; use std::collections::HashMap; diff --git a/crates/hope_agents/COMPLETION_SUMMARY.md b/crates/kaneru/COMPLETION_SUMMARY.md similarity index 87% rename from crates/hope_agents/COMPLETION_SUMMARY.md rename to crates/kaneru/COMPLETION_SUMMARY.md index 3faba21..97a0aa8 100644 --- a/crates/hope_agents/COMPLETION_SUMMARY.md +++ b/crates/kaneru/COMPLETION_SUMMARY.md @@ -1,11 +1,11 @@ -# HOPE Agents - 100% Completion Summary +# Kaneru - 100% Completion Summary **Date**: 2025-12-17 **Status**: ✅ **100% COMPLETE** ## Overview -HOPE Agents has been completed to 100% with all requested features fully implemented, tested, and documented. The framework provides a comprehensive reinforcement learning system for autonomous AI agents with multi-agent coordination, state persistence, and advanced learning capabilities. +Kaneru has been completed to 100% with all requested features fully implemented, tested, and documented. The framework provides a comprehensive reinforcement learning system for autonomous AI agents with multi-agent coordination, state persistence, and advanced learning capabilities. ## Completion Status (100%) @@ -39,7 +39,7 @@ HOPE Agents has been completed to 100% with all requested features fully impleme - Configurable sensitivity - Real-time anomaly scoring -5. **Orchestrator (HopeAgent)** - Main agent coordination +5. **Orchestrator (KaneruAgent)** - Main agent coordination - Integration of all components - Multiple operation modes - Episode management @@ -106,12 +106,12 @@ Features: - Configurable intervals **Implementations**: -- `HopeAgent` persistence (full state serialization) +- `KaneruAgent` persistence (full state serialization) - `LearningEngine` persistence (Q-values, episodes, config) -- `SimpleAgent` persistence (through HopeAgent) +- `SimpleAgent` persistence (through KaneruAgent) **Tests**: 8 comprehensive unit tests, all passing -- Save/load roundtrip for HopeAgent +- Save/load roundtrip for KaneruAgent - Different format options - Byte serialization - Learning engine persistence @@ -141,7 +141,7 @@ Features: Test Coverage: 1. Simple agent workflow -2. HOPE agent learning cycle +2. Kaneru agent learning cycle 3. Multi-agent coordination 4. Consensus mechanism 5. Agent persistence (save/load) @@ -169,7 +169,7 @@ Test Coverage: - **Coordination module**: 10 tests ✨ NEW - Goal module: 10 tests - Hierarchical module: 19 tests - - HOPE agent module: 10 tests + - Kaneru agent module: 10 tests - Learning module: 22 tests - Observation module: 3 tests - **Persistence module**: 8 tests ✨ NEW @@ -260,8 +260,8 @@ All new types properly exported and documented in the public API. ```rust let mut coordinator = AgentCoordinator::new(); -let id1 = coordinator.register_agent(HopeAgent::with_default_config()); -let id2 = coordinator.register_agent(HopeAgent::with_default_config()); +let id1 = coordinator.register_agent(KaneruAgent::with_default_config()); +let id2 = coordinator.register_agent(KaneruAgent::with_default_config()); // Broadcast to all agents coordinator.broadcast(Message::new("update", "System status")); @@ -277,7 +277,7 @@ let result = coordinator.get_consensus(&proposal); ### State Persistence ```rust -let agent = HopeAgent::with_default_config(); +let agent = KaneruAgent::with_default_config(); // Train agent... @@ -285,7 +285,7 @@ let agent = HopeAgent::with_default_config(); agent.save_to_file(Path::new("agent.json")).unwrap(); // Load from file -let loaded = HopeAgent::load_from_file(Path::new("agent.json")).unwrap(); +let loaded = KaneruAgent::load_from_file(Path::new("agent.json")).unwrap(); // Checkpoint manager let mut manager = CheckpointManager::new(Path::new("checkpoints"), 5) @@ -367,17 +367,17 @@ All requested deliverables have been completed: ## Files Created/Modified ### New Files (5) -1. `/crates/hope_agents/src/coordination.rs` - Multi-agent coordination -2. `/crates/hope_agents/src/persistence.rs` - State persistence -3. `/crates/hope_agents/tests/integration_test.rs` - Integration tests -4. `/crates/hope_agents/examples/complete_demo.rs` - Complete demo -5. `/crates/hope_agents/README.md` - Documentation +1. `/crates/kaneru/src/coordination.rs` - Multi-agent coordination +2. `/crates/kaneru/src/persistence.rs` - State persistence +3. `/crates/kaneru/tests/integration_test.rs` - Integration tests +4. `/crates/kaneru/examples/complete_demo.rs` - Complete demo +5. `/crates/kaneru/README.md` - Documentation ### Modified Files (1) -1. `/crates/hope_agents/src/lib.rs` - Updated exports and documentation +1. `/crates/kaneru/src/lib.rs` - Updated exports and documentation ### Generated Files (1) -1. `/crates/hope_agents/COMPLETION_SUMMARY.md` - This summary +1. `/crates/kaneru/COMPLETION_SUMMARY.md` - This summary ## Quality Metrics @@ -404,7 +404,7 @@ The framework is complete but could be extended with: ## Conclusion -HOPE Agents is now **100% complete** with all core features implemented, tested, and documented. The framework provides: +Kaneru is now **100% complete** with all core features implemented, tested, and documented. The framework provides: - ✅ Complete reinforcement learning system - ✅ Multi-agent coordination with consensus diff --git a/crates/hope_agents/Cargo.toml b/crates/kaneru/Cargo.toml similarity index 72% rename from crates/hope_agents/Cargo.toml rename to crates/kaneru/Cargo.toml index 440c3ee..e4187c4 100644 --- a/crates/hope_agents/Cargo.toml +++ b/crates/kaneru/Cargo.toml @@ -1,11 +1,11 @@ [package] -name = "hope_agents" -version = "0.3.8" -description = "HOPE Agents: Hierarchical Optimizing Policy Engine for AIngle AI agents" -license = "Apache-2.0" +name = "kaneru" +version = "0.4.0" +description = "Kaneru: Unified Multi-Agent Execution System for AIngle AI agents" +license = "Apache-2.0 OR LicenseRef-Commercial" repository = "https://github.com/ApiliumCode/aingle" homepage = "https://apilium.com" -documentation = "https://docs.rs/hope_agents" +documentation = "https://docs.rs/kaneru" authors = ["Apilium Technologies "] keywords = ["aingle", "ai", "agents", "rl", "iot"] categories = ["science", "network-programming"] @@ -15,8 +15,8 @@ rust-version = "1.83" [features] default = ["std"] std = [] -# Enable Titans Memory integration -memory = ["titans_memory"] +# Enable Ineru memory integration +memory = ["ineru"] # Enable async operations async = [] # Enable learning capabilities @@ -31,7 +31,7 @@ serde_json = "1.0" log = "0.4" # AI Memory integration -titans_memory = { version = "0.3", path = "../titans_memory", optional = true } +ineru = { version = "0.4", path = "../ineru", optional = true } # Random for exploration (updated from 0.7) rand = { version = "0.9", default-features = false, features = ["std", "thread_rng"] } diff --git a/crates/hope_agents/IMPLEMENTATION_SUMMARY.md b/crates/kaneru/IMPLEMENTATION_SUMMARY.md similarity index 86% rename from crates/hope_agents/IMPLEMENTATION_SUMMARY.md rename to crates/kaneru/IMPLEMENTATION_SUMMARY.md index 461c2d7..d5abaa6 100644 --- a/crates/hope_agents/IMPLEMENTATION_SUMMARY.md +++ b/crates/kaneru/IMPLEMENTATION_SUMMARY.md @@ -1,15 +1,15 @@ -# HOPE Orchestrator Implementation Summary +# Kaneru Orchestrator Implementation Summary ## Overview -Successfully implemented the HOPE (Hierarchical, Optimistic, Predictive, Emergent) Agent Orchestrator that integrates all HOPE Agents modules into a unified intelligent agent system. +Successfully implemented the Kaneru (Unified Multi-Agent Execution System) Agent Orchestrator that integrates all Kaneru modules into a unified intelligent agent system. ## Files Created/Modified ### Core Implementation -1. **`src/hope_agent.rs`** (NEW - 878 lines) - - Main `HopeAgent` struct integrating all modules +1. **`src/kaneru_agent.rs`** (NEW - 878 lines) + - Main `KaneruAgent` struct integrating all modules - Operation modes: Exploration, Exploitation, GoalDriven, Adaptive - Complete step-learn cycle - Goal management and integration @@ -19,8 +19,8 @@ Successfully implemented the HOPE (Hierarchical, Optimistic, Predictive, Emergen - 10 unit tests covering all major features 2. **`src/lib.rs`** (MODIFIED) - - Added `pub mod hope_agent` - - Exported all public types from hope_agent module + - Added `pub mod kaneru_agent` + - Exported all public types from kaneru_agent module 3. **`src/learning/engine.rs`** (MODIFIED) - Added `config_mut()` method for mutable configuration access @@ -30,7 +30,7 @@ Successfully implemented the HOPE (Hierarchical, Optimistic, Predictive, Emergen ### Documentation -5. **`HOPE_ORCHESTRATOR.md`** (NEW - 370 lines) +5. **`KANERU_ORCHESTRATOR.md`** (NEW - 370 lines) - Comprehensive documentation - Architecture diagrams - API reference @@ -47,7 +47,7 @@ Successfully implemented the HOPE (Hierarchical, Optimistic, Predictive, Emergen ### Examples -7. **`examples/hope_orchestrator.rs`** (NEW - 265 lines) +7. **`examples/kaneru_orchestrator.rs`** (NEW - 265 lines) - Basic agent usage example - Goal-driven behavior example - Multi-episode learning example @@ -57,10 +57,10 @@ Successfully implemented the HOPE (Hierarchical, Optimistic, Predictive, Emergen ## Key Features Implemented -### 1. Core Orchestrator (`HopeAgent`) +### 1. Core Orchestrator (`KaneruAgent`) ```rust -pub struct HopeAgent { +pub struct KaneruAgent { // Core components learning: LearningEngine, // Q-Learning, SARSA, TD goal_solver: HierarchicalGoalSolver, // Goal management @@ -75,7 +75,7 @@ pub struct HopeAgent { action_history: VecDeque, // Configuration & stats - config: HopeConfig, + config: KaneruConfig, stats: AgentStats, } ``` @@ -87,7 +87,7 @@ pub struct HopeAgent { - **GoalDriven**: Balanced exploration (ε=0.1) focused on goals - **Adaptive**: Dynamic adjustment based on performance -### 3. HOPE Cycle +### 3. Kaneru Cycle ``` Observation → State Update → Anomaly Check → Goal Update → @@ -145,7 +145,7 @@ pub struct AgentStats { ### 9. Configuration ```rust -pub struct HopeConfig { +pub struct KaneruConfig { learning: LearningConfig, predictive: PredictiveConfig, mode: OperationMode, @@ -163,7 +163,7 @@ pub struct HopeConfig { All 100 tests pass successfully: -- **hope_agent module**: 10 tests +- **kaneru_agent module**: 10 tests - Agent creation and configuration - Step-learn cycle - Goal integration @@ -187,7 +187,7 @@ All 100 tests pass successfully: cargo test # Specific module -cargo test hope_agent +cargo test kaneru_agent # With output cargo test -- --nocapture @@ -200,7 +200,7 @@ cargo test --release ### AIngle Minimal Integration -The HOPE Agent can integrate with aingle_minimal for: +The Kaneru Agent can integrate with aingle_minimal for: 1. **Observations from Records** ```rust @@ -237,7 +237,7 @@ The HOPE Agent can integrate with aingle_minimal for: ### IoT/Embedded ```rust -HopeConfig { +KaneruConfig { max_observations: 100, max_actions: 100, learning: LearningConfig { @@ -251,7 +251,7 @@ HopeConfig { ### Server/Cloud ```rust -HopeConfig { +KaneruConfig { max_observations: 10000, max_actions: 10000, learning: LearningConfig { @@ -267,7 +267,7 @@ HopeConfig { ### Basic Loop ```rust -let mut agent = HopeAgent::with_default_config(); +let mut agent = KaneruAgent::with_default_config(); loop { let obs = get_observation(); @@ -301,7 +301,7 @@ Potential improvements documented for future work: 1. **Deep Q-Networks (DQN)**: Neural network approximation for continuous spaces 2. **Actor-Critic**: Policy gradient methods -3. **Multi-Agent**: Coordination between multiple HOPE agents +3. **Multi-Agent**: Coordination between multiple Kaneru agents 4. **Hierarchical RL**: More sophisticated goal decomposition 5. **Transfer Learning**: Knowledge transfer between tasks 6. **Meta-Learning**: Faster adaptation to new environments @@ -320,16 +320,16 @@ Potential improvements documented for future work: ## Files Summary ``` -hope_agents/ +kaneru/ ├── src/ -│ ├── hope_agent.rs (878 lines) - Main orchestrator +│ ├── kaneru_agent.rs (878 lines) - Main orchestrator │ ├── learning/ (Existing - Q-Learning, SARSA, TD) │ ├── hierarchical/ (Existing - Goal management) │ ├── predictive/ (Existing - Forecasting, anomalies) │ └── lib.rs (Modified - exports) ├── examples/ -│ └── hope_orchestrator.rs (265 lines) - Complete examples -├── HOPE_ORCHESTRATOR.md (370 lines) - Full documentation +│ └── kaneru_orchestrator.rs (265 lines) - Complete examples +├── KANERU_ORCHESTRATOR.md (370 lines) - Full documentation ├── QUICK_START.md (290 lines) - Quick reference └── IMPLEMENTATION_SUMMARY.md (This file) ``` @@ -351,13 +351,13 @@ cargo test ### Examples ```bash -cargo run --example hope_orchestrator +cargo run --example kaneru_orchestrator # All examples run successfully ``` ## Conclusion -The HOPE Orchestrator successfully integrates all HOPE Agents modules into a unified, production-ready intelligent agent system. The implementation includes: +The Kaneru Orchestrator successfully integrates all Kaneru modules into a unified, production-ready intelligent agent system. The implementation includes: - ✅ Complete integration of learning, hierarchical, and predictive modules - ✅ 4 operation modes (Exploration, Exploitation, GoalDriven, Adaptive) diff --git a/crates/hope_agents/HOPE_ORCHESTRATOR.md b/crates/kaneru/KANERU_ORCHESTRATOR.md similarity index 92% rename from crates/hope_agents/HOPE_ORCHESTRATOR.md rename to crates/kaneru/KANERU_ORCHESTRATOR.md index 3aa4a4b..6db45e2 100644 --- a/crates/hope_agents/HOPE_ORCHESTRATOR.md +++ b/crates/kaneru/KANERU_ORCHESTRATOR.md @@ -1,10 +1,10 @@ -# HOPE Agent Orchestrator +# Kaneru Agent Orchestrator -The HOPE Agent Orchestrator integrates all HOPE (Hierarchical, Optimistic, Predictive, Emergent) components into a unified intelligent agent system. +The Kaneru Agent Orchestrator integrates all Kaneru (Unified Multi-Agent Execution System) components into a unified intelligent agent system. ## Overview -The HOPE Agent is a complete autonomous agent that combines: +The Kaneru Agent is a complete autonomous agent that combines: - **Learning Engine** (Q-Learning, SARSA, TD) - Learn from experience - **Hierarchical Goal Solver** - Manage and decompose complex goals @@ -15,7 +15,7 @@ The HOPE Agent is a complete autonomous agent that combines: ``` ┌─────────────────────────────────────────────────────────┐ -│ HOPE Agent │ +│ Kaneru Agent │ ├─────────────────────────────────────────────────────────┤ │ │ │ Observation → State → Decision → Action → Learning │ @@ -34,24 +34,24 @@ The HOPE Agent is a complete autonomous agent that combines: ## Core Components -### 1. HOPE Agent (`HopeAgent`) +### 1. Kaneru Agent (`KaneruAgent`) Main orchestrator that integrates all modules. ```rust -use hope_agents::{HopeAgent, HopeConfig}; +use kaneru::{KaneruAgent, KaneruConfig}; // Create with default config -let mut agent = HopeAgent::with_default_config(); +let mut agent = KaneruAgent::with_default_config(); // Or with custom config -let config = HopeConfig { +let config = KaneruConfig { mode: OperationMode::GoalDriven, learning: LearningConfig { /* ... */ }, predictive: PredictiveConfig { /* ... */ }, // ... }; -let mut agent = HopeAgent::new(config); +let mut agent = KaneruAgent::new(config); ``` ### 2. Operation Modes @@ -76,7 +76,7 @@ let mode = agent.mode(); Set and track goals: ```rust -use hope_agents::{Goal, Priority}; +use kaneru::{Goal, Priority}; // Create goals let goal = Goal::maintain("temperature", 18.0..22.0) @@ -96,7 +96,7 @@ if let Some(goal) = agent.current_goal() { Main interaction loop: ```rust -use hope_agents::{Observation, ActionResult, Outcome}; +use kaneru::{Observation, ActionResult, Outcome}; // 1. Agent observes environment let obs = Observation::sensor("temperature", 22.5); @@ -148,7 +148,7 @@ Complex goals can be decomposed: ```rust // Set auto-decomposition in config -let config = HopeConfig { +let config = KaneruConfig { auto_decompose_goals: true, // ... }; @@ -170,7 +170,7 @@ let state = agent.save_state(); let json = serde_json::to_string(&state)?; // Create new agent and restore -let mut new_agent = HopeAgent::with_default_config(); +let mut new_agent = KaneruAgent::with_default_config(); new_agent.load_state(state); ``` @@ -192,10 +192,10 @@ println!("Current epsilon: {:.3}", stats.current_epsilon); ## Configuration Options -### HopeConfig +### KaneruConfig ```rust -pub struct HopeConfig { +pub struct KaneruConfig { /// Learning configuration pub learning: LearningConfig, @@ -291,7 +291,7 @@ let history = predictive.history(); ### Network Operations ```rust -use hope_agents::{ActionType, Observation}; +use kaneru::{ActionType, Observation}; // Observe network events let obs = Observation::network("peer_connected", "peer_123"); @@ -342,7 +342,7 @@ fn record_to_observation(record: &Record) -> Observation { ## Examples -See `examples/hope_orchestrator.rs` for complete examples: +See `examples/kaneru_orchestrator.rs` for complete examples: - Basic agent usage - Goal-driven behavior @@ -354,7 +354,7 @@ See `examples/hope_orchestrator.rs` for complete examples: Run examples: ```bash -cargo run --example hope_orchestrator +cargo run --example kaneru_orchestrator ``` ## Testing @@ -362,7 +362,7 @@ cargo run --example hope_orchestrator Run tests: ```bash -cargo test hope_agent +cargo test kaneru_agent ``` All major features are tested: diff --git a/crates/hope_agents/QUICK_START.md b/crates/kaneru/QUICK_START.md similarity index 91% rename from crates/hope_agents/QUICK_START.md rename to crates/kaneru/QUICK_START.md index ac72246..d2c40e6 100644 --- a/crates/hope_agents/QUICK_START.md +++ b/crates/kaneru/QUICK_START.md @@ -1,6 +1,6 @@ -# HOPE Agent Quick Start Guide +# Kaneru Quick Start Guide -Get started with HOPE Agents in 5 minutes. +Get started with Kaneru in 5 minutes. ## Installation @@ -8,17 +8,17 @@ Add to your `Cargo.toml`: ```toml [dependencies] -hope_agents = { path = "../hope_agents" } +kaneru = { path = "../kaneru" } ``` ## Basic Usage ```rust -use hope_agents::{HopeAgent, Observation, ActionResult, Outcome}; +use kaneru::{KaneruAgent, Observation, ActionResult, Outcome}; fn main() { // 1. Create agent - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // 2. Main loop loop { @@ -57,7 +57,7 @@ fn main() { ## With Goals ```rust -use hope_agents::{Goal, Priority}; +use kaneru::{Goal, Priority}; // Set a goal let goal = Goal::maintain("temperature", 18.0..22.0) @@ -75,7 +75,7 @@ if let Some(current) = agent.current_goal() { ## Operation Modes ```rust -use hope_agents::OperationMode; +use kaneru::OperationMode; // Exploration: Learn new behaviors agent.set_mode(OperationMode::Exploration); @@ -166,9 +166,9 @@ Goal::perform("calibrate_sensors") ## Configuration ```rust -use hope_agents::{HopeConfig, LearningConfig, LearningAlgorithm}; +use kaneru::{KaneruConfig, LearningConfig, LearningAlgorithm}; -let config = HopeConfig { +let config = KaneruConfig { mode: OperationMode::GoalDriven, learning: LearningConfig { learning_rate: 0.15, @@ -181,7 +181,7 @@ let config = HopeConfig { ..Default::default() }; -let agent = HopeAgent::new(config); +let agent = KaneruAgent::new(config); ``` ## Reward Design @@ -306,8 +306,8 @@ if agent.get_statistics().total_steps > 10000 { ## Next Steps -- Read [HOPE_ORCHESTRATOR.md](HOPE_ORCHESTRATOR.md) for detailed documentation -- Check [examples/hope_orchestrator.rs](examples/hope_orchestrator.rs) for complete examples +- Read [KANERU_ORCHESTRATOR.md](KANERU_ORCHESTRATOR.md) for detailed documentation +- Check [examples/kaneru_orchestrator.rs](examples/kaneru_orchestrator.rs) for complete examples - Explore individual modules: learning, hierarchical, predictive - Integrate with AIngle network operations @@ -329,4 +329,4 @@ if agent.get_statistics().total_steps > 10000 { - [Hierarchical Goals Documentation](src/hierarchical/mod.rs) - [Predictive Model Documentation](src/predictive/mod.rs) - Run tests: `cargo test` -- Run examples: `cargo run --example hope_orchestrator` +- Run examples: `cargo run --example kaneru_orchestrator` diff --git a/crates/hope_agents/README.md b/crates/kaneru/README.md similarity index 83% rename from crates/hope_agents/README.md rename to crates/kaneru/README.md index d8960c5..265f699 100644 --- a/crates/hope_agents/README.md +++ b/crates/kaneru/README.md @@ -25,6 +25,6 @@ --- -# HOPE Agents +# Kaneru -This crate implements the Hierarchical Optimistic Policy Engine (HOPE) for autonomous decision-making within the AIngle framework, providing reinforcement learning capabilities for agents. \ No newline at end of file +This crate implements the Unified Multi-Agent Execution System (Kaneru) for autonomous decision-making within the AIngle framework, providing reinforcement learning capabilities for agents. \ No newline at end of file diff --git a/crates/hope_agents/README_HOPE_AGENT.md b/crates/kaneru/README_KANERU_AGENT.md similarity index 73% rename from crates/hope_agents/README_HOPE_AGENT.md rename to crates/kaneru/README_KANERU_AGENT.md index 91e1368..55ab761 100644 --- a/crates/hope_agents/README_HOPE_AGENT.md +++ b/crates/kaneru/README_KANERU_AGENT.md @@ -1,12 +1,12 @@ -# HOPE Agent Orchestrator - Integration Complete +# Kaneru Agent Orchestrator - Integration Complete ## Summary -The HOPE Agent Orchestrator has been successfully implemented and integrated into the hope_agents crate. This provides a complete, production-ready intelligent agent system for the AIngle ecosystem. +The Kaneru Agent Orchestrator has been successfully implemented and integrated into the kaneru crate. This provides a complete, production-ready intelligent agent system for the AIngle ecosystem. ## What Was Built -### 1. Core Module: `hope_agent.rs` (876 lines) +### 1. Core Module: `kaneru_agent.rs` (876 lines) Complete orchestrator that integrates: - **Learning Engine**: Q-Learning, SARSA, TD, Experience Replay @@ -24,13 +24,13 @@ Key features: ### 2. Documentation (1,112 lines total) -- **HOPE_ORCHESTRATOR.md** (405 lines): Complete technical documentation +- **KANERU_ORCHESTRATOR.md** (405 lines): Complete technical documentation - **QUICK_START.md** (332 lines): Quick start guide with recipes - **IMPLEMENTATION_SUMMARY.md** (375 lines): Implementation details ### 3. Examples (303 lines) -- **examples/hope_orchestrator.rs**: 6 working examples demonstrating all features +- **examples/kaneru_orchestrator.rs**: 6 working examples demonstrating all features ## Test Results @@ -44,28 +44,28 @@ Key features: ## File Structure ``` -hope_agents/ +kaneru/ ├── src/ -│ ├── hope_agent.rs ← NEW: Main orchestrator +│ ├── kaneru_agent.rs ← NEW: Main orchestrator │ ├── learning/ ← Existing: Integrated │ ├── hierarchical/ ← Existing: Integrated │ ├── predictive/ ← Existing: Integrated │ └── lib.rs ← Modified: Exports added ├── examples/ -│ └── hope_orchestrator.rs ← NEW: Complete examples -├── HOPE_ORCHESTRATOR.md ← NEW: Full documentation +│ └── kaneru_orchestrator.rs ← NEW: Complete examples +├── KANERU_ORCHESTRATOR.md ← NEW: Full documentation ├── QUICK_START.md ← NEW: Quick reference ├── IMPLEMENTATION_SUMMARY.md ← NEW: Implementation details -└── README_HOPE_AGENT.md ← This file +└── README_KANERU_AGENT.md ← This file ``` ## Quick Usage ```rust -use hope_agents::{HopeAgent, Observation, ActionResult, Outcome}; +use kaneru::{KaneruAgent, Observation, ActionResult, Outcome}; // Create agent -let mut agent = HopeAgent::with_default_config(); +let mut agent = KaneruAgent::with_default_config(); // Main loop loop { @@ -90,7 +90,7 @@ loop { ```rust // Agent -HopeAgent::with_default_config() -> HopeAgent +KaneruAgent::with_default_config() -> KaneruAgent agent.step(observation) -> Action agent.learn(outcome) agent.set_goal(goal) -> GoalId @@ -100,7 +100,7 @@ agent.save_state() -> SerializedState agent.load_state(state) // Configuration -HopeConfig { +KaneruConfig { mode: OperationMode, learning: LearningConfig, predictive: PredictiveConfig, @@ -121,7 +121,7 @@ Outcome::new(action, result, reward, new_obs, done) ## Integration with AIngle -The HOPE Agent is ready to integrate with aingle_minimal: +The Kaneru Agent is ready to integrate with aingle_minimal: ```rust // Observations from network events @@ -139,9 +139,9 @@ match action.action_type { ## Documentation Quick Links 1. **Getting Started**: See [QUICK_START.md](QUICK_START.md) -2. **Full Documentation**: See [HOPE_ORCHESTRATOR.md](HOPE_ORCHESTRATOR.md) +2. **Full Documentation**: See [KANERU_ORCHESTRATOR.md](KANERU_ORCHESTRATOR.md) 3. **Implementation Details**: See [IMPLEMENTATION_SUMMARY.md](IMPLEMENTATION_SUMMARY.md) -4. **Examples**: Run `cargo run --example hope_orchestrator` +4. **Examples**: Run `cargo run --example kaneru_orchestrator` ## Testing @@ -149,14 +149,14 @@ match action.action_type { # Run all tests cargo test -# Run HOPE agent tests only -cargo test hope_agent +# Run Kaneru agent tests only +cargo test kaneru_agent # Run in release mode cargo test --release # Run examples -cargo run --example hope_orchestrator +cargo run --example kaneru_orchestrator ``` ## Key Features Checklist @@ -184,16 +184,16 @@ cargo run --example hope_orchestrator ## Next Steps 1. **Read the documentation**: Start with [QUICK_START.md](QUICK_START.md) -2. **Run the examples**: `cargo run --example hope_orchestrator` +2. **Run the examples**: `cargo run --example kaneru_orchestrator` 3. **Integrate with AIngle**: Use the agent for network operations 4. **Customize**: Adjust configuration for your use case 5. **Monitor**: Track statistics to optimize performance ## Support -- **Code**: `/Users/carlostovar/aingle/aingle/crates/hope_agents/src/hope_agent.rs` -- **Tests**: Run `cargo test hope_agent` -- **Examples**: `/Users/carlostovar/aingle/aingle/crates/hope_agents/examples/hope_orchestrator.rs` +- **Code**: `/Users/carlostovar/aingle/aingle/crates/kaneru/src/kaneru_agent.rs` +- **Tests**: Run `cargo test kaneru_agent` +- **Examples**: `/Users/carlostovar/aingle/aingle/crates/kaneru/examples/kaneru_orchestrator.rs` - **Docs**: All markdown files in this directory ## Version @@ -205,7 +205,7 @@ cargo run --example hope_orchestrator ## Credits -Implements HOPE (Hierarchical, Optimistic, Predictive, Emergent) architecture for autonomous agents in the AIngle distributed system. +Implements Kaneru (Unified Multi-Agent Execution System) architecture for autonomous agents in the AIngle distributed system. --- diff --git a/crates/hope_agents/benches/agent_bench.rs b/crates/kaneru/benches/agent_bench.rs similarity index 96% rename from crates/hope_agents/benches/agent_bench.rs rename to crates/kaneru/benches/agent_bench.rs index 0bc7f9c..197a34f 100644 --- a/crates/hope_agents/benches/agent_bench.rs +++ b/crates/kaneru/benches/agent_bench.rs @@ -1,9 +1,12 @@ -//! Benchmarks for HOPE Agents +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Benchmarks for Kaneru //! -//! Run with: cargo bench -p hope_agents +//! Run with: cargo bench -p kaneru use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion}; -use hope_agents::{Action, Agent, AgentConfig, Condition, Goal, Observation, Rule, SimpleAgent}; +use kaneru::{Action, Agent, AgentConfig, Condition, Goal, Observation, Rule, SimpleAgent}; /// Benchmark agent creation fn bench_agent_creation(c: &mut Criterion) { diff --git a/crates/hope_agents/examples/complete_demo.rs b/crates/kaneru/examples/complete_demo.rs similarity index 92% rename from crates/hope_agents/examples/complete_demo.rs rename to crates/kaneru/examples/complete_demo.rs index a4bca8d..ab2aa6e 100644 --- a/crates/hope_agents/examples/complete_demo.rs +++ b/crates/kaneru/examples/complete_demo.rs @@ -1,6 +1,9 @@ -//! Complete HOPE Agents Demonstration +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Complete Kaneru Demonstration //! -//! This example demonstrates all major features of the HOPE Agents framework: +//! This example demonstrates all major features of the Kaneru framework: //! - Learning with different algorithms //! - Hierarchical goal management //! - Multi-agent coordination @@ -9,11 +12,11 @@ //! //! Run with: cargo run --example complete_demo -use hope_agents::*; +use kaneru::*; use std::collections::HashMap; fn main() { - println!("=== HOPE Agents Complete Demo ===\n"); + println!("=== Kaneru Complete Demo ===\n"); demo_simple_agent(); demo_learning_agent(); @@ -77,7 +80,7 @@ fn demo_simple_agent() { fn demo_learning_agent() { println!("--- 2. Learning Agent (Q-Learning) ---"); - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Set a goal let goal = Goal::maintain("temperature", 20.0..25.0).with_priority(Priority::High); @@ -130,7 +133,7 @@ fn demo_learning_agent() { fn demo_hierarchical_goals() { println!("--- 3. Hierarchical Goal Management ---"); - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Create multiple goals with different priorities let goal1 = Goal::maintain("temperature", 20.0..25.0).with_priority(Priority::High); @@ -170,9 +173,9 @@ fn demo_multi_agent_coordination() { // Create and register agents println!(" Registering 3 agents..."); - let agent1 = HopeAgent::with_default_config(); - let agent2 = HopeAgent::with_default_config(); - let agent3 = HopeAgent::with_default_config(); + let agent1 = KaneruAgent::with_default_config(); + let agent2 = KaneruAgent::with_default_config(); + let agent3 = KaneruAgent::with_default_config(); let id1 = coordinator.register_agent(agent1); let id2 = coordinator.register_agent(agent2); @@ -257,7 +260,7 @@ fn demo_multi_agent_coordination() { fn demo_persistence() { println!("--- 5. State Persistence ---"); - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Train the agent briefly println!(" Training agent..."); @@ -279,7 +282,7 @@ fn demo_persistence() { // Load from bytes println!(" Deserializing agent state..."); - let loaded_agent = HopeAgent::from_bytes(&bytes).unwrap(); + let loaded_agent = KaneruAgent::from_bytes(&bytes).unwrap(); println!( " Loaded agent with {} steps", loaded_agent.get_statistics().total_steps @@ -293,7 +296,7 @@ fn demo_persistence() { fn demo_anomaly_detection() { println!("--- 6. Anomaly Detection ---"); - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Establish normal pattern println!(" Establishing normal pattern (20-25°C)..."); diff --git a/crates/hope_agents/examples/hierarchical_goals.rs b/crates/kaneru/examples/hierarchical_goals.rs similarity index 97% rename from crates/hope_agents/examples/hierarchical_goals.rs rename to crates/kaneru/examples/hierarchical_goals.rs index 77a7fdc..d0bff02 100644 --- a/crates/hope_agents/examples/hierarchical_goals.rs +++ b/crates/kaneru/examples/hierarchical_goals.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Example demonstrating the Hierarchical Goal Solver //! //! This example shows how to: @@ -6,7 +9,7 @@ //! - Detect and resolve conflicts //! - Use custom decomposition strategies -use hope_agents::{ +use kaneru::{ default_decomposition_rules, DecompositionStrategy, Goal, HierarchicalGoalSolver, SequentialStrategy, }; diff --git a/crates/hope_agents/examples/hope_orchestrator.rs b/crates/kaneru/examples/kaneru_orchestrator.rs similarity index 92% rename from crates/hope_agents/examples/hope_orchestrator.rs rename to crates/kaneru/examples/kaneru_orchestrator.rs index 4007803..3acaacb 100644 --- a/crates/hope_agents/examples/hope_orchestrator.rs +++ b/crates/kaneru/examples/kaneru_orchestrator.rs @@ -1,21 +1,24 @@ -//! Example of using the HOPE Agent Orchestrator +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Example of using the Kaneru Agent Orchestrator //! //! This example demonstrates how to: -//! - Create and configure a HOPE agent +//! - Create and configure a Kaneru agent //! - Set goals //! - Run the agent step/learn cycle //! - Switch operation modes //! - Track statistics //! - Serialize/deserialize agent state -use hope_agents::{ - Action, ActionResult, ActionType, Goal, GoalSelectionStrategy, HopeAgent, HopeConfig, +use kaneru::{ + Action, ActionResult, ActionType, Goal, GoalSelectionStrategy, KaneruAgent, KaneruConfig, LearningAlgorithm, LearningConfig, Observation, OperationMode, Outcome, PredictiveConfig, Priority, }; fn main() { - println!("=== HOPE Agent Orchestrator Example ===\n"); + println!("=== Kaneru Agent Orchestrator Example ===\n"); // Example 1: Basic agent creation and configuration basic_example(); @@ -44,8 +47,8 @@ fn main() { fn basic_example() { println!("--- Example 1: Basic Agent ---"); - // Create a HOPE agent with default configuration - let mut agent = HopeAgent::with_default_config(); + // Create a Kaneru agent with default configuration + let mut agent = KaneruAgent::with_default_config(); println!("Created agent with mode: {:?}", agent.mode()); @@ -86,7 +89,7 @@ fn goal_driven_example() { println!("--- Example 2: Goal-Driven Agent ---"); // Create agent with custom configuration - let config = HopeConfig { + let config = KaneruConfig { mode: OperationMode::GoalDriven, learning: LearningConfig { learning_rate: 0.15, @@ -100,7 +103,7 @@ fn goal_driven_example() { ..Default::default() }; - let mut agent = HopeAgent::new(config); + let mut agent = KaneruAgent::new(config); // Set multiple goals let goal1 = Goal::maintain("temperature", 18.0..22.0).with_priority(Priority::High); @@ -148,7 +151,7 @@ fn goal_driven_example() { fn multi_episode_example() { println!("--- Example 3: Multi-Episode Learning ---"); - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Run 5 episodes for episode in 0..5 { @@ -193,7 +196,7 @@ fn multi_episode_example() { fn mode_switching_example() { println!("--- Example 4: Operation Mode Switching ---"); - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Start with exploration agent.set_mode(OperationMode::Exploration); @@ -241,7 +244,7 @@ fn persistence_example() { println!("--- Example 5: State Persistence ---"); // Create and train an agent - let mut agent1 = HopeAgent::with_default_config(); + let mut agent1 = KaneruAgent::with_default_config(); for i in 0..5 { let obs = Observation::sensor("data", i as f64); @@ -263,7 +266,7 @@ fn persistence_example() { println!("\nSaved agent state"); // Create new agent and load state - let mut agent2 = HopeAgent::with_default_config(); + let mut agent2 = KaneruAgent::with_default_config(); agent2.load_state(saved_state); println!("\nRestored agent:"); @@ -295,7 +298,7 @@ fn persistence_example() { fn aingle_integration_example() { println!("--- AIngle Integration Example ---"); - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Set a goal for network operation let goal = Goal::perform("maintain_network_health").with_priority(Priority::Critical); diff --git a/crates/hope_agents/src/action.rs b/crates/kaneru/src/action.rs similarity index 95% rename from crates/hope_agents/src/action.rs rename to crates/kaneru/src/action.rs index 839bc8f..72c4b18 100644 --- a/crates/hope_agents/src/action.rs +++ b/crates/kaneru/src/action.rs @@ -1,4 +1,7 @@ -//! Action types for HOPE Agents. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Action types for Kaneru. //! //! Actions represent what an agent can do in its environment. They are the //! output of the agent's decision-making process. @@ -16,7 +19,7 @@ use std::collections::HashMap; /// # Examples /// /// ``` -/// # use hope_agents::ActionType; +/// # use kaneru::ActionType; /// let msg_action = ActionType::send_message("peer_123"); /// let store_action = ActionType::store("temperature_data"); /// let alert_action = ActionType::alert("Critical error occurred"); @@ -55,7 +58,7 @@ impl ActionType { /// # Examples /// /// ``` - /// # use hope_agents::ActionType; + /// # use kaneru::ActionType; /// let action = ActionType::send_message("agent_123"); /// ``` pub fn send_message(target: &str) -> Self { @@ -71,7 +74,7 @@ impl ActionType { /// # Examples /// /// ``` - /// # use hope_agents::ActionType; + /// # use kaneru::ActionType; /// let action = ActionType::store("sensor_reading"); /// ``` pub fn store(key: &str) -> Self { @@ -87,7 +90,7 @@ impl ActionType { /// # Examples /// /// ``` - /// # use hope_agents::ActionType; + /// # use kaneru::ActionType; /// let action = ActionType::publish("temperature_updates"); /// ``` pub fn publish(topic: &str) -> Self { @@ -103,7 +106,7 @@ impl ActionType { /// # Examples /// /// ``` - /// # use hope_agents::ActionType; + /// # use kaneru::ActionType; /// let action = ActionType::alert("System overheating"); /// ``` pub fn alert(message: &str) -> Self { @@ -120,7 +123,7 @@ impl ActionType { /// # Examples /// /// ``` -/// # use hope_agents::{Action, Priority}; +/// # use kaneru::{Action, Priority}; /// // Create a simple action /// let action = Action::store("temperature", 23.5); /// @@ -162,7 +165,7 @@ impl Action { /// # Examples /// /// ``` - /// # use hope_agents::{Action, ActionType}; + /// # use kaneru::{Action, ActionType}; /// let action = Action::new(ActionType::NoOp); /// ``` pub fn new(action_type: ActionType) -> Self { @@ -184,7 +187,7 @@ impl Action { /// # Examples /// /// ``` - /// # use hope_agents::Action; + /// # use kaneru::Action; /// let action = Action::noop(); /// assert!(action.is_noop()); /// ``` @@ -199,7 +202,7 @@ impl Action { /// # Examples /// /// ``` - /// # use hope_agents::Action; + /// # use kaneru::Action; /// let action = Action::wait(); /// ``` pub fn wait() -> Self { @@ -216,7 +219,7 @@ impl Action { /// # Examples /// /// ``` - /// # use hope_agents::Action; + /// # use kaneru::Action; /// let action = Action::send_message("peer_123", "Hello, peer!"); /// ``` pub fn send_message(target: &str, content: impl Into) -> Self { @@ -233,7 +236,7 @@ impl Action { /// # Examples /// /// ``` - /// # use hope_agents::Action; + /// # use kaneru::Action; /// let action = Action::store("temperature", 23.5); /// ``` pub fn store(key: &str, value: impl Into) -> Self { @@ -249,7 +252,7 @@ impl Action { /// # Examples /// /// ``` - /// # use hope_agents::Action; + /// # use kaneru::Action; /// let action = Action::alert("Temperature threshold exceeded!"); /// ``` pub fn alert(message: &str) -> Self { @@ -269,7 +272,7 @@ impl Action { /// # Examples /// /// ``` - /// # use hope_agents::{Action, ActionType}; + /// # use kaneru::{Action, ActionType}; /// let action = Action::new(ActionType::Custom("process".into())) /// .with_param("input", "data.csv") /// .with_param("output", "results.json"); @@ -291,7 +294,7 @@ impl Action { /// # Examples /// /// ``` - /// # use hope_agents::{Action, Priority}; + /// # use kaneru::{Action, Priority}; /// let action = Action::alert("Critical failure") /// .with_priority(Priority::Critical); /// ``` @@ -305,7 +308,7 @@ impl Action { /// # Examples /// /// ``` - /// # use hope_agents::Action; + /// # use kaneru::Action; /// let noop = Action::noop(); /// assert!(noop.is_noop()); /// @@ -326,7 +329,7 @@ impl Action { /// # Examples /// /// ``` -/// # use hope_agents::ActionResult; +/// # use kaneru::ActionResult; /// // Create a successful result /// let success = ActionResult::success("action_123"); /// assert!(success.success); @@ -364,7 +367,7 @@ impl ActionResult { /// # Examples /// /// ``` - /// # use hope_agents::ActionResult; + /// # use kaneru::ActionResult; /// let result = ActionResult::success("action_123"); /// assert!(result.success); /// assert!(result.error.is_none()); @@ -390,7 +393,7 @@ impl ActionResult { /// # Examples /// /// ``` - /// # use hope_agents::ActionResult; + /// # use kaneru::ActionResult; /// let result = ActionResult::success_with_value("action_123", 42); /// assert!(result.success); /// assert!(result.value.is_some()); @@ -416,7 +419,7 @@ impl ActionResult { /// # Examples /// /// ``` - /// # use hope_agents::ActionResult; + /// # use kaneru::ActionResult; /// let result = ActionResult::failure("action_123", "Network unreachable"); /// assert!(!result.success); /// assert!(result.error.is_some()); @@ -441,7 +444,7 @@ impl ActionResult { /// # Examples /// /// ``` - /// # use hope_agents::ActionResult; + /// # use kaneru::ActionResult; /// let result = ActionResult::success("action_123") /// .with_duration(1500); /// assert_eq!(result.duration_us, 1500); @@ -461,7 +464,7 @@ impl ActionResult { /// # Examples /// /// ``` -/// # use hope_agents::{Action, ActionResult, ActionType, action::ActionExecutor}; +/// # use kaneru::{Action, ActionResult, ActionType, action::ActionExecutor}; /// struct MyExecutor; /// /// impl ActionExecutor for MyExecutor { @@ -509,7 +512,7 @@ pub trait ActionExecutor { /// # Examples /// /// ``` -/// # use hope_agents::{Action, action::{ActionExecutor, LoggingExecutor}}; +/// # use kaneru::{Action, action::{ActionExecutor, LoggingExecutor}}; /// let mut executor = LoggingExecutor; /// let action = Action::store("key", "value"); /// let result = executor.execute(&action); diff --git a/crates/hope_agents/src/agent.rs b/crates/kaneru/src/agent.rs similarity index 93% rename from crates/hope_agents/src/agent.rs rename to crates/kaneru/src/agent.rs index a56f990..c935fff 100644 --- a/crates/hope_agents/src/agent.rs +++ b/crates/kaneru/src/agent.rs @@ -1,7 +1,10 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The core `Agent` trait and a simple, concrete implementation. //! //! This module provides the fundamental building blocks for creating agents -//! within the HOPE framework. +//! within the Kaneru framework. use crate::action::{Action, ActionResult}; use crate::config::AgentConfig; @@ -20,7 +23,7 @@ use serde::{Deserialize, Serialize}; /// # Examples /// /// ``` -/// # use hope_agents::AgentId; +/// # use kaneru::AgentId; /// let id = AgentId::new("sensor_agent"); /// // ID will be something like "sensor_agent_1234567890" /// ``` @@ -40,7 +43,7 @@ impl AgentId { /// # Examples /// /// ``` - /// # use hope_agents::AgentId; + /// # use kaneru::AgentId; /// let id1 = AgentId::new("agent"); /// let id2 = AgentId::new("agent"); /// assert_ne!(id1, id2); // Different due to timestamps @@ -68,7 +71,7 @@ impl AgentId { /// # Examples /// /// ``` -/// # use hope_agents::AgentState; +/// # use kaneru::AgentState; /// let state = AgentState::default(); /// assert_eq!(state, AgentState::Initializing); /// ``` @@ -95,7 +98,7 @@ pub enum AgentState { /// The core trait defining the capabilities and lifecycle of all agents. /// -/// The `Agent` trait defines the fundamental interface that all agents in the HOPE framework +/// The `Agent` trait defines the fundamental interface that all agents in the Kaneru framework /// must implement. It follows a sense-decide-act-learn cycle inspired by reinforcement learning /// and autonomous systems design. /// @@ -110,7 +113,7 @@ pub enum AgentState { /// # Examples /// /// ``` -/// # use hope_agents::{Agent, SimpleAgent, Observation, Action}; +/// # use kaneru::{Agent, SimpleAgent, Observation, Action}; /// let mut agent = SimpleAgent::new("example"); /// /// // Observe @@ -130,14 +133,14 @@ pub enum AgentState { /// # See Also /// /// - [`SimpleAgent`] for a concrete implementation -/// - `HopeAgent` for an advanced implementation with hierarchical goals and learning +/// - `KaneruAgent` for an advanced implementation with hierarchical goals and learning pub trait Agent { /// Returns the unique identifier of the agent. /// /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent}; + /// # use kaneru::{Agent, SimpleAgent}; /// let agent = SimpleAgent::new("my_agent"); /// println!("Agent ID: {:?}", agent.id()); /// ``` @@ -148,7 +151,7 @@ pub trait Agent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent}; + /// # use kaneru::{Agent, SimpleAgent}; /// let agent = SimpleAgent::new("my_agent"); /// assert_eq!(agent.name(), "my_agent"); /// ``` @@ -159,7 +162,7 @@ pub trait Agent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent, AgentState}; + /// # use kaneru::{Agent, SimpleAgent, AgentState}; /// let agent = SimpleAgent::new("my_agent"); /// assert_eq!(agent.state(), AgentState::Idle); /// ``` @@ -178,7 +181,7 @@ pub trait Agent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent, Observation}; + /// # use kaneru::{Agent, SimpleAgent, Observation}; /// let mut agent = SimpleAgent::new("sensor_agent"); /// agent.observe(Observation::sensor("temperature", 23.5)); /// assert_eq!(agent.stats().observations_received, 1); @@ -198,7 +201,7 @@ pub trait Agent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent, Observation, Action}; + /// # use kaneru::{Agent, SimpleAgent, Observation, Action}; /// let mut agent = SimpleAgent::new("my_agent"); /// agent.observe(Observation::sensor("temperature", 25.0)); /// let action = agent.decide(); @@ -224,7 +227,7 @@ pub trait Agent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent, Action}; + /// # use kaneru::{Agent, SimpleAgent, Action}; /// let mut agent = SimpleAgent::new("my_agent"); /// let action = Action::store("key", "value"); /// let result = agent.execute(action); @@ -247,7 +250,7 @@ pub trait Agent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent, Observation, Action, ActionResult}; + /// # use kaneru::{Agent, SimpleAgent, Observation, Action, ActionResult}; /// let mut agent = SimpleAgent::new("learning_agent"); /// let obs = Observation::sensor("temperature", 25.0); /// let action = Action::store("data", "value"); @@ -269,7 +272,7 @@ pub trait Agent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent, Observation}; + /// # use kaneru::{Agent, SimpleAgent, Observation}; /// let mut agent = SimpleAgent::new("my_agent"); /// agent.observe(Observation::sensor("temperature", 25.0)); /// @@ -290,7 +293,7 @@ pub trait Agent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent}; + /// # use kaneru::{Agent, SimpleAgent}; /// let agent = SimpleAgent::new("my_agent"); /// println!("Max goals: {}", agent.config().max_goals); /// ``` @@ -316,7 +319,7 @@ pub trait Agent { /// ## Basic Usage /// /// ``` -/// # use hope_agents::{Agent, SimpleAgent, Observation, Rule, Condition, Action}; +/// # use kaneru::{Agent, SimpleAgent, Observation, Rule, Condition, Action}; /// let mut agent = SimpleAgent::new("temperature_monitor"); /// /// // Add a rule @@ -336,8 +339,8 @@ pub trait Agent { /// ## With Learning /// /// ``` -/// # use hope_agents::{Agent, SimpleAgent, Observation, Action}; -/// # use hope_agents::learning::{LearningConfig, LearningAlgorithm}; +/// # use kaneru::{Agent, SimpleAgent, Observation, Action}; +/// # use kaneru::learning::{LearningConfig, LearningAlgorithm}; /// let mut agent = SimpleAgent::new("learning_agent"); /// /// // Enable learning @@ -362,7 +365,7 @@ pub trait Agent { /// # See Also /// /// - [`Agent`] trait for the core interface -/// - `HopeAgent` for advanced hierarchical goal-based agents +/// - `KaneruAgent` for advanced hierarchical goal-based agents /// - [`AgentConfig`] for configuration options pub struct SimpleAgent { /// The unique identifier for the agent. @@ -405,7 +408,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent}; + /// # use kaneru::{Agent, SimpleAgent}; /// let agent = SimpleAgent::new("my_agent"); /// assert_eq!(agent.name(), "my_agent"); /// ``` @@ -431,7 +434,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent, AgentConfig}; + /// # use kaneru::{Agent, SimpleAgent, AgentConfig}; /// let config = AgentConfig::iot_mode(); /// let agent = SimpleAgent::with_config("iot_agent", config); /// assert!(agent.config().max_memory_bytes <= 128 * 1024); @@ -482,7 +485,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::{SimpleAgent, Policy, Rule, Condition, Action}; + /// # use kaneru::{SimpleAgent, Policy, Rule, Condition, Action}; /// let mut agent = SimpleAgent::new("my_agent"); /// let mut policy = Policy::new("safety"); /// policy.add_rule(Rule::new( @@ -508,7 +511,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::{SimpleAgent, Rule, Condition, Action}; + /// # use kaneru::{SimpleAgent, Rule, Condition, Action}; /// let mut agent = SimpleAgent::new("temperature_monitor"); /// agent.add_rule(Rule::new( /// "high_temp", @@ -535,7 +538,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::SimpleAgent; + /// # use kaneru::SimpleAgent; /// let mut agent = SimpleAgent::new("explorer"); /// agent.set_exploration_rate(0.1); // 10% exploration, 90% exploitation /// ``` @@ -560,7 +563,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::{SimpleAgent, Goal}; + /// # use kaneru::{SimpleAgent, Goal}; /// let mut agent = SimpleAgent::new("my_agent"); /// let goal = Goal::maintain("temperature", 20.0..25.0); /// if let Some(goal_id) = agent.add_goal(goal) { @@ -583,7 +586,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::{SimpleAgent, Goal}; + /// # use kaneru::{SimpleAgent, Goal}; /// let mut agent = SimpleAgent::new("my_agent"); /// agent.set_goal(Goal::maximize("efficiency")); /// ``` @@ -598,7 +601,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::{SimpleAgent, Goal}; + /// # use kaneru::{SimpleAgent, Goal}; /// let mut agent = SimpleAgent::new("my_agent"); /// let mut goal = Goal::maximize("score"); /// goal.activate(); @@ -621,7 +624,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent, Observation}; + /// # use kaneru::{Agent, SimpleAgent, Observation}; /// let mut agent = SimpleAgent::new("my_agent"); /// agent.observe(Observation::sensor("temp", 20.0)); /// agent.observe(Observation::sensor("temp", 21.0)); @@ -642,7 +645,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent, Observation}; + /// # use kaneru::{Agent, SimpleAgent, Observation}; /// let mut agent = SimpleAgent::new("my_agent"); /// agent.observe(Observation::sensor("temp", 20.0)); /// assert_eq!(agent.stats().observations_received, 1); @@ -660,7 +663,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent, AgentState}; + /// # use kaneru::{Agent, SimpleAgent, AgentState}; /// let mut agent = SimpleAgent::new("my_agent"); /// agent.pause(); /// assert_eq!(agent.state(), AgentState::Paused); @@ -676,7 +679,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent, AgentState}; + /// # use kaneru::{Agent, SimpleAgent, AgentState}; /// let mut agent = SimpleAgent::new("my_agent"); /// agent.pause(); /// agent.resume(); @@ -695,7 +698,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent}; + /// # use kaneru::{Agent, SimpleAgent}; /// let mut agent = SimpleAgent::new("my_agent"); /// agent.stop(); /// assert!(!agent.is_running()); @@ -712,7 +715,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent}; + /// # use kaneru::{Agent, SimpleAgent}; /// let mut agent = SimpleAgent::new("my_agent"); /// assert!(agent.is_running()); /// @@ -735,7 +738,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::{SimpleAgent, learning::{LearningConfig, LearningAlgorithm}}; + /// # use kaneru::{SimpleAgent, learning::{LearningConfig, LearningAlgorithm}}; /// let mut agent = SimpleAgent::new("learner"); /// let config = LearningConfig { /// learning_rate: 0.1, @@ -763,7 +766,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::SimpleAgent; + /// # use kaneru::SimpleAgent; /// let mut agent = SimpleAgent::new("learner"); /// agent.enable_learning_default(); /// assert!(agent.learning_engine().is_some()); @@ -780,7 +783,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::SimpleAgent; + /// # use kaneru::SimpleAgent; /// let mut agent = SimpleAgent::new("learner"); /// agent.enable_learning_default(); /// agent.disable_learning(); @@ -796,7 +799,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::SimpleAgent; + /// # use kaneru::SimpleAgent; /// let agent = SimpleAgent::new("learner"); /// if let Some(engine) = agent.learning_engine() { /// println!("Total updates: {}", engine.total_updates()); @@ -811,7 +814,7 @@ impl SimpleAgent { /// # Examples /// /// ``` - /// # use hope_agents::SimpleAgent; + /// # use kaneru::SimpleAgent; /// let mut agent = SimpleAgent::new("learner"); /// if let Some(engine) = agent.learning_engine_mut() { /// // Modify engine settings @@ -943,7 +946,7 @@ impl Agent for SimpleAgent { /// # Examples /// /// ``` -/// # use hope_agents::{Agent, SimpleAgent, Observation, Action}; +/// # use kaneru::{Agent, SimpleAgent, Observation, Action}; /// let mut agent = SimpleAgent::new("my_agent"); /// /// // Process some observations and actions @@ -987,7 +990,7 @@ impl AgentStats { /// # Examples /// /// ``` - /// # use hope_agents::{Agent, SimpleAgent, Action}; + /// # use kaneru::{Agent, SimpleAgent, Action}; /// let mut agent = SimpleAgent::new("my_agent"); /// /// // Execute some actions diff --git a/crates/hope_agents/src/config.rs b/crates/kaneru/src/config.rs similarity index 95% rename from crates/hope_agents/src/config.rs rename to crates/kaneru/src/config.rs index ff97d2b..63df53d 100644 --- a/crates/hope_agents/src/config.rs +++ b/crates/kaneru/src/config.rs @@ -1,9 +1,12 @@ -//! Configuration for HOPE Agents. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Configuration for Kaneru. use serde::{Deserialize, Serialize}; use std::time::Duration; -/// Defines the configuration for a HOPE agent. +/// Defines the configuration for a Kaneru agent. #[derive(Debug, Clone, Serialize, Deserialize)] pub struct AgentConfig { /// The human-readable name of the agent. diff --git a/crates/hope_agents/src/coordination.rs b/crates/kaneru/src/coordination.rs similarity index 94% rename from crates/hope_agents/src/coordination.rs rename to crates/kaneru/src/coordination.rs index 1c6b435..1056131 100644 --- a/crates/hope_agents/src/coordination.rs +++ b/crates/kaneru/src/coordination.rs @@ -1,6 +1,9 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Multi-Agent Coordination. //! -//! Enables multiple HOPE agents to coordinate their actions through: +//! Enables multiple Kaneru agents to coordinate their actions through: //! - A central `AgentCoordinator`. //! - A `MessageBus` for inter-agent communication. //! - `SharedMemory` for common knowledge. @@ -9,14 +12,14 @@ //! ## Example //! //! ```rust,ignore -//! use hope_agents::{HopeAgent, AgentCoordinator, Message}; +//! use kaneru::{KaneruAgent, AgentCoordinator, Message}; //! use std::collections::HashMap; //! //! let mut coordinator = AgentCoordinator::new(); //! //! // Register multiple agents -//! let agent1 = HopeAgent::with_default_config(); -//! let agent2 = HopeAgent::with_default_config(); +//! let agent1 = KaneruAgent::with_default_config(); +//! let agent2 = KaneruAgent::with_default_config(); //! //! let id1 = coordinator.register_agent(agent1); //! let id2 = coordinator.register_agent(agent2); @@ -31,7 +34,7 @@ //! let actions = coordinator.step_all(observations); //! ``` -use crate::{Action, AgentId, HopeAgent, Observation, Outcome}; +use crate::{Action, AgentId, KaneruAgent, Observation, Outcome}; use serde::{Deserialize, Serialize}; use std::collections::{HashMap, VecDeque}; @@ -327,13 +330,13 @@ impl Default for MessageBus { /// A handle to a registered agent within the coordinator. #[allow(dead_code)] struct AgentHandle { - agent: HopeAgent, + agent: KaneruAgent, inbox: VecDeque, outbox: VecDeque, } impl AgentHandle { - fn new(agent: HopeAgent) -> Self { + fn new(agent: KaneruAgent) -> Self { Self { agent, inbox: VecDeque::new(), @@ -404,7 +407,7 @@ impl AgentCoordinator { } /// Registers a new agent with the coordinator and returns its assigned `AgentId`. - pub fn register_agent(&mut self, agent: HopeAgent) -> AgentId { + pub fn register_agent(&mut self, agent: KaneruAgent) -> AgentId { let id = AgentId(format!("agent_{}", self.next_id)); self.next_id += 1; @@ -416,7 +419,7 @@ impl AgentCoordinator { } /// Unregisters an agent from the coordinator. - pub fn unregister_agent(&mut self, agent_id: &AgentId) -> Result { + pub fn unregister_agent(&mut self, agent_id: &AgentId) -> Result { self.agents .remove(agent_id) .map(|handle| handle.agent) @@ -582,12 +585,12 @@ impl AgentCoordinator { } /// Returns a reference to a specific agent managed by the coordinator. - pub fn get_agent(&self, agent_id: &AgentId) -> Option<&HopeAgent> { + pub fn get_agent(&self, agent_id: &AgentId) -> Option<&KaneruAgent> { self.agents.get(agent_id).map(|handle| &handle.agent) } /// Returns a mutable reference to a specific agent managed by the coordinator. - pub fn get_agent_mut(&mut self, agent_id: &AgentId) -> Option<&mut HopeAgent> { + pub fn get_agent_mut(&mut self, agent_id: &AgentId) -> Option<&mut KaneruAgent> { self.agents .get_mut(agent_id) .map(|handle| &mut handle.agent) @@ -666,7 +669,7 @@ fn uuid_v4() -> String { #[cfg(test)] mod tests { use super::*; - use crate::{HopeAgent, HopeConfig, Observation}; + use crate::{KaneruAgent, KaneruConfig, Observation}; #[test] fn test_coordinator_creation() { @@ -678,7 +681,7 @@ mod tests { fn test_agent_registration() { let mut coordinator = AgentCoordinator::new(); - let agent = HopeAgent::new(HopeConfig::default()); + let agent = KaneruAgent::new(KaneruConfig::default()); let id = coordinator.register_agent(agent); assert_eq!(coordinator.agent_count(), 1); @@ -689,7 +692,7 @@ mod tests { fn test_agent_unregistration() { let mut coordinator = AgentCoordinator::new(); - let agent = HopeAgent::new(HopeConfig::default()); + let agent = KaneruAgent::new(KaneruConfig::default()); let id = coordinator.register_agent(agent); let agent = coordinator.unregister_agent(&id); @@ -701,8 +704,8 @@ mod tests { fn test_broadcast_message() { let mut coordinator = AgentCoordinator::new(); - let agent1 = HopeAgent::new(HopeConfig::default()); - let agent2 = HopeAgent::new(HopeConfig::default()); + let agent1 = KaneruAgent::new(KaneruConfig::default()); + let agent2 = KaneruAgent::new(KaneruConfig::default()); let id1 = coordinator.register_agent(agent1); let id2 = coordinator.register_agent(agent2); @@ -722,8 +725,8 @@ mod tests { fn test_direct_message() { let mut coordinator = AgentCoordinator::new(); - let agent1 = HopeAgent::new(HopeConfig::default()); - let agent2 = HopeAgent::new(HopeConfig::default()); + let agent1 = KaneruAgent::new(KaneruConfig::default()); + let agent2 = KaneruAgent::new(KaneruConfig::default()); let id1 = coordinator.register_agent(agent1); let id2 = coordinator.register_agent(agent2); @@ -757,9 +760,9 @@ mod tests { fn test_consensus_proposal() { let mut coordinator = AgentCoordinator::new(); - let agent1 = HopeAgent::new(HopeConfig::default()); - let agent2 = HopeAgent::new(HopeConfig::default()); - let agent3 = HopeAgent::new(HopeConfig::default()); + let agent1 = KaneruAgent::new(KaneruConfig::default()); + let agent2 = KaneruAgent::new(KaneruConfig::default()); + let agent3 = KaneruAgent::new(KaneruConfig::default()); let id1 = coordinator.register_agent(agent1); let id2 = coordinator.register_agent(agent2); @@ -792,8 +795,8 @@ mod tests { fn test_step_all() { let mut coordinator = AgentCoordinator::new(); - let agent1 = HopeAgent::new(HopeConfig::default()); - let agent2 = HopeAgent::new(HopeConfig::default()); + let agent1 = KaneruAgent::new(KaneruConfig::default()); + let agent2 = KaneruAgent::new(KaneruConfig::default()); let id1 = coordinator.register_agent(agent1); let id2 = coordinator.register_agent(agent2); diff --git a/crates/hope_agents/src/error.rs b/crates/kaneru/src/error.rs similarity index 93% rename from crates/hope_agents/src/error.rs rename to crates/kaneru/src/error.rs index 2be2143..61aa9b2 100644 --- a/crates/hope_agents/src/error.rs +++ b/crates/kaneru/src/error.rs @@ -1,9 +1,12 @@ -//! Error types for the HOPE Agents framework. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Error types for the Kaneru framework. /// A specialized `Result` type for agent operations. pub type Result = std::result::Result; -/// The primary error enum for all operations within the `hope_agents` crate. +/// The primary error enum for all operations within the `kaneru` crate. #[derive(Debug)] pub enum Error { /// An error related to the agent's configuration. @@ -16,7 +19,7 @@ pub enum Error { Action(String), /// An error related to processing an observation. Observation(String), - /// An error originating from the agent's memory system (e.g., `titans_memory`). + /// An error originating from the agent's memory system (e.g., `ineru`). Memory(String), /// An operation timed out. Timeout(String), @@ -48,8 +51,8 @@ impl From for Error { } #[cfg(feature = "memory")] -impl From for Error { - fn from(e: titans_memory::Error) -> Self { +impl From for Error { + fn from(e: ineru::Error) -> Self { Error::Memory(e.to_string()) } } diff --git a/crates/hope_agents/src/goal.rs b/crates/kaneru/src/goal.rs similarity index 99% rename from crates/hope_agents/src/goal.rs rename to crates/kaneru/src/goal.rs index 2792ce2..1e56ffa 100644 --- a/crates/hope_agents/src/goal.rs +++ b/crates/kaneru/src/goal.rs @@ -1,4 +1,7 @@ -//! Goal types for HOPE Agents. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Goal types for Kaneru. //! //! Goals define what an agent is trying to achieve, providing the primary //! motivation for its actions. diff --git a/crates/hope_agents/src/hierarchical/README.md b/crates/kaneru/src/hierarchical/README.md similarity index 93% rename from crates/hope_agents/src/hierarchical/README.md rename to crates/kaneru/src/hierarchical/README.md index f93d49d..8b8b51e 100644 --- a/crates/hope_agents/src/hierarchical/README.md +++ b/crates/kaneru/src/hierarchical/README.md @@ -1,6 +1,6 @@ # Hierarchical Goal Solver -The Hierarchical Goal Solver provides sophisticated goal management capabilities for HOPE Agents, including automatic goal decomposition, dependency tracking, conflict detection, and progress propagation. +The Hierarchical Goal Solver provides sophisticated goal management capabilities for Kaneru, including automatic goal decomposition, dependency tracking, conflict detection, and progress propagation. ## Features @@ -9,7 +9,7 @@ The Hierarchical Goal Solver provides sophisticated goal management capabilities Goals can be automatically decomposed into subgoals using registered decomposition rules: ```rust -use hope_agents::{HierarchicalGoalSolver, Goal, default_decomposition_rules}; +use kaneru::{HierarchicalGoalSolver, Goal, default_decomposition_rules}; let mut solver = HierarchicalGoalSolver::new(); @@ -136,7 +136,7 @@ You can create custom decomposition strategies: Breaks goals into sequential steps: ```rust -use hope_agents::{SequentialStrategy, DecompositionStrategy}; +use kaneru::{SequentialStrategy, DecompositionStrategy}; let strategy = SequentialStrategy { name: "Database Migration".to_string(), @@ -157,7 +157,7 @@ let subgoals = strategy.decompose(&goal); Breaks goals into parallel tasks: ```rust -use hope_agents::ParallelStrategy; +use kaneru::ParallelStrategy; let strategy = ParallelStrategy { name: "Distributed Processing".to_string(), @@ -174,7 +174,7 @@ let strategy = ParallelStrategy { Create custom decomposition rules: ```rust -use hope_agents::DecompositionRule; +use kaneru::DecompositionRule; let rule = DecompositionRule { name: "custom_rule".to_string(), @@ -210,7 +210,7 @@ The solver detects four types of conflicts: Several strategies are available: ```rust -use hope_agents::ConflictResolution; +use kaneru::ConflictResolution; // Prioritize one goal over another ConflictResolution::PrioritizeFirst @@ -260,7 +260,7 @@ let roots = tree.root_goals(); See `examples/hierarchical_goals.rs` for a comprehensive example demonstrating all features. ```bash -cargo run -p hope_agents --example hierarchical_goals +cargo run -p kaneru --example hierarchical_goals ``` ## Integration with Learning Engine @@ -308,10 +308,10 @@ The module includes comprehensive tests: ```bash # Run all hierarchical tests -cargo test -p hope_agents --lib hierarchical +cargo test -p kaneru --lib hierarchical # Run specific test -cargo test -p hope_agents --lib hierarchical::tests::test_goal_decomposition +cargo test -p kaneru --lib hierarchical::tests::test_goal_decomposition ``` ## Future Enhancements diff --git a/crates/hope_agents/src/hierarchical/decomposition.rs b/crates/kaneru/src/hierarchical/decomposition.rs similarity index 99% rename from crates/hope_agents/src/hierarchical/decomposition.rs rename to crates/kaneru/src/hierarchical/decomposition.rs index eac0fd4..e7ad499 100644 --- a/crates/hope_agents/src/hierarchical/decomposition.rs +++ b/crates/kaneru/src/hierarchical/decomposition.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Defines strategies and rules for decomposing high-level goals into smaller, manageable sub-goals. use super::{DecompositionRule, GoalTypeFilter}; diff --git a/crates/hope_agents/src/hierarchical/goal_solver.rs b/crates/kaneru/src/hierarchical/goal_solver.rs similarity index 99% rename from crates/hope_agents/src/hierarchical/goal_solver.rs rename to crates/kaneru/src/hierarchical/goal_solver.rs index 9c0108a..4296f40 100644 --- a/crates/hope_agents/src/hierarchical/goal_solver.rs +++ b/crates/kaneru/src/hierarchical/goal_solver.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! The core logic for the Hierarchical Goal Solver. use crate::{Goal, GoalStatus, GoalType}; diff --git a/crates/hope_agents/src/hierarchical/mod.rs b/crates/kaneru/src/hierarchical/mod.rs similarity index 65% rename from crates/hope_agents/src/hierarchical/mod.rs rename to crates/kaneru/src/hierarchical/mod.rs index ed8134c..5cb8136 100644 --- a/crates/hope_agents/src/hierarchical/mod.rs +++ b/crates/kaneru/src/hierarchical/mod.rs @@ -1,4 +1,7 @@ -//! Hierarchical goal decomposition and management for HOPE agents. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Hierarchical goal decomposition and management for Kaneru agents. //! //! This module provides sophisticated goal management capabilities including: //! - Automatic goal decomposition using rules diff --git a/crates/hope_agents/src/hierarchical/tests.rs b/crates/kaneru/src/hierarchical/tests.rs similarity index 98% rename from crates/hope_agents/src/hierarchical/tests.rs rename to crates/kaneru/src/hierarchical/tests.rs index 819f5d3..fe596f5 100644 --- a/crates/hope_agents/src/hierarchical/tests.rs +++ b/crates/kaneru/src/hierarchical/tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; use crate::{Goal, GoalStatus}; diff --git a/crates/hope_agents/src/hope_agent.rs b/crates/kaneru/src/kaneru_agent.rs similarity index 94% rename from crates/hope_agents/src/hope_agent.rs rename to crates/kaneru/src/kaneru_agent.rs index 5e5ca76..881182a 100644 --- a/crates/hope_agents/src/hope_agent.rs +++ b/crates/kaneru/src/kaneru_agent.rs @@ -1,13 +1,16 @@ -//! The main HOPE Agent orchestrator. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! The main Kaneru Agent orchestrator. //! -//! This module integrates all HOPE (Hierarchical, Optimistic, Predictive, Emergent) +//! This module integrates all Kaneru (Unified Multi-Agent Execution System) //! components into a unified, advanced agent that can perceive, learn, plan, and act. //! //! ## Architecture //! //! ```text //! ┌─────────────────────────────────────────────────────────────┐ -//! │ HOPE Agent │ +//! │ Kaneru Agent │ //! ├─────────────────────────────────────────────────────────────┤ //! │ │ //! │ Observation → State → Decision → Action → Learning │ @@ -31,7 +34,7 @@ use crate::{ use serde::{Deserialize, Serialize}; use std::collections::VecDeque; -/// Defines the operational mode of a `HopeAgent`. +/// Defines the operational mode of a `KaneruAgent`. #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)] pub enum OperationMode { /// The agent prioritizes exploring its environment to gather new knowledge, @@ -49,9 +52,9 @@ pub enum OperationMode { Adaptive, } -/// Configuration for a `HopeAgent`. +/// Configuration for a `KaneruAgent`. #[derive(Debug, Clone, Serialize, Deserialize)] -pub struct HopeConfig { +pub struct KaneruConfig { /// Configuration for the agent's learning engine. pub learning: LearningConfig, /// Configuration for the agent's predictive model. @@ -72,7 +75,7 @@ pub struct HopeConfig { pub auto_decompose_goals: bool, } -impl Default for HopeConfig { +impl Default for KaneruConfig { fn default() -> Self { Self { learning: LearningConfig::default(), @@ -143,7 +146,7 @@ impl Default for AgentStats { #[derive(Debug, Clone, Serialize, Deserialize)] pub struct SerializedState { /// The agent's configuration. - pub config: HopeConfig, + pub config: KaneruConfig, /// The agent's performance statistics. pub stats: AgentStats, /// The agent's last known state. @@ -192,11 +195,11 @@ impl Outcome { } } -/// The main HOPE Agent, integrating learning, planning, and predictive capabilities. +/// The main Kaneru Agent, integrating learning, planning, and predictive capabilities. /// /// This is the most advanced agent implementation in the framework, designed for /// complex, dynamic environments where adaptability is key. -pub struct HopeAgent { +pub struct KaneruAgent { /// The core reinforcement learning engine (e.g., Q-learning). learning: LearningEngine, /// The hierarchical goal solver for planning and task decomposition. @@ -215,7 +218,7 @@ pub struct HopeAgent { action_history: VecDeque, /// The agent's configuration. - config: HopeConfig, + config: KaneruConfig, /// The agent's performance statistics. stats: AgentStats, @@ -228,9 +231,9 @@ pub struct HopeAgent { available_actions: Vec, } -impl HopeAgent { - /// Creates a new `HopeAgent` with the given configuration. - pub fn new(config: HopeConfig) -> Self { +impl KaneruAgent { + /// Creates a new `KaneruAgent` with the given configuration. + pub fn new(config: KaneruConfig) -> Self { let learning = LearningEngine::new(config.learning.clone()); let goal_solver = HierarchicalGoalSolver::new(); let predictive = PredictiveModel::new(config.predictive.clone()); @@ -251,9 +254,9 @@ impl HopeAgent { } } - /// Creates a `HopeAgent` with a default configuration. + /// Creates a `KaneruAgent` with a default configuration. pub fn with_default_config() -> Self { - Self::new(HopeConfig::default()) + Self::new(KaneruConfig::default()) } /// The main agent lifecycle step. The agent observes its environment, @@ -700,7 +703,7 @@ impl HopeAgent { } } -impl Default for HopeAgent { +impl Default for KaneruAgent { fn default() -> Self { Self::with_default_config() } @@ -712,15 +715,15 @@ mod tests { use crate::{Goal, GoalStatus, Observation, Priority}; #[test] - fn test_hope_agent_creation() { - let agent = HopeAgent::with_default_config(); + fn test_kaneru_agent_creation() { + let agent = KaneruAgent::with_default_config(); assert_eq!(agent.stats.total_steps, 0); assert_eq!(agent.mode(), OperationMode::Adaptive); } #[test] fn test_step_and_learn_cycle() { - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Step 1: Observe let obs1 = Observation::sensor("temperature", 20.0); @@ -740,7 +743,7 @@ mod tests { #[test] fn test_goal_integration() { - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Set a goal let goal = Goal::maintain("temperature", 20.0..25.0).with_priority(Priority::High); @@ -752,7 +755,7 @@ mod tests { #[test] fn test_mode_switching() { - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); agent.set_mode(OperationMode::Exploration); assert_eq!(agent.mode(), OperationMode::Exploration); @@ -763,7 +766,7 @@ mod tests { #[test] fn test_anomaly_detection() { - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Record normal observations for i in 0..10 { @@ -783,7 +786,7 @@ mod tests { #[test] fn test_statistics_tracking() { - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); let obs = Observation::sensor("temp", 20.0); let action = agent.step(obs.clone()); @@ -806,7 +809,7 @@ mod tests { #[test] fn test_serialization() { - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Do some steps let obs = Observation::sensor("temp", 20.0); @@ -817,7 +820,7 @@ mod tests { assert_eq!(state.stats.total_steps, 1); // Create new agent and load state - let mut new_agent = HopeAgent::with_default_config(); + let mut new_agent = KaneruAgent::with_default_config(); new_agent.load_state(state); assert_eq!(new_agent.stats.total_steps, 1); @@ -825,7 +828,7 @@ mod tests { #[test] fn test_multiple_episodes() { - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); for episode in 0..3 { for step in 0..5 { @@ -852,7 +855,7 @@ mod tests { #[test] fn test_goal_completion() { - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); let goal = Goal::maintain("test", 20.0..25.0); let goal_id = agent.set_goal(goal); @@ -880,7 +883,7 @@ mod tests { #[test] fn test_exploration_vs_exploitation() { - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Set exploration mode agent.set_mode(OperationMode::Exploration); diff --git a/crates/hope_agents/src/learning/engine.rs b/crates/kaneru/src/learning/engine.rs similarity index 98% rename from crates/hope_agents/src/learning/engine.rs rename to crates/kaneru/src/learning/engine.rs index 185be50..a78328f 100644 --- a/crates/hope_agents/src/learning/engine.rs +++ b/crates/kaneru/src/learning/engine.rs @@ -1,4 +1,7 @@ -//! The core reinforcement learning engine for HOPE Agents. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! The core reinforcement learning engine for Kaneru. //! //! Provides implementations of reinforcement learning algorithms including //! Q-Learning, SARSA, and others, along with experience replay. @@ -223,7 +226,7 @@ impl Default for LearningConfig { } } -/// The main reinforcement learning engine for HOPE Agents. +/// The main reinforcement learning engine for Kaneru. #[derive(Debug, Clone, Serialize, Deserialize)] pub struct LearningEngine { /// The table of learned Q-values for state-action pairs. diff --git a/crates/hope_agents/src/learning/mod.rs b/crates/kaneru/src/learning/mod.rs similarity index 91% rename from crates/hope_agents/src/learning/mod.rs rename to crates/kaneru/src/learning/mod.rs index ddb2a86..b1ae4b9 100644 --- a/crates/hope_agents/src/learning/mod.rs +++ b/crates/kaneru/src/learning/mod.rs @@ -1,4 +1,7 @@ -//! Learning module for HOPE Agents +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Learning module for Kaneru //! //! This module provides reinforcement learning capabilities for agents including: //! - Q-Learning @@ -14,7 +17,7 @@ //! ## Basic Example //! //! ```rust -//! use hope_agents::{Agent, SimpleAgent, Observation, LearningConfig, LearningAlgorithm}; +//! use kaneru::{Agent, SimpleAgent, Observation, LearningConfig, LearningAlgorithm}; //! //! // Create an agent with learning enabled //! let mut agent = SimpleAgent::new("learning_agent"); @@ -53,7 +56,7 @@ //! ## Advanced Example: Direct Learning Engine Usage //! //! ```rust -//! use hope_agents::learning::{ +//! use kaneru::learning::{ //! LearningEngine, LearningConfig, LearningAlgorithm, //! StateId, ActionId, Experience //! }; diff --git a/crates/hope_agents/src/learning/value_function.rs b/crates/kaneru/src/learning/value_function.rs similarity index 98% rename from crates/hope_agents/src/learning/value_function.rs rename to crates/kaneru/src/learning/value_function.rs index 11d0aa5..7e9f160 100644 --- a/crates/hope_agents/src/learning/value_function.rs +++ b/crates/kaneru/src/learning/value_function.rs @@ -1,4 +1,7 @@ -//! Value function approximation for HOPE Agents. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Value function approximation for Kaneru. //! //! Provides different methods for approximating state-value functions (V-functions), //! which estimate how good it is for an agent to be in a given state. diff --git a/crates/hope_agents/src/lib.rs b/crates/kaneru/src/lib.rs similarity index 87% rename from crates/hope_agents/src/lib.rs rename to crates/kaneru/src/lib.rs index d4370aa..e7bda4a 100644 --- a/crates/hope_agents/src/lib.rs +++ b/crates/kaneru/src/lib.rs @@ -1,11 +1,14 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![doc = include_str!("../README.md")] -//! # HOPE Agents - Hierarchical Optimizing Policy Engine +//! # Kaneru — Unified Multi-Agent Execution System //! //! Autonomous AI agents framework for AIngle semantic networks. //! //! ## Overview //! -//! HOPE Agents provides a complete framework for building autonomous AI agents that can: +//! Kaneru provides a complete framework for building autonomous AI agents that can: //! - **Observe** their environment (IoT sensors, network events, user inputs) //! - **Decide** based on learned policies and hierarchical goals //! - **Execute** actions in the AIngle network @@ -18,7 +21,7 @@ //! //! ```text //! ┌─────────────────────────────────────────────────────────────┐ -//! │ HOPE Agent │ +//! │ Kaneru Agent │ //! ├─────────────────────────────────────────────────────────────┤ //! │ │ //! │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │ @@ -45,7 +48,7 @@ //! ### Simple Reactive Agent //! //! ```rust,ignore -//! use hope_agents::{Agent, SimpleAgent, Goal, Observation, Rule, Condition, Action}; +//! use kaneru::{Agent, SimpleAgent, Goal, Observation, Rule, Condition, Action}; //! //! // Create a simple reactive agent //! let mut agent = SimpleAgent::new("sensor_monitor"); @@ -66,13 +69,13 @@ //! agent.learn(&obs, &action, &result); //! ``` //! -//! ### HOPE Agent with Learning +//! ### Kaneru Agent with Learning //! //! ```rust,ignore -//! use hope_agents::{HopeAgent, HopeConfig, Observation, Goal, Priority, Outcome}; +//! use kaneru::{KaneruAgent, KaneruConfig, Observation, Goal, Priority, Outcome}; //! -//! // Create a HOPE agent with learning, prediction, and hierarchical goals -//! let mut agent = HopeAgent::with_default_config(); +//! // Create a Kaneru agent with learning, prediction, and hierarchical goals +//! let mut agent = KaneruAgent::with_default_config(); //! //! // Set a goal //! let goal = Goal::maintain("temperature", 20.0..25.0) @@ -96,15 +99,15 @@ //! ### Multi-Agent Coordination //! //! ```rust,ignore -//! use hope_agents::{AgentCoordinator, HopeAgent, Message, Observation}; +//! use kaneru::{AgentCoordinator, KaneruAgent, Message, Observation}; //! use std::collections::HashMap; //! //! // Create coordinator //! let mut coordinator = AgentCoordinator::new(); //! //! // Register agents -//! let agent1 = HopeAgent::with_default_config(); -//! let agent2 = HopeAgent::with_default_config(); +//! let agent1 = KaneruAgent::with_default_config(); +//! let agent2 = KaneruAgent::with_default_config(); //! //! let id1 = coordinator.register_agent(agent1); //! let id2 = coordinator.register_agent(agent2); @@ -123,10 +126,10 @@ //! ### State Persistence //! //! ```rust,ignore -//! use hope_agents::{HopeAgent, AgentPersistence}; +//! use kaneru::{KaneruAgent, AgentPersistence}; //! use std::path::Path; //! -//! let mut agent = HopeAgent::with_default_config(); +//! let mut agent = KaneruAgent::with_default_config(); //! //! // Train the agent... //! @@ -134,7 +137,7 @@ //! agent.save_to_file(Path::new("agent_state.json")).unwrap(); //! //! // Later, load agent state -//! let loaded_agent = HopeAgent::load_from_file(Path::new("agent_state.json")).unwrap(); +//! let loaded_agent = KaneruAgent::load_from_file(Path::new("agent_state.json")).unwrap(); //! ``` //! //! ## Agent Types @@ -151,7 +154,7 @@ pub mod coordination; pub mod error; pub mod goal; pub mod hierarchical; -pub mod hope_agent; +pub mod kaneru_agent; pub mod learning; #[cfg(feature = "memory")] pub mod memory; @@ -175,8 +178,8 @@ pub use hierarchical::{ DecompositionRule, DecompositionStrategy, GoalConflict, GoalTree, GoalTypeFilter, HierarchicalGoalSolver, ParallelStrategy, SequentialStrategy, }; -pub use hope_agent::{ - AgentStats, GoalSelectionStrategy, HopeAgent, HopeConfig, OperationMode, Outcome, +pub use kaneru_agent::{ + AgentStats, GoalSelectionStrategy, KaneruAgent, KaneruConfig, OperationMode, Outcome, SerializedState, }; pub use learning::{ @@ -195,7 +198,7 @@ pub use predictive::{ }; pub use types::*; -/// HOPE framework version +/// Kaneru framework version pub const VERSION: &str = env!("CARGO_PKG_VERSION"); /// Creates a simple agent with default configuration. @@ -211,7 +214,7 @@ pub const VERSION: &str = env!("CARGO_PKG_VERSION"); /// # Examples /// /// ``` -/// use hope_agents::{create_agent, Agent}; +/// use kaneru::{create_agent, Agent}; /// /// let agent = create_agent("my_agent"); /// assert_eq!(agent.name(), "my_agent"); @@ -239,7 +242,7 @@ pub fn create_agent(name: &str) -> SimpleAgent { /// # Examples /// /// ``` -/// use hope_agents::{create_iot_agent, Agent}; +/// use kaneru::{create_iot_agent, Agent}; /// /// let agent = create_iot_agent("sensor_agent"); /// assert!(agent.config().max_memory_bytes <= 128 * 1024); diff --git a/crates/hope_agents/src/memory.rs b/crates/kaneru/src/memory.rs similarity index 87% rename from crates/hope_agents/src/memory.rs rename to crates/kaneru/src/memory.rs index 806be46..a3433bf 100644 --- a/crates/hope_agents/src/memory.rs +++ b/crates/kaneru/src/memory.rs @@ -1,6 +1,9 @@ -//! Memory integration for HOPE Agents. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Memory integration for Kaneru. //! -//! This module provides a `MemoryAgent`, a wrapper that integrates the `titans_memory` +//! This module provides a `MemoryAgent`, a wrapper that integrates the `ineru` //! system with a `SimpleAgent` to give it memory capabilities. use crate::action::{Action, ActionResult}; @@ -8,9 +11,9 @@ use crate::agent::{Agent, AgentId, AgentState, SimpleAgent}; use crate::config::AgentConfig; use crate::error::Result; use crate::observation::Observation; -use titans_memory::{MemoryConfig, MemoryEntry, MemoryQuery, TitansMemory}; +use ineru::{MemoryConfig, MemoryEntry, MemoryQuery, IneruMemory}; -/// An agent wrapper that adds memory capabilities using `TitansMemory`. +/// An agent wrapper that adds memory capabilities using `IneruMemory`. /// /// This struct decorates a `SimpleAgent` with a memory system, allowing it to /// remember observations, actions, and their outcomes, and to query that history @@ -18,16 +21,16 @@ use titans_memory::{MemoryConfig, MemoryEntry, MemoryQuery, TitansMemory}; pub struct MemoryAgent { /// The inner, core agent logic. inner: SimpleAgent, - /// The integrated memory system from the `titans_memory` crate. - memory: TitansMemory, + /// The integrated memory system from the `ineru` crate. + memory: IneruMemory, } impl MemoryAgent { - /// Creates a new `MemoryAgent` with a default `SimpleAgent` and an IoT-optimized `TitansMemory`. + /// Creates a new `MemoryAgent` with a default `SimpleAgent` and an IoT-optimized `IneruMemory`. pub fn new(name: &str) -> Self { Self { inner: SimpleAgent::new(name), - memory: TitansMemory::iot_mode(), + memory: IneruMemory::iot_mode(), } } @@ -35,17 +38,17 @@ impl MemoryAgent { pub fn with_config(name: &str, agent_config: AgentConfig, memory_config: MemoryConfig) -> Self { Self { inner: SimpleAgent::with_config(name, agent_config), - memory: TitansMemory::new(memory_config), + memory: IneruMemory::new(memory_config), } } - /// Returns a reference to the `TitansMemory` system. - pub fn memory(&self) -> &TitansMemory { + /// Returns a reference to the `IneruMemory` system. + pub fn memory(&self) -> &IneruMemory { &self.memory } - /// Returns a mutable reference to the `TitansMemory` system. - pub fn memory_mut(&mut self) -> &mut TitansMemory { + /// Returns a mutable reference to the `IneruMemory` system. + pub fn memory_mut(&mut self) -> &mut IneruMemory { &mut self.memory } @@ -129,8 +132,8 @@ impl MemoryAgent { Ok(()) } - /// Returns statistics from the underlying `TitansMemory` system. - pub fn memory_stats(&self) -> titans_memory::MemoryStats { + /// Returns statistics from the underlying `IneruMemory` system. + pub fn memory_stats(&self) -> ineru::MemoryStats { self.memory.stats() } } diff --git a/crates/hope_agents/src/observation.rs b/crates/kaneru/src/observation.rs similarity index 95% rename from crates/hope_agents/src/observation.rs rename to crates/kaneru/src/observation.rs index be17a25..a90f0d0 100644 --- a/crates/hope_agents/src/observation.rs +++ b/crates/kaneru/src/observation.rs @@ -1,4 +1,7 @@ -//! Observation types for HOPE Agents. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Observation types for Kaneru. //! //! Observations represent the data an agent perceives from its environment, //! forming the basis for its state and decision-making processes. @@ -15,7 +18,7 @@ use std::collections::HashMap; /// # Examples /// /// ``` -/// # use hope_agents::ObservationType; +/// # use kaneru::ObservationType; /// let sensor_type = ObservationType::sensor("temperature"); /// let network_type = ObservationType::network("peer_connected"); /// let alert_type = ObservationType::alert("System overload"); @@ -48,7 +51,7 @@ impl ObservationType { /// # Examples /// /// ``` - /// # use hope_agents::ObservationType; + /// # use kaneru::ObservationType; /// let obs_type = ObservationType::sensor("temperature"); /// ``` pub fn sensor(name: &str) -> Self { @@ -64,7 +67,7 @@ impl ObservationType { /// # Examples /// /// ``` - /// # use hope_agents::ObservationType; + /// # use kaneru::ObservationType; /// let obs_type = ObservationType::network("peer_connected"); /// ``` pub fn network(event: &str) -> Self { @@ -80,7 +83,7 @@ impl ObservationType { /// # Examples /// /// ``` - /// # use hope_agents::ObservationType; + /// # use kaneru::ObservationType; /// let obs_type = ObservationType::alert("Critical error"); /// ``` pub fn alert(msg: &str) -> Self { @@ -97,7 +100,7 @@ impl ObservationType { /// # Examples /// /// ``` -/// # use hope_agents::Observation; +/// # use kaneru::Observation; /// // Simple sensor observation /// let temp_obs = Observation::sensor("temperature", 23.5); /// @@ -136,7 +139,7 @@ impl Observation { /// # Examples /// /// ``` - /// # use hope_agents::{Observation, ObservationType}; + /// # use kaneru::{Observation, ObservationType}; /// let obs = Observation::new(ObservationType::sensor("pressure"), 1013.25); /// ``` pub fn new(obs_type: ObservationType, value: impl Into) -> Self { @@ -159,7 +162,7 @@ impl Observation { /// # Examples /// /// ``` - /// # use hope_agents::Observation; + /// # use kaneru::Observation; /// let temp = Observation::sensor("temperature", 23.5); /// let humidity = Observation::sensor("humidity", 65); /// ``` @@ -176,7 +179,7 @@ impl Observation { /// # Examples /// /// ``` - /// # use hope_agents::Observation; + /// # use kaneru::Observation; /// let alert = Observation::alert("Temperature threshold exceeded"); /// ``` pub fn alert(message: &str) -> Self { @@ -196,7 +199,7 @@ impl Observation { /// # Examples /// /// ``` - /// # use hope_agents::Observation; + /// # use kaneru::Observation; /// let obs = Observation::state_change("system_mode", "active"); /// ``` pub fn state_change(state_name: &str, new_value: impl Into) -> Self { @@ -215,7 +218,7 @@ impl Observation { /// # Examples /// /// ``` - /// # use hope_agents::Observation; + /// # use kaneru::Observation; /// let obs = Observation::event("user_login"); /// ``` pub fn event(event_name: &str) -> Self { @@ -237,7 +240,7 @@ impl Observation { /// # Examples /// /// ``` - /// # use hope_agents::Observation; + /// # use kaneru::Observation; /// let obs = Observation::error("network", "Connection timeout"); /// ``` pub fn error(error_type: &str, message: &str) -> Self { @@ -257,7 +260,7 @@ impl Observation { /// # Examples /// /// ``` - /// # use hope_agents::Observation; + /// # use kaneru::Observation; /// let obs = Observation::network("peer_connected", "peer_123"); /// ``` pub fn network(event: &str, data: impl Into) -> Self { @@ -273,7 +276,7 @@ impl Observation { /// # Examples /// /// ``` - /// # use hope_agents::Observation; + /// # use kaneru::Observation; /// let obs = Observation::timer("hourly_check"); /// ``` pub fn timer(timer_name: &str) -> Self { @@ -295,7 +298,7 @@ impl Observation { /// # Examples /// /// ``` - /// # use hope_agents::Observation; + /// # use kaneru::Observation; /// let obs = Observation::sensor("noisy_sensor", 42.0) /// .with_confidence(0.7); /// ``` @@ -316,7 +319,7 @@ impl Observation { /// # Examples /// /// ``` - /// # use hope_agents::Observation; + /// # use kaneru::Observation; /// let obs = Observation::sensor("temperature", 23.5) /// .with_metadata("location", "room_a") /// .with_metadata("sensor_id", "temp_001"); @@ -333,7 +336,7 @@ impl Observation { /// # Examples /// /// ``` - /// # use hope_agents::Observation; + /// # use kaneru::Observation; /// # use std::thread; /// # use std::time::Duration; /// let obs = Observation::sensor("temp", 20.0); @@ -355,7 +358,7 @@ impl Observation { /// # Examples /// /// ``` - /// # use hope_agents::Observation; + /// # use kaneru::Observation; /// let obs = Observation::sensor("temp", 20.0); /// assert!(obs.is_recent(10)); // Fresh observation is recent /// ``` @@ -373,7 +376,7 @@ impl Observation { /// # Examples /// /// ``` -/// # use hope_agents::{Observation, observation::Sensor}; +/// # use kaneru::{Observation, observation::Sensor}; /// struct TemperatureSensor { /// name: String, /// current_temp: f64, @@ -395,7 +398,7 @@ pub trait Sensor { /// # Examples /// /// ``` - /// # use hope_agents::observation::{Sensor, ValueSensor}; + /// # use kaneru::observation::{Sensor, ValueSensor}; /// let sensor = ValueSensor::new("temp_sensor"); /// assert_eq!(sensor.name(), "temp_sensor"); /// ``` @@ -411,7 +414,7 @@ pub trait Sensor { /// # Examples /// /// ``` - /// # use hope_agents::observation::{Sensor, ValueSensor}; + /// # use kaneru::observation::{Sensor, ValueSensor}; /// let mut sensor = ValueSensor::new("temp"); /// sensor.set_value(23.5); /// let obs = sensor.read().unwrap(); @@ -426,7 +429,7 @@ pub trait Sensor { /// # Examples /// /// ``` - /// # use hope_agents::observation::{Sensor, ValueSensor}; + /// # use kaneru::observation::{Sensor, ValueSensor}; /// let sensor = ValueSensor::new("temp"); /// // Sensor with no value is not available /// assert!(!sensor.is_available()); @@ -444,7 +447,7 @@ pub trait Sensor { /// # Examples /// /// ``` -/// # use hope_agents::observation::{Sensor, ValueSensor}; +/// # use kaneru::observation::{Sensor, ValueSensor}; /// let mut sensor = ValueSensor::new("temperature"); /// /// // Initially, sensor has no value @@ -474,7 +477,7 @@ impl ValueSensor { /// # Examples /// /// ``` - /// # use hope_agents::observation::ValueSensor; + /// # use kaneru::observation::ValueSensor; /// let sensor = ValueSensor::new("my_sensor"); /// ``` pub fn new(name: &str) -> Self { @@ -493,7 +496,7 @@ impl ValueSensor { /// # Examples /// /// ``` - /// # use hope_agents::observation::ValueSensor; + /// # use kaneru::observation::ValueSensor; /// let mut sensor = ValueSensor::new("temp"); /// sensor.set_value(25.0); /// ``` @@ -508,7 +511,7 @@ impl ValueSensor { /// # Examples /// /// ``` - /// # use hope_agents::observation::{Sensor, ValueSensor}; + /// # use kaneru::observation::{Sensor, ValueSensor}; /// let mut sensor = ValueSensor::new("temp"); /// sensor.set_value(25.0); /// sensor.clear(); @@ -544,7 +547,7 @@ impl Sensor for ValueSensor { /// # Examples /// /// ``` -/// # use hope_agents::{Observation, observation::ObservationBuffer}; +/// # use kaneru::{Observation, observation::ObservationBuffer}; /// let mut buffer = ObservationBuffer::new(100); /// /// buffer.push(Observation::sensor("temp", 20.0)); diff --git a/crates/hope_agents/src/persistence.rs b/crates/kaneru/src/persistence.rs similarity index 91% rename from crates/hope_agents/src/persistence.rs rename to crates/kaneru/src/persistence.rs index 00b5248..d0ea52b 100644 --- a/crates/hope_agents/src/persistence.rs +++ b/crates/kaneru/src/persistence.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Agent State Persistence. //! //! Provides mechanisms for serializing and deserializing agent state to enable: @@ -9,10 +12,10 @@ //! ## Example //! //! ```rust,ignore -//! use hope_agents::{HopeAgent, AgentPersistence}; +//! use kaneru::{KaneruAgent, AgentPersistence}; //! use std::path::Path; //! -//! let mut agent = HopeAgent::with_default_config(); +//! let mut agent = KaneruAgent::with_default_config(); //! //! // ... train the agent ... //! @@ -20,10 +23,10 @@ //! agent.save_to_file(Path::new("agent_state.json")).unwrap(); //! //! // Later, load from the file -//! let loaded_agent = HopeAgent::load_from_file(Path::new("agent_state.json")).unwrap(); +//! let loaded_agent = KaneruAgent::load_from_file(Path::new("agent_state.json")).unwrap(); //! ``` -use crate::{HopeAgent, LearningConfig, LearningEngine}; +use crate::{KaneruAgent, LearningConfig, LearningEngine}; use serde::{Deserialize, Serialize}; use std::fs; use std::io::{Read, Write}; @@ -146,7 +149,7 @@ pub trait AgentPersistence: Sized { /// # Example /// /// ```rust,ignore - /// let agent = HopeAgent::load_from_file(Path::new("agent.json"))?; + /// let agent = KaneruAgent::load_from_file(Path::new("agent.json"))?; /// ``` fn load_from_file(path: &Path) -> Result; @@ -176,7 +179,7 @@ pub trait AgentPersistence: Sized { /// # Example /// /// ```rust,ignore - /// let agent = HopeAgent::from_bytes(&bytes)?; + /// let agent = KaneruAgent::from_bytes(&bytes)?; /// ``` fn from_bytes(bytes: &[u8]) -> Result; @@ -187,7 +190,7 @@ pub trait AgentPersistence: Sized { ) -> Result; } -impl AgentPersistence for HopeAgent { +impl AgentPersistence for KaneruAgent { fn save_to_file(&self, path: &Path) -> Result<(), PersistenceError> { self.save_to_file_with_options(path, &PersistenceOptions::default()) } @@ -219,9 +222,9 @@ impl AgentPersistence for HopeAgent { let mut bytes = Vec::new(); file.read_to_end(&mut bytes)?; - let state: crate::hope_agent::SerializedState = deserialize_with_options(&bytes, options)?; + let state: crate::kaneru_agent::SerializedState = deserialize_with_options(&bytes, options)?; - let mut agent = HopeAgent::new(state.config.clone()); + let mut agent = KaneruAgent::new(state.config.clone()); agent.load_state(state); log::info!("Loaded agent state from {:?}", path); @@ -249,9 +252,9 @@ impl AgentPersistence for HopeAgent { bytes: &[u8], options: &PersistenceOptions, ) -> Result { - let state: crate::hope_agent::SerializedState = deserialize_with_options(bytes, options)?; + let state: crate::kaneru_agent::SerializedState = deserialize_with_options(bytes, options)?; - let mut agent = HopeAgent::new(state.config.clone()); + let mut agent = KaneruAgent::new(state.config.clone()); agent.load_state(state); Ok(agent) @@ -453,7 +456,7 @@ impl CheckpointManager { /// Saves a checkpoint of the agent's state. pub fn save_checkpoint( &mut self, - agent: &HopeAgent, + agent: &KaneruAgent, step: u64, ) -> Result<(), PersistenceError> { // Create checkpoint directory if it doesn't exist @@ -474,7 +477,7 @@ impl CheckpointManager { } /// Loads the most recent checkpoint from the checkpoint directory. - pub fn load_latest_checkpoint(&self) -> Result { + pub fn load_latest_checkpoint(&self) -> Result { let checkpoints = self.list_checkpoints()?; if checkpoints.is_empty() { @@ -484,7 +487,7 @@ impl CheckpointManager { } let latest = checkpoints.last().unwrap(); - HopeAgent::load_from_file(latest) + KaneruAgent::load_from_file(latest) } /// Lists all checkpoint files in the directory, sorted by step number. @@ -532,18 +535,18 @@ impl CheckpointManager { #[cfg(test)] mod tests { use super::*; - use crate::{HopeAgent, Observation}; + use crate::{KaneruAgent, Observation}; use std::path::PathBuf; fn temp_path(name: &str) -> PathBuf { let mut path = std::env::temp_dir(); - path.push(format!("hope_agents_test_{}", name)); + path.push(format!("kaneru_test_{}", name)); path } #[test] - fn test_save_and_load_hope_agent() { - let mut agent = HopeAgent::with_default_config(); + fn test_save_and_load_kaneru_agent() { + let mut agent = KaneruAgent::with_default_config(); // Do some steps to create state for i in 0..5 { @@ -558,7 +561,7 @@ mod tests { assert!(path.exists()); // Load - let loaded_agent = HopeAgent::load_from_file(&path).unwrap(); + let loaded_agent = KaneruAgent::load_from_file(&path).unwrap(); assert_eq!( loaded_agent.get_statistics().total_steps, agent.get_statistics().total_steps @@ -570,7 +573,7 @@ mod tests { #[test] fn test_save_with_different_options() { - let agent = HopeAgent::with_default_config(); + let agent = KaneruAgent::with_default_config(); // Save with compact options let path = temp_path("agent_compact.bin"); @@ -579,7 +582,7 @@ mod tests { assert!(path.exists()); // Load with same options - let _loaded = HopeAgent::load_from_file_with_options(&path, &options).unwrap(); + let _loaded = KaneruAgent::load_from_file_with_options(&path, &options).unwrap(); // Cleanup let _ = fs::remove_file(&path); @@ -587,7 +590,7 @@ mod tests { #[test] fn test_to_bytes_and_from_bytes() { - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Do some steps let obs = Observation::sensor("temp", 25.0); @@ -598,7 +601,7 @@ mod tests { assert!(!bytes.is_empty()); // Deserialize from bytes - let loaded_agent = HopeAgent::from_bytes(&bytes).unwrap(); + let loaded_agent = KaneruAgent::from_bytes(&bytes).unwrap(); assert_eq!( loaded_agent.get_statistics().total_steps, agent.get_statistics().total_steps @@ -627,7 +630,7 @@ mod tests { let checkpoint_dir = temp_path("checkpoints"); let mut manager = CheckpointManager::new(&checkpoint_dir, 3).with_interval(10); - let agent = HopeAgent::with_default_config(); + let agent = KaneruAgent::with_default_config(); // Should checkpoint at intervals assert!(manager.should_checkpoint(10)); @@ -649,7 +652,7 @@ mod tests { let checkpoint_dir = temp_path("checkpoints_cleanup"); let mut manager = CheckpointManager::new(&checkpoint_dir, 2).with_interval(1); - let agent = HopeAgent::with_default_config(); + let agent = KaneruAgent::with_default_config(); // Save more checkpoints than max manager.save_checkpoint(&agent, 1).unwrap(); @@ -667,7 +670,7 @@ mod tests { #[test] fn test_roundtrip_with_compression() { - let agent = HopeAgent::with_default_config(); + let agent = KaneruAgent::with_default_config(); let options = PersistenceOptions { format: PersistenceFormat::Json, @@ -676,7 +679,7 @@ mod tests { }; let bytes = agent.to_bytes_with_options(&options).unwrap(); - let loaded = HopeAgent::from_bytes_with_options(&bytes, &options).unwrap(); + let loaded = KaneruAgent::from_bytes_with_options(&bytes, &options).unwrap(); assert_eq!( loaded.get_statistics().total_steps, @@ -687,7 +690,7 @@ mod tests { #[test] fn test_persistence_error_handling() { let invalid_path = PathBuf::from("/invalid/path/that/does/not/exist/agent.json"); - let result = HopeAgent::load_from_file(&invalid_path); + let result = KaneruAgent::load_from_file(&invalid_path); assert!(result.is_err()); } } diff --git a/crates/hope_agents/src/policy.rs b/crates/kaneru/src/policy.rs similarity index 99% rename from crates/hope_agents/src/policy.rs rename to crates/kaneru/src/policy.rs index 8751d93..a796141 100644 --- a/crates/hope_agents/src/policy.rs +++ b/crates/kaneru/src/policy.rs @@ -1,4 +1,7 @@ -//! Policy engine for HOPE Agents. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Policy engine for Kaneru. //! //! Policies and rules define how an agent makes decisions based on its observations. diff --git a/crates/hope_agents/src/predictive/anomaly.rs b/crates/kaneru/src/predictive/anomaly.rs similarity index 98% rename from crates/hope_agents/src/predictive/anomaly.rs rename to crates/kaneru/src/predictive/anomaly.rs index 94b2898..57b7fff 100644 --- a/crates/hope_agents/src/predictive/anomaly.rs +++ b/crates/kaneru/src/predictive/anomaly.rs @@ -1,4 +1,7 @@ -//! Anomaly detection for HOPE Agents. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Anomaly detection for Kaneru. use crate::Observation; use std::collections::VecDeque; diff --git a/crates/hope_agents/src/predictive/mod.rs b/crates/kaneru/src/predictive/mod.rs similarity index 81% rename from crates/hope_agents/src/predictive/mod.rs rename to crates/kaneru/src/predictive/mod.rs index b568010..005b239 100644 --- a/crates/hope_agents/src/predictive/mod.rs +++ b/crates/kaneru/src/predictive/mod.rs @@ -1,4 +1,7 @@ -//! Predictive modeling for state and reward prediction in HOPE agents. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Predictive modeling for state and reward prediction in Kaneru agents. //! //! This module provides capabilities for: //! - Predicting next states given current state and action @@ -18,8 +21,8 @@ //! ## Example //! //! ```rust,ignore -//! use hope_agents::predictive::{PredictiveModel, PredictiveConfig}; -//! use hope_agents::{Observation, Action, ActionType}; +//! use kaneru::predictive::{PredictiveModel, PredictiveConfig}; +//! use kaneru::{Observation, Action, ActionType}; //! //! // Create predictive model //! let mut model = PredictiveModel::with_default_config(); diff --git a/crates/hope_agents/src/predictive/model.rs b/crates/kaneru/src/predictive/model.rs similarity index 98% rename from crates/hope_agents/src/predictive/model.rs rename to crates/kaneru/src/predictive/model.rs index 604e5a0..68d5221 100644 --- a/crates/hope_agents/src/predictive/model.rs +++ b/crates/kaneru/src/predictive/model.rs @@ -1,4 +1,7 @@ -//! The core predictive model for HOPE agents. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! The core predictive model for Kaneru agents. use crate::predictive::{AnomalyDetector, StateEncoder, TransitionModel}; use crate::{Action, Observation, Timestamp}; diff --git a/crates/hope_agents/src/predictive/transition.rs b/crates/kaneru/src/predictive/transition.rs similarity index 98% rename from crates/hope_agents/src/predictive/transition.rs rename to crates/kaneru/src/predictive/transition.rs index c31a661..cf09407 100644 --- a/crates/hope_agents/src/predictive/transition.rs +++ b/crates/kaneru/src/predictive/transition.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! A model for learning and predicting state transitions. use crate::{Action, Observation}; diff --git a/crates/hope_agents/src/types.rs b/crates/kaneru/src/types.rs similarity index 98% rename from crates/hope_agents/src/types.rs rename to crates/kaneru/src/types.rs index 25906e9..34feffa 100644 --- a/crates/hope_agents/src/types.rs +++ b/crates/kaneru/src/types.rs @@ -1,4 +1,7 @@ -//! Core, general-purpose data types for the HOPE Agents framework. +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Core, general-purpose data types for the Kaneru framework. use serde::{Deserialize, Serialize}; diff --git a/crates/hope_agents/tests/agent_persistence_tests.rs b/crates/kaneru/tests/agent_persistence_tests.rs similarity index 96% rename from crates/hope_agents/tests/agent_persistence_tests.rs rename to crates/kaneru/tests/agent_persistence_tests.rs index f2de63a..e4e9eed 100644 --- a/crates/hope_agents/tests/agent_persistence_tests.rs +++ b/crates/kaneru/tests/agent_persistence_tests.rs @@ -1,10 +1,13 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Integration tests for agent persistence //! //! Tests agent state serialization, learning state persistence, //! goal manager persistence, and checkpoint management. -use hope_agents::policy::Condition; -use hope_agents::{ +use kaneru::policy::Condition; +use kaneru::{ Action, Agent, AgentConfig, Goal, GoalStatus, Observation, Policy, Rule, SimpleAgent, }; @@ -222,7 +225,7 @@ fn test_complete_agent_state_persistence() { let stats_json = serde_json::to_string(stats).unwrap(); // Verify we can restore stats - let restored_stats: hope_agents::agent::AgentStats = serde_json::from_str(&stats_json).unwrap(); + let restored_stats: kaneru::agent::AgentStats = serde_json::from_str(&stats_json).unwrap(); assert_eq!(restored_stats.observations_received, 10); } diff --git a/crates/hope_agents/tests/integration_test.rs b/crates/kaneru/tests/integration_test.rs similarity index 90% rename from crates/hope_agents/tests/integration_test.rs rename to crates/kaneru/tests/integration_test.rs index e6d7f1f..2b60ec2 100644 --- a/crates/hope_agents/tests/integration_test.rs +++ b/crates/kaneru/tests/integration_test.rs @@ -1,9 +1,12 @@ -//! Integration tests for HOPE Agents +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Integration tests for Kaneru //! -//! These tests demonstrate the complete functionality of the HOPE Agents framework, +//! These tests demonstrate the complete functionality of the Kaneru framework, //! including coordination, persistence, learning, and goal management. -use hope_agents::*; +use kaneru::*; use std::collections::HashMap; /// Test basic agent creation and operation @@ -38,10 +41,10 @@ fn test_simple_agent_workflow() { assert_eq!(agent.stats().actions_executed, 1); } -/// Test HOPE agent with full learning cycle +/// Test Kaneru agent with full learning cycle #[test] -fn test_hope_agent_learning_cycle() { - let mut agent = HopeAgent::with_default_config(); +fn test_kaneru_agent_learning_cycle() { + let mut agent = KaneruAgent::with_default_config(); // Set a goal let goal = Goal::maintain("temperature", 20.0..25.0).with_priority(Priority::High); @@ -83,9 +86,9 @@ fn test_multi_agent_coordination() { let mut coordinator = AgentCoordinator::new(); // Create and register multiple agents - let agent1 = HopeAgent::with_default_config(); - let agent2 = HopeAgent::with_default_config(); - let agent3 = HopeAgent::with_default_config(); + let agent1 = KaneruAgent::with_default_config(); + let agent2 = KaneruAgent::with_default_config(); + let agent3 = KaneruAgent::with_default_config(); let id1 = coordinator.register_agent(agent1); let id2 = coordinator.register_agent(agent2); @@ -132,7 +135,7 @@ fn test_consensus_mechanism() { // Register agents let agents: Vec<_> = (0..5) - .map(|_| coordinator.register_agent(HopeAgent::with_default_config())) + .map(|_| coordinator.register_agent(KaneruAgent::with_default_config())) .collect(); // Create a proposal @@ -196,7 +199,7 @@ fn test_consensus_mechanism() { /// Test agent persistence (save/load) #[test] fn test_agent_persistence() { - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Train the agent for i in 0..20 { @@ -216,7 +219,7 @@ fn test_agent_persistence() { assert!(temp_path.exists()); // Load from file - let loaded_agent = HopeAgent::load_from_file(&temp_path).unwrap(); + let loaded_agent = KaneruAgent::load_from_file(&temp_path).unwrap(); assert_eq!(loaded_agent.get_statistics().total_steps, original_steps); assert_eq!( @@ -231,7 +234,7 @@ fn test_agent_persistence() { /// Test persistence with different formats #[test] fn test_persistence_formats() { - let agent = HopeAgent::with_default_config(); + let agent = KaneruAgent::with_default_config(); // Test JSON format let json_options = PersistenceOptions { @@ -240,7 +243,7 @@ fn test_persistence_formats() { compress: false, }; let json_bytes = agent.to_bytes_with_options(&json_options).unwrap(); - let loaded_from_json = HopeAgent::from_bytes_with_options(&json_bytes, &json_options).unwrap(); + let loaded_from_json = KaneruAgent::from_bytes_with_options(&json_bytes, &json_options).unwrap(); assert_eq!( loaded_from_json.get_statistics().total_steps, agent.get_statistics().total_steps @@ -254,7 +257,7 @@ fn test_persistence_formats() { }; let compressed_bytes = agent.to_bytes_with_options(&compressed_options).unwrap(); let loaded_compressed = - HopeAgent::from_bytes_with_options(&compressed_bytes, &compressed_options).unwrap(); + KaneruAgent::from_bytes_with_options(&compressed_bytes, &compressed_options).unwrap(); assert_eq!( loaded_compressed.get_statistics().total_steps, agent.get_statistics().total_steps @@ -264,10 +267,10 @@ fn test_persistence_formats() { /// Test checkpoint manager #[test] fn test_checkpoint_manager() { - let checkpoint_dir = std::env::temp_dir().join("hope_checkpoints"); + let checkpoint_dir = std::env::temp_dir().join("kaneru_checkpoints"); let mut manager = CheckpointManager::new(&checkpoint_dir, 3).with_interval(10); - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Train and checkpoint for step in 1..=35 { @@ -293,7 +296,7 @@ fn test_checkpoint_manager() { /// Test hierarchical goal decomposition #[test] fn test_hierarchical_goals() { - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Create a complex goal let parent_goal = Goal::achieve("optimize_system", 1.0).with_priority(Priority::High); @@ -308,7 +311,7 @@ fn test_hierarchical_goals() { /// Test operation mode switching #[test] fn test_operation_modes() { - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Test different modes agent.set_mode(OperationMode::Exploration); @@ -332,7 +335,7 @@ fn test_operation_modes() { /// Test anomaly detection #[test] fn test_anomaly_detection() { - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); // Establish normal pattern for i in 0..20 { @@ -436,11 +439,11 @@ fn test_complete_multi_agent_scenario() { let mut coordinator = AgentCoordinator::new(); // Create agents with different goals - let mut agent1 = HopeAgent::with_default_config(); + let mut agent1 = KaneruAgent::with_default_config(); let goal1 = Goal::maintain("temperature", 20.0..25.0); agent1.set_goal(goal1); - let mut agent2 = HopeAgent::with_default_config(); + let mut agent2 = KaneruAgent::with_default_config(); let goal2 = Goal::maintain("humidity", 40.0..60.0); agent2.set_goal(goal2); @@ -500,7 +503,7 @@ fn test_complete_multi_agent_scenario() { /// Benchmark-style test to verify performance #[test] fn test_performance() { - let mut agent = HopeAgent::with_default_config(); + let mut agent = KaneruAgent::with_default_config(); let start = std::time::Instant::now(); diff --git a/crates/hope_agents/tests/integration_tests.rs b/crates/kaneru/tests/integration_tests.rs similarity index 96% rename from crates/hope_agents/tests/integration_tests.rs rename to crates/kaneru/tests/integration_tests.rs index 99ea634..f822857 100644 --- a/crates/hope_agents/tests/integration_tests.rs +++ b/crates/kaneru/tests/integration_tests.rs @@ -1,10 +1,13 @@ -//! Integration tests for HOPE Agents with Titans Memory +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + +//! Integration tests for Kaneru with Ineru memory //! //! These tests verify the complete workflow of memory-enabled agents. #![cfg(feature = "memory")] -use hope_agents::{ +use kaneru::{ action::{Action, ActionType}, agent::Agent, config::AgentConfig, @@ -13,7 +16,7 @@ use hope_agents::{ observation::Observation, policy::{Condition, Rule}, }; -use titans_memory::MemoryConfig; +use ineru::MemoryConfig; /// Test: Create a memory agent and store observations #[test] diff --git a/crates/kitsune_p2p/bootstrap/Cargo.toml b/crates/kitsune_p2p/bootstrap/Cargo.toml index c09841d..c024cb8 100644 --- a/crates/kitsune_p2p/bootstrap/Cargo.toml +++ b/crates/kitsune_p2p/bootstrap/Cargo.toml @@ -2,7 +2,7 @@ name = "kitsune_bootstrap" version = "0.0.1" description = "Bootstrap server written in rust for kitsune nodes to find each other" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/kitsune_bootstrap" diff --git a/crates/kitsune_p2p/bootstrap/benches/bench.rs b/crates/kitsune_p2p/bootstrap/benches/bench.rs index 02557da..1c2502b 100644 --- a/crates/kitsune_p2p/bootstrap/benches/bench.rs +++ b/crates/kitsune_p2p/bootstrap/benches/bench.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::sync::Arc; use criterion::criterion_group; diff --git a/crates/kitsune_p2p/bootstrap/src/clear.rs b/crates/kitsune_p2p/bootstrap/src/clear.rs index a188ac3..f4fda51 100644 --- a/crates/kitsune_p2p/bootstrap/src/clear.rs +++ b/crates/kitsune_p2p/bootstrap/src/clear.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::store::Store; use super::*; diff --git a/crates/kitsune_p2p/bootstrap/src/lib.rs b/crates/kitsune_p2p/bootstrap/src/lib.rs index 5f7638f..261e390 100644 --- a/crates/kitsune_p2p/bootstrap/src/lib.rs +++ b/crates/kitsune_p2p/bootstrap/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::net::SocketAddr; use std::sync::atomic::AtomicUsize; diff --git a/crates/kitsune_p2p/bootstrap/src/main.rs b/crates/kitsune_p2p/bootstrap/src/main.rs index 4fa365c..722e562 100644 --- a/crates/kitsune_p2p/bootstrap/src/main.rs +++ b/crates/kitsune_p2p/bootstrap/src/main.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use tokio::sync::oneshot; #[tokio::main] diff --git a/crates/kitsune_p2p/bootstrap/src/now.rs b/crates/kitsune_p2p/bootstrap/src/now.rs index 4262edd..08945e0 100644 --- a/crates/kitsune_p2p/bootstrap/src/now.rs +++ b/crates/kitsune_p2p/bootstrap/src/now.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; use warp::Filter; diff --git a/crates/kitsune_p2p/bootstrap/src/put.rs b/crates/kitsune_p2p/bootstrap/src/put.rs index 07edc76..978a979 100644 --- a/crates/kitsune_p2p/bootstrap/src/put.rs +++ b/crates/kitsune_p2p/bootstrap/src/put.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::store::Store; use super::*; diff --git a/crates/kitsune_p2p/bootstrap/src/random.rs b/crates/kitsune_p2p/bootstrap/src/random.rs index ca7507a..e36aec6 100644 --- a/crates/kitsune_p2p/bootstrap/src/random.rs +++ b/crates/kitsune_p2p/bootstrap/src/random.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::store::Store; use super::*; diff --git a/crates/kitsune_p2p/bootstrap/src/store.rs b/crates/kitsune_p2p/bootstrap/src/store.rs index bc7921b..c5a85ac 100644 --- a/crates/kitsune_p2p/bootstrap/src/store.rs +++ b/crates/kitsune_p2p/bootstrap/src/store.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::{collections::HashMap, sync::Arc}; use kitsune_p2p_types::{ diff --git a/crates/kitsune_p2p/direct/Cargo.toml b/crates/kitsune_p2p/direct/Cargo.toml index e65097d..771096d 100644 --- a/crates/kitsune_p2p/direct/Cargo.toml +++ b/crates/kitsune_p2p/direct/Cargo.toml @@ -2,7 +2,7 @@ name = "kitsune_p2p_direct" version = "0.0.1" description = "Kitsune P2p Direct Application Framework" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/kitsune_p2p_direct" diff --git a/crates/kitsune_p2p/direct/examples/srv-echo.rs b/crates/kitsune_p2p/direct/examples/srv-echo.rs index eae59ac..caf0f26 100644 --- a/crates/kitsune_p2p/direct/examples/srv-echo.rs +++ b/crates/kitsune_p2p/direct/examples/srv-echo.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use futures::stream::StreamExt; use kitsune_p2p_direct::prelude::*; diff --git a/crates/kitsune_p2p/direct/src/bin/kd/cmd_node.rs b/crates/kitsune_p2p/direct/src/bin/kd/cmd_node.rs index 13caf64..5621e22 100644 --- a/crates/kitsune_p2p/direct/src/bin/kd/cmd_node.rs +++ b/crates/kitsune_p2p/direct/src/bin/kd/cmd_node.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; use futures::stream::StreamExt; diff --git a/crates/kitsune_p2p/direct/src/bin/kd/cmd_proxy.rs b/crates/kitsune_p2p/direct/src/bin/kd/cmd_proxy.rs index ce3535e..e569bd8 100644 --- a/crates/kitsune_p2p/direct/src/bin/kd/cmd_proxy.rs +++ b/crates/kitsune_p2p/direct/src/bin/kd/cmd_proxy.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; pub(crate) async fn run(_opt: KdOptProxy) -> KdResult<()> { diff --git a/crates/kitsune_p2p/direct/src/bin/kd/main.rs b/crates/kitsune_p2p/direct/src/bin/kd/main.rs index 89f1014..ea58402 100644 --- a/crates/kitsune_p2p/direct/src/bin/kd/main.rs +++ b/crates/kitsune_p2p/direct/src/bin/kd/main.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use kitsune_p2p_direct::prelude::*; use structopt::StructOpt; diff --git a/crates/kitsune_p2p/direct/src/handle_ws.rs b/crates/kitsune_p2p/direct/src/handle_ws.rs index f3d20b5..81de057 100644 --- a/crates/kitsune_p2p/direct/src/handle_ws.rs +++ b/crates/kitsune_p2p/direct/src/handle_ws.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::types::handle::*; use crate::*; use futures::future::{BoxFuture, FutureExt}; diff --git a/crates/kitsune_p2p/direct/src/lib.rs b/crates/kitsune_p2p/direct/src/lib.rs index 39707e3..80949ae 100644 --- a/crates/kitsune_p2p/direct/src/lib.rs +++ b/crates/kitsune_p2p/direct/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Kitsune P2p Direct Application Framework #![deny(warnings)] #![deny(missing_docs)] diff --git a/crates/kitsune_p2p/direct/src/persist_mem.rs b/crates/kitsune_p2p/direct/src/persist_mem.rs index d825c81..2af94b7 100644 --- a/crates/kitsune_p2p/direct/src/persist_mem.rs +++ b/crates/kitsune_p2p/direct/src/persist_mem.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! in-memory persistence module for kitsune direct use crate::types::metric_store::KdMetricStore; diff --git a/crates/kitsune_p2p/direct/src/srv.rs b/crates/kitsune_p2p/direct/src/srv.rs index d850c66..399fe92 100644 --- a/crates/kitsune_p2p/direct/src/srv.rs +++ b/crates/kitsune_p2p/direct/src/srv.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::dependencies::tracing; use crate::*; diff --git a/crates/kitsune_p2p/direct/src/test.rs b/crates/kitsune_p2p/direct/src/test.rs index f2ccc08..8ebffc7 100644 --- a/crates/kitsune_p2p/direct/src/test.rs +++ b/crates/kitsune_p2p/direct/src/test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::prelude::*; use futures::stream::StreamExt; use kitsune_p2p_direct_api::kd_sys_kind::{self, *}; diff --git a/crates/kitsune_p2p/direct/src/types.rs b/crates/kitsune_p2p/direct/src/types.rs index a1a7288..3b5b41f 100644 --- a/crates/kitsune_p2p/direct/src/types.rs +++ b/crates/kitsune_p2p/direct/src/types.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! kdirect types pub mod direct; diff --git a/crates/kitsune_p2p/direct/src/types/direct.rs b/crates/kitsune_p2p/direct/src/types/direct.rs index e5a275e..73b920f 100644 --- a/crates/kitsune_p2p/direct/src/types/direct.rs +++ b/crates/kitsune_p2p/direct/src/types/direct.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! kdirect entrypoint type use crate::*; diff --git a/crates/kitsune_p2p/direct/src/types/handle.rs b/crates/kitsune_p2p/direct/src/types/handle.rs index fcbd0a5..fd74b05 100644 --- a/crates/kitsune_p2p/direct/src/types/handle.rs +++ b/crates/kitsune_p2p/direct/src/types/handle.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! kdirect api type use crate::*; diff --git a/crates/kitsune_p2p/direct/src/types/kdagent.rs b/crates/kitsune_p2p/direct/src/types/kdagent.rs index f7b39b9..520178c 100644 --- a/crates/kitsune_p2p/direct/src/types/kdagent.rs +++ b/crates/kitsune_p2p/direct/src/types/kdagent.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! kdirect kdagent type use crate::*; diff --git a/crates/kitsune_p2p/direct/src/types/kdentry.rs b/crates/kitsune_p2p/direct/src/types/kdentry.rs index a085751..7761170 100644 --- a/crates/kitsune_p2p/direct/src/types/kdentry.rs +++ b/crates/kitsune_p2p/direct/src/types/kdentry.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! kdirect kdentry type use crate::*; diff --git a/crates/kitsune_p2p/direct/src/types/kdhash.rs b/crates/kitsune_p2p/direct/src/types/kdhash.rs index f14830e..23c0ac0 100644 --- a/crates/kitsune_p2p/direct/src/types/kdhash.rs +++ b/crates/kitsune_p2p/direct/src/types/kdhash.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! kdirect kdhash type use crate::*; diff --git a/crates/kitsune_p2p/direct/src/types/metric_store.rs b/crates/kitsune_p2p/direct/src/types/metric_store.rs index 784ede2..5682bb4 100644 --- a/crates/kitsune_p2p/direct/src/types/metric_store.rs +++ b/crates/kitsune_p2p/direct/src/types/metric_store.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! An in-memory implementation of a metric store. //! A real implementation would use a database. diff --git a/crates/kitsune_p2p/direct/src/types/persist.rs b/crates/kitsune_p2p/direct/src/types/persist.rs index 1bae4cb..573b00b 100644 --- a/crates/kitsune_p2p/direct/src/types/persist.rs +++ b/crates/kitsune_p2p/direct/src/types/persist.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! kdirect persist type use crate::*; diff --git a/crates/kitsune_p2p/direct/src/types/srv.rs b/crates/kitsune_p2p/direct/src/types/srv.rs index c408a91..fa7e84a 100644 --- a/crates/kitsune_p2p/direct/src/types/srv.rs +++ b/crates/kitsune_p2p/direct/src/types/srv.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! kdirect srv type use crate::*; diff --git a/crates/kitsune_p2p/direct/src/v1.rs b/crates/kitsune_p2p/direct/src/v1.rs index 98195e5..32beb91 100644 --- a/crates/kitsune_p2p/direct/src/v1.rs +++ b/crates/kitsune_p2p/direct/src/v1.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(clippy::field_reassign_with_default)] use crate::prelude::*; use crate::*; diff --git a/crates/kitsune_p2p/direct_api/Cargo.toml b/crates/kitsune_p2p/direct_api/Cargo.toml index 858d5e7..d8bf9da 100644 --- a/crates/kitsune_p2p/direct_api/Cargo.toml +++ b/crates/kitsune_p2p/direct_api/Cargo.toml @@ -2,7 +2,7 @@ name = "kitsune_p2p_direct_api" version = "0.0.1" description = "Kitsune P2p Direct Application Framework Test Harness Common API Types" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/kitsune_p2p_direct_api" diff --git a/crates/kitsune_p2p/direct_api/src/kd_sys_kind.rs b/crates/kitsune_p2p/direct_api/src/kd_sys_kind.rs index 814c87d..4cf5316 100644 --- a/crates/kitsune_p2p/direct_api/src/kd_sys_kind.rs +++ b/crates/kitsune_p2p/direct_api/src/kd_sys_kind.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! kdirect kdsyskind types use crate::*; diff --git a/crates/kitsune_p2p/direct_api/src/kdagent.rs b/crates/kitsune_p2p/direct_api/src/kdagent.rs index 7fa7b13..f7e7203 100644 --- a/crates/kitsune_p2p/direct_api/src/kdagent.rs +++ b/crates/kitsune_p2p/direct_api/src/kdagent.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! kdirect kdagent type use crate::*; diff --git a/crates/kitsune_p2p/direct_api/src/kdapi.rs b/crates/kitsune_p2p/direct_api/src/kdapi.rs index 506f7ad..051e6e6 100644 --- a/crates/kitsune_p2p/direct_api/src/kdapi.rs +++ b/crates/kitsune_p2p/direct_api/src/kdapi.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! kdirect kdapi types use crate::*; diff --git a/crates/kitsune_p2p/direct_api/src/kdentry.rs b/crates/kitsune_p2p/direct_api/src/kdentry.rs index 6e8cc19..9c06d3c 100644 --- a/crates/kitsune_p2p/direct_api/src/kdentry.rs +++ b/crates/kitsune_p2p/direct_api/src/kdentry.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! kdirect kdentry type use crate::*; diff --git a/crates/kitsune_p2p/direct_api/src/kderror.rs b/crates/kitsune_p2p/direct_api/src/kderror.rs index 74617d0..62f1086 100644 --- a/crates/kitsune_p2p/direct_api/src/kderror.rs +++ b/crates/kitsune_p2p/direct_api/src/kderror.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! kdirect kderror type use crate::*; diff --git a/crates/kitsune_p2p/direct_api/src/kdhash.rs b/crates/kitsune_p2p/direct_api/src/kdhash.rs index c24900f..8d1c4d8 100644 --- a/crates/kitsune_p2p/direct_api/src/kdhash.rs +++ b/crates/kitsune_p2p/direct_api/src/kdhash.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! kdirect kdhash type use crate::*; diff --git a/crates/kitsune_p2p/direct_api/src/lib.rs b/crates/kitsune_p2p/direct_api/src/lib.rs index b7b9806..f89927a 100644 --- a/crates/kitsune_p2p/direct_api/src/lib.rs +++ b/crates/kitsune_p2p/direct_api/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Kitsune P2p Direct Application Framework Test Harness Common API Types #![deny(warnings)] #![deny(missing_docs)] diff --git a/crates/kitsune_p2p/direct_test/Cargo.toml b/crates/kitsune_p2p/direct_test/Cargo.toml index 4748a9b..760764f 100644 --- a/crates/kitsune_p2p/direct_test/Cargo.toml +++ b/crates/kitsune_p2p/direct_test/Cargo.toml @@ -2,7 +2,7 @@ name = "kitsune_p2p_direct_test" version = "0.0.1" description = "Kitsune P2p Direct Application Framework Test Harness" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/kitsune_p2p_direct_test" diff --git a/crates/kitsune_p2p/direct_test/src/bin/direct-test-local-periodic.rs b/crates/kitsune_p2p/direct_test/src/bin/direct-test-local-periodic.rs index d3193a0..b87333d 100644 --- a/crates/kitsune_p2p/direct_test/src/bin/direct-test-local-periodic.rs +++ b/crates/kitsune_p2p/direct_test/src/bin/direct-test-local-periodic.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(clippy::field_reassign_with_default)] use futures::future::FutureExt; use kitsune_p2p_direct::dependencies::*; diff --git a/crates/kitsune_p2p/direct_test/src/lib.rs b/crates/kitsune_p2p/direct_test/src/lib.rs index e1e05fa..93c5403 100644 --- a/crates/kitsune_p2p/direct_test/src/lib.rs +++ b/crates/kitsune_p2p/direct_test/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Kitsune P2p Direct Application Framework Test Harness #![deny(warnings)] #![deny(missing_docs)] diff --git a/crates/kitsune_p2p/kitsune_p2p/Cargo.toml b/crates/kitsune_p2p/kitsune_p2p/Cargo.toml index 98f9e83..11c1cb5 100644 --- a/crates/kitsune_p2p/kitsune_p2p/Cargo.toml +++ b/crates/kitsune_p2p/kitsune_p2p/Cargo.toml @@ -2,7 +2,7 @@ name = "kitsune_p2p" version = "0.0.1" description = "p2p / sgd communication framework" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/kitsune_p2p" diff --git a/crates/kitsune_p2p/kitsune_p2p/src/config.rs b/crates/kitsune_p2p/kitsune_p2p/src/config.rs index 1ad78ce..2358044 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/config.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/config.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use kitsune_p2p_types::config::KitsuneP2pTuningParams; use kitsune_p2p_types::tx2::tx2_utils::*; use kitsune_p2p_types::*; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/fixt.rs b/crates/kitsune_p2p/kitsune_p2p/src/fixt.rs index 158889e..6e43445 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/fixt.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/fixt.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Fixturator definitions for kitsune_p2p. use crate::agent_store::AgentInfoSigned; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/gossip.rs b/crates/kitsune_p2p/kitsune_p2p/src/gossip.rs index cfbae28..fae5e17 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/gossip.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/gossip.rs @@ -1 +1,4 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + pub mod simple_bloom; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom.rs b/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom.rs index e565e11..704d216 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::agent_store::AgentInfoSigned; use crate::event::MetricQuery; use crate::event::MetricQueryAnswer; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_1_check_inner.rs b/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_1_check_inner.rs index c3cf9c1..4253d27 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_1_check_inner.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_1_check_inner.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::*; use kitsune_p2p_types::*; use observability::tracing; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_2_local_sync_inner.rs b/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_2_local_sync_inner.rs index 63ad8e9..b567f63 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_2_local_sync_inner.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_2_local_sync_inner.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; use kitsune_p2p_types::sgd_arc::*; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_3_initiate_inner.rs b/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_3_initiate_inner.rs index 23069ee..a779d2b 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_3_initiate_inner.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_3_initiate_inner.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; impl SimpleBloomMod { diff --git a/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_4_com_loop_inner.rs b/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_4_com_loop_inner.rs index 9050e77..7f31fff 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_4_com_loop_inner.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/gossip/simple_bloom/step_4_com_loop_inner.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; use kitsune_p2p_types::codec::*; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/lib.rs b/crates/kitsune_p2p/kitsune_p2p/src/lib.rs index 671a6d2..1f11721 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/lib.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![deny(missing_docs)] #![allow(rustdoc::bare_urls)] #![allow(rustdoc::invalid_html_tags)] diff --git a/crates/kitsune_p2p/kitsune_p2p/src/spawn.rs b/crates/kitsune_p2p/kitsune_p2p/src/spawn.rs index e005905..bb68605 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/spawn.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/spawn.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::actor::*; use crate::event::*; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor.rs b/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor.rs index 5e7be36..93a52ca 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + // this is largely a passthrough that routes to a specific space handler use crate::actor; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor/bootstrap.rs b/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor/bootstrap.rs index 0f9343c..df6012d 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor/bootstrap.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor/bootstrap.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::types::agent_store::AgentInfoSigned; use kitsune_p2p_types::bootstrap::RandomQuery; use once_cell::sync::Lazy; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor/discover.rs b/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor/discover.rs index ae2bacc..018faef 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor/discover.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor/discover.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(dead_code)] use super::*; use ghost_actor::dependencies::must_future::MustBoxFuture; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor/space.rs b/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor/space.rs index d5e20a2..4b222b1 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor/space.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/spawn/actor/space.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; use crate::types::gossip::GossipModule; use base64::{engine::general_purpose::URL_SAFE_NO_PAD, Engine}; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/test.rs b/crates/kitsune_p2p/kitsune_p2p/src/test.rs index 0920483..a46d3a1 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/test.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #[cfg(test)] mod tests { use crate::test_util::*; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/test_util.rs b/crates/kitsune_p2p/kitsune_p2p/src/test_util.rs index f3fda13..3433964 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/test_util.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/test_util.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Utilities to make kitsune testing a little more sane. use crate::types::actor::*; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/test_util/harness_actor.rs b/crates/kitsune_p2p/kitsune_p2p/src/test_util/harness_actor.rs index 595dc69..c78d8a4 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/test_util/harness_actor.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/test_util/harness_actor.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; ghost_actor::ghost_chan! { diff --git a/crates/kitsune_p2p/kitsune_p2p/src/test_util/harness_agent.rs b/crates/kitsune_p2p/kitsune_p2p/src/test_util/harness_agent.rs index 9a07146..d81eb2d 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/test_util/harness_agent.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/test_util/harness_agent.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; ghost_actor::ghost_chan! { diff --git a/crates/kitsune_p2p/kitsune_p2p/src/test_util/harness_event.rs b/crates/kitsune_p2p/kitsune_p2p/src/test_util/harness_event.rs index de80504..dc50147 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/test_util/harness_event.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/test_util/harness_event.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::*; use futures::sink::SinkExt; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/test_util/metric_store.rs b/crates/kitsune_p2p/kitsune_p2p/src/test_util/metric_store.rs index fa4f3d4..c6ab2bc 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/test_util/metric_store.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/test_util/metric_store.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! An in-memory implementation of a metric store. //! A real implementation would use a database. // NB: this is a copy of `KdMetricStore` from `kitsune_p2p_direct`, which diff --git a/crates/kitsune_p2p/kitsune_p2p/src/types.rs b/crates/kitsune_p2p/kitsune_p2p/src/types.rs index ef9ec76..5445474 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/types.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/types.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::sync::Arc; /// KitsuneP2p Error Type. diff --git a/crates/kitsune_p2p/kitsune_p2p/src/types/actor.rs b/crates/kitsune_p2p/kitsune_p2p/src/types/actor.rs index 0292eac..31891d8 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/types/actor.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/types/actor.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Definitions related to the KitsuneP2p peer-to-peer / sgd communications actor. use std::sync::Arc; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/types/event.rs b/crates/kitsune_p2p/kitsune_p2p/src/types/event.rs index 0e151ce..60129a6 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/types/event.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/types/event.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Definitions for events emited from the KitsuneP2p actor. use crate::types::agent_store::AgentInfoSigned; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/types/gossip.rs b/crates/kitsune_p2p/kitsune_p2p/src/types/gossip.rs index ee1686f..9ab2b7d 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/types/gossip.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/types/gossip.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::types::*; use kitsune_p2p_types::config::*; use kitsune_p2p_types::tx2::tx2_api::*; diff --git a/crates/kitsune_p2p/kitsune_p2p/src/types/metrics.rs b/crates/kitsune_p2p/kitsune_p2p/src/types/metrics.rs index 35b49e4..934014f 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/types/metrics.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/types/metrics.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ghost_actor::dependencies::tracing; observability::metrics!( diff --git a/crates/kitsune_p2p/kitsune_p2p/src/types/wire.rs b/crates/kitsune_p2p/kitsune_p2p/src/types/wire.rs index 2727fb3..110eb3c 100644 --- a/crates/kitsune_p2p/kitsune_p2p/src/types/wire.rs +++ b/crates/kitsune_p2p/kitsune_p2p/src/types/wire.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! KitsuneP2p Wire Protocol Encoding Decoding use crate::types::*; diff --git a/crates/kitsune_p2p/mdns/Cargo.toml b/crates/kitsune_p2p/mdns/Cargo.toml index ed33054..9116980 100644 --- a/crates/kitsune_p2p/mdns/Cargo.toml +++ b/crates/kitsune_p2p/mdns/Cargo.toml @@ -2,7 +2,7 @@ name = "kitsune_p2p_mdns" version = "0.0.1" description = "p2p / mdns discovery framework" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/kitsune_p2p_mdns" diff --git a/crates/kitsune_p2p/mdns/examples/broadcast.rs b/crates/kitsune_p2p/mdns/examples/broadcast.rs index 73e7c03..a88700e 100644 --- a/crates/kitsune_p2p/mdns/examples/broadcast.rs +++ b/crates/kitsune_p2p/mdns/examples/broadcast.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use kitsune_p2p_mdns::*; #[tokio::main(flavor = "multi_thread")] diff --git a/crates/kitsune_p2p/mdns/examples/discover.rs b/crates/kitsune_p2p/mdns/examples/discover.rs index 6d299b5..def3488 100644 --- a/crates/kitsune_p2p/mdns/examples/discover.rs +++ b/crates/kitsune_p2p/mdns/examples/discover.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use futures_util::{self, pin_mut, stream::StreamExt}; use kitsune_p2p_mdns::*; diff --git a/crates/kitsune_p2p/mdns/src/lib.rs b/crates/kitsune_p2p/mdns/src/lib.rs index f7fb0a9..b3845fa 100644 --- a/crates/kitsune_p2p/mdns/src/lib.rs +++ b/crates/kitsune_p2p/mdns/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Crate for discovering AIngle peers over MDNS //! Works by broadcasting a service named `AI_SERVICE_NAME` //! and adding base64 encoded data in a TXT record diff --git a/crates/kitsune_p2p/proxy/Cargo.toml b/crates/kitsune_p2p/proxy/Cargo.toml index 89e0572..0498da9 100644 --- a/crates/kitsune_p2p/proxy/Cargo.toml +++ b/crates/kitsune_p2p/proxy/Cargo.toml @@ -2,7 +2,7 @@ name = "kitsune_p2p_proxy" version = "0.0.1" description = "Proxy transport module for kitsune-p2p" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/kitsune_p2p_proxy" diff --git a/crates/kitsune_p2p/proxy/benches/old_proxy_thru.rs b/crates/kitsune_p2p/proxy/benches/old_proxy_thru.rs index 6765fc7..834a283 100644 --- a/crates/kitsune_p2p/proxy/benches/old_proxy_thru.rs +++ b/crates/kitsune_p2p/proxy/benches/old_proxy_thru.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use criterion::{/*black_box,*/ criterion_group, criterion_main, Criterion}; use futures::stream::StreamExt; diff --git a/crates/kitsune_p2p/proxy/benches/thru.rs b/crates/kitsune_p2p/proxy/benches/thru.rs index 8b2b6be..fdb0c0c 100644 --- a/crates/kitsune_p2p/proxy/benches/thru.rs +++ b/crates/kitsune_p2p/proxy/benches/thru.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use criterion::{/*black_box,*/ criterion_group, criterion_main, Criterion}; use futures::stream::StreamExt; use kitsune_p2p_proxy::tx2::*; diff --git a/crates/kitsune_p2p/proxy/examples/cli-chat.rs b/crates/kitsune_p2p/proxy/examples/cli-chat.rs index ec849bc..805f441 100644 --- a/crates/kitsune_p2p/proxy/examples/cli-chat.rs +++ b/crates/kitsune_p2p/proxy/examples/cli-chat.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crossterm::ExecutableCommand; use futures::stream::{BoxStream, StreamExt}; use kitsune_p2p_proxy::tx2::*; diff --git a/crates/kitsune_p2p/proxy/src/bin/kitsune-p2p-proxy/main.rs b/crates/kitsune_p2p/proxy/src/bin/kitsune-p2p-proxy/main.rs index 11484d2..5a336ea 100644 --- a/crates/kitsune_p2p/proxy/src/bin/kitsune-p2p-proxy/main.rs +++ b/crates/kitsune_p2p/proxy/src/bin/kitsune-p2p-proxy/main.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use futures::stream::StreamExt; use ghost_actor::dependencies::tracing; use kitsune_p2p_proxy::*; diff --git a/crates/kitsune_p2p/proxy/src/bin/kitsune-p2p-proxy/opt.rs b/crates/kitsune_p2p/proxy/src/bin/kitsune-p2p-proxy/opt.rs index a996e95..47e8c26 100644 --- a/crates/kitsune_p2p/proxy/src/bin/kitsune-p2p-proxy/opt.rs +++ b/crates/kitsune_p2p/proxy/src/bin/kitsune-p2p-proxy/opt.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + /// Option Parsing #[derive(structopt::StructOpt, Debug)] #[structopt(name = "kitsune-p2p-proxy")] diff --git a/crates/kitsune_p2p/proxy/src/bin/kitsune-p2p-tx2-proxy.rs b/crates/kitsune_p2p/proxy/src/bin/kitsune-p2p-tx2-proxy.rs index 0c0609c..762342d 100644 --- a/crates/kitsune_p2p/proxy/src/bin/kitsune-p2p-tx2-proxy.rs +++ b/crates/kitsune_p2p/proxy/src/bin/kitsune-p2p-tx2-proxy.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use futures::stream::StreamExt; use kitsune_p2p_proxy::tx2::*; use kitsune_p2p_transport_quic::tx2::*; diff --git a/crates/kitsune_p2p/proxy/src/bin/proxy-cli.rs b/crates/kitsune_p2p/proxy/src/bin/proxy-cli.rs index 33467fd..c4b7bb7 100644 --- a/crates/kitsune_p2p/proxy/src/bin/proxy-cli.rs +++ b/crates/kitsune_p2p/proxy/src/bin/proxy-cli.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use futures::stream::StreamExt; use kitsune_p2p_proxy::*; use kitsune_p2p_transport_quic::*; diff --git a/crates/kitsune_p2p/proxy/src/bin/proxy-stress.rs b/crates/kitsune_p2p/proxy/src/bin/proxy-stress.rs index 47f4b1f..d76c0af 100644 --- a/crates/kitsune_p2p/proxy/src/bin/proxy-stress.rs +++ b/crates/kitsune_p2p/proxy/src/bin/proxy-stress.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use futures::{sink::SinkExt, stream::StreamExt}; use ghost_actor::dependencies::tracing; use kitsune_p2p_proxy::*; diff --git a/crates/kitsune_p2p/proxy/src/bin/proxy-tx2-cli.rs b/crates/kitsune_p2p/proxy/src/bin/proxy-tx2-cli.rs index 173611a..43de256 100644 --- a/crates/kitsune_p2p/proxy/src/bin/proxy-tx2-cli.rs +++ b/crates/kitsune_p2p/proxy/src/bin/proxy-tx2-cli.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use futures::stream::StreamExt; use kitsune_p2p_proxy::tx2::*; use kitsune_p2p_transport_quic::tx2::*; diff --git a/crates/kitsune_p2p/proxy/src/config.rs b/crates/kitsune_p2p/proxy/src/config.rs index 9cb02c8..da4deea 100644 --- a/crates/kitsune_p2p/proxy/src/config.rs +++ b/crates/kitsune_p2p/proxy/src/config.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::*; pub use kitsune_p2p_types::tls::TlsConfig; diff --git a/crates/kitsune_p2p/proxy/src/inner_listen.rs b/crates/kitsune_p2p/proxy/src/inner_listen.rs index 4cd650d..b7715ef 100644 --- a/crates/kitsune_p2p/proxy/src/inner_listen.rs +++ b/crates/kitsune_p2p/proxy/src/inner_listen.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::*; use futures::sink::SinkExt; use futures::stream::StreamExt; diff --git a/crates/kitsune_p2p/proxy/src/lib.rs b/crates/kitsune_p2p/proxy/src/lib.rs index f044f51..608ae3c 100644 --- a/crates/kitsune_p2p/proxy/src/lib.rs +++ b/crates/kitsune_p2p/proxy/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![deny(missing_docs)] //! Proxy transport module for kitsune-p2p diff --git a/crates/kitsune_p2p/proxy/src/proxy_url.rs b/crates/kitsune_p2p/proxy/src/proxy_url.rs index 0b63679..9e11b9b 100644 --- a/crates/kitsune_p2p/proxy/src/proxy_url.rs +++ b/crates/kitsune_p2p/proxy/src/proxy_url.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Utilities for dealing with proxy urls. use crate::*; diff --git a/crates/kitsune_p2p/proxy/src/tls_cli.rs b/crates/kitsune_p2p/proxy/src/tls_cli.rs index efc1af4..dfee848 100644 --- a/crates/kitsune_p2p/proxy/src/tls_cli.rs +++ b/crates/kitsune_p2p/proxy/src/tls_cli.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::*; use futures::sink::SinkExt; use futures::stream::StreamExt; diff --git a/crates/kitsune_p2p/proxy/src/tls_srv.rs b/crates/kitsune_p2p/proxy/src/tls_srv.rs index b935b6c..c10a9ab 100644 --- a/crates/kitsune_p2p/proxy/src/tls_srv.rs +++ b/crates/kitsune_p2p/proxy/src/tls_srv.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::*; use futures::sink::SinkExt; use futures::stream::StreamExt; diff --git a/crates/kitsune_p2p/proxy/src/tls_tests.rs b/crates/kitsune_p2p/proxy/src/tls_tests.rs index 5dcd74d..a9595d4 100644 --- a/crates/kitsune_p2p/proxy/src/tls_tests.rs +++ b/crates/kitsune_p2p/proxy/src/tls_tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::*; use futures::stream::StreamExt; use ghost_actor::dependencies::tracing; diff --git a/crates/kitsune_p2p/proxy/src/tx2.rs b/crates/kitsune_p2p/proxy/src/tx2.rs index 4fda7ff..ebc3f7e 100644 --- a/crates/kitsune_p2p/proxy/src/tx2.rs +++ b/crates/kitsune_p2p/proxy/src/tx2.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(clippy::new_ret_no_self)] #![allow(clippy::blocks_in_conditions)] //! Next-gen performance kitsune transport proxy diff --git a/crates/kitsune_p2p/proxy/src/wire.rs b/crates/kitsune_p2p/proxy/src/wire.rs index 8a2dff8..a8faa01 100644 --- a/crates/kitsune_p2p/proxy/src/wire.rs +++ b/crates/kitsune_p2p/proxy/src/wire.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! KitsuneP2p Proxy Wire Protocol Items. use crate::*; diff --git a/crates/kitsune_p2p/proxy/src/wire_read.rs b/crates/kitsune_p2p/proxy/src/wire_read.rs index 0cb74c1..a8ea078 100644 --- a/crates/kitsune_p2p/proxy/src/wire_read.rs +++ b/crates/kitsune_p2p/proxy/src/wire_read.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::*; use futures::sink::SinkExt; use futures::stream::StreamExt; diff --git a/crates/kitsune_p2p/proxy/src/wire_write.rs b/crates/kitsune_p2p/proxy/src/wire_write.rs index 2ab4231..a5ce270 100644 --- a/crates/kitsune_p2p/proxy/src/wire_write.rs +++ b/crates/kitsune_p2p/proxy/src/wire_write.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::*; use futures::sink::SinkExt; use futures::stream::StreamExt; diff --git a/crates/kitsune_p2p/proxy/tests/no_proxy.rs b/crates/kitsune_p2p/proxy/tests/no_proxy.rs index 1723ab2..1841eee 100644 --- a/crates/kitsune_p2p/proxy/tests/no_proxy.rs +++ b/crates/kitsune_p2p/proxy/tests/no_proxy.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use ghost_actor::dependencies::tracing; use kitsune_p2p_proxy::*; use kitsune_p2p_types::config::KitsuneP2pTuningParams; diff --git a/crates/kitsune_p2p/proxy/tests/proxy_integration.rs b/crates/kitsune_p2p/proxy/tests/proxy_integration.rs index fb3dd1f..0cac408 100644 --- a/crates/kitsune_p2p/proxy/tests/proxy_integration.rs +++ b/crates/kitsune_p2p/proxy/tests/proxy_integration.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use futures::stream::StreamExt; use ghost_actor::dependencies::tracing; use kitsune_p2p_proxy::*; diff --git a/crates/kitsune_p2p/proxy/tests/srv_cli_dump_test.rs b/crates/kitsune_p2p/proxy/tests/srv_cli_dump_test.rs index 6472267..08dadf0 100644 --- a/crates/kitsune_p2p/proxy/tests/srv_cli_dump_test.rs +++ b/crates/kitsune_p2p/proxy/tests/srv_cli_dump_test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::io::Read; fn run_srv() -> (String, std::process::Child) { diff --git a/crates/kitsune_p2p/proxy/tests/tx2_con_up_down.rs b/crates/kitsune_p2p/proxy/tests/tx2_con_up_down.rs index 23f35c9..fb1b0c1 100644 --- a/crates/kitsune_p2p/proxy/tests/tx2_con_up_down.rs +++ b/crates/kitsune_p2p/proxy/tests/tx2_con_up_down.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use futures::stream::StreamExt; use kitsune_p2p_proxy::tx2::*; use kitsune_p2p_proxy::ProxyUrl; diff --git a/crates/kitsune_p2p/transport_quic/Cargo.toml b/crates/kitsune_p2p/transport_quic/Cargo.toml index 5e5307d..74ea4d9 100644 --- a/crates/kitsune_p2p/transport_quic/Cargo.toml +++ b/crates/kitsune_p2p/transport_quic/Cargo.toml @@ -2,7 +2,7 @@ name = "kitsune_p2p_transport_quic" version = "0.0.1" description = "QUIC transport module for kitsune-p2p" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/kitsune_p2p_transport_quic" diff --git a/crates/kitsune_p2p/transport_quic/src/config.rs b/crates/kitsune_p2p/transport_quic/src/config.rs index db4d1d2..b181ec6 100644 --- a/crates/kitsune_p2p/transport_quic/src/config.rs +++ b/crates/kitsune_p2p/transport_quic/src/config.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::*; /// Configuration struct for spawn_transport_listener_quic() diff --git a/crates/kitsune_p2p/transport_quic/src/lib.rs b/crates/kitsune_p2p/transport_quic/src/lib.rs index d1f2b7e..9172114 100644 --- a/crates/kitsune_p2p/transport_quic/src/lib.rs +++ b/crates/kitsune_p2p/transport_quic/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![deny(missing_docs)] //! QUIC transport module for kitsune-p2p diff --git a/crates/kitsune_p2p/transport_quic/src/listener.rs b/crates/kitsune_p2p/transport_quic/src/listener.rs index 5002f68..f229197 100644 --- a/crates/kitsune_p2p/transport_quic/src/listener.rs +++ b/crates/kitsune_p2p/transport_quic/src/listener.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::*; use futures::future::FutureExt; use futures::sink::SinkExt; diff --git a/crates/kitsune_p2p/transport_quic/src/test.rs b/crates/kitsune_p2p/transport_quic/src/test.rs index 137447b..3b1334f 100644 --- a/crates/kitsune_p2p/transport_quic/src/test.rs +++ b/crates/kitsune_p2p/transport_quic/src/test.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #[cfg(test)] mod tests { use crate::*; diff --git a/crates/kitsune_p2p/transport_quic/src/tx2.rs b/crates/kitsune_p2p/transport_quic/src/tx2.rs index b01d1a3..87ae325 100644 --- a/crates/kitsune_p2p/transport_quic/src/tx2.rs +++ b/crates/kitsune_p2p/transport_quic/src/tx2.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(clippy::new_ret_no_self)] //! kitsune tx2 quic transport backend diff --git a/crates/kitsune_p2p/types/Cargo.toml b/crates/kitsune_p2p/types/Cargo.toml index b5061b0..e733a5e 100644 --- a/crates/kitsune_p2p/types/Cargo.toml +++ b/crates/kitsune_p2p/types/Cargo.toml @@ -2,7 +2,7 @@ name = "kitsune_p2p_types" version = "0.0.1" description = "types subcrate for kitsune-p2p" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/kitsune_p2p_types" diff --git a/crates/kitsune_p2p/types/benches/api_thru.rs b/crates/kitsune_p2p/types/benches/api_thru.rs index 45d89f4..c229731 100644 --- a/crates/kitsune_p2p/types/benches/api_thru.rs +++ b/crates/kitsune_p2p/types/benches/api_thru.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(irrefutable_let_patterns)] use criterion::{/*black_box,*/ criterion_group, criterion_main, Criterion}; diff --git a/crates/kitsune_p2p/types/examples/codec.rs b/crates/kitsune_p2p/types/examples/codec.rs index 918eea3..fa2d155 100644 --- a/crates/kitsune_p2p/types/examples/codec.rs +++ b/crates/kitsune_p2p/types/examples/codec.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use kitsune_p2p_types::codec::*; use kitsune_p2p_types::*; diff --git a/crates/kitsune_p2p/types/src/agent_info.rs b/crates/kitsune_p2p/types/src/agent_info.rs index 297478c..78c0ec5 100644 --- a/crates/kitsune_p2p/types/src/agent_info.rs +++ b/crates/kitsune_p2p/types/src/agent_info.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Data structures to be stored in the agent/peer database. use crate::bin_types::*; diff --git a/crates/kitsune_p2p/types/src/async_lazy.rs b/crates/kitsune_p2p/types/src/async_lazy.rs index 1f466d3..e8a4ceb 100644 --- a/crates/kitsune_p2p/types/src/async_lazy.rs +++ b/crates/kitsune_p2p/types/src/async_lazy.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! utility for lazy init-ing things use futures::future::{BoxFuture, FutureExt, Shared}; diff --git a/crates/kitsune_p2p/types/src/auto_stream_select.rs b/crates/kitsune_p2p/types/src/auto_stream_select.rs index 4f23467..e147751 100644 --- a/crates/kitsune_p2p/types/src/auto_stream_select.rs +++ b/crates/kitsune_p2p/types/src/auto_stream_select.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::task::Poll::*; /// Item Type for auto_stream_select function. diff --git a/crates/kitsune_p2p/types/src/bin_types.rs b/crates/kitsune_p2p/types/src/bin_types.rs index 87cc9f2..b1a30b4 100644 --- a/crates/kitsune_p2p/types/src/bin_types.rs +++ b/crates/kitsune_p2p/types/src/bin_types.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Binary types, hashes, signatures, etc used by kitsune. use base64::{engine::general_purpose::URL_SAFE_NO_PAD, Engine}; diff --git a/crates/kitsune_p2p/types/src/bootstrap.rs b/crates/kitsune_p2p/types/src/bootstrap.rs index 2700368..d472fc9 100644 --- a/crates/kitsune_p2p/types/src/bootstrap.rs +++ b/crates/kitsune_p2p/types/src/bootstrap.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Types for the bootstrap server use crate::bin_types::{KitsuneBinType, KitsuneSpace}; use std::sync::Arc; diff --git a/crates/kitsune_p2p/types/src/codec.rs b/crates/kitsune_p2p/types/src/codec.rs index 375336f..c3d6c2d 100644 --- a/crates/kitsune_p2p/types/src/codec.rs +++ b/crates/kitsune_p2p/types/src/codec.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Encoding / Decoding utilities. /// Encode a serde::Serialize item as message-pack data to given writer. diff --git a/crates/kitsune_p2p/types/src/config.rs b/crates/kitsune_p2p/types/src/config.rs index 2762fd0..f238a6a 100644 --- a/crates/kitsune_p2p/types/src/config.rs +++ b/crates/kitsune_p2p/types/src/config.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Kitsune Config Tuning Params /// How long kitsune should wait before timing out when joining the network. diff --git a/crates/kitsune_p2p/types/src/lib.rs b/crates/kitsune_p2p/types/src/lib.rs index e1ca852..c81620a 100644 --- a/crates/kitsune_p2p/types/src/lib.rs +++ b/crates/kitsune_p2p/types/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![deny(missing_docs)] //! Types subcrate for kitsune-p2p. diff --git a/crates/kitsune_p2p/types/src/metrics.rs b/crates/kitsune_p2p/types/src/metrics.rs index 4663db5..2dc1ca2 100644 --- a/crates/kitsune_p2p/types/src/metrics.rs +++ b/crates/kitsune_p2p/types/src/metrics.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Utilities for helping with metric tracking. use crate::tracing; diff --git a/crates/kitsune_p2p/types/src/sgd_arc.rs b/crates/kitsune_p2p/types/src/sgd_arc.rs index fcde87f..68dcfab 100644 --- a/crates/kitsune_p2p/types/src/sgd_arc.rs +++ b/crates/kitsune_p2p/types/src/sgd_arc.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! A type for indicating ranges on the sgd arc use derive_more::From; diff --git a/crates/kitsune_p2p/types/src/sgd_arc/gaps.rs b/crates/kitsune_p2p/types/src/sgd_arc/gaps.rs index 9c2651f..d0c07c9 100644 --- a/crates/kitsune_p2p/types/src/sgd_arc/gaps.rs +++ b/crates/kitsune_p2p/types/src/sgd_arc/gaps.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Functions for checking gaps in coverage for tests. use super::*; diff --git a/crates/kitsune_p2p/types/src/sgd_arc/tests.rs b/crates/kitsune_p2p/types/src/sgd_arc/tests.rs index 32fd2d9..941bbb3 100644 --- a/crates/kitsune_p2p/types/src/sgd_arc/tests.rs +++ b/crates/kitsune_p2p/types/src/sgd_arc/tests.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use gaps::check_for_gaps; use gaps::check_redundancy; diff --git a/crates/kitsune_p2p/types/src/timeout.rs b/crates/kitsune_p2p/types/src/timeout.rs index 800a555..2f8b507 100644 --- a/crates/kitsune_p2p/types/src/timeout.rs +++ b/crates/kitsune_p2p/types/src/timeout.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::*; /// Kitsune Timeout diff --git a/crates/kitsune_p2p/types/src/tls.rs b/crates/kitsune_p2p/types/src/tls.rs index b48f735..47ca261 100644 --- a/crates/kitsune_p2p/types/src/tls.rs +++ b/crates/kitsune_p2p/types/src/tls.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! TLS utils for kitsune use crate::config::*; diff --git a/crates/kitsune_p2p/types/src/transport.rs b/crates/kitsune_p2p/types/src/transport.rs index 66a8a24..ce95a9d 100644 --- a/crates/kitsune_p2p/types/src/transport.rs +++ b/crates/kitsune_p2p/types/src/transport.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! A collection of definitions related to remote communication. use futures::future::FutureExt; diff --git a/crates/kitsune_p2p/types/src/transport_mem.rs b/crates/kitsune_p2p/types/src/transport_mem.rs index 9b50c05..0a326c0 100644 --- a/crates/kitsune_p2p/types/src/transport_mem.rs +++ b/crates/kitsune_p2p/types/src/transport_mem.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! A mem-only transport - largely for testing use crate::transport::*; diff --git a/crates/kitsune_p2p/types/src/transport_pool.rs b/crates/kitsune_p2p/types/src/transport_pool.rs index 65fbd9b..67f7638 100644 --- a/crates/kitsune_p2p/types/src/transport_pool.rs +++ b/crates/kitsune_p2p/types/src/transport_pool.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Unify multiple sub-transports into one pool. use crate::transport::*; diff --git a/crates/kitsune_p2p/types/src/tx2.rs b/crates/kitsune_p2p/types/src/tx2.rs index 05086ff..e2bce1f 100644 --- a/crates/kitsune_p2p/types/src/tx2.rs +++ b/crates/kitsune_p2p/types/src/tx2.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Next-gen performance kitsune transport abstractions mod framed; diff --git a/crates/kitsune_p2p/types/src/tx2/framed.rs b/crates/kitsune_p2p/types/src/tx2/framed.rs index f19d4cf..b6ebfdc 100644 --- a/crates/kitsune_p2p/types/src/tx2/framed.rs +++ b/crates/kitsune_p2p/types/src/tx2/framed.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::tx2::tx2_utils::*; use crate::*; use futures::future::{BoxFuture, FutureExt}; diff --git a/crates/kitsune_p2p/types/src/tx2/mem.rs b/crates/kitsune_p2p/types/src/tx2/mem.rs index 718d634..3c63a4f 100644 --- a/crates/kitsune_p2p/types/src/tx2/mem.rs +++ b/crates/kitsune_p2p/types/src/tx2/mem.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(clippy::new_ret_no_self)] #![allow(clippy::never_loop)] diff --git a/crates/kitsune_p2p/types/src/tx2/tx2_adapter.rs b/crates/kitsune_p2p/types/src/tx2/tx2_adapter.rs index 823a24a..65e41eb 100644 --- a/crates/kitsune_p2p/types/src/tx2/tx2_adapter.rs +++ b/crates/kitsune_p2p/types/src/tx2/tx2_adapter.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Types and Traits for writing tx2 adapters. use crate::tx2::tx2_utils::TxUrl; diff --git a/crates/kitsune_p2p/types/src/tx2/tx2_api.rs b/crates/kitsune_p2p/types/src/tx2/tx2_api.rs index 7722783..e44c5ea 100644 --- a/crates/kitsune_p2p/types/src/tx2/tx2_api.rs +++ b/crates/kitsune_p2p/types/src/tx2/tx2_api.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(enum_intrinsics_non_enums)] // these actually *are* enums... //! Usability api for tx2 kitsune transports. diff --git a/crates/kitsune_p2p/types/src/tx2/tx2_pool.rs b/crates/kitsune_p2p/types/src/tx2/tx2_pool.rs index 1be4473..b9f5109 100644 --- a/crates/kitsune_p2p/types/src/tx2/tx2_pool.rs +++ b/crates/kitsune_p2p/types/src/tx2/tx2_pool.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! Abstraction traits / types for tx2 networking transport. use crate::tx2::tx2_adapter::{Tx2ConDir, Uniq}; diff --git a/crates/kitsune_p2p/types/src/tx2/tx2_pool_promote.rs b/crates/kitsune_p2p/types/src/tx2/tx2_pool_promote.rs index 9971b14..2e525c2 100644 --- a/crates/kitsune_p2p/types/src/tx2/tx2_pool_promote.rs +++ b/crates/kitsune_p2p/types/src/tx2/tx2_pool_promote.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(clippy::new_ret_no_self)] #![allow(clippy::manual_async_fn)] #![allow(clippy::too_many_arguments)] diff --git a/crates/kitsune_p2p/types/src/tx2/tx2_utils.rs b/crates/kitsune_p2p/types/src/tx2/tx2_utils.rs index baa8166..20db8e3 100644 --- a/crates/kitsune_p2p/types/src/tx2/tx2_utils.rs +++ b/crates/kitsune_p2p/types/src/tx2/tx2_utils.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(clippy::never_loop)] // using for block breaking //! Utilities to help with developing / testing tx2. diff --git a/crates/kitsune_p2p/types/src/tx2/tx2_utils/active.rs b/crates/kitsune_p2p/types/src/tx2/tx2_utils/active.rs index 3010d94..a1c9c86 100644 --- a/crates/kitsune_p2p/types/src/tx2/tx2_utils/active.rs +++ b/crates/kitsune_p2p/types/src/tx2/tx2_utils/active.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::tx2::tx2_utils::*; use crate::*; use futures::future::FutureExt; diff --git a/crates/kitsune_p2p/types/src/tx2/tx2_utils/latency.rs b/crates/kitsune_p2p/types/src/tx2/tx2_utils/latency.rs index 2c577dc..3e612be 100644 --- a/crates/kitsune_p2p/types/src/tx2/tx2_utils/latency.rs +++ b/crates/kitsune_p2p/types/src/tx2/tx2_utils/latency.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use once_cell::sync::Lazy; /// this is a reference instance in time diff --git a/crates/kitsune_p2p/types/src/tx2/tx2_utils/logic_chan.rs b/crates/kitsune_p2p/types/src/tx2/tx2_utils/logic_chan.rs index f4fb0dc..fadef81 100644 --- a/crates/kitsune_p2p/types/src/tx2/tx2_utils/logic_chan.rs +++ b/crates/kitsune_p2p/types/src/tx2/tx2_utils/logic_chan.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::tx2::tx2_utils::*; use crate::*; use futures::future::{BoxFuture, FutureExt}; diff --git a/crates/kitsune_p2p/types/src/tx2/tx2_utils/mem_chan.rs b/crates/kitsune_p2p/types/src/tx2/tx2_utils/mem_chan.rs index c3a39de..e4da6c5 100644 --- a/crates/kitsune_p2p/types/src/tx2/tx2_utils/mem_chan.rs +++ b/crates/kitsune_p2p/types/src/tx2/tx2_utils/mem_chan.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::tx2::tx2_utils::*; use crate::*; use futures::io::{Error, ErrorKind}; diff --git a/crates/kitsune_p2p/types/src/tx2/tx2_utils/notify_all.rs b/crates/kitsune_p2p/types/src/tx2/tx2_utils/notify_all.rs index 4aec97c..1b1bdfb 100644 --- a/crates/kitsune_p2p/types/src/tx2/tx2_utils/notify_all.rs +++ b/crates/kitsune_p2p/types/src/tx2/tx2_utils/notify_all.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(clippy::blocks_in_conditions)] use crate::tx2::tx2_utils::*; diff --git a/crates/kitsune_p2p/types/src/tx2/tx2_utils/pool_buf.rs b/crates/kitsune_p2p/types/src/tx2/tx2_utils/pool_buf.rs index 7731cce..7c8546d 100644 --- a/crates/kitsune_p2p/types/src/tx2/tx2_utils/pool_buf.rs +++ b/crates/kitsune_p2p/types/src/tx2/tx2_utils/pool_buf.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::cell::RefCell; // TODO - expirement with these values for efficiency. diff --git a/crates/kitsune_p2p/types/src/tx2/tx2_utils/resource_bucket.rs b/crates/kitsune_p2p/types/src/tx2/tx2_utils/resource_bucket.rs index fe9aea1..a382df2 100644 --- a/crates/kitsune_p2p/types/src/tx2/tx2_utils/resource_bucket.rs +++ b/crates/kitsune_p2p/types/src/tx2/tx2_utils/resource_bucket.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::tx2::tx2_utils::*; use crate::*; diff --git a/crates/kitsune_p2p/types/src/tx2/tx2_utils/share.rs b/crates/kitsune_p2p/types/src/tx2/tx2_utils/share.rs index f2fbefd..baa2906 100644 --- a/crates/kitsune_p2p/types/src/tx2/tx2_utils/share.rs +++ b/crates/kitsune_p2p/types/src/tx2/tx2_utils/share.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::*; /// Synchronized droppable share-lock around internal state date. diff --git a/crates/kitsune_p2p/types/src/tx2/tx2_utils/t_chan.rs b/crates/kitsune_p2p/types/src/tx2/tx2_utils/t_chan.rs index 133186b..8f5480d 100644 --- a/crates/kitsune_p2p/types/src/tx2/tx2_utils/t_chan.rs +++ b/crates/kitsune_p2p/types/src/tx2/tx2_utils/t_chan.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::tx2::tx2_utils::*; use crate::*; use std::future::Future; diff --git a/crates/kitsune_p2p/types/src/tx2/tx2_utils/tx_url.rs b/crates/kitsune_p2p/types/src/tx2/tx2_utils/tx_url.rs index c8b7a0e..7b0c8f6 100644 --- a/crates/kitsune_p2p/types/src/tx2/tx2_utils/tx_url.rs +++ b/crates/kitsune_p2p/types/src/tx2/tx2_utils/tx_url.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::sync::Arc; /// New-type for sync ref-counted Urls diff --git a/crates/mr_bundle/Cargo.toml b/crates/mr_bundle/Cargo.toml index bcd75f6..0bc39c0 100644 --- a/crates/mr_bundle/Cargo.toml +++ b/crates/mr_bundle/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.1" authors = ["Apilium Technologies "] edition = "2018" description = "Implements the un-/packing of bundles that either embed or reference a set of resources" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" homepage = "https://apilium.com" repository = "https://github.com/ApiliumCode/aingle" documentation = "https://docs.rs/mr_bundle" diff --git a/crates/mr_bundle/src/bundle.rs b/crates/mr_bundle/src/bundle.rs index e3b4835..2ed8eae 100644 --- a/crates/mr_bundle/src/bundle.rs +++ b/crates/mr_bundle/src/bundle.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::{ error::{BundleError, MrBundleResult}, location::Location, diff --git a/crates/mr_bundle/src/encoding.rs b/crates/mr_bundle/src/encoding.rs index c87c3b7..58411cb 100644 --- a/crates/mr_bundle/src/encoding.rs +++ b/crates/mr_bundle/src/encoding.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::error::MrBundleResult; use std::io::Read; use std::io::Write; diff --git a/crates/mr_bundle/src/error.rs b/crates/mr_bundle/src/error.rs index 987acaa..19c8077 100644 --- a/crates/mr_bundle/src/error.rs +++ b/crates/mr_bundle/src/error.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(missing_docs)] use aingle_util::ffs::IoError; diff --git a/crates/mr_bundle/src/lib.rs b/crates/mr_bundle/src/lib.rs index 34c6649..2fab448 100644 --- a/crates/mr_bundle/src/lib.rs +++ b/crates/mr_bundle/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + #![allow(rustdoc::bare_urls)] #![allow(rustdoc::invalid_html_tags)] #![allow(rustdoc::redundant_explicit_links)] diff --git a/crates/mr_bundle/src/location.rs b/crates/mr_bundle/src/location.rs index c737c63..d0ca233 100644 --- a/crates/mr_bundle/src/location.rs +++ b/crates/mr_bundle/src/location.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use crate::{ error::{BundleError, MrBundleResult}, ResourceBytes, diff --git a/crates/mr_bundle/src/manifest.rs b/crates/mr_bundle/src/manifest.rs index f8c9a19..1e4865a 100644 --- a/crates/mr_bundle/src/manifest.rs +++ b/crates/mr_bundle/src/manifest.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::path::PathBuf; use crate::location::Location; diff --git a/crates/mr_bundle/src/packing.rs b/crates/mr_bundle/src/packing.rs index 08a2429..62a8591 100644 --- a/crates/mr_bundle/src/packing.rs +++ b/crates/mr_bundle/src/packing.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use super::Bundle; use crate::{ error::{MrBundleResult, PackingError, UnpackingError, UnpackingResult}, diff --git a/crates/mr_bundle/src/resource.rs b/crates/mr_bundle/src/resource.rs index bd9185d..fa25bc4 100644 --- a/crates/mr_bundle/src/resource.rs +++ b/crates/mr_bundle/src/resource.rs @@ -1,2 +1,5 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + /// Arbitrary opaque bytes representing a Resource in a [`Bundle`](crate::Bundle) pub type ResourceBytes = Vec; diff --git a/crates/mr_bundle/src/util.rs b/crates/mr_bundle/src/util.rs index f2b228f..8ca4f6b 100644 --- a/crates/mr_bundle/src/util.rs +++ b/crates/mr_bundle/src/util.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::path::{Path, PathBuf}; #[cfg(feature = "packing")] diff --git a/crates/mr_bundle/tests/integration.rs b/crates/mr_bundle/tests/integration.rs index b826b93..d42e4f6 100644 --- a/crates/mr_bundle/tests/integration.rs +++ b/crates/mr_bundle/tests/integration.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use mr_bundle::{Bundle, Location, Manifest}; use std::{collections::HashSet, path::PathBuf}; diff --git a/crates/test_utils/wasm/Cargo.toml b/crates/test_utils/wasm/Cargo.toml index acc7fe5..1a82f13 100644 --- a/crates/test_utils/wasm/Cargo.toml +++ b/crates/test_utils/wasm/Cargo.toml @@ -2,7 +2,7 @@ name = "aingle_wasm_test_utils" version = "0.0.1" description = "WASM test utilities for AIngle development" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" repository = "https://github.com/ApiliumCode/aingle" authors = ["Apilium Technologies "] keywords = ["aingle", "wasm", "testing", "utilities"] diff --git a/crates/test_utils/wasm/build.rs b/crates/test_utils/wasm/build.rs index a560bec..4b8687e 100644 --- a/crates/test_utils/wasm/build.rs +++ b/crates/test_utils/wasm/build.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use std::io::Write; use std::process::Stdio; diff --git a/crates/test_utils/wasm/src/lib.rs b/crates/test_utils/wasm/src/lib.rs index 4026c93..2268171 100644 --- a/crates/test_utils/wasm/src/lib.rs +++ b/crates/test_utils/wasm/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use aingle_types::prelude::*; use strum_macros::EnumIter; diff --git a/crates/test_utils/wasm/wasm_workspace/adk_extern/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/adk_extern/src/lib.rs index 1b0f6dc..c8bdda4 100644 --- a/crates/test_utils/wasm/wasm_workspace/adk_extern/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/adk_extern/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/agent_info/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/agent_info/src/lib.rs index 47cf0c6..aede416 100644 --- a/crates/test_utils/wasm/wasm_workspace/agent_info/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/agent_info/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/anchor/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/anchor/src/lib.rs index 6b34d6a..5089a34 100644 --- a/crates/test_utils/wasm/wasm_workspace/anchor/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/anchor/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; use aingle_test_wasm_common::*; diff --git a/crates/test_utils/wasm/wasm_workspace/bench/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/bench/src/lib.rs index 3516479..7dd1998 100644 --- a/crates/test_utils/wasm/wasm_workspace/bench/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/bench/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + //! externs to help bench the wasm ribosome use adk::prelude::*; diff --git a/crates/test_utils/wasm/wasm_workspace/capability/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/capability/src/lib.rs index 97e02e1..6e3d6bd 100644 --- a/crates/test_utils/wasm/wasm_workspace/capability/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/capability/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[derive(serde::Serialize, serde::Deserialize, Debug)] diff --git a/crates/test_utils/wasm/wasm_workspace/crd/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/crd/src/lib.rs index 4638017..abea129 100644 --- a/crates/test_utils/wasm/wasm_workspace/crd/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/crd/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_entry(id = "thing")] diff --git a/crates/test_utils/wasm/wasm_workspace/create_entry/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/create_entry/src/lib.rs index 8f7ae16..843ca8b 100644 --- a/crates/test_utils/wasm/wasm_workspace/create_entry/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/create_entry/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_entry( diff --git a/crates/test_utils/wasm/wasm_workspace/crud/src/countree.rs b/crates/test_utils/wasm/wasm_workspace/crud/src/countree.rs index 259410d..2070b0f 100644 --- a/crates/test_utils/wasm/wasm_workspace/crud/src/countree.rs +++ b/crates/test_utils/wasm/wasm_workspace/crud/src/countree.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_entry(id = "countree")] diff --git a/crates/test_utils/wasm/wasm_workspace/crud/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/crud/src/lib.rs index 4397e45..7c0ae92 100644 --- a/crates/test_utils/wasm/wasm_workspace/crud/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/crud/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; mod countree; diff --git a/crates/test_utils/wasm/wasm_workspace/debug/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/debug/src/lib.rs index a42f059..ecfcde9 100644 --- a/crates/test_utils/wasm/wasm_workspace/debug/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/debug/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/emit_signal/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/emit_signal/src/lib.rs index 41278eb..130927c 100644 --- a/crates/test_utils/wasm/wasm_workspace/emit_signal/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/emit_signal/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/entry_defs/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/entry_defs/src/lib.rs index e8ce518..94e541b 100644 --- a/crates/test_utils/wasm/wasm_workspace/entry_defs/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/entry_defs/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_entry(id = "post")] diff --git a/crates/test_utils/wasm/wasm_workspace/foo/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/foo/src/lib.rs index 2080a46..4e6b2b8 100644 --- a/crates/test_utils/wasm/wasm_workspace/foo/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/foo/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/genesis_self_check_invalid/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/genesis_self_check_invalid/src/lib.rs index ccb2856..c65f1c5 100644 --- a/crates/test_utils/wasm/wasm_workspace/genesis_self_check_invalid/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/genesis_self_check_invalid/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/genesis_self_check_valid/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/genesis_self_check_valid/src/lib.rs index df9cd69..35b9542 100644 --- a/crates/test_utils/wasm/wasm_workspace/genesis_self_check_valid/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/genesis_self_check_valid/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/hash_entry/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/hash_entry/src/lib.rs index 36fda56..5e7a33f 100644 --- a/crates/test_utils/wasm/wasm_workspace/hash_entry/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/hash_entry/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[derive(Serialize, Deserialize, Debug)] diff --git a/crates/test_utils/wasm/wasm_workspace/hash_path/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/hash_path/src/lib.rs index 8d77361..3f6d873 100644 --- a/crates/test_utils/wasm/wasm_workspace/hash_path/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/hash_path/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; entry_defs![Path::entry_def()]; diff --git a/crates/test_utils/wasm/wasm_workspace/init_fail/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/init_fail/src/lib.rs index 0012459..e19948b 100644 --- a/crates/test_utils/wasm/wasm_workspace/init_fail/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/init_fail/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/init_pass/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/init_pass/src/lib.rs index 9f0ecf9..1bc88c7 100644 --- a/crates/test_utils/wasm/wasm_workspace/init_pass/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/init_pass/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/link/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/link/src/lib.rs index 3eb9e3f..61520a3 100644 --- a/crates/test_utils/wasm/wasm_workspace/link/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/link/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; entry_defs![Path::entry_def()]; diff --git a/crates/test_utils/wasm/wasm_workspace/migrate_agent_fail/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/migrate_agent_fail/src/lib.rs index 01537a8..69cb71e 100644 --- a/crates/test_utils/wasm/wasm_workspace/migrate_agent_fail/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/migrate_agent_fail/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/migrate_agent_pass/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/migrate_agent_pass/src/lib.rs index 9d747f6..f273a18 100644 --- a/crates/test_utils/wasm/wasm_workspace/migrate_agent_pass/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/migrate_agent_pass/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/multiple_calls/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/multiple_calls/src/lib.rs index f189ec1..e454a47 100644 --- a/crates/test_utils/wasm/wasm_workspace/multiple_calls/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/multiple_calls/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_entry(id = "post")] diff --git a/crates/test_utils/wasm/wasm_workspace/post_commit_fail/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/post_commit_fail/src/lib.rs index b899130..5ae9d5c 100644 --- a/crates/test_utils/wasm/wasm_workspace/post_commit_fail/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/post_commit_fail/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/post_commit_success/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/post_commit_success/src/lib.rs index 2c097c5..ce04fd7 100644 --- a/crates/test_utils/wasm/wasm_workspace/post_commit_success/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/post_commit_success/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/query/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/query/src/lib.rs index bc5e0f7..b3a4be7 100644 --- a/crates/test_utils/wasm/wasm_workspace/query/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/query/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; entry_defs![Path::entry_def()]; diff --git a/crates/test_utils/wasm/wasm_workspace/random_bytes/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/random_bytes/src/lib.rs index 91448b9..b94555c 100644 --- a/crates/test_utils/wasm/wasm_workspace/random_bytes/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/random_bytes/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/ser_regression/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/ser_regression/src/lib.rs index e81329e..a74230a 100644 --- a/crates/test_utils/wasm/wasm_workspace/ser_regression/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/ser_regression/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; use derive_more::*; diff --git a/crates/test_utils/wasm/wasm_workspace/sign/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/sign/src/lib.rs index b91b491..2411504 100644 --- a/crates/test_utils/wasm/wasm_workspace/sign/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/sign/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/sys_time/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/sys_time/src/lib.rs index c7d782e..406732c 100644 --- a/crates/test_utils/wasm/wasm_workspace/sys_time/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/sys_time/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/update_entry/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/update_entry/src/lib.rs index bb6914f..3a22d80 100644 --- a/crates/test_utils/wasm/wasm_workspace/update_entry/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/update_entry/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_entry(id = "post", required_validations = 5)] diff --git a/crates/test_utils/wasm/wasm_workspace/validate/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/validate/src/lib.rs index 0c9ab6f..8ee82db 100644 --- a/crates/test_utils/wasm/wasm_workspace/validate/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/validate/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; /// an example inner value that can be serialized into the contents of Entry::App() diff --git a/crates/test_utils/wasm/wasm_workspace/validate_invalid/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/validate_invalid/src/lib.rs index 5c31d52..4edf012 100644 --- a/crates/test_utils/wasm/wasm_workspace/validate_invalid/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/validate_invalid/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/validate_link/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/validate_link/src/lib.rs index 6d128b9..b9fc8cb 100644 --- a/crates/test_utils/wasm/wasm_workspace/validate_link/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/validate_link/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_entry(id = "maybe_linkable")] diff --git a/crates/test_utils/wasm/wasm_workspace/validate_link_add_invalid/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/validate_link_add_invalid/src/lib.rs index a97ac85..898d41a 100644 --- a/crates/test_utils/wasm/wasm_workspace/validate_link_add_invalid/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/validate_link_add_invalid/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/validate_link_add_valid/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/validate_link_add_valid/src/lib.rs index 1fd8bbb..7d1bfb6 100644 --- a/crates/test_utils/wasm/wasm_workspace/validate_link_add_valid/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/validate_link_add_valid/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/validate_valid/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/validate_valid/src/lib.rs index 417f5a2..afce0f0 100644 --- a/crates/test_utils/wasm/wasm_workspace/validate_valid/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/validate_valid/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/validation_package_fail/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/validation_package_fail/src/lib.rs index 12571c7..e4365f9 100644 --- a/crates/test_utils/wasm/wasm_workspace/validation_package_fail/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/validation_package_fail/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/validation_package_success/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/validation_package_success/src/lib.rs index b9cd939..8774884 100644 --- a/crates/test_utils/wasm/wasm_workspace/validation_package_success/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/validation_package_success/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; const NUM_SONGS: usize = 30; diff --git a/crates/test_utils/wasm/wasm_workspace/whoami/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/whoami/src/lib.rs index 9087e95..641863c 100644 --- a/crates/test_utils/wasm/wasm_workspace/whoami/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/whoami/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/x_salsa20_poly1305/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/x_salsa20_poly1305/src/lib.rs index b94f5e6..2753a0c 100644 --- a/crates/test_utils/wasm/wasm_workspace/x_salsa20_poly1305/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/x_salsa20_poly1305/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm/wasm_workspace/zome_info/src/lib.rs b/crates/test_utils/wasm/wasm_workspace/zome_info/src/lib.rs index f11b290..bd675a9 100644 --- a/crates/test_utils/wasm/wasm_workspace/zome_info/src/lib.rs +++ b/crates/test_utils/wasm/wasm_workspace/zome_info/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[adk_extern] diff --git a/crates/test_utils/wasm_common/Cargo.toml b/crates/test_utils/wasm_common/Cargo.toml index b4afb24..782c7e7 100644 --- a/crates/test_utils/wasm_common/Cargo.toml +++ b/crates/test_utils/wasm_common/Cargo.toml @@ -2,7 +2,7 @@ name = "aingle_test_wasm_common" version = "0.0.1" description = "Common utilities for AIngle WASM testing" -license = "Apache-2.0" +license = "Apache-2.0 OR LicenseRef-Commercial" repository = "https://github.com/ApiliumCode/aingle" authors = ["Apilium Technologies "] keywords = ["aingle", "wasm", "testing"] diff --git a/crates/test_utils/wasm_common/src/lib.rs b/crates/test_utils/wasm_common/src/lib.rs index ece08ca..e185b5a 100644 --- a/crates/test_utils/wasm_common/src/lib.rs +++ b/crates/test_utils/wasm_common/src/lib.rs @@ -1,3 +1,6 @@ +// Copyright 2019-2026 Apilium Technologies OÜ. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 OR Commercial + use adk::prelude::*; #[derive(Clone, serde::Serialize, serde::Deserialize, SerializedBytes, Debug)] diff --git a/docs/PROJECT_STATE.md b/docs/PROJECT_STATE.md index d24ecbe..eda6b90 100644 --- a/docs/PROJECT_STATE.md +++ b/docs/PROJECT_STATE.md @@ -72,12 +72,12 @@ | Componente | Ubicación | Estado | LOC | Tests | Notas | |------------|-----------|--------|-----|-------|-------| -| HOPE Agents | `hope_agents/` | ✅ 100% | 8,440 | 133 | Learning Engine, Hierarchical Goals, Predictive Model | -| Titans Memory | `aingle_ai/titans/` | ✅ 100% | 1,200+ | 45+ | STM+LTM completo | +| Kaneru | `kaneru/` | ✅ 100% | 8,440 | 133 | Learning Engine, Hierarchical Goals, Predictive Model | +| Ineru | `aingle_ai/ineru/` | ✅ 100% | 1,200+ | 45+ | STM+LTM completo | | Nested Learning | `aingle_ai/nested_learning/` | ✅ 100% | 900+ | 32+ | Meta-optimization completa | | Emergent | `aingle_ai/emergent/` | ✅ 100% | 650+ | 28+ | Redes neuronales emergentes funcionales | -#### HOPE Agents - Detalle (100% Complete - 133 Tests, 8,440 LOC) +#### Kaneru - Detalle (100% Complete - 133 Tests, 8,440 LOC) - ✅ Learning Engine (2,100 LOC): Q-Learning, SARSA, TD(λ), Experience Replay, Deep Q-Networks - ✅ Hierarchical Goal Solver (2,200 LOC): Goal decomposition, conflict detection, priority management - ✅ Predictive Model (1,800 LOC): Anomaly detection, state prediction, pattern recognition @@ -156,8 +156,8 @@ aingle/crates/ │ ├── AI/ML │ ├── aingle_ai/ # AI integration layer -│ ├── hope_agents/ # HOPE Agents framework -│ └── titans_memory/ # Dual memory system +│ ├── kaneru/ # Kaneru framework +│ └── ineru/ # Dual memory system │ ├── Advanced │ ├── aingle_cortex/ # REST/GraphQL/SPARQL API @@ -240,7 +240,7 @@ aingle/crates/ ### Diciembre 17, 2025 - Proyecto Completado al 100% -#### 1. HOPE Agents Framework (100% - 133 Tests, 8,440 LOC) +#### 1. Kaneru Framework (100% - 133 Tests, 8,440 LOC) - ✅ Learning Engine (2,100 LOC): Q-Learning, SARSA, TD(λ), Experience Replay, Deep Q-Networks - ✅ Hierarchical Goal Solver (2,200 LOC): Descomposición jerárquica, detección de conflictos, priority management - ✅ Predictive Model (1,800 LOC): Detección de anomalías, predicción de estados, pattern recognition @@ -304,7 +304,7 @@ aingle/crates/ ### Completado al 100% -- ✅ HOPE Agents Framework: 100% (8,440 LOC, 133 tests) +- ✅ Kaneru Framework: 100% (8,440 LOC, 133 tests) - ✅ Cortex API: 100% (6,087 LOC, 74 tests) - ✅ ZK Proofs: 100% (3,908 LOC, 81 tests) - ✅ DAG Visualization: 100% (4,540 LOC, 15 tests) diff --git a/docs/api/hope_agents.md b/docs/api/kaneru.md similarity index 97% rename from docs/api/hope_agents.md rename to docs/api/kaneru.md index 5634e19..dc8d0b3 100644 --- a/docs/api/hope_agents.md +++ b/docs/api/kaneru.md @@ -1,11 +1,11 @@ -# HOPE Agents API Reference +# Kaneru API Reference -Hierarchical Optimizing Policy Engine for AIngle AI agents. +Unified Multi-Agent Execution System for AIngle AI agents. ## Overview ```rust -use hope_agents::{ +use kaneru::{ Agent, SimpleAgent, AgentConfig, Observation, ObservationType, Action, ActionResult, ActionType, @@ -295,7 +295,7 @@ pub struct AgentStats { ## Complete Example ```rust -use hope_agents::*; +use kaneru::*; fn main() { // Create agent diff --git a/docs/api/smart_node.md b/docs/api/smart_node.md index b1495f9..5cfb06a 100644 --- a/docs/api/smart_node.md +++ b/docs/api/smart_node.md @@ -1,17 +1,17 @@ # SmartNode API Reference -SmartNode combines MinimalNode with HOPE Agent capabilities for intelligent IoT devices. +SmartNode combines MinimalNode with Kaneru capabilities for intelligent IoT devices. ## Overview ```rust use aingle_minimal::{SmartNode, SmartNodeConfig, SensorAdapter, IoTPolicyBuilder}; -use hope_agents::{Goal, Observation}; +use kaneru::{Goal, Observation}; ``` ## SmartNode -The main struct that combines a MinimalNode with a HOPE Agent. +The main struct that combines a MinimalNode with a Kaneru Agent. ### Creation @@ -86,7 +86,7 @@ Configuration for SmartNode. | Field | Type | Default | Description | |-------|------|---------|-------------| | `node_config` | `Config` | `Config::default()` | MinimalNode configuration | -| `agent_config` | `AgentConfig` | `AgentConfig::default()` | HOPE agent configuration | +| `agent_config` | `AgentConfig` | `AgentConfig::default()` | Kaneru agent configuration | | `auto_publish_observations` | `bool` | `true` | Auto-publish observations to DAG | ### Constructors @@ -191,7 +191,7 @@ pub struct SmartNodeStats { ```rust use aingle_minimal::{SmartNode, SmartNodeConfig, SensorAdapter, IoTPolicyBuilder, Result}; -use hope_agents::Goal; +use kaneru::Goal; fn main() -> Result<()> { // Create smart node @@ -234,5 +234,5 @@ fn main() -> Result<()> { ## See Also - [MinimalNode API](./minimal_node.md) -- [HOPE Agents](./hope_agents.md) +- [Kaneru](./kaneru.md) - [IoT Tutorial](../tutorials/iot-sensor-app.md) diff --git a/docs/architecture/overview.md b/docs/architecture/overview.md index dcbcb2e..53a192a 100644 --- a/docs/architecture/overview.md +++ b/docs/architecture/overview.md @@ -12,7 +12,7 @@ │ │ (Server) │ │ (IoT Device) │ │ (AI Agent) │ │ │ ├─────────────────┤ ├─────────────────┤ ├─────────────────┤ │ │ │ • Full DAG │ │ • Pruned DAG │ │ • MinimalNode │ │ -│ │ • Validation │ │ • CoAP Transport│ │ • HOPE Agent │ │ +│ │ • Validation │ │ • CoAP Transport│ │ • Kaneru Agent │ │ │ │ • Websocket API │ │ • Gossip Sync │ │ • Policy Engine │ │ │ │ • App Hosting │ │ • <1MB RAM │ │ • Learning │ │ │ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ │ @@ -86,9 +86,9 @@ aingle (main conductor) ├── aingle_minimal # Lightweight IoT node │ ├── coap # CoAP transport (RFC 7252) │ ├── gossip # Optimized gossip protocol -│ └── smart # SmartNode (with HOPE agents) -├── hope_agents # HOPE agent framework -└── titans_memory # Neural memory system +│ └── smart # SmartNode (with Kaneru agents) +├── kaneru # Kaneru agent framework +└── ineru # Neural memory system ``` ## Data Flow diff --git a/docs/tutorials/README.md b/docs/tutorials/README.md index 779eb9d..8153ea7 100644 --- a/docs/tutorials/README.md +++ b/docs/tutorials/README.md @@ -34,11 +34,11 @@ Build an IoT sensor network: --- -### 3. [AI-Powered App with HOPE Agents](./ai-powered-app.md) +### 3. [AI-Powered App with Kaneru](./ai-powered-app.md) **Time:** 90-120 minutes | **Level:** Advanced Add artificial intelligence to your applications: -- Configure and train HOPE Agents +- Configure and train Kaneru agents - Q-Learning and reinforcement learning - Hierarchical goals and planning - Automatic anomaly detection @@ -137,7 +137,7 @@ Smart contracts in AIngle |----------|---------------| | Getting Started | Nodes, DAG, Entries, Hash, mDNS, Gossip | | IoT Sensor Network | CoAP, Minimal node, Power modes, Batch readings | -| AI-Powered App | HOPE Agents, Q-Learning, Hierarchical goals, Anomaly detection | +| AI-Powered App | Kaneru, Q-Learning, Hierarchical goals, Anomaly detection | | Semantic Queries | REST API, GraphQL, SPARQL, WebSocket, Filtering | | Privacy with ZK | Commitments, Range proofs, Schnorr proofs, Batch verification | | DAG Visualization | D3.js, Force-directed layout, Graph export, Real-time updates | @@ -224,7 +224,7 @@ Found an error in a tutorial or want to add a new one? - Bilingual structure: English (main) + Spanish (es/) - Updated Getting Started tutorial - Created complete IoT Sensor Network tutorial -- Created complete AI with HOPE Agents tutorial +- Created complete AI with Kaneru tutorial - Created complete Semantic Queries tutorial - Created complete Privacy with ZK tutorial - Updated DAG Visualization tutorial diff --git a/docs/tutorials/ai-powered-app.md b/docs/tutorials/ai-powered-app.md index 07f97fe..c5513a5 100644 --- a/docs/tutorials/ai-powered-app.md +++ b/docs/tutorials/ai-powered-app.md @@ -1,8 +1,8 @@ -# Tutorial: AI-Powered Application using HOPE Agents +# Tutorial: AI-Powered Application using Kaneru ## Objective -Build an intelligent application that automatically learns and makes decisions using HOPE Agents (Hierarchical Optimized Policy Engine). Agents can learn from experience, handle hierarchical goals, detect anomalies, and execute autonomous actions. +Build an intelligent application that automatically learns and makes decisions using Kaneru (Unified Multi-Agent Execution System). Agents can learn from experience, handle hierarchical goals, detect anomalies, and execute autonomous actions. ## Prerequisites @@ -16,9 +16,9 @@ Build an intelligent application that automatically learns and makes decisions u --- -## Step 1: Understanding HOPE Agents +## Step 1: Understanding Kaneru -HOPE (Hierarchical Optimized Policy Engine) combines: +Kaneru (Unified Multi-Agent Execution System) combines: - **Q-Learning**: Learns state-action values - **SARSA**: Learns on-policy policies @@ -31,7 +31,7 @@ HOPE (Hierarchical Optimized Policy Engine) combines: ``` ┌─────────────────────────────────────────┐ -│ HOPE Agent │ +│ Kaneru Agent │ ├─────────────────────────────────────────┤ │ ┌──────────┐ ┌──────────────────┐ │ │ │ Learning │ │ Goal Solver │ │ @@ -47,7 +47,7 @@ HOPE (Hierarchical Optimized Policy Engine) combines: --- -## Step 2: Set up basic HOPE Agent +## Step 2: Set up basic Kaneru Agent Create a new project: @@ -66,7 +66,7 @@ version = "0.1.0" edition = "2021" [dependencies] -hope_agents = { path = "../../crates/hope_agents" } +kaneru = { path = "../../crates/kaneru" } tokio = { version = "1", features = ["full"] } serde = { version = "1", features = ["derive"] } serde_json = "1" @@ -78,7 +78,7 @@ Create your first agent: ```rust // src/main.rs -use hope_agents::{HopeAgent, AgentConfig, Observation, ActionResult}; +use kaneru::{KaneruAgent, AgentConfig, Observation, ActionResult}; use std::time::Duration; #[tokio::main] @@ -99,13 +99,13 @@ async fn main() -> anyhow::Result<()> { action_timeout: Duration::from_secs(10), }; - println!("🤖 Creating HOPE Agent: {}", config.name); + println!("🤖 Creating Kaneru Agent: {}", config.name); println!(" Learning: {}", config.learning_enabled); println!(" Learning rate: {}", config.learning_rate); println!(" Exploration: {}%\n", config.exploration_rate * 100.0); // Create agent - let mut agent = HopeAgent::new(config)?; + let mut agent = KaneruAgent::new(config)?; println!("✓ Agent created and ready to learn\n"); @@ -129,7 +129,7 @@ Agents learn through environment observations and executing actions: ```rust // src/thermostat.rs use serde::{Deserialize, Serialize}; -use hope_agents::{Observation, Action, ActionResult}; +use kaneru::{Observation, Action, ActionResult}; /// Thermostat state #[derive(Serialize, Deserialize, Debug, Clone)] @@ -279,11 +279,11 @@ impl ThermostatAction { ## Step 4: Hierarchical goals -HOPE Agents support hierarchical goals that decompose into subgoals: +Kaneru supports hierarchical goals that decompose into subgoals: ```rust // src/goals.rs -use hope_agents::{Goal, GoalPriority}; +use kaneru::{Goal, GoalPriority}; /// Define thermostat objectives pub fn create_comfort_goals() -> Vec { @@ -368,11 +368,11 @@ Train the agent with learning episodes: ```rust // src/training.rs -use hope_agents::HopeAgent; +use kaneru::KaneruAgent; use crate::thermostat::{ThermostatState, ThermostatAction}; use crate::goals::create_comfort_goals; -pub async fn train_agent(agent: &mut HopeAgent, episodes: usize) -> anyhow::Result<()> { +pub async fn train_agent(agent: &mut KaneruAgent, episodes: usize) -> anyhow::Result<()> { println!("🎓 Starting training ({} episodes)...\n", episodes); // Load objectives @@ -465,11 +465,11 @@ The predictive model detects abnormal behaviors: ```rust // src/anomaly.rs -use hope_agents::HopeAgent; +use kaneru::KaneruAgent; use crate::thermostat::ThermostatState; pub async fn detect_anomalies( - agent: &HopeAgent, + agent: &KaneruAgent, state: &ThermostatState, ) -> anyhow::Result { let observation = state.to_observation(); @@ -498,7 +498,7 @@ pub async fn detect_anomalies( /// Continuously monitor and alert anomalies pub async fn monitor_anomalies( - agent: &HopeAgent, + agent: &KaneruAgent, states: Vec, ) -> anyhow::Result<()> { println!("🔍 Monitoring anomalies...\n"); @@ -544,12 +544,12 @@ The agent executes decisions automatically: ```rust // src/autonomous.rs -use hope_agents::HopeAgent; +use kaneru::KaneruAgent; use crate::thermostat::{ThermostatState, ThermostatAction}; use tokio::time::{interval, Duration}; pub async fn run_autonomous_mode( - agent: &mut HopeAgent, + agent: &mut KaneruAgent, initial_state: ThermostatState, duration_secs: u64, ) -> anyhow::Result<()> { @@ -631,7 +631,7 @@ mod training; mod anomaly; mod autonomous; -use hope_agents::{HopeAgent, AgentConfig}; +use kaneru::{KaneruAgent, AgentConfig}; use thermostat::ThermostatState; use std::time::Duration; @@ -641,8 +641,8 @@ async fn main() -> anyhow::Result<()> { // 1. Create agent let config = AgentConfig::ai_mode(); - let mut agent = HopeAgent::new(config)?; - println!("✓ HOPE Agent created\n"); + let mut agent = KaneruAgent::new(config)?; + println!("✓ Kaneru Agent created\n"); // 2. Train training::train_agent(&mut agent, 100).await?; @@ -691,7 +691,7 @@ async fn main() -> anyhow::Result<()> { ## Expected output ``` -✓ HOPE Agent created +✓ Kaneru Agent created 🎓 Starting training (100 episodes)... @@ -792,7 +792,7 @@ agent.set_anomaly_threshold(2.5); // More sensitive (default: 3.0) ## Key concepts learned -- **HOPE Agent**: Hierarchical learning agent +- **Kaneru Agent**: Hierarchical learning agent - **Q-Learning**: Learns state-action values - **Exploration vs Exploitation**: Balance between exploring and using learned knowledge - **Hierarchical Goals**: Decompose complex objectives @@ -803,7 +803,7 @@ agent.set_anomaly_threshold(2.5); // More sensitive (default: 3.0) ## References -- [HOPE Agents Implementation](../../crates/hope_agents/IMPLEMENTATION_SUMMARY.md) +- [Kaneru Implementation](../../crates/kaneru/IMPLEMENTATION_SUMMARY.md) - [Reinforcement Learning: An Introduction](http://incompleteideas.net/book/the-book-2nd.html) - [Q-Learning Tutorial](https://en.wikipedia.org/wiki/Q-learning) - [Hierarchical Reinforcement Learning](https://people.cs.umass.edu/~mahadeva/papers/hrl.pdf) diff --git a/docs/tutorials/dag-visualization.md b/docs/tutorials/dag-visualization.md index 831bb85..73414dd 100644 --- a/docs/tutorials/dag-visualization.md +++ b/docs/tutorials/dag-visualization.md @@ -844,7 +844,7 @@ async function fetchDag() { ## Next steps 1. **Custom dashboard**: Create app-specific metrics -2. **[AI Integration](./ai-powered-app.md)**: Visualize HOPE Agents decisions +2. **[AI Integration](./ai-powered-app.md)**: Visualize Kaneru decisions 3. **Network analysis**: Detect patterns and anomalies in the graph 4. **Collaboration**: Multiple users viewing the same DAG in real-time diff --git a/docs/tutorials/es/README.md b/docs/tutorials/es/README.md index a615546..aaf2091 100644 --- a/docs/tutorials/es/README.md +++ b/docs/tutorials/es/README.md @@ -34,11 +34,11 @@ Construye una red de sensores IoT: --- -### 3. [Aplicación con IA usando HOPE Agents](./ai-powered-app.md) +### 3. [Aplicación con IA usando Kaneru](./ai-powered-app.md) **Tiempo:** 90-120 minutos | **Nivel:** Avanzado Añade inteligencia artificial a tus aplicaciones: -- Configurar y entrenar HOPE Agents +- Configurar y entrenar Kaneru - Q-Learning y aprendizaje por refuerzo - Metas jerárquicas y planificación - Detección automática de anomalías @@ -137,7 +137,7 @@ Contratos inteligentes en AIngle |----------|----------------------| | Getting Started | Nodos, DAG, Entries, Hash, mDNS, Gossip | | IoT Sensor Network | CoAP, Minimal node, Power modes, Batch readings | -| AI-Powered App | HOPE Agents, Q-Learning, Hierarchical goals, Anomaly detection | +| AI-Powered App | Kaneru, Q-Learning, Hierarchical goals, Anomaly detection | | Semantic Queries | REST API, GraphQL, SPARQL, WebSocket, Filtering | | Privacy with ZK | Commitments, Range proofs, Schnorr proofs, Batch verification | | DAG Visualization | D3.js, Force-directed layout, Graph export, Real-time updates | diff --git a/docs/tutorials/es/ai-powered-app.md b/docs/tutorials/es/ai-powered-app.md index 5cf83c9..68c59fc 100644 --- a/docs/tutorials/es/ai-powered-app.md +++ b/docs/tutorials/es/ai-powered-app.md @@ -1,8 +1,8 @@ -# Tutorial: Aplicación con IA usando HOPE Agents +# Tutorial: Aplicación con IA usando Kaneru ## Objetivo -Construir una aplicación inteligente que aprende automáticamente y toma decisiones usando HOPE Agents (Hierarchical Optimized Policy Engine). Los agentes pueden aprender de la experiencia, manejar metas jerárquicas, detectar anomalías y ejecutar acciones autónomas. +Construir una aplicación inteligente que aprende automáticamente y toma decisiones usando Kaneru (Unified Multi-Agent Execution System). Los agentes pueden aprender de la experiencia, manejar metas jerárquicas, detectar anomalías y ejecutar acciones autónomas. ## Prerrequisitos @@ -16,9 +16,9 @@ Construir una aplicación inteligente que aprende automáticamente y toma decisi --- -## Paso 1: Entender HOPE Agents +## Paso 1: Entender Kaneru -HOPE (Hierarchical Optimized Policy Engine) combina: +Kaneru (Unified Multi-Agent Execution System) combina: - **Q-Learning**: Aprende valores de estado-acción - **SARSA**: Aprende políticas on-policy @@ -31,7 +31,7 @@ HOPE (Hierarchical Optimized Policy Engine) combina: ``` ┌─────────────────────────────────────────┐ -│ HOPE Agent │ +│ Kaneru Agent │ ├─────────────────────────────────────────┤ │ ┌──────────┐ ┌──────────────────┐ │ │ │ Learning │ │ Goal Solver │ │ @@ -47,7 +47,7 @@ HOPE (Hierarchical Optimized Policy Engine) combina: --- -## Paso 2: Configurar HOPE Agent básico +## Paso 2: Configurar Kaneru Agent básico Crea un nuevo proyecto: @@ -66,7 +66,7 @@ version = "0.1.0" edition = "2021" [dependencies] -hope_agents = { path = "../../crates/hope_agents" } +kaneru = { path = "../../crates/kaneru" } tokio = { version = "1", features = ["full"] } serde = { version = "1", features = ["derive"] } serde_json = "1" @@ -78,7 +78,7 @@ Crea tu primer agente: ```rust // src/main.rs -use hope_agents::{HopeAgent, AgentConfig, Observation, ActionResult}; +use kaneru::{KaneruAgent, AgentConfig, Observation, ActionResult}; use std::time::Duration; #[tokio::main] @@ -99,13 +99,13 @@ async fn main() -> anyhow::Result<()> { action_timeout: Duration::from_secs(10), }; - println!("🤖 Creando HOPE Agent: {}", config.name); + println!("🤖 Creando Kaneru Agent: {}", config.name); println!(" Learning: {}", config.learning_enabled); println!(" Learning rate: {}", config.learning_rate); println!(" Exploration: {}%\n", config.exploration_rate * 100.0); // Crear agente - let mut agent = HopeAgent::new(config)?; + let mut agent = KaneruAgent::new(config)?; println!("✓ Agente creado y listo para aprender\n"); @@ -129,7 +129,7 @@ Los agentes aprenden mediante observaciones del entorno y ejecutando acciones: ```rust // src/thermostat.rs use serde::{Deserialize, Serialize}; -use hope_agents::{Observation, Action, ActionResult}; +use kaneru::{Observation, Action, ActionResult}; /// Estado del termostato #[derive(Serialize, Deserialize, Debug, Clone)] @@ -279,11 +279,11 @@ impl ThermostatAction { ## Paso 4: Metas jerárquicas -HOPE Agents soportan metas jerárquicas que se descomponen en submetas: +Kaneru soporta metas jerárquicas que se descomponen en submetas: ```rust // src/goals.rs -use hope_agents::{Goal, GoalPriority}; +use kaneru::{Goal, GoalPriority}; /// Definir objetivos del termostato pub fn create_comfort_goals() -> Vec { @@ -368,11 +368,11 @@ Entrena el agente con episodios de aprendizaje: ```rust // src/training.rs -use hope_agents::HopeAgent; +use kaneru::KaneruAgent; use crate::thermostat::{ThermostatState, ThermostatAction}; use crate::goals::create_comfort_goals; -pub async fn train_agent(agent: &mut HopeAgent, episodes: usize) -> anyhow::Result<()> { +pub async fn train_agent(agent: &mut KaneruAgent, episodes: usize) -> anyhow::Result<()> { println!("🎓 Iniciando entrenamiento ({} episodios)...\n", episodes); // Cargar objetivos @@ -465,11 +465,11 @@ El modelo predictivo detecta comportamientos anormales: ```rust // src/anomaly.rs -use hope_agents::HopeAgent; +use kaneru::KaneruAgent; use crate::thermostat::ThermostatState; pub async fn detect_anomalies( - agent: &HopeAgent, + agent: &KaneruAgent, state: &ThermostatState, ) -> anyhow::Result { let observation = state.to_observation(); @@ -498,7 +498,7 @@ pub async fn detect_anomalies( /// Monitorear continuamente y alertar anomalías pub async fn monitor_anomalies( - agent: &HopeAgent, + agent: &KaneruAgent, states: Vec, ) -> anyhow::Result<()> { println!("🔍 Monitoreando anomalías...\n"); @@ -544,12 +544,12 @@ El agente ejecuta decisiones automáticamente: ```rust // src/autonomous.rs -use hope_agents::HopeAgent; +use kaneru::KaneruAgent; use crate::thermostat::{ThermostatState, ThermostatAction}; use tokio::time::{interval, Duration}; pub async fn run_autonomous_mode( - agent: &mut HopeAgent, + agent: &mut KaneruAgent, initial_state: ThermostatState, duration_secs: u64, ) -> anyhow::Result<()> { @@ -631,7 +631,7 @@ mod training; mod anomaly; mod autonomous; -use hope_agents::{HopeAgent, AgentConfig}; +use kaneru::{KaneruAgent, AgentConfig}; use thermostat::ThermostatState; use std::time::Duration; @@ -641,8 +641,8 @@ async fn main() -> anyhow::Result<()> { // 1. Crear agente let config = AgentConfig::ai_mode(); - let mut agent = HopeAgent::new(config)?; - println!("✓ HOPE Agent creado\n"); + let mut agent = KaneruAgent::new(config)?; + println!("✓ Kaneru Agent creado\n"); // 2. Entrenar training::train_agent(&mut agent, 100).await?; @@ -691,7 +691,7 @@ async fn main() -> anyhow::Result<()> { ## Resultado esperado ``` -✓ HOPE Agent creado +✓ Kaneru Agent creado 🎓 Iniciando entrenamiento (100 episodios)... @@ -792,7 +792,7 @@ agent.set_anomaly_threshold(2.5); // Más sensible (default: 3.0) ## Conceptos clave aprendidos -- **HOPE Agent**: Agente de aprendizaje jerárquico +- **Kaneru Agent**: Agente de aprendizaje jerárquico - **Q-Learning**: Aprende valores de estado-acción - **Exploration vs Exploitation**: Balance entre explorar y usar lo aprendido - **Hierarchical Goals**: Descomponer objetivos complejos @@ -803,7 +803,7 @@ agent.set_anomaly_threshold(2.5); // Más sensible (default: 3.0) ## Referencias -- [HOPE Agents Implementation](../../crates/hope_agents/IMPLEMENTATION_SUMMARY.md) +- [Kaneru Implementation](../../crates/kaneru/IMPLEMENTATION_SUMMARY.md) - [Reinforcement Learning: An Introduction](http://incompleteideas.net/book/the-book-2nd.html) - [Q-Learning Tutorial](https://en.wikipedia.org/wiki/Q-learning) - [Hierarchical Reinforcement Learning](https://people.cs.umass.edu/~mahadeva/papers/hrl.pdf) diff --git a/docs/tutorials/es/dag-visualization.md b/docs/tutorials/es/dag-visualization.md index 2414a78..98a2bb4 100644 --- a/docs/tutorials/es/dag-visualization.md +++ b/docs/tutorials/es/dag-visualization.md @@ -844,7 +844,7 @@ async function fetchDag() { ## Próximos pasos 1. **Dashboard personalizado**: Crea métricas específicas de tu app -2. **[Integración con IA](./ai-powered-app.md)**: Visualiza decisiones de HOPE Agents +2. **[Integración con IA](./ai-powered-app.md)**: Visualiza decisiones de Kaneru 3. **Análisis de red**: Detecta patrones y anomalías en el grafo 4. **Colaboración**: Múltiples usuarios viendo el mismo DAG en tiempo real diff --git a/docs/tutorials/es/getting-started.md b/docs/tutorials/es/getting-started.md index 0d627a0..fe7153c 100644 --- a/docs/tutorials/es/getting-started.md +++ b/docs/tutorials/es/getting-started.md @@ -393,7 +393,7 @@ let bootstrap_nodes = vec!["quic://192.168.1.100:8443"]; Ahora que tienes un nodo funcionando, puedes explorar: 1. **[Tutorial de Red de Sensores IoT](./iot-sensor-network.md)**: Configura dispositivos IoT que publican datos al DAG -2. **[Tutorial de IA con HOPE Agents](./ai-powered-app.md)**: Añade capacidades de aprendizaje automático +2. **[Tutorial de IA con Kaneru](./ai-powered-app.md)**: Añade capacidades de aprendizaje automático 3. **[Tutorial de Consultas Semánticas](./semantic-queries.md)**: Consulta datos con GraphQL y SPARQL 4. **[Tutorial de Visualización](./dag-visualization.md)**: Visualiza el DAG en tiempo real diff --git a/docs/tutorials/es/iot-sensor-app.md b/docs/tutorials/es/iot-sensor-app.md index 0d481ce..fe9d9c6 100644 --- a/docs/tutorials/es/iot-sensor-app.md +++ b/docs/tutorials/es/iot-sensor-app.md @@ -22,7 +22,7 @@ Add dependencies to `Cargo.toml`: ```toml [dependencies] aingle_minimal = { version = "0.1", features = ["coap", "smart_agents"] } -hope_agents = "0.1" +kaneru = "0.1" smol = "2.0" log = "0.4" env_logger = "0.11" @@ -68,7 +68,7 @@ Upgrade to a SmartNode for intelligent decision-making: ```rust use aingle_minimal::{SmartNode, SmartNodeConfig, SensorAdapter, IoTPolicyBuilder}; -use hope_agents::{Observation, Action, Goal}; +use kaneru::{Observation, Action, Goal}; fn main() -> Result<()> { env_logger::init(); @@ -176,7 +176,7 @@ Monitor multiple sensors with policies: ```rust use aingle_minimal::{SmartNode, SmartNodeConfig, SensorAdapter, IoTPolicyBuilder}; -use hope_agents::{Action, Policy, Rule, Condition}; +use kaneru::{Action, Policy, Rule, Condition}; fn setup_sensors() -> Vec { vec![ @@ -274,7 +274,7 @@ Here's a full working example combining all concepts: use aingle_minimal::{ SmartNode, SmartNodeConfig, SensorAdapter, IoTPolicyBuilder, Result }; -use hope_agents::{Observation, Goal}; +use kaneru::{Observation, Goal}; use std::time::Duration; #[smol::main] @@ -336,5 +336,5 @@ async fn main() -> Result<()> { ## Resources - [RFC 7252 - CoAP](https://tools.ietf.org/html/rfc7252) -- [HOPE Agents Documentation](../api/hope_agents.md) +- [Kaneru Documentation](../api/kaneru.md) - [AIngle GitHub Repository](https://github.com/ApiliumCode/aingle) diff --git a/docs/tutorials/es/semantic-graph.md b/docs/tutorials/es/semantic-graph.md index 6040398..6100410 100644 --- a/docs/tutorials/es/semantic-graph.md +++ b/docs/tutorials/es/semantic-graph.md @@ -342,4 +342,4 @@ let certified = engine.query(" --- -Copyright 2019-2025 Apilium Technologies +Copyright 2019-2026 Apilium Technologies diff --git a/docs/tutorials/es/smart-contracts.md b/docs/tutorials/es/smart-contracts.md index 2eb3e15..f1b5d82 100644 --- a/docs/tutorials/es/smart-contracts.md +++ b/docs/tutorials/es/smart-contracts.md @@ -326,4 +326,4 @@ let proxy = ContractBuilder::new("proxy") --- -Copyright 2019-2025 Apilium Technologies +Copyright 2019-2026 Apilium Technologies diff --git a/docs/tutorials/getting-started.md b/docs/tutorials/getting-started.md index 6577143..5f9d483 100644 --- a/docs/tutorials/getting-started.md +++ b/docs/tutorials/getting-started.md @@ -393,7 +393,7 @@ let bootstrap_nodes = vec!["quic://192.168.1.100:8443"]; Now that you have a working node, you can explore: 1. **[IoT Sensor Network Tutorial](./iot-sensor-network.md)**: Configure IoT devices that publish data to the DAG -2. **[AI with HOPE Agents Tutorial](./ai-powered-app.md)**: Add machine learning capabilities +2. **[AI with Kaneru Tutorial](./ai-powered-app.md)**: Add machine learning capabilities 3. **[Semantic Queries Tutorial](./semantic-queries.md)**: Query data with GraphQL and SPARQL 4. **[Visualization Tutorial](./dag-visualization.md)**: Visualize the DAG in real-time diff --git a/docs/tutorials/iot-sensor-app.md b/docs/tutorials/iot-sensor-app.md index 0d481ce..fe9d9c6 100644 --- a/docs/tutorials/iot-sensor-app.md +++ b/docs/tutorials/iot-sensor-app.md @@ -22,7 +22,7 @@ Add dependencies to `Cargo.toml`: ```toml [dependencies] aingle_minimal = { version = "0.1", features = ["coap", "smart_agents"] } -hope_agents = "0.1" +kaneru = "0.1" smol = "2.0" log = "0.4" env_logger = "0.11" @@ -68,7 +68,7 @@ Upgrade to a SmartNode for intelligent decision-making: ```rust use aingle_minimal::{SmartNode, SmartNodeConfig, SensorAdapter, IoTPolicyBuilder}; -use hope_agents::{Observation, Action, Goal}; +use kaneru::{Observation, Action, Goal}; fn main() -> Result<()> { env_logger::init(); @@ -176,7 +176,7 @@ Monitor multiple sensors with policies: ```rust use aingle_minimal::{SmartNode, SmartNodeConfig, SensorAdapter, IoTPolicyBuilder}; -use hope_agents::{Action, Policy, Rule, Condition}; +use kaneru::{Action, Policy, Rule, Condition}; fn setup_sensors() -> Vec { vec![ @@ -274,7 +274,7 @@ Here's a full working example combining all concepts: use aingle_minimal::{ SmartNode, SmartNodeConfig, SensorAdapter, IoTPolicyBuilder, Result }; -use hope_agents::{Observation, Goal}; +use kaneru::{Observation, Goal}; use std::time::Duration; #[smol::main] @@ -336,5 +336,5 @@ async fn main() -> Result<()> { ## Resources - [RFC 7252 - CoAP](https://tools.ietf.org/html/rfc7252) -- [HOPE Agents Documentation](../api/hope_agents.md) +- [Kaneru Documentation](../api/kaneru.md) - [AIngle GitHub Repository](https://github.com/ApiliumCode/aingle) diff --git a/docs/tutorials/semantic-graph.md b/docs/tutorials/semantic-graph.md index e721224..ab0218c 100644 --- a/docs/tutorials/semantic-graph.md +++ b/docs/tutorials/semantic-graph.md @@ -342,4 +342,4 @@ let certified = engine.query(" --- -Copyright 2019-2025 Apilium Technologies +Copyright 2019-2026 Apilium Technologies diff --git a/docs/tutorials/smart-contracts.md b/docs/tutorials/smart-contracts.md index d0aa361..fa6508a 100644 --- a/docs/tutorials/smart-contracts.md +++ b/docs/tutorials/smart-contracts.md @@ -326,4 +326,4 @@ let proxy = ContractBuilder::new("proxy") --- -Copyright 2019-2025 Apilium Technologies +Copyright 2019-2026 Apilium Technologies diff --git a/examples/ai_autonomous_agent/Cargo.toml b/examples/ai_autonomous_agent/Cargo.toml index c08449a..5e1ee8c 100644 --- a/examples/ai_autonomous_agent/Cargo.toml +++ b/examples/ai_autonomous_agent/Cargo.toml @@ -2,7 +2,7 @@ name = "ai_autonomous_agent" version = "0.1.0" edition = "2021" -description = "Autonomous AI agent example using HOPE Agents" +description = "Autonomous AI agent example using Kaneru" license = "Apache-2.0" publish = false @@ -11,8 +11,8 @@ name = "ai-agent" path = "src/main.rs" [dependencies] -hope_agents = { path = "../../crates/hope_agents" } -titans_memory = { path = "../../crates/titans_memory" } +kaneru = { path = "../../crates/kaneru" } +ineru = { path = "../../crates/ineru" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" rand = "0.9" diff --git a/examples/ai_autonomous_agent/src/main.rs b/examples/ai_autonomous_agent/src/main.rs index 63ce9dd..892d79a 100644 --- a/examples/ai_autonomous_agent/src/main.rs +++ b/examples/ai_autonomous_agent/src/main.rs @@ -1,6 +1,6 @@ //! Autonomous AI Agent Example //! -//! Demonstrates how to use HOPE Agents for autonomous decision-making. +//! Demonstrates how to use Kaneru for autonomous decision-making. //! //! # Features Demonstrated //! - Creating simple and advanced agents @@ -13,14 +13,14 @@ //! cargo run --release -p ai_autonomous_agent //! ``` -use hope_agents::{ +use kaneru::{ create_iot_agent, Action, ActionType, Agent, Condition, Goal, Observation, Rule, SimpleAgent, ValueRange, }; use rand::Rng; fn main() -> Result<(), Box> { - println!("=== HOPE Agents - Autonomous AI Example ===\n"); + println!("=== Kaneru - Autonomous AI Example ===\n"); // Example 1: Simple Reactive Agent simple_reactive_agent_demo()?; diff --git a/templates/README.md b/templates/README.md index 32a67ed..12fd7d3 100644 --- a/templates/README.md +++ b/templates/README.md @@ -7,7 +7,7 @@ Pre-built templates for common AIngle use cases, optimized for IoT and AI applic | Template | Description | Use Case | |----------|-------------|----------| | **iot-sensor** | IoT sensor data collection | Smart devices, environmental monitoring | -| **ai-agent** | AI agents with Titans Memory | Machine learning, autonomous systems | +| **ai-agent** | AI agents with Ineru | Machine learning, autonomous systems | | **supply-chain** | Product tracking & provenance | Logistics, authenticity verification | ## Quick Start @@ -24,9 +24,9 @@ cargo build --target wasm32-unknown-unknown --release cargo test ``` -## Integration with Titans Memory +## Integration with Ineru -All templates can leverage the Titans Memory system for AI-native memory management: +All templates can leverage the Ineru system for AI-native memory management: ```rust use aingle_minimal::{IoTMemory, Config}; @@ -48,7 +48,7 @@ memory.maintenance()?; ``` ┌─────────────────────────────────────────────────────────────┐ -│ Titans Memory System │ +│ Ineru Memory System │ ├─────────────────────────────────────────────────────────────┤ │ ┌──────────────────┐ ┌──────────────────────────────┐ │ │ │ Short-Term │ │ Long-Term Memory (LTM) │ │ @@ -60,12 +60,12 @@ memory.maintenance()?; └─────────────────────────────────────────────────────────────┘ ``` -## Integration with HOPE Agents +## Integration with Kaneru -Templates can use the HOPE (Hierarchical Optimizing Policy Engine) framework: +Templates can use the Kaneru (Unified Multi-Agent Execution System) framework: ```rust -use hope_agents::{Agent, SimpleAgent, Goal, Observation, Rule, Condition, Action}; +use kaneru::{Agent, SimpleAgent, Goal, Observation, Rule, Condition, Action}; // Create an IoT-optimized agent let mut agent = SimpleAgent::with_config("sensor_monitor", AgentConfig::iot_mode()); @@ -90,7 +90,7 @@ agent.execute(action); ### Memory-Enabled Agents ```rust -use hope_agents::memory::MemoryAgent; +use kaneru::memory::MemoryAgent; // Create memory-enabled agent let mut agent = MemoryAgent::new("smart_controller"); @@ -130,7 +130,7 @@ export AINGLE_IOT_MODE=1 ## AI Agent Template -For AI agents using the Titans Memory architecture. +For AI agents using the Ineru memory architecture. **Features:** - Short-term memory (sliding window) @@ -143,9 +143,9 @@ For AI agents using the Titans Memory architecture. - `LongTermMemory` - Knowledge checkpoints - `LearningEvent` - Training events -**Build with HOPE Agents:** +**Build with Kaneru:** ```bash -cargo build --features hope --target wasm32-unknown-unknown +cargo build --features kaneru --target wasm32-unknown-unknown ``` --- @@ -191,7 +191,7 @@ Full product provenance tracking. 1. **Keep entries small** - Under 1KB for IoT 2. **Use batch uploads** - Reduce network overhead 3. **Index with links** - Enable efficient queries -4. **Use Titans Memory** - For AI-enabled applications +4. **Use Ineru** - For AI-enabled applications 5. **Configure for IoT** - Set `AINGLE_PUBLISH_INTERVAL_MS=0` ## Support diff --git a/templates/ai-agent/Cargo.toml b/templates/ai-agent/Cargo.toml index 396ddf2..76b7af3 100644 --- a/templates/ai-agent/Cargo.toml +++ b/templates/ai-agent/Cargo.toml @@ -16,4 +16,4 @@ serde_json = "1" [features] default = [] mock = ["adk/mock"] -titans = [] # Enable Titans Memory Layer +ineru = [] # Enable Ineru Memory Layer diff --git a/templates/ai-agent/src/lib.rs b/templates/ai-agent/src/lib.rs index ef4bdb0..478283e 100644 --- a/templates/ai-agent/src/lib.rs +++ b/templates/ai-agent/src/lib.rs @@ -1,7 +1,7 @@ //! AI Agent Zome Template //! //! A template for AI-integrated agents on the AIngle Semantic DAG. -//! Supports the Titans Memory Layer for persistent learning. +//! Supports the Ineru Memory Layer for persistent learning. //! //! ## Architecture //! - Memory: Compressed knowledge graphs in DAG @@ -13,15 +13,15 @@ //! # Copy template //! cp -r templates/ai-agent my-agent-zome //! -//! # Build with Titans support -//! cargo build --target wasm32-unknown-unknown --features titans +//! # Build with Ineru support +//! cargo build --target wasm32-unknown-unknown --features ineru //! ``` use adk::prelude::*; use serde::{Deserialize, Serialize}; // ============================================================================ -// Memory Types (Titans-inspired) +// Memory Types (Ineru-inspired) // ============================================================================ /// Short-term memory for recent context From b51b44b98f5dcf330a5e87da22309fde47c06659 Mon Sep 17 00:00:00 2001 From: It Apilium Date: Mon, 9 Mar 2026 12:29:00 +0100 Subject: [PATCH 2/5] deps(rust): remove unused direct rand_core 0.6 dependency from aingle_zk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rand_core was listed as an explicit dependency but never imported directly — OsRng is used via rand::rngs::OsRng. The transitive dependency through curve25519-dalek 4.x remains until upstream adds rand_core 0.9 support. --- Cargo.lock | 1 - crates/aingle_zk/Cargo.toml | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5f7192d..179f381 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -284,7 +284,6 @@ dependencies = [ "hex", "merlin", "rand 0.8.5", - "rand_core 0.6.4", "rayon", "serde", "serde_json", diff --git a/crates/aingle_zk/Cargo.toml b/crates/aingle_zk/Cargo.toml index c9f5d76..0cd88e6 100644 --- a/crates/aingle_zk/Cargo.toml +++ b/crates/aingle_zk/Cargo.toml @@ -32,9 +32,8 @@ sha2 = "0.10" blake3 = "1.8" # Randomness -# Note: Keeping rand 0.8 for compatibility with curve25519-dalek's rand_core 0.6 +# Pinned to rand 0.8 — curve25519-dalek 4.x requires rand_core 0.6 rand = "0.8" -rand_core = "0.6" # Parallelization for batch verification rayon = "1.8" From 5c8d71e2758a277200788415f42c5adc44d7316c Mon Sep 17 00:00:00 2001 From: It Apilium Date: Mon, 9 Mar 2026 12:35:39 +0100 Subject: [PATCH 3/5] fix: standardize --version output with legal attribution across all binaries Ensure all four binaries (aingle, aingle-cortex, aingle-minimal, aingle-viz) display consistent copyright, dual license, and repository URL in their long version output. --- crates/aingle/src/bin/aingle/main.rs | 12 +++++++++++- crates/aingle_cortex/src/main.rs | 2 +- crates/aingle_minimal/src/main.rs | 14 +++++++++++--- crates/aingle_viz/src/main.rs | 9 +++++++-- 4 files changed, 30 insertions(+), 7 deletions(-) diff --git a/crates/aingle/src/bin/aingle/main.rs b/crates/aingle/src/bin/aingle/main.rs index c6b4fa1..de43ff8 100644 --- a/crates/aingle/src/bin/aingle/main.rs +++ b/crates/aingle/src/bin/aingle/main.rs @@ -20,7 +20,17 @@ const ERROR_CODE: i32 = 42; const MAGIC_CONDUCTOR_READY_STRING: &str = "Conductor ready."; #[derive(Debug, StructOpt)] -#[structopt(name = "aingle", about = "The AIngle Conductor.")] +#[structopt( + name = "aingle", + about = "The AIngle Conductor.", + version = env!("CARGO_PKG_VERSION"), + long_version = concat!( + env!("CARGO_PKG_VERSION"), "\n", + "Copyright 2019-2026 Apilium Technologies OÜ\n", + "License: Apache-2.0 OR Commercial\n", + "https://github.com/ApiliumCode/aingle" + ) +)] struct Opt { #[structopt( long, diff --git a/crates/aingle_cortex/src/main.rs b/crates/aingle_cortex/src/main.rs index f657838..1d5b1fe 100644 --- a/crates/aingle_cortex/src/main.rs +++ b/crates/aingle_cortex/src/main.rs @@ -26,7 +26,7 @@ async fn main() -> Result<(), Box> { if args.iter().any(|a| a == "--version" || a == "-V") { println!("AIngle Cortex v{}", env!("CARGO_PKG_VERSION")); println!("Copyright 2019-2026 Apilium Technologies OÜ"); - println!("Licensed under Apache License 2.0"); + println!("License: Apache-2.0 OR Commercial"); println!("https://github.com/ApiliumCode/aingle"); return Ok(()); } diff --git a/crates/aingle_minimal/src/main.rs b/crates/aingle_minimal/src/main.rs index d1ae24f..af2a2f9 100644 --- a/crates/aingle_minimal/src/main.rs +++ b/crates/aingle_minimal/src/main.rs @@ -32,8 +32,13 @@ use std::time::Duration; /// AIngle Minimal - Ultra-light node for IoT devices #[derive(Parser)] #[command(name = "aingle-minimal")] -#[command(author = "Apilium Technologies")] -#[command(version = aingle_minimal::VERSION)] +#[command(author = "Apilium Technologies OÜ ")] +#[command(version, long_version = concat!( + env!("CARGO_PKG_VERSION"), "\n", + "Copyright 2019-2026 Apilium Technologies OÜ\n", + "License: Apache-2.0 OR Commercial\n", + "https://github.com/ApiliumCode/aingle" +))] #[command(about = "Ultra-light AIngle node for IoT devices (<1MB RAM)", long_about = None)] #[command(propagate_version = true)] struct Cli { @@ -512,7 +517,10 @@ fn print_config(config: &Config) { } fn show_version() -> Result<()> { - println!("aingle-minimal {}", aingle_minimal::VERSION); + println!("AIngle Minimal v{}", aingle_minimal::VERSION); + println!("Copyright 2019-2026 Apilium Technologies OÜ"); + println!("License: Apache-2.0 OR Commercial"); + println!("https://github.com/ApiliumCode/aingle"); println!(); println!("Build info:"); println!(" Rust MSRV: {}", aingle_minimal::MSRV); diff --git a/crates/aingle_viz/src/main.rs b/crates/aingle_viz/src/main.rs index cc3c40d..be750dd 100644 --- a/crates/aingle_viz/src/main.rs +++ b/crates/aingle_viz/src/main.rs @@ -12,8 +12,13 @@ use clap::Parser; /// AIngle DAG Visualization Server #[derive(Parser, Debug)] #[command(name = "aingle-viz")] -#[command(author = "AIngle Core Dev Team")] -#[command(version)] +#[command(author = "Apilium Technologies OÜ ")] +#[command(version, long_version = concat!( + env!("CARGO_PKG_VERSION"), "\n", + "Copyright 2019-2026 Apilium Technologies OÜ\n", + "License: Apache-2.0 OR Commercial\n", + "https://github.com/ApiliumCode/aingle" +))] #[command(about = "Web-based DAG visualization for AIngle", long_about = None)] struct Args { /// Host to bind to From bce34884343e54c8e8f9ff4e5666133a66a5a2a2 Mon Sep 17 00:00:00 2001 From: It Apilium Date: Mon, 9 Mar 2026 12:53:20 +0100 Subject: [PATCH 4/5] fix: resolve compiler warnings in aingle_minimal and aingle_cortex - Gate Error import behind #[cfg(feature = "mdns")] in discovery.rs - Migrate from deprecated Query::parse to SparqlParser::new().parse_query --- crates/aingle_cortex/src/sparql/parser.rs | 5 +++-- crates/aingle_minimal/src/discovery.rs | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/crates/aingle_cortex/src/sparql/parser.rs b/crates/aingle_cortex/src/sparql/parser.rs index 4dc30d2..0631e0c 100644 --- a/crates/aingle_cortex/src/sparql/parser.rs +++ b/crates/aingle_cortex/src/sparql/parser.rs @@ -4,7 +4,7 @@ //! SPARQL query parser use crate::error::{Error, Result}; -use spargebra::Query; +use spargebra::{Query, SparqlParser}; /// Parsed SPARQL query #[derive(Debug)] @@ -28,7 +28,8 @@ pub enum QueryType { /// Parse a SPARQL query string pub fn parse_sparql(query: &str) -> Result { - let parsed = Query::parse(query, None) + let parsed = SparqlParser::new() + .parse_query(query) .map_err(|e| Error::SparqlParseError(format!("Failed to parse SPARQL: {}", e)))?; let query_type = match &parsed { diff --git a/crates/aingle_minimal/src/discovery.rs b/crates/aingle_minimal/src/discovery.rs index 15c62f1..5a40b18 100644 --- a/crates/aingle_minimal/src/discovery.rs +++ b/crates/aingle_minimal/src/discovery.rs @@ -10,7 +10,9 @@ //! - **mDNS**: Service type `_aingle._udp.local.` (feature: mdns) //! - **CoAP Multicast**: `/.well-known/core` to 224.0.1.187:5683 (feature: coap) -use crate::error::{Error, Result}; +use crate::error::Result; +#[cfg(feature = "mdns")] +use crate::error::Error; use std::collections::HashMap; use std::net::{IpAddr, SocketAddr}; use std::time::{Duration, Instant}; From 7e411620c268e425215ed40afb4b634345dc9f80 Mon Sep 17 00:00:00 2001 From: It Apilium Date: Mon, 9 Mar 2026 12:55:39 +0100 Subject: [PATCH 5/5] chore: gitignore test-generated aingle_iot.db --- .gitignore | 1 + crates/aingle_minimal/aingle_iot.db | Bin 126976 -> 0 bytes 2 files changed, 1 insertion(+) delete mode 100644 crates/aingle_minimal/aingle_iot.db diff --git a/.gitignore b/.gitignore index 653625d..bb7ee1d 100644 --- a/.gitignore +++ b/.gitignore @@ -112,6 +112,7 @@ llm-instructions.md # =========================================== *.profraw *.profdata +aingle_iot.db # Logs *.log diff --git a/crates/aingle_minimal/aingle_iot.db b/crates/aingle_minimal/aingle_iot.db deleted file mode 100644 index e69f9392578cf641604d235492b1792e76e00ceb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126976 zcmeFa1$xVt;S-QC^YEx=oM zkTjHkGkG(=zJ6bav^hE9aFe^&k$u*-8r8zWBlTdTO++g>GMFKf5f%$kJUEyjh^hEL z6aG(z|2^=(FaA%0|G)mReEs5Y+NnhTD&4KNH$;H%5F)USZLhUtU{3!x{&W4y_}%uK za!bH10k;I)5^zhvEdjR#{{Jk2=m7tusWW7-M7M~Pm6m!dJyO=> zNcn3UP^x-piJGCoHA|EX3l0AI-Qb*l!QcI9p?3+c8CthyaMkMNE0w5TFSuf8y}W-J z)lqKQLH|6ia+R9Fm1~8C#T%2WK!A7ZQW-2ncxz4X+`e5)sELi`4v}r_{l;H^eq-wE zSJozz7RYK#2c0~NWwZXf6OKOScehe`pC?_Zwy-8l2HU%r*|%Rg-_N9Jmh)H}71-qPdS<7G86yiIGoe0VFpJuqzha>VH4W>`;^pt5P!f>m>W@O#F;?Z~~*u z-=uM5m$v%1AN+SuY-)ep4}R8HJREq6rnl5FHNK539a^SDt+1NGWc+m!t$HR+oj$## zPX@arzs!y=O_F%h{PN8o$g`Q;zS(C9{OzJOAJFBq6znVfe~UnE(>fBP6OwA&9RBv2 zU!NKOE%PPuPF*7X|Jn_{yjWxE%NJg~+gR*E>BrfH@@0m8X*}Wy<;yq!?}cK{?yr;a z>o4yd@}GYthvbYMv00mlgv8u7Lhso4^HcxF#Qcoxw`uU#-`_k6;{TZM0P^@dfW8R1 zG4Gnlr6idPkpKJRVfyuxM}gW&3yb=oa!P#6k*&e12+3-jL7e;5#&%iQ_4m<4Bd0HIbziR-{OhQ&iTV zM42LG(NGMYBuRxNF_e)cS=LmE<`qg+R8BB|kM`kBTg#ChB6K{C(HyEH-xhqo1bJ9sN3Py*fJRz{dIq>1&T?R63dF^wE07 zy%Ps}F|AjI9m5w5^r-1q}Q*cpRoMUv7~ zRy45QMUuvDBQu)L(;CHcJkN8iOiCKZNSZ;>8f_??Ch-C==VU?WzJpzoft?_d3?ncK z$;qsusDj2&SjQy(m87epj-5OP31^d!m*^{Amcci69kFDY~X2~92~+JGwE6 z9rjGcBR`+QO($k8Rp?kiiD4V3RqJ|q+N=fdt}$&FN0c9UeRtc^pV~FZRykDu#6B(G zpumzwQu869&ljI>L{``~a#r%rm8lz#_9YBErnf?~ETo{(q{>oQB&tktlpw2yjMEnD zLDq4&3#63#Bvl?x&3Ts6NVj&TgRfN41>XO&Ptp@ z8#0s(M&e~rf$o7rS;GQnNLE&93BMUd2_maAl+Nnd`M-l*kT83A%o9;j43!rtO`ueY zVpW_UcvX^7v6rhdt@AtzYrJ^r>DH?`*3)i(S|t3Ad(OfTsz2sw7FqeTF@-(ob`n#E#0JDVL;sY-!uL$>YKA z=dmY>q^i7O%rIeTo89A19vjj0;F*}}H#~+dz0mtjn=@-m1ng~^t?Z2FmGTLegkdLj zR--r^qoe^1iPkBDmLO^lE5H!!>kY@9Y$&qCuo{b_m&Zw{NUW$a0@jQ1W7v6?!m1L# z!pwI(^%6*p3^9tG`!Pd0qh=e zu-Ex%c#cVx_n#?uAzR5tURx@)TbJs$T8BKtR;3*CzH#rZgFOiE(5FR8&v^P7_Mq}L zOHALGe%enP4jjI|chACPMHk1E{$uOv>@%v5DQNY2_^w}{TTN}XR^)!Vqv?v)VocZI z&?Y|F3m!kT+i!T`Uw1A^7yQ#N7I79lLAXhUsgMvFzkjbaw3DpCy)m8G=`Q9O2wj680dMJ z1cFSH*bPWhq$Qvx1I zVrR$X;x$diPNuU8r7$EEIZ?wlMd~;{oD@rsKJ6`jVZL83aPw3C{(Nw&ec`K?Y`$M@ za7y+_ow5T(pLKm2Pfhdd%3N+cnGOvn~2I-m*^H^)x^D*xgf#EdHz~xMqc%8@6 z;3!<_3>}B+Ul#jk)G3~$v0T5PPW|Jk^QNZ9@+^;oAIAgMwIQ>NqTrsLCb}Fxr;RR- z&$eh1p97jwBoW3wvg@#Ck;ryzyw^IofjCwkAOH`^C3Gk}zvYpFqEqK8(L?Yvpmy zr>^JPq&vKF`#w(E)qjCUnWTUC_3_oU)aUcY;`_V4et z*;dYHxA#`t1^?8Rj9%BRLjwkRWDZD|^ls8xwk$pmygT_x)~4Q*e0q3{2pn$B;8n%r zlkY4qFTZCVs{)%_PuWIUhWREBD3+vMQh)D!-nV?Fn=kaYf3kXpSq2rIx$45s*uF>C zw!M%u-;S)FyvNLZ<2DVs)n`D%{R2y8Z)Of!(ld=$!&)VK5QnDdHTkjYhrQ{yuR?T- zELS`(RkagJ%Q71HGxS)s?^@al_t`7b2T zy?NY?I&Af*_WI)Nj+q8c>ZX~4LIP@65$1HfUvzk%4p+{$E3~f6z8U1y3BPQgJ7(-1 z>${SwIjHu&snZ%B2>*C8bM&Jd?}jbt_RceD;bT*YVcu^RKh2+~v0@G?b<6f}?DW@b zuMA3;xn@+`J2~o2`~B$3vJYEznQ%B)xqcU9bI|&3_dI(Im^%4c@`7z*rde9(2iAD3 zp@t31{Nhc%o~O^sP0T^P0zbUFd@lIZ7C){|)z~5%ntQZfv$bcVh$lC~GaU3^@UpQv zsNzp!26oE#d~BttW$89`?KY?X;*UnLVZ!*gweqghhDB`o#T<05`QtlDmgjpvs*CTY z1?`$;RnlClpSE0ztp)y2D@)B&6l-J-x_9SbyLStcM>jck{$P%EqCD$awSnEYRouRE z^TNBVFf~I%b5Of2XRlNUOpDPF~9loL}Ocr(c8Y%EF|xlW(q^JNRMJ;*~n&+Fi#SRApD8c>`{| z-MqhKhTTiM_UD`2@y`G2ty`fRVv4j#y5SFx+UB4RFLR#0`*Vqmo_SkUefxgEsMr-} zd}l29W9RgjXX;ij+hlbubI_y@mr70U`Z#0ba$BP67GIBEz>B+DgwHr|wR&*stIJZ>Fb5UCM)rC-ZF;$e z%f`K0J8boW7rmaP9bb%6>3&tV&uW!ks%{Qy7%)1+v*=B;nwG!#def2!SygjT z;mIF&_~z{}YXsds#gtCDXFU_{rcwJIT5z^r@2ttAix;e74k{5eY2=*Rx8?IMwlqw# zv0}@IJBZ@F^K9)eyx;I!hfTfSRW=9Z9+K`x`ec(1wC-=L3A$N{4!Lo!^q^8T9}R0h zqSL#(B+?NmmYtm@VXIumrRJYJ%2Kz z-I?j(XIA8y#3!@neb;4D1#?ij>RAKX(GhnGtQ@Q~ynvu7yHHmP4f4w7_ zCT}bm-8H!S+jcHKbS-J)KDEY|H3zNQJ*^qBDJEIi)C;91&byf{B>X{_5k2x> zDwL(y@0_nbvy3@t{JD(98PrV!idmrAM_s#%IM0e$Fse-P+EYcl_IR%1>m{**=f67d8h)9oGg|Usrcp8ul__$@uf`Y!j;Tb!Kk) z`C*zBO_q3-Bnz2?djHBlYM(L7px>T6ud%R0_;`KSA5nfYdRAXuI79hcA;n)7GzWFA zx%}#$+`mmc(EaeWqLbVGwD{rh(w5=f$|OIl9Ln>1w|SB|X!G)w9it;&&2G=tOVWL6 zu5EMrT;Dx1#UCS&Z3w$@&U&S(Xbx)h{MfkJKlkjJ#yk7yRlW1ohk#&#|ey41{0u?e|PR^Nw&gQx{;lzX3;kk!)8(DQ%m)-kA zXLBE$+xjo>@M*@4Nu9g1=Ae(yOYUFvBvp@W1Dmz$(0QKc1(7;;chHy^ObU@@Cl&JLAyV6U$CF58cP=s zmhQ3hW&|`mSN8TVFOIe=5S+2gdmm5A9Q5K`rZ*kNCu^1OZ5H*I zey&kq#O7dMAJQBYqD@|3dEwS;`Ev9q^?1OtlSyh$KG(!k-23TyQI9D%@(d_o4r&l{ z-|{qebft3B3qAg{MjjHKX_@+Z*|DyvJ%7)4J+xK&{N|uBwO;M<-9F*a?i%Tmo|>`h ze$VucC+GGh7Z+F;-7)jlIZyMMgKjn{l__=4sNLg#`{Q-qg7fdmMYi|rJ^$RLzRj0i zy2*AglGhwGV9Wbk=NtM(rOiKd>sSxs_PhJl`gUvEW`{cdUYkq1g`IiKLER!A+=@_M zwxTahI+t|k&KQJRR=J)0=*)(1;?DNR`uttO^BT4 zpn9!l@$XBEdS*2T-MldC zb^n(2muyu^1XXOUm@k16(dGlNU zEN4&0oKD$ll^0X(#>Ap|s)v|^N_M=WRvByCyM6GjfINMsXKvSC+V$(3-Sd}RzI?yA z{xMBvb5QdmgG%PlJNPQKEHcNIf<~QkYu{LlCD~ed+@iTfS1zfMKG+;IbwK%^Q(LuP zSYu8l`rU{DgV%nlJ-*anKW$w04(&^i{v%l?b5PFbo-R`Go~+pyHlwQ z=AaRep8at+CPmJz*(+_}MpMV9T`!81dtcZBNUMI)0?r*mZC2q%;RL>?H5ITIJkhX9gI%pzfesk$a5kpoT#28M<>?$2(4q9_= zbc;T}_1venFXKD1;pt^;jlE&%tG$W!uaSC$W!#a5$<09%4z#P`?cY-wy?b^*w?o@n zkI33<_A|E3^B48X?z+3La8xpL(BmrUUMB5xxa+0JY=g=Kk&WkEwl?%BSFWvX>4LZW z>zsROGY176y#Kai?7M5jnk^Z0>%I4ZPj5XIXFk1t~0Imp6<1*<{;u!O6c zoV{0Y@=U8rbeX2?-i!`W`>FJd5nacQ^ zgU-FL|F~fP3%g3RTF~~=uXC!8PHmm``e15}e%W^VyXYi=e&!&5CHH~uS4ItZu&nEc zxAoUfnkyX5{pQo6av>e+H|X2qS%|MWC_yu{IVeG+r8y`;6PGzCL4$}nC_(z%9F!p0 zY7Y7vY7RHw^w~VaJfc^@SZ_)0*bW6Z30k;I)5^zhvEdjR# z+!An0z%7A4Ng$vL(Jw3o>z$ClLy5L+Ln8H7ZS@GdZ)d?^n#s?V!h?qW-~a0nxMU0o zs!WxRj`DKuDHCP7YL&{pli)GsyiW)9O`axi>*bSowx1ZjX@0gWhZ;p*9`Go4()<>)HA^2|}NXL7i#s0vATuuM>fmFN)67~ls^+qY`3pEWYNbglHLy zk2xwKuEmnn9F-7(V(~UdCB%wYyv$JvQ5_afb5uh7g~h`hl@KXmv6!P0Vj3)j=_8O3 zf8b%-|Lqz6{+Su<{wZz=xFz70fLj7?3AiQTmVjFVZV9+0;Ff?}0&WSoCGh`10)AGK z&;kZ}1WvW)v<6$#1db0J5jZfgS77JBwt>w8n*`RiCbRljiNLCX&0tyjQ^ zfPq%S*4g@tt*xz@t%_9k)D-rgW? z*xT#Gb$fe_xMpw95@+r08RCq+Jx!dpw+D%X_VxgAz~1gB_S@U7#8!J7L&VtIEyNak zyNXz4Z&wm4?d=L;g}t3e%(J(1iMjT64lyTiE|H3uj1S~vBPQX4AiRl*=HFTf3t=Di ziTGr1KN279?F-_Cy?sVJvmLR2b)GnHZ_g3u?CmMyl)XJkoV2$mh!ghqIC0$G9wUy~ z+oQx$dwYcV{G7wYVSE1&ame28Blg+by~JL7yNB3gZ+8>B?d>jNm%ZId?6kK#h#mHJ zJF(r~ZX>qY+s(vgd%KC)WN$YT8}01|VuQV1Ppr4M>xgysb}g~i-mW3m*xS{_YJ0n! zSZ;5Z5zFlDQevsST|z9ew~L9z_I44m$lfj_7TVhd!~%OepO|lNXA`p_=iw>}mhdz;jf z)ZThqyzQ-*#mn9%u_Up#o)%Ag>tXS*w-$@VY>5xV2YVY!#M;~U#Cv=Dj(BHp-x6=_ z?Hl5ay?sr*wzsc{SN8TL@zUNtC!X8e$HZfM`-pgCZyyp5?d=2NfxW#?+_$&)h^|ejRPkY&UGDaN}QZTWFhN8{r%4`^c}Et+y@GX5fxr!B*IoANTqoTN2+Z$VYG| z@Lb@5z|Db61E&X$3G5GMqIqCLzxsid!AH=6Sp!oA`dHstA6PGeec1M+56l7gAGZYD z5^zhvEdjR#+!An0;6Eb)tEV?ow3ivuwcRFzc>1+hFY?nF;%2H2uN}NMH>X+Zy{+pbM*E=1rcPd`*WW3&qc)jECddK4R zj>hX9`PMr!WF&F;TW?l-WPpzQ-RyEX@bz!)z5Vfe`{MQX#_R2g*V`Shw<}(6XT08y zZ@rl@-H7eqdi~EZg!MnzW%MfwP*2n9ui`QHGtvBp_ zd1B4CUc37evHEMT+NAa##Hx6`mGOEj;`Nrt>n)4dTNZs7=20%zJ9}Z$0z2 zTKZdWDtf%xOVRyAEBnngr`baShZDHLB3rxJv#&CfbqM&{`|^9485Ke-zVUiK@p?() z^}OTtyyEqe#Ory+>v_cMS>pA+u3R%U!+GM<*T4JaL(nVYL%d#Wyx#kGy?60?Z{zje z#Ou9|*LxMO_cC7Z#kbyz3!ZKpTz4uj@Nq>ulF!s??JrY{dm25 z@p^aT_3nJ@HQEtN-2U3L@6gxd^{&P1U5(ef60dhTUhh)8-o<#m3-$|lP4XUZnZ@@L8>%JOHDCd%?>k|xUXXObq$LIikvTfV0M^DyuK?)d-z z(j<1jt6KtY3AiQTmVjFVZV9+0;Ff?}0&WSoCE%98e^CPN`~QCtb@w~FCE%8TTLNwg zxFz70fLj7?3AiQTmVjFVZVCL?B;d~f|6fDg{l0DqxFz70fLj7?3AiQTmVjFVZV9+0 z;Ff?}0{=w`xb6S{MbzEz?3RFA0&WSoCE%8TTLNwgxFz70fLj7?3AiQjUz32fF;7G+xoD z^qOLm#98{Z`xXp>=0qTD$g;Jp;Ej`Ni0Y5f+7o)$SH;- zi4?Ev5+xg&s;C^LswB&>ny#8(XsSwaq{4Et(}L;YXY+g&2mQ{VtNpK+(od$UyS|BE zj!)&zcPg-RdX?e*t5megjasLejZz$mg1&QsGS`oGIz8^pzW%p~<5MPdT9%1>F#l4O z;CI=)8u-+D^{;`RP8fPYqz#tW8I2MIO^|p^RArIZ1(MVlNta|nP$vdNn@+BY9t2@|9|yfYGV`wkqnC{PeS4Ls?fu@*dFWX^;6wLmHFK0*GQ!h# zw-c(bBntXsTCWT{hA$fEQPZ!;t$ZnK8#Sj+t}*#(z5=VxHtkny&dq-f^i;yoGX~F! zB&DgWXvmrKh_$9SF(+}*FB))fWfoz4+exXe?3MJx(0lKH*i)AgH=g`HO#-( zc#YC!R*)51BL#`3Sdx=;mq4FA4*Gl>1{VE!cK?gNzYkjVGoNDC#@Vk^jk}t8*4<|T z*;jrj6M@=HiCXo`Li{SGV=@Ll3=DWd42^#C)+4#m<67z?KS#|N(R9=A)V~ILK4It; zil#}KRVbNZD4o=Gjnqli)GS0*qzuuJph8eQFK9Yc35}#w%oIj4k8w?s80tIdv4|Op zrOl}W)rF@-92cUF&0MA#g_dMZ6-1UaB$d-Rnb&32;1pS+Wm*^U1EI3GV8i!%8V9}Q z)MlT#`%;{}#AWN;t%NStD3>|yfD_rvKS+7xv=9K&V=u2`JzJb z>3w;tJX&<>XrN#BE*-V3xum3{|25Ea2}6&i$S@qMYK)?2A}^`tsm!u6P2$X!fuW)6 zIKQz(F(qU{#pVovXqJ|MzaTN+L9gTQa5M;z)`tXQKRI`DI)mOWoBkzba}{>X>!AGmb! zPmz6UMWF&)qM$z=)HivWysei{-r0U)_@?>UvK(p@d3nI2+?Agc&-?o0#7X}e=-Gs! z*93|dSqf{DR(Tx@Q&TyCkrZB1G#LsV&8Rx339M$|V9eVssU{0&6G|N3$|UsiZ1NIweT5!pRclidFw-HSbn! zrk^M{yMT*23j@3?yGDXUw zp%^?#k_u_w?HEadqOVFc?sn!KP0+rBo+cSqr4^B*C6=XVMkhrcS4SQ*2HOBfLai5d z8TUh-Q8bFua92*BV{?!0g-MZ_?);zE|5`yWZjp?;6%wzNO3R9^w>YsX0Z=Y9F6(>eI_#uHbuX z<)I->^Pfnuxg^zd=&K#~>PKm>yVQ+Y_U85(=XVF0W}#S{Dz=U*wW^B>Zb~>hDMrz; zvr+=CPq_WFx@@Z3JZlJoWZuFRoYK0Wi2&v=_kR`_YV7P1hdtr*{avOA-gY^Sgu7Z|E5G4(J3f z-W@2AS30%_T_R=kC}CKhrf?|~McnjRQdLDpknt5`U^5V9Fkh@ra}qWqRfB@y8tC)K zLEpT}jY^*M(e(GHSRc=jg-1UXD;}|KQTjKVhF&eSiYU95Se!WMou_{OA?O{@30zG5 z2)xM4I7v)mP}3Et5;{Y3vM3thk91rhIbH`Jh|@;Lp2tJmkZ~p{6e&_PDJoDvo!k!1 zRi7^o`a*46$DVIr{(0_8H~r^~FWq?duFxEeEko_S_n4fA( zJD?M|nEC$K{h?R4cG>m@WzCwfI_UHpItIN1gfA|D8lz#k@ho%* zsD*|`g2yEda5muiRo%R%Nx%~7Joo@jBn1VR2Tqkh9N;qeojPbpSj7wviv&+nh7P(A zq$17hBrXCfV<;+a2o%&qSS%PQh!SPU3`?4mL>3vSicSm0gg#Fk^jEHjSg#f3%6Sd! zaCOSHjHfLd3ZBeY>en7h^tl%ApYHsPSYU@9h15Q)d1(ucxJVIemmD7NbE(-){duqb zb9;8W9JOF{cnf(|x&2A9RSuOuu}{l4D6piF)O<+j^Tp>IkrlR$oRz$DW$MPGeF;NP zNsJulIxVJ$`msJq>GDqQ%W_9pH ztPTUfchD=K4L~W7f~Lqihta%h-Wy~X4>VwI;I!wky9);H6uK@_8kk@W7AlSwR2Jlb z(}FRf&m9MSr@_-B=IvbgtoGS!ovx+)*e6-O11ZagOetLHz=7@3E1?N7-wr*h=6!}f zqDqV1+4i2uW4YOC<)SV_?sj;(yvM8M+aj(tIx?`iwm)+BxRb|5G(C7Gruq$!VM{Oc ze$(d6+7bbKn`SFJ<9Vfgf+b<-1sdi%MHS4|qv7gBQh;1jSQ&b-2ptLBH>@PUomaq( zLiwjTO(R8|qdcp^_V;7x8G+<@S|YzekFOHC1Y(oL64daoc--7!mZCpm8n4TT3dVil7Xf6pRUdt~lsVSIaPePQF|%1JdmOV+>tm#^pRUws-5) zxbu!Y9Y;^{luem>1^*=D~N(nr$;7?wtl3ndzdtLdIBQN(H`}2yR zwUgS{&NJ^!%lGL%&M4S&X{W>i@4RWq>G%7=PVraZDF=267n_E#&vP&&V4tCA%Ai%% zR2NLEAecc?kl`G{qTvNj)fGh-B~ha|mIrTevSd}0ORjs+84V! zPeZ+=X@#M63YQug*9Z-|ifZ7B&&UQV;M&XREKI`+2a^+sU&f$R3JM`M1m}V8)3JTr ziuW5m>tuFn)bl1)dsuCIUROBzX#q8C*oofdKWyE-dicp{?Gp#Q3rOF826zYfeixIz z20+A$2U`H&F$IS=rDA8t+k)MInMamYff6_{Jun6;5>9skL?EL|upuf6NCsB`9}x$< zCE4}GT+&~19q2S*P}Ks(EYBN+36C?)c>XXnZQ$Ob2qwP(PJqWHlQA_xI1oB37-;qF z;(#w-_vgvwx!-%rk~FhN!Cy*OWqOb3(38Bi(K`F}vkq%Ev`ZZDE+BlJeLu&xdPlf^ z*Al)mO^INQbQSKr3YMF!Fhz!R zZMVtzeB+-NRQ7VS`Hz-gyPDB9FD$l-Eo4KLa`ig)kJxo({=4C~Pde}a4?h?h9K6Yz z$vS*;bo1l{aSo4J)qq75+zBk{aQX)kV;a{4({+cGW$Bb(BZetOak;S9ew#vEy*cd9T_;eT<3SBHz4{x!=@H?TE*T zgWd&X&p!gaN&6&347-@@!9`w$t034bD1!zkQ09pbKVX%Hw+9VcM^Z%imy;?f>zL5k zI%LdOcn6q92Z~i)0)6W^=x2KBqw1`?a?E#+Wm&IR(X&U|(l(vgYe1^s^95w<%8s2u zJW3q&E}(n<8R#9j^}CqvF>m%TaxpM$FuHu2%mojdI#?PE+%|b#=Ox96oa523R*qfKTS_!aQ!?8Z4z-{xZ@ch|8@AW$&!Hs z4(A*KzhK^k`56x3PM(D3hTk#{`scltBsu7FAgQsx*R1`S^ViL5(@q>}SpM3W&J#v= zxYgE=c#t^gT|oIb`-Tpk^^5~Ie-~3eDt32-Z;1v212TdJGzpHRw1hYkRZt}baf%!- zi7H%*!T#EErAhItIN1cYjxtKJZh(KHiFB%)H`eC(`X%vIk!4*E&EBR%pw4sMm9ZqU*g>xq81 zU-lYyhCaG-dCN*mt{=Tqi@29K=v_ejIQxc;4DHhjEHCxl0(oai7zQwdU)7};s1hgLuUnJLLVLn{gyJ!)-`26Uaa-; z+~Hq-TAe+A@iL_f=AX22+x@-|r;T25#Z2!>>|hI5P-Wh737Upp+lQ|BDRCP`GF_!dJ&InsY!WaIsGy4|_fW zec;>=2X6`Fu%S~tt@9*@T|h;sAZ~#ysUso;5oGWjWOZyN2pywL+6dPKrv+o~4n5gT7zv4v7R z%kpda&X)tuhwlDqSxmha`AZe*{8M(Hl#l0E%IpH4K#l>$gL@FzP?`~S781jKNQG}0 zrh-YGz(EUMfbh{`pec!np5Wmp4Idj>hD(;|j`cnDV?s~D!~(yGuhb9cfKK3IpFkLL zc_ebciGUb#nG+D=iIf$%>La8G;Nv?Whv5J$A>##YXdD8ARpf?1XcA&p;1)(XD;N{{ zs5s~k%@~xbef`V4*S=JSh& z54*lKf6l7E{9JgLGUr^x@$BADLc6w;VpiRMTg-W%Km*$&946ua2(LIsr9k_^3l~OG z(=krt5kRfU0-WvuIFpP^Sa zU%YpBQ(&E{bIP8W|I5&Zsr;XNiXOH_+48MBUuc?K&v~Cf9%rTozdO7>g04A%Ly#>9 zU>3^)c~&^Y;FE~ZC80QhFh@!Tgk{2LrYVehMo`=jH+&l5`%vx>wEYcw2Xq1#`vgK8 zDd2~1^}+CQ1@lbVK@Z>dpH`a*y52I0$BubCqPCUObIxFfvk2`Fedcf z24tnRgey88?2dn-E z&^zG&?_#bWr#eDDbQt-u{1N#p2?k4Jio?ePSsx_xgo85(wmNur&~|qK*#Asxhk-d` zcM)}RO_(*_dYBj8C5yh>co*?6{}K$iuB$b{`TD+iYr!q{REgLGL`* z{|`a$fd9XXxqb$r0SG1GXwds2VuodGKXT))$A=n(X*0~S6PbNvYPBQ<#UVD}ag86@fO=s^H4t}ymAVy59ohEo@; zeV7llh?En^83)HN)A1KkWs=i^NyPm>8V>(o^Z#`&%Py$bGKD_k<->Fh8cn`6I)Cih zG{3Dqw&Y{hj!L5fwTL%~n8xW?%VfS#s!2p;4uh37goOEB|Lv?Sj{dJyU zrE0hFd;TU%?niwqjp|-H^2Bu^1@Ss@&^vDvaQY1$gWds4po?t+@au&ahh)-MaOJ>p zFPYZ>90aPFX~fL+Nb@}6f=$P7@Ek}rg_*!BumhTrqb`CTPXAw_pU}I>@n^|b)UQ-) z_R-X(irpwxe0T3v)ufTh3Le|{zGUb=;#K0HcitxO4?*t$>*r#d01SS#giT)p-J`+L z$E5!;0kGte3Qm{70mDRK-WEung}Pu~2$3bo3?N0SQ3lbYu2}VO`~M1kr7qI--!deB zRHw2f?_0mr4U?4?OI!|a8I|5IYDN}oL|5Wv;-GilCgAiNI=1Q^VEtU|464Zp@57qM znGY6-g6eN7ehLygP>gK)|G?cB>LNk~NeXetpa)IoPz1#yH4Jzl#0R=y!;g%EepAJ4 z7f*L@ePB3~V)d{dbMt=~R^wFldA0VgX}A4ir3?Peh!=^2-g&Oy={Ix?dIwlP7jyjv zytrXu$aDS+SJt6V*4Bm3VH4{zdYZpIN_! zzox4czWSCtU%io3>Depa>%B^^oqsf)yF16b71LL|TkSm84~JKs0&9;{YdqW_L4t$( zLgX9Vq+tM}5%iCMYmi_FibSehS;RJq6q*VnBbEZKnPK-Ygs(~cP>8h`0r(d;PX|~( z7jyj}?-=-dz^H>a1e1?^&d31CAj;f~;S%wJ2=M?5Bw*=dawr0V+A4d@8BLWNveX4btQL2u8-Na5E11$qZqKNoZT z6f`*v&K}5GfGuA#bH8ddmNoMG;PQtQkUDHprk@wqyhtMr0Nlb@#01#0f+}VpkduNj zp@;kbSLpLBROhW*IJC;jB@O4_8hNPF2)>DBUg+|E$#$%mb+=-_d&E;fp9tq}=ed5T z&D?*59+#!RICne1`nj0vhrW*BPDJs6-A68GBo4u8ugRp2*bjq4HVB%>d`5aFWUq(s zAM6<{TznO1`5b})McQe>B;x+x+b3>{2zN>U)LRM!4as}oSWkNf6yMWz z6kE9Wj=#mn+#MXZ|2uCJaN5lM*D3M?`#enZEgcR(j_u}uI_Bc>A`KPJl$ zn*hhb?;r7B@cc%i5r)(i9mycEJs>YEbVO_;0*_0hfT1`ZVLx&O^xkpMZ|pnu_eqyu zcI}tC_t^?{(w1J){pKa5kpjynJxy93o5ccz#YJ8!I-PwD-QY+ zJu>fEU-|-X`Gm8#)HP13H0= zZ2~9>!Jx1UTzX~P17HW{;rm4+`x~XOQ22EbQJ^R>VzPl|I!KrYG!DT&q(+N~9z~iP zSFHLZanR3v`zc4;0@o(#c~(ZHKl%35^*#4nu58-Z_tyC3Vvcl|c36@m4tnRgey88i zG3Xtz1iF~(r*O0z97>45oDT(0Ct>VI$p~ZTIm>xI$COmRjcWt7PV0C12& z0#Zk-P7B6d^`3FiXKa4Bh3Z=}UDf?v#ZBfD zeaGUFIOv_{`kj75$Dnt>!slYHANgH1`0Mc!GJeXY#}AVHnJ>$$@C#Sq@{8nM=1NC$ z7bJ%;E6vC-0LyS~hL0zTJvl8HbJbhopzpkR+3@Gb()!lypU)^g@YaE2TPrQ4n&k4! zSKAi0BIW5N7E9uwcb@Ba`VAd}-T@1ri@AQB-Kgav=tv1GfWkAYeZjpGMqb?cu-A*I z{sH$d1z|u)5{Lj#62@P61fkXl0z*wFV5e7oBI5tu`Tr4%m9QtUi**8b{{MtZKRTWD z_^-PIe6Rje`oRH9po?_^cmDr>3G@!IelFGt-1-0iCD1#-`ngyqaOeO3mq70T>*s3w zzdQeb0%e|^PILd`v)-NmKLnRRcm97A{&s-%bFuy3o&P_f4d3ZB_di(m?)?8|)qA`B z-xBDB`hN-M{CAIVOTaAww*=f0a7(}~0k;I)5^zhvEdjR#+!FZzxCCJT_l>jvcU^lw zLmsuqhM%+as22W+U72HbtqoltB^!UBV8$Uv-)x~4-^AJfo%jED+RXje`~Q!eyB)Cb zx!C_7C7n=-4pl2cL2*d|^%FH~HqBHQPL~dP!lMqNP zBbpZRRSNmPpf^Kl8QA~6K<|Jh(8V!s^p`mrnL$zV5rulySxvE#^ z$aCcj6+QE?4dutL%YMg`SY<+AZBl!W&(KdVf4PG1t(Av{G|hh^#paS!&!Mk&+^Zj@ zz3x&sX4#wDXPnmw{u!?y(EfHMu*YLUZ~go)BD60GW~hTvAD z2g25c1mLLZDj@O;DNlJ+w&joy#%aNr(6e#S&tLJOFh6v}vbXIse*7cLxOX0h9>q+P zw+!!m>sGVJMA&g+W#XWBKGx6aH~gzQ_ydP8(E&@Ki(~zOCBnQB*nv7wvLtix_e69z z!k1}e16NVw0j{C~io3w$8yf%;fk}u4LV_^TJm^JQb6PMa^h_M|tE}nDuKTs#_SycK zs^1Jclcv<xUfU zyv9jL@ui!Ej^+QM)>Hwiss6b=J;1-0`peCgtss^vJy3EO_7KHj?C?_T&|22pM zoFw9B`@av76ZZcAKR=sKO7FBuGJ0geH@^FWDN-(OitKCMBHzswMJxBqJg~-~;v2Uw zUU}|hPp{;GWrki%e^Dy4gxF(Fk(%=-4*#qU7Tfc*Sk^Z^ul2uvw_>j;9lVdG%9x9< z>y`3Y(PlTI-&78DJ|>VcP&UWR0M8;84k1z^k2M0S1eYYlN|VTgk8H`Pn!xa!h~z5B z`;PP~NUJMC5=f)^W*zb5D8!lz2*EjTT8rwf%^ zHqCpWRKwq9{<8OI_fBbs=Z;K!jM$wx=$(%Vbovc{xI26YJtaAy6S&y_A2~k&vzZyj zEbE7_k+xjakp2w?08spoMY?y?1wrC_2Ch5;iiIP5$Uq4&mQy$x8N-|wj0t_2IOr>9 zP7``JSCed;XKg52HHp}2`-zXKuJ3DW&2TtJqoez793gfk4tnQf0-b(C$DnsWCvdg@ zKgz!%2P|t|^^g@tpuzu0(ET(NIuOj@PhCJU60n@80EF5>EQkVz0XK-94B^ALH#)l= zn$U;FLEj{}(aw3bE00~7hcb{Nq62A!4D+nYixQ%SQ3@FJ zuvr+)H5-2EIOrSutmj$B1qXWMW6+pm(0@ z|A(M=AlA>tTt8MfPH^O|V{idrSQaVau(%QOYnbW_QUj0(0!OT<1WHf_4TRGHOtzT~ z9y$+h22KmcT=k{mp#N~)vM6I{-sWLF#foLytzIa-9)D7=Hmd%R=JJq-O$tO4+wIWL zjOq4S&6_;bw@$|Z@~2OdIS|#CfhCQy)w(iZbyg zy(y!dhgq#dLRK^h+^=952!}>WEfhtOv0y|f)(Y|^pmKr)-A!b)A9MXM7NIr_{f+RI z9Iynsn(K%Du0um-Q2v{yQ2G^o4iCy7H$EL{;Gn&WV1dm%Ajk#|f&lXbiNjf3Aaos( z;)2tHF`+LR2mQ0%LqiHC7t}^ocQo`*HDpwZG3jdWsxbSs@Um_DJ{fywAhy||?|-)P zXXq_q1rDT3are^W+{Lr>J-3Bzm4b{soxMVxB|EwXWG-2Ak@H+Xil8Casj5Qpg=Vkm zx`7yY5(S@3Uff_#tn5u-mWVCL$(rQ^a|jfYXw2Y>GHw33Rbdz~qF$^J!T2qFDkAJ^+dU{T_LtSp(JV zunQttDAa$}%pL>}5fK5TFn6LzBqoo7bP+DF{}+pcUVeD3lh@$IdGj%0$v#}FoupXE z?1-G!mus(YmCoHwel?cZk~rv{w+T4?hK@n+fF;nyHUXr2Le)o{^QZ(4nnz<{7C_Yx zl!8DuNH{ql6C`Sb!aN8DnG&uq8n9szbOH25dW)w~q7Pqv}1sx|ix(-=FW* z)J!>3dm8$z?$c-Qz4lu4djhoYP&w$8sQRh6Cjd2XnOqDpKPf{5Y6rk)!yFdW1`tih&xh=vjLj8+^n;Ed?S&y{f`Kj2?+DBiI!!2p`tRiNJMQue zCzLiWnQ7XiX8wuFJ)4(1=22%`2R;3s0PQmr{Y>a3%ad1&5NM! zh%dWL$dtqDived#&^=LA4A9^)Iem53^rGea{}#!A#Z*E7U;8l zc*(YvAqPDZ`FSYwa-DH*ZQIM z%17l^L`+|apC`6|6#AhG#zY3dhxj)W?>C4+aC(6i2uQ;+Hj-QsibOop22epJ0O%cC zpx1c0YE413#U)1DbjIxVIsxJ-4{g%blY8!|9vZf=-+)HyRO_IpU+e!rf?kQLpNeb! zTdmimS?6UE7(T2{Z(U4|R~ss?bJBP6RP!j;riv{MY9PI!Zaezf32)-cjdcw93 z4=CCT(;EK2SIZ;v_WZ`HQC9uV%+k~9_1-44!Y*^^$P)SH^Gns(BSVibeovK=N5rQ* z_UGT#!Hp#iOWj>wct3Mb>|Ga->oD@ep|9Mb1BIRU+J1Sx-0(R4o`66CBU~BG@sKFX zprDLWD$*br=dyV4#D?`dAMcAqEWeLxzU^)NE_sXSlCR_J^|SYL9vSCsL)q zpfB4H^*8jMrv3M2Bn+-N)BX4YyVno9Ps=)ePL2Pv_~W=&mbq=rjOh0SI5;KYzLENX zDGB!sWWW-XK-kzHB~mdHNffBEm<$s&&I3AZ=rrD zaVAi4PXKz)LbeoCcKqgO4!{~#h72Ff6&OOuQ5ZnGgCT%#2nSyc*dBrK0pAdOC9rp3 zL0}L_cVP(h9xc!h?zlH?%$Z{W6CW(yxQJVj5#-|D@j&z#X&6p-ILOqg{%| znHZB&sC&UYM@k6)n390&6Bv_d@DP6_w8xQF!yH2@gs`^!cb-7MtcAG9uX*?!{Ot+E zP~uFW;+_ClN}wyr!Ty4^GaF7nuz)~Y3tG@(G%Jt`!21!Wex!yHNQA?+p2C$W8PBYKL>E;s`Igb>Kc*~ra8+Y+U zSTo11sy@$P8CBFe=;_z`Y2Tr8&@0giRB^4JiSi!2%b@+vf~kW5o)4(#fu_ii^5F&` zg3k*dAAA8$EKC&q&@|%0AP)9_!~~8HCp_8U!&-r(f%*eTT|HuSADW#kGEry_s@QI^p$1 z7+xY$^oQdE2K#V+huten%tdVvW6Ba3ec?V=cS!eo)t12R;2-KkYkI4tgazd@8Q>BRxU+ z4pxqQbo=r0!vg?Ecmh6{9^m@I0Tir$4vZm)EC3V3L6}>GwKtvyxIqY1@U7QV+eC5H zW>7|J)rV`^XxkcI)~PYd(6Z97RL|7T)XXyyXf*3;Yi`#bZJ4BXS7(RX48zyP!;H$* ze`;3ixTu$FQ(6HUCyhR<&(?5JJE|3}b4sg1$KQCfcDa#>ad)*J+JRcG+CMd-43`;A z)v?rc`{!RedOCWBSsGPZaT@;mVOr;mU39N#7Z_LScUCjkdThASAVS^3psP;3j*qdG z?rZHJJ)z+Y?F8Kr^{qx*49&DW)tlSw)6&xWpq^ti+pyeto7$!}?F+1vh-wFXapuYJtf4bRqu``%bT%yy<)Hsxxo zzAyWaFh2w5tEm|Q$IrVg^&Qi6-lxR8Yh{O-eRq}S&PI^+B)2xc1!=bSIR)jTy`DJB z7VEM8OufC&?(u1_do`Iid)jD>R#%)psasH%!L!U&oXx9mrL2T+Z$AxazVq$mPaU&A zQvEEojzkw-(NWLeKEy>lDB>cykh;AklVfPO9D)4!l}-HAZ8_llNQxfGG*ni;YL0#?`CT{WR_VDh(hUv zBwFW{2eS*GBvbE5lwvx*=6uSMlRrg&#+k_B`3G0T?jCu0n$NQMwq+6W%yzHag~$ey z>nQenB~gkS0whYYI)s)MW!WR#W9QeP#d~TR)~Hi6KIV41SHJGcr|Xfum`krS?~>~% zwjU-@id&N;O0jH#)@jPz-q~@^;E3o9MnBep%~!hZoBREp=J>c`gGK?lM(0n~t=BGt+;a2fT9 zL@DOkXvb1L`kXJ=+hwF%$&hCQ9QQxh@iXyNkMpyue3ut|j9f&*-8Ro$aN<-`%C?lt z7a2~AB3C~=pPT&tj~sr5{rqIH8bzW;H|nqK(A+g|)SMN9s(35^>&-nXLyCLP4*hE~ zE3)MKb*hm>>0i+q8uQ(3ulG%n#=!Ll1DC%Jt?{fMaqimstcG+=e{vdrMNbxoo?Q39y882loZ3F*|5j{EMxqouSdl2j zW=A9{C%vCF^f%`jQi%T&~6^+@VAiE?wkHrVayqQVu8 zZ{m5LlC8Ou8=`if{Gsk_^6AT%+)t?rCyA9u_iues32M-C%JKXK- z*^RaRbEuKI)DaTZf1dx(hYMUk+C6%zpB_7WTH56iz1YTP*38wWskSK+LCEWpktpN&-x7~&uuhG*ufDNq`1w)t z2`{AwryZLz{N&&S!M;~|)P53We|r6(?rC9FaX(CQy7SuaJCpXMQ%tSJzWNUaw#OTt z1F1CQnOYud<>z$wUvK~55!Yr(@KBk++r^?w_#Io<*B$OQS_syeQ2P+oTNY)pdHt%R zF>x0?-!IVnk^V+wtU=@QNrs2? zynf4TX7b&kJ||B;p!OKg)U32LZ|+gNtEp(mE&r&tE7bhwo4OwV5%7((rOTI?>9R5Y z)K2ny1?|*r5QUDu_02l*#-V@{md0CU)u->U7FxO8JS$lq)IjYZzgK%bm***I`;+R6 zhVI-Ul-p7J>rPq+sy$%p*ws&Uu|=7SIHIct~%wZ zIj>fBo0e$ThH<1{-m1kG1?lhYtu;ogJ)Q2$Lsu`dH2UEvq@!H;Vf9QgWK zp!m~V)}w?9ox()t6|25RKX(c4&wpn>Cj0x18Fmz<^;#UgVBV|Jn8JkVv*whIw(S}A zG-F`Ns~?u;Nr9FxY9%B7K+u)zLB?O7&zqQ5lXJna$xq!Yoc+v5EAT?k{0C#ax))5R zdXwL2(%jVEE)9({w`|;1U;6Oe@`CJ&jY~6X=j9rUd@{}(`Srq;Le|a9*?cMPo$sb^ zOLWIYGaRgk2CWY|Yx&CEV1?rVi*^TX5j1gATqVQH!&d*;#iSFi_BKs<#WvazZ6?3z z|GIx0zQCl`hWxmg8ofiZaeW5%KKy=3^@^Z0>Rqwv$TM&F_W7%(#bplCu>Q4}mHWPg z`TcpcKs?mM%{O>r?yZBe?1v7UoqF-CZOq#Zx6%)zY%*pf4t~l>7~C#)!{OaucZOL# zxR-yg!`vJ#_LwK}gZhlMBv%@?xJKd`ZG7!w!cFA!ed{Pjx4(dz0~vt>=D z78IqqXLeb{Fo(X8wal!Az0NzzC%EK(H5{y2Fd*je{z1o&dUxxIpk+znt}Bz~E;!_! z?#}wYH9Ru6d3>x>q@Fa!cF}_2+xN8XL4MrI%Ic5i=VlFhwe-z4UE9~+dkm-pwcn%kXAlgx1?Mkm8H`OWjobv7@5zjVi}#M32w>imzi?F%~mY2MBCd61JCg7mjG zeArW(-@bQ&t@~;2cINGLk8-)!sndhm4R_~^JVH(HPJY~(xKAG~D#olRGJhIvSbN{d zL+ilCfvo5cE+T8=Gjn!{x{;tyhgJ`cu-G=XY}%L&eb-q(-&flCP1#xM!<-}I{<2$V zIJ7GXniy^nlO6n*vCw3{+w8b>rlw8StgWG|SaVLk>XQxUB+{~!{_-Xj8^uRSW zF8cSl(cMqGb;gzKEziCTU1H=b9XkyfIcc`DS9}{$(X~J71(s#3 z_PA19@v2Vxha_$JqV&K~cgAXxJy)^R9*I)ywoalH8*`H=#YVm)YC*;l<|2;WkLx3( zCVNh;D)pRpr(x@E#)Ji)MIUZ{kv^s#kSMzwqo;q4d=loxynoBoa!`$b_~NKPzh2&0 zzN<~?x+?K#>K=&-b}QWVZrQ#igRC_D{XVac5BU^V(R<^-Y58>~ZxY+;gi_@sN^ygM zL@6#vk|@QsD-xx6%z;EHX1bFo#qvnT$0=LIni}LN&mh|8-!;YD5!9-DGZ z9#V;jvYnNBk>}O@kh8syu9^DO=g;P*&q#W(`_j1=ZF_m`DR!!(V)eAXQT?>SDP4QR zh&C^^ZtGa-7U~2TbkR9&bWkVSNZ5v>-Kf`Af1S}6!*6=44JCTMx_k76x;pyPwD0NE z>K7ZE>3SQjGYB{MtQD@~YIIY-z1Cr4C*4;DBK?oLOZ9k0)7tFSEBfF5`p>ldzyIaG zEAZbH`0on*KU)E^@fUYqp>A#M_>5Is=)Uz*X@>)!16DNU|2!{xT4S*;>Fj*!Es44} z#w;V<{trI`(;Itsu)I^N`*>dr4w|;)QlG`!6T*%sQwK;?WahTQMROys?ihOM;$!C* z{oE|?>^|FT)F7RO-YI2<A-EZaRqoPkPwhg+hFr&;P z9T%?gSwZbZRPM9!>~(^Dbz?WK%fm5Qisg(kIO zkDX+9J54+_U9VTO%fq04g(;p}!aUs!MN|CSr%@@0^4oKgeI(s+j8R11!rBj8j2_=x zRvi1K8~a3Eb6x2(-92Sg0-~IswRd0j+_vq&IgUGr%JV@_WAvvB$frGd%U`(apdNB z{iqbGK+j>rQ3I-(M3tmQbXxG|u2Cj?onA|V;w|`(I3`8?X0D&MhIKHddHYbRi9|&i z9sW7nhCP#;+T46lFvY)V@m24rQh&eY8w`HVOq!!Z{UA{(9y-?tluUe{yZM0JkU2g; z@8ef1yN0#y+m;Vsc;_*{J@th|?OHwk_J?-I{&e?AyV==k@DryYS61hY5k|FjymkG@ zuo2g(&m`)sn@!cd<^Dxm*zHej3fb?_xXHVG>;a!^C+A}0bf_GZZL-SOk&dQ+8p z`>CGIk%dK6b;ua!W$POkzwe!pRokmTrhSxeKiG2{xk|(z{sZ5{7dYvc3%Vr+q$Hf# znVmW+VA|_|1{2+^)IkN*uLi?D@p!dL&ml{;M63*2*>o&EtbE0P;8r7bl$G5OeC zDOE+TrFcS|L@6F2AW@1b$9f+q>&H)$_$%^kb5dSrf1eUI&%2BBuIT2RFz@Ig>>l-5 zJATy$6-yTAAEYc2o!7`pLY~drwx-?Dpndhn0{5OuD+o$*n({t0=2u_jp6TTa;vA=d z`@VC0PL)OGRoy%Bh_#;~i=C8J*Y0CCGwKETwR3uGH(Hpwsmk!dqDF`3I*ZI)Pk&=2 zwhPM9Ic{<`_k9>uO`;SlCXpz`GMfg2Da((RLn0!r3~NnRWM;UJ3cO<`%8~5;d_1=Q zso92Uzbe(|o!JE^M>bXYG*y&N?Rdi0VTiMnqeH@(3$NC`N#355P1Td1rg)T(L@A#7 zGB`|G9_1f3e-r+ucUgEz)h&beH!PZx;_rHxE$(n-u~|<)a-FAUGkauI1rI9^ToMx! z<&_z?F|sTnVbH79XZLu=jd0ecYDkn~Q8B~rlxxL-Z{?%*4{)7bAJ^Be&U1!E&zw)z zT`LoQ7HWu6+)Iy8NrzwPLxN~ib(Pi-t`yF^u{p%)#-i)6nIxwT(NZYyx*8AD-vzl}L{;can{pxzGZ}Ql=kXm5p zup?{GR@-X(3r3I2s(K|K=-b@G#&1&E2=9cYhh zGV=}Ztb6_`bklv-&EwgA?nfWreBndABvGZivR|z#O|>nYe(K`l+j$xux68K$71V!n z-@0Pb&+}_bs5%mr@#SkL=S6G99Xh5y*Kt3>8myi0@a~D_&hp|5KNdb6IfbevQCIp7 zll_>=Ju=tA!}R&O33X}4UrXNS-qd{f_NVje;vu)F`y@&Uk{m_t+@5^#=!qw>5d%Fc zU%uy$ooco>DE(8^fJHBOl{lR_XpoYTBi~ zRkZ(tIcM(NT53C@-0FR{4ZiSkM*PLb4p#FnuC(>s^n7=S2P`45>m=er{Krj%>kWwKg2Wc-1dF#iu zK(F{v+B)dz&;QfDL*<}Xf(fkR`G0)og;Gel^Fa56$eDl#7C5|Y;8TQI0E{8Z@fCnC zgj6QxV!BZP@n|v~B*i?iSj55{0PTe#(0jK)ubB4II_T-o|I@xh<)BxB39RDze}(|6 zz3{J+!{rN;p78p?2oM)DjRLqj!TSk+5JBpV#emwchy|w)F+KrI0dxW|3Ca+u=9o9O z1$xEVaqFO`KmY%K1icbkKPsO8hush)|H+viWD_e@_A*Fd11rGovB9uGZZ6!04Zz#+Ii&T_!CK3%p#D@qNqlyY%P( zk?}zP9Pg1pB!Ukh3v*FSCdBbYLXHGNpv3nJ;u_FLMm`1MN7y7tkUok2R#xCkf3N?~ zC&KF(zeCpl_arb|i8FzU=l=yF23N}Bu`vjQ3IIl$@hh>&6G2V{$P2l05p-h3La|(k zY@aQHL@ZK7zDz2^2Lywov=@e)31+lFuegQq3;HRS{vrKv;*8&JetI%{`;;e+uXk7o z@|r^XG0t6>{bp4^FW$|#zVzq+G4CvaGYW>~VCV-8SRvA6+&rfLg&e4A3gDwA6EIkE zNae{Sn3I)Bp`!pTWn@iI^=JKl2pnz-IB?+={1@~}oC#Ds|1Xk24g_dox*s-wVi-Z- zsl_uamte|QAQQvI67yeh`hXBTTq?L?B7qBKT!`Q@;Q#>RP?`%vpqIBmuekL`pkG>O z_>cL2UE|6&C#$c9u66IZbMqJ9$UB9;Yi6|zK62?``7WEQ-?He>|6^E|2q8idQ;PXV z0S-|x_P`{iKqiMuJ~2>};3EmiG{~p(A&mjqY*=UrMUcqAn5CHcTj>YlyuyS{3IPAd zTd%~KK*jU_aCd=mC7hrjYQcq}2MdZHQ1+C-$%G{Naz374J_Any^U0yrlU zlT--0$f2+Md&5^Kt>DPT68>w$XDM+eQ1Sdf>}X;0CSh)+*AoMJM??=AQa5k| zVIqX?J3*kAv_P+T?5%as)35c@zC-1pS3>JY#kGD2_dpB`UwIB(3?S_X6<3`2;p@RC z!VWM3g!CIUU+`F9@8@H`gVT?M=spUVko$oDT&c-=T8QE79Ro zajhS7-hdQ&pNuUQOND6m$WhUO%@>@%figA#$oU{hj1L@-4^bc{4@MA>`4K=Bl2{_B z0(wyk^osl9t%II^t)KQCDhIt19X=J;`jO$YAWJ6^0ZXX2`xkp5aPN0f= z0;mB&8Upn|5h@r$xV}kH`sJbDgLGdafm1XRKiI)Dp#&#}Oo&*9La_v~cwUeJN_n&w zhMWnewLq_!^VT}(>GuR^-=T8QE71v5aZiAQ^zRqeNM>b#k|khDVec+r!|)AXe4vgF z5nPU-1P!}KhyjUV8ZAKw7%7272n`w9y91z~+5){|jfd7jProNX`wo?ZUWuxoihBaT ziWzW&X36kg!}JyE-g2D$Q1C~c3qZ>l3?6ZgL6KO_%XghKm8;6bbV5Lx>j>cB;~)>@A2G)v)eXn?N5~$n^TXnbm-Um z@e0TULKd8_W$?&A?HfcXE)zWxkm2yzlMpHt`l;YaLK%~bqYxWgq#TVP21paoNd0ZW z7nL;BSFzdtv*62AqUxvOT0ihcv5yCf4_LmV%M0f^o(O`DNDiR+g=Pg@U}5_JmpI}` z4aYc?egzUfONw3q8bHtkrnxW#`afHsS3JN&pr82tmDk_U2P_ooK3zY&*3HyptGA`+ z7N&;g`%X56Cmz;4@OZS)vxt7JA4P9SGQ;GCD?phaCt}bauoet1QYaL}@Q$Em3VA#x zHc6b3c~WTSLp2+XFo>@71#Rls-qvl!Gp|$_$N;$W`Nwq5ddE}mm-fN%pbHUk@xf9 W?*xx05jHU