minxg-beta 0.12.1__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.
- minxg_beta-0.12.1/LICENSE +21 -0
- minxg_beta-0.12.1/PKG-INFO +501 -0
- minxg_beta-0.12.1/README.md +456 -0
- minxg_beta-0.12.1/agent/__init__.py +5 -0
- minxg_beta-0.12.1/agent/conversation_loop.py +344 -0
- minxg_beta-0.12.1/agent/iteration_budget.py +56 -0
- minxg_beta-0.12.1/extensions/__init__.py +169 -0
- minxg_beta-0.12.1/extensions/builtin/__init__.py +1 -0
- minxg_beta-0.12.1/extensions/builtin/adb_ext/__init__.py +143 -0
- minxg_beta-0.12.1/extensions/builtin/files_ext/__init__.py +131 -0
- minxg_beta-0.12.1/extensions/builtin/hello.py +52 -0
- minxg_beta-0.12.1/extensions/builtin/list_ext.py +46 -0
- minxg_beta-0.12.1/extensions/builtin/root_ext/__init__.py +143 -0
- minxg_beta-0.12.1/extensions/import_wizard.py +524 -0
- minxg_beta-0.12.1/extensions/loader.py +368 -0
- minxg_beta-0.12.1/extensions/package_cli.py +348 -0
- minxg_beta-0.12.1/extensions/user/__init__.py +1 -0
- minxg_beta-0.12.1/extensions/zipscan/__init__.py +194 -0
- minxg_beta-0.12.1/gateway/__init__.py +14 -0
- minxg_beta-0.12.1/gateway/inference.py +168 -0
- minxg_beta-0.12.1/gateway/rag.py +143 -0
- minxg_beta-0.12.1/gateway/router.py +189 -0
- minxg_beta-0.12.1/gateway/runner.py +126 -0
- minxg_beta-0.12.1/gateway/server.py +669 -0
- minxg_beta-0.12.1/gateway/workspace.py +149 -0
- minxg_beta-0.12.1/minxg/__init__.py +156 -0
- minxg_beta-0.12.1/minxg/_config.py +36 -0
- minxg_beta-0.12.1/minxg/base.py +226 -0
- minxg_beta-0.12.1/minxg/cap/__init__.py +44 -0
- minxg_beta-0.12.1/minxg/cap/__main__.py +4 -0
- minxg_beta-0.12.1/minxg/cap/cli.py +84 -0
- minxg_beta-0.12.1/minxg/cap/manifest.py +160 -0
- minxg_beta-0.12.1/minxg/cap/registry.py +44 -0
- minxg_beta-0.12.1/minxg/cap/scanner.py +66 -0
- minxg_beta-0.12.1/minxg/cat/__init__.py +13 -0
- minxg_beta-0.12.1/minxg/cat/functor.py +213 -0
- minxg_beta-0.12.1/minxg/cat/monad.py +299 -0
- minxg_beta-0.12.1/minxg/cat/morphism.py +267 -0
- minxg_beta-0.12.1/minxg/cat/operators_cat.py +429 -0
- minxg_beta-0.12.1/minxg/cat/yoneda.py +129 -0
- minxg_beta-0.12.1/minxg/chaos/__init__.py +16 -0
- minxg_beta-0.12.1/minxg/chaos/bifurcation.py +68 -0
- minxg_beta-0.12.1/minxg/chaos/fractal.py +138 -0
- minxg_beta-0.12.1/minxg/chaos/ifs.py +94 -0
- minxg_beta-0.12.1/minxg/chaos/lyapunov.py +98 -0
- minxg_beta-0.12.1/minxg/chaos/maps.py +148 -0
- minxg_beta-0.12.1/minxg/chaos/operators_chaos.py +229 -0
- minxg_beta-0.12.1/minxg/contracts/__init__.py +31 -0
- minxg_beta-0.12.1/minxg/contracts/cell.py +61 -0
- minxg_beta-0.12.1/minxg/contracts/examples.py +20 -0
- minxg_beta-0.12.1/minxg/contracts/lifecycle.py +43 -0
- minxg_beta-0.12.1/minxg/contracts/port.py +53 -0
- minxg_beta-0.12.1/minxg/contracts/registry.py +97 -0
- minxg_beta-0.12.1/minxg/driver/__init__.py +37 -0
- minxg_beta-0.12.1/minxg/driver/engine.py +165 -0
- minxg_beta-0.12.1/minxg/driver/fields.py +80 -0
- minxg_beta-0.12.1/minxg/driver/operator.py +61 -0
- minxg_beta-0.12.1/minxg/driver/state.py +65 -0
- minxg_beta-0.12.1/minxg/fiber/__init__.py +14 -0
- minxg_beta-0.12.1/minxg/fiber/bundle.py +84 -0
- minxg_beta-0.12.1/minxg/fiber/connection.py +200 -0
- minxg_beta-0.12.1/minxg/fiber/frame.py +104 -0
- minxg_beta-0.12.1/minxg/fiber/operators_fiber.py +281 -0
- minxg_beta-0.12.1/minxg/fiber/section.py +105 -0
- minxg_beta-0.12.1/minxg/fiber/tangent.py +143 -0
- minxg_beta-0.12.1/minxg/five_pillars/aggregate/__init__.py +0 -0
- minxg_beta-0.12.1/minxg/five_pillars/aggregate/benchmark_tools.py +123 -0
- minxg_beta-0.12.1/minxg/five_pillars/aggregate/crypto_tools.py +194 -0
- minxg_beta-0.12.1/minxg/five_pillars/aggregate/data_tools.py +389 -0
- minxg_beta-0.12.1/minxg/five_pillars/aggregate/encoding_tools.py +122 -0
- minxg_beta-0.12.1/minxg/five_pillars/aggregate/i18n_tools.py +87 -0
- minxg_beta-0.12.1/minxg/five_pillars/aggregate/math_adv.py +616 -0
- minxg_beta-0.12.1/minxg/five_pillars/aggregate/ml_tools.py +222 -0
- minxg_beta-0.12.1/minxg/five_pillars/aggregate/template_tools.py +137 -0
- minxg_beta-0.12.1/minxg/five_pillars/aggregate/text_adv.py +796 -0
- minxg_beta-0.12.1/minxg/five_pillars/dispatch/__init__.py +0 -0
- minxg_beta-0.12.1/minxg/five_pillars/dispatch/adb_tools.py +278 -0
- minxg_beta-0.12.1/minxg/five_pillars/dispatch/dev_tools.py +166 -0
- minxg_beta-0.12.1/minxg/five_pillars/dispatch/go_client.py +217 -0
- minxg_beta-0.12.1/minxg/five_pillars/dispatch/limits_break.py +197 -0
- minxg_beta-0.12.1/minxg/five_pillars/dispatch/limits_lock.py +162 -0
- minxg_beta-0.12.1/minxg/five_pillars/dispatch/notify_tools.py +84 -0
- minxg_beta-0.12.1/minxg/five_pillars/dispatch/platform_registry.py +264 -0
- minxg_beta-0.12.1/minxg/five_pillars/dispatch/platform_tools.py +116 -0
- minxg_beta-0.12.1/minxg/five_pillars/dispatch/process_tools.py +108 -0
- minxg_beta-0.12.1/minxg/five_pillars/dispatch/root_tools.py +249 -0
- minxg_beta-0.12.1/minxg/five_pillars/dispatch/security_tools.py +151 -0
- minxg_beta-0.12.1/minxg/five_pillars/dispatch/sh_exec.py +89 -0
- minxg_beta-0.12.1/minxg/five_pillars/dispatch/sh_query.py +62 -0
- minxg_beta-0.12.1/minxg/five_pillars/dispatch/system.py +249 -0
- minxg_beta-0.12.1/minxg/five_pillars/io/__init__.py +0 -0
- minxg_beta-0.12.1/minxg/five_pillars/io/archive_tools.py +399 -0
- minxg_beta-0.12.1/minxg/five_pillars/io/cloud_tools.py +191 -0
- minxg_beta-0.12.1/minxg/five_pillars/io/db_tools.py +152 -0
- minxg_beta-0.12.1/minxg/five_pillars/io/fs_copy.py +211 -0
- minxg_beta-0.12.1/minxg/five_pillars/io/fs_io.py +174 -0
- minxg_beta-0.12.1/minxg/five_pillars/io/fs_search.py +175 -0
- minxg_beta-0.12.1/minxg/five_pillars/io/media_adv.py +390 -0
- minxg_beta-0.12.1/minxg/five_pillars/io/media_tools.py +197 -0
- minxg_beta-0.12.1/minxg/five_pillars/io/network.py +259 -0
- minxg_beta-0.12.1/minxg/five_pillars/io/network_adv.py +302 -0
- minxg_beta-0.12.1/minxg/five_pillars/io/web_search.py +203 -0
- minxg_beta-0.12.1/minxg/five_pillars/io/web_tools.py +241 -0
- minxg_beta-0.12.1/minxg/five_pillars/scalar/__init__.py +0 -0
- minxg_beta-0.12.1/minxg/five_pillars/scalar/color_tools.py +95 -0
- minxg_beta-0.12.1/minxg/five_pillars/scalar/core_native.py +721 -0
- minxg_beta-0.12.1/minxg/five_pillars/scalar/datetime_tools.py +108 -0
- minxg_beta-0.12.1/minxg/five_pillars/scalar/markdown_tools.py +78 -0
- minxg_beta-0.12.1/minxg/five_pillars/scalar/math_tools.py +181 -0
- minxg_beta-0.12.1/minxg/five_pillars/scalar/string_tools.py +120 -0
- minxg_beta-0.12.1/minxg/five_pillars/scalar/text_tools.py +167 -0
- minxg_beta-0.12.1/minxg/five_pillars/scalar/version_tools.py +60 -0
- minxg_beta-0.12.1/minxg/five_pillars/transform/__init__.py +0 -0
- minxg_beta-0.12.1/minxg/five_pillars/transform/ai_tools.py +285 -0
- minxg_beta-0.12.1/minxg/five_pillars/transform/events.py +183 -0
- minxg_beta-0.12.1/minxg/five_pillars/transform/hotreload.py +167 -0
- minxg_beta-0.12.1/minxg/five_pillars/transform/infinite_memory.py +443 -0
- minxg_beta-0.12.1/minxg/five_pillars/transform/persistence.py +312 -0
- minxg_beta-0.12.1/minxg/five_pillars/transform/rules.py +244 -0
- minxg_beta-0.12.1/minxg/five_pillars/transform/state_machine.py +146 -0
- minxg_beta-0.12.1/minxg/five_pillars/transform/state_session.py +156 -0
- minxg_beta-0.12.1/minxg/ga/__init__.py +17 -0
- minxg_beta-0.12.1/minxg/ga/algebra.py +301 -0
- minxg_beta-0.12.1/minxg/ga/multivector.py +431 -0
- minxg_beta-0.12.1/minxg/ga/operators_ga.py +268 -0
- minxg_beta-0.12.1/minxg/ga/rotor.py +252 -0
- minxg_beta-0.12.1/minxg/infogeo/__init__.py +21 -0
- minxg_beta-0.12.1/minxg/infogeo/connection.py +110 -0
- minxg_beta-0.12.1/minxg/infogeo/divergence.py +126 -0
- minxg_beta-0.12.1/minxg/infogeo/fisher.py +87 -0
- minxg_beta-0.12.1/minxg/infogeo/manifold.py +349 -0
- minxg_beta-0.12.1/minxg/infogeo/operators_ig.py +336 -0
- minxg_beta-0.12.1/minxg/lens/__init__.py +20 -0
- minxg_beta-0.12.1/minxg/lens/glossary.py +70 -0
- minxg_beta-0.12.1/minxg/lens/projector.py +104 -0
- minxg_beta-0.12.1/minxg/lossless/__init__.py +35 -0
- minxg_beta-0.12.1/minxg/lossless/bie.py +76 -0
- minxg_beta-0.12.1/minxg/lossless/codec.py +100 -0
- minxg_beta-0.12.1/minxg/lossless/skeleton.py +74 -0
- minxg_beta-0.12.1/minxg/operators.py +422 -0
- minxg_beta-0.12.1/minxg/polyglot/__init__.py +19 -0
- minxg_beta-0.12.1/minxg/polyglot/graph.py +73 -0
- minxg_beta-0.12.1/minxg/polyglot/languages.py +38 -0
- minxg_beta-0.12.1/minxg/polyglot/normalizer.py +161 -0
- minxg_beta-0.12.1/minxg/self_evolution/__init__.py +36 -0
- minxg_beta-0.12.1/minxg/self_evolution/failure_tour.py +84 -0
- minxg_beta-0.12.1/minxg/self_evolution/field_forge.py +105 -0
- minxg_beta-0.12.1/minxg/self_evolution/loop.py +131 -0
- minxg_beta-0.12.1/minxg/self_evolution/twin.py +76 -0
- minxg_beta-0.12.1/minxg/server.py +212 -0
- minxg_beta-0.12.1/minxg/topo/__init__.py +16 -0
- minxg_beta-0.12.1/minxg/topo/filtration.py +141 -0
- minxg_beta-0.12.1/minxg/topo/homology.py +139 -0
- minxg_beta-0.12.1/minxg/topo/mapper.py +159 -0
- minxg_beta-0.12.1/minxg/topo/operators_topo.py +414 -0
- minxg_beta-0.12.1/minxg/topo/persistence.py +202 -0
- minxg_beta-0.12.1/minxg/topo/simplicial.py +204 -0
- minxg_beta-0.12.1/minxg/twin/__init__.py +22 -0
- minxg_beta-0.12.1/minxg/twin/mapper.py +26 -0
- minxg_beta-0.12.1/minxg/twin/python_to_rust.py +308 -0
- minxg_beta-0.12.1/minxg/twin/rust_to_python.py +91 -0
- minxg_beta-0.12.1/minxg_beta.egg-info/PKG-INFO +501 -0
- minxg_beta-0.12.1/minxg_beta.egg-info/SOURCES.txt +263 -0
- minxg_beta-0.12.1/minxg_beta.egg-info/dependency_links.txt +1 -0
- minxg_beta-0.12.1/minxg_beta.egg-info/entry_points.txt +2 -0
- minxg_beta-0.12.1/minxg_beta.egg-info/requires.txt +21 -0
- minxg_beta-0.12.1/minxg_beta.egg-info/top_level.txt +7 -0
- minxg_beta-0.12.1/multiligua_cli/__init__.py +13 -0
- minxg_beta-0.12.1/multiligua_cli/banner.py +71 -0
- minxg_beta-0.12.1/multiligua_cli/doctor.py +324 -0
- minxg_beta-0.12.1/multiligua_cli/extensions/__init__.py +313 -0
- minxg_beta-0.12.1/multiligua_cli/extensions/tui.py +201 -0
- minxg_beta-0.12.1/multiligua_cli/extensions.py +38 -0
- minxg_beta-0.12.1/multiligua_cli/features.py +328 -0
- minxg_beta-0.12.1/multiligua_cli/file_selector.py +243 -0
- minxg_beta-0.12.1/multiligua_cli/gateway_cli.py +214 -0
- minxg_beta-0.12.1/multiligua_cli/i18n.py +211 -0
- minxg_beta-0.12.1/multiligua_cli/interactive.py +186 -0
- minxg_beta-0.12.1/multiligua_cli/logger.py +164 -0
- minxg_beta-0.12.1/multiligua_cli/main.py +665 -0
- minxg_beta-0.12.1/multiligua_cli/memory.py +482 -0
- minxg_beta-0.12.1/multiligua_cli/platforms.py +45 -0
- minxg_beta-0.12.1/multiligua_cli/providers.py +302 -0
- minxg_beta-0.12.1/multiligua_cli/setup.py +532 -0
- minxg_beta-0.12.1/multiligua_cli/syntax.py +371 -0
- minxg_beta-0.12.1/multiligua_cli/terminal_chat.py +200 -0
- minxg_beta-0.12.1/multiligua_cli/tui_chat.py +392 -0
- minxg_beta-0.12.1/multiligua_cli/utils.py +230 -0
- minxg_beta-0.12.1/multiligua_cli/wizard_ui.py +338 -0
- minxg_beta-0.12.1/multiling/__init__.py +34 -0
- minxg_beta-0.12.1/multiling/agent/__init__.py +25 -0
- minxg_beta-0.12.1/multiling/agent/agent.py +289 -0
- minxg_beta-0.12.1/multiling/agent/capability.py +140 -0
- minxg_beta-0.12.1/multiling/agent/reflection.py +246 -0
- minxg_beta-0.12.1/multiling/agent/role.py +148 -0
- minxg_beta-0.12.1/multiling/agent/session.py +208 -0
- minxg_beta-0.12.1/multiling/analytics/__init__.py +431 -0
- minxg_beta-0.12.1/multiling/analytics/tracker.py +15 -0
- minxg_beta-0.12.1/multiling/auth/__init__.py +371 -0
- minxg_beta-0.12.1/multiling/auth/tokens.py +29 -0
- minxg_beta-0.12.1/multiling/cache/__init__.py +275 -0
- minxg_beta-0.12.1/multiling/cache/lru.py +21 -0
- minxg_beta-0.12.1/multiling/cache/ttl.py +19 -0
- minxg_beta-0.12.1/multiling/cli_bootstrap.py +72 -0
- minxg_beta-0.12.1/multiling/config/__init__.py +567 -0
- minxg_beta-0.12.1/multiling/config/loader.py +20 -0
- minxg_beta-0.12.1/multiling/docs_generator.py +657 -0
- minxg_beta-0.12.1/multiling/ipc_server.py +700 -0
- minxg_beta-0.12.1/multiling/knowledge/__init__.py +558 -0
- minxg_beta-0.12.1/multiling/knowledge/base.py +23 -0
- minxg_beta-0.12.1/multiling/minxg_core.py +550 -0
- minxg_beta-0.12.1/multiling/model_tools.py +396 -0
- minxg_beta-0.12.1/multiling/orchestrator.py +1120 -0
- minxg_beta-0.12.1/multiling/pipeline/__init__.py +404 -0
- minxg_beta-0.12.1/multiling/pipeline/runner.py +18 -0
- minxg_beta-0.12.1/multiling/platform_cap.py +204 -0
- minxg_beta-0.12.1/multiling/profiler/__init__.py +413 -0
- minxg_beta-0.12.1/multiling/profiler/profile.py +26 -0
- minxg_beta-0.12.1/multiling/queue/__init__.py +346 -0
- minxg_beta-0.12.1/multiling/queue/fifo.py +13 -0
- minxg_beta-0.12.1/multiling/queue/priority.py +12 -0
- minxg_beta-0.12.1/multiling/scheduler/__init__.py +340 -0
- minxg_beta-0.12.1/multiling/scheduler/scheduler.py +26 -0
- minxg_beta-0.12.1/multiling/testing/__init__.py +372 -0
- minxg_beta-0.12.1/multiling/testing/fixtures.py +25 -0
- minxg_beta-0.12.1/multiling/toolsets.py +101 -0
- minxg_beta-0.12.1/multiling/vector/__init__.py +373 -0
- minxg_beta-0.12.1/multiling/vector/store.py +22 -0
- minxg_beta-0.12.1/multiling/workers_runner.py +64 -0
- minxg_beta-0.12.1/multiling/workflow/__init__.py +562 -0
- minxg_beta-0.12.1/multiling/workflow/engine.py +27 -0
- minxg_beta-0.12.1/pyproject.toml +136 -0
- minxg_beta-0.12.1/setup.cfg +4 -0
- minxg_beta-0.12.1/tests/test_01_geometric_algebra.py +65 -0
- minxg_beta-0.12.1/tests/test_02_category_theory.py +61 -0
- minxg_beta-0.12.1/tests/test_03_information_geometry.py +60 -0
- minxg_beta-0.12.1/tests/test_04_algebraic_topology.py +52 -0
- minxg_beta-0.12.1/tests/test_05_dynamical_systems.py +48 -0
- minxg_beta-0.12.1/tests/test_06_fiber_bundles.py +47 -0
- minxg_beta-0.12.1/tests/test_07_operator_registry.py +65 -0
- minxg_beta-0.12.1/tests/test_08_config.py +30 -0
- minxg_beta-0.12.1/tests/test_09_persistence.py +43 -0
- minxg_beta-0.12.1/tests/test_anti_loop.py +148 -0
- minxg_beta-0.12.1/tests/test_cap.py +149 -0
- minxg_beta-0.12.1/tests/test_cli_commands.py +312 -0
- minxg_beta-0.12.1/tests/test_driver.py +78 -0
- minxg_beta-0.12.1/tests/test_experimental_features.py +75 -0
- minxg_beta-0.12.1/tests/test_extensions.py +215 -0
- minxg_beta-0.12.1/tests/test_lens.py +63 -0
- minxg_beta-0.12.1/tests/test_lossless.py +70 -0
- minxg_beta-0.12.1/tests/test_memory_engine.py +150 -0
- minxg_beta-0.12.1/tests/test_platform_cap.py +59 -0
- minxg_beta-0.12.1/tests/test_polyglot.py +122 -0
- minxg_beta-0.12.1/tests/test_self_evolution.py +125 -0
- minxg_beta-0.12.1/tests/test_termux_notify.py +47 -0
- minxg_beta-0.12.1/tests/test_twin.py +110 -0
- minxg_beta-0.12.1/tools/__init__.py +5 -0
- minxg_beta-0.12.1/tools/cronjob_tools.py +286 -0
- minxg_beta-0.12.1/tools/delegate_tool.py +302 -0
- minxg_beta-0.12.1/tools/file_tools.py +415 -0
- minxg_beta-0.12.1/tools/registry.py +450 -0
- minxg_beta-0.12.1/tools/skill_manager_tool.py +199 -0
- minxg_beta-0.12.1/tools/system_tools.py +257 -0
- minxg_beta-0.12.1/tools/terminal_tool.py +219 -0
- minxg_beta-0.12.1/tools/web_tools.py +212 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 MINXG Authors
|
|
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,501 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: minxg-beta
|
|
3
|
+
Version: 0.12.1
|
|
4
|
+
Summary: MINXG — modular AI worker platform with a chat CLI, an OpenAI-compatible v1 gateway, opt-in extensions (ADB/ROOT/files), and a self-developed temporal driver engine. 306 mathematical operators (376 total across 11 categories). Pure Python.
|
|
5
|
+
Author: MINXG Authors
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/pineapple-ooo/MINXG-Beta
|
|
8
|
+
Project-URL: Documentation, https://github.com/pineapple-ooo/MINXG-Beta/blob/main/README.md
|
|
9
|
+
Project-URL: Repository, https://github.com/pineapple-ooo/MINXG-Beta
|
|
10
|
+
Project-URL: Issues, https://github.com/pineapple-ooo/MINXG-Beta/issues
|
|
11
|
+
Project-URL: Changelog, https://github.com/pineapple-ooo/MINXG-Beta/blob/main/CHANGELOG.md
|
|
12
|
+
Keywords: ai,orchestration,workers,operator,driver,five-pillars,self-evolution,lossless,polyglot,minxg
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
|
+
Requires-Python: >=3.11
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Requires-Dist: aiohttp>=3.9.0
|
|
25
|
+
Requires-Dist: cryptography>=41.0.0
|
|
26
|
+
Requires-Dist: PyYAML>=6.0.0
|
|
27
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
28
|
+
Requires-Dist: prometheus-client>=0.19.0
|
|
29
|
+
Requires-Dist: ujson>=5.9.0
|
|
30
|
+
Requires-Dist: zstandard>=0.22.0
|
|
31
|
+
Requires-Dist: xxhash>=3.4.0
|
|
32
|
+
Requires-Dist: orjson>=3.9.0
|
|
33
|
+
Requires-Dist: fastapi<1,>=0.104.0
|
|
34
|
+
Requires-Dist: uvicorn[standard]<1,>=0.24.0
|
|
35
|
+
Requires-Dist: rich>=13.0.0
|
|
36
|
+
Requires-Dist: readchar>=2.0.0
|
|
37
|
+
Requires-Dist: httpx[socks]>=0.27.0
|
|
38
|
+
Requires-Dist: croniter>=6.0.0
|
|
39
|
+
Provides-Extra: dev
|
|
40
|
+
Requires-Dist: pytest>=9.0.0; extra == "dev"
|
|
41
|
+
Requires-Dist: pytest-asyncio>=1.0.0; extra == "dev"
|
|
42
|
+
Requires-Dist: pytest-timeout>=2.4.0; extra == "dev"
|
|
43
|
+
Requires-Dist: ruff>=0.15.0; extra == "dev"
|
|
44
|
+
Dynamic: license-file
|
|
45
|
+
|
|
46
|
+
# MINXG
|
|
47
|
+
|
|
48
|
+
A modular AI worker platform with a built-in chat CLI, an OpenAI-compatible
|
|
49
|
+
v1 gateway, opt-in extensions (ADB / ROOT / files), and a self-developed
|
|
50
|
+
temporal driver engine — all in one Python package.
|
|
51
|
+
|
|
52
|
+
`pip install minxg-beta` drops you on Termux, Linux, macOS, and WSL
|
|
53
|
+
with a single `minxg` binary on `$PATH`. Workers are split across
|
|
54
|
+
five orthogonal operator planes (io, aggregate, scalar, transform,
|
|
55
|
+
dispatch), so editing one module never forces a full rebuild.
|
|
56
|
+
Pure Python — no compiled step required to install or run.
|
|
57
|
+
|
|
58
|
+
- This is the **v0.12.1** release. v0.12.1 closes every outstanding gap in the v0.12.0 surface: anti-loop guard, entropic multi-tier memory, per-platform tool cap, Termux notification hook, and the polyglot CMake build. It ships cold-start
|
|
59
|
+
hardening plus a polished setup wizard:
|
|
60
|
+
|
|
61
|
+
- `minxg` (no subcommand) now asks: chat CLI, start API gateway, or
|
|
62
|
+
run the setup wizard — instead of dropping straight into a TUI
|
|
63
|
+
shell.
|
|
64
|
+
- Setup wizard supports the OpenAI-standard `reasoning_effort` knob
|
|
65
|
+
(`xhigh` / `high` / `medium` / `low` / `minimal` / `none`) with
|
|
66
|
+
per-provider support maps (OpenAI supports all five, Anthropic
|
|
67
|
+
three, Gemini five, DeepSeek / Doubao / xAI four, etc.).
|
|
68
|
+
- Wizard menus strictly fit a single line per option — descriptions
|
|
69
|
+
are truncated to 28 chars so Termux 80-col screens stop spilling
|
|
70
|
+
one option across two terminal rows.
|
|
71
|
+
- Built-in extensions (`minxg-adb`, `minxg-root`, `minxg-files`)
|
|
72
|
+
ship opted-OUT. Users enable with `minxg ext add <slug>`. No
|
|
73
|
+
silent auto-attaching to whatever API happens to be on PATH.
|
|
74
|
+
- `cpp_core/CMakeLists.txt` link error fixed: `libminxg_core.so`
|
|
75
|
+
no longer crashes on `dlopen` with
|
|
76
|
+
`cannot locate symbol "minxg_slugify"` on Termux + Py3.13.
|
|
77
|
+
- `minxg model`: the AI provider registry was missing `name`,
|
|
78
|
+
`emoji`, and `description` for the second half of the providers,
|
|
79
|
+
crashing the setup wizard with `KeyError: 'emoji'`. All 32
|
|
80
|
+
providers are now normalised.
|
|
81
|
+
- `cpp_core/src/json_stringify.cpp` adds a flat C ABI over the C++
|
|
82
|
+
`json_fast` parser (re-parses per call so no `std::variant`
|
|
83
|
+
crosses the boundary on aarch64 Android, returns malloc'd buffers
|
|
84
|
+
freed via `cpp_json_free`). Exposed to Python through
|
|
85
|
+
`native_integration.CPPJsonNative` with a `JsonBuffer` lifetime
|
|
86
|
+
wrapper that holds the raw `c_void_p` pointer (the heap-corruption
|
|
87
|
+
footgun from using `c_char_p` is now memoralised at the top of the
|
|
88
|
+
class).
|
|
89
|
+
- `java_core/` ships a polyglot JVM-side daemon — line-oriented JSON
|
|
90
|
+
RPC on TCP, in-memory vector engine, knowledge graph, session
|
|
91
|
+
memory, persistent log — built with `javac` (no Maven/Gradle
|
|
92
|
+
required). Intended for users who already run a JVM and want a
|
|
93
|
+
hostable backend independent of the Python driver. Source-only;
|
|
94
|
+
build artefacts (`build/`, `*.jar`) stay out of git via the
|
|
95
|
+
existing `.gitignore`.
|
|
96
|
+
- Test suite now **exercises every CLI command** so a regression
|
|
97
|
+
that removes or renames a subcommand breaks CI (`tests/test_cli_commands.py`).
|
|
98
|
+
130 → 161 unit tests. AddressSanitizer harness (`tests/asan_harness.c`,
|
|
99
|
+
`build_asan/libminxg_asan.so`) verifies zero leak / zero use-after-free
|
|
100
|
+
across every C API; the `.so` files in repo root and `c_core/*.o`
|
|
101
|
+
have been removed from git tracking (still ignored by `.gitignore`).
|
|
102
|
+
- Install script no longer probes for `adb` / `su`. ADB & ROOT ship
|
|
103
|
+
as opt-in extensions (`minxg ext add minxg-adb`,
|
|
104
|
+
`minxg ext add minxg-root`) so the install path is identical
|
|
105
|
+
on dev workstations and locked-down CI.
|
|
106
|
+
|
|
107
|
+
## Install
|
|
108
|
+
|
|
109
|
+
The Python package's distribution name is **`minxg-beta`** and the
|
|
110
|
+
top-level import is **`minxg`**.
|
|
111
|
+
|
|
112
|
+
### One-liner (any platform)
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
curl -fsSL https://raw.githubusercontent.com/pineapple-ooo/MINXG-Beta/main/install.sh | bash
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
That single command:
|
|
119
|
+
- detects your platform (Termux / Linux / macOS / WSL),
|
|
120
|
+
- clones the full repo to `~/.minxg-src`,
|
|
121
|
+
- pip-installs everything in editable mode so the `minxg` console
|
|
122
|
+
script lands on `$PATH`,
|
|
123
|
+
- compiles the optional C extensions if a compiler is present,
|
|
124
|
+
- prints a status table at the end.
|
|
125
|
+
|
|
126
|
+
Variants:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
# custom clone dir
|
|
130
|
+
MINXG_DIR=/opt/minxg curl -fsSL https://raw.githubusercontent.com/pineapple-ooo/MINXG-Beta/main/install.sh | bash
|
|
131
|
+
|
|
132
|
+
# explicit repo URL (when forking)
|
|
133
|
+
REPO_URL=https://github.com/you/minxg.git curl -fsSL https://raw.githubusercontent.com/pineapple-ooo/MINXG-Beta/main/install.sh | bash
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Local clone (developer)
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
git clone https://github.com/<owner>/minxg.git
|
|
140
|
+
cd minxg
|
|
141
|
+
bash install.sh # picks up the existing clone, skips the git step
|
|
142
|
+
|
|
143
|
+
After install:
|
|
144
|
+
|
|
145
|
+
```python
|
|
146
|
+
import minxg
|
|
147
|
+
print(minxg.VERSION) # "0.10.0"
|
|
148
|
+
print(minxg.detect_platform())
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Verified end-to-end on Termux/Android (`Python 3.13`) and Linux:
|
|
152
|
+
```bash
|
|
153
|
+
$ pip install -e .
|
|
154
|
+
Successfully installed minxg-beta-0.10.0
|
|
155
|
+
|
|
156
|
+
$ python3 -c "import minxg; print(minxg.VERSION, len(minxg.__all__), 'workers;', minxg.TOTAL_MATHEMATICAL_OPERATORS, 'math ops')"
|
|
157
|
+
0.10.0 55 workers; 306 math ops
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**PyPI publication is on the roadmap but not yet done.** Until the
|
|
161
|
+
package shows up on PyPI under the `minxg-beta` name, the source-
|
|
162
|
+
tree mode above is the supported install path.
|
|
163
|
+
|
|
164
|
+
The codebase has no compiled dependencies on install; everything in
|
|
165
|
+
`minxg/five_pillars/`, `minxg/driver/`, `minxg/contracts/`,
|
|
166
|
+
`minxg/self_evolution/`, `minxg/polyglot/`, `minxg/lossless/`,
|
|
167
|
+
`minxg/twin/`, `minxg/lens/`, and the six mathematical pillars is
|
|
168
|
+
pure Python. Fall-back to pure Python is implicit: when no native
|
|
169
|
+
library is found or `dlopen` fails, the Python implementation is
|
|
170
|
+
used. The Termux/Android pipeline runs end-to-end via the lazy
|
|
171
|
+
loader for `cryptography` and the project-root-anchored
|
|
172
|
+
`core_native._find_lib` walker.
|
|
173
|
+
|
|
174
|
+
## Quick start
|
|
175
|
+
|
|
176
|
+
```python
|
|
177
|
+
import minxg
|
|
178
|
+
|
|
179
|
+
print(minxg.VERSION)
|
|
180
|
+
print(minxg.detect_platform())
|
|
181
|
+
|
|
182
|
+
fs = minxg.FsIoWorker()
|
|
183
|
+
result = await fs.list_directory(path="/tmp")
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
For the driver engine (substitute for a task graph):
|
|
187
|
+
|
|
188
|
+
```python
|
|
189
|
+
from minxg.driver import State, DriverEngine, smoothing_field
|
|
190
|
+
|
|
191
|
+
state = State(payload={"x": 0.0, "v": 1.0})
|
|
192
|
+
engine = DriverEngine([smoothing_field(rate=0.4)])
|
|
193
|
+
end, report = engine.run(state, n_steps=24)
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
For the lossless BIE round-trip codec:
|
|
197
|
+
|
|
198
|
+
```python
|
|
199
|
+
from minxg.lossless import LosslessCodec
|
|
200
|
+
|
|
201
|
+
codec = LosslessCodec()
|
|
202
|
+
result = codec.compress(b"some payload") # wraps an MINSKE blob + CRC-32
|
|
203
|
+
back = codec.decompress(result.payload)
|
|
204
|
+
assert back == b"some payload" # byte-identical, not size-optimised
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
This is a BIE (blade-decomposition) *byte-identical round-trip* — useful
|
|
208
|
+
as a structured representation of byte streams, not a competitor to
|
|
209
|
+
zstd/gzip. On random or low-redundancy inputs the encoded form is
|
|
210
|
+
larger than the source.
|
|
211
|
+
|
|
212
|
+
## Five pillars
|
|
213
|
+
|
|
214
|
+
The 55 worker classes are organised along five orthogonal planes:
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
minxg.five_pillars.scalar pure compute math / datetime / text / color
|
|
218
|
+
minxg.five_pillars.aggregate encoders crypto / encoding / ml / templates
|
|
219
|
+
minxg.five_pillars.io external surfaces fs / net / media / web / cloud
|
|
220
|
+
minxg.five_pillars.dispatch execution / limits system / sh / adb / root
|
|
221
|
+
minxg.five_pillars.transform state and events persistence / rules / ai
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Edit one worker, nothing else moves.
|
|
225
|
+
|
|
226
|
+
## Self-developed subsystems
|
|
227
|
+
|
|
228
|
+
* `minxg.driver` — Temporal Operator-Field driver engine. Operators
|
|
229
|
+
are pure functions on a shared state manifold; advancing one step
|
|
230
|
+
is explicit Euler integration with adaptive sub-stepping on drift.
|
|
231
|
+
* `minxg.contracts` — Operator-Cell registry. Each Cell advertises
|
|
232
|
+
capabilities; replacing one Cell never touches the others.
|
|
233
|
+
* `minxg.self_evolution` — Closed-loop self-improvement. A bouncer
|
|
234
|
+
records engine failures, a forge hunts capable Cells from the
|
|
235
|
+
contracts registry, a twin engine validates a swap is drift-safe
|
|
236
|
+
before committing.
|
|
237
|
+
* `minxg.polyglot` — Multi-language source-to-graph normaliser.
|
|
238
|
+
Python uses real `ast`; Rust / JavaScript / Go / shell use
|
|
239
|
+
regex-based structural heuristics (not full parsers). All five
|
|
240
|
+
reduce to a single `OperatorGraph` with topological-order
|
|
241
|
+
edges — good enough for code-shape recognition, not a compiler
|
|
242
|
+
front-end.
|
|
243
|
+
* `minxg.lossless` — BIE-geometry byte-identical round-trip. Every
|
|
244
|
+
byte becomes a unit-sphere point; transitions between bytes
|
|
245
|
+
become blades; the curvature skeleton is what gets stored, with
|
|
246
|
+
a CRC-32 trailer guaranteeing byte-identical reconstruction.
|
|
247
|
+
Structurally interesting; output is typically *larger* than the
|
|
248
|
+
input on real-world data.
|
|
249
|
+
* `minxg.twin` — Python ↔ Rust RTL compiler. Source-equivalent twin
|
|
250
|
+
emitters cover if/elif/else, while/for-range, augmented assignments,
|
|
251
|
+
binop/compare expressions.
|
|
252
|
+
* `minxg.lens` — Reverse-docstring exporter. Render any one
|
|
253
|
+
description into EN / ZH / ZH-TW / JA / KO doc files + a glossary.
|
|
254
|
+
|
|
255
|
+
## Mathematical pillars
|
|
256
|
+
|
|
257
|
+
Six categorical libraries ship with the package and register
|
|
258
|
+
**306 mathematical operator IDs** in 6 non-overlapping ranges on
|
|
259
|
+
import (376 operators total across all 11 categories; see
|
|
260
|
+
`OPERATORS.md`):
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
minxg.ga 5000-5049 geometric algebra (47 ids)
|
|
264
|
+
minxg.cat 4000-4078 category theory (79 ids)
|
|
265
|
+
minxg.infogeo 7000-7050 information geometry (51 ids)
|
|
266
|
+
minxg.topo 8000-8052 algebraic topology (53 ids)
|
|
267
|
+
minxg.chaos 8500-8522 dynamical systems (23 ids)
|
|
268
|
+
minxg.fiber 6000-6052 fiber bundles (53 ids)
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## Documentation
|
|
272
|
+
|
|
273
|
+
* `DEVELOPER.md` — full developer reference, one file
|
|
274
|
+
* `docs/ARCHITECTURE.md` — architecture diagrams and rationale
|
|
275
|
+
* `docs/DRIVER.md` — driver engine API and examples
|
|
276
|
+
* `docs/PILLARS.md` — one section per mathematical pillar
|
|
277
|
+
|
|
278
|
+
## Command reference
|
|
279
|
+
|
|
280
|
+
The shipped CLI surface is small on purpose. Every subcommand and
|
|
281
|
+
flag below is exercised by `tests/test_cli_commands.py`; if you
|
|
282
|
+
rename or remove one of them, CI will fail.
|
|
283
|
+
|
|
284
|
+
### Top-level commands
|
|
285
|
+
|
|
286
|
+
| command | what it does |
|
|
287
|
+
|--------------------|------------------------------------------------------------------------|
|
|
288
|
+
| `minxg` | Cold-start picker: chat CLI, OpenAI-compatible gateway, or setup. |
|
|
289
|
+
| `minxg setup` | Interactive setup wizard (run once; repeatable). |
|
|
290
|
+
| `minxg config` | Print current configuration (provider/model/key/etc.). |
|
|
291
|
+
| `minxg status` | Print system status (Python / platform / version). |
|
|
292
|
+
| `minxg tools` | List available toolsets and tool names. |
|
|
293
|
+
| `minxg help` | Pretty command cheatsheet. |
|
|
294
|
+
| `minxg model` | Without arg: re-launch setup. With `<NAME>`: one-shot set the model. |
|
|
295
|
+
| `minxg api <URL>` | One-shot set the API base URL. |
|
|
296
|
+
| `minxg key <KEY>` | One-shot set the API key. |
|
|
297
|
+
| `minxg lang [LC]` | Switch display language. Without arg: picker. With `<LC>`: one-shot. |
|
|
298
|
+
| `minxg gateway` | `start` / `stop` / `status` (default `status` when omitted). |
|
|
299
|
+
| `minxg doctor` | Twelve-row self-check; exit 0/1/2 = clean/fail/warn. |
|
|
300
|
+
| `minxg ext <a>...` | Manage extensions: `list`, `available`, `add`, `remove`, `info`, |
|
|
301
|
+
| | `enable`, `disable`. Run `minxg ext --help` for the full list. |
|
|
302
|
+
|
|
303
|
+
### Global flags
|
|
304
|
+
|
|
305
|
+
| flag | effect |
|
|
306
|
+
|---------------------|----------------------------------------------------------------|
|
|
307
|
+
| `--version` | Print `multiligua_cli.__version__` and exit. |
|
|
308
|
+
| `-h`, `--help` | argparse-style help. |
|
|
309
|
+
| `-v`, `--verbose` | Raise logging level to DEBUG. |
|
|
310
|
+
| `--list-extensions` | Print every registered extension (name, source, priority, desc).|
|
|
311
|
+
|
|
312
|
+
### Extension subcommands
|
|
313
|
+
|
|
314
|
+
```text
|
|
315
|
+
minxg ext list # show active extensions
|
|
316
|
+
minxg ext available # show built-in opt-in slugs
|
|
317
|
+
minxg ext info <slug> # describe a slug
|
|
318
|
+
minxg ext add <slug|path> # install built-in or local package
|
|
319
|
+
minxg ext remove <name> # remove an installed extension
|
|
320
|
+
minxg ext enable <name> # enable without re-installing
|
|
321
|
+
minxg ext disable <name> # disable without removing
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
The three built-in opt-in slugs are `minxg-adb`, `minxg-root`,
|
|
325
|
+
`minxg-files`. They install off-PATH tools; none of them silently
|
|
326
|
+
auto-attach to whatever binary happens to exist when `minxg` starts.
|
|
327
|
+
|
|
328
|
+
### Examples
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
# fresh install with public config
|
|
332
|
+
minxg setup
|
|
333
|
+
minxg config
|
|
334
|
+
|
|
335
|
+
# one-shots — no wizard
|
|
336
|
+
minxg model gpt-4o
|
|
337
|
+
minxg api https://api.openai.com/v1
|
|
338
|
+
minxg key $OPENAI_API_KEY
|
|
339
|
+
|
|
340
|
+
# start the gateway in the foreground
|
|
341
|
+
minxg gateway start --foreground
|
|
342
|
+
|
|
343
|
+
# discover extensions
|
|
344
|
+
minxg ext available
|
|
345
|
+
minxg ext info minxg-adb
|
|
346
|
+
minxg ext add minxg-adb # opt-in tool: not run during install
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
## Tutorials
|
|
350
|
+
|
|
351
|
+
### A. First conversation in 60 seconds
|
|
352
|
+
|
|
353
|
+
```bash
|
|
354
|
+
minxg setup # one wizard, picks provider + key
|
|
355
|
+
minxg config # confirm
|
|
356
|
+
minxg # TUI chat
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
If your provider supports `reasoning_effort`, the wizard step
|
|
360
|
+
offers the OpenAI-standard ladder
|
|
361
|
+
`xhigh > high > medium > low > minimal > none`. Pick a value, then
|
|
362
|
+
the wizard persists it under `ai.reasoning_effort` in `config.yaml`.
|
|
363
|
+
|
|
364
|
+
### B. Use `minxg` as an OpenAI-compatible backend for any client
|
|
365
|
+
|
|
366
|
+
Point your favourite client at the gateway:
|
|
367
|
+
|
|
368
|
+
```bash
|
|
369
|
+
minxg gateway start # listens on 127.0.0.1:18080
|
|
370
|
+
# -d / --detach runs in background; --foreground stays attached
|
|
371
|
+
|
|
372
|
+
$EDITOR config.yaml # add base_url & api_key under ai:
|
|
373
|
+
minxg gateway status # shows /v1/models dump
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
curl http://127.0.0.1:18080/v1/chat/completions \
|
|
378
|
+
-H "Authorization: Bearer $(python -c "import yaml; print(yaml.safe_load(open('config.yaml'))['ai']['api_key'])")" \
|
|
379
|
+
-H "Content-Type: application/json" \
|
|
380
|
+
-d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"hi"}]}'
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### C. Embed MINXG as a Python library
|
|
384
|
+
|
|
385
|
+
```python
|
|
386
|
+
import minxg
|
|
387
|
+
print(minxg.VERSION) # "0.12.1"
|
|
388
|
+
|
|
389
|
+
# Driver engine: temporal operator-field
|
|
390
|
+
from minxg.driver import State, DriverEngine, smoothing_field
|
|
391
|
+
end, report = DriverEngine([smoothing_field(rate=0.4)]).run(
|
|
392
|
+
State(payload={"x": 0.0, "v": 1.0}), n_steps=24,
|
|
393
|
+
)
|
|
394
|
+
|
|
395
|
+
# Lossless BIE codec: byte-identical round-trip
|
|
396
|
+
from minxg.lossless import LosslessCodec
|
|
397
|
+
assert LosslessCodec().decompress(
|
|
398
|
+
LosslessCodec().compress(b"payload").payload
|
|
399
|
+
) == b"payload"
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
### D. Add a private extension
|
|
403
|
+
|
|
404
|
+
```python
|
|
405
|
+
# ~/.minxg_src/extensions/user/my_ext.py
|
|
406
|
+
from multiligua_cli.extensions import ExtensionModule
|
|
407
|
+
class MyExt(ExtensionModule):
|
|
408
|
+
NAME = "my-ext"
|
|
409
|
+
DESCRIPTION = "does one thing well"
|
|
410
|
+
EXTENSION_ENABLED = True
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
```bash
|
|
414
|
+
minxg ext add ./my_ext.py
|
|
415
|
+
minxg ext info my-ext
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
## Troubleshooting
|
|
419
|
+
|
|
420
|
+
| symptom | cause | fix |
|
|
421
|
+
|-------------------------------------------------------------------------|-------------------------------------------------------------|------------------------------------------------------------------|
|
|
422
|
+
| `minxg: command not found` after install | editable install put launcher under `~/.local/bin` not on PATH | `export PATH="$HOME/.local/bin:$PATH"` (or use the Termux site) |
|
|
423
|
+
| `dlopen ... cannot locate symbol "minxg_slugify"` on Termux + Py3.13 | old `cpp_core/CMakeLists.txt` link order | rebuild with the new cmake; `pip install -e .` after rebuild |
|
|
424
|
+
| `KeyError: 'emoji'` in setup wizard | provider registry entry missing fields | fixed in 0.11.0; pull latest |
|
|
425
|
+
| `Configuration missing; run minxg setup` | first run, `config.yaml` not created | run `minxg setup` |
|
|
426
|
+
| `OSError: dlopen failed: library not accessible for the namespace` | SELinux / sandbox blocks shared object load | copy the `.so` into syslib path, or use `LD_LIBRARY_PATH` |
|
|
427
|
+
| `RuntimeError: cannot locate symbol "ZSTD_compressBound"` | linker didn't pull libzstd | `pkg install libzstd`, then rebuild native |
|
|
428
|
+
| `minxg gateway start: Address already in use` | port collision | edit `gateway.port` in `config.yaml`, or stop the other process |
|
|
429
|
+
| `cryptography` import raises `Symbol not found` on Termux | ABI / arch mismatch in the binary wheel | `MINXG_NO_NATIVE=1 minxg ...` (forces pure-Python fallback) |
|
|
430
|
+
| `Provider "<name>" did you mean ...` | typo in `minxg model <name>` | re-run `minxg model` (lints the provider name) |
|
|
431
|
+
|
|
432
|
+
If `minxg doctor` exits non-zero, paste the full output in your bug
|
|
433
|
+
report — it lists `minxg.__all__`, the operator registry size, native
|
|
434
|
+
lib status, and config validation in a fixed-width table.
|
|
435
|
+
|
|
436
|
+
### Enabling debug logs
|
|
437
|
+
|
|
438
|
+
```bash
|
|
439
|
+
minxg -v setup # verbose flag
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
The flag raises the root logger to DEBUG, useful for tracing
|
|
443
|
+
`extension discovery` and `provider normalisation` paths.
|
|
444
|
+
|
|
445
|
+
## Experimental surface
|
|
446
|
+
|
|
447
|
+
Anything labelled `[EXPERIMENTAL]` is **not** part of the supported
|
|
448
|
+
CLI surface. Signatures may change, methods may no-op, and entire
|
|
449
|
+
classes may disappear between minor versions without changelog
|
|
450
|
+
notice. They live in the tree so contributors can find them; do not
|
|
451
|
+
build tooling on top of them and do not ingest them into the
|
|
452
|
+
stable TUI.
|
|
453
|
+
|
|
454
|
+
The current experimental exports are reachable through:
|
|
455
|
+
|
|
456
|
+
```python
|
|
457
|
+
from multiligua_cli import features
|
|
458
|
+
print(features.list_experimental_exports())
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
In this release (0.11.0) that yields:
|
|
462
|
+
|
|
463
|
+
```
|
|
464
|
+
['QuickFeedback', 'SessionManager', 'SHORTCUTS', 'SilentFeatures',
|
|
465
|
+
'Spinner', 'THEMES', 'context_usage_bar', 'export_to_markdown',
|
|
466
|
+
'get_silent', 'play_notification', 'role_color',
|
|
467
|
+
'share_to_gist', 'welcome_animation']
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
Notable specifics:
|
|
471
|
+
|
|
472
|
+
* `SilentFeatures.check_updates()` is a **stub** that returns
|
|
473
|
+
`None` — the update-check backend is unfinished.
|
|
474
|
+
* `SilentFeatures.keepalive_check()` does a 3-second HEAD against
|
|
475
|
+
`https://api.openai.com/v1/models` — it does *not* authenticate,
|
|
476
|
+
it only checks the endpoint is reachable.
|
|
477
|
+
* `SilentFeatures.optimize_memory_index()` requires
|
|
478
|
+
`~/.minxg/memory.db` to exist; if it doesn't, the call is a no-op.
|
|
479
|
+
* `SessionManager` / `QuickFeedback` are *not* wired into the TUI
|
|
480
|
+
(saved sessions / feedback are not currently surfaced in the
|
|
481
|
+
shipped chat UI).
|
|
482
|
+
|
|
483
|
+
The first time you call any of these, a WARNING is logged via the
|
|
484
|
+
`features` logger so the experimental status is visible at runtime:
|
|
485
|
+
|
|
486
|
+
```text
|
|
487
|
+
WARNING features: EXPERIMENTAL feature SilentFeatures.disk_usage_report is not part of the stable CLI surface
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
If you genuinely need one of these and would like it promoted to
|
|
491
|
+
stable, file an issue with the use-case — that's how a feature
|
|
492
|
+
graduates out of `features.py`.
|
|
493
|
+
|
|
494
|
+
## See also
|
|
495
|
+
|
|
496
|
+
* `CHANGELOG.md` — per-version release notes
|
|
497
|
+
* `CONTRIBUTING`-style guidance lives in `DEVELOPER.md`
|
|
498
|
+
|
|
499
|
+
## License
|
|
500
|
+
|
|
501
|
+
MIT. See `LICENSE`.
|