nexora-py 1.0.0__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 (86) hide show
  1. nexora_py-1.0.0/LICENSE +21 -0
  2. nexora_py-1.0.0/PKG-INFO +218 -0
  3. nexora_py-1.0.0/README.md +174 -0
  4. nexora_py-1.0.0/pyproject.toml +52 -0
  5. nexora_py-1.0.0/setup.cfg +4 -0
  6. nexora_py-1.0.0/src/nexora/__init__.py +21 -0
  7. nexora_py-1.0.0/src/nexora/_version.py +1 -0
  8. nexora_py-1.0.0/src/nexora/adaptive/__init__.py +24 -0
  9. nexora_py-1.0.0/src/nexora/adaptive/engine.py +323 -0
  10. nexora_py-1.0.0/src/nexora/adaptive/models.py +68 -0
  11. nexora_py-1.0.0/src/nexora/adaptive/plugin.py +302 -0
  12. nexora_py-1.0.0/src/nexora/agentbox/__init__.py +43 -0
  13. nexora_py-1.0.0/src/nexora/agentbox/engine.py +101 -0
  14. nexora_py-1.0.0/src/nexora/agentbox/models.py +96 -0
  15. nexora_py-1.0.0/src/nexora/agentbox/plugin.py +173 -0
  16. nexora_py-1.0.0/src/nexora/agentbox/sandbox.py +204 -0
  17. nexora_py-1.0.0/src/nexora/app.py +216 -0
  18. nexora_py-1.0.0/src/nexora/cli/__init__.py +3 -0
  19. nexora_py-1.0.0/src/nexora/cli/main.py +102 -0
  20. nexora_py-1.0.0/src/nexora/config.py +72 -0
  21. nexora_py-1.0.0/src/nexora/events/__init__.py +3 -0
  22. nexora_py-1.0.0/src/nexora/events/bus.py +114 -0
  23. nexora_py-1.0.0/src/nexora/ghost/__init__.py +21 -0
  24. nexora_py-1.0.0/src/nexora/ghost/plugin.py +712 -0
  25. nexora_py-1.0.0/src/nexora/ghost/records.py +49 -0
  26. nexora_py-1.0.0/src/nexora/memory/__init__.py +20 -0
  27. nexora_py-1.0.0/src/nexora/memory/models.py +40 -0
  28. nexora_py-1.0.0/src/nexora/memory/plugin.py +164 -0
  29. nexora_py-1.0.0/src/nexora/memory/store.py +208 -0
  30. nexora_py-1.0.0/src/nexora/plugins/__init__.py +10 -0
  31. nexora_py-1.0.0/src/nexora/plugins/base.py +60 -0
  32. nexora_py-1.0.0/src/nexora/plugins/registry.py +61 -0
  33. nexora_py-1.0.0/src/nexora/py.typed +0 -0
  34. nexora_py-1.0.0/src/nexora/runtime/__init__.py +3 -0
  35. nexora_py-1.0.0/src/nexora/runtime/core.py +56 -0
  36. nexora_py-1.0.0/src/nexora/security/__init__.py +11 -0
  37. nexora_py-1.0.0/src/nexora/security/permissions.py +65 -0
  38. nexora_py-1.0.0/src/nexora/security/redact.py +54 -0
  39. nexora_py-1.0.0/src/nexora/shadow/__init__.py +30 -0
  40. nexora_py-1.0.0/src/nexora/shadow/engine.py +220 -0
  41. nexora_py-1.0.0/src/nexora/shadow/models.py +106 -0
  42. nexora_py-1.0.0/src/nexora/shadow/plugin.py +155 -0
  43. nexora_py-1.0.0/src/nexora/state/__init__.py +3 -0
  44. nexora_py-1.0.0/src/nexora/state/store.py +62 -0
  45. nexora_py-1.0.0/src/nexora/storage/__init__.py +3 -0
  46. nexora_py-1.0.0/src/nexora/storage/local.py +88 -0
  47. nexora_py-1.0.0/src/nexora/timeline/__init__.py +21 -0
  48. nexora_py-1.0.0/src/nexora/timeline/engine.py +178 -0
  49. nexora_py-1.0.0/src/nexora/timeline/models.py +52 -0
  50. nexora_py-1.0.0/src/nexora/timeline/plugin.py +219 -0
  51. nexora_py-1.0.0/src/nexora/vision/__init__.py +23 -0
  52. nexora_py-1.0.0/src/nexora/vision/engine.py +294 -0
  53. nexora_py-1.0.0/src/nexora/vision/models.py +101 -0
  54. nexora_py-1.0.0/src/nexora/vision/plugin.py +157 -0
  55. nexora_py-1.0.0/src/nexora/world/__init__.py +20 -0
  56. nexora_py-1.0.0/src/nexora/world/models.py +287 -0
  57. nexora_py-1.0.0/src/nexora/world/plugin.py +317 -0
  58. nexora_py-1.0.0/src/nexora/world/renderer.py +352 -0
  59. nexora_py-1.0.0/src/nexora/worldforge/__init__.py +25 -0
  60. nexora_py-1.0.0/src/nexora/worldforge/engine.py +189 -0
  61. nexora_py-1.0.0/src/nexora/worldforge/generator.py +200 -0
  62. nexora_py-1.0.0/src/nexora/worldforge/models.py +198 -0
  63. nexora_py-1.0.0/src/nexora/worldforge/plugin.py +259 -0
  64. nexora_py-1.0.0/src/nexora_py.egg-info/PKG-INFO +218 -0
  65. nexora_py-1.0.0/src/nexora_py.egg-info/SOURCES.txt +84 -0
  66. nexora_py-1.0.0/src/nexora_py.egg-info/dependency_links.txt +1 -0
  67. nexora_py-1.0.0/src/nexora_py.egg-info/entry_points.txt +2 -0
  68. nexora_py-1.0.0/src/nexora_py.egg-info/requires.txt +24 -0
  69. nexora_py-1.0.0/src/nexora_py.egg-info/top_level.txt +1 -0
  70. nexora_py-1.0.0/tests/test_adaptive.py +316 -0
  71. nexora_py-1.0.0/tests/test_agentbox.py +229 -0
  72. nexora_py-1.0.0/tests/test_app.py +120 -0
  73. nexora_py-1.0.0/tests/test_cli.py +36 -0
  74. nexora_py-1.0.0/tests/test_config.py +28 -0
  75. nexora_py-1.0.0/tests/test_events.py +60 -0
  76. nexora_py-1.0.0/tests/test_ghost.py +370 -0
  77. nexora_py-1.0.0/tests/test_interop.py +148 -0
  78. nexora_py-1.0.0/tests/test_memory.py +181 -0
  79. nexora_py-1.0.0/tests/test_plugins.py +14 -0
  80. nexora_py-1.0.0/tests/test_security.py +43 -0
  81. nexora_py-1.0.0/tests/test_shadow.py +242 -0
  82. nexora_py-1.0.0/tests/test_storage.py +43 -0
  83. nexora_py-1.0.0/tests/test_timeline.py +191 -0
  84. nexora_py-1.0.0/tests/test_vision.py +204 -0
  85. nexora_py-1.0.0/tests/test_world.py +464 -0
  86. nexora_py-1.0.0/tests/test_worldforge.py +202 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Teja Priyan and NEXORA Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,218 @@
1
+ Metadata-Version: 2.4
2
+ Name: nexora-py
3
+ Version: 1.0.0
4
+ Summary: A modular, local-first Python runtime: events, plugins, state, adaptive interfaces, memory, timeline rewind, observability, screen perception, procedural worlds, and sandboxed agents.
5
+ Author: NEXORA Contributors
6
+ Author-email: Teja Priyan <teja1616150@gmail.com>
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://github.com/TejaPriyan/Nexora
9
+ Project-URL: Documentation, https://github.com/TejaPriyan/Nexora/tree/main/docs
10
+ Project-URL: Repository, https://github.com/TejaPriyan/Nexora.git
11
+ Project-URL: Issues, https://github.com/TejaPriyan/Nexora/issues
12
+ Keywords: runtime,events,plugins,local-first,privacy,agents,observability
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
22
+ Requires-Python: >=3.9
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Provides-Extra: ghost
26
+ Requires-Dist: rich>=13.0; extra == "ghost"
27
+ Provides-Extra: world
28
+ Requires-Dist: pygame>=2.5; extra == "world"
29
+ Provides-Extra: vision
30
+ Requires-Dist: pillow>=10.0; extra == "vision"
31
+ Requires-Dist: mss>=9.0; extra == "vision"
32
+ Provides-Extra: ai
33
+ Requires-Dist: numpy>=1.24; extra == "ai"
34
+ Provides-Extra: dev
35
+ Requires-Dist: pytest>=7.4; extra == "dev"
36
+ Requires-Dist: pytest-cov>=4.1; extra == "dev"
37
+ Provides-Extra: all
38
+ Requires-Dist: rich>=13.0; extra == "all"
39
+ Requires-Dist: pygame>=2.5; extra == "all"
40
+ Requires-Dist: pillow>=10.0; extra == "all"
41
+ Requires-Dist: mss>=9.0; extra == "all"
42
+ Requires-Dist: numpy>=1.24; extra == "all"
43
+ Dynamic: license-file
44
+
45
+ # NEXORA
46
+
47
+ **One Python ecosystem. Many capabilities. Completely modular. Local-first. Privacy-first. Open-source.**
48
+
49
+ NEXORA is a modular Python runtime. The long-term vision is to give ordinary
50
+ Python applications new capabilities -- automatic interfaces, visual
51
+ application/world representations, adaptive interfaces, persistent
52
+ application memory, state history and rewind, screen/computer perception,
53
+ live application observation, interactive world generation, and controlled
54
+ AI-agent execution -- all built on one small, shared runtime.
55
+
56
+ This is **not** meant to become another chatbot wrapper, terminal UI
57
+ library, game engine, vector database wrapper, agent wrapper, or
58
+ automation library on its own. Each capability is a module; the modules
59
+ share one event system, one state model, one security/privacy layer, and
60
+ one CLI.
61
+
62
+ > **Status: v1.0.0 (Complete Platform Release).** All 10 milestones are fully implemented and verified:
63
+ > NEXORA Core, **GhostUI** (Milestone 1), **CodeWorld** (Milestone 2), **MoodUI** (Milestone 3),
64
+ > **Recall** (Milestone 4), **TimeLoop** (Milestone 5), **Shadow** (Milestone 6),
65
+ > **ScreenMind** (Milestone 7), **WorldForge** (Milestone 8), **AgentBox** (Milestone 9),
66
+ > and **Module Interoperability** (Milestone 10) -- see [What's implemented today](#whats-implemented-today)
67
+ > and [docs/ROADMAP.md](docs/ROADMAP.md). Every module communicates strictly through the shared EventBus and State with zero cross-module imports.
68
+
69
+ ---
70
+
71
+ ## Install
72
+
73
+ ```bash
74
+ pip install nexora-py
75
+ ```
76
+
77
+ The base install is dependency-free (Python stdlib only). Feature modules
78
+ pull in extras as needed, e.g.:
79
+
80
+ ```bash
81
+ pip install nexora-py[ghost] # rich (GhostUI automatic terminal interfaces)
82
+ pip install nexora-py[world] # pygame (CodeWorld 2D entity visualization)
83
+ pip install nexora-py[vision] # pillow + mss (ScreenMind screen perception)
84
+ pip install nexora-py[ai] # numpy, for numerical operations
85
+ pip install nexora-py[all] # everything above
86
+ ```
87
+
88
+ *(Note: The package installs as `nexora-py`, and is imported in Python directly as `nexora`, e.g. `import nexora` or `from nexora import App`.)*
89
+
90
+ ## Quickstart
91
+
92
+ ```python
93
+ from nexora import App
94
+
95
+ app = App()
96
+
97
+ @app.task
98
+ def process_data():
99
+ print("processing...")
100
+
101
+ app.run()
102
+ ```
103
+
104
+ Every task call automatically emits `task.started` / `task.completed` /
105
+ `task.failed` events on the app's event bus, which anything else in the
106
+ process can subscribe to:
107
+
108
+ ```python
109
+ @app.bus.on("task.completed")
110
+ def on_done(event):
111
+ print(f"{event.payload['task']} took {event.payload['duration_seconds']:.3f}s")
112
+ ```
113
+
114
+ See [`examples/`](examples/) for runnable demonstrations:
115
+ - **`showcase_all.py`**: **Master live showcase of all 10 milestones in action!**
116
+ - `ghost_ui_demo.py`: GhostUI automatic terminal UI dashboards, logs, and metrics
117
+ - `codeworld_demo.py`: CodeWorld 2D entity visualization and spatial topology
118
+ - `mood_ui_demo.py`: MoodUI interaction-aware adaptive interfaces and friction detection
119
+ - `recall_demo.py`: Recall persistent application memory with secret redaction
120
+ - `timeloop_demo.py`: TimeLoop runtime state checkpoints, rewind, and structural diff
121
+ - `shadow_demo.py`: Shadow live observability, high-resolution timing, and error tracking
122
+ - `vision_demo.py`: ScreenMind explicitly-permissioned screen perception
123
+ - `worldforge_demo.py`: WorldForge interactive procedural world generation
124
+ - `agentbox_demo.py`: AgentBox sandboxed autonomous agent execution
125
+ - `events_demo.py`: Using `EventBus` standalone
126
+ - `state_and_storage_demo.py`: Observable state + local persistence
127
+
128
+ ## CLI
129
+
130
+ ```bash
131
+ nexora version # print the installed version
132
+ nexora doctor # check which optional extras are installed
133
+ nexora init myapp # scaffold a new NEXORA app
134
+ ```
135
+
136
+ ## What's implemented today
137
+
138
+ | Layer | Status | Module |
139
+ |---|---|---|
140
+ | Event system | ✅ implemented | `nexora.events` (`EventBus`, `Event`) |
141
+ | State | ✅ implemented | `nexora.state` (`State`) |
142
+ | Configuration | ✅ implemented | `nexora.config` (`Config`) |
143
+ | Security / privacy | ✅ implemented | `nexora.security` (`PermissionManager`, `SecretRedactor`) |
144
+ | Local storage | ✅ implemented | `nexora.storage` (`LocalStore`, SQLite-backed) |
145
+ | Plugin architecture | ✅ implemented | `nexora.plugins` (`Plugin`, feature registry) |
146
+ | App / tasks | ✅ implemented | `nexora.App` |
147
+ | CLI | ✅ implemented | `nexora` command (`version`, `doctor`, `init`) |
148
+ | GhostUI | ✅ implemented | `nexora.ghost` (`GhostPlugin`, `GhostUI`, terminal interfaces via `rich`) |
149
+ | CodeWorld | ✅ implemented | `nexora.world` (`WorldPlugin`, `CodeWorld`, 2D entity visualization via `pygame`) |
150
+ | MoodUI (adaptive) | ✅ implemented | `nexora.adaptive` (`AdaptivePlugin`, `MoodUI`, interaction-aware states) |
151
+ | Recall (memory) | ✅ implemented | `nexora.memory` (`MemoryPlugin`, `Recall`, structured memory via `LocalStore`) |
152
+ | TimeLoop (timeline) | ✅ implemented | `nexora.timeline` (`TimelinePlugin`, `TimeLoop`, state checkpoint & rewind) |
153
+ | Shadow (observability) | ✅ implemented | `nexora.shadow` (`ShadowPlugin`, `Shadow`, genuine execution timing & errors) |
154
+ | ScreenMind (vision) | ✅ implemented | `nexora.vision` (`VisionPlugin`, `ScreenMind`, explicitly-permissioned screen perception) |
155
+ | WorldForge | ✅ implemented | `nexora.worldforge` (`WorldForgePlugin`, `WorldForge`, procedural interactive worlds) |
156
+ | AgentBox | ✅ implemented | `nexora.agentbox` (`AgentBoxPlugin`, `AgentBox`, sandboxed execution for autonomous agents) |
157
+
158
+ ### Modular Feature Activation
159
+
160
+ Every feature is strictly optional and isolated. You activate only the modules your application needs:
161
+
162
+ ```python
163
+ from nexora import App
164
+
165
+ # Opt in to only the features you want:
166
+ app = App(features=["ghost", "memory", "shadow"])
167
+
168
+ # Access feature APIs directly on the app instance:
169
+ app.memory.remember("server_config", {"port": 8080})
170
+ app.ghost.log("App initialized with memory & shadow observability.")
171
+ ```
172
+
173
+ If an app requests a planned or unregistered feature that is not available, NEXORA raises a clear `NotImplementedError` rather than silently failing:
174
+
175
+ ```python
176
+ app = App(features=["unbuilt_custom_plugin"])
177
+ app.run()
178
+ # NotImplementedError: NEXORA feature 'unbuilt_custom_plugin' is not registered...
179
+ ```
180
+
181
+ See [docs/ROADMAP.md](docs/ROADMAP.md) for the complete roadmap and
182
+ [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for how the layers fit
183
+ together.
184
+
185
+ ## Privacy principles
186
+
187
+ NEXORA is local-first by default:
188
+
189
+ - `Config.telemetry` and `Config.cloud_sync` default to `False`.
190
+ - `nexora.security.PermissionManager` grants nothing by default -- every
191
+ privacy-sensitive capability future modules add (screen capture, agent
192
+ file/system access, etc.) must be explicitly granted per scope, and
193
+ every grant/revoke is recorded in an in-process audit trail.
194
+ - `nexora.storage.LocalStore` is SQLite-backed, on-disk, and makes no
195
+ network calls.
196
+ - `nexora.security.SecretRedactor` exists so state/timeline snapshots
197
+ never blindly serialize obvious secret-shaped keys --
198
+ this is a best-effort heuristic, not a guarantee, and callers should
199
+ always add known-sensitive fields explicitly.
200
+
201
+ See [SECURITY.md](SECURITY.md) for the full policy and responsible
202
+ disclosure process.
203
+
204
+ ## Development
205
+
206
+ ```bash
207
+ git clone https://github.com/TejaPriyan/Nexora.git
208
+ cd Nexora
209
+ pip install -e ".[dev]"
210
+ pytest
211
+ ```
212
+
213
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for how modules are added
214
+ incrementally.
215
+
216
+ ## License
217
+
218
+ MIT -- see [LICENSE](LICENSE).
@@ -0,0 +1,174 @@
1
+ # NEXORA
2
+
3
+ **One Python ecosystem. Many capabilities. Completely modular. Local-first. Privacy-first. Open-source.**
4
+
5
+ NEXORA is a modular Python runtime. The long-term vision is to give ordinary
6
+ Python applications new capabilities -- automatic interfaces, visual
7
+ application/world representations, adaptive interfaces, persistent
8
+ application memory, state history and rewind, screen/computer perception,
9
+ live application observation, interactive world generation, and controlled
10
+ AI-agent execution -- all built on one small, shared runtime.
11
+
12
+ This is **not** meant to become another chatbot wrapper, terminal UI
13
+ library, game engine, vector database wrapper, agent wrapper, or
14
+ automation library on its own. Each capability is a module; the modules
15
+ share one event system, one state model, one security/privacy layer, and
16
+ one CLI.
17
+
18
+ > **Status: v1.0.0 (Complete Platform Release).** All 10 milestones are fully implemented and verified:
19
+ > NEXORA Core, **GhostUI** (Milestone 1), **CodeWorld** (Milestone 2), **MoodUI** (Milestone 3),
20
+ > **Recall** (Milestone 4), **TimeLoop** (Milestone 5), **Shadow** (Milestone 6),
21
+ > **ScreenMind** (Milestone 7), **WorldForge** (Milestone 8), **AgentBox** (Milestone 9),
22
+ > and **Module Interoperability** (Milestone 10) -- see [What's implemented today](#whats-implemented-today)
23
+ > and [docs/ROADMAP.md](docs/ROADMAP.md). Every module communicates strictly through the shared EventBus and State with zero cross-module imports.
24
+
25
+ ---
26
+
27
+ ## Install
28
+
29
+ ```bash
30
+ pip install nexora-py
31
+ ```
32
+
33
+ The base install is dependency-free (Python stdlib only). Feature modules
34
+ pull in extras as needed, e.g.:
35
+
36
+ ```bash
37
+ pip install nexora-py[ghost] # rich (GhostUI automatic terminal interfaces)
38
+ pip install nexora-py[world] # pygame (CodeWorld 2D entity visualization)
39
+ pip install nexora-py[vision] # pillow + mss (ScreenMind screen perception)
40
+ pip install nexora-py[ai] # numpy, for numerical operations
41
+ pip install nexora-py[all] # everything above
42
+ ```
43
+
44
+ *(Note: The package installs as `nexora-py`, and is imported in Python directly as `nexora`, e.g. `import nexora` or `from nexora import App`.)*
45
+
46
+ ## Quickstart
47
+
48
+ ```python
49
+ from nexora import App
50
+
51
+ app = App()
52
+
53
+ @app.task
54
+ def process_data():
55
+ print("processing...")
56
+
57
+ app.run()
58
+ ```
59
+
60
+ Every task call automatically emits `task.started` / `task.completed` /
61
+ `task.failed` events on the app's event bus, which anything else in the
62
+ process can subscribe to:
63
+
64
+ ```python
65
+ @app.bus.on("task.completed")
66
+ def on_done(event):
67
+ print(f"{event.payload['task']} took {event.payload['duration_seconds']:.3f}s")
68
+ ```
69
+
70
+ See [`examples/`](examples/) for runnable demonstrations:
71
+ - **`showcase_all.py`**: **Master live showcase of all 10 milestones in action!**
72
+ - `ghost_ui_demo.py`: GhostUI automatic terminal UI dashboards, logs, and metrics
73
+ - `codeworld_demo.py`: CodeWorld 2D entity visualization and spatial topology
74
+ - `mood_ui_demo.py`: MoodUI interaction-aware adaptive interfaces and friction detection
75
+ - `recall_demo.py`: Recall persistent application memory with secret redaction
76
+ - `timeloop_demo.py`: TimeLoop runtime state checkpoints, rewind, and structural diff
77
+ - `shadow_demo.py`: Shadow live observability, high-resolution timing, and error tracking
78
+ - `vision_demo.py`: ScreenMind explicitly-permissioned screen perception
79
+ - `worldforge_demo.py`: WorldForge interactive procedural world generation
80
+ - `agentbox_demo.py`: AgentBox sandboxed autonomous agent execution
81
+ - `events_demo.py`: Using `EventBus` standalone
82
+ - `state_and_storage_demo.py`: Observable state + local persistence
83
+
84
+ ## CLI
85
+
86
+ ```bash
87
+ nexora version # print the installed version
88
+ nexora doctor # check which optional extras are installed
89
+ nexora init myapp # scaffold a new NEXORA app
90
+ ```
91
+
92
+ ## What's implemented today
93
+
94
+ | Layer | Status | Module |
95
+ |---|---|---|
96
+ | Event system | ✅ implemented | `nexora.events` (`EventBus`, `Event`) |
97
+ | State | ✅ implemented | `nexora.state` (`State`) |
98
+ | Configuration | ✅ implemented | `nexora.config` (`Config`) |
99
+ | Security / privacy | ✅ implemented | `nexora.security` (`PermissionManager`, `SecretRedactor`) |
100
+ | Local storage | ✅ implemented | `nexora.storage` (`LocalStore`, SQLite-backed) |
101
+ | Plugin architecture | ✅ implemented | `nexora.plugins` (`Plugin`, feature registry) |
102
+ | App / tasks | ✅ implemented | `nexora.App` |
103
+ | CLI | ✅ implemented | `nexora` command (`version`, `doctor`, `init`) |
104
+ | GhostUI | ✅ implemented | `nexora.ghost` (`GhostPlugin`, `GhostUI`, terminal interfaces via `rich`) |
105
+ | CodeWorld | ✅ implemented | `nexora.world` (`WorldPlugin`, `CodeWorld`, 2D entity visualization via `pygame`) |
106
+ | MoodUI (adaptive) | ✅ implemented | `nexora.adaptive` (`AdaptivePlugin`, `MoodUI`, interaction-aware states) |
107
+ | Recall (memory) | ✅ implemented | `nexora.memory` (`MemoryPlugin`, `Recall`, structured memory via `LocalStore`) |
108
+ | TimeLoop (timeline) | ✅ implemented | `nexora.timeline` (`TimelinePlugin`, `TimeLoop`, state checkpoint & rewind) |
109
+ | Shadow (observability) | ✅ implemented | `nexora.shadow` (`ShadowPlugin`, `Shadow`, genuine execution timing & errors) |
110
+ | ScreenMind (vision) | ✅ implemented | `nexora.vision` (`VisionPlugin`, `ScreenMind`, explicitly-permissioned screen perception) |
111
+ | WorldForge | ✅ implemented | `nexora.worldforge` (`WorldForgePlugin`, `WorldForge`, procedural interactive worlds) |
112
+ | AgentBox | ✅ implemented | `nexora.agentbox` (`AgentBoxPlugin`, `AgentBox`, sandboxed execution for autonomous agents) |
113
+
114
+ ### Modular Feature Activation
115
+
116
+ Every feature is strictly optional and isolated. You activate only the modules your application needs:
117
+
118
+ ```python
119
+ from nexora import App
120
+
121
+ # Opt in to only the features you want:
122
+ app = App(features=["ghost", "memory", "shadow"])
123
+
124
+ # Access feature APIs directly on the app instance:
125
+ app.memory.remember("server_config", {"port": 8080})
126
+ app.ghost.log("App initialized with memory & shadow observability.")
127
+ ```
128
+
129
+ If an app requests a planned or unregistered feature that is not available, NEXORA raises a clear `NotImplementedError` rather than silently failing:
130
+
131
+ ```python
132
+ app = App(features=["unbuilt_custom_plugin"])
133
+ app.run()
134
+ # NotImplementedError: NEXORA feature 'unbuilt_custom_plugin' is not registered...
135
+ ```
136
+
137
+ See [docs/ROADMAP.md](docs/ROADMAP.md) for the complete roadmap and
138
+ [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for how the layers fit
139
+ together.
140
+
141
+ ## Privacy principles
142
+
143
+ NEXORA is local-first by default:
144
+
145
+ - `Config.telemetry` and `Config.cloud_sync` default to `False`.
146
+ - `nexora.security.PermissionManager` grants nothing by default -- every
147
+ privacy-sensitive capability future modules add (screen capture, agent
148
+ file/system access, etc.) must be explicitly granted per scope, and
149
+ every grant/revoke is recorded in an in-process audit trail.
150
+ - `nexora.storage.LocalStore` is SQLite-backed, on-disk, and makes no
151
+ network calls.
152
+ - `nexora.security.SecretRedactor` exists so state/timeline snapshots
153
+ never blindly serialize obvious secret-shaped keys --
154
+ this is a best-effort heuristic, not a guarantee, and callers should
155
+ always add known-sensitive fields explicitly.
156
+
157
+ See [SECURITY.md](SECURITY.md) for the full policy and responsible
158
+ disclosure process.
159
+
160
+ ## Development
161
+
162
+ ```bash
163
+ git clone https://github.com/TejaPriyan/Nexora.git
164
+ cd Nexora
165
+ pip install -e ".[dev]"
166
+ pytest
167
+ ```
168
+
169
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for how modules are added
170
+ incrementally.
171
+
172
+ ## License
173
+
174
+ MIT -- see [LICENSE](LICENSE).
@@ -0,0 +1,52 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "nexora-py"
7
+ version = "1.0.0"
8
+ description = "A modular, local-first Python runtime: events, plugins, state, adaptive interfaces, memory, timeline rewind, observability, screen perception, procedural worlds, and sandboxed agents."
9
+ readme = "README.md"
10
+ requires-python = ">=3.9"
11
+ license = "MIT"
12
+ authors = [{ name = "Teja Priyan", email = "teja1616150@gmail.com" }, { name = "NEXORA Contributors" }]
13
+ keywords = ["runtime", "events", "plugins", "local-first", "privacy", "agents", "observability"]
14
+ classifiers = [
15
+ "Development Status :: 5 - Production/Stable",
16
+ "Intended Audience :: Developers",
17
+ "Operating System :: OS Independent",
18
+ "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3.9",
20
+ "Programming Language :: Python :: 3.10",
21
+ "Programming Language :: Python :: 3.11",
22
+ "Programming Language :: Python :: 3.12",
23
+ "Topic :: Software Development :: Libraries :: Application Frameworks",
24
+ ]
25
+ # The base install is intentionally dependency-free (stdlib only).
26
+ dependencies = []
27
+
28
+ [project.optional-dependencies]
29
+ ghost = ["rich>=13.0"]
30
+ world = ["pygame>=2.5"]
31
+ vision = ["pillow>=10.0", "mss>=9.0"]
32
+ ai = ["numpy>=1.24"]
33
+ dev = ["pytest>=7.4", "pytest-cov>=4.1"]
34
+ all = ["rich>=13.0", "pygame>=2.5", "pillow>=10.0", "mss>=9.0", "numpy>=1.24"]
35
+
36
+ [project.scripts]
37
+ nexora = "nexora.cli.main:main"
38
+
39
+ [project.urls]
40
+ Homepage = "https://github.com/TejaPriyan/Nexora"
41
+ Documentation = "https://github.com/TejaPriyan/Nexora/tree/main/docs"
42
+ Repository = "https://github.com/TejaPriyan/Nexora.git"
43
+ Issues = "https://github.com/TejaPriyan/Nexora/issues"
44
+
45
+ [tool.setuptools.packages.find]
46
+ where = ["src"]
47
+
48
+ [tool.setuptools.package-data]
49
+ nexora = ["py.typed"]
50
+
51
+ [tool.pytest.ini_options]
52
+ testpaths = ["tests"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,21 @@
1
+ from ._version import __version__
2
+ from .app import App
3
+ from .config import Config
4
+ from .events import Event, EventBus
5
+ from .runtime import Runtime
6
+ from .security import PermissionManager, SecretRedactor
7
+ from .state import State
8
+ from .storage import LocalStore
9
+
10
+ __all__ = [
11
+ "__version__",
12
+ "App",
13
+ "Config",
14
+ "Event",
15
+ "EventBus",
16
+ "Runtime",
17
+ "State",
18
+ "PermissionManager",
19
+ "SecretRedactor",
20
+ "LocalStore",
21
+ ]
@@ -0,0 +1 @@
1
+ __version__ = "1.0.0"
@@ -0,0 +1,24 @@
1
+ """MoodUI (adaptive interfaces) -- Milestone 3 of NEXORA.
2
+
3
+ Derives interaction-aware states (NORMAL, FAST, DIFFICULTY_HIGH, INACTIVE,
4
+ ERROR_HEAVY) purely from observable signals -- repeated/failed actions,
5
+ navigation loops, help requests, inactivity -- with explicit opt-in
6
+ and no hidden monitoring. Strictly avoids emotion-detection claims.
7
+ """
8
+
9
+ from .engine import AdaptiveEngine
10
+ from .models import AdaptiveConfig, InteractionSignal, InteractionState, StateTransition
11
+ from .plugin import AdaptivePlugin, MoodUI
12
+
13
+ STATUS = "implemented"
14
+
15
+ __all__ = [
16
+ "AdaptivePlugin",
17
+ "MoodUI",
18
+ "AdaptiveEngine",
19
+ "AdaptiveConfig",
20
+ "InteractionSignal",
21
+ "InteractionState",
22
+ "StateTransition",
23
+ "STATUS",
24
+ ]