flowcept 0.8.11__py3-none-any.whl → 0.9.1__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.
Files changed (56) hide show
  1. flowcept/__init__.py +7 -4
  2. flowcept/agents/__init__.py +5 -0
  3. flowcept/{flowceptor/consumers/agent/client_agent.py → agents/agent_client.py} +22 -12
  4. flowcept/agents/agents_utils.py +181 -0
  5. flowcept/agents/dynamic_schema_tracker.py +191 -0
  6. flowcept/agents/flowcept_agent.py +30 -0
  7. flowcept/agents/flowcept_ctx_manager.py +175 -0
  8. flowcept/agents/gui/__init__.py +5 -0
  9. flowcept/agents/gui/agent_gui.py +76 -0
  10. flowcept/agents/gui/gui_utils.py +239 -0
  11. flowcept/agents/llms/__init__.py +1 -0
  12. flowcept/agents/llms/claude_gcp.py +139 -0
  13. flowcept/agents/llms/gemini25.py +119 -0
  14. flowcept/agents/prompts/__init__.py +1 -0
  15. flowcept/{flowceptor/adapters/agents/prompts.py → agents/prompts/general_prompts.py} +18 -0
  16. flowcept/agents/prompts/in_memory_query_prompts.py +297 -0
  17. flowcept/agents/tools/__init__.py +1 -0
  18. flowcept/agents/tools/general_tools.py +102 -0
  19. flowcept/agents/tools/in_memory_queries/__init__.py +1 -0
  20. flowcept/agents/tools/in_memory_queries/in_memory_queries_tools.py +704 -0
  21. flowcept/agents/tools/in_memory_queries/pandas_agent_utils.py +309 -0
  22. flowcept/cli.py +286 -44
  23. flowcept/commons/daos/docdb_dao/mongodb_dao.py +47 -0
  24. flowcept/commons/daos/mq_dao/mq_dao_base.py +24 -13
  25. flowcept/commons/daos/mq_dao/mq_dao_kafka.py +18 -2
  26. flowcept/commons/flowcept_dataclasses/task_object.py +16 -21
  27. flowcept/commons/flowcept_dataclasses/workflow_object.py +9 -1
  28. flowcept/commons/task_data_preprocess.py +260 -60
  29. flowcept/commons/utils.py +25 -6
  30. flowcept/configs.py +41 -26
  31. flowcept/flowcept_api/flowcept_controller.py +73 -6
  32. flowcept/flowceptor/adapters/base_interceptor.py +11 -5
  33. flowcept/flowceptor/consumers/agent/base_agent_context_manager.py +25 -1
  34. flowcept/flowceptor/consumers/base_consumer.py +4 -0
  35. flowcept/flowceptor/consumers/consumer_utils.py +5 -4
  36. flowcept/flowceptor/consumers/document_inserter.py +2 -2
  37. flowcept/flowceptor/telemetry_capture.py +5 -2
  38. flowcept/instrumentation/flowcept_agent_task.py +294 -0
  39. flowcept/instrumentation/flowcept_decorator.py +43 -0
  40. flowcept/instrumentation/flowcept_loop.py +3 -3
  41. flowcept/instrumentation/flowcept_task.py +64 -24
  42. flowcept/instrumentation/flowcept_torch.py +5 -5
  43. flowcept/instrumentation/task_capture.py +83 -6
  44. flowcept/version.py +1 -1
  45. {flowcept-0.8.11.dist-info → flowcept-0.9.1.dist-info}/METADATA +42 -14
  46. {flowcept-0.8.11.dist-info → flowcept-0.9.1.dist-info}/RECORD +50 -36
  47. resources/sample_settings.yaml +12 -4
  48. flowcept/flowceptor/adapters/agents/__init__.py +0 -1
  49. flowcept/flowceptor/adapters/agents/agents_utils.py +0 -89
  50. flowcept/flowceptor/adapters/agents/flowcept_agent.py +0 -292
  51. flowcept/flowceptor/adapters/agents/flowcept_llm_prov_capture.py +0 -186
  52. flowcept/flowceptor/consumers/agent/flowcept_agent_context_manager.py +0 -145
  53. flowcept/flowceptor/consumers/agent/flowcept_qa_manager.py +0 -112
  54. {flowcept-0.8.11.dist-info → flowcept-0.9.1.dist-info}/WHEEL +0 -0
  55. {flowcept-0.8.11.dist-info → flowcept-0.9.1.dist-info}/entry_points.txt +0 -0
  56. {flowcept-0.8.11.dist-info → flowcept-0.9.1.dist-info}/licenses/LICENSE +0 -0
@@ -2,6 +2,7 @@
2
2
 
3
3
  import threading
4
4
  from time import time
5
+ import inspect
5
6
  from functools import wraps
6
7
  import argparse
7
8
  from flowcept.commons.flowcept_dataclasses.task_object import (
@@ -11,10 +12,7 @@ from flowcept.commons.vocabulary import Status
11
12
  from flowcept.commons.flowcept_logger import FlowceptLogger
12
13
 
13
14
  from flowcept.commons.utils import replace_non_serializable
14
- from flowcept.configs import (
15
- REPLACE_NON_JSON_SERIALIZABLE,
16
- INSTRUMENTATION_ENABLED,
17
- )
15
+ from flowcept.configs import REPLACE_NON_JSON_SERIALIZABLE, INSTRUMENTATION_ENABLED, HOSTNAME, TELEMETRY_ENABLED
18
16
  from flowcept.flowcept_api.flowcept_controller import Flowcept
19
17
  from flowcept.flowceptor.adapters.instrumentation_interceptor import InstrumentationInterceptor
20
18
 
@@ -54,8 +52,8 @@ def telemetry_flowcept_task(func=None):
54
52
  _thread_local._flowcept_current_context_task_id = task_obj["task_id"]
55
53
  task_obj["workflow_id"] = kwargs.pop("workflow_id", Flowcept.current_workflow_id)
56
54
  task_obj["used"] = kwargs
57
- tel = interceptor.telemetry_capture.capture()
58
- if tel is not None:
55
+ if TELEMETRY_ENABLED:
56
+ tel = interceptor.telemetry_capture.capture()
59
57
  task_obj["telemetry_at_start"] = tel.to_dict()
60
58
  try:
61
59
  result = func(*args, **kwargs)
@@ -65,8 +63,8 @@ def telemetry_flowcept_task(func=None):
65
63
  result = None
66
64
  task_obj["stderr"] = str(e)
67
65
  # task_obj["ended_at"] = time()
68
- tel = interceptor.telemetry_capture.capture()
69
- if tel is not None:
66
+ if TELEMETRY_ENABLED:
67
+ tel = interceptor.telemetry_capture.capture()
70
68
  task_obj["telemetry_at_end"] = tel.to_dict()
71
69
  task_obj["generated"] = result
72
70
  interceptor.intercept(task_obj)
@@ -107,39 +105,52 @@ def lightweight_flowcept_task(func=None):
107
105
  return decorator(func)
108
106
 
109
107
 
110
- # def flowcept_task_switch(mode=None):
111
- # if mode is None:
112
- # return flowcept_task
113
- # elif mode == "disable":
114
- # return lambda _: _
115
- # else:
116
- # raise NotImplementedError
117
-
118
-
119
108
  def flowcept_task(func=None, **decorator_kwargs):
120
- """Get flowcept task."""
109
+ """Flowcept task decorator."""
121
110
  if INSTRUMENTATION_ENABLED:
122
111
  interceptor = InstrumentationInterceptor.get_instance()
123
112
  logger = FlowceptLogger()
124
113
 
125
114
  def decorator(func):
115
+ # Precompute once (perf)
116
+ sig = inspect.signature(func)
117
+ args_handler = decorator_kwargs.get("args_handler", default_args_handler)
118
+ custom_metadata = decorator_kwargs.get("custom_metadata", None)
119
+ tags = decorator_kwargs.get("tags", None)
120
+ subtype = decorator_kwargs.get("subtype", None)
121
+ output_names = decorator_kwargs.get("output_names", None)
122
+
126
123
  @wraps(func)
127
124
  def wrapper(*args, **kwargs):
128
125
  if not INSTRUMENTATION_ENABLED:
129
126
  return func(*args, **kwargs)
130
127
 
131
- args_handler = decorator_kwargs.get("args_handler", default_args_handler)
132
- task_obj = TaskObject()
128
+ # Bind inputs to parameter names
129
+ try:
130
+ bound_args = sig.bind(*args, **kwargs)
131
+ bound_args.apply_defaults()
132
+ handled_args = args_handler(**dict(bound_args.arguments))
133
+ except Exception as e:
134
+ if isinstance(e, TypeError):
135
+ raise e
136
+ else:
137
+ handled_args = args_handler(*args, **kwargs)
133
138
 
139
+ task_obj = TaskObject()
140
+ task_obj.subtype = subtype
134
141
  task_obj.activity_id = func.__name__
135
- handled_args = args_handler(*args, **kwargs)
136
142
  task_obj.workflow_id = handled_args.pop("workflow_id", Flowcept.current_workflow_id)
137
143
  task_obj.campaign_id = handled_args.pop("campaign_id", Flowcept.campaign_id)
138
144
  task_obj.used = handled_args
145
+ task_obj.tags = tags
139
146
  task_obj.started_at = time()
147
+ task_obj.custom_metadata = custom_metadata
148
+ task_obj.hostname = HOSTNAME
140
149
  task_obj.task_id = str(task_obj.started_at)
141
150
  _thread_local._flowcept_current_context_task_id = task_obj.task_id
142
- task_obj.telemetry_at_start = interceptor.telemetry_capture.capture()
151
+ if TELEMETRY_ENABLED:
152
+ task_obj.telemetry_at_start = interceptor.telemetry_capture.capture()
153
+
143
154
  try:
144
155
  result = func(*args, **kwargs)
145
156
  task_obj.status = Status.FINISHED
@@ -148,13 +159,42 @@ def flowcept_task(func=None, **decorator_kwargs):
148
159
  result = None
149
160
  logger.exception(e)
150
161
  task_obj.stderr = str(e)
162
+
151
163
  task_obj.ended_at = time()
152
- task_obj.telemetry_at_end = interceptor.telemetry_capture.capture()
164
+ if TELEMETRY_ENABLED:
165
+ task_obj.telemetry_at_end = interceptor.telemetry_capture.capture()
166
+
167
+ # Output handling: only use output_names if provided
153
168
  try:
154
169
  if result is not None:
170
+ named = None
171
+
155
172
  if isinstance(result, dict):
156
- task_obj.generated = args_handler(**result)
173
+ # User already returned a mapping; pass through
174
+ try:
175
+ task_obj.generated = args_handler(**result)
176
+ except Exception:
177
+ task_obj.generated = result
178
+ elif output_names:
179
+ # If output_names provided, map scalar or tuple/list to names
180
+ if isinstance(result, (tuple, list)):
181
+ if len(output_names) == len(result):
182
+ named = {k: v for k, v in zip(output_names, result)}
183
+ elif isinstance(output_names, str):
184
+ named = {output_names: result}
185
+ elif isinstance(output_names, (tuple, list)) and len(output_names) == 1:
186
+ named = {output_names[0]: result}
187
+
188
+ if isinstance(named, dict):
189
+ try:
190
+ task_obj.generated = args_handler(**named)
191
+ except Exception:
192
+ task_obj.generated = named
193
+ else:
194
+ # Mismatch or no mapping possible -> original behavior
195
+ task_obj.generated = args_handler(result)
157
196
  else:
197
+ # No output_names: original behavior
158
198
  task_obj.generated = args_handler(result)
159
199
  except Exception as e:
160
200
  logger.exception(e)
@@ -18,9 +18,9 @@ from flowcept.commons.flowcept_dataclasses.workflow_object import (
18
18
  from flowcept.commons.vocabulary import Status
19
19
  from flowcept.configs import (
20
20
  INSTRUMENTATION,
21
- TELEMETRY_CAPTURE,
22
21
  REPLACE_NON_JSON_SERIALIZABLE,
23
22
  INSTRUMENTATION_ENABLED,
23
+ TELEMETRY_ENABLED,
24
24
  )
25
25
  from flowcept.flowcept_api.flowcept_controller import Flowcept
26
26
  from flowcept.flowceptor.adapters.base_interceptor import BaseInterceptor
@@ -192,8 +192,8 @@ def flowcept_torch(cls):
192
192
  if self._current_epoch < 1:
193
193
  forward_task["generated"] = {"tensor": _inspect_torch_tensor(y)}
194
194
 
195
- tel = TorchModuleWrapper._interceptor.telemetry_capture.capture()
196
- if tel:
195
+ if TELEMETRY_ENABLED:
196
+ tel = TorchModuleWrapper._interceptor.telemetry_capture.capture()
197
197
  forward_task["telemetry_at_end"] = tel.to_dict()
198
198
 
199
199
  TorchModuleWrapper._interceptor.intercept(forward_task)
@@ -322,9 +322,9 @@ def flowcept_torch(cls):
322
322
 
323
323
  def _get_our_child_forward_func(mode):
324
324
  """Pick the torch_task function."""
325
- if "telemetry" in mode and TELEMETRY_CAPTURE is None:
325
+ if "telemetry" in mode and not TELEMETRY_ENABLED:
326
326
  raise Exception(
327
- "Your telemetry settings are null but you chose a telemetry mode. Please revise your settings."
327
+ "Your telemetry settings are disabled but you chose a telemetry mode. Please revise your settings."
328
328
  )
329
329
  elif mode == "lightweight":
330
330
  return _our_forward_lightweight
@@ -1,5 +1,5 @@
1
1
  from time import time
2
- from typing import Dict
2
+ from typing import Dict, Any
3
3
  import os
4
4
  import threading
5
5
  import random
@@ -8,7 +8,7 @@ from flowcept.commons.flowcept_dataclasses.task_object import (
8
8
  TaskObject,
9
9
  )
10
10
  from flowcept.commons.vocabulary import Status
11
- from flowcept.configs import INSTRUMENTATION_ENABLED
11
+ from flowcept.configs import INSTRUMENTATION_ENABLED, TELEMETRY_ENABLED
12
12
  from flowcept.flowcept_api.flowcept_controller import Flowcept
13
13
  from flowcept.flowceptor.adapters.instrumentation_interceptor import InstrumentationInterceptor
14
14
 
@@ -58,28 +58,88 @@ class FlowceptTask(object):
58
58
  workflow_id: str = None,
59
59
  campaign_id: str = None,
60
60
  activity_id: str = None,
61
+ agent_id: str = None,
62
+ parent_task_id: str = None,
61
63
  used: Dict = None,
64
+ data: Any = None,
62
65
  subtype: str = None,
63
66
  custom_metadata: Dict = None,
67
+ generated: Dict = None,
68
+ ended_at: float = None,
69
+ stdout: str = None,
70
+ stderr: str = None,
71
+ status: Status = None,
64
72
  ):
73
+ """
74
+ Initializes a FlowceptTask and optionally finalizes it.
75
+
76
+ If any of the following optional arguments are provided — `generated`, `ended_at`, `stdout`,
77
+ `stderr`, or `status` — the task will be automatically finalized by calling `end()` during
78
+ initialization. This is useful when the task's outcome is already known at the moment of
79
+ instantiation.
80
+
81
+ Parameters
82
+ ----------
83
+ task_id : str, optional
84
+ Unique identifier for the task. Defaults to a generated ID.
85
+ workflow_id : str, optional
86
+ ID of the workflow to which this task belongs.
87
+ campaign_id : str, optional
88
+ ID of the campaign to which this task belongs.
89
+ activity_id : str, optional
90
+ Describes the specific activity this task captures.
91
+ used : Dict, optional
92
+ Metadata about resources or data used during the task.
93
+ subtype : str, optional
94
+ Optional string categorizing the task subtype.
95
+ custom_metadata : Dict, optional
96
+ Additional user-defined metadata to associate with the task.
97
+ generated : Dict, optional
98
+ Output data generated during the task execution.
99
+ ended_at : float, optional
100
+ Timestamp indicating when the task ended.
101
+ stdout : str, optional
102
+ Captured standard output from the task.
103
+ stderr : str, optional
104
+ Captured standard error from the task.
105
+ status : Status, optional
106
+ Task completion status. If provided, defaults to Status.FINISHED if unspecified.
107
+ """
65
108
  if not INSTRUMENTATION_ENABLED:
66
109
  self._ended = True
67
110
  return
111
+
68
112
  self._task = TaskObject()
69
113
  self._interceptor = InstrumentationInterceptor.get_instance()
70
- tel = self._interceptor.telemetry_capture.capture()
71
- if tel:
114
+
115
+ if TELEMETRY_ENABLED:
116
+ tel = self._interceptor.telemetry_capture.capture()
72
117
  self._task.telemetry_at_start = tel
118
+
73
119
  self._task.activity_id = activity_id
74
120
  self._task.started_at = time()
75
121
  self._task.task_id = task_id or self._gen_task_id()
76
122
  self._task.workflow_id = workflow_id or Flowcept.current_workflow_id
77
123
  self._task.campaign_id = campaign_id or Flowcept.campaign_id
124
+ self._task.parent_task_id = parent_task_id
78
125
  self._task.used = used
126
+ self._task.data = data
79
127
  self._task.subtype = subtype
128
+ self._task.agent_id = agent_id
80
129
  self._task.custom_metadata = custom_metadata
130
+
81
131
  self._ended = False
82
132
 
133
+ # Check if any of the end-like fields were provided. If yes, end it.
134
+ if any([generated, ended_at, stdout, stderr is not None]):
135
+ self.end(
136
+ generated=generated,
137
+ ended_at=ended_at,
138
+ stdout=stdout,
139
+ stderr=stderr,
140
+ status=status or Status.FINISHED,
141
+ )
142
+
83
143
  def __enter__(self):
84
144
  return self
85
145
 
@@ -128,13 +188,30 @@ class FlowceptTask(object):
128
188
  """
129
189
  if not INSTRUMENTATION_ENABLED:
130
190
  return
131
- tel = self._interceptor.telemetry_capture.capture()
132
- if tel:
191
+ if TELEMETRY_ENABLED:
192
+ tel = self._interceptor.telemetry_capture.capture()
133
193
  self._task.telemetry_at_end = tel
134
194
  self._task.ended_at = ended_at or time()
135
195
  self._task.status = status
136
196
  self._task.stderr = stderr
137
197
  self._task.stdout = stdout
138
198
  self._task.generated = generated
199
+ if self._interceptor._mq_dao.buffer is None:
200
+ raise Exception("Did you start Flowcept?")
139
201
  self._interceptor.intercept(self._task.to_dict())
140
202
  self._ended = True
203
+
204
+ def send(self):
205
+ """
206
+ Finalizes and sends the task data if not already ended.
207
+
208
+ This method acts as a simple alias for finalizing the task without requiring additional
209
+ arguments. It sends the task object to the interceptor for capture and marks it as ended
210
+ to prevent multiple submissions.
211
+ """
212
+ if not self._ended:
213
+ if self._interceptor._mq_dao.buffer is None:
214
+ raise Exception("Did you start Flowcept?")
215
+ self._task.ended_at = self._task.started_at # message sents are not going to be analyzed for task duration
216
+ self._interceptor.intercept(self._task.to_dict())
217
+ self._ended = True
flowcept/version.py CHANGED
@@ -4,4 +4,4 @@
4
4
  # The expected format is: <Major>.<Minor>.<Patch>
5
5
  # This file is supposed to be automatically modified by the CI Bot.
6
6
  # See .github/workflows/version_bumper.py
7
- __version__ = "0.8.11"
7
+ __version__ = "0.9.1"
@@ -1,45 +1,52 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flowcept
3
- Version: 0.8.11
3
+ Version: 0.9.1
4
4
  Summary: Capture and query workflow provenance data using data observability
5
- Project-URL: GitHub, https://github.com/ORNL/flowcept
6
5
  Author: Oak Ridge National Laboratory
7
6
  License-Expression: MIT
8
7
  License-File: LICENSE
9
- Keywords: ai,big-data,dask,data-analytics,data-integration,databases,lineage,machine-learning,ml,mlflow,model-management,parallel-processing,provenance,reproducibility,responsible-ai,scientific-workflows,tensorboard,workflows
8
+ Keywords: agentic-ai,agentic-workflows,ai,big-data,dask,data-analytics,data-integration,databases,lineage,llm,machine-learning,ml,mlflow,model-management,parallel-processing,provenance,reproducibility,responsible-ai,scientific-workflows,tensorboard,workflows
10
9
  Classifier: License :: OSI Approved :: MIT License
11
10
  Classifier: Operating System :: OS Independent
12
11
  Classifier: Programming Language :: Python :: 3
13
12
  Requires-Python: >=3.10
14
- Requires-Dist: flask-restful
15
- Requires-Dist: lmdb
16
13
  Requires-Dist: msgpack
14
+ Requires-Dist: numpy
17
15
  Requires-Dist: omegaconf
18
- Requires-Dist: pandas
19
- Requires-Dist: psutil>=6.1.1
20
- Requires-Dist: py-cpuinfo
21
- Requires-Dist: pyarrow
22
- Requires-Dist: redis
23
- Requires-Dist: requests
16
+ Requires-Dist: orjson
24
17
  Provides-Extra: all
25
18
  Requires-Dist: alembic; extra == 'all'
26
19
  Requires-Dist: confluent-kafka<=2.8.0; extra == 'all'
20
+ Requires-Dist: cryptography; extra == 'all'
27
21
  Requires-Dist: dask[distributed]<=2024.10.0; extra == 'all'
22
+ Requires-Dist: flask-restful; extra == 'all'
28
23
  Requires-Dist: furo; extra == 'all'
24
+ Requires-Dist: gitpython; extra == 'all'
25
+ Requires-Dist: google-genai; extra == 'all'
29
26
  Requires-Dist: jupyterlab; extra == 'all'
27
+ Requires-Dist: langchain-community; extra == 'all'
28
+ Requires-Dist: lmdb; extra == 'all'
29
+ Requires-Dist: mcp[cli]; extra == 'all'
30
30
  Requires-Dist: mlflow-skinny; extra == 'all'
31
31
  Requires-Dist: nbmake; extra == 'all'
32
32
  Requires-Dist: paho-mqtt; extra == 'all'
33
+ Requires-Dist: pandas; extra == 'all'
33
34
  Requires-Dist: pika; extra == 'all'
34
35
  Requires-Dist: plotly; extra == 'all'
36
+ Requires-Dist: psutil>=6.1.1; extra == 'all'
37
+ Requires-Dist: py-cpuinfo; extra == 'all'
38
+ Requires-Dist: pyarrow; extra == 'all'
35
39
  Requires-Dist: pymongo; extra == 'all'
36
40
  Requires-Dist: pytest; extra == 'all'
37
41
  Requires-Dist: pyyaml; extra == 'all'
42
+ Requires-Dist: redis; extra == 'all'
43
+ Requires-Dist: requests; extra == 'all'
38
44
  Requires-Dist: ruff; extra == 'all'
39
45
  Requires-Dist: scipy; extra == 'all'
40
46
  Requires-Dist: seaborn; extra == 'all'
41
47
  Requires-Dist: sphinx; extra == 'all'
42
48
  Requires-Dist: sqlalchemy; extra == 'all'
49
+ Requires-Dist: streamlit; extra == 'all'
43
50
  Requires-Dist: tbparse; extra == 'all'
44
51
  Requires-Dist: tensorboard; extra == 'all'
45
52
  Requires-Dist: tensorflow; extra == 'all'
@@ -64,14 +71,28 @@ Requires-Dist: sphinx; extra == 'dev'
64
71
  Provides-Extra: docs
65
72
  Requires-Dist: furo; extra == 'docs'
66
73
  Requires-Dist: sphinx; extra == 'docs'
74
+ Provides-Extra: extras
75
+ Requires-Dist: flask-restful; extra == 'extras'
76
+ Requires-Dist: gitpython; extra == 'extras'
77
+ Requires-Dist: lmdb; extra == 'extras'
78
+ Requires-Dist: pandas; extra == 'extras'
79
+ Requires-Dist: psutil>=6.1.1; extra == 'extras'
80
+ Requires-Dist: py-cpuinfo; extra == 'extras'
81
+ Requires-Dist: redis; extra == 'extras'
82
+ Requires-Dist: requests; extra == 'extras'
67
83
  Provides-Extra: kafka
68
84
  Requires-Dist: confluent-kafka<=2.8.0; extra == 'kafka'
69
85
  Provides-Extra: llm-agent
70
- Requires-Dist: faiss-cpu; extra == 'llm-agent'
71
86
  Requires-Dist: langchain-community; extra == 'llm-agent'
72
87
  Requires-Dist: mcp[cli]; extra == 'llm-agent'
73
- Requires-Dist: sentence-transformers; extra == 'llm-agent'
74
- Requires-Dist: tiktoken; extra == 'llm-agent'
88
+ Requires-Dist: streamlit; extra == 'llm-agent'
89
+ Provides-Extra: llm-google
90
+ Requires-Dist: google-genai; extra == 'llm-google'
91
+ Requires-Dist: langchain-community; extra == 'llm-google'
92
+ Requires-Dist: mcp[cli]; extra == 'llm-google'
93
+ Requires-Dist: streamlit; extra == 'llm-google'
94
+ Provides-Extra: lmdb
95
+ Requires-Dist: lmdb; extra == 'lmdb'
75
96
  Provides-Extra: ml-dev
76
97
  Requires-Dist: datasets==2.17.0; extra == 'ml-dev'
77
98
  Requires-Dist: nltk; extra == 'ml-dev'
@@ -82,15 +103,22 @@ Requires-Dist: torchtext==0.17.2; extra == 'ml-dev'
82
103
  Requires-Dist: torchvision==0.17.2; extra == 'ml-dev'
83
104
  Provides-Extra: mlflow
84
105
  Requires-Dist: alembic; extra == 'mlflow'
106
+ Requires-Dist: cryptography; extra == 'mlflow'
85
107
  Requires-Dist: mlflow-skinny; extra == 'mlflow'
86
108
  Requires-Dist: sqlalchemy; extra == 'mlflow'
87
109
  Requires-Dist: watchdog; extra == 'mlflow'
88
110
  Provides-Extra: mongo
111
+ Requires-Dist: pyarrow; extra == 'mongo'
89
112
  Requires-Dist: pymongo; extra == 'mongo'
90
113
  Provides-Extra: mqtt
91
114
  Requires-Dist: paho-mqtt; extra == 'mqtt'
92
115
  Provides-Extra: nvidia
93
116
  Requires-Dist: nvidia-ml-py; extra == 'nvidia'
117
+ Provides-Extra: redis
118
+ Requires-Dist: redis; extra == 'redis'
119
+ Provides-Extra: telemetry
120
+ Requires-Dist: psutil>=6.1.1; extra == 'telemetry'
121
+ Requires-Dist: py-cpuinfo; extra == 'telemetry'
94
122
  Provides-Extra: tensorboard
95
123
  Requires-Dist: tbparse; extra == 'tensorboard'
96
124
  Requires-Dist: tensorboard; extra == 'tensorboard'
@@ -1,7 +1,27 @@
1
- flowcept/__init__.py,sha256=CukmdzTUvm6Y_plTKPq4kKn7w9LdR36j7V_C_UQyjhU,2011
2
- flowcept/cli.py,sha256=5rFPMle_fyXNiOvAgfCh8eIqR_vZKoY3aXbeORU8bcY,15117
3
- flowcept/configs.py,sha256=PyZ0svU0DKLeSNMaLq8G62zsOrSL2RO1mPZorjTQs_Q,7458
4
- flowcept/version.py,sha256=kZzuCD8eKygfSNYWrKZruE9fLy68IKgtP2XirWNoQso,307
1
+ flowcept/__init__.py,sha256=ZDHSYTpv7qNrCgx7km3mCNRaJ2jfc0KRKKvRXdVxFwA,2101
2
+ flowcept/cli.py,sha256=NB7rzu38Rc8Zyb8ou1XNa7X2NN--EQ7GKdyh0_Kx1Ts,22852
3
+ flowcept/configs.py,sha256=DOpwjKMGE-4GDT22DhNrYbeGPMgPOlngDJnuC2rQuDM,8195
4
+ flowcept/version.py,sha256=2Qh5hgLW5lQsjWbKUouOffybJbNNBK6QnGSvL0HbWz0,306
5
+ flowcept/agents/__init__.py,sha256=8eeD2CiKBtHiDsWdrHK_UreIkKlTq4dUbhHDyzw372o,175
6
+ flowcept/agents/agent_client.py,sha256=UiBQkC9WE2weLZR2OTkEOEQt9-zqQOkPwRA17HfI-jk,2027
7
+ flowcept/agents/agents_utils.py,sha256=Az5lvWTsBHs_3sWWwy7jSdDjNn-PvZ7KmYd79wxvdyU,6666
8
+ flowcept/agents/dynamic_schema_tracker.py,sha256=TsmXRRkyUkqB-0bEgmeqSms8xj1tMMJeYvjoaO2mtwI,6829
9
+ flowcept/agents/flowcept_agent.py,sha256=1sidjnNMdG0S6lUKBvml7ZfIb6o3u7zc6HNogsJbl9g,871
10
+ flowcept/agents/flowcept_ctx_manager.py,sha256=-WYulunHE62w61z8cy3u7TEnvgV1hflNEXsnm8YxwFw,6840
11
+ flowcept/agents/gui/__init__.py,sha256=Qw9YKbAzgZqBjMQGnF7XWmfUo0fivtkDISQRK3LA3gU,113
12
+ flowcept/agents/gui/agent_gui.py,sha256=8sTG3MjWBi6oc4tnfHa-duTBXWEE6RBxBE5uHooGkzI,2501
13
+ flowcept/agents/gui/gui_utils.py,sha256=Qex0G9Asgb_UnLTySB8cYNEEy9ZnmLYnLddbornoDcI,7861
14
+ flowcept/agents/llms/__init__.py,sha256=kzOaJic5VhMBnGvy_Fr5C6sRKVrRntH1ZnYz7f5_4-s,23
15
+ flowcept/agents/llms/claude_gcp.py,sha256=fzz7235DgzVueuFj5odsr93jWtYHpYlXkSGW1kmmJwU,4915
16
+ flowcept/agents/llms/gemini25.py,sha256=VARrjb3tITIh3_Wppmocp_ocSKVZNon0o0GeFEwTnTI,4229
17
+ flowcept/agents/prompts/__init__.py,sha256=7ICsNhLYzvPS1esG3Vg519s51b1c4yN0WegJUb6Qvww,26
18
+ flowcept/agents/prompts/general_prompts.py,sha256=5UYBGti2Mdr5VIPm2Ewn1wxZsVXgRE8jWNvQ-8HZ0Oo,3685
19
+ flowcept/agents/prompts/in_memory_query_prompts.py,sha256=oWvZQNUHBBrGq-f94ulhIZW4bkkze02EzAuHY5640QM,17934
20
+ flowcept/agents/tools/__init__.py,sha256=Xqz2E4-LL_7DDcm1XYJFx2f5RdAsjeTpOJb_DPC7xyc,27
21
+ flowcept/agents/tools/general_tools.py,sha256=Dw1vYNzVUp8dIB48KFPNxGenERoS8UqJj0HIEfhjQeA,2752
22
+ flowcept/agents/tools/in_memory_queries/__init__.py,sha256=K8-JI_lXUgquKkgga8Nef8AntGg_logQtjjQjaEE7yI,39
23
+ flowcept/agents/tools/in_memory_queries/in_memory_queries_tools.py,sha256=hrVal1ktf6lvBmVWS7cR_lQy4cIz7ZNYLC-MN61WNRg,25450
24
+ flowcept/agents/tools/in_memory_queries/pandas_agent_utils.py,sha256=xi69oywlGb6IUkhQKXoKoswYuWK5FyiWHy2MnRjTzds,9055
5
25
  flowcept/analytics/__init__.py,sha256=46q-7vsHq_ddPNrzNnDgEOiRgvlx-5Ggu2ocyROMV0w,641
6
26
  flowcept/analytics/analytics_utils.py,sha256=FRJdBtQa7Hrk2oR_FFhmhmMf3X6YyZ4nbH5RIYh7KL4,8753
7
27
  flowcept/analytics/data_augmentation.py,sha256=Dyr5x316Zf-k1e8rVoQMCpFOrklYVHjfejRPrtoycmc,1641
@@ -11,8 +31,8 @@ flowcept/commons/autoflush_buffer.py,sha256=8M0fcIeHck-mSGQ2HFpW3_Af8-dHswhIbUMX
11
31
  flowcept/commons/flowcept_logger.py,sha256=0asRucrDMeRXvsdhuCmH6lWO7lAt_Z5o5uW7rrQhcjc,1857
12
32
  flowcept/commons/query_utils.py,sha256=3tyK5VYA10iDtmtzNwa8OQGn93DBxsu6rTjHDphftSc,2208
13
33
  flowcept/commons/settings_factory.py,sha256=bMTjgXRfb5HsL2lPnLfem-9trqELbNWE04Ie7lSlxYM,1731
14
- flowcept/commons/task_data_preprocess.py,sha256=skTkT8XpO1gsIfu5YGHPj4A1qK4O139rELpwVmMryeY,6767
15
- flowcept/commons/utils.py,sha256=nzNSAupZidI54ngNF67MX5H0gIj1YOq0GTv6A-z6eEE,8418
34
+ flowcept/commons/task_data_preprocess.py,sha256=yxLOq3PhfJYDeOUrbBzLc-x7zDrKqB30pwk1nIqtdgo,13552
35
+ flowcept/commons/utils.py,sha256=gF6ENWlTpR2ZSw3yVNPNBTVzSpcgy-WuzYzwWSXXsug,9252
16
36
  flowcept/commons/vocabulary.py,sha256=_GzHJ1wSYJlLsu_uu1Am6N3zvc59S4FCuT5yp7lynPw,713
17
37
  flowcept/commons/daos/__init__.py,sha256=RO51svfHOg9naN676zuQwbj_RQ6IFHu-RALeefvtwwk,23
18
38
  flowcept/commons/daos/keyvalue_dao.py,sha256=g7zgC9hVC1NTllwUAqGt44YqdqYUgAKgPlX8_G4BRGw,3599
@@ -20,20 +40,20 @@ flowcept/commons/daos/redis_conn.py,sha256=gFyW-5yf6B8ExEYopCmbap8ki-iEwuIw-KH9f
20
40
  flowcept/commons/daos/docdb_dao/__init__.py,sha256=qRvXREeUJ4mkhxdC9bzpOsVX6M2FB5hDyLFxhMxTGhs,30
21
41
  flowcept/commons/daos/docdb_dao/docdb_dao_base.py,sha256=YbfSVJPwZGK2GBYkeapRC83HkmP0c6Msv5TriD88RcI,11812
22
42
  flowcept/commons/daos/docdb_dao/lmdb_dao.py,sha256=dJOLgCx_lwdz6MKiMpM_UE4rm0angDCPaVz_WU5KqIA,10407
23
- flowcept/commons/daos/docdb_dao/mongodb_dao.py,sha256=0y9RiL54e1GxSTkRHFlMrLFAHWuB3YyNS2zLsnBPtxg,38456
43
+ flowcept/commons/daos/docdb_dao/mongodb_dao.py,sha256=5x0un15uCDTcnuITOyOhvF9mKj_bUmF2du0AHQfjN9k,40055
24
44
  flowcept/commons/daos/mq_dao/__init__.py,sha256=Xxm4FmbBUZDQ7XIAmSFbeKE_AdHsbgFmSuftvMWSykQ,21
25
- flowcept/commons/daos/mq_dao/mq_dao_base.py,sha256=gXOHRhWHiJmN7mNRE4QIbnOfrN-314Ds2LONzsBw3Ug,9184
26
- flowcept/commons/daos/mq_dao/mq_dao_kafka.py,sha256=Idq5TKm-dNZwlfkmLxUy7IBrn0DBtCekrC4n5dXUpn4,4379
45
+ flowcept/commons/daos/mq_dao/mq_dao_base.py,sha256=jo98CIyaEjMMHtaw9XIQRPhnN8IgKj2x-cTmWV4u0Ws,9596
46
+ flowcept/commons/daos/mq_dao/mq_dao_kafka.py,sha256=kjZqPLIu5PaNeM4IDvOxkDRVGTd5UWwq3zhDvVirqW8,5067
27
47
  flowcept/commons/daos/mq_dao/mq_dao_mofka.py,sha256=tRdMGYDzdeIJxad-B4-DE6u8Wzs61eTzOW4ojZrnTxs,4057
28
48
  flowcept/commons/daos/mq_dao/mq_dao_redis.py,sha256=WKPoMPBSce4shqbBkgsnuqJAJoZZ4U_hdebhyFqtejQ,5535
29
49
  flowcept/commons/flowcept_dataclasses/__init__.py,sha256=8KkiJh0WSRAB50waVluxCSI8Tb9X1L9nup4c8RN3ulc,30
30
50
  flowcept/commons/flowcept_dataclasses/base_settings_dataclasses.py,sha256=Cjw2PGYtZDfnwecz6G3S42Ncmxj7AIZVEBx05bsxRUo,399
31
- flowcept/commons/flowcept_dataclasses/task_object.py,sha256=ZzUINqIm6s0J7M6a9OnzEcrBq5z8QZ-m_5n8UE0I6kI,5715
51
+ flowcept/commons/flowcept_dataclasses/task_object.py,sha256=ITTfGNRCPhHdbM9kJxb-4_ROR1yrJuQQ8kM780oe8NQ,5610
32
52
  flowcept/commons/flowcept_dataclasses/telemetry.py,sha256=9_5ONCo-06r5nKHXmi5HfIhiZSuPgmTECiq_u9MlxXM,2822
33
- flowcept/commons/flowcept_dataclasses/workflow_object.py,sha256=f8aB0b3xcUr3KQTlloF7R_P6xQejzDPOm-s6dLhGMeA,4383
53
+ flowcept/commons/flowcept_dataclasses/workflow_object.py,sha256=JHvPo1BfF38fxRqZO1OTA3rTMINnPlkNw8e3l2fWn-M,4624
34
54
  flowcept/flowcept_api/__init__.py,sha256=T1ty86YlocQ5Z18l5fUqHj_CC6Unq_iBv0lFyiI7Ao8,22
35
55
  flowcept/flowcept_api/db_api.py,sha256=hKXep-n50rp9cAzV0ljk2QVEF8O64yxi3ujXv5_Ibac,9723
36
- flowcept/flowcept_api/flowcept_controller.py,sha256=_aB7x7ANOthpqD-xCA8UgiyeyabbzLpXgtpzkKXBBbw,12530
56
+ flowcept/flowcept_api/flowcept_controller.py,sha256=D5-HeG3LKIqtFvIQ54b9B6qyk1Vx_lWAxS_9_I5MKF4,14895
37
57
  flowcept/flowcept_api/task_query_api.py,sha256=SrwB0OCVtbpvCPECkE2ySM10G_g8Wlk5PJ8h-0xEaNc,23821
38
58
  flowcept/flowcept_webserver/__init__.py,sha256=8411GIXGddKTKoHUvbo_Rq6svosNG7tG8VzvUEBd7WI,28
39
59
  flowcept/flowcept_webserver/app.py,sha256=VUV8_JZbIbx9u_1O7m7XtRdhZb_7uifUa-iNlPhmZws,658
@@ -41,16 +61,11 @@ flowcept/flowcept_webserver/resources/__init__.py,sha256=XOk5yhLeLU6JmVXxbl3TY2z
41
61
  flowcept/flowcept_webserver/resources/query_rsrc.py,sha256=Mk1XDC_wVYkMk0eaazqWWrTC07gQU9U0toKfip0ihZE,1353
42
62
  flowcept/flowcept_webserver/resources/task_messages_rsrc.py,sha256=0u68it2W-9NzUUx5fWOZCqvRKe5EsLI8oyvto9634Ng,666
43
63
  flowcept/flowceptor/__init__.py,sha256=wVxRXUv07iNx6SMRRma2vqhR_GIcRl0re_WCYG65PUs,29
44
- flowcept/flowceptor/telemetry_capture.py,sha256=kDlRA1chkR31ckNuuQu7PmJPAO_yxwJ1-KRHJKW8csA,13739
64
+ flowcept/flowceptor/telemetry_capture.py,sha256=9-Q09LjANAntG6dAz3L1rHWkb7zqtqU9GSFj__FCyyc,13810
45
65
  flowcept/flowceptor/adapters/__init__.py,sha256=SuZbSZVVQeBJ9zXW-M9jF09dw3XIjre3lSGrUO1Y8Po,27
46
- flowcept/flowceptor/adapters/base_interceptor.py,sha256=m2k_775gsiG7uEYEKLgA0KC4fysGTafbINCC4jkqd3M,6388
66
+ flowcept/flowceptor/adapters/base_interceptor.py,sha256=kbdYW6VuvmBibOVy7Pg3OzeD3OUaHc6jnAhRBpj9f14,6517
47
67
  flowcept/flowceptor/adapters/instrumentation_interceptor.py,sha256=DhK2bBnpghqPSeA62BUqRg6pl8zxuYrP33dK4x6PhRE,733
48
68
  flowcept/flowceptor/adapters/interceptor_state_manager.py,sha256=xRzmi5YFKBEqNtX8F5s6XlMTRe27ml4BmQtBO4WtG2c,919
49
- flowcept/flowceptor/adapters/agents/__init__.py,sha256=5x_qyGaazppgvNDWbNhC_gfTav0b3r_P4CX7QwFv4BQ,32
50
- flowcept/flowceptor/adapters/agents/agents_utils.py,sha256=JDxxsgcCdRR3CV3odIuLcHQcq-VFuApZaioqs_yHkuU,2798
51
- flowcept/flowceptor/adapters/agents/flowcept_agent.py,sha256=13CobrSp_uObvLSVW3QNQOcqVa5rvwKBwFa4mjuLvb8,8173
52
- flowcept/flowceptor/adapters/agents/flowcept_llm_prov_capture.py,sha256=2qzcItS3FHF-Wym_u9jZ-XzgDJnDgm9rGGRhfaqJZ8M,5992
53
- flowcept/flowceptor/adapters/agents/prompts.py,sha256=VipBULibXYRF_mMCf_yYJ2Sb-aRNY_y7YTDmed4AfgM,2587
54
69
  flowcept/flowceptor/adapters/brokers/__init__.py,sha256=mhQXVmh0JklvL93GUtJZLJnPRYX9Nmb8IqcyKJGQBzk,36
55
70
  flowcept/flowceptor/adapters/brokers/mqtt_interceptor.py,sha256=wx3STMYPHeXB6ilUn-UQYsxesGp2hF7TRlfn52hNJtY,4845
56
71
  flowcept/flowceptor/adapters/dask/__init__.py,sha256=GKreb5L_nliD2BEckyB943zOQ-b6Gn1fLDj81FqSK2Y,23
@@ -66,22 +81,21 @@ flowcept/flowceptor/adapters/tensorboard/__init__.py,sha256=LrcR4WCIlBwwHIUSteQ8
66
81
  flowcept/flowceptor/adapters/tensorboard/tensorboard_dataclasses.py,sha256=lSfDd6TucVNzGxbm69BYyCVgMr2p9iUEQjnsS4jIfeI,554
67
82
  flowcept/flowceptor/adapters/tensorboard/tensorboard_interceptor.py,sha256=PUKGlCsYcybsk1HK573Brs6FiXQRoaj6MKgZ3Oyeec4,4881
68
83
  flowcept/flowceptor/consumers/__init__.py,sha256=foxtVEb2ZEe9g1slfYIKM4tIFv-He1l7XS--SYs7nlQ,28
69
- flowcept/flowceptor/consumers/base_consumer.py,sha256=xvs_BMrNFJhNX3ACEkf0DUH7JIJNtjNgg2xMRmujoiE,2935
70
- flowcept/flowceptor/consumers/consumer_utils.py,sha256=7bvFJWusJkfA4j0gwZLDIIsIOyfk9wRq6s5liS3JAV0,5665
71
- flowcept/flowceptor/consumers/document_inserter.py,sha256=p5g18ghOrSbrR1b3btnBwZi48qMIvMT9n3QuRBq89LQ,13374
84
+ flowcept/flowceptor/consumers/base_consumer.py,sha256=cKEkZAmfzirBcnVNjx3To57zP1Qwdz4lkMbjeZ8D4Q8,3163
85
+ flowcept/flowceptor/consumers/consumer_utils.py,sha256=a7GJYgYiTZnxsm3W3MOalgnC8oyQSs7OjqF4LWYI_vI,5704
86
+ flowcept/flowceptor/consumers/document_inserter.py,sha256=IeVl6Y4Q1KlpYGvE7uDI0vKQf-MGf2pgnIpxCYtyzKE,13392
72
87
  flowcept/flowceptor/consumers/agent/__init__.py,sha256=R1uvjBPeTLw9SpYgyUc6Qmo16pE84PFHcELTTFvyTWU,56
73
- flowcept/flowceptor/consumers/agent/base_agent_context_manager.py,sha256=dRgWFuCacB_7lj1NfEeZM2uERmRTxh9QOxx1ywXtzfY,3226
74
- flowcept/flowceptor/consumers/agent/client_agent.py,sha256=5dtjTRMHACIDwU_0k2xsKia24iasMM_6IMxWYCt5Ql8,1639
75
- flowcept/flowceptor/consumers/agent/flowcept_agent_context_manager.py,sha256=RSdQ2zFkCizD2CtgdCIRRgs9J2E_G-49wmjNEZYoPMc,5302
76
- flowcept/flowceptor/consumers/agent/flowcept_qa_manager.py,sha256=FaUTTixKncWjs-6xPw9BdNdPBFopFQ9tNRNT9kLPtyc,4156
88
+ flowcept/flowceptor/consumers/agent/base_agent_context_manager.py,sha256=5fBPYs-k4bsKDcIXyUbps9KoiQkfAWLHJB52lypYKas,4161
77
89
  flowcept/instrumentation/__init__.py,sha256=M5bTmg80E4QyN91gUX3qfw_nbtJSXwGWcKxdZP3vJz0,34
78
- flowcept/instrumentation/flowcept_loop.py,sha256=RvETm3Pn37dIw_a1RXigyh2U7MCBHqi46dPmbrz3RMQ,12171
79
- flowcept/instrumentation/flowcept_task.py,sha256=l_BAYEUZ_SeBt8QJN_E9D9QcZVYRnW9qO_XRnqvmePE,5993
80
- flowcept/instrumentation/flowcept_torch.py,sha256=mH4sI2FMtBpGk4hN3U6MUwqd6sOPER8TbigUkexfhDY,23437
81
- flowcept/instrumentation/task_capture.py,sha256=I3So1eysuyJ4KS3Fya14WldbgG0pBJ1CTvTikVKSEsM,5090
82
- resources/sample_settings.yaml,sha256=cdMyRirOorBBVidUS2RVLs8NKlBjbN-SJZ2XDnloc3A,6313
83
- flowcept-0.8.11.dist-info/METADATA,sha256=xZpXRV3xItrqcWvCFipJljywnlW8BGSMOC0d02q5qao,18811
84
- flowcept-0.8.11.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
85
- flowcept-0.8.11.dist-info/entry_points.txt,sha256=i8q67WE0201rVxYI2lyBtS52shvgl93x2Szp4q8zMlw,47
86
- flowcept-0.8.11.dist-info/licenses/LICENSE,sha256=r5-2P6tFTuRGWT5TiX32s1y0tnp4cIqBEC1QjTaXe2k,1086
87
- flowcept-0.8.11.dist-info/RECORD,,
90
+ flowcept/instrumentation/flowcept_agent_task.py,sha256=XN9JU4LODca0SgojUm4F5iU_V8tuWkOt1fAKcoOAG34,10757
91
+ flowcept/instrumentation/flowcept_decorator.py,sha256=X4Lp_FSsoL08K8ZhRM4mC0OjKupbQtbMQR8zxy3ezDY,1350
92
+ flowcept/instrumentation/flowcept_loop.py,sha256=7hkcolXxbwwccNzoSbAeCCEu02i4zT317YeJ6dO1MDs,12208
93
+ flowcept/instrumentation/flowcept_task.py,sha256=EmKODpjl8usNklKSVmsKYyCa6gC_QMqKhAr3DKaw44s,8199
94
+ flowcept/instrumentation/flowcept_torch.py,sha256=kkZQRYq6cDBpdBU6J39_4oKRVkhyF3ODlz8ydV5WGKw,23455
95
+ flowcept/instrumentation/task_capture.py,sha256=la4VaMuihpDycJjHMb490RgujJTgn8s5ilv8o7ZJ5MA,8317
96
+ resources/sample_settings.yaml,sha256=P6pMYQSlNI7Rw2dcoP7K_sgBvqcud2kWkyVBpQC3F5E,6689
97
+ flowcept-0.9.1.dist-info/METADATA,sha256=tylfzf5Sweb0iZEfHvP5H6ym6BX9LYcxGxTFvpPUOsY,20050
98
+ flowcept-0.9.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
99
+ flowcept-0.9.1.dist-info/entry_points.txt,sha256=i8q67WE0201rVxYI2lyBtS52shvgl93x2Szp4q8zMlw,47
100
+ flowcept-0.9.1.dist-info/licenses/LICENSE,sha256=r5-2P6tFTuRGWT5TiX32s1y0tnp4cIqBEC1QjTaXe2k,1086
101
+ flowcept-0.9.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
- flowcept_version: 0.8.11 # Version of the Flowcept package. This setting file is compatible with this version.
1
+ flowcept_version: 0.9.1 # Version of the Flowcept package. This setting file is compatible with this version.
2
2
 
3
3
  project:
4
4
  debug: true # Toggle debug mode. This will add a property `debug: true` to all saved data, making it easier to retrieve/delete them later.
@@ -7,6 +7,7 @@ project:
7
7
  performance_logging: false # Enable performance logging if true. Particularly useful for MQ flushes.
8
8
  enrich_messages: true # Add extra metadata to task messages, such as IP addresses and UTC timestamps.
9
9
  db_flush_mode: online # Mode for flushing DB entries: "online" or "offline". If online, flushes to the DB will happen before the workflow ends.
10
+ # dump_buffer_path: flowcept_messages.jsonl # This is useful if you need to run completely offline.
10
11
 
11
12
  log:
12
13
  log_path: "default" # Path for log file output; "default" will write the log in the directory where the main executable is running from.
@@ -50,6 +51,8 @@ mq:
50
51
  # uri: use Redis connection uri here
51
52
  chunk_size: -1 # use 0 or -1 to disable this. Or simply omit this from the config file.
52
53
  same_as_kvdb: false # Set this to true if you are using the same Redis instance both as an MQ and as the KV_DB. In that case, no need to repeat connection parameters in MQ. Use only what you define in KV_DB.
54
+ # bin: /usr/local/bin/redis-server # Use this if you want to start redis using the flowcept-cli.
55
+ # conf_file: /etc/redis/redis.conf
53
56
 
54
57
  kv_db:
55
58
  host: localhost
@@ -76,8 +79,8 @@ db_buffer:
76
79
  insertion_buffer_time_secs: 5 # Time interval (in seconds) to buffer incoming records before flushing to the database
77
80
  buffer_size: 50 # Maximum number of records to hold in the buffer before forcing a flush
78
81
  remove_empty_fields: false # If true, fields with null/empty values will be removed before insertion
79
- stop_max_trials: 240 # Maximum number of trials before giving up when waiting for a fully safe stop (i.e., all records have been inserted as expected).
80
- stop_trials_sleep: 0.01 # Sleep duration (in seconds) between trials when waiting for a fully safe stop.
82
+ stop_max_trials: 300 # Maximum number of trials before giving up when waiting for a fully safe stop (i.e., all records have been inserted as expected).
83
+ stop_trials_sleep: 0.1 # Sleep duration (in seconds) between trials when waiting for a fully safe stop.
81
84
 
82
85
  agent:
83
86
  enabled: false
@@ -86,6 +89,7 @@ agent:
86
89
  llm_server_url: '?'
87
90
  api_key: '?'
88
91
  model: '?'
92
+ service_provider: '?'
89
93
  model_kwargs: {}
90
94
 
91
95
  databases:
@@ -100,13 +104,17 @@ databases:
100
104
  port: 27017
101
105
  db: flowcept
102
106
  create_collection_index: true # Whether flowcept should create collection indices if they haven't been created yet. This is done only at the Flowcept start up.
107
+ # bin: /usr/bin/mongod
108
+ # log_path: /var/log/mongodb/mongod.log
109
+ # lock_file_path: /var/run/mongod.pid
110
+
103
111
 
104
112
  adapters:
105
113
  # For each key below, you can have multiple instances. Like mlflow1, mlflow2; zambeze1, zambeze2. Use an empty dict, {}, if you won't use any adapter.
106
114
 
107
115
  broker_mqtt:
108
116
  kind: broker
109
- host: h
117
+ host: localhost
110
118
  port: 30011
111
119
  protocol: mqtt3.1.1
112
120
  queues: ["#"]
@@ -1 +0,0 @@
1
- """Agent adapter subpackage."""