neuralnode 2.2.8__tar.gz → 2.2.10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. {neuralnode-2.2.8 → neuralnode-2.2.10}/.env.example +22 -35
  2. {neuralnode-2.2.8 → neuralnode-2.2.10}/.github/PULL_REQUEST_TEMPLATE.md +15 -15
  3. {neuralnode-2.2.8 → neuralnode-2.2.10}/.github/workflows/tests.yml +86 -86
  4. {neuralnode-2.2.8 → neuralnode-2.2.10}/.gitignore +41 -38
  5. neuralnode-2.2.10/CHANGELOG.md +97 -0
  6. {neuralnode-2.2.8 → neuralnode-2.2.10}/CONTRIBUTING.md +40 -40
  7. {neuralnode-2.2.8 → neuralnode-2.2.10}/LICENSE +157 -157
  8. {neuralnode-2.2.8 → neuralnode-2.2.10}/NOTICE +15 -15
  9. {neuralnode-2.2.8 → neuralnode-2.2.10}/PKG-INFO +222 -383
  10. neuralnode-2.2.10/README.md +332 -0
  11. {neuralnode-2.2.8 → neuralnode-2.2.10}/THIRD_PARTY_NOTICES.md +12 -12
  12. {neuralnode-2.2.8 → neuralnode-2.2.10}/TOKENAI_CLA.md +59 -59
  13. {neuralnode-2.2.8 → neuralnode-2.2.10}/TRADEMARKS.md +21 -21
  14. {neuralnode-2.2.8 → neuralnode-2.2.10}/docs/documentation.md +263 -262
  15. {neuralnode-2.2.8 → neuralnode-2.2.10}/docs/replica_voice_ids.csv +21 -21
  16. {neuralnode-2.2.8 → neuralnode-2.2.10}/docs/replica_voice_ids.md +41 -41
  17. {neuralnode-2.2.8 → neuralnode-2.2.10}/docs/telegram_guide.md +125 -125
  18. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/agent_with_tools.py +82 -82
  19. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/basic_chat.py +36 -36
  20. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/01_basic_usage.py +21 -21
  21. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/02_horus_lens.py +16 -16
  22. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/03_one_liner.py +17 -17
  23. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/04_custom_cache.py +17 -17
  24. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/05_4bit_quantization.py +20 -20
  25. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/06_8bit_quantization.py +17 -17
  26. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/07_multi_gpu.py +15 -15
  27. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/08_flash_attention.py +16 -16
  28. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/09_data_types.py +26 -26
  29. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/10_generation_params.py +34 -34
  30. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/11_streaming.py +13 -13
  31. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/12_chat_templates.py +22 -22
  32. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/13_offline_mode.py +14 -14
  33. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/14_force_download.py +14 -14
  34. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/15_model_info.py +24 -24
  35. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/16_cpu_offloading.py +17 -17
  36. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/17_cpu_only.py +16 -16
  37. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/18_production_setup.py +43 -43
  38. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/19_gguf_4bit.py +14 -14
  39. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/20_gguf_5bit.py +13 -13
  40. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/21_gguf_6bit.py +13 -13
  41. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/22_gguf_8bit.py +13 -13
  42. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/23_gguf_16bit.py +14 -14
  43. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/24_list_models.py +26 -26
  44. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/25_interactive_chat.py +53 -53
  45. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/26_horus_hiero.py +16 -16
  46. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_codes_camples/README.md +70 -70
  47. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_download_guide.py +36 -36
  48. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_examples.py +257 -257
  49. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_tq_ready_gguf.py +61 -61
  50. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/horus_transformers_features.py +512 -512
  51. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/local_models.py +107 -107
  52. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/neuralnode_v21_complete_demo.py +21 -21
  53. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/openclaw_demo.py +106 -106
  54. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/shade_model_with_tools.py +23 -23
  55. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/telegram_bot_demo.py +37 -37
  56. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/thinking_mode_example.py +231 -231
  57. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/tts_demo.py +26 -26
  58. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/turboquant_example.py +38 -38
  59. {neuralnode-2.2.8 → neuralnode-2.2.10}/examples/v3_features.py +35 -35
  60. neuralnode-2.2.10/media/neuralnode-dark-transparent.png +0 -0
  61. {neuralnode-2.2.8 → neuralnode-2.2.10}/pyproject.toml +269 -279
  62. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/__init__.py +884 -912
  63. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/agents/__init__.py +30 -30
  64. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/agents/agents.py +906 -906
  65. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/agents/base.py +233 -233
  66. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/agents/thinking.py +162 -162
  67. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/chains/__init__.py +629 -629
  68. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/config/__init__.py +241 -241
  69. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/core/__init__.py +472 -465
  70. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/core/openai_blocker.py +29 -29
  71. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/diagnostics/__init__.py +782 -782
  72. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/integrations/__init__.py +25 -28
  73. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/integrations/discord.py +193 -193
  74. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/integrations/openclaw.py +656 -623
  75. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/integrations/slack.py +181 -181
  76. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/integrations/telegram.py +689 -689
  77. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/memory/__init__.py +13 -13
  78. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/memory/advanced.py +508 -508
  79. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/memory/conversation.py +148 -148
  80. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/memory/file.py +121 -121
  81. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/memory/sliding.py +85 -85
  82. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/memory/summary.py +131 -131
  83. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/prompts/__init__.py +703 -703
  84. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/__init__.py +342 -353
  85. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/base.py +383 -383
  86. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/chat/__init__.py +60 -70
  87. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/chat/ai21.py +79 -79
  88. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/chat/anthropic.py +152 -152
  89. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/chat/bedrock.py +116 -116
  90. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/chat/cohere.py +123 -123
  91. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/chat/deepseek.py +126 -126
  92. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/chat/fireworks.py +84 -84
  93. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/chat/google.py +167 -167
  94. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/chat/groq.py +114 -114
  95. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/chat/mistral.py +120 -120
  96. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/chat/openai.py +302 -302
  97. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/chat/perplexity.py +94 -94
  98. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/chat/together.py +124 -124
  99. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/chat/vertex.py +104 -104
  100. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/embeddings.py +1176 -1170
  101. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/hfhub.py +237 -237
  102. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/horus.py +2774 -2774
  103. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/image_generation.py +135 -135
  104. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/local/__init__.py +319 -319
  105. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/local_providers.py +1907 -1836
  106. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/text_generation.py +1174 -1174
  107. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/providers/universal_local.py +750 -750
  108. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/rag/__init__.py +988 -988
  109. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/reasoning/__init__.py +679 -679
  110. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/replica.py +225 -225
  111. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/speech/__init__.py +479 -479
  112. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/thinking.py +380 -380
  113. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/tools/__init__.py +54 -54
  114. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/tools/advanced.py +758 -758
  115. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/tools/multisearch.py +612 -612
  116. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/tools/system/__init__.py +248 -248
  117. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/tools/system/operations.py +471 -471
  118. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/tools/web/__init__.py +261 -261
  119. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/tts/__init__.py +445 -445
  120. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/turboquant.py +552 -552
  121. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/utils/__init__.py +5 -5
  122. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/utils/dependencies.py +89 -89
  123. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/utils/logger.py +277 -277
  124. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/utils/metrics.py +220 -220
  125. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/vectorstores/__init__.py +871 -871
  126. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/vision/__init__.py +192 -192
  127. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/neuralnode/voice.py +82 -82
  128. {neuralnode-2.2.8 → neuralnode-2.2.10}/src/nn/__init__.py +6 -6
  129. {neuralnode-2.2.8 → neuralnode-2.2.10}/tests/test_agents_basic.py +78 -78
  130. {neuralnode-2.2.8 → neuralnode-2.2.10}/tests/test_hfhub.py +297 -297
  131. {neuralnode-2.2.8 → neuralnode-2.2.10}/tests/test_image_generation.py +78 -78
  132. {neuralnode-2.2.8 → neuralnode-2.2.10}/tests/test_memory.py +39 -39
  133. {neuralnode-2.2.8 → neuralnode-2.2.10}/tests/test_openclaw.py +225 -225
  134. {neuralnode-2.2.8 → neuralnode-2.2.10}/tests/test_provider_capabilities.py +90 -90
  135. {neuralnode-2.2.8 → neuralnode-2.2.10}/tests/test_providers_mocked.py +191 -109
  136. {neuralnode-2.2.8 → neuralnode-2.2.10}/tests/test_rag.py +73 -73
  137. {neuralnode-2.2.8 → neuralnode-2.2.10}/tests/test_refactoring.py +38 -38
  138. {neuralnode-2.2.8 → neuralnode-2.2.10}/tests/test_release_readiness.py +50 -53
  139. {neuralnode-2.2.8 → neuralnode-2.2.10}/tests/test_voice.py +146 -146
  140. neuralnode-2.2.8/.ci-dist/neuralnode-2.2.8-py3-none-any.whl +0 -0
  141. neuralnode-2.2.8/.ci-dist/neuralnode-2.2.8.tar.gz +0 -0
  142. neuralnode-2.2.8/Dockerfile +0 -44
  143. neuralnode-2.2.8/README.md +0 -488
  144. neuralnode-2.2.8/docker-compose.yml +0 -74
  145. neuralnode-2.2.8/docs/ecosystem_plan.md +0 -482
  146. neuralnode-2.2.8/docs/model_api.md +0 -76
  147. neuralnode-2.2.8/examples/horus_cyber_nano_agent_mode.py +0 -67
  148. neuralnode-2.2.8/examples/horus_cyber_nano_early_access.py +0 -22
  149. neuralnode-2.2.8/examples/whatsapp_bot_demo.py +0 -2
  150. neuralnode-2.2.8/horus_chat_voice.py +0 -61
  151. neuralnode-2.2.8/neuralnode_horus_replica_telegram.ipynb +0 -405
  152. neuralnode-2.2.8/publish.bat +0 -71
  153. neuralnode-2.2.8/publish.sh +0 -68
  154. neuralnode-2.2.8/requirements_shade.txt +0 -40
  155. neuralnode-2.2.8/scripts/setup.py +0 -127
  156. neuralnode-2.2.8/src/debug_import.py +0 -37
  157. neuralnode-2.2.8/src/neuralnode/api.py +0 -341
  158. neuralnode-2.2.8/src/neuralnode/integrations/whatsapp.py +0 -99
  159. neuralnode-2.2.8/src/neuralnode/providers/chat/h_preview.py +0 -113
  160. neuralnode-2.2.8/src/neuralnode/providers/chat/horus_cyber_nano.py +0 -375
  161. neuralnode-2.2.8/tests/test_horus_cyber_nano_api.py +0 -222
  162. {neuralnode-2.2.8 → neuralnode-2.2.10}/.github/workflows/publish.yml +0 -0
  163. {neuralnode-2.2.8 → neuralnode-2.2.10}/docs/assets/neuralnode-logo-transparent.png +0 -0
  164. {neuralnode-2.2.8 → neuralnode-2.2.10}/media/neuralnode.png +0 -0
@@ -1,35 +1,22 @@
1
- # NeuralNode Environment Configuration
2
- # Copy this file to .env and fill in your API keys
3
-
4
- # OpenAI Configuration
5
- OPENAI_API_KEY=sk-your-openai-api-key-here
6
- OPENAI_BASE_URL=https://api.openai.com/v1
7
-
8
- # Anthropic Configuration
9
- ANTHROPIC_API_KEY=sk-ant-your-anthropic-api-key-here
10
-
11
- # Google (Gemini) Configuration
12
- GOOGLE_API_KEY=your-google-api-key-here
13
-
14
- # Ollama Configuration (for local models)
15
- # No API key needed, just ensure Ollama is running
16
- OLLAMA_BASE_URL=http://localhost:11434
17
-
18
- # Horus Cyber Nano 1.0 BETA Early Access
19
- HORUS_CYBER_NANO_API_KEY=horusNN-your-access-token
20
- HORUS_CYBER_NANO_BASE_URL=https://api.tokenai.llc/v1
21
-
22
- # NeuralNode H-Preview API Gateway
23
- NEURALNODE_API_DB=neuralnode-api.sqlite3
24
- NEURALNODE_API_KEY=nn-your-24-character-token
25
- NEURALNODE_API_BASE_URL=http://127.0.0.1:8000/v1
26
- H_PREVIEW_UPSTREAM_URL=http://127.0.0.1:8001/v1
27
- H_PREVIEW_UPSTREAM_MODEL=DavidAU/Qwen3.8-27B-TURBO-Fable-Cold-Fusion-735-882-Heretic-Uncensored-NM-DAU
28
- # Optional: only set this when the remote model server requires an API key.
29
- # H_PREVIEW_UPSTREAM_API_KEY=
30
-
31
- # NeuralNode Settings
32
- NEURALNODE_DEFAULT_PROVIDER=auto
33
- NEURALNODE_MEMORY_ENABLED=true
34
- NEURALNODE_SAFE_MODE=true
35
- NEURALNODE_LOG_LEVEL=INFO
1
+ # NeuralNode Environment Configuration
2
+ # Copy this file to .env and fill in your API keys
3
+
4
+ # OpenAI Configuration
5
+ OPENAI_API_KEY=sk-your-openai-api-key-here
6
+ OPENAI_BASE_URL=https://api.openai.com/v1
7
+
8
+ # Anthropic Configuration
9
+ ANTHROPIC_API_KEY=sk-ant-your-anthropic-api-key-here
10
+
11
+ # Google (Gemini) Configuration
12
+ GOOGLE_API_KEY=your-google-api-key-here
13
+
14
+ # Ollama Configuration (for local models)
15
+ # No API key needed, just ensure Ollama is running
16
+ OLLAMA_BASE_URL=http://localhost:11434
17
+
18
+ # NeuralNode Settings
19
+ NEURALNODE_DEFAULT_PROVIDER=auto
20
+ NEURALNODE_MEMORY_ENABLED=true
21
+ NEURALNODE_SAFE_MODE=true
22
+ NEURALNODE_LOG_LEVEL=INFO
@@ -1,15 +1,15 @@
1
- ## Summary
2
-
3
- Describe the problem and the change made.
4
-
5
- ## Validation
6
-
7
- - [ ] I ran the relevant tests and checks.
8
- - [ ] I added or updated tests where appropriate.
9
- - [ ] I did not include secrets, credentials, or private data.
10
- - [ ] I have read and agree to [TOKENAI_CLA.md](../TOKENAI_CLA.md).
11
- - [ ] I have identified any third-party code, data, or assets included in this PR.
12
-
13
- ## Notes for review
14
-
15
- Add compatibility notes, migration details, or known limitations here.
1
+ ## Summary
2
+
3
+ Describe the problem and the change made.
4
+
5
+ ## Validation
6
+
7
+ - [ ] I ran the relevant tests and checks.
8
+ - [ ] I added or updated tests where appropriate.
9
+ - [ ] I did not include secrets, credentials, or private data.
10
+ - [ ] I have read and agree to [TOKENAI_CLA.md](../TOKENAI_CLA.md).
11
+ - [ ] I have identified any third-party code, data, or assets included in this PR.
12
+
13
+ ## Notes for review
14
+
15
+ Add compatibility notes, migration details, or known limitations here.
@@ -1,86 +1,86 @@
1
- name: Tests
2
-
3
- on:
4
- push:
5
- branches: [ main, develop ]
6
- pull_request:
7
- branches: [ main ]
8
-
9
- jobs:
10
- build:
11
- runs-on: ubuntu-24.04
12
- steps:
13
- - uses: actions/checkout@v7
14
-
15
- - name: Set up Python
16
- uses: actions/setup-python@v7
17
- with:
18
- python-version: "3.12"
19
-
20
- - name: Install build tools
21
- run: python -m pip install --upgrade build twine
22
-
23
- - name: Build source distribution and wheel
24
- run: python -m build --outdir .ci-dist
25
-
26
- - name: Validate package metadata
27
- run: python -m twine check .ci-dist/*
28
-
29
- - name: Install wheel and verify package version
30
- run: |
31
- python -m pip install --force-reinstall .ci-dist/*.whl
32
- python -c "import neuralnode; assert neuralnode.__version__ == '2.2.8'; print(neuralnode.__version__)"
33
-
34
- test:
35
- # Python 3.9 is no longer available on the newest Ubuntu runner image.
36
- runs-on: ubuntu-24.04
37
- strategy:
38
- matrix:
39
- python-version: ["3.9", "3.10", "3.11", "3.12"]
40
-
41
- steps:
42
- - uses: actions/checkout@v7
43
-
44
- - name: Set up Python ${{ matrix.python-version }}
45
- uses: actions/setup-python@v7
46
- with:
47
- python-version: ${{ matrix.python-version }}
48
-
49
- - name: Install dependencies
50
- run: |
51
- python -m pip install --upgrade pip
52
- pip install -e ".[dev]"
53
-
54
- - name: Run tests
55
- run: |
56
- pytest tests/ -v --cov=src/neuralnode --cov-report=xml --cov-report=term
57
-
58
- - name: Upload coverage to Codecov
59
- uses: codecov/codecov-action@v7
60
- with:
61
- files: ./coverage.xml
62
- flags: unittests
63
- name: codecov-umbrella
64
-
65
- lint:
66
- runs-on: ubuntu-24.04
67
- steps:
68
- - uses: actions/checkout@v7
69
-
70
- - name: Set up Python
71
- uses: actions/setup-python@v7
72
- with:
73
- python-version: "3.11"
74
-
75
- - name: Install dependencies
76
- run: |
77
- python -m pip install --upgrade pip
78
- pip install black ruff mypy
79
-
80
- - name: Check formatting with black
81
- run: black --check src/neuralnode
82
-
83
- # The legacy tree has broad style/type debt; keep CI focused on undefined
84
- # names while that debt is addressed incrementally.
85
- - name: Check undefined names with ruff
86
- run: ruff check src/neuralnode --select F821
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, develop ]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-24.04
12
+ steps:
13
+ - uses: actions/checkout@v7
14
+
15
+ - name: Set up Python
16
+ uses: actions/setup-python@v7
17
+ with:
18
+ python-version: "3.12"
19
+
20
+ - name: Install build tools
21
+ run: python -m pip install --upgrade build twine
22
+
23
+ - name: Build source distribution and wheel
24
+ run: python -m build --outdir .ci-dist
25
+
26
+ - name: Validate package metadata
27
+ run: python -m twine check .ci-dist/*
28
+
29
+ - name: Install wheel and verify package version
30
+ run: |
31
+ python -m pip install --force-reinstall .ci-dist/*.whl
32
+ python -c "import neuralnode; assert neuralnode.__version__ == '2.2.10'; print(neuralnode.__version__)"
33
+
34
+ test:
35
+ # Python 3.9 is no longer available on the newest Ubuntu runner image.
36
+ runs-on: ubuntu-24.04
37
+ strategy:
38
+ matrix:
39
+ python-version: ["3.9", "3.10", "3.11", "3.12"]
40
+
41
+ steps:
42
+ - uses: actions/checkout@v7
43
+
44
+ - name: Set up Python ${{ matrix.python-version }}
45
+ uses: actions/setup-python@v7
46
+ with:
47
+ python-version: ${{ matrix.python-version }}
48
+
49
+ - name: Install dependencies
50
+ run: |
51
+ python -m pip install --upgrade pip
52
+ pip install -e ".[dev]"
53
+
54
+ - name: Run tests
55
+ run: |
56
+ pytest tests/ -v --cov=src/neuralnode --cov-report=xml --cov-report=term
57
+
58
+ - name: Upload coverage to Codecov
59
+ uses: codecov/codecov-action@v7
60
+ with:
61
+ files: ./coverage.xml
62
+ flags: unittests
63
+ name: codecov-umbrella
64
+
65
+ lint:
66
+ runs-on: ubuntu-24.04
67
+ steps:
68
+ - uses: actions/checkout@v7
69
+
70
+ - name: Set up Python
71
+ uses: actions/setup-python@v7
72
+ with:
73
+ python-version: "3.11"
74
+
75
+ - name: Install dependencies
76
+ run: |
77
+ python -m pip install --upgrade pip
78
+ pip install black ruff mypy
79
+
80
+ - name: Check formatting with black
81
+ run: black --check src/neuralnode
82
+
83
+ # The legacy tree has broad style/type debt; keep CI focused on undefined
84
+ # names while that debt is addressed incrementally.
85
+ - name: Check undefined names with ruff
86
+ run: ruff check src/neuralnode --select F821
@@ -1,38 +1,41 @@
1
- # Python
2
- __pycache__/
3
- *.pyc
4
- *.pyo
5
- *.pyd
6
- *.egg-info/
7
- dist/
8
- release-dist/
9
- build/
10
- .eggs/
11
-
12
- # Virtual envs
13
- .venv/
14
- venv/
15
- env/
16
-
17
- # Local credentials and environment files
18
- .env
19
- .env.*
20
- !.env.example
21
- **/.env
22
- **/.env.*
23
- !**/.env.example
24
-
25
- # Temp / outputs
26
- temp_header.gguf
27
- outputs/
28
- .tmp_*
29
- *.gguf.tmp
30
-
31
- # Test caches
32
- .pytest_cache/
33
- .mypy_cache/
34
- .ruff_cache/
35
-
36
- # OS
37
- .DS_Store
38
- Thumbs.db
1
+ # Python
2
+ __pycache__/
3
+ *.pyc
4
+ *.pyo
5
+ *.pyd
6
+ *.egg-info/
7
+ dist/
8
+ release-dist/
9
+ .release-dist*/
10
+ .ci-dist/
11
+ .ci-dist-verify*/
12
+ .install-check*/
13
+ build/
14
+ .eggs/
15
+
16
+ # Virtual envs
17
+ .venv/
18
+ venv/
19
+ env/
20
+
21
+ # Local credentials and environment files
22
+ .env
23
+ .env.*
24
+ !.env.example
25
+ **/.env
26
+ **/.env.*
27
+ !**/.env.example
28
+
29
+ # Temp / outputs
30
+ outputs/
31
+ .tmp_*
32
+ *.gguf.tmp
33
+
34
+ # Test caches
35
+ .pytest_cache/
36
+ .mypy_cache/
37
+ .ruff_cache/
38
+
39
+ # OS
40
+ .DS_Store
41
+ Thumbs.db
@@ -0,0 +1,97 @@
1
+ # Changelog
2
+
3
+ All notable changes to NeuralNode are documented here.
4
+
5
+ ## 2.2.10 — 2026-11-01
6
+
7
+ ### Documentation and branding
8
+
9
+ - Added the dark NeuralNode wordmark as a transparent PNG for reliable display
10
+ on light PyPI pages and other light backgrounds.
11
+ - Updated the README image reference to the published transparent asset.
12
+
13
+ ## 2.2.9 — 2026-11-01
14
+
15
+ ### Integrations and runtime cleanup
16
+
17
+ - Removed the deprecated WhatsApp/Twilio integration and legacy API gateway.
18
+ - Removed obsolete provider and deployment artifacts from the maintained core.
19
+ - Updated the OpenClaw manager for the current OpenClaw configuration schema,
20
+ loopback-only gateway binding, token authentication, and OpenAI-compatible
21
+ chat-completions enablement.
22
+ - Added a blocking-chat fallback for OpenClaw streaming requests so providers
23
+ without native streaming can still complete gateway turns.
24
+ - Validated the NeuralNode → OpenClaw → local Qwen/llama.cpp path on AWS.
25
+ - Upgraded Ollama chat integration to the native `/api/chat` protocol with
26
+ role-preserving messages, streaming, structured output, and tool calls.
27
+ - Added Ollama native reasoning control through `thinking=True` or
28
+ `thinking=False`, preserving the model trace in response metadata.
29
+ - Updated Ollama embeddings to the batch `/api/embed` endpoint with a legacy
30
+ compatibility fallback.
31
+ - Removed the remaining Twilio optional dependency with the retired WhatsApp
32
+ integration.
33
+
34
+ ## 2.2.8 — 2026-11-01
35
+
36
+ NeuralNode 2.2.8 is a feature and reliability release focused on local model
37
+ execution, multimodal workflows, integrations, and reproducible packaging.
38
+
39
+ ### Multimodal and local model support
40
+
41
+ - Added local Hugging Face speech adapters:
42
+ - `HuggingFaceSTT` for audio transcription.
43
+ - `HuggingFaceTTS` for text-to-speech generation.
44
+ - Added configurable Hugging Face model IDs, lazy loading, language handling,
45
+ CPU/CUDA device selection, and WAV output for the speech adapters.
46
+ - Added local vision-language input support through the existing image chat
47
+ interface.
48
+ - Added Diffusers-compatible local text-to-image loading and generation.
49
+ - Improved local model generation determinism and provider identity.
50
+ - Improved model repository download handling for Hugging Face sources.
51
+ - Added explicit authentication support for private and gated Hugging Face
52
+ repositories using `HF_TOKEN` or an explicit token parameter.
53
+ - Made optional Horus runtime imports tolerant of environments where the heavy
54
+ local ML dependencies are not installed.
55
+
56
+ ### Voice workflows
57
+
58
+ - Added a sequential `VoiceAgent` pipeline for file-based and push-to-talk
59
+ interactions:
60
+
61
+ `audio input → speech-to-text → agent/LLM turn → text-to-speech → audio output`
62
+
63
+ - Added HTTP speech adapters for connecting external STT and TTS services.
64
+ - Documented the distinction between sequential voice turns and low-latency,
65
+ full-duplex live audio. Full-duplex streaming is outside this release.
66
+
67
+ ### Agents and tools
68
+
69
+ - Improved provider-backed agent tool calling.
70
+ - Added support for textual actions from tool-capable models.
71
+ - Improved tool-result message handling and buffered streaming compatibility.
72
+ - Preserved the existing agents, memory, RAG, embeddings, vector-store, and
73
+ integration APIs.
74
+
75
+ ### Horus and OpenClaw
76
+
77
+ - Aligned Horus and OpenClaw integrations with the current public interfaces.
78
+ - Secured the OpenClaw local API behavior.
79
+ - Added test paths that do not require optional OpenClaw HTTP test packages.
80
+ ### Release engineering
81
+
82
+ - Added source distribution and wheel build validation in CI.
83
+ - Isolated package build output from repository working files.
84
+ - Added trusted PyPI publishing through GitHub Actions and PyPI's OIDC
85
+ trusted-publishing flow.
86
+ - Added public repository, ownership, license, and release metadata alignment.
87
+
88
+ ### Compatibility and limitations
89
+
90
+ - Python 3.9, 3.10, 3.11, and 3.12 are supported by the package metadata.
91
+ - Heavy local-model, image, and speech features remain optional extras; the
92
+ base installation does not install those large runtime dependencies.
93
+ - Public Hugging Face models can be loaded without a token. Private or gated
94
+ repositories require a valid `HF_TOKEN`.
95
+ - The voice pipeline in this release processes one turn at a time. It is not a
96
+ real-time, full-duplex audio session.
97
+
@@ -1,40 +1,40 @@
1
- # Contributing to NeuralNode
2
-
3
- Thank you for helping improve NeuralNode. Contributions may be submitted by
4
- opening an issue, creating a fork, or opening a pull request.
5
-
6
- ## Pull request workflow
7
-
8
- 1. Create a focused branch or fork.
9
- 2. Explain the problem and the proposed change.
10
- 3. Include or update tests when appropriate.
11
- 4. Run the relevant checks locally.
12
- 5. Open a pull request against the default branch.
13
-
14
- All pull requests are subject to review by TokenAI. Opening a pull request
15
- does not guarantee acceptance or merge. TokenAI may accept, request changes,
16
- reject, close, or remove a proposed contribution at its sole discretion.
17
-
18
- ## Contribution terms
19
-
20
- By submitting a pull request, patch, issue attachment, or other contribution to
21
- this repository, you confirm that you have read and agree to the
22
- [TokenAI Contributor License Agreement](TOKENAI_CLA.md), and that:
23
-
24
- - you have the legal right to submit the contribution;
25
- - the contribution is your original work or you have permission to submit it;
26
- - you have identified any third-party code, data, or assets included in it;
27
- - you have not knowingly included secrets, credentials, or private data; and
28
- - you agree to the copyright assignment and license grant in
29
- [TOKENAI_CLA.md](TOKENAI_CLA.md).
30
-
31
- ## Attribution
32
-
33
- Contributions become part of a project owned and maintained by TokenAI. Do not
34
- remove existing NeuralNode or TokenAI notices. Derivative products and forks
35
- must continue to follow [LICENSE](LICENSE) and [TRADEMARKS.md](TRADEMARKS.md).
36
-
37
- ## Code of conduct
38
-
39
- Be respectful, constructive, and specific. Harassment, discrimination,
40
- deliberate disclosure of secrets, and malicious code are not acceptable.
1
+ # Contributing to NeuralNode
2
+
3
+ Thank you for helping improve NeuralNode. Contributions may be submitted by
4
+ opening an issue, creating a fork, or opening a pull request.
5
+
6
+ ## Pull request workflow
7
+
8
+ 1. Create a focused branch or fork.
9
+ 2. Explain the problem and the proposed change.
10
+ 3. Include or update tests when appropriate.
11
+ 4. Run the relevant checks locally.
12
+ 5. Open a pull request against the default branch.
13
+
14
+ All pull requests are subject to review by TokenAI. Opening a pull request
15
+ does not guarantee acceptance or merge. TokenAI may accept, request changes,
16
+ reject, close, or remove a proposed contribution at its sole discretion.
17
+
18
+ ## Contribution terms
19
+
20
+ By submitting a pull request, patch, issue attachment, or other contribution to
21
+ this repository, you confirm that you have read and agree to the
22
+ [TokenAI Contributor License Agreement](TOKENAI_CLA.md), and that:
23
+
24
+ - you have the legal right to submit the contribution;
25
+ - the contribution is your original work or you have permission to submit it;
26
+ - you have identified any third-party code, data, or assets included in it;
27
+ - you have not knowingly included secrets, credentials, or private data; and
28
+ - you agree to the copyright assignment and license grant in
29
+ [TOKENAI_CLA.md](TOKENAI_CLA.md).
30
+
31
+ ## Attribution
32
+
33
+ Contributions become part of a project owned and maintained by TokenAI. Do not
34
+ remove existing NeuralNode or TokenAI notices. Derivative products and forks
35
+ must continue to follow [LICENSE](LICENSE) and [TRADEMARKS.md](TRADEMARKS.md).
36
+
37
+ ## Code of conduct
38
+
39
+ Be respectful, constructive, and specific. Harassment, discrimination,
40
+ deliberate disclosure of secrets, and malicious code are not acceptable.