ciris-server 0.2.1__tar.gz → 0.2.2__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 (133) hide show
  1. {ciris_server-0.2.1 → ciris_server-0.2.2}/CHANGELOG.md +10 -0
  2. {ciris_server-0.2.1 → ciris_server-0.2.2}/Cargo.lock +1 -1
  3. {ciris_server-0.2.1 → ciris_server-0.2.2}/Cargo.toml +1 -1
  4. {ciris_server-0.2.1 → ciris_server-0.2.2}/PKG-INFO +1 -1
  5. {ciris_server-0.2.1 → ciris_server-0.2.2}/pyproject.toml +1 -1
  6. {ciris_server-0.2.1 → ciris_server-0.2.2}/src/lib.rs +35 -8
  7. {ciris_server-0.2.1 → ciris_server-0.2.2}/.cargo/config.toml +0 -0
  8. {ciris_server-0.2.1 → ciris_server-0.2.2}/.github/workflows/bench.yml +0 -0
  9. {ciris_server-0.2.1 → ciris_server-0.2.2}/.github/workflows/ci.yml +0 -0
  10. {ciris_server-0.2.1 → ciris_server-0.2.2}/.github/workflows/conformance.yml +0 -0
  11. {ciris_server-0.2.1 → ciris_server-0.2.2}/.github/workflows/publish-pypi.yml +0 -0
  12. {ciris_server-0.2.1 → ciris_server-0.2.2}/.github/workflows/release.yml +0 -0
  13. {ciris_server-0.2.1 → ciris_server-0.2.2}/.gitignore +0 -0
  14. {ciris_server-0.2.1 → ciris_server-0.2.2}/FSD/LENS_TO_SERVER_MIGRATION.md +0 -0
  15. {ciris_server-0.2.1 → ciris_server-0.2.2}/FSD/PQC_AV_STREAMING_BENCH.md +0 -0
  16. {ciris_server-0.2.1 → ciris_server-0.2.2}/FSD/REGISTRY_FOLD_DERISK.md +0 -0
  17. {ciris_server-0.2.1 → ciris_server-0.2.2}/FSD/SERVER_1.0_PLAN.md +0 -0
  18. {ciris_server-0.2.1 → ciris_server-0.2.2}/LICENSE +0 -0
  19. {ciris_server-0.2.1 → ciris_server-0.2.2}/MISSION.md +0 -0
  20. {ciris_server-0.2.1 → ciris_server-0.2.2}/README.md +0 -0
  21. {ciris_server-0.2.1 → ciris_server-0.2.2}/benches/pqc_av_streaming.rs +0 -0
  22. {ciris_server-0.2.1 → ciris_server-0.2.2}/benches/replication_ingest.rs +0 -0
  23. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/.github/workflows/bench.yml +0 -0
  24. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/.github/workflows/ci.yml +0 -0
  25. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/.gitignore +0 -0
  26. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/.pre-commit-config.yaml +0 -0
  27. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/Cargo.toml +0 -0
  28. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/FSD/CIRIS_LENS_CORE.md +0 -0
  29. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/FSD/LENS_CORE_V0_5.md +0 -0
  30. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/FSD/OPEN_QUESTIONS.md +0 -0
  31. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/LICENSE +0 -0
  32. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/MISSION.md +0 -0
  33. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/README.md +0 -0
  34. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/benches/aggregate.rs +0 -0
  35. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/benches/canonicalize.rs +0 -0
  36. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/benches/project.rs +0 -0
  37. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/deny.toml +0 -0
  38. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/docs/BENCHMARKS.md +0 -0
  39. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/docs/COHABITATION.md +0 -0
  40. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/docs/PRE_COMMIT.md +0 -0
  41. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/docs/PUBLIC_SCHEMA_CONTRACT.md +0 -0
  42. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/docs/PYPI_PUBLISH.md +0 -0
  43. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/docs/RELEASE_NOTES.md +0 -0
  44. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/docs/STANDARDS_COMPARISON.md +0 -0
  45. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/docs/THREAT_MODEL.md +0 -0
  46. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/patterns_from_cirislens_core/extraction/json_path.rs +0 -0
  47. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/patterns_from_cirislens_core/extraction/metadata.rs +0 -0
  48. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/patterns_from_cirislens_core/extraction/mod.rs +0 -0
  49. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/distilbert_loader.rs +0 -0
  50. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/fields.rs +0 -0
  51. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/mod.rs +0 -0
  52. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/ner.rs +0 -0
  53. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/ort_loader.rs +0 -0
  54. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/proptests.rs +0 -0
  55. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/regex.rs +0 -0
  56. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/walker.rs +0 -0
  57. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/xlm_r_loader.rs +0 -0
  58. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/pyproject.toml +0 -0
  59. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/python/ciris_lens_core/__init__.py +0 -0
  60. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/audit/api.rs +0 -0
  61. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/audit/delegate.rs +0 -0
  62. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/audit/mod.rs +0 -0
  63. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/audit/pyo3.rs +0 -0
  64. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/canonical/ceg_egress.rs +0 -0
  65. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/canonical/mod.rs +0 -0
  66. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/capacity/attestation.rs +0 -0
  67. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/capacity/mod.rs +0 -0
  68. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/capacity/score.rs +0 -0
  69. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/capture/batch.rs +0 -0
  70. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/capture/client.rs +0 -0
  71. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/capture/consent.rs +0 -0
  72. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/capture/correlation.rs +0 -0
  73. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/capture/event.rs +0 -0
  74. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/capture/mod.rs +0 -0
  75. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/capture/partial.rs +0 -0
  76. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/capture/py_engine.rs +0 -0
  77. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/capture/seal.rs +0 -0
  78. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/cohort/declared.rs +0 -0
  79. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/cohort/mod.rs +0 -0
  80. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/cohort/resourcing.rs +0 -0
  81. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/config/egress.rs +0 -0
  82. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/config/mod.rs +0 -0
  83. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/config/node.rs +0 -0
  84. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/config/retention.rs +0 -0
  85. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/config/upstream.rs +0 -0
  86. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/detector/axis_metrics.rs +0 -0
  87. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/detector/coherence_ratchet.rs +0 -0
  88. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/detector/correlated_action.rs +0 -0
  89. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/detector/distributive_access.rs +0 -0
  90. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/detector/manifold.rs +0 -0
  91. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/detector/mod.rs +0 -0
  92. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/extract/mod.rs +0 -0
  93. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/extract/projection.rs +0 -0
  94. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/ffi/mod.rs +0 -0
  95. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/ffi/pyo3.rs +0 -0
  96. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/lib.rs +0 -0
  97. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/observability/mod.rs +0 -0
  98. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/pipeline/lifecycle.rs +0 -0
  99. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/pipeline/mod.rs +0 -0
  100. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/retention/eviction.rs +0 -0
  101. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/retention/mod.rs +0 -0
  102. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/retention/summary.rs +0 -0
  103. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/role/handler.rs +0 -0
  104. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/role/mod.rs +0 -0
  105. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/role/node.rs +0 -0
  106. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/role/relay.rs +0 -0
  107. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/role/ret_relay.rs +0 -0
  108. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/scores/aggregate.rs +0 -0
  109. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/scores/mod.rs +0 -0
  110. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/scores/oracle.rs +0 -0
  111. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/scoring/assembly.rs +0 -0
  112. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/scoring/axis_calibration.rs +0 -0
  113. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/scoring/calibration.rs +0 -0
  114. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/scoring/capacity.rs +0 -0
  115. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/scoring/mod.rs +0 -0
  116. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/scoring/n_eff.rs +0 -0
  117. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/scoring/result.rs +0 -0
  118. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/signing/event.rs +0 -0
  119. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/signing/mod.rs +0 -0
  120. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/wire/mod.rs +0 -0
  121. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/src/wire/signer.rs +0 -0
  122. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/tests/parity/README.md +0 -0
  123. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/tests/parity/canonical_fixtures.json +0 -0
  124. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/tests/parity/generate_canonical_fixtures.py +0 -0
  125. {ciris_server-0.2.1 → ciris_server-0.2.2}/crates/ciris-lens-core/tests/sovereign_rlib.rs +0 -0
  126. {ciris_server-0.2.1 → ciris_server-0.2.2}/rust-toolchain.toml +0 -0
  127. {ciris_server-0.2.1 → ciris_server-0.2.2}/scripts/bench_report.py +0 -0
  128. {ciris_server-0.2.1 → ciris_server-0.2.2}/src/compose.rs +0 -0
  129. {ciris_server-0.2.1 → ciris_server-0.2.2}/src/config.rs +0 -0
  130. {ciris_server-0.2.1 → ciris_server-0.2.2}/src/import.rs +0 -0
  131. {ciris_server-0.2.1 → ciris_server-0.2.2}/src/main.rs +0 -0
  132. {ciris_server-0.2.1 → ciris_server-0.2.2}/src/quorum.rs +0 -0
  133. {ciris_server-0.2.1 → ciris_server-0.2.2}/tests/replication.rs +0 -0
@@ -4,6 +4,16 @@ All notable changes to CIRISServer. Format follows [Keep a Changelog](https://ke
4
4
  this project uses [Semantic Versioning](https://semver.org/). The minor line tracks
5
5
  the fabric-node scope (0.1 lens · 0.5 +registry · 1.0 +node), paced by the CIRISAgent train.
6
6
 
7
+ ## [0.2.2] — 2026-06-15
8
+
9
+ ### Added
10
+ - **`import-traces` on the wheel** (pip-only bridge): the abi3 wheel now exposes
11
+ `ciris_server.import_traces(dump_dir)`, and the `ciris-server` console script
12
+ accepts `ciris-server import-traces <dump-dir>` (same CLI as the binary). The
13
+ legacy CIRISLens dump → persist-corpus-as-CEG import no longer needs the
14
+ source-built binary. Verified from the installed wheel against the prod dump:
15
+ all 12,165 traces, errored=0.
16
+
7
17
  ## [0.2.1] — 2026-06-15
8
18
 
9
19
  Android wheels (incl. arm32) now publish; legacy-trace importer.
@@ -988,7 +988,7 @@ dependencies = [
988
988
 
989
989
  [[package]]
990
990
  name = "ciris-server"
991
- version = "0.2.1"
991
+ version = "0.2.2"
992
992
  dependencies = [
993
993
  "anyhow",
994
994
  "axum",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "ciris-server"
3
- version = "0.2.1" # 0.1 = lens-only (agent ~2.9.7); 0.5 = +registry (~2.9.8); 1.0 = +node (~2.9.10). Patch forward (0.1.1) on breakage.
3
+ version = "0.2.2" # 0.1 = lens-only (agent ~2.9.7); 0.5 = +registry (~2.9.8); 1.0 = +node (~2.9.10). Patch forward (0.1.1) on breakage.
4
4
  edition = "2021"
5
5
  # MSRV floor is set by the substrate: ciris-verify v5.2.0 requires 1.86
6
6
  # (persist v6.0.1 is 1.83). Build with the higher of the two.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ciris-server
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  License-File: LICENSE
5
5
  Summary: The fabric node — the federation's headless cohabitation runtime (registry + lens [+ node] over one shared substrate), as the abi3 wheel CIRISAgent consumes. agent = fabric node + brain.
6
6
  Author-email: Eric Moore <eric@ciris.ai>
@@ -12,7 +12,7 @@ build-backend = "maturin"
12
12
  [project]
13
13
  name = "ciris-server"
14
14
  # Mirrors Cargo.toml; bump in lockstep.
15
- version = "0.2.1" # matches the Cargo crate. 0.1 = lens-only; patch forward (0.1.1) on breakage
15
+ version = "0.2.2" # matches the Cargo crate. 0.1 = lens-only; patch forward (0.1.1) on breakage
16
16
  description = "The fabric node — the federation's headless cohabitation runtime (registry + lens [+ node] over one shared substrate), as the abi3 wheel CIRISAgent consumes. agent = fabric node + brain."
17
17
  authors = [{ name = "Eric Moore", email = "eric@ciris.ai" }]
18
18
  license = { text = "AGPL-3.0-or-later" }
@@ -68,25 +68,52 @@ pub fn init_tracing() {
68
68
  mod python {
69
69
  use pyo3::prelude::*;
70
70
 
71
+ fn rt_block_on<F: std::future::Future<Output = anyhow::Result<()>>>(fut: F) -> PyResult<()> {
72
+ // ONE multi-thread runtime; the node spawns onto it (never a second
73
+ // runtime around the Engine — the persist dual-runtime-deadlock rule).
74
+ let rt = tokio::runtime::Runtime::new()
75
+ .map_err(|e| pyo3::exceptions::PyRuntimeError::new_err(e.to_string()))?;
76
+ rt.block_on(fut)
77
+ .map_err(|e| pyo3::exceptions::PyRuntimeError::new_err(e.to_string()))
78
+ }
79
+
71
80
  /// Console entry point: `pip install ciris-server` → the `ciris-server`
72
- /// command (pyproject `[project.scripts]`). Boots a node with zero-setup
73
- /// defaults mode = server, trusting `ciris-canonical` — no wizard.
81
+ /// command (pyproject `[project.scripts]`). Mirrors the binary's CLI:
82
+ /// `ciris-server import-traces <dump-dir>` runs the legacy-trace import;
83
+ /// otherwise boots a zero-setup node (mode = server, trusts `ciris-canonical`).
74
84
  #[pyfunction]
75
85
  #[pyo3(name = "main")]
76
86
  fn py_main() -> PyResult<()> {
77
87
  crate::init_tracing();
78
- // ONE multi-thread runtime; the lens node spawns onto it (never a second
79
- // runtime around the Engine — the persist dual-runtime-deadlock rule).
80
- let rt = tokio::runtime::Runtime::new()
81
- .map_err(|e| pyo3::exceptions::PyRuntimeError::new_err(e.to_string()))?;
82
- rt.block_on(crate::run())
83
- .map_err(|e| pyo3::exceptions::PyRuntimeError::new_err(e.to_string()))
88
+ let mut args = std::env::args().skip(1);
89
+ match args.next().as_deref() {
90
+ Some("import-traces") => {
91
+ let dir = args.next().ok_or_else(|| {
92
+ pyo3::exceptions::PyRuntimeError::new_err(
93
+ "usage: ciris-server import-traces <dump-dir>",
94
+ )
95
+ })?;
96
+ rt_block_on(crate::import_traces(&dir))
97
+ }
98
+ _ => rt_block_on(crate::run()),
99
+ }
100
+ }
101
+
102
+ /// `ciris_server.import_traces(dump_dir)` — programmatic legacy-trace import
103
+ /// for a pip-only bridge (the CIRISLens TimescaleDB dump → persist corpus as
104
+ /// CEG objects). Reads `CIRIS_HOME`/DSN from the environment, same as the node.
105
+ #[pyfunction]
106
+ #[pyo3(name = "import_traces")]
107
+ fn py_import_traces(dump_dir: String) -> PyResult<()> {
108
+ crate::init_tracing();
109
+ rt_block_on(crate::import_traces(&dump_dir))
84
110
  }
85
111
 
86
112
  /// `import ciris_server` — the composition CIRISAgent embeds.
87
113
  #[pymodule]
88
114
  fn ciris_server(_py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> {
89
115
  m.add_function(wrap_pyfunction!(py_main, m)?)?;
116
+ m.add_function(wrap_pyfunction!(py_import_traces, m)?)?;
90
117
  // Re-export lens-core's Python surface so CIRISAgent can swap
91
118
  // `from ciris_lens_core import LensClient` → `from ciris_server import
92
119
  // LensClient` (drop-in). One wheel bundles the lens slice; registry +
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes