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 e23ab1b1..4dd35485 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 3d4adac1..911f2b94 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 c1223606..c8ef1734 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 c371bf15..5f7192d6 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 0dd4f0b0..16f26194 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 931aba35..41762893 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 00000000..8f40ee41 --- /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 00000000..a6b71a4e --- /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 07568bec..ea80c0d0 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 00000000..6b70b1c0 --- /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 262b22e2..743871f6 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 00000000..31d526a2 --- /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 8ad48a8c..862ea24b 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 e9cfac89..b9cffd73 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 f08460c6..0e2c99fb 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 c8a49525..8ed634c8 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 aee8d292..872ccdbd 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 1dc4550a..db1a6743 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 96f389d9..57d84b47 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 bd5cc2b0..0adde593 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 90edef88..09aba782 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 06b0ea15..549562a8 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 559506c7..22230163 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 83160d63..a97efcc7 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 3ab162bd..ab91cb33 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 78bd5111..c7751140 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 d6804e3d..a6bc730d 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 9cf6a7c7..6c845de2 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 f1b4f35e..e31a5bb7 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 d0a63a20..203afa0a 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 09f17c8b..9473c245 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 1a252c7b..776022b3 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 ba0d0739..e3621549 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 ed0d85b1..5842db53 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 552c9dc8..d727f886 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 e3397644..b1c0173d 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 ffb9e2ce..82602a85 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 362e635f..81e4236b 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 8adf26b1..e4617838 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 9aaffac1..c2b2fead 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 eceb3737..ea9a1940 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 ca3af455..b2d1772d 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 75c3c27c..44bdc6b8 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 413ed21c..27e7bdbb 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 25022562..8877a999 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 f34e6237..5e28d20b 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 fd359e42..74ae3a0e 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 4c068cae..e91e65a2 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 d0e13f69..13b766f5 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 6f161ab7..682b2c69 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 f03d1790..95d71517 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 e6d2f085..7f92b5ff 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 59fe8981..80bbd506 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 584f98ee..68b0ac6f 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 523b1431..337883ec 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 619ed7b4..9862df41 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 dfe27ad3..72cb03f3 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 6edff0df..02545ddb 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 3fcfaad7..3fa66c97 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 51938f8f..592cd0ff 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 27630780..3577cd9d 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 209bc9a4..70940397 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 7154b46d..4592b71a 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 2445fd8d..ea898110 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 d2610d2f..349b5e52 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 4fcb0952..a0b30313 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 2f421ce4..3c5f0658 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 a8cc2b01..6585b77f 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 223c8b28..48e566bc 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 13eca5c6..5bc0c0c8 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 418829d1..42ae43b1 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 7e991490..63a6eaba 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 5b2d292c..0f090684 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 55637e75..9864c040 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 4858cef4..a25780ba 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 def635c1..6608008d 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 3c5bcdd7..eeb40b24 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 a338a81e..ba3ae575 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 903e8986..c5e13314 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 8ee21e9e..9116ff95 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 29317e63..9bfddd14 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 d85aa401..bd1762b8 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 16cba2dc..d4d33eb1 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 038e3daf..fccd3b5a 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 0599e9be..9fed6559 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 4e92a3ba..c016e562 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 8cb9745b..2fb7dfb6 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 24579667..e609e703 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 394c4fa9..32892217 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 6aed5703..811ee916 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 844b1fd3..d1259a51 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 ac282dc1..66d6d73b 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 980b87df..80793bc4 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 33b9993f..8224fd87 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 ff6c0ce7..da61db9b 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 211421d5..2ba1b482 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 853ce988..c6b4fa11 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 5bd11df6..0f56bf1d 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 c456b4d0..70880665 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 2af22aa1..63498f8a 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 44318602..51ab2fe4 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 58d9d2ff..13616784 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 6071d54a..b4e74a74 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 8a1168eb..a2b8d87b 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 e1fb4553..1f2c69fc 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 b5e319df..0bd371f4 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 75d03920..c286d494 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 ce302fd0..62aa765a 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 dbd18263..d773423a 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 be51973c..44bf6949 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 0c431966..e3adfa2f 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 66de308e..ae3d341a 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 c3848782..fc88d361 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 be1d9681..e36a092c 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 967dac97..d7fe026c 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 ec0f2ad2..1eba21cf 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 ae6bf1f2..4af8d252 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 3dd05656..430577a8 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 725d82f5..dae5cc8e 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 fa686295..92739b4e 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 3ff5efa7..cec28f2b 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 8001bb86..2f11b556 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 7b9c26c0..1b54cb2c 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 e69de29b..af77c4d6 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 8288d9db..a09de841 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 34d7fef9..9fc49014 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 7e6c21c4..5d84ff3b 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 1332f3d5..ba38a2df 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 0b7fecd2..568b8079 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 77c78bb3..77a2c9e3 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 e62cef2b..e6b4dd2e 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 1e376e65..2a6dfa4d 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 08b626bb..d68b84cd 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 df784ff6..6e0900e3 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 3f99d87d..820cf39d 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 67b30cd6..ea0de96e 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 3116376f..11294728 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 a86d3ee3..ee184f08 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 c60fa8aa..d75a8271 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 9d427346..ccd38da3 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 3f3878df..70d86dc5 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 07db3414..ee5a64ee 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 fc76e6f2..fc39b3cf 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 37588506..d98fa04b 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 3afeedb9..5bc91e9c 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 964f361f..bdde3240 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 857b221d..0034d7df 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 9d99fd4e..a3d6442d 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 9e7c3cc2..13dba2ed 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 9f1580fb..699bccc6 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 9b1709d8..7673f863 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 a7e49a52..a47d7725 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 3dbd8ccf..c8f6ebc2 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 8e596f32..1e53b2d1 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 51cdfde6..bb35afc2 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 c934701e..ae423ad7 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 14110ac4..972ff90d 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 15dac53e..e548b43f 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 bc52a733..0f1a3162 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 ba0ead47..e52ff31e 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 d64af1fc..c4361308 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 79a34a23..3d3008c9 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 7812ce01..f1632059 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 9fe52db4..9bca996b 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 098ce67c..f2128aa2 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 22b81c76..3824720a 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 a715e0d5..9d0c6ea0 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 3e9cf911..7023797f 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 8782627a..9e6f0e0d 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 1a7213b5..a741dabf 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 84528b00..3cd24998 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 a7627d55..3e53a696 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 c003dd5e..041f5eca 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 eb012203..7607c443 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 4d46b7d6..abde2da8 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 d9053647..fbeb5a68 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 6aa33142..0b2bacde 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 14e38a9d..47359bf2 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 a7275ba6..70bcd12a 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 c58d14c5..ece6e3c1 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 13a26a6a..4f5456c0 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 9e096479..3dfe1480 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 042b8353..4b14fdd4 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 d85b2dc6..b92abaf0 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 c7b650f4..037c2834 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 59cc12b8..19a31111 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 d10dcf27..d47ba0f2 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 9d93055e..16906710 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 a317b68c..0e334ba8 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 a04f9aa5..d86af9b8 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 46224632..1113d09f 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 12a9789c..ca25a493 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 473a2d6a..4546c201 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 d3f509ec..63f971d8 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 6758f237..014511ee 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 0161df53..edbc49c7 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 0aba0442..a3c53c2c 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 b7f0995c..f644ba6a 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 98f4ec07..5d6895dd 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 ac0ecf90..f5374060 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 7822c656..de4b2cc4 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 39b3570f..c563744d 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 d98ca43a..1f97690f 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 a3dc32a5..839b6471 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 72863896..d0aef147 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 733cc6a5..443d17f7 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 c8953d2b..73d294fd 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 c513f468..6d740bc5 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 cd3a21a6..340c2be8 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 b46a0ff4..f080a178 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 4c2ac94e..89dd8c55 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 fd5bc7fb..394c6e9e 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 4824548d..415e56cc 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 dcb6fd0f..c2d5b8d9 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 080dbd4a..bc780e23 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 b52f6d32..a93de5f6 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 5c26df3e..3b4629eb 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 d11696d1..773aeacd 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 c29d4726..33bd994d 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 17f56393..50775063 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 3dc2353d..6315286d 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 94844d28..c1468cfd 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 58bbea2d..30258a03 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 6380a7c9..ed26f3d2 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 15399e1f..fda9e93e 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 84796096..3d36c86b 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 f4fb116e..58df15e9 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 6c4c8400..15f4b239 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 abbab259..b8c4b3f3 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 826b1c6a..a2724fe2 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 e69de29b..af77c4d6 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 404667b8..b56e1e1d 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 55e1841d..6b2e4143 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 efe9a587..8bd82a04 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 50a05f5b..39247e56 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 31da27c2..064dc771 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 2ba38802..cf602625 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 d7e3965a..134826e9 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 9ef5a0ce..dacea905 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 5f45bbec..ac8e7526 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 b028c56f..86c65907 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 86512a09..c0c8384f 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 fe362604..9b526ebc 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 8f1b57a9..b80a989c 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 e3b6d363..1d9ea544 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 09b55856..15f500ad 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 1088919b..db09f6fe 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 92b1b89c..5a44d746 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 136a4667..b64aeb0a 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 fd8361de..014fe296 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 0a2746bf..1f9e4ac7 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 1a7e4a27..9157be1d 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 b10996e0..210d0217 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 d34760c8..8eb3de4a 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 0b152ca9..81dfba7c 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 bc1fe564..5ac6c24b 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 1aaf7470..6d7ca165 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 3676a663..d8a10f52 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 ced1f43e..9b55a283 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 63e7aa2d..1ddc2f98 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 2626599f..d591a5dc 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 8cf85ad2..d96d7f23 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 75173665..976ef679 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 69cb0b1f..b884d75e 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 99de1093..f4502b98 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 5974a93a..0393fba6 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 e8cce017..a8691624 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 1de06694..48a21b8f 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 ae52e42c..11936081 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 a4624577..925acfba 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 2f244b77..4104c47e 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 f7ffa54d..22b90603 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 d8034f5d..5b6ea352 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 7af1bd6c..2200b30b 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 add14579..1be71d33 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 dd3dd82e..e822f511 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 6d757518..21d0c258 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 df29afc6..d661db94 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 687d46d7..d25e0dae 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 9a12649a..fd38a931 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 e5dbf3c9..502a3d3f 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 3dacd73f..5ff14a24 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 4af7031f..e6b1c5a4 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 99831c6c..d023e3b7 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 be37b1f6..024574e2 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 85ae3e93..61c75d2d 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 bad3a121..e0009038 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 02a47803..ff61fe35 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 4967c0b1..f05f5345 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 92ae1682..746e0803 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 da460f09..cc0bcf5e 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 f0ca3496..ecea3c34 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 9a320999..d7732755 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 03e2a245..9e8d07a4 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 dc420e3a..0843b7a8 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 9941897a..3569888c 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 f68ea904..bd8f1382 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 a2ad34d1..c2c3bfb4 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 9dc14084..2d40e464 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 24eaa1e4..a4b0bfb6 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 1191a9cd..7d289c75 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 0153d33f..a960d4fc 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 0759498d..8d2c2be5 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 4ae893a2..53bb5b05 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 b4e3460e..2e45260b 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 0f5f42e5..80adc63b 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 509212ae..7cefec48 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 8c3bdc07..bad9083c 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 6b80f42a..91965f24 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 6e410c61..142ec140 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 72ccb7f1..b005b5ea 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 7efa6691..7e9766ad 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 f323d9e0..6a2bfbc9 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 13554ed8..c631672a 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 bfa49dcf..813bb1f3 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 d8cb7741..8cc54cda 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 65994264..e3f07ccd 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 bb6e324d..bb437e1c 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 53053b70..16c9bb20 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 66a8e877..da67541f 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 ecc1aa15..c84fe45d 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 2254af2d..ac820c32 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 f03a6f69..cc7f6b24 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 2edba31d..03ecbee8 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 2cd0e392..e15597a8 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 5875957d..e1e7a113 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 90585dec..41e96f21 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 24965188..928715e9 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 2018dfff..26434ff6 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 b138aff2..c0f95ed9 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 d260a760..633350a9 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 6dd50eba..9751de90 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 51f1f267..20d4395c 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 ba503a9b..2ce74224 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 209615b0..faf21130 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 47a30a1b..f6578385 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 0cfb5dd1..3aaa1c09 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 1c6d78a0..31ba729a 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 4e268d41..dc2ea90f 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 04e1cb5a..68ab7fb3 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 ee1c6d32..7778d07b 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 20dc2312..067afb80 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 1430219f..802c72f7 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 5164190d..bed0b716 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 c763778a..1c03e685 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 6f5c5322..4d57cb1a 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 364f2b98..3228e5b0 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 7f55d1d6..3aa5d48f 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 247b25d3..a55ba231 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 14bbbf70..68b42c09 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 53418acd..8449cc38 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 54f57294..d5a99056 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 3a24ebc6..227c7454 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 375609ad..b3261130 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 688e38c6..dcc7413f 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 fa404b54..1876f007 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 b4ca124f..e9493afb 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 1e248d15..2e4982d7 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 ba662739..3dbfb906 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 a5f5e71a..9c44dff8 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 d013611a..09504b94 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 70aaf894..badc43d4 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 a493dcb8..db824bc0 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 b341b9cb..ef9475a8 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 96e647a8..26409262 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 92c8f8f3..2c6f6c55 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 553ba4cd..0baac00a 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 5bf499ee..89551f13 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 59054994..4dc30d2e 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 d1d18647..aaead319 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 b544e20e..63ed07b5 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 09f1ffdb..86df9fd0 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 e61e8aa9..826fa455 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 be1377a3..19687210 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 8f6a5d67..3cd80349 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 38151d23..53676331 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 2adfbfd7..84c4a397 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 553eb985..2958aef3 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 769f7401..37c0a100 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 63c932d5..18bd6a66 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 795248aa..1617d47b 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 18609d7f..ec44f097 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 f078fa08..b929f149 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 0fd22dc7..0acaea64 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 8efdaad6..c7c5d6eb 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 d37348f8..012f2b64 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 a4f5757f..ea67e8fc 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 0c3fea91..7ee2815a 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 0304d78c..43a1cd48 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 5b315acb..1283ce3b 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 a612e894..f395fb1e 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 45a98cbb..29d74634 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 fe61f433..bff97330 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 5e1aabe2..dfa8836f 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 467c012e..56860125 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 78303be1..f14026b6 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 4e2057f0..e7e70b35 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 e310173e..9c67f4f8 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 e8734bc9..86e054a5 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 1396760c..0543c85e 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 6294c75f..1ece53cf 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 b6b75909..be68ba4e 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 d07b7638..8c7a7afc 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 00f2ccec..675bb571 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 941bf074..96c8069c 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 7a17a1a8..6fafa0d5 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 f6c67b05..16c6baf8 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 7b76bf58..b21ff251 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 0acf651e..c4f0aee2 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 e42aa4c9..e89b7f07 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 da26f14c..2cd7f82c 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 98beffba..61167e39 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 aedd668b..11f05b1c 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 e22ea00a..c0898f88 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 b2ae5ccd..97606c24 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 ebf0554d..494997a9 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 720dff70..13714e57 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 c961bb49..d2a5e933 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 ff44b70a..15c62f14 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 a282f937..0408fadc 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 00c4fca6..4a3249ed 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 2cae1e72..56463963 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 ae461888..36d49e2d 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 096b6505..72f332ec 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 b19b6564..d1ae24fb 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 3efc5021..8577cbc0 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 2be15130..62faa223 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 d3ea614e..6b9e4b18 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 b63007cd..02f44a83 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 9afbabb5..8f0a231f 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 631a4730..57202f70 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 80f0238a..d266f992 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 40d9593a..acfd0f88 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 b6b606de..3c263f67 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 668dd823..b940131d 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 25551daa..547cba18 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 a5ab2964..f02ef812 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 1ed1075c..95b1aacc 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 1ebc0248..e5084fcc 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 43c297ae..5de73a15 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 69109091..6303af01 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 0770bb44..60a213e8 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 2860f6d6..ef5af902 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 c1513dac..9bd70f68 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 f8c96d7b..4bbe98f6 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 5f42ed0b..bc152999 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 5ae9d3dc..d406b5ae 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 836184f8..d4475d82 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 b2f4c4bc..ebcd1d15 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 48bb7014..4c69923d 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 d06122b2..97e4baed 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 64c7d68e..83c295e1 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 38c28c33..8d612c73 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 62d948aa..aa3a875c 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 64b81aed..5aade5a2 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 d46cd37c..52466a4b 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 559378e0..2747f3ab 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 9af13253..6772e9d2 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 66677161..475ad8e1 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 b8da6cd8..d53af349 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 0a7ccd12..17b8d054 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 f614d12f..675c2bcc 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 20abd13b..a7bb1c5e 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 8a38a56f..f873277b 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 d601700d..80df5fc9 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 b0c7a7d2..c0b70c39 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 27b632da..8cefb265 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 a94793cb..04cd6272 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 3ef06793..09fb6678 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 f1fa0b04..36b34384 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 f269083e..bdb3b79d 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 2c36e95e..0b5b7ca8 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 5b59aab3..008963df 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 43ad386a..b88c1fc9 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 ab470bb8..f62b043e 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 2cb700a4..a36cac0d 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 c80323c3..3a3158dd 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 c97da02f..d2e102ac 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 2e77942a..942914ba 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 4f075a76..492d617b 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 8e07075d..289b949c 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 67133908..88278e0f 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 2eb67e16..a9e9360d 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 89dd4c0d..be5797b2 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 401057e4..402e4245 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 cf824f40..67fa1da4 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 6c86eeb8..a1146ccb 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 2739e2d6..80d76cb1 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 7a13b479..dfcd4b7e 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 13e995b6..0f635e07 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 d252a25a..ca70121a 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 093d3571..ddf4535e 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 16279a6b..b82a579b 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 01af20f0..dfe9775b 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 c1df8d3a..d5466466 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 e150692f..bf36f820 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 977d7b8e..cc33a4ff 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 bd4cbd0b..baeb3e61 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 9163cf7e..70ae40f8 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 c0ac2cec..fea48f84 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 cc0ec13f..1cba5ab0 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 d12468ad..bb5876ff 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 c71e60a9..d54f4346 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 42a8428c..bb2759a4 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 9e7ee823..2af424ca 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 03012f31..6bedfd19 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 5a87335f..30e2984e 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 76453bbd..6d9561ab 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 623e48aa..0d603696 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 4af1eb40..a326b373 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 1fd974cb..c00584c6 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 36ece80c..8a36dbd6 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 5083f272..06f3afe8 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 16410b0a..fa4a023a 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 d267b11b..fddd9b5f 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 ab06b526..9fd34334 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 e2e667ec..81c31ed3 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 a1792819..990a537a 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 a1b1379f..d05ec8b3 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 c8e41b16..f7faada5 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 e3034370..fefac946 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 432bef62..55973850 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 3321da88..3f204d36 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 08068f68..f7f27a6a 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 a8f2dfa4..48fe51f2 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 a9a74868..3f0f3986 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 ff153400..b5c83d30 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 755113f1..5819c850 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 fae4f13d..aceac5b0 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 f55cc0b9..6b2e1a81 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 90e6ad50..c1760d77 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 84730e7e..81fa7299 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 a0e8b347..345db44e 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 0ea8dea2..682b44b1 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 a2616d8e..501ce220 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 f055efba..2c613970 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 c0a639c6..918f4d77 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 90424421..42b26c3f 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 537e0e10..d010a106 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 1a58c763..a1bd80d4 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 87ca39f0..bbe920cb 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 f3e3567b..ccaa3f0a 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 7ffe475b..50d8fb21 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 63e958d3..d4aab59c 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 449157d5..68c299dd 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 eeec9688..23b1775b 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 4727d1a0..b71099cf 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 1a8159f2..91f19506 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 423cbce2..bfa69c32 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 cece17d4..b1ed72a4 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 30e4b3df..17a719a2 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 67a75233..88a18d3c 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 d17ea1cd..3b62393a 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 fd576cc0..64bb3daf 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 828397d3..c731db33 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 aff18181..43aa7440 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 ced28d6a..190d1d63 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 cf9482d3..a310b191 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 516759d6..9bc3a579 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 f1972ced..caaf82da 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 1b33ea97..f94fb603 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 f0221699..27205ec0 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 15ddbcfb..617dece9 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 3c164647..9f4a1685 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 55b2c45a..c0b59615 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 675eaa51..6391e30a 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 3c202108..afc99503 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 c65c7d2d..cc3c40d9 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 8b904dab..25e6418d 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 196ba075..1c9d02a9 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 84b0d3b8..6d41467d 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 a90ca52d..9fe5ffbb 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 0b902517..02e38f63 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 613368ff..8394aac3 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 156be134..90bfcada 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 efe31110..0b4f1e45 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 51e07857..05ff22f7 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 3e5229dd..2e9909e7 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 ca27a998..ea4f15e7 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 d1783bb9..214b1c12 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 e2a07a9d..47c0c82b 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 7bbbbc21..f2e3c907 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 54954228..9e7d1b3b 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 fa6d2ee6..71cd56cb 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 882af0a5..4d9b8f4c 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 151eaec6..c9f5d769 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 b04ef26d..d4b8c7a3 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 42f989af..378a2c47 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 859a70dd..12d0cdc0 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 6a0a1375..0976bb12 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 7c00e676..7892cde0 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 64996137..5a564db7 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 feec73d1..3aa9b899 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 e9980e1e..63334029 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 e95d8212..f69eb957 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 3b8ff373..5b0ed3c5 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 42b56461..15010b18 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 2053a256..a2c715ce 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 c28a78f3..98426800 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 d1825549..785ede3b 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 c321a559..d208f2f6 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 57961019..1dcff5e9 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 7eeb19d4..01be22c8 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 1374733c..69a76219 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 59b1acf8..14453184 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 51c7e1cb..02d3178a 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 19d6eb6d..af262a35 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 7a9dd8ad..b0029968 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 200d86e1..67de52af 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 9fc74821..cbd3be8d 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 8edae653..a6c0ff2e 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 ebae5110..3185b3d9 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 f71d3083..6475acde 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 f25cec04..dbff1ce3 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 2649a150..3b9c2235 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 3de9a918..74e1d668 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 b4ab1ff6..af263e46 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 890fb07f..8de37742 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 988c96c8..52597519 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 e9253beb..bacdf38f 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 93aef602..0bfaf0f1 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 fd7e3a82..dfb3489c 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 0751bed6..f844feee 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 3e5abcdc..f7928c1f 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 6a00606d..51a07462 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 399d8c54..8f78f94b 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 4f790451..7e4c2311 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 95e268f2..0898a30f 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 76bfaef6..4fd190c4 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 9c307689..47dda346 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 854e3212..93a92d43 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 d360249a..44f7359d 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 8584fa53..dabe96b3 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 d1bce883..c5024e19 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 a16af905..b6082673 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 4726075a..c50b6738 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 facdd02d..99604d02 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 87111a61..73e3da18 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 6c09c591..50b78864 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 83080a3f..1301d499 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 77aea05d..3280d838 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 613ad732..64517dc6 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 9411236d..08a86f9c 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 ac6e7c97..cc6051b6 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 cf9ad605..a7fdbf62 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 32be34ce..fc91f45b 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 4bb980b6..028288d2 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 01887f54..404fb674 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 8f85ca76..ea7d3e1e 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 fc02ba90..bc5b6640 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 ebf0f69c..03e3a680 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 6382b8f4..901a4be4 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 7f735d1f..1ffee503 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 55fd1f40..a77ac53d 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 30118021..6c89e430 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 98d6581f..6796627a 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 be99965a..78a282cf 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 e05f3b90..2e6ecb71 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 7ef620e3..4e057ae3 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 6a9ef5d0..1b5946fc 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 2e1927ba..9c94c434 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 4b57432a..0f5eeb9b 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 e9b1d2e5..5e6e67ea 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 3a80ca31..db160588 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 3faba21b..97a0aa8d 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 440c3ee7..e4187c46 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 461c2d7c..d5abaa6c 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 3aa4a4b0..6db45e20 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 ac72246a..d2c40e60 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 d8960c52..265f699d 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 91e13681..55ab7614 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 0bc7f9c0..197a34f5 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 a4bca8d2..ab2aa6e6 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 77a7fdc2..d0bff02a 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 4007803a..3acaacb0 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 839bc8ff..72c4b186 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 a56f990f..c935fff2 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 ff97d2b0..63df53d0 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 1c6b4351..1056131e 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 2be2143d..61aa9b2e 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 2792ce24..1e56ffa1 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 f93d49d3..8b8b51e1 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 eac0fd4b..e7ad4998 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 9c0108a3..4296f40e 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 ed8134c7..5cb81366 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 819f5d38..fe596f56 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 5e5ca763..881182a4 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 185be50e..a78328f1 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 ddb2a867..b1ae4b96 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 11d0aa55..7e9f1608 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 d4370aa7..e7bda4a0 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 806be46c..a3433bf6 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 be17a258..a90f0d02 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 00b5248c..d0ea52bd 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 8751d931..a7961416 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 94b2898c..57b7fff6 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 b568010a..005b239b 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 604e5a03..68d52211 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 c31a661b..cf09407b 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 25906e99..34feffa2 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 f2de63a9..e4e9eed5 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 e6d7f1fd..2b60ec2d 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 99ea6348..f8228570 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 c09841d3..c024cb82 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 02557da8..1c2502bd 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 a188ac37..f4fda51f 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 5f7638f2..261e390f 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 4fa365c2..722e562c 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 4262edd1..08945e07 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 07edc761..978a9795 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 ca7507a5..e36aec6c 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 bc7921be..c5a85ace 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 e65097d3..771096d9 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 eae59ac0..caf0f266 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 13caf648..5621e226 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 ce3535ec..e569bd8e 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 89f1014d..ea58402a 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 f3d20b5a..81de0572 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 39707e34..80949ae5 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 d825c81f..2af94b75 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 d850c663..399fe92c 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 f2ccc08a..8ebffc7a 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 a1a7288c..3b5b41f2 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 e5a275ef..73b920fb 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 fcbd0a5d..fd74b05c 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 f7b39b98..520178cf 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 a085751f..7761170e 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 f14830e6..23c0ac0c 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 784ede23..5682bb43 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 1bae4cbc..573b00b4 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 c408a917..fa7e84af 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 98195e5d..32beb91c 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 858d5e7e..d8bf9daf 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 814c87da..4cf5316f 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 7fa7b13e..f7e72035 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 506f7ade..051e6e6c 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 6e8cc193..9c06d3c3 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 74617d0f..62f10861 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 c24900f8..8d1c4d8c 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 b7b9806d..f89927a2 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 4748a9b9..760764fc 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 d3193a03..b87333db 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 e1e05fa6..93c5403d 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 98f9e835..11c1cb55 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 1ad78ce0..2358044f 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 158889ea..6e43445c 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 cfbae281..fae5e173 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 e565e11e..704d216b 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 c3cf9c19..4253d271 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 63ad8e9f..b567f631 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 23069ee8..a779d2bc 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 9050e770..7f31fff9 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 671a6d2b..1f11721b 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 e0059057..bb686059 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 5e7be360..93a52ca4 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 0f9343c3..df6012dc 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 ae2bacc0..018faef7 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 d5e20a28..4b222b16 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 0920483b..a46d3a1b 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 f3fda13b..34339642 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 595dc693..c78d8a4a 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 9a071464..d81eb2de 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 de805049..dc50147a 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 fa4f3d4e..c6ab2bc8 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 ef9ec76e..5445474b 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 0292eac5..31891d87 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 0e151ce5..60129a65 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 ee1686f8..9ab2b7df 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 35b49e4b..934014f3 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 2727fb35..110eb3c1 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 ed330547..91169802 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 73e7c03e..a88700e2 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 6d299b58..def3488f 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 f7fb0a96..b3845fa8 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 89e05725..0498da99 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 6765fc77..834a2838 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 8b2b6be7..fdb0c0ca 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 ec849bc0..805f4416 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 11484d20..5a336ea6 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 a996e952..47e8c26b 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 0c0609c4..762342db 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 33467fd7..c4b7bb7a 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 47f4b1f2..d76c0afc 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 173611a8..43de2561 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 9cb02c87..da4deea0 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 4cd650df..b7715ef8 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 f044f513..608ae3c9 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 0b636798..9e11b9b6 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 efc1af4e..dfee848b 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 b935b6c8..c10a9ab3 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 5dcd74dd..a9595d48 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 4fda7ffb..ebc3f7ed 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 8a2dff82..a8faa01a 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 0cb74c13..a8ea078d 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 2ab42318..a5ce2708 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 1723ab2f..1841eee5 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 fb3dd1fe..0cac408f 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 64722671..08dadf03 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 23f35c91..fb1b0c1d 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 5e5307d8..74ea4d9b 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 db4d1d29..b181ec64 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 d1f2b7e4..9172114c 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 5002f684..f2291973 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 137447b5..3b1334fe 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 b01d1a33..87ae3250 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 b5061b0a..e733a5e9 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 45d89f47..c2297318 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 918eea31..fa2d1558 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 297478cd..78c0ec5f 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 1f466d3c..e8a4cebc 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 4f234673..e147751c 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 87cc9f2d..b1a30b43 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 2700368e..d472fc92 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 375336fb..c3d6c2db 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 2762fd03..f238a6a0 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 e1ca8520..c81620a7 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 4663db5b..2dc1ca2b 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 fcde87f1..68dcfab9 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 9c2651fb..d0c07c9b 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 32fd2d93..941bbb32 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 800a5553..2f8b5071 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 b48f7357..47ca2619 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 66a8a24c..ce95a9df 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 9b50c057..0a326c0f 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 65fbd9bf..67f76388 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 05086ff9..e2bce1fc 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 f19d4cf5..b6ebfdc9 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 718d6343..3c63a4f2 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 823a24a2..65e41eb7 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 77227831..e44c5eab 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 1be44730..b9f51097 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 9971b14b..2e525c2d 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 baa8166b..20db8e3b 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 3010d94d..a1c9c862 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 2c577dc3..3e612be2 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 f4fb0dc3..fadef815 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 c3a39dec..e4da6c57 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 4aec97c3..1b1bdfbc 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 7731cce0..7c8546d7 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 fe9aea13..a382df28 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 f2fbefdf..baa29069 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 133186b4..8f5480df 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 c8b7a0e1..7b0c8f6b 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 bcd75f6b..0bc39c0b 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 e3b48354..2ed8eae8 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 c87c3b75..58411cbc 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 987acaad..19c80772 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 34c6649d..2fab4482 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 c737c63f..d0ca233c 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 f8c9a19d..1e4865a4 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 08a2429a..62a85911 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 bd9185de..fa25bc49 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 f2b228fe..8ca4f6b6 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 b826b93d..d42e4f6c 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 acc7fe5a..1a82f137 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 a560bec3..4b8687e5 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 4026c931..2268171e 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 1b0f6dcd..c8bdda4b 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 47cf0c6f..aede4161 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 6b34d6af..5089a34f 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 3516479d..7dd19989 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 97e02e1f..6e3d6bdb 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 4638017a..abea129f 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 8f7ae167..843ca8b0 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 259410d7..2070b0f9 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 4397e45c..7c0ae921 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 a42f059b..ecfcde95 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 41278ebc..130927c7 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 e8ce5189..94e541b0 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 2080a46f..4e6b2b87 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 ccb2856e..c65f1c51 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 df9cd691..35b9542b 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 36fda563..5e7a33f5 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 8d77361a..3f6d8736 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 0012459a..e19948b6 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 9f0ecf9f..1bc88c7d 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 3eb9e3f6..61520a38 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 01537a82..69cb71eb 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 9d747f60..f273a189 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 f189ec16..e454a47f 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 b8991302..5ae9d5ca 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 2c097c53..ce04fd7f 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 bc5e0f73..b3a4be70 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 91448b93..b94555c8 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 e81329e0..a74230a6 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 b91b4918..2411504e 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 c7d782e6..406732cf 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 bb6914f4..3a22d808 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 0c9ab6f1..8ee82db7 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 5c31d52b..4edf012b 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 6d128b9c..b9fc8cb4 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 a97ac854..898d41a0 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 1fd8bbba..7d1bfb61 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 417f5a21..afce0f06 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 12571c7c..e4365f9d 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 b9cd9399..8774884e 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 9087e95a..641863c8 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 b94f5e6d..2753a0c6 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 f11b2909..bd675a99 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 b4afb249..782c7e74 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 ece08cae..e185b5a3 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 d24ecbe7..eda6b901 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 5634e199..dc8d0b3d 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 b1495f92..5cfb06a2 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 dcbcb2eb..53a192a5 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 779eb9d7..8153ea71 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 07f97fe6..c5513a58 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 831bb856..73414dd3 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 a6155467..aaf20913 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 5cf83c9d..68c59fce 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 2414a78e..98a2bb4d 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 0d627a02..fe7153cf 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 0d481ce6..fe9d9c62 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 6040398b..61004101 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 2eb3e155..f1b5d82a 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 65771430..5f9d483f 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 0d481ce6..fe9d9c62 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 e721224b..ab0218c9 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 d0aa361a..fa6508a5 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 c08449a5..5e1ee8cb 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 63ce9dde..892d79a6 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 32a67ed9..12fd7d3c 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 396ddf27..76b7af3c 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 ef4bdb0a..478283e6 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 5f7192d6..179f3819 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 c9f5d769..0cd88e61 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 c6b4fa11..de43ff87 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 f6578385..1d5b1fe0 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 d1ae24fb..af2a2f93 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 cc3c40d9..be750dd5 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 4dc30d2e..0631e0ca 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 15c62f14..5a40b187 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 653625d9..bb7ee1d0 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