clm-kernel 0.0.0__py3-none-any.whl
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.
- clm/__init__.py +230 -0
- clm/__main__.py +25 -0
- clm/cross_cutting/__init__.py +50 -0
- clm/cross_cutting/_test_runner.py +36 -0
- clm/cross_cutting/async_utils.py +25 -0
- clm/cross_cutting/cel_builder.py +123 -0
- clm/cross_cutting/cel_converter.py +697 -0
- clm/cross_cutting/cel_engine.py +252 -0
- clm/cross_cutting/cel_ops.py +72 -0
- clm/cross_cutting/cel_ops_db.py +157 -0
- clm/cross_cutting/cel_ops_files.py +99 -0
- clm/cross_cutting/cel_ops_state.py +71 -0
- clm/cross_cutting/cel_ops_strings.py +64 -0
- clm/cross_cutting/cel_resolver.py +63 -0
- clm/cross_cutting/cel_slices.py +56 -0
- clm/cross_cutting/cel_store.py +330 -0
- clm/cross_cutting/clm_logger.py +140 -0
- clm/cross_cutting/config/__init__.py +155 -0
- clm/cross_cutting/config/config_constants.py +392 -0
- clm/cross_cutting/config/env_parameters.py +90 -0
- clm/cross_cutting/config/logging.py +378 -0
- clm/cross_cutting/config/settings.py +504 -0
- clm/cross_cutting/context.py +5 -0
- clm/cross_cutting/domain_models.py +55 -0
- clm/cross_cutting/domain_types.py +61 -0
- clm/cross_cutting/effects.py +67 -0
- clm/cross_cutting/errors.py +153 -0
- clm/cross_cutting/governance.py +331 -0
- clm/cross_cutting/guards.py +41 -0
- clm/cross_cutting/mcard.py +321 -0
- clm/cross_cutting/native.py +185 -0
- clm/cross_cutting/observability.py +289 -0
- clm/cross_cutting/pcard.py +434 -0
- clm/cross_cutting/registry.py +71 -0
- clm/cross_cutting/resources.py +84 -0
- clm/cross_cutting/secrets.py +44 -0
- clm/cross_cutting/subprocess_utils.py +118 -0
- clm/cross_cutting/telemetry.py +164 -0
- clm/cross_cutting/testing/__init__.py +8 -0
- clm/cross_cutting/testing/comparator.py +187 -0
- clm/cross_cutting/testing/datasets.py +87 -0
- clm/cross_cutting/timeutil.py +20 -0
- clm/cross_cutting/types/new_type_check.py +0 -0
- clm/cross_cutting/utils/__init__.py +1 -0
- clm/cross_cutting/utils/url_safety.py +50 -0
- clm/cross_cutting/vcard.py +560 -0
- clm/cross_cutting/writer.py +118 -0
- clm/layer0/README.md +50 -0
- clm/layer0/__init__.py +223 -0
- clm/layer0/algebra.py +60 -0
- clm/layer0/algebra_baldwin.py +133 -0
- clm/layer0/algebra_baldwin_generators.py +36 -0
- clm/layer0/algebra_equivalence.py +262 -0
- clm/layer0/algebra_ingest.py +306 -0
- clm/layer0/algebra_manifest_io.py +156 -0
- clm/layer0/assembler.py +481 -0
- clm/layer0/cel/__init__.py +23 -0
- clm/layer0/cel_eval.py +491 -0
- clm/layer0/codec.py +106 -0
- clm/layer0/context.py +122 -0
- clm/layer0/db.py +160 -0
- clm/layer0/exceptions.py +73 -0
- clm/layer0/fibration.py +106 -0
- clm/layer0/gates.py +50 -0
- clm/layer0/hash.py +80 -0
- clm/layer0/loader.py +826 -0
- clm/layer0/math_utils.py +163 -0
- clm/layer0/mcard.py +96 -0
- clm/layer0/model/__init__.py +0 -0
- clm/layer0/model/action.py +223 -0
- clm/layer0/model/card.py +280 -0
- clm/layer0/model/card_triad.py +427 -0
- clm/layer0/model/compatibility.py +60 -0
- clm/layer0/model/dictionary.py +46 -0
- clm/layer0/model/dots.py +331 -0
- clm/layer0/model/event_producer.py +88 -0
- clm/layer0/model/g_time.py +89 -0
- clm/layer0/model/handle.py +163 -0
- clm/layer0/model/hash/__init__.py +6 -0
- clm/layer0/model/hash/algorithms/__init__.py +3 -0
- clm/layer0/model/hash/algorithms/custom_hash.py +7 -0
- clm/layer0/model/hash/algorithms/local_sha256.py +178 -0
- clm/layer0/model/hash/constants.py +53 -0
- clm/layer0/model/hash/enums.py +60 -0
- clm/layer0/model/hash/validator.py +307 -0
- clm/layer0/model/interpreter.py +275 -0
- clm/layer0/model/pagination.py +45 -0
- clm/layer0/model/pcard.py +716 -0
- clm/layer0/model/schema.py +44 -0
- clm/layer0/model/utils/__init__.py +1 -0
- clm/layer0/model/utils/content_analyzer.py +152 -0
- clm/layer0/model/validators/__init__.py +1 -0
- clm/layer0/model/validators/base_validator.py +44 -0
- clm/layer0/model/validators/binary_validator.py +66 -0
- clm/layer0/model/validators/text_validator.py +82 -0
- clm/layer0/model/validators/validation_registry.py +49 -0
- clm/layer0/model/vcard.py +823 -0
- clm/layer0/model/vcard_ext/__init__.py +39 -0
- clm/layer0/model/vcard_ext/core.py +60 -0
- clm/layer0/model/vcard_ext/network.py +23 -0
- clm/layer0/model/vcard_ext/observability.py +63 -0
- clm/layer0/model/vcard_ext/storage.py +60 -0
- clm/layer0/model/vcard_ext/vendors.py +211 -0
- clm/layer0/model/vcard_sandwich.py +119 -0
- clm/layer0/model/vcard_vocabulary.py +463 -0
- clm/layer0/model/workflow.py +274 -0
- clm/layer0/narrative.py +431 -0
- clm/layer0/ontology/collection.py +125 -0
- clm/layer0/parser.py +429 -0
- clm/layer0/relations.py +73 -0
- clm/layer0/rule_evaluator.py +251 -0
- clm/layer0/schema/__init__.py +38 -0
- clm/layer0/schema/ddl.py +97 -0
- clm/layer0/templates/abstract.yaml +99 -0
- clm/layer0/templates/balanced.yaml +253 -0
- clm/layer0/templates/concrete.yaml +172 -0
- clm/layer0/type_registry.py +223 -0
- clm/layer0/types.py +204 -0
- clm/layer0/utils.py +886 -0
- clm/layer0/verifier_core.py +262 -0
- clm/layer1/__init__.py +31 -0
- clm/layer1/action_dispatcher.py +275 -0
- clm/layer1/adapter_registry.py +233 -0
- clm/layer1/algebra_baldwin_generators.py +192 -0
- clm/layer1/arrow_compiler.py +525 -0
- clm/layer1/batch_processor.py +152 -0
- clm/layer1/cel/__init__.py +27 -0
- clm/layer1/cel/builder.py +173 -0
- clm/layer1/engine.py +759 -0
- clm/layer1/engine_async.py +89 -0
- clm/layer1/eval_callback.py +49 -0
- clm/layer1/gate_composer.py +229 -0
- clm/layer1/hoare_sandwich.py +298 -0
- clm/layer1/identity_guard.py +348 -0
- clm/layer1/matrix.py +138 -0
- clm/layer1/neural_runtime.py +221 -0
- clm/layer1/operations/__init__.py +123 -0
- clm/layer1/operations/augment.py +156 -0
- clm/layer1/operations/base.py +109 -0
- clm/layer1/operations/builtins.py +338 -0
- clm/layer1/operations/dispatch.py +144 -0
- clm/layer1/operations/exclude.py +107 -0
- clm/layer1/operations/handle.py +197 -0
- clm/layer1/operations/identity.py +139 -0
- clm/layer1/operations/invert.py +66 -0
- clm/layer1/operations/loader.py +116 -0
- clm/layer1/operations/manipulators/__init__.py +23 -0
- clm/layer1/operations/manipulators/document.py +211 -0
- clm/layer1/operations/manipulators/media.py +134 -0
- clm/layer1/operations/manipulators/structured.py +159 -0
- clm/layer1/operations/manipulators/tabular.py +334 -0
- clm/layer1/operations/port.py +65 -0
- clm/layer1/operations/services.py +529 -0
- clm/layer1/operations/split.py +117 -0
- clm/layer1/operations/substitute.py +75 -0
- clm/layer1/petri.py +1052 -0
- clm/layer1/pocketflow_orchestrator.py +408 -0
- clm/layer1/pocketflow_scheduler.py +519 -0
- clm/layer1/protocols.py +197 -0
- clm/layer1/runtime_adapter.py +718 -0
- clm/layer1/runtimes/__init__.py +71 -0
- clm/layer1/runtimes/_generated_assertions.py +125 -0
- clm/layer1/runtimes/_generated_types.py +42 -0
- clm/layer1/runtimes/base.py +265 -0
- clm/layer1/runtimes/binary.py +101 -0
- clm/layer1/runtimes/factory.py +203 -0
- clm/layer1/runtimes/javascript.py +321 -0
- clm/layer1/runtimes/javascript_runtime.js +33 -0
- clm/layer1/runtimes/js_scripts/isomorphism.mjs +22 -0
- clm/layer1/runtimes/js_scripts/loader.mjs +52 -0
- clm/layer1/runtimes/lambda_calc.py +126 -0
- clm/layer1/runtimes/python.py +288 -0
- clm/layer1/runtimes/python_runtime.py +41 -0
- clm/layer1/runtimes/script.py +114 -0
- clm/layer1/sandbox.py +334 -0
- clm/layer1/savepoint_guard.py +136 -0
- clm/layer1/sparse_net.py +122 -0
- clm/layer1/spec_tester.py +165 -0
- clm/layer1/store.py +295 -0
- clm/layer1/test_runner.py +498 -0
- clm/layer1/type_inspector.py +166 -0
- clm/layer1/verifier.py +772 -0
- clm/layer1/vm.py +91 -0
- clm/layer2/__init__.py +78 -0
- clm/layer2/card_collection.py +678 -0
- clm/layer2/classifier.py +479 -0
- clm/layer2/engine/__init__.py +1 -0
- clm/layer2/engine/abstract_sql_engine.py +320 -0
- clm/layer2/engine/base.py +193 -0
- clm/layer2/engine/duckdb_engine.py +576 -0
- clm/layer2/engine/sqlite_engine.py +518 -0
- clm/layer2/fiber/__init__.py +31 -0
- clm/layer2/fiber/context.py +89 -0
- clm/layer2/fiber/disposable.py +163 -0
- clm/layer2/fiber/fiber.py +125 -0
- clm/layer2/fiber/hoare.py +191 -0
- clm/layer2/file_io.py +376 -0
- clm/layer2/file_registrar.py +77 -0
- clm/layer2/ingest.py +202 -0
- clm/layer2/lineage.py +322 -0
- clm/layer2/mcard_fs.py +262 -0
- clm/layer2/merkle.py +11 -0
- clm/layer2/mime.py +244 -0
- clm/layer2/mime_detector.py +245 -0
- clm/layer2/private_collection.py +118 -0
- clm/layer2/shared_store.py +11 -0
- clm/layer2/storage/__init__.py +190 -0
- clm/layer2/storage/db_bitemporal.py +141 -0
- clm/layer2/storage/db_driver.py +331 -0
- clm/layer2/storage/db_hyperlinks.py +214 -0
- clm/layer2/storage/db_pool.py +139 -0
- clm/layer2/storage/db_repository.py +229 -0
- clm/layer2/storage/savepoint.py +78 -0
- clm/layer2/storage/sqlite_wal.py +74 -0
- clm/layer2/tridb.py +245 -0
- clm/layer2/vcard_receipt.py +71 -0
- clm/layer2/vfs.py +17 -0
- clm/layer3/__init__.py +141 -0
- clm/layer3/agency/__init__.py +19 -0
- clm/layer3/agency/config.py +220 -0
- clm/layer3/agency/providers/__init__.py +15 -0
- clm/layer3/agency/providers/base.py +91 -0
- clm/layer3/agency/providers/mlc_llm.py +169 -0
- clm/layer3/agency/providers/ollama.py +203 -0
- clm/layer3/agency/router.py +71 -0
- clm/layer3/agency/runtime.py +524 -0
- clm/layer3/gateway.py +353 -0
- clm/layer3/open_interpreter_adapter.py +159 -0
- clm/layer3/rag/__init__.py +70 -0
- clm/layer3/rag/cli.py +228 -0
- clm/layer3/rag/config.py +153 -0
- clm/layer3/rag/embeddings/__init__.py +16 -0
- clm/layer3/rag/embeddings/base.py +79 -0
- clm/layer3/rag/embeddings/ollama.py +211 -0
- clm/layer3/rag/embeddings/vision.py +290 -0
- clm/layer3/rag/engine.py +276 -0
- clm/layer3/rag/graph/__init__.py +22 -0
- clm/layer3/rag/graph/community.py +198 -0
- clm/layer3/rag/graph/engine.py +433 -0
- clm/layer3/rag/graph/extractor.py +255 -0
- clm/layer3/rag/graph/schema.py +115 -0
- clm/layer3/rag/graph/store.py +641 -0
- clm/layer3/rag/indexer.py +333 -0
- clm/layer3/rag/llm_providers.json +52 -0
- clm/layer3/rag/semantic_versioning.py +313 -0
- clm/layer3/rag/vector/__init__.py +28 -0
- clm/layer3/rag/vector/handle_vector_store.py +749 -0
- clm/layer3/rag/vector/schema.py +151 -0
- clm/layer3/rag/vector/store.py +632 -0
- clm/layer3/reticulum/__init__.py +55 -0
- clm/layer3/reticulum/bridge.py +74 -0
- clm/layer3/reticulum/daemon.py +88 -0
- clm/layer3/reticulum/discovery.py +164 -0
- clm/layer3/reticulum/identity.py +107 -0
- clm/layer3/reticulum/media.py +148 -0
- clm/layer3/reticulum/transport.py +133 -0
- clm/layer3/satori/__init__.py +209 -0
- clm/layer3/satori/alpha_conversion.py +168 -0
- clm/layer3/satori/beta_reduction.py +359 -0
- clm/layer3/satori/continuation.py +38 -0
- clm/layer3/satori/eta_conversion.py +205 -0
- clm/layer3/satori/free_variables.py +163 -0
- clm/layer3/satori/io_effects.py +370 -0
- clm/layer3/satori/lambda_runtime.py +726 -0
- clm/layer3/satori/lambda_term.py +230 -0
- clm/layer3/satori/sheaf_audit.py +261 -0
- clm/layer3/satori/speech_act.py +279 -0
- clm/layer4/README.md +9 -0
- clm/layer4/__init__.py +67 -0
- clm/layer4/_sovereign_executor.py +580 -0
- clm/layer4/action_commands.py +719 -0
- clm/layer4/api.py +236 -0
- clm/layer4/bootstrap/__init__.py +13 -0
- clm/layer4/bootstrap/bootstrapper.py +118 -0
- clm/layer4/bootstrap/cleanup.py +44 -0
- clm/layer4/bootstrap/clm_hooks.py +49 -0
- clm/layer4/bootstrap/genesis.py +77 -0
- clm/layer4/bootstrap/injection.py +125 -0
- clm/layer4/cli.py +549 -0
- clm/layer4/collection_manager.py +553 -0
- clm/layer4/commands/__init__.py +81 -0
- clm/layer4/commands/action_cmd.py +42 -0
- clm/layer4/commands/check_cmd.py +82 -0
- clm/layer4/commands/envelope.py +73 -0
- clm/layer4/commands/evaluate_cmd.py +224 -0
- clm/layer4/commands/mcard_cmd.py +24 -0
- clm/layer4/commands/petri_cmd.py +92 -0
- clm/layer4/commands/tridb_cmd.py +319 -0
- clm/layer4/commands/version_cmd.py +27 -0
- clm/layer4/diff_commands.py +167 -0
- clm/layer4/eoa_sponsor.py +232 -0
- clm/layer4/events.py +69 -0
- clm/layer4/flux_gateway.py +133 -0
- clm/layer4/gateway.py +91 -0
- clm/layer4/loader.py +307 -0
- clm/layer4/mcard_commands.py +166 -0
- clm/layer4/membrane.py +273 -0
- clm/layer4/navigation.py +50 -0
- clm/layer4/protocol/protocol_entry_python.py +108 -0
- clm/layer4/protocol/python_sync.py +126 -0
- clm/layer4/runner.py +150 -0
- clm/layer4/satori.py +262 -0
- clm/layer4/server/python_sync_client.py +150 -0
- clm/layer4/server/python_sync_server.py +139 -0
- clm/layer4/server/service_api.py +315 -0
- clm/layer4/server/start_servers.py +107 -0
- clm/layer4/server/stop_servers.py +24 -0
- clm/layer4/simulated_optimization_fix.py +0 -0
- clm/layer4/storage.py +463 -0
- clm/layer4/tridb_admin.py +268 -0
- clm/layer4/websocket/test_ws_client.py +104 -0
- clm/layer4/websocket/test_ws_server.py +138 -0
- clm/layer4/websocket/ws_server_local.py +160 -0
- clm/layer5/__init__.py +51 -0
- clm/layer5/async_batch_writer.py +133 -0
- clm/layer5/learning.py +276 -0
- clm/layer5/telemetry_hook.py +107 -0
- clm/layer5/type_lattice.py +238 -0
- clm/py.typed +0 -0
- clm/schemas/__init__.py +652 -0
- clm/schemas/abstract_face_schema.yaml +77 -0
- clm/schemas/cel_schema.yaml +416 -0
- clm/schemas/lifecycle/__init__.py +45 -0
- clm/schemas/lifecycle/models.py +123 -0
- clm/schemas/lifecycle/service.py +364 -0
- clm/schemas/mcard_schema.sql +192 -0
- clm/schemas/mcard_vector_schema.sql +283 -0
- clm/schemas/mlp-context-v1.json +91 -0
- clm_kernel-0.0.0.dist-info/METADATA +121 -0
- clm_kernel-0.0.0.dist-info/RECORD +333 -0
- clm_kernel-0.0.0.dist-info/WHEEL +4 -0
- clm_kernel-0.0.0.dist-info/entry_points.txt +3 -0
- clm_kernel-0.0.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"""
|
|
2
|
+
MCard Configuration Package
|
|
3
|
+
============================
|
|
4
|
+
|
|
5
|
+
This package provides configuration management for MCard including:
|
|
6
|
+
- Unified settings (organized by category in `settings.py`)
|
|
7
|
+
- Logging configuration (unified in `logging.py`)
|
|
8
|
+
- Environment parameters (legacy, in `env_parameters.py`)
|
|
9
|
+
- Configuration constants (legacy, in `config_constants.py`)
|
|
10
|
+
|
|
11
|
+
Recommended Usage (New):
|
|
12
|
+
from clm.cross_cutting.config import settings
|
|
13
|
+
|
|
14
|
+
# Access settings by category
|
|
15
|
+
db_path = settings.database.path
|
|
16
|
+
api_port = settings.api.port
|
|
17
|
+
hash_algo = settings.hashing.algorithm
|
|
18
|
+
ptr_timeout = settings.ptr.default_timeout
|
|
19
|
+
|
|
20
|
+
Legacy Usage (Still Supported):
|
|
21
|
+
from clm.cross_cutting.config import setup_logging, get_logger
|
|
22
|
+
from clm.cross_cutting.config import EnvParameters
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
26
|
+
# Unified Settings (Recommended)
|
|
27
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
28
|
+
|
|
29
|
+
from .config_constants import (
|
|
30
|
+
API_KEY_HEADER_NAME,
|
|
31
|
+
CORS_ORIGINS,
|
|
32
|
+
DEFAULT_API_KEY,
|
|
33
|
+
# API
|
|
34
|
+
DEFAULT_API_PORT,
|
|
35
|
+
# Database
|
|
36
|
+
DEFAULT_DB_PATH,
|
|
37
|
+
DEFAULT_LOG_PATH,
|
|
38
|
+
# Pagination
|
|
39
|
+
DEFAULT_PAGE_SIZE,
|
|
40
|
+
# Pool/Timeout
|
|
41
|
+
DEFAULT_POOL_SIZE,
|
|
42
|
+
DEFAULT_TIMEOUT,
|
|
43
|
+
ENV_API_KEY,
|
|
44
|
+
ENV_API_PORT,
|
|
45
|
+
ENV_DB_MAX_CONNECTIONS,
|
|
46
|
+
# Environment Variable Names
|
|
47
|
+
ENV_DB_PATH,
|
|
48
|
+
ENV_DB_TIMEOUT,
|
|
49
|
+
ENV_HASH_ALGORITHM,
|
|
50
|
+
ENV_HASH_CUSTOM_FUNCTION,
|
|
51
|
+
ENV_HASH_CUSTOM_LENGTH,
|
|
52
|
+
ENV_HASH_CUSTOM_MODULE,
|
|
53
|
+
ENV_SERVICE_LOG_LEVEL,
|
|
54
|
+
# Logging
|
|
55
|
+
LOG_DIRECTORY,
|
|
56
|
+
LOG_FILENAME,
|
|
57
|
+
MAX_PAGE_SIZE,
|
|
58
|
+
MIN_PAGE_SIZE,
|
|
59
|
+
SERVER_HOST,
|
|
60
|
+
TEST_DB_PATH,
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
64
|
+
# Legacy Exports (Backward Compatibility)
|
|
65
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
66
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
67
|
+
# Logging (Unified Module)
|
|
68
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
69
|
+
from .logging import (
|
|
70
|
+
PerformanceTimer,
|
|
71
|
+
SecurityAuditLogger,
|
|
72
|
+
get_api_logger,
|
|
73
|
+
get_database_logger,
|
|
74
|
+
get_logger,
|
|
75
|
+
get_logging_config,
|
|
76
|
+
get_performance_logger,
|
|
77
|
+
get_security_logger,
|
|
78
|
+
setup_improved_logging, # Backward compatibility alias
|
|
79
|
+
setup_logging,
|
|
80
|
+
)
|
|
81
|
+
from .settings import (
|
|
82
|
+
APISettings,
|
|
83
|
+
DatabaseSettings,
|
|
84
|
+
FileProcessingSettings,
|
|
85
|
+
HashingSettings,
|
|
86
|
+
HTTPStatus,
|
|
87
|
+
LoggingSettings,
|
|
88
|
+
PaginationSettings,
|
|
89
|
+
PTRSettings,
|
|
90
|
+
Settings,
|
|
91
|
+
settings,
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
__all__ = [
|
|
95
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
96
|
+
# Unified Settings (Recommended)
|
|
97
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
98
|
+
"settings",
|
|
99
|
+
"Settings",
|
|
100
|
+
"DatabaseSettings",
|
|
101
|
+
"APISettings",
|
|
102
|
+
"PaginationSettings",
|
|
103
|
+
"HashingSettings",
|
|
104
|
+
"LoggingSettings",
|
|
105
|
+
"FileProcessingSettings",
|
|
106
|
+
"PTRSettings",
|
|
107
|
+
"HTTPStatus",
|
|
108
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
109
|
+
# Logging
|
|
110
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
111
|
+
"setup_logging",
|
|
112
|
+
"setup_improved_logging",
|
|
113
|
+
"get_logger",
|
|
114
|
+
"get_performance_logger",
|
|
115
|
+
"get_security_logger",
|
|
116
|
+
"get_database_logger",
|
|
117
|
+
"get_api_logger",
|
|
118
|
+
"get_logging_config",
|
|
119
|
+
"PerformanceTimer",
|
|
120
|
+
"SecurityAuditLogger",
|
|
121
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
122
|
+
# Legacy (Backward Compatibility)
|
|
123
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
124
|
+
# Database
|
|
125
|
+
"DEFAULT_DB_PATH",
|
|
126
|
+
"TEST_DB_PATH",
|
|
127
|
+
# API
|
|
128
|
+
"DEFAULT_API_PORT",
|
|
129
|
+
"DEFAULT_API_KEY",
|
|
130
|
+
"SERVER_HOST",
|
|
131
|
+
"CORS_ORIGINS",
|
|
132
|
+
"API_KEY_HEADER_NAME",
|
|
133
|
+
# Pagination
|
|
134
|
+
"DEFAULT_PAGE_SIZE",
|
|
135
|
+
"MAX_PAGE_SIZE",
|
|
136
|
+
"MIN_PAGE_SIZE",
|
|
137
|
+
# Pool/Timeout
|
|
138
|
+
"DEFAULT_POOL_SIZE",
|
|
139
|
+
"DEFAULT_TIMEOUT",
|
|
140
|
+
# Logging
|
|
141
|
+
"LOG_DIRECTORY",
|
|
142
|
+
"LOG_FILENAME",
|
|
143
|
+
"DEFAULT_LOG_PATH",
|
|
144
|
+
# Environment Variable Names
|
|
145
|
+
"ENV_DB_PATH",
|
|
146
|
+
"ENV_DB_MAX_CONNECTIONS",
|
|
147
|
+
"ENV_DB_TIMEOUT",
|
|
148
|
+
"ENV_SERVICE_LOG_LEVEL",
|
|
149
|
+
"ENV_API_PORT",
|
|
150
|
+
"ENV_API_KEY",
|
|
151
|
+
"ENV_HASH_ALGORITHM",
|
|
152
|
+
"ENV_HASH_CUSTOM_MODULE",
|
|
153
|
+
"ENV_HASH_CUSTOM_FUNCTION",
|
|
154
|
+
"ENV_HASH_CUSTOM_LENGTH",
|
|
155
|
+
]
|
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
"""General configuration constants for the MCard application."""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
import os
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def _find_project_root() -> Path:
|
|
9
|
+
for env_var in ("MCARD_ROOT", "CLM_ROOT", "PROJECT_ROOT"):
|
|
10
|
+
if env_var in os.environ:
|
|
11
|
+
p = Path(os.environ[env_var]).resolve()
|
|
12
|
+
if (p / "config" / "app_config.json").exists():
|
|
13
|
+
return p
|
|
14
|
+
curr = Path(__file__).resolve()
|
|
15
|
+
for parent in [curr] + list(curr.parents):
|
|
16
|
+
if (parent / "config" / "app_config.json").exists():
|
|
17
|
+
return parent
|
|
18
|
+
cwd = Path.cwd().resolve()
|
|
19
|
+
for parent in [cwd] + list(cwd.parents):
|
|
20
|
+
if (parent / "config" / "app_config.json").exists():
|
|
21
|
+
return parent
|
|
22
|
+
return curr.parents[6] if len(curr.parents) > 6 else curr.parent
|
|
23
|
+
|
|
24
|
+
_PROJECT_ROOT = _find_project_root()
|
|
25
|
+
_APP_CONFIG_PATH = _PROJECT_ROOT / "config" / "app_config.json"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _load_app_config() -> dict:
|
|
29
|
+
if not _APP_CONFIG_PATH.exists():
|
|
30
|
+
# Fallback to empty config if not present
|
|
31
|
+
return {}
|
|
32
|
+
with _APP_CONFIG_PATH.open(encoding="utf-8") as handle:
|
|
33
|
+
return json.load(handle)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
_APP_CONFIG = _load_app_config()
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _cfg(*path: str, default=None):
|
|
40
|
+
current: object = _APP_CONFIG
|
|
41
|
+
for key in path:
|
|
42
|
+
if not isinstance(current, dict) or key not in current:
|
|
43
|
+
return default
|
|
44
|
+
current = current[key]
|
|
45
|
+
return current
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
# Environment Variable Names for Hashing
|
|
49
|
+
ENV_HASH_ALGORITHM = "MCARD_HASH_ALGORITHM"
|
|
50
|
+
ENV_HASH_CUSTOM_MODULE = "MCARD_HASH_CUSTOM_MODULE"
|
|
51
|
+
ENV_HASH_CUSTOM_FUNCTION = "MCARD_HASH_CUSTOM_FUNCTION"
|
|
52
|
+
ENV_HASH_CUSTOM_LENGTH = "MCARD_HASH_CUSTOM_LENGTH"
|
|
53
|
+
|
|
54
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
55
|
+
# Database Schema
|
|
56
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
57
|
+
# DEPRECATED: Use mcard.schema.MCardSchema instead.
|
|
58
|
+
# All schemas are loaded from: schema/mcard_schema.sql (the ONLY source)
|
|
59
|
+
#
|
|
60
|
+
# For schema access, use:
|
|
61
|
+
# from clm.schemas import MCardSchema
|
|
62
|
+
# schema = MCardSchema.get_instance()
|
|
63
|
+
# schema.get_table('card')
|
|
64
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
65
|
+
|
|
66
|
+
# Lazy-loaded for backward compatibility
|
|
67
|
+
_MCARD_TABLE_SCHEMA = None
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def __getattr__(name):
|
|
71
|
+
"""
|
|
72
|
+
Lazy attribute access for backward compatibility.
|
|
73
|
+
|
|
74
|
+
MCARD_TABLE_SCHEMA is loaded exclusively from the singleton.
|
|
75
|
+
There are NO hardcoded SQL fallbacks.
|
|
76
|
+
"""
|
|
77
|
+
global _MCARD_TABLE_SCHEMA
|
|
78
|
+
if name == "MCARD_TABLE_SCHEMA":
|
|
79
|
+
import warnings
|
|
80
|
+
|
|
81
|
+
warnings.warn(
|
|
82
|
+
"config_constants.MCARD_TABLE_SCHEMA is deprecated (Phase E.2.a). "
|
|
83
|
+
"Use mcard.schema.MCardSchema.get_instance() for schema access, "
|
|
84
|
+
"or clm.layer2.tridb.TriDatabase for database topology.",
|
|
85
|
+
DeprecationWarning,
|
|
86
|
+
stacklevel=2,
|
|
87
|
+
)
|
|
88
|
+
if _MCARD_TABLE_SCHEMA is None:
|
|
89
|
+
from clm.schemas import MCardSchema
|
|
90
|
+
|
|
91
|
+
schema = MCardSchema.get_instance()
|
|
92
|
+
_MCARD_TABLE_SCHEMA = {
|
|
93
|
+
"documents": schema.get_table("mcard_fts"),
|
|
94
|
+
"card": schema.get_table("card"),
|
|
95
|
+
}
|
|
96
|
+
return _MCARD_TABLE_SCHEMA
|
|
97
|
+
raise AttributeError(
|
|
98
|
+
f"module 'mcard.config.config_constants' has no attribute '{name}'"
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def _find_meta_functionality_db() -> Path:
|
|
103
|
+
p = _PROJECT_ROOT / "meta_functionality.db"
|
|
104
|
+
if p.exists():
|
|
105
|
+
return p
|
|
106
|
+
for parent in _PROJECT_ROOT.parents:
|
|
107
|
+
cand = parent / "meta_functionality.db"
|
|
108
|
+
if cand.exists():
|
|
109
|
+
return cand
|
|
110
|
+
return p
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
META_FUNCTIONALITY_DB_PATH = _find_meta_functionality_db()
|
|
114
|
+
DEFAULT_DB_PATH = _cfg("storage", "default_db_path", default="./data/content_memory.db")
|
|
115
|
+
DEFAULT_EXECUTION_LOG_PATH = _cfg(
|
|
116
|
+
"storage", "default_execution_log_path", default="./data/execution_log.db"
|
|
117
|
+
)
|
|
118
|
+
TEST_DB_PATH = _cfg("storage", "test_db_path", default="./tests/data/test_mcard.db")
|
|
119
|
+
|
|
120
|
+
# Content Knowledge Source Directory Configurations
|
|
121
|
+
_configured_knowledge_dir = _cfg(
|
|
122
|
+
"knowledge",
|
|
123
|
+
"default_content_knowledge_dir",
|
|
124
|
+
default=str(Path.home() / "Documents" / "DataVault" / "StudyNotes"),
|
|
125
|
+
)
|
|
126
|
+
if _configured_knowledge_dir and Path(_configured_knowledge_dir).expanduser().exists():
|
|
127
|
+
DEFAULT_CONTENT_KNOWLEDGE_DIR = str(
|
|
128
|
+
Path(_configured_knowledge_dir).expanduser().resolve()
|
|
129
|
+
)
|
|
130
|
+
else:
|
|
131
|
+
_home_vault = Path.home() / "Documents" / "DataVault" / "StudyNotes"
|
|
132
|
+
DEFAULT_CONTENT_KNOWLEDGE_DIR = (
|
|
133
|
+
str(_home_vault.resolve())
|
|
134
|
+
if _home_vault.exists()
|
|
135
|
+
else str(_configured_knowledge_dir or _home_vault)
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
ENV_CONTENT_KNOWLEDGE_DIR = _cfg(
|
|
139
|
+
"env",
|
|
140
|
+
"content_knowledge_dir",
|
|
141
|
+
default="MCARD_CONTENT_KNOWLEDGE_DIR",
|
|
142
|
+
)
|
|
143
|
+
ENV_KNOWLEDGE_VAULT = _cfg(
|
|
144
|
+
"env",
|
|
145
|
+
"knowledge_vault",
|
|
146
|
+
default="KNOWLEDGE_VAULT",
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
# Identity Space Configurations
|
|
150
|
+
DEFAULT_IDENTITY_PROVIDER = _cfg("identity", "provider", default="sqlite")
|
|
151
|
+
DEFAULT_IDENTITY_SPACE_PATH = _cfg(
|
|
152
|
+
"identity", "space_path", default="./data/agent_identities.db"
|
|
153
|
+
)
|
|
154
|
+
DEFAULT_VAPID_CONTACT = _cfg(
|
|
155
|
+
"identity", "default_vapid_contact", default="mailto:developer@example.com"
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
# Environment Variable Names
|
|
159
|
+
ENV_DB_PATH = "MCARD_DB_PATH"
|
|
160
|
+
ENV_TEST_DB_PATH = "TEST_DB_PATH"
|
|
161
|
+
|
|
162
|
+
# Environment Variable Names for Identity Space
|
|
163
|
+
ENV_IDENTITY_PROVIDER = _cfg(
|
|
164
|
+
"env", "identity_provider", default="MCARD_IDENTITY_PROVIDER"
|
|
165
|
+
)
|
|
166
|
+
ENV_IDENTITY_SPACE_PATH = _cfg(
|
|
167
|
+
"env", "identity_space_path", default="IDENTITY_SPACE_PATH"
|
|
168
|
+
)
|
|
169
|
+
ENV_IDENTITY_API_ENDPOINT = _cfg(
|
|
170
|
+
"env", "identity_api_endpoint", default="MCARD_IDENTITY_API_ENDPOINT"
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
ENV_DEFAULT_POOL_SIZE = "DEFAULT_POOL_SIZE"
|
|
174
|
+
ENV_DB_MAX_CONNECTIONS = "MCARD_STORE_MAX_CONNECTIONS"
|
|
175
|
+
ENV_DB_TIMEOUT = "MCARD_STORE_TIMEOUT"
|
|
176
|
+
ENV_SERVICE_LOG_LEVEL = "MCARD_SERVICE_LOG_LEVEL"
|
|
177
|
+
ENV_API_PORT = "MCARD_API_PORT"
|
|
178
|
+
ENV_FORCE_DEFAULT_CONFIG = "MCARD_FORCE_DEFAULT_CONFIG"
|
|
179
|
+
ENV_API_KEY = "MCARD_API_KEY"
|
|
180
|
+
ENV_WRAP_WIDTH_DEFAULT = "MCARD_WRAP_WIDTH_DEFAULT"
|
|
181
|
+
ENV_WRAP_WIDTH_KNOWN = "MCARD_WRAP_WIDTH_KNOWN"
|
|
182
|
+
ENV_MAX_PROBLEM_TEXT_BYTES = "MCARD_MAX_PROBLEM_TEXT_BYTES"
|
|
183
|
+
ENV_READ_TIMEOUT_SECS = "MCARD_READ_TIMEOUT_SECS"
|
|
184
|
+
ENV_MAX_FILE_SIZE = "MCARD_MAX_SIZE_BYTES"
|
|
185
|
+
|
|
186
|
+
# Default Configuration Values
|
|
187
|
+
DEFAULT_POOL_SIZE = 10
|
|
188
|
+
DEFAULT_TIMEOUT = 30.0
|
|
189
|
+
DEFAULT_API_PORT = _cfg("network", "default_api_port", default=5320)
|
|
190
|
+
DEFAULT_PYTHON_API_PORT = _cfg("network", "default_python_api_port", default=28302)
|
|
191
|
+
DEFAULT_JS_API_PORT = _cfg("network", "default_js_api_port", default=28303)
|
|
192
|
+
DEFAULT_WS_HOST = _cfg("network", "default_ws_host", default="127.0.0.1")
|
|
193
|
+
DEFAULT_WS_PORT = _cfg("network", "default_ws_port", default=5321)
|
|
194
|
+
DEFAULT_API_KEY = "your_api_key_here"
|
|
195
|
+
DEFAULT_HASH_ALGORITHM = "blake3"
|
|
196
|
+
DEFAULT_HASH_CUSTOM_MODULE = "custom_module"
|
|
197
|
+
DEFAULT_HASH_CUSTOM_FUNCTION = "custom_function"
|
|
198
|
+
DEFAULT_HASH_CUSTOM_LENGTH = 64
|
|
199
|
+
DEFAULT_LOG_LEVEL = "DEBUG"
|
|
200
|
+
DEFAULT_WRAP_WIDTH_DEFAULT = 1000
|
|
201
|
+
DEFAULT_WRAP_WIDTH_KNOWN = 1200
|
|
202
|
+
DEFAULT_MAX_PROBLEM_TEXT_BYTES = 2 * 1024 * 1024
|
|
203
|
+
DEFAULT_READ_TIMEOUT_SECS = 30.0
|
|
204
|
+
DEFAULT_MAX_FILE_SIZE = 150 * 1024 * 1024
|
|
205
|
+
|
|
206
|
+
# Server Configuration
|
|
207
|
+
DEFAULT_SERVER_HOST = _cfg(
|
|
208
|
+
"network", "default_server_host", default="0.0.0.0"
|
|
209
|
+
) # nosec B104
|
|
210
|
+
SERVER_HOST = DEFAULT_SERVER_HOST
|
|
211
|
+
DEFAULT_PAGE_SIZE = 10
|
|
212
|
+
MAX_PAGE_SIZE = 1000
|
|
213
|
+
MIN_PAGE_SIZE = 1
|
|
214
|
+
|
|
215
|
+
# IndexedDB (for parity with JS)
|
|
216
|
+
INDEXEDDB_DEFAULT_DB_NAME = "mcard-db"
|
|
217
|
+
INDEXEDDB_DEFAULT_DB_VERSION = 1
|
|
218
|
+
|
|
219
|
+
# SQLite Configuration
|
|
220
|
+
SQLITE_BUSY_TIMEOUT_MS = 5000 # ms to wait for locks before SQLITE_BUSY
|
|
221
|
+
|
|
222
|
+
# Environment Variable Names for Shared Ports
|
|
223
|
+
ENV_WS_HOST = _cfg("env", "ws_host", default="VITE_WS_HOST")
|
|
224
|
+
ENV_WS_PORT = _cfg("env", "ws_port", default="VITE_WS_PORT")
|
|
225
|
+
|
|
226
|
+
# API/WS Port Environment Variable Compatibility
|
|
227
|
+
ENV_API_PORT_LEGACY = "HTTP_PORT"
|
|
228
|
+
ENV_WS_PORT_LEGACY = "WS_PORT"
|
|
229
|
+
|
|
230
|
+
# Service URL Defaults (overridable via env vars or config)
|
|
231
|
+
DEFAULT_OLLAMA_BASE_URL = _cfg(
|
|
232
|
+
"services", "default_ollama_base_url", default="http://localhost:11434"
|
|
233
|
+
)
|
|
234
|
+
DEFAULT_FALLBACK_MODEL = _cfg(
|
|
235
|
+
"services", "default_fallback_model", default="qwen3:0.6b"
|
|
236
|
+
)
|
|
237
|
+
DEFAULT_OTLP_ENDPOINT = _cfg(
|
|
238
|
+
"services", "default_otlp_endpoint", default="http://localhost:4317"
|
|
239
|
+
)
|
|
240
|
+
DEFAULT_VLLM_BASE_URL = _cfg(
|
|
241
|
+
"services", "default_vllm_base_url", default="http://localhost:8000"
|
|
242
|
+
)
|
|
243
|
+
DEFAULT_LMSTUDIO_BASE_URL = _cfg(
|
|
244
|
+
"services", "default_lmstudio_base_url", default="http://localhost:1234"
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
248
|
+
# PTR Runtime Timeouts (seconds)
|
|
249
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
250
|
+
|
|
251
|
+
PTR_DEFAULT_TIMEOUT_SECS = 5
|
|
252
|
+
PTR_LEAN_TIMEOUT_SECS = 60
|
|
253
|
+
PTR_JULIA_TIMEOUT_SECS = 15
|
|
254
|
+
PTR_R_TIMEOUT_SECS = 10
|
|
255
|
+
PTR_JAVASCRIPT_TIMEOUT_SECS = 120
|
|
256
|
+
PTR_COMMAND_CHECK_TIMEOUT_SECS = 10
|
|
257
|
+
PTR_LEAN_VALIDATE_TIMEOUT_SECS = 30
|
|
258
|
+
|
|
259
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
260
|
+
# RAG / Embedding Timeouts (seconds)
|
|
261
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
262
|
+
|
|
263
|
+
RAG_OLLAMA_TIMEOUT_SECS = 60
|
|
264
|
+
RAG_OLLAMA_VALIDATE_TIMEOUT_SECS = 5
|
|
265
|
+
RAG_VISION_DESCRIBE_TIMEOUT_SECS = 120
|
|
266
|
+
RAG_VISION_VALIDATE_TIMEOUT_SECS = 10
|
|
267
|
+
|
|
268
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
269
|
+
# Network Runtime Cleanup
|
|
270
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
271
|
+
|
|
272
|
+
NETWORK_PROCESS_TERMINATE_WAIT_SECS = 1
|
|
273
|
+
|
|
274
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
275
|
+
# Script / Tooling Timeouts (seconds)
|
|
276
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
277
|
+
|
|
278
|
+
SERVICE_RUNTIME_CHECK_TIMEOUT_SECS = 10
|
|
279
|
+
CLM_TS_RUN_TIMEOUT_SECS = 60
|
|
280
|
+
|
|
281
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
282
|
+
# LLM Provider Timeouts (seconds)
|
|
283
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
284
|
+
|
|
285
|
+
LLM_DEFAULT_TIMEOUT_SECS = 120
|
|
286
|
+
LLM_DEFAULT_RETRY_COUNT = 3
|
|
287
|
+
LLM_DEFAULT_RETRY_DELAY_SECS = 1.0
|
|
288
|
+
|
|
289
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
290
|
+
# URL / HTTP Fetch Timeouts (seconds)
|
|
291
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
292
|
+
|
|
293
|
+
URL_FETCH_TIMEOUT_SECS = 5
|
|
294
|
+
|
|
295
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
296
|
+
# Signaling Server Operational Constants
|
|
297
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
298
|
+
|
|
299
|
+
SIGNALING_SSE_KEEPALIVE_SECS = 15
|
|
300
|
+
SIGNALING_LSOF_TIMEOUT_SECS = 2
|
|
301
|
+
SIGNALING_PORT_RELEASE_WAIT_SECS = 0.5
|
|
302
|
+
|
|
303
|
+
# Content Processing
|
|
304
|
+
MAX_VECTOR_CONTENT_CHARS = 10_000 # max chars indexed for FTS in vector store
|
|
305
|
+
|
|
306
|
+
# HTTP Status Codes
|
|
307
|
+
HTTP_STATUS_OK = 200
|
|
308
|
+
HTTP_STATUS_FORBIDDEN = 403
|
|
309
|
+
HTTP_STATUS_NOT_FOUND = 404
|
|
310
|
+
HTTP_STATUS_INTERNAL_SERVER_ERROR = 500
|
|
311
|
+
|
|
312
|
+
# Error Messages
|
|
313
|
+
ERROR_INVALID_API_KEY = "Invalid API key"
|
|
314
|
+
ERROR_CARD_NOT_FOUND = "Card not found"
|
|
315
|
+
ERROR_CARD_CREATION_FAILED = "Failed to create card"
|
|
316
|
+
ERROR_CARD_DELETION_FAILED = "Failed to delete card"
|
|
317
|
+
|
|
318
|
+
# Event Constants
|
|
319
|
+
TYPE = "type"
|
|
320
|
+
HASH = "hash"
|
|
321
|
+
FIRST_G_TIME = "first_g_time"
|
|
322
|
+
CONTENT_SIZE = "content_size"
|
|
323
|
+
COLLISION_TIME = "collision_time"
|
|
324
|
+
UPGRADED_FUNCTION = "upgraded_function"
|
|
325
|
+
UPGRADED_HASH = "upgraded_hash"
|
|
326
|
+
DUPLICATE_TIME = "duplicate_time"
|
|
327
|
+
DUPLICATE_EVENT_TYPE = "duplicate"
|
|
328
|
+
COLLISION_EVENT_TYPE = "collision"
|
|
329
|
+
|
|
330
|
+
# A Pair of colliding MD5 content values
|
|
331
|
+
MD5_COLLISION_PAIR_IN_BYTES_a = bytes.fromhex(
|
|
332
|
+
"4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa200a8284bf36e8e4b55b35f427593d849676da0d1555d8360fb5f07fea2"
|
|
333
|
+
)
|
|
334
|
+
MD5_COLLISION_PAIR_IN_BYTES_b = bytes.fromhex(
|
|
335
|
+
"4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa202a8284bf36e8e4b55b35f427593d849676da0d1d55d8360fb5f07fea2"
|
|
336
|
+
)
|
|
337
|
+
|
|
338
|
+
# Hash Algorithm Hierarchy
|
|
339
|
+
ALGORITHM_HIERARCHY = {
|
|
340
|
+
"md5": {"strength": 0, "next": "sha1"},
|
|
341
|
+
"sha1": {"strength": 1, "next": "sha224"},
|
|
342
|
+
"sha224": {"strength": 2, "next": "sha256"},
|
|
343
|
+
"sha256": {"strength": 3, "next": "sha384"},
|
|
344
|
+
"sha384": {"strength": 4, "next": "sha512"},
|
|
345
|
+
"sha512": {"strength": 5, "next": "blake3"},
|
|
346
|
+
"blake3": {"strength": 6, "next": "custom"},
|
|
347
|
+
"custom": {"strength": 7, "next": None},
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
# Logging Configuration
|
|
351
|
+
LOG_DIRECTORY = "logs"
|
|
352
|
+
LOG_FILENAME = "mcard.log"
|
|
353
|
+
DEFAULT_LOG_PATH = f"{LOG_DIRECTORY}/{LOG_FILENAME}"
|
|
354
|
+
|
|
355
|
+
# CORS origins
|
|
356
|
+
CORS_ORIGINS = _cfg(
|
|
357
|
+
"network",
|
|
358
|
+
"cors_origins",
|
|
359
|
+
default=[
|
|
360
|
+
"http://localhost:3000",
|
|
361
|
+
"http://localhost:8000",
|
|
362
|
+
"https://localhost:3000",
|
|
363
|
+
"https://localhost:8000",
|
|
364
|
+
"http://localhost:8080",
|
|
365
|
+
"https://example.com",
|
|
366
|
+
],
|
|
367
|
+
)
|
|
368
|
+
|
|
369
|
+
# API Key Header Name
|
|
370
|
+
API_KEY_HEADER_NAME = _cfg("web", "api_key_header_name", default="X-API-Key")
|
|
371
|
+
|
|
372
|
+
# Search Parameters
|
|
373
|
+
SEARCH_CONTENT_DEFAULT = True
|
|
374
|
+
SEARCH_HASH_DEFAULT = True
|
|
375
|
+
SEARCH_TIME_DEFAULT = True
|
|
376
|
+
|
|
377
|
+
# Additional Error Messages
|
|
378
|
+
ERROR_SERVER_SHUTDOWN = "Server shutdown failed"
|
|
379
|
+
ERROR_INVALID_CONTENT = "Content cannot be empty"
|
|
380
|
+
ERROR_INVALID_METADATA = "Metadata must be a dictionary"
|
|
381
|
+
ERROR_LISTING_CARDS = "Error listing cards"
|
|
382
|
+
ERROR_DELETE_ALL_CARDS_FAILED = "Failed to delete all cards"
|
|
383
|
+
SUCCESS_DELETE_ALL_CARDS = "All cards deleted successfully"
|
|
384
|
+
HEALTH_CHECK_SUCCESS = "Server is healthy"
|
|
385
|
+
HEALTH_CHECK_FAILURE = "Server health check failed"
|
|
386
|
+
ERROR_INVALID_CREDENTIALS = "Invalid credentials"
|
|
387
|
+
ERROR_CARD_ALREADY_EXISTS = "Card already exists"
|
|
388
|
+
ERROR_CARD_NOT_AUTHORIZED = "Card not authorized"
|
|
389
|
+
ERROR_INVALID_REQUEST = "Invalid request"
|
|
390
|
+
ERROR_INVALID_CARD_ID = "Invalid card ID"
|
|
391
|
+
ERROR_CARD_UPDATE_FAILED = "Failed to update card"
|
|
392
|
+
ERROR_CARD_NOT_UPDATED = "Card not updated"
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"""
|
|
2
|
+
DEPRECATED: Environment parameter management for MCard.
|
|
3
|
+
|
|
4
|
+
This module is deprecated in favor of `mcard.config.settings`.
|
|
5
|
+
All new code should use:
|
|
6
|
+
from clm.cross_cutting.config.settings import settings
|
|
7
|
+
|
|
8
|
+
This module delegates to the unified Settings singleton for backward compatibility.
|
|
9
|
+
It will be removed in a future release.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
import warnings
|
|
13
|
+
|
|
14
|
+
# Use the unified configurations
|
|
15
|
+
from .settings import settings
|
|
16
|
+
|
|
17
|
+
warnings.warn(
|
|
18
|
+
"mcard.config.env_parameters.EnvParameters is deprecated. "
|
|
19
|
+
"Use mcard.config.settings.settings instead.",
|
|
20
|
+
DeprecationWarning,
|
|
21
|
+
stacklevel=2,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class EnvParameters:
|
|
26
|
+
"""Backward-compatible shim that delegates to the unified Settings singleton."""
|
|
27
|
+
|
|
28
|
+
_instance = None
|
|
29
|
+
|
|
30
|
+
def __new__(cls):
|
|
31
|
+
if cls._instance is None:
|
|
32
|
+
cls._instance = super().__new__(cls)
|
|
33
|
+
return cls._instance
|
|
34
|
+
|
|
35
|
+
def load_env_variables(self):
|
|
36
|
+
"""No-op: settings singleton already loads env vars on init."""
|
|
37
|
+
|
|
38
|
+
def get_db_path(self):
|
|
39
|
+
return settings.database.path
|
|
40
|
+
|
|
41
|
+
def get_test_db_path(self):
|
|
42
|
+
return settings.database.test_path
|
|
43
|
+
|
|
44
|
+
def get_log_level(self):
|
|
45
|
+
return settings.logging.level
|
|
46
|
+
|
|
47
|
+
def get_default_page_size(self):
|
|
48
|
+
return settings.pagination.default_page_size
|
|
49
|
+
|
|
50
|
+
def get_default_pool_size(self):
|
|
51
|
+
return settings.database.pool_size
|
|
52
|
+
|
|
53
|
+
def get_default_timeout(self):
|
|
54
|
+
return settings.database.timeout
|
|
55
|
+
|
|
56
|
+
def get_hash_algorithm(self):
|
|
57
|
+
return settings.hashing.algorithm
|
|
58
|
+
|
|
59
|
+
def get_hash_custom_module(self):
|
|
60
|
+
return settings.hashing.custom_module
|
|
61
|
+
|
|
62
|
+
def get_hash_custom_function(self):
|
|
63
|
+
return settings.hashing.custom_function
|
|
64
|
+
|
|
65
|
+
def get_hash_custom_length(self):
|
|
66
|
+
return settings.hashing.custom_length
|
|
67
|
+
|
|
68
|
+
def get_api_port(self):
|
|
69
|
+
return settings.api.port
|
|
70
|
+
|
|
71
|
+
def get_store_max_connections(self):
|
|
72
|
+
return settings.database.max_connections
|
|
73
|
+
|
|
74
|
+
def get_api_key(self):
|
|
75
|
+
return settings.api.api_key
|
|
76
|
+
|
|
77
|
+
def get_wrap_width_default(self) -> int:
|
|
78
|
+
return settings.file_processing.wrap_width_default
|
|
79
|
+
|
|
80
|
+
def get_wrap_width_known(self) -> int:
|
|
81
|
+
return settings.file_processing.wrap_width_known
|
|
82
|
+
|
|
83
|
+
def get_max_problem_text_bytes(self) -> int:
|
|
84
|
+
return settings.file_processing.max_problem_text_bytes
|
|
85
|
+
|
|
86
|
+
def get_read_timeout_secs(self) -> float:
|
|
87
|
+
return settings.file_processing.read_timeout_secs
|
|
88
|
+
|
|
89
|
+
def get_content_knowledge_dir(self) -> str:
|
|
90
|
+
return settings.knowledge.content_knowledge_dir
|