chuk-ai-session-manager 0.8__tar.gz → 0.8.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/PKG-INFO +2 -2
  2. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/pyproject.toml +25 -8
  3. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/session_manager.py +29 -43
  4. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager.egg-info/PKG-INFO +2 -2
  5. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager.egg-info/SOURCES.txt +6 -0
  6. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager.egg-info/requires.txt +1 -1
  7. chuk_ai_session_manager-0.8.1/tests/test_core_coverage.py +1089 -0
  8. chuk_ai_session_manager-0.8.1/tests/test_fault_handler_coverage.py +574 -0
  9. chuk_ai_session_manager-0.8.1/tests/test_guards_coverage.py +2140 -0
  10. chuk_ai_session_manager-0.8.1/tests/test_memory_coverage.py +2768 -0
  11. chuk_ai_session_manager-0.8.1/tests/test_models_coverage.py +1647 -0
  12. chuk_ai_session_manager-0.8.1/tests/test_procedural_memory_coverage.py +1748 -0
  13. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/tests/test_session_manager.py +6 -6
  14. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/tests/test_simple.py +6 -17
  15. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/tests/test_simple_api.py +10 -14
  16. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/README.md +0 -0
  17. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/setup.cfg +0 -0
  18. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/__init__.py +0 -0
  19. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/api/__init__.py +0 -0
  20. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/api/simple_api.py +0 -0
  21. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/exceptions.py +0 -0
  22. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/guards/__init__.py +0 -0
  23. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/guards/bindings.py +0 -0
  24. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/guards/cache.py +0 -0
  25. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/guards/manager.py +0 -0
  26. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/guards/models.py +0 -0
  27. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/guards/ungrounded.py +0 -0
  28. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/infinite_conversation.py +0 -0
  29. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/memory/__init__.py +0 -0
  30. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/memory/artifacts_bridge.py +0 -0
  31. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/memory/context_packer.py +0 -0
  32. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/memory/fault_handler.py +0 -0
  33. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/memory/manifest.py +0 -0
  34. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/memory/models.py +0 -0
  35. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/memory/mutation_log.py +0 -0
  36. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/memory/pack_cache.py +0 -0
  37. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/memory/page_table.py +0 -0
  38. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/memory/prefetcher.py +0 -0
  39. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/memory/tlb.py +0 -0
  40. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/memory/vm_prompts.py +0 -0
  41. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/memory/working_set.py +0 -0
  42. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/models/__init__.py +0 -0
  43. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/models/event_source.py +0 -0
  44. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/models/event_type.py +0 -0
  45. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/models/session.py +0 -0
  46. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/models/session_event.py +0 -0
  47. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/models/session_metadata.py +0 -0
  48. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/models/session_run.py +0 -0
  49. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/models/token_usage.py +0 -0
  50. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/procedural_memory/__init__.py +0 -0
  51. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/procedural_memory/formatter.py +0 -0
  52. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/procedural_memory/manager.py +0 -0
  53. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/procedural_memory/models.py +0 -0
  54. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/sample_tools.py +0 -0
  55. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/session_aware_tool_processor.py +0 -0
  56. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/session_prompt_builder.py +0 -0
  57. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager/session_storage.py +0 -0
  58. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager.egg-info/dependency_links.txt +0 -0
  59. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/src/chuk_ai_session_manager.egg-info/top_level.txt +0 -0
  60. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/tests/test_basic_functionality.py +0 -0
  61. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/tests/test_exceptions.py +0 -0
  62. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/tests/test_infinite_conversation.py +0 -0
  63. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/tests/test_memory.py +0 -0
  64. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/tests/test_models.py +0 -0
  65. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/tests/test_prompt_builder.py +0 -0
  66. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/tests/test_session_manager_advanced.py +0 -0
  67. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/tests/test_storage.py +0 -0
  68. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/tests/test_system_prompt.py +0 -0
  69. {chuk_ai_session_manager-0.8 → chuk_ai_session_manager-0.8.1}/tests/test_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chuk-ai-session-manager
3
- Version: 0.8
3
+ Version: 0.8.1
4
4
  Summary: Session manager for AI applications
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -15,7 +15,7 @@ Requires-Dist: tiktoken>=0.9.0; extra == "tiktoken"
15
15
  Provides-Extra: dev
16
16
  Requires-Dist: pytest>=7.0.0; extra == "dev"
17
17
  Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
18
- Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
18
+ Requires-Dist: pytest-asyncio>=1.0.0; extra == "dev"
19
19
  Requires-Dist: black>=23.0.0; extra == "dev"
20
20
  Requires-Dist: isort>=5.12.0; extra == "dev"
21
21
  Requires-Dist: mypy>=1.0.0; extra == "dev"
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "chuk-ai-session-manager"
7
- version = "0.8"
7
+ version = "0.8.1"
8
8
  description = "Session manager for AI applications"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -31,7 +31,7 @@ tiktoken = ["tiktoken>=0.9.0"]
31
31
  dev = [
32
32
  "pytest>=7.0.0",
33
33
  "pytest-cov>=4.0.0",
34
- "pytest-asyncio>=0.21.0",
34
+ "pytest-asyncio>=1.0.0",
35
35
  "black>=23.0.0",
36
36
  "isort>=5.12.0",
37
37
  "mypy>=1.0.0",
@@ -106,30 +106,47 @@ ignore = ["E501"] # Line too long - handled by formatter
106
106
 
107
107
  [tool.mypy]
108
108
  python_version = "3.11"
109
- # Relaxed settings - enable stricter checking incrementally
110
109
  warn_return_any = false
111
110
  warn_unused_configs = true
112
111
  ignore_missing_imports = true
113
112
  check_untyped_defs = false
114
113
  disallow_untyped_defs = false
115
- # Ignore errors in all modules for now (pre-existing issues)
116
- # TODO: Enable strict checking and fix type errors
117
- ignore_errors = true
118
114
  exclude = [
119
115
  "examples/",
120
116
  "tests/",
121
117
  ".*/site-packages/.*",
122
118
  ]
123
119
 
120
+ # Per-module overrides for files with pre-existing type errors.
121
+ # Fix these incrementally and remove the override when clean.
122
+ [[tool.mypy.overrides]]
123
+ module = [
124
+ "chuk_ai_session_manager.session_manager",
125
+ "chuk_ai_session_manager.session_prompt_builder",
126
+ "chuk_ai_session_manager.session_storage",
127
+ "chuk_ai_session_manager.session_aware_tool_processor",
128
+ "chuk_ai_session_manager.infinite_conversation",
129
+ "chuk_ai_session_manager.models.session",
130
+ "chuk_ai_session_manager.models.session_run",
131
+ "chuk_ai_session_manager.memory.fault_handler",
132
+ "chuk_ai_session_manager.memory.artifacts_bridge",
133
+ "chuk_ai_session_manager.guards.manager",
134
+ ]
135
+ ignore_errors = true
136
+
124
137
  [dependency-groups]
125
138
  dev = [
139
+ "pytest>=7.0.0",
140
+ "pytest-cov>=4.0.0",
141
+ "pytest-asyncio>=1.0.0",
142
+ "black>=23.0.0",
143
+ "isort>=5.12.0",
144
+ "mypy>=1.0.0",
126
145
  "bs4>=0.0.2",
127
146
  "chuk-llm>=0.3",
128
147
  "fastapi>=0.115.12",
129
148
  "geopy>=2.4.1",
130
149
  "openai>=1.88.0",
131
- "pytest-asyncio>=1.0.0",
132
- "pytest-cov>=7.0.0",
133
150
  "tiktoken>=0.9.0",
134
151
  "uvicorn>=0.34.2",
135
152
  ]
@@ -26,6 +26,8 @@ from chuk_ai_session_manager.session_storage import ChukSessionsStore
26
26
 
27
27
  logger = logging.getLogger(__name__)
28
28
 
29
+ DEFAULT_TOKEN_MODEL = "gpt-4o-mini"
30
+
29
31
 
30
32
  class SessionManager:
31
33
  """
@@ -65,6 +67,7 @@ class SessionManager:
65
67
  infinite_context: bool = False,
66
68
  token_threshold: int = 4000,
67
69
  max_turns_per_segment: int = 20,
70
+ default_model: str = DEFAULT_TOKEN_MODEL,
68
71
  ):
69
72
  """
70
73
  Initialize a SessionManager.
@@ -78,17 +81,20 @@ class SessionManager:
78
81
  infinite_context: Enable automatic infinite context handling.
79
82
  token_threshold: Token limit before creating new session (infinite mode).
80
83
  max_turns_per_segment: Turn limit before creating new session (infinite mode).
84
+ default_model: Model name used for token counting (default: gpt-4o-mini).
81
85
  """
82
86
  # Core session management
83
87
  self._session_id = session_id
84
88
  self._system_prompt = system_prompt
85
89
  self._parent_id = parent_id
86
90
  self._metadata = metadata or {}
87
- self._store = store
91
+ self._store = store or ChukSessionsStore()
88
92
  self._session: Optional[Session] = None
89
93
  self._initialized = False
90
94
  self._lock = asyncio.Lock()
91
95
  self._loaded_from_storage = False # Track if loaded from storage
96
+ self._default_model = default_model
97
+ self._summary_callback: Optional[Callable] = None
92
98
 
93
99
  # Infinite context settings
94
100
  self._infinite_context = infinite_context
@@ -124,19 +130,13 @@ class SessionManager:
124
130
 
125
131
  @property
126
132
  def _is_new(self) -> bool:
127
- """Check if this is a new session (for test compatibility)."""
128
- # If we have a session_id but haven't initialized yet, we don't know
133
+ """Check if this is a new session."""
129
134
  if not self._initialized:
130
135
  return True
131
- # If we loaded from storage, it's not new
132
136
  return not self._loaded_from_storage
133
137
 
134
138
  async def _ensure_session(self) -> Optional[Session]:
135
- """Ensure session is initialized (test compatibility alias)."""
136
- # Special handling for test cases expecting errors
137
- if self._session_id and "nonexistent" in self._session_id:
138
- raise ValueError(f"Session {self._session_id} not found")
139
-
139
+ """Ensure session is initialized and return it."""
140
140
  await self._ensure_initialized()
141
141
  return self._session
142
142
 
@@ -169,7 +169,7 @@ class SessionManager:
169
169
  if self._initialized: # Double-check after acquiring lock
170
170
  return
171
171
 
172
- store = self._store or ChukSessionsStore()
172
+ store = self._store
173
173
 
174
174
  if self._session_id:
175
175
  # Try to load existing session
@@ -192,19 +192,8 @@ class SessionManager:
192
192
  # Initialize session chain for infinite context
193
193
  if self._infinite_context:
194
194
  self._session_chain = [self._session_id]
195
- # TODO: Load full chain from session metadata
196
195
  else:
197
- # Session not found - behavior depends on context
198
- # For some tests, we should raise an error
199
- # For others, we should create a new session
200
- # Check if this looks like a test expecting an error
201
- if (
202
- "nonexistent" in self._session_id
203
- or "not-found" in self._session_id
204
- ):
205
- raise ValueError(f"Session {self._session_id} not found")
206
-
207
- # Otherwise create a new session with the provided ID
196
+ # Session not found - create a new session with the provided ID
208
197
  session_metadata = {}
209
198
  if self._metadata:
210
199
  session_metadata.update(self._metadata)
@@ -226,11 +215,8 @@ class SessionManager:
226
215
 
227
216
  if self._infinite_context:
228
217
  self._session_chain = [self._session_id]
229
- except ValueError:
230
- # Re-raise ValueError for tests expecting it
231
- raise
232
218
  except Exception as e:
233
- # For other errors, create new session
219
+ # For errors, create new session
234
220
  logger.debug(f"Error loading session {self._session_id}: {e}")
235
221
  session_metadata = {}
236
222
  if self._metadata:
@@ -279,8 +265,7 @@ class SessionManager:
279
265
  async def _save_session(self) -> None:
280
266
  """Save the current session."""
281
267
  if self._session:
282
- store = self._store or ChukSessionsStore()
283
- await store.save(self._session)
268
+ await self._store.save(self._session)
284
269
 
285
270
  async def _should_create_new_segment(self) -> bool:
286
271
  """Check if we should create a new session segment."""
@@ -350,8 +335,11 @@ class SessionManager:
350
335
  Returns:
351
336
  The new session ID.
352
337
  """
338
+ # Use the instance callback if no explicit callback provided
339
+ callback = llm_callback or self._summary_callback
340
+
353
341
  # Create summary of current session
354
- summary = await self._create_summary(llm_callback)
342
+ summary = await self._create_summary(callback)
355
343
 
356
344
  # Add summary to current session
357
345
  summary_event = SessionEvent(
@@ -368,8 +356,7 @@ class SessionManager:
368
356
  new_session.metadata.properties["system_prompt"] = self._system_prompt
369
357
 
370
358
  # Save new session
371
- store = self._store or ChukSessionsStore()
372
- await store.save(new_session)
359
+ await self._store.save(new_session)
373
360
 
374
361
  # Update our state
375
362
  old_session_id = self._session_id
@@ -404,7 +391,7 @@ class SessionManager:
404
391
  event = await SessionEvent.create_with_tokens(
405
392
  message=message,
406
393
  prompt=message,
407
- model="gpt-4o-mini", # Default model for token counting
394
+ model=self._default_model,
408
395
  source=EventSource.USER,
409
396
  type=EventType.MESSAGE,
410
397
  )
@@ -526,16 +513,14 @@ class SessionManager:
526
513
  event = SessionEvent(
527
514
  message=tool_message,
528
515
  source=EventSource.SYSTEM,
529
- type=EventType.TOOL_CALL, # This is correct
516
+ type=EventType.TOOL_CALL,
530
517
  )
531
518
 
532
519
  for key, value in metadata.items():
533
520
  await event.set_metadata(key, value)
534
521
 
535
- # This should add the event to the session
536
522
  await self._session.add_event_and_save(event)
537
523
 
538
- # Verify the event was added (debug)
539
524
  tool_events = [e for e in self._session.events if e.type == EventType.TOOL_CALL]
540
525
  logger.debug(f"Tool events after adding: {len(tool_events)}")
541
526
 
@@ -574,7 +559,7 @@ class SessionManager:
574
559
  return messages
575
560
 
576
561
  async def get_conversation(
577
- self, include_all_segments: bool = None
562
+ self, include_all_segments: Optional[bool] = None
578
563
  ) -> List[Dict[str, Any]]:
579
564
  """
580
565
  Get conversation history.
@@ -615,7 +600,9 @@ class SessionManager:
615
600
  else:
616
601
  return [self.session_id]
617
602
 
618
- async def get_stats(self, include_all_segments: bool = None) -> Dict[str, Any]:
603
+ async def get_stats(
604
+ self, include_all_segments: Optional[bool] = None
605
+ ) -> Dict[str, Any]:
619
606
  """
620
607
  Get conversation statistics.
621
608
 
@@ -645,7 +632,7 @@ class SessionManager:
645
632
  # For infinite context, build the complete chain if needed
646
633
  if len(self._session_chain) < self._total_segments:
647
634
  # Need to reconstruct the chain
648
- store = self._store or ChukSessionsStore()
635
+ store = self._store
649
636
  chain = []
650
637
  current_id = self._session_id
651
638
 
@@ -675,7 +662,7 @@ class SessionManager:
675
662
  total_events = 0
676
663
  tool_calls = 0
677
664
 
678
- store = self._store or ChukSessionsStore()
665
+ store = self._store
679
666
 
680
667
  for session_id in self._session_chain:
681
668
  try:
@@ -693,9 +680,8 @@ class SessionManager:
693
680
  tool_calls += sum(
694
681
  1 for e in sess.events if e.type == EventType.TOOL_CALL
695
682
  )
696
- except Exception:
697
- # Skip if can't load session
698
- pass
683
+ except Exception as e:
684
+ logger.warning(f"Failed to load session {session_id} in chain: {e}")
699
685
 
700
686
  return {
701
687
  "session_id": self._session_id,
@@ -762,7 +748,7 @@ class SessionManager:
762
748
  return
763
749
 
764
750
  await self._ensure_initialized()
765
- store = self._store or ChukSessionsStore()
751
+ store = self._store
766
752
 
767
753
  # Start from current session and work backwards
768
754
  current_id = self._session_id
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chuk-ai-session-manager
3
- Version: 0.8
3
+ Version: 0.8.1
4
4
  Summary: Session manager for AI applications
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -15,7 +15,7 @@ Requires-Dist: tiktoken>=0.9.0; extra == "tiktoken"
15
15
  Provides-Extra: dev
16
16
  Requires-Dist: pytest>=7.0.0; extra == "dev"
17
17
  Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
18
- Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
18
+ Requires-Dist: pytest-asyncio>=1.0.0; extra == "dev"
19
19
  Requires-Dist: black>=23.0.0; extra == "dev"
20
20
  Requires-Dist: isort>=5.12.0; extra == "dev"
21
21
  Requires-Dist: mypy>=1.0.0; extra == "dev"
@@ -47,10 +47,16 @@ src/chuk_ai_session_manager/procedural_memory/formatter.py
47
47
  src/chuk_ai_session_manager/procedural_memory/manager.py
48
48
  src/chuk_ai_session_manager/procedural_memory/models.py
49
49
  tests/test_basic_functionality.py
50
+ tests/test_core_coverage.py
50
51
  tests/test_exceptions.py
52
+ tests/test_fault_handler_coverage.py
53
+ tests/test_guards_coverage.py
51
54
  tests/test_infinite_conversation.py
52
55
  tests/test_memory.py
56
+ tests/test_memory_coverage.py
53
57
  tests/test_models.py
58
+ tests/test_models_coverage.py
59
+ tests/test_procedural_memory_coverage.py
54
60
  tests/test_prompt_builder.py
55
61
  tests/test_session_manager.py
56
62
  tests/test_session_manager_advanced.py
@@ -10,7 +10,7 @@ tiktoken>=0.9.0
10
10
  [dev]
11
11
  pytest>=7.0.0
12
12
  pytest-cov>=4.0.0
13
- pytest-asyncio>=0.21.0
13
+ pytest-asyncio>=1.0.0
14
14
  black>=23.0.0
15
15
  isort>=5.12.0
16
16
  mypy>=1.0.0