continuous-intelligence-layer 0.1.1__tar.gz → 0.1.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 (39) hide show
  1. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/PACKAGE_README.md +3 -1
  2. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/PKG-INFO +4 -2
  3. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/__init__.py +1 -1
  4. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/anthropic/init.py +14 -22
  5. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/crewai/init.py +14 -22
  6. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/langgraph/init.py +16 -25
  7. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/openai/init.py +14 -22
  8. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/pyproject.toml +1 -1
  9. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/.gitignore +0 -0
  10. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/LICENSE +0 -0
  11. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/_core/__init__.py +0 -0
  12. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/_core/exporter.py +0 -0
  13. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/_core/graph_exporter.py +0 -0
  14. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/_core/utils.py +0 -0
  15. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/anthropic/__init__.py +0 -0
  16. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/anthropic/instrumentation.py +0 -0
  17. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/crewai/__init__.py +0 -0
  18. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/crewai/instrumentation.py +0 -0
  19. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/langgraph/__init__.py +0 -0
  20. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/langgraph/instrumentation.py +0 -0
  21. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/openai/__init__.py +0 -0
  22. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/continuous_intelligence_layer/openai/instrumentation.py +0 -0
  23. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/evaluators/__init__.py +0 -0
  24. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/evaluators/base_evaluator.py +0 -0
  25. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/evaluators/crewai_input_evaluator.py +0 -0
  26. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/evaluators/input_evaluator.py +0 -0
  27. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/evaluators/models.py +0 -0
  28. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/evaluators/output_evaluator.py +0 -0
  29. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/evaluators/runner.py +0 -0
  30. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/evaluators/tool_agent_evaluator.py +0 -0
  31. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/graph_builder/__init__.py +0 -0
  32. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/graph_builder/builder.py +0 -0
  33. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/graph_builder/models.py +0 -0
  34. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/graph_builder/mongo_store.py +0 -0
  35. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/llm_router/__init__.py +0 -0
  36. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/llm_router/router.py +0 -0
  37. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/rca_engine/__init__.py +0 -0
  38. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/rca_engine/incident_report.py +0 -0
  39. {continuous_intelligence_layer-0.1.1 → continuous_intelligence_layer-0.1.2}/rca_engine/rca_engine.py +0 -0
@@ -55,7 +55,9 @@ framework's `init()` shares this same signature and return contract.
55
55
  | `evaluation_provider` | `"openai"` | Provider for the evaluator/RCA LLM |
56
56
  | `run_evaluations` | `True` | Run Input/Output/Tool evaluators + RCA automatically after each trace |
57
57
  | `session_id` | auto-generated | Groups multiple runs into one conversation/session |
58
- | `store` | `"mongodb"` | Trace data is POSTed to your API's `/traces/ingest`, never written directly to a DB from the agent's machine |
58
+
59
+ Trace data is always POSTed to your API's `/traces/ingest` — the SDK never
60
+ writes to a database directly from the agent's machine.
59
61
 
60
62
  Trace data is only sent at process **shutdown**, not per-span in real time —
61
63
  make sure your process exits normally (or call the framework's shutdown
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: continuous-intelligence-layer
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Multi-Agent Intelligent Validation & RCA Framework
5
5
  Project-URL: Homepage, https://github.com/Jugal-lachhwani/Multi_agent_intelligence_layer
6
6
  Project-URL: Repository, https://github.com/Jugal-lachhwani/Multi_agent_intelligence_layer
@@ -120,7 +120,9 @@ framework's `init()` shares this same signature and return contract.
120
120
  | `evaluation_provider` | `"openai"` | Provider for the evaluator/RCA LLM |
121
121
  | `run_evaluations` | `True` | Run Input/Output/Tool evaluators + RCA automatically after each trace |
122
122
  | `session_id` | auto-generated | Groups multiple runs into one conversation/session |
123
- | `store` | `"mongodb"` | Trace data is POSTed to your API's `/traces/ingest`, never written directly to a DB from the agent's machine |
123
+
124
+ Trace data is always POSTed to your API's `/traces/ingest` — the SDK never
125
+ writes to a database directly from the agent's machine.
124
126
 
125
127
  Trace data is only sent at process **shutdown**, not per-span in real time —
126
128
  make sure your process exits normally (or call the framework's shutdown
@@ -25,4 +25,4 @@ flow through the same downstream pipeline (``graph_builder/``,
25
25
  them — see each subpackage's docstring for framework-specific details.
26
26
  """
27
27
 
28
- __version__ = "0.1.1"
28
+ __version__ = "0.1.2"
@@ -52,7 +52,6 @@ def init(
52
52
  service_name: str = "continuous-intelligence-layer",
53
53
  execution_id: str | None = None,
54
54
  session_id: str | None = None,
55
- store: str | None = "mongodb",
56
55
  write_jsonl: bool = False,
57
56
  verbose: bool = True,
58
57
  base_url: str = "http://localhost:8080",
@@ -78,10 +77,9 @@ def init(
78
77
  runs.
79
78
  write_jsonl :
80
79
  If True, also append every span to a local JSONL file at
81
- ``output_path``. Defaults to False when ``store="mongodb"`` MongoDB
82
- is the single source of truth by default, and JSONL is only an
83
- opt-in local debug/backup mechanism. Automatically forced on when
84
- ``store`` is not "mongodb" (otherwise nothing would be persisted).
80
+ ``output_path``. Defaults to False MongoDB (via the API's
81
+ ``/traces/ingest``) is always the source of truth; JSONL is only an
82
+ opt-in local debug/backup mechanism.
85
83
  service_name :
86
84
  An arbitrary label written to every span as ``service.name``.
87
85
  Useful when you have multiple agents writing to the same file.
@@ -91,9 +89,6 @@ def init(
91
89
  ``execution_id``, so you can filter a single run later.
92
90
  session_id :
93
91
  Identifier for the conversational session/thread.
94
- store :
95
- Optional. If set to "mongodb", also buffers spans and saves them to
96
- MongoDB on shutdown.
97
92
  verbose :
98
93
  Print a one-line confirmation when init succeeds.
99
94
  run_evaluations :
@@ -129,7 +124,6 @@ def init(
129
124
  session_id = session_id or str(uuid.uuid4())[:12]
130
125
 
131
126
  # ── Step 1: Build the span exporter ─────────────────────────────────────
132
- write_jsonl = write_jsonl or store != "mongodb"
133
127
  exporter = ExecutionSpanExporter(
134
128
  output_path=output_path,
135
129
  execution_id=execution_id,
@@ -183,17 +177,16 @@ def init(
183
177
  if write_jsonl:
184
178
  provider.add_span_processor(SimpleSpanProcessor(exporter))
185
179
 
186
- if store == "mongodb":
187
- from .._core.graph_exporter import GraphSpanExporter
188
- graph_exporter = GraphSpanExporter(
189
- exporter,
190
- session_id=session_id,
191
- base_url=base_url,
192
- api_key=api_key,
193
- project_id=project_id,
194
- run_evaluations=run_evaluations,
195
- )
196
- provider.add_span_processor(SimpleSpanProcessor(graph_exporter))
180
+ from .._core.graph_exporter import GraphSpanExporter
181
+ graph_exporter = GraphSpanExporter(
182
+ exporter,
183
+ session_id=session_id,
184
+ base_url=base_url,
185
+ api_key=api_key,
186
+ project_id=project_id,
187
+ run_evaluations=run_evaluations,
188
+ )
189
+ provider.add_span_processor(SimpleSpanProcessor(graph_exporter))
197
190
 
198
191
  # ── Step 4: Set as global OTel provider ───────────────────────────────
199
192
  trace.set_tracer_provider(provider)
@@ -205,12 +198,11 @@ def init(
205
198
  _INITIALIZED = True
206
199
 
207
200
  if verbose:
208
- store_line = f" Store : MongoDB (project={service_name})\n" if store == "mongodb" else ""
209
201
  jsonl_line = f" Output file : {output_path}\n" if write_jsonl else ""
210
202
  print(
211
203
  f"[continuous-intelligence-layer] ✅ Initialized\n"
212
204
  f" Execution ID : {execution_id}\n"
213
- f"{store_line}"
205
+ f" Store : MongoDB (project={service_name})\n"
214
206
  f"{jsonl_line}"
215
207
  f" Service name : {service_name}"
216
208
  )
@@ -49,7 +49,6 @@ def init(
49
49
  service_name: str = "continuous-intelligence-layer",
50
50
  execution_id: str | None = None,
51
51
  session_id: str | None = None,
52
- store: str | None = "mongodb",
53
52
  write_jsonl: bool = False,
54
53
  verbose: bool = True,
55
54
  base_url: str = "http://localhost:8080",
@@ -74,10 +73,9 @@ def init(
74
73
  runs.
75
74
  write_jsonl :
76
75
  If True, also append every span to a local JSONL file at
77
- ``output_path``. Defaults to False when ``store="mongodb"`` MongoDB
78
- is the single source of truth by default, and JSONL is only an
79
- opt-in local debug/backup mechanism. Automatically forced on when
80
- ``store`` is not "mongodb" (otherwise nothing would be persisted).
76
+ ``output_path``. Defaults to False MongoDB (via the API's
77
+ ``/traces/ingest``) is always the source of truth; JSONL is only an
78
+ opt-in local debug/backup mechanism.
81
79
  service_name :
82
80
  An arbitrary label written to every span as ``service.name``.
83
81
  Useful when you have multiple agents writing to the same file.
@@ -87,9 +85,6 @@ def init(
87
85
  ``execution_id``, so you can filter a single run later.
88
86
  session_id :
89
87
  Identifier for the conversational session/thread.
90
- store :
91
- Optional. If set to "mongodb", also buffers spans and saves them to
92
- MongoDB on shutdown.
93
88
  verbose :
94
89
  Print a one-line confirmation when init succeeds.
95
90
  run_evaluations :
@@ -125,7 +120,6 @@ def init(
125
120
  session_id = session_id or str(uuid.uuid4())[:12]
126
121
 
127
122
  # ── Step 1: Build the span exporter ─────────────────────────────────────
128
- write_jsonl = write_jsonl or store != "mongodb"
129
123
  exporter = ExecutionSpanExporter(
130
124
  output_path=output_path,
131
125
  execution_id=execution_id,
@@ -179,17 +173,16 @@ def init(
179
173
  if write_jsonl:
180
174
  provider.add_span_processor(SimpleSpanProcessor(exporter))
181
175
 
182
- if store == "mongodb":
183
- from .._core.graph_exporter import GraphSpanExporter
184
- graph_exporter = GraphSpanExporter(
185
- exporter,
186
- session_id=session_id,
187
- base_url=base_url,
188
- api_key=api_key,
189
- project_id=project_id,
190
- run_evaluations=run_evaluations,
191
- )
192
- provider.add_span_processor(SimpleSpanProcessor(graph_exporter))
176
+ from .._core.graph_exporter import GraphSpanExporter
177
+ graph_exporter = GraphSpanExporter(
178
+ exporter,
179
+ session_id=session_id,
180
+ base_url=base_url,
181
+ api_key=api_key,
182
+ project_id=project_id,
183
+ run_evaluations=run_evaluations,
184
+ )
185
+ provider.add_span_processor(SimpleSpanProcessor(graph_exporter))
193
186
 
194
187
  # ── Step 4: Set as global OTel provider ───────────────────────────────
195
188
  trace.set_tracer_provider(provider)
@@ -201,12 +194,11 @@ def init(
201
194
  _INITIALIZED = True
202
195
 
203
196
  if verbose:
204
- store_line = f" Store : MongoDB (project={service_name})\n" if store == "mongodb" else ""
205
197
  jsonl_line = f" Output file : {output_path}\n" if write_jsonl else ""
206
198
  print(
207
199
  f"[continuous-intelligence-layer] ✅ Initialized\n"
208
200
  f" Execution ID : {execution_id}\n"
209
- f"{store_line}"
201
+ f" Store : MongoDB (project={service_name})\n"
210
202
  f"{jsonl_line}"
211
203
  f" Service name : {service_name}"
212
204
  )
@@ -50,7 +50,6 @@ def init(
50
50
  service_name: str = "continuous-intelligence-layer",
51
51
  execution_id: str | None = None,
52
52
  session_id: str | None = None,
53
- store: str | None = "mongodb",
54
53
  write_jsonl: bool = False,
55
54
  verbose: bool = True,
56
55
  base_url: str = "http://localhost:8080",
@@ -75,10 +74,9 @@ def init(
75
74
  runs.
76
75
  write_jsonl :
77
76
  If True, also append every span to a local JSONL file at
78
- ``output_path``. Defaults to False when ``store="mongodb"`` MongoDB
79
- is the single source of truth by default, and JSONL is only an
80
- opt-in local debug/backup mechanism. Automatically forced on when
81
- ``store`` is not "mongodb" (otherwise nothing would be persisted).
77
+ ``output_path``. Defaults to False MongoDB (via the API's
78
+ ``/traces/ingest``) is always the source of truth; JSONL is only an
79
+ opt-in local debug/backup mechanism.
82
80
  service_name :
83
81
  An arbitrary label written to every span as ``service.name``.
84
82
  Useful when you have multiple agents writing to the same file.
@@ -88,9 +86,6 @@ def init(
88
86
  ``execution_id``, so you can filter a single run later.
89
87
  session_id :
90
88
  Identifier for the conversational session/thread.
91
- store :
92
- Optional. If set to "mongodb", also buffers spans and saves them to
93
- MongoDB on shutdown.
94
89
  verbose :
95
90
  Print a one-line confirmation when init succeeds.
96
91
  run_evaluations :
@@ -131,11 +126,9 @@ def init(
131
126
  # parse a ReadableSpan into a flat dict (via ._extract). GraphSpanExporter
132
127
  # reuses that parsing logic to build the MongoDB graph, so this object is
133
128
  # always constructed — but it's only wired up to actually *write* a JSONL
134
- # file to disk if write_jsonl is True. When store="mongodb", MongoDB is
135
- # the single source of truth by default; when store is not "mongodb"
136
- # there'd be nowhere else for spans to go, so JSONL is forced on.
129
+ # file to disk if write_jsonl is True. MongoDB (via the API) is always
130
+ # the source of truth; JSONL is opt-in local debug output only.
137
131
  #
138
- write_jsonl = write_jsonl or store != "mongodb"
139
132
  exporter = ExecutionSpanExporter(
140
133
  output_path=output_path,
141
134
  execution_id=execution_id,
@@ -194,17 +187,16 @@ def init(
194
187
  if write_jsonl:
195
188
  provider.add_span_processor(SimpleSpanProcessor(exporter))
196
189
 
197
- if store == "mongodb":
198
- from .._core.graph_exporter import GraphSpanExporter
199
- graph_exporter = GraphSpanExporter(
200
- exporter,
201
- session_id=session_id,
202
- base_url=base_url,
203
- api_key=api_key,
204
- project_id=project_id,
205
- run_evaluations=run_evaluations,
206
- )
207
- provider.add_span_processor(SimpleSpanProcessor(graph_exporter))
190
+ from .._core.graph_exporter import GraphSpanExporter
191
+ graph_exporter = GraphSpanExporter(
192
+ exporter,
193
+ session_id=session_id,
194
+ base_url=base_url,
195
+ api_key=api_key,
196
+ project_id=project_id,
197
+ run_evaluations=run_evaluations,
198
+ )
199
+ provider.add_span_processor(SimpleSpanProcessor(graph_exporter))
208
200
 
209
201
  # ── Step 4: Set as global OTel provider ───────────────────────────────
210
202
  #
@@ -226,12 +218,11 @@ def init(
226
218
  _INITIALIZED = True
227
219
 
228
220
  if verbose:
229
- store_line = f" Store : MongoDB (project={service_name})\n" if store == "mongodb" else ""
230
221
  jsonl_line = f" Output file : {output_path}\n" if write_jsonl else ""
231
222
  print(
232
223
  f"[continuous-intelligence-layer] ✅ Initialized\n"
233
224
  f" Execution ID : {execution_id}\n"
234
- f"{store_line}"
225
+ f" Store : MongoDB (project={service_name})\n"
235
226
  f"{jsonl_line}"
236
227
  f" Service name : {service_name}"
237
228
  )
@@ -50,7 +50,6 @@ def init(
50
50
  service_name: str = "continuous-intelligence-layer",
51
51
  execution_id: str | None = None,
52
52
  session_id: str | None = None,
53
- store: str | None = "mongodb",
54
53
  write_jsonl: bool = False,
55
54
  verbose: bool = True,
56
55
  base_url: str = "http://localhost:8080",
@@ -75,10 +74,9 @@ def init(
75
74
  runs.
76
75
  write_jsonl :
77
76
  If True, also append every span to a local JSONL file at
78
- ``output_path``. Defaults to False when ``store="mongodb"`` MongoDB
79
- is the single source of truth by default, and JSONL is only an
80
- opt-in local debug/backup mechanism. Automatically forced on when
81
- ``store`` is not "mongodb" (otherwise nothing would be persisted).
77
+ ``output_path``. Defaults to False MongoDB (via the API's
78
+ ``/traces/ingest``) is always the source of truth; JSONL is only an
79
+ opt-in local debug/backup mechanism.
82
80
  service_name :
83
81
  An arbitrary label written to every span as ``service.name``.
84
82
  Useful when you have multiple agents writing to the same file.
@@ -88,9 +86,6 @@ def init(
88
86
  ``execution_id``, so you can filter a single run later.
89
87
  session_id :
90
88
  Identifier for the conversational session/thread.
91
- store :
92
- Optional. If set to "mongodb", also buffers spans and saves them to
93
- MongoDB on shutdown.
94
89
  verbose :
95
90
  Print a one-line confirmation when init succeeds.
96
91
  run_evaluations :
@@ -126,7 +121,6 @@ def init(
126
121
  session_id = session_id or str(uuid.uuid4())[:12]
127
122
 
128
123
  # ── Step 1: Build the span exporter ─────────────────────────────────────
129
- write_jsonl = write_jsonl or store != "mongodb"
130
124
  exporter = ExecutionSpanExporter(
131
125
  output_path=output_path,
132
126
  execution_id=execution_id,
@@ -180,17 +174,16 @@ def init(
180
174
  if write_jsonl:
181
175
  provider.add_span_processor(SimpleSpanProcessor(exporter))
182
176
 
183
- if store == "mongodb":
184
- from .._core.graph_exporter import GraphSpanExporter
185
- graph_exporter = GraphSpanExporter(
186
- exporter,
187
- session_id=session_id,
188
- base_url=base_url,
189
- api_key=api_key,
190
- project_id=project_id,
191
- run_evaluations=run_evaluations,
192
- )
193
- provider.add_span_processor(SimpleSpanProcessor(graph_exporter))
177
+ from .._core.graph_exporter import GraphSpanExporter
178
+ graph_exporter = GraphSpanExporter(
179
+ exporter,
180
+ session_id=session_id,
181
+ base_url=base_url,
182
+ api_key=api_key,
183
+ project_id=project_id,
184
+ run_evaluations=run_evaluations,
185
+ )
186
+ provider.add_span_processor(SimpleSpanProcessor(graph_exporter))
194
187
 
195
188
  # ── Step 4: Set as global OTel provider ───────────────────────────────
196
189
  trace.set_tracer_provider(provider)
@@ -202,12 +195,11 @@ def init(
202
195
  _INITIALIZED = True
203
196
 
204
197
  if verbose:
205
- store_line = f" Store : MongoDB (project={service_name})\n" if store == "mongodb" else ""
206
198
  jsonl_line = f" Output file : {output_path}\n" if write_jsonl else ""
207
199
  print(
208
200
  f"[continuous-intelligence-layer] ✅ Initialized\n"
209
201
  f" Execution ID : {execution_id}\n"
210
- f"{store_line}"
202
+ f" Store : MongoDB (project={service_name})\n"
211
203
  f"{jsonl_line}"
212
204
  f" Service name : {service_name}"
213
205
  )
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "continuous-intelligence-layer"
7
- version = "0.1.1"
7
+ version = "0.1.2"
8
8
  description = "Multi-Agent Intelligent Validation & RCA Framework"
9
9
  readme = "PACKAGE_README.md"
10
10
  requires-python = ">=3.11"