empathy-framework 4.9.0__py3-none-any.whl → 5.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. {empathy_framework-4.9.0.dist-info → empathy_framework-5.0.0.dist-info}/METADATA +64 -25
  2. {empathy_framework-4.9.0.dist-info → empathy_framework-5.0.0.dist-info}/RECORD +47 -26
  3. empathy_os/__init__.py +2 -2
  4. empathy_os/cache/hash_only.py +6 -3
  5. empathy_os/cache/hybrid.py +6 -3
  6. empathy_os/cli_legacy.py +27 -1
  7. empathy_os/cli_minimal.py +512 -15
  8. empathy_os/cli_router.py +145 -113
  9. empathy_os/cli_unified.py +25 -0
  10. empathy_os/dashboard/__init__.py +42 -0
  11. empathy_os/dashboard/app.py +512 -0
  12. empathy_os/dashboard/simple_server.py +403 -0
  13. empathy_os/dashboard/standalone_server.py +536 -0
  14. empathy_os/memory/__init__.py +19 -5
  15. empathy_os/memory/short_term.py +4 -70
  16. empathy_os/memory/types.py +2 -2
  17. empathy_os/models/__init__.py +3 -0
  18. empathy_os/models/adaptive_routing.py +437 -0
  19. empathy_os/models/registry.py +4 -4
  20. empathy_os/socratic/ab_testing.py +1 -1
  21. empathy_os/telemetry/__init__.py +29 -1
  22. empathy_os/telemetry/agent_coordination.py +478 -0
  23. empathy_os/telemetry/agent_tracking.py +350 -0
  24. empathy_os/telemetry/approval_gates.py +563 -0
  25. empathy_os/telemetry/event_streaming.py +405 -0
  26. empathy_os/telemetry/feedback_loop.py +557 -0
  27. empathy_os/vscode_bridge 2.py +173 -0
  28. empathy_os/workflows/__init__.py +4 -4
  29. empathy_os/workflows/base.py +495 -43
  30. empathy_os/workflows/history.py +3 -5
  31. empathy_os/workflows/output.py +410 -0
  32. empathy_os/workflows/progress.py +324 -22
  33. empathy_os/workflows/progressive/README 2.md +454 -0
  34. empathy_os/workflows/progressive/__init__ 2.py +92 -0
  35. empathy_os/workflows/progressive/cli 2.py +242 -0
  36. empathy_os/workflows/progressive/core 2.py +488 -0
  37. empathy_os/workflows/progressive/orchestrator 2.py +701 -0
  38. empathy_os/workflows/progressive/reports 2.py +528 -0
  39. empathy_os/workflows/progressive/telemetry 2.py +280 -0
  40. empathy_os/workflows/progressive/test_gen 2.py +514 -0
  41. empathy_os/workflows/progressive/workflow 2.py +628 -0
  42. empathy_os/workflows/routing.py +5 -0
  43. empathy_os/workflows/security_audit.py +189 -0
  44. {empathy_framework-4.9.0.dist-info → empathy_framework-5.0.0.dist-info}/WHEEL +0 -0
  45. {empathy_framework-4.9.0.dist-info → empathy_framework-5.0.0.dist-info}/entry_points.txt +0 -0
  46. {empathy_framework-4.9.0.dist-info → empathy_framework-5.0.0.dist-info}/licenses/LICENSE +0 -0
  47. {empathy_framework-4.9.0.dist-info → empathy_framework-5.0.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: empathy-framework
3
- Version: 4.9.0
3
+ Version: 5.0.0
4
4
  Summary: AI collaboration framework with real LLM agent execution, AskUserQuestion tool integration, Socratic agent generation, progressive tier escalation (70-85% cost savings), meta-orchestration, dynamic agent composition (6 patterns), intelligent caching (85% hit rate), semantic workflow discovery, visual workflow editor, MCP integration for Claude Code, and multi-agent orchestration.
5
5
  Author-email: Patrick Roebuck <admin@smartaimemory.com>
6
6
  Maintainer-email: Smart-AI-Memory <admin@smartaimemory.com>
@@ -362,11 +362,11 @@ Dynamic: license-file
362
362
 
363
363
  Run code review, debugging, testing, and release workflows from your terminal or Claude Code. Smart tier routing saves 34-86% on LLM costs.
364
364
 
365
- [![PyPI](https://img.shields.io/pypi/v/empathy-framework)](https://pypi.org/project/empathy-framework/)
366
- [![Tests](https://img.shields.io/badge/tests-11%2C000%2B%20passing-brightgreen)](https://github.com/Smart-AI-Memory/empathy-framework/actions)
367
- [![Coverage](https://img.shields.io/badge/coverage-68%25-yellow)](https://github.com/Smart-AI-Memory/empathy-framework)
365
+ [![PyPI](https://img.shields.io/pypi/v/empathy-framework?color=blue)](https://pypi.org/project/empathy-framework/)
366
+ [![Tests](https://img.shields.io/badge/tests-7%2C168%20passing%20(99.9%25)-brightgreen)](https://github.com/Smart-AI-Memory/empathy-framework/actions)
368
367
  [![Python](https://img.shields.io/badge/python-3.10+-blue)](https://www.python.org)
369
368
  [![License](https://img.shields.io/badge/license-Fair%20Source%200.9-blue)](LICENSE)
369
+ [![Performance](https://img.shields.io/badge/performance-18x%20faster-success)](https://github.com/Smart-AI-Memory/empathy-framework/blob/main/CHANGELOG.md)
370
370
 
371
371
  ```bash
372
372
  pip install empathy-framework[developer]
@@ -392,20 +392,37 @@ pip install empathy-framework[developer]
392
392
 
393
393
  ---
394
394
 
395
- ## What's New in v4.8.0
395
+ ## What's New in v4.9.0
396
396
 
397
- **🚀 Scanner Performance Optimizations** - **3.65x faster** project scanning with parallel processing and incremental updates:
397
+ **⚡ 18x Faster Performance** - Massive performance gains through Phase 2 optimizations:
398
398
 
399
- - **Parallel Processing:** Multi-core scanning enabled by default (2x faster)
400
- - **Incremental Scanning:** Git diff-based updates (10x faster for typical changes)
401
- - **Optional Dependencies:** Skip dependency analysis for 27% speedup
399
+ - **Redis Two-Tier Caching:** 2x faster memory operations (37,000x for cached keys)
400
+ - **Generator Expressions:** 99.9% memory reduction across 27 optimizations
401
+ - **Parallel Scanning:** Multi-core processing enabled by default (2-4x faster)
402
+ - **Incremental Scanning:** Git diff-based updates (10x faster)
403
+
404
+ **🧭 Natural Language Workflows** - Use plain English instead of workflow names:
405
+
406
+ ```bash
407
+ /workflows "find security vulnerabilities" # → security-audit
408
+ /workflows "check code performance" # → perf-audit
409
+ /workflows "predict bugs" # → bug-predict
410
+ /plan "review my code" # → code-review
411
+ ```
402
412
 
403
413
  **📊 Real-World Performance:**
404
414
 
405
- - Full scan: 3,472 files in 1.8s (was 3.6s)
406
- - Incremental: 100 changed files in 0.3s (was 1.0s)
415
+ - Combined workflow: 3.59s 0.2s (**18x faster**)
416
+ - Full scan: 3,472 files in 0.98s (was 3.59s)
417
+ - Redis cached operations: 37ms → 0.001ms
418
+
419
+ **🎯 Improved Navigation:**
420
+
421
+ - Split `/workflow` into `/workflows` (automated analysis) and `/plan` (planning/review)
422
+ - Clearer hub organization with better categorization
423
+ - Natural language routing matches intent to workflow
407
424
 
408
- [See performance guide](docs/SCANNER_OPTIMIZATIONS.md) | [Examples](examples/scanner_usage.py)
425
+ [See CHANGELOG.md](CHANGELOG.md) | [Performance Docs](docs/REDIS_OPTIMIZATION_SUMMARY.md)
409
426
 
410
427
  ---
411
428
 
@@ -446,8 +463,14 @@ python -m empathy_os.models.cli provider --set anthropic
446
463
  ```bash
447
464
  /dev # Developer tools (debug, commit, PR, review)
448
465
  /testing # Run tests, coverage, benchmarks
466
+ /workflows # Automated analysis (security, bugs, perf)
467
+ /plan # Planning, TDD, code review
449
468
  /docs # Documentation generation
450
469
  /release # Release preparation
470
+
471
+ # Natural language support:
472
+ /workflows "find security issues"
473
+ /plan "review my code"
451
474
  ```
452
475
 
453
476
  **CLI:**
@@ -476,19 +499,35 @@ async with EmpathyOS() as empathy:
476
499
 
477
500
  Workflows are organized into hubs for easy discovery:
478
501
 
479
- | Hub | Command | Description |
480
- | ----------------- | ------------ | -------------------------------------------- |
481
- | **Developer** | `/dev` | Debug, commit, PR, code review, quality |
482
- | **Testing** | `/testing` | Run tests, coverage analysis, benchmarks |
483
- | **Documentation** | `/docs` | Generate and manage documentation |
484
- | **Release** | `/release` | Release prep, security scan, publishing |
485
- | **Workflow** | `/workflow` | Planning, TDD, refactoring workflows |
486
- | **Utilities** | `/utilities` | Project init, dependencies, profiling |
487
- | **Learning** | `/learning` | Pattern learning and session evaluation |
488
- | **Context** | `/context` | State management and memory |
489
- | **Agent** | `/agent` | Create and manage custom agents |
490
-
491
- **Example usage:**
502
+ | Hub | Command | Description |
503
+ | ----------------- | ------------- | -------------------------------------------- |
504
+ | **Developer** | `/dev` | Debug, commit, PR, code review, quality |
505
+ | **Testing** | `/testing` | Run tests, coverage analysis, benchmarks |
506
+ | **Documentation** | `/docs` | Generate and manage documentation |
507
+ | **Release** | `/release` | Release prep, security scan, publishing |
508
+ | **Workflows** | `/workflows` | Automated analysis (security, bugs, perf) |
509
+ | **Plan** | `/plan` | Planning, TDD, code review, refactoring |
510
+ | **Utilities** | `/utilities` | Project init, dependencies, profiling |
511
+ | **Learning** | `/learning` | Pattern learning and session evaluation |
512
+ | **Context** | `/context` | State management and memory |
513
+ | **Agent** | `/agent` | Create and manage custom agents |
514
+
515
+ **Natural Language Support:**
516
+
517
+ ```bash
518
+ # Use plain English - intelligent routing matches your intent
519
+ /workflows "find security vulnerabilities" # → security-audit
520
+ /workflows "check code performance" # → perf-audit
521
+ /workflows "predict bugs" # → bug-predict
522
+ /plan "review my code" # → code-review
523
+ /plan "help me plan this feature" # → planning
524
+
525
+ # Or use traditional workflow names
526
+ /workflows security-audit
527
+ /plan code-review
528
+ ```
529
+
530
+ **Interactive menus:**
492
531
 
493
532
  ```bash
494
533
  /dev # Show interactive menu
@@ -1,4 +1,4 @@
1
- empathy_framework-4.9.0.dist-info/licenses/LICENSE,sha256=IJ9eeI5KSrD5P7alsn7sI_6_1bDihxBA5S4Sen4jf2k,4937
1
+ empathy_framework-5.0.0.dist-info/licenses/LICENSE,sha256=IJ9eeI5KSrD5P7alsn7sI_6_1bDihxBA5S4Sen4jf2k,4937
2
2
  empathy_healthcare_plugin/__init__.py,sha256=4NioL1_86UXzkd-QNkQZUSZ8rKTQGSP0TC9VXP32kQs,295
3
3
  empathy_healthcare_plugin/monitors/__init__.py,sha256=Udp8qfZR504QAq5_eQjvtIaE7v06Yguc7nuF40KllQc,196
4
4
  empathy_healthcare_plugin/monitors/clinical_protocol_monitor.py,sha256=MWE5t8tW9HWZn_SNo-inx8-0nhdTNGhbcB8ZeDWyXa0,11648
@@ -94,14 +94,14 @@ empathy_llm_toolkit/security/secure_memdocs.py,sha256=x6won-u3tiBkv5ZPVRpSJKTs1m
94
94
  empathy_llm_toolkit/security/secure_memdocs_example.py,sha256=4UwbaM5X-c93p4_3pz6LKaeNYzfxptzbsYY_-ZuG0A0,8359
95
95
  empathy_llm_toolkit/utils/__init__.py,sha256=b2Juy_nuMJ7Ax9tck725V7i3s5shaMSfqZZbiJ2-rOc,187
96
96
  empathy_llm_toolkit/utils/tokens.py,sha256=0HwENtc1ud543NzFNeDg3ghH8tGQmNMVUw-LZ93U1YQ,7187
97
- empathy_os/__init__.py,sha256=CWBbmb2sK9MvWJURtIUW33VCeA9tIwY5R7pW4Y7Ldsg,12046
97
+ empathy_os/__init__.py,sha256=SkURwsqtmCE1Klw6z6onba1Jc2mlg-N4WD4mpploTwE,12061
98
98
  empathy_os/agent_monitoring.py,sha256=s4seLC_J4AtQ3PYWrRPO8YHM-Fbm0Q36kPEdlTHf2HI,13375
99
99
  empathy_os/cache_monitor.py,sha256=lcBqODhYY9iPaH35PWkOSgyMavdvXneHv9F57dPmjnc,11190
100
100
  empathy_os/cache_stats.py,sha256=rWJPBNFEfhuLwKYKy89D_Qa9GPIyVso2jdCKp_cdJhI,10232
101
- empathy_os/cli_legacy.py,sha256=4qAlcfoQpiPXh9GHXRw0K1-bfk0BnW2LrCoTLUjZ6t0,139456
102
- empathy_os/cli_minimal.py,sha256=mLFVTdjQPZ3WPzSGsVbgw4k6wPsMFU94rdYXGAwDexU,21754
103
- empathy_os/cli_router.py,sha256=erZADIYt4vFt_RPMV5Ao-tiJAdX4TTHSr4CQ6DA2ZBI,12569
104
- empathy_os/cli_unified.py,sha256=kPy92SVUz0-v7eDHVwehg2LhpmsvB5ykwrz9mGbKDW8,24611
101
+ empathy_os/cli_legacy.py,sha256=x5z48dIfBcUHdhkMLT2q99iVZ2o7UFXyk46P4bgfj0s,140265
102
+ empathy_os/cli_minimal.py,sha256=x_TEc1maTm_Gt-7EmlrPUiTNnhlSaOZYhFRX78qYZAs,41191
103
+ empathy_os/cli_router.py,sha256=86gc917B1hfmnv1nEfNLQU7_uyDbuu9ORSH5eofcIXE,14616
104
+ empathy_os/cli_unified.py,sha256=w80cyED93QFu3puC4qiIrrLtTmsfTi2stPsHGqroUfI,25387
105
105
  empathy_os/config.py,sha256=jsFQuXpZP_jt6UrZtfLlkBZwPUSNbnW5VVtMS5JIhbA,16276
106
106
  empathy_os/coordination.py,sha256=E2HvHxKk1xbYswtgxhnVKB6DRxfXUV5pCt-XWHOvNKM,28509
107
107
  empathy_os/core.py,sha256=JSqejXdUIced5FZpoOr2_DF5BaRfWnXlZkuDDQkg5Cw,53968
@@ -122,6 +122,7 @@ empathy_os/redis_memory.py,sha256=MYhW_M41AoWhxxh8YggWUHxZaUoQZ7XxqeBB2qDqyww,23
122
122
  empathy_os/templates.py,sha256=B5fzlc6wU3lwdaKK4ZUdytqOYrM6TEnFteZ0nCSp_EI,17220
123
123
  empathy_os/tier_recommender.py,sha256=oYOKhnrTG2sqYsDvojQyaKuyC4ac_weSz4Xv0j0TuP8,14305
124
124
  empathy_os/trust_building.py,sha256=z2ZsQWK5QjX6d7pxFWrFD54J1keUguTog6YztZJVPKI,19180
125
+ empathy_os/vscode_bridge 2.py,sha256=SgFmWFCoAoPww-g2hsRC2VeqAMTqUmXXxJ3hglykxP4,4967
125
126
  empathy_os/vscode_bridge.py,sha256=SgFmWFCoAoPww-g2hsRC2VeqAMTqUmXXxJ3hglykxP4,4967
126
127
  empathy_os/workflow_commands.py,sha256=tps6norBiw7Q2hV0qdqwdX4B7Kedt_FwYBQWhc2oEYg,25482
127
128
  empathy_os/adaptive/__init__.py,sha256=07m_Gsdxmm9mDBjJRFz7a8wZK-Tdd2QFRQOUw6yCc1w,342
@@ -129,8 +130,8 @@ empathy_os/adaptive/task_complexity.py,sha256=XhQgubrTxqV2V6CBD4kKZ_0kPCjchzg94H
129
130
  empathy_os/cache/__init__.py,sha256=nKHyWnQmyBU6f24UOq5iZ4ULUFys5Dhl6dFZlU0jlHU,3232
130
131
  empathy_os/cache/base.py,sha256=1waj2OZ_5gRhwYhSfsSfgQs1N_ftZcAq6UAV9RctSek,3968
131
132
  empathy_os/cache/dependency_manager.py,sha256=lObktgRVeN-Z1ajGpAPuTvW1bOlLaHBNvoeGoCdOhAo,7747
132
- empathy_os/cache/hash_only.py,sha256=CdyZvl81lbargRyVhWVBJB4VDUNay4KIf3knUmqvZCo,7427
133
- empathy_os/cache/hybrid.py,sha256=Qjjqr6V3EPQADinVDTFf8sAuiE4RI6DEyBWMjb7KOrc,15256
133
+ empathy_os/cache/hash_only.py,sha256=N9fJw-IGOzgfDOuKe15e3AzLrxkjDBbwDXEgR1DYXAo,7492
134
+ empathy_os/cache/hybrid.py,sha256=urBT47GOmvc0ez1a-h92p9_ul9aTDsvmSwnTDBIOJbw,15336
134
135
  empathy_os/cache/storage.py,sha256=eTXP8rZRlalNRlsZxsaolMg81JNfjDrD129e-p9Wjk0,7792
135
136
  empathy_os/cli/__init__.py,sha256=7PFURX1O4_sX14kWvNrnAV1Ndeixrx_nI8IN8eLQpQs,4951
136
137
  empathy_os/cli/__main__.py,sha256=md0GsFpiTgifmJ0MJQ_E6Daq9JCxyCUgOUJRdJ69Ews,215
@@ -170,6 +171,10 @@ empathy_os/cli/utils/data.py,sha256=gu2ZhF3b3rjQK1Te8UIJ0PqZkaIHiQsuO4VtPThqDUg,
170
171
  empathy_os/cli/utils/helpers.py,sha256=jbGhpkIlgaviZ_7DNaEUnu3ZgkXrOh0KrUPVa2sxWUg,2220
171
172
  empathy_os/config/__init__.py,sha256=veciTnRf0kNm9L8wxF95-FBnNjXdxucNnbnLlERpO2Y,1695
172
173
  empathy_os/config/xml_config.py,sha256=iXFJvGPlSoxRdARlxx-7YIdxb8eRiFHVRWM6-HwOWBc,8899
174
+ empathy_os/dashboard/__init__.py,sha256=CwGq_IQS5H3OjY0NabAihvxohns8vsw0jmEnq3p1UGg,1413
175
+ empathy_os/dashboard/app.py,sha256=taCHkhSAsnna_joClhLTai5ayevYbh67nJDpOYOU-EA,16147
176
+ empathy_os/dashboard/simple_server.py,sha256=L2uSgCJtiHS7TZSu-iEXpImNTAW4w3zNVg8YNsj5vPs,14667
177
+ empathy_os/dashboard/standalone_server.py,sha256=c6csNtVFTeQNgaCTYC7EhC9A5AyQab8wbFPHy07rZdE,20331
173
178
  empathy_os/hot_reload/README.md,sha256=FnQWSX-dfTIJvXHjjiWRWBjMK2DR-eyOfDHJlGIzm0o,10406
174
179
  empathy_os/hot_reload/__init__.py,sha256=Aos2tLSKRzOLr5zRomLyzrz6qDRd1_PlinI3vrJcCTo,1642
175
180
  empathy_os/hot_reload/config.py,sha256=Lk_5bShouV-Z_atOvgcoPas4wwXwfHTKK9eSC60C9Uk,2290
@@ -177,7 +182,7 @@ empathy_os/hot_reload/integration.py,sha256=UX5XnxRyPTlhHbwToGd8nwlOPBo6KHA6T5gM
177
182
  empathy_os/hot_reload/reloader.py,sha256=xjecGV0IWjaP5yPAyTbFSRTiEmq-hqap3bOJeAnxJEE,9509
178
183
  empathy_os/hot_reload/watcher.py,sha256=BZX-Iq9ktOHQTHfEqe1ybRK_BJHPeR_965bzKd1Kwm8,5268
179
184
  empathy_os/hot_reload/websocket.py,sha256=jH4I1nHQqXV2ixkjcG42YVB7SCp5h3WR-tujbrFP25s,5092
180
- empathy_os/memory/__init__.py,sha256=HCTeBKVd9j1gs3Zh0cGTFZYA5oDtFIaxMntfuiYlOeM,5689
185
+ empathy_os/memory/__init__.py,sha256=obQLmHNsNI027mggpCp4SCYT5_QRy20JiXaomk3j2zo,6081
181
186
  empathy_os/memory/claude_memory.py,sha256=2bRUHdmATH2L3yh7wZmlOFdm7w1mYk5p0G2f37M7bA4,14996
182
187
  empathy_os/memory/config.py,sha256=EoBBZLgyY5sHT3kLeyWjyI4b6hRA3Xiaoo3xdMLLGos,6380
183
188
  empathy_os/memory/control_panel.py,sha256=ylU2RODUIXQSMhBLcqPI5KkOAOpcmuABVcd2AleeSaw,47334
@@ -188,9 +193,9 @@ empathy_os/memory/graph.py,sha256=JSAag-p5vCh4jznjUTUHdMNfyOAHjtOUDix6eLUeIcA,19
188
193
  empathy_os/memory/long_term.py,sha256=vtwtjVRPDvpTpU-jKrM0dkA8WJjpswGUFFMs2-wyxMY,51099
189
194
  empathy_os/memory/nodes.py,sha256=h71kV3x2ALzuTOdrB7LQswZWai71HzGHKlFBzf7TwrI,4795
190
195
  empathy_os/memory/redis_bootstrap.py,sha256=G71loEE2LTcn0BCp_mN96Bk37ygFz1ImORiLoEmg9jA,16508
191
- empathy_os/memory/short_term.py,sha256=D6V4PtTUVKB-m86bIfrMjHHImqTXXwCQm5iYkFIkO1I,71899
196
+ empathy_os/memory/short_term.py,sha256=MF1HqY5r9_2ffpcxstSx3s4ql-kKRP5xmOgVXU_PySg,70029
192
197
  empathy_os/memory/summary_index.py,sha256=7m_m2xH3KMBJWRJFvk3hAws_tgPD4VCfFBxwAbV9fCo,20777
193
- empathy_os/memory/types.py,sha256=aRfPWXxfvCdCiJSAos2hx6NMCgKblXx1ZvCuVyMxPuE,14200
198
+ empathy_os/memory/types.py,sha256=ISzAhjWxqtTZiMdhc5DAziHxgtVlEP6mm79Y9HzNru4,14286
194
199
  empathy_os/memory/unified.py,sha256=xLUr7LHvFs7hNBvrsUdJRvGYkNbp6j_bPuL1A7IhrjY,47173
195
200
  empathy_os/memory/security/__init__.py,sha256=f_t-pFO1aHOE8uFJ0icGaCt2xCvWx-bFxBcv9U3Cu3Q,868
196
201
  empathy_os/memory/security/audit_logger.py,sha256=DP9OYdoavUN6ZlPYmidGVgFyivkQ8Y5huVP6gZYJ5bQ,34259
@@ -211,14 +216,15 @@ empathy_os/meta_workflows/template_registry.py,sha256=jEvQNZtQ4UhitBuyml1dDjQJNL
211
216
  empathy_os/meta_workflows/workflow.py,sha256=cKzaIWcVuRMRk2YoXJCMnl_4y5XUpD6b-uVStAlUqe8,36007
212
217
  empathy_os/metrics/__init__.py,sha256=b0lkly5Fz89AvvGqV6lLYx8hWlmttL1ZCPuWlHjwXxY,369
213
218
  empathy_os/metrics/prompt_metrics.py,sha256=C9N8uIynTP8XiGcwUeOoJRU48vLiS3uK0SKFmVefalo,6518
214
- empathy_os/models/__init__.py,sha256=h6nfdWNP5D871tHVdRYF-0lCmcbOu9rUWzoN0VfAlqc,3366
219
+ empathy_os/models/__init__.py,sha256=BixzbjDbweDr7siPxAKGvoFdYY5M3hxoml7pIiVSpPE,3485
215
220
  empathy_os/models/__main__.py,sha256=V7uZJ_XT__ROZsmnEI4-U7hNsOH1oqzfnWb2o6xJ0g4,296
221
+ empathy_os/models/adaptive_routing.py,sha256=lbUIb9axWwCyjYN6NpMcnSu-eccxT09xfo3guwndFr4,15224
216
222
  empathy_os/models/cli.py,sha256=kT8itN865VPeq-mKkhyclNdVXOB3hdGkMB_bv1I3gOE,22216
217
223
  empathy_os/models/empathy_executor.py,sha256=8SBygcB1NlLI89DYjAJqbumcscIwK_noArm7_yjwQ2U,12709
218
224
  empathy_os/models/executor.py,sha256=nUWPOyhLOpxOQmc2FxBwGyD2aMiuW957BqiiMHb8bDE,7479
219
225
  empathy_os/models/fallback.py,sha256=HTDZYNhbX4Mpq97-22eaXsQt59hheFLn55Kbavz0ark,25808
220
226
  empathy_os/models/provider_config.py,sha256=RMGjWqjOCSUGEtudQU7uaTHQj1RgZFR9BlKdHoWKFh4,9225
221
- empathy_os/models/registry.py,sha256=9VEid-TZS8kSAZ5YO9J-v1rb1DW7k3U2aWA-0kRphac,15580
227
+ empathy_os/models/registry.py,sha256=L9GZ5hQvCcGDcaorOTW7GX4Ndu1wnqxXtwSjQ5cT0_4,15555
222
228
  empathy_os/models/tasks.py,sha256=mvxFZiiRgUGCHYdJE316Zp8PGhN5D1Ctx9Og3jz_Zy8,10396
223
229
  empathy_os/models/telemetry.py,sha256=piNLJXmLvpWQQu6gFHcUpaLEaPmFzvzKTmO1TGEbfOU,52532
224
230
  empathy_os/models/token_estimator.py,sha256=y242dDja7oZSg0LsfxYBmsGAaoiyVQ-bNWTQXV4CI_I,13042
@@ -272,7 +278,7 @@ empathy_os/scaffolding/__init__.py,sha256=GOlcRgoLxKgFdxhjbClMRbk9N7NMfDtyC4L3OK
272
278
  empathy_os/scaffolding/__main__.py,sha256=zFLQKRd8aRrT6zWKFCE8t5lhR3P6za4eWuZm2r7gVUA,282
273
279
  empathy_os/scaffolding/cli.py,sha256=uxB50ItugsWKBKjbEgmY35x-KnwE89Smz7T4uXFzLGQ,6764
274
280
  empathy_os/socratic/__init__.py,sha256=1EF1dP18mEx7DUJejlHZpTyF2bnrCKY_JlWMtSfTE6w,5998
275
- empathy_os/socratic/ab_testing.py,sha256=r_PJwVAtKz0o5Pie_FFSHo0RzRfySfNTrerlX8ebqfw,29890
281
+ empathy_os/socratic/ab_testing.py,sha256=477OISyMCuwaeo8g0eSqIjNZ7DNH16TuSYscdMSS1mI,29960
276
282
  empathy_os/socratic/blueprint.py,sha256=EusEbiSlwpyifDUmFandFRfjBIRbYGHIDmL7CbSJJns,17280
277
283
  empathy_os/socratic/cli.py,sha256=kEYlDo95B0eZKQ1KEOFA2dLDiqMaxsxgLomBorCUYdA,21321
278
284
  empathy_os/socratic/collaboration.py,sha256=l_IG1G4YXKIOsJqLnfEv6MJxaqsNTQ21pTvsHQX-XwA,33466
@@ -290,8 +296,13 @@ empathy_os/socratic/storage.py,sha256=vSZ6QI9psdLbMP4Ltjqu1v2U0gcM6ys77wW8IKBmW3
290
296
  empathy_os/socratic/success.py,sha256=wZoHBkfkzmZwwbEMNdUj8cWw4nLCyKFtGNcWHJDoV9E,24770
291
297
  empathy_os/socratic/visual_editor.py,sha256=Nk2vJaTKtcwhHH04KTzRnAVyae6AeA03je2-y74d1kk,27912
292
298
  empathy_os/socratic/web_ui.py,sha256=Sg7pSS1043ecVt_yYpSLnv_6pvGnt6aM742fXq6uJ7M,25375
293
- empathy_os/telemetry/__init__.py,sha256=6ZFO0r4I-WIE9BByVsKwyGFsGg-UEy3-OZNofHSr54A,263
299
+ empathy_os/telemetry/__init__.py,sha256=DpNi4Eglyj7mAA4XT3GFpidnvvbVNC7Qo1Te9Q5wQ44,1295
300
+ empathy_os/telemetry/agent_coordination.py,sha256=ZqtXFq-GR5vdNO18taJYwW78jdzXeWJBMumxiPvTvHo,16072
301
+ empathy_os/telemetry/agent_tracking.py,sha256=o49YUXcVnwfMBFUDKPh2Cw2FfbhL5oIFhk5HecKHVNQ,11655
302
+ empathy_os/telemetry/approval_gates.py,sha256=WwYolC-3LKR8ippu5qna1GUtiAmZfuHFwMt9vcnxyvo,19933
294
303
  empathy_os/telemetry/cli.py,sha256=vuWuAgq8VyZBogqnD0DHI76MCg8WLVsjyTDKM1uh1sY,69474
304
+ empathy_os/telemetry/event_streaming.py,sha256=-tMNmI3eeDTDUMoE13nH9Gm6_3JVAft0Ic2kk7zl8qU,13096
305
+ empathy_os/telemetry/feedback_loop.py,sha256=PLfR4EJuXlyVhJMxKcgNwXrLy7nP8cxiLX_21WRI4Aw,19423
295
306
  empathy_os/telemetry/usage_tracker.py,sha256=Be409JSeweps3GEN3k66u_0I1594KTWoH_bRzelih9U,21184
296
307
  empathy_os/test_generator/__init__.py,sha256=lSck9qlC32AO8qoQldk3UjjTRDPdAUgIOHGa-WvzCqI,919
297
308
  empathy_os/test_generator/__main__.py,sha256=YY_HE1xg4zKZkHHAd6sSzWvJCvLFOtmpawCrNlGjWAc,345
@@ -308,8 +319,8 @@ empathy_os/workflow_patterns/core.py,sha256=H52xnB4IqMdzJpOoySk5s7XcuKNTsqAt1RKp
308
319
  empathy_os/workflow_patterns/output.py,sha256=EyioUYeXGQWllZdJXHXv2mLwl7fMwihrEb8D1SG6MxE,3090
309
320
  empathy_os/workflow_patterns/registry.py,sha256=0U_XT0hdQ5fLHuEJlrvzjaCBUyeWDA675_hEyvHxT0o,7461
310
321
  empathy_os/workflow_patterns/structural.py,sha256=v1wbBU0pCQQKdNhPXM_fuPO8ptQCbEC_8X-OKgfhrk8,9432
311
- empathy_os/workflows/__init__.py,sha256=DI_K19eeTY3TjYxRp-FMkv8714h3y2Ym8ZnPxPgxugA,19594
312
- empathy_os/workflows/base.py,sha256=1c0hxtovTZreybLpk3hXy9KtGTs0jilzlVs6MIqvrIs,80456
322
+ empathy_os/workflows/__init__.py,sha256=iaOjOtiJzfLBKey5W_v1LT6o-yjrsWLbQNglH8tDN5I,19594
323
+ empathy_os/workflows/base.py,sha256=5pKLwkg6qULFhT2QFY5nMuxUnYLq__ZGL5ogNQcmDNA,99363
313
324
  empathy_os/workflows/batch_processing.py,sha256=1DO5IQV7_LKTm0Mkcx0wZqrT_MFMQF-MKdxep64TppQ,9645
314
325
  empathy_os/workflows/bug_predict.py,sha256=x49KCzdsa6t1Em0FBpFCigOj0FB-zhydW-Pc2jTVeYE,38378
315
326
  empathy_os/workflows/builder.py,sha256=rRXevtS8v1FAGG91yhpSq6_dx5rvK_sZrF9ekdW40fE,8655
@@ -323,7 +334,7 @@ empathy_os/workflows/document_gen.py,sha256=3S8cq6x9omLxr3BFW0nFrpOSTL5xKeJT79Gg
323
334
  empathy_os/workflows/document_manager.py,sha256=mP6YFO9eKbKRLc5EuJdYYxL2tIylkNswpm3Npf1T0UM,7385
324
335
  empathy_os/workflows/document_manager_README.md,sha256=aKegxvNXTHpxQsShpSp9cdhF6rT2rhdLB5CsfsdA7YI,2157
325
336
  empathy_os/workflows/documentation_orchestrator.py,sha256=sSzTsLJPkSlHcE_o-pfM-27DVAVpwPcmxPZT71GYfeo,43013
326
- empathy_os/workflows/history.py,sha256=g_hnNkhlNxIXF5aEJp9BPb32x3Xq32r_nk3iFUe0PL4,16401
337
+ empathy_os/workflows/history.py,sha256=ZkGJBTQlgOj4VCSeehaq5C3hmJQ7L7X7sturjxNkQ2A,16469
327
338
  empathy_os/workflows/manage_docs.py,sha256=lSdQCG1y2R_9C9PLFS3dgFunRkLrRuwYskIRfGWwlcE,2127
328
339
  empathy_os/workflows/manage_docs_README.md,sha256=0v-DOpTdfXQ5qIFzVCtV2IY-QBNw5s_Yvp3YCFOnxaQ,1907
329
340
  empathy_os/workflows/manage_documentation.py,sha256=FUb4U2_OEjvzJ2mfRHkadZ6SohPWQVWXeKJCJbAz-Ac,30080
@@ -331,18 +342,19 @@ empathy_os/workflows/new_sample_workflow1.py,sha256=W59znXxsq5kgk4ZI3psC41KtzkLo
331
342
  empathy_os/workflows/new_sample_workflow1_README.md,sha256=bzLyqukgaKilG1OnCdLsc5GNWsYEagI7mn3n80BPMHY,2366
332
343
  empathy_os/workflows/orchestrated_health_check.py,sha256=sKmdvKrDhDe3bRSFVhPt7XeiexC-TKy0EK6TbVXLxQw,30492
333
344
  empathy_os/workflows/orchestrated_release_prep.py,sha256=Erp2rw-EBNOfIwyT0nJhGqpYPg2v-YL_h06aMtaALlA,20224
345
+ empathy_os/workflows/output.py,sha256=oXYQBHa0zKUbN32Bki3es0H23LBKZ4xbsBkSbHwNxjs,12743
334
346
  empathy_os/workflows/perf_audit.py,sha256=hxOB-Cjfo-FRrGstbLDt5ht-2D2sJp69Lsd8miL67Z0,29069
335
347
  empathy_os/workflows/pr_review.py,sha256=lR7TxvGjBj1fIMxYgBtgxuSvWFTGqQHTsVpL5zKLUB8,26796
336
- empathy_os/workflows/progress.py,sha256=J1ooVZp6WoaKz9IwDsoYFtfJGFTtSDU3kHewkGMjCJ8,15929
348
+ empathy_os/workflows/progress.py,sha256=DZll6H7aVWeyljnYL4m2fRiB6NPGH2tMQtAPuuC-XeM,26418
337
349
  empathy_os/workflows/progress_server.py,sha256=aLDrcBuxqN9_mfJRcRLJypuB4uRMFq9u4C_li9HioOM,10233
338
350
  empathy_os/workflows/refactor_plan.py,sha256=JmW0bMuQDHwCL77ZHC76pVFpp_UY9vke9phVVJfHyDw,25600
339
351
  empathy_os/workflows/release_prep.py,sha256=_u8-zVfKbO9aSNx97zRx682sfR6xvz4XqJJaBG-VwKs,28747
340
352
  empathy_os/workflows/release_prep_crew.py,sha256=kKZyJmvxhdovzF6Gm7b_flP88vdqiEHG-wuNzNr8Kbo,33900
341
353
  empathy_os/workflows/research_synthesis.py,sha256=7KozOOlFJADiVR1Y9LP3-DwwNG6JhRRnOLgCDGkdvSM,13967
342
- empathy_os/workflows/routing.py,sha256=az929cLQMe3v2XA-W74Xv38_9SEVmwzI570RXD840po,4857
354
+ empathy_os/workflows/routing.py,sha256=sgAmqhzaQjafH5ao4bRk5jN87pK8KUHmxLH8o8mj4wo,5022
343
355
  empathy_os/workflows/secure_release.py,sha256=cMhTT-iF_pTu9oS08QpWJBg15-Azx7AVA_ucRH_6bDY,21263
344
356
  empathy_os/workflows/security_adapters.py,sha256=UX4vRQwuSmA_V8t5sh5BGzT4RRkCk6lt6jy_VkhqJ1s,10945
345
- empathy_os/workflows/security_audit.py,sha256=iTsH9sk3qQ1UHdiLozDo6Nn2v7mcJCXdEiT_U1IFVp4,40908
357
+ empathy_os/workflows/security_audit.py,sha256=1BctYCqD2dhK_lKJ2TV9xm-RGHDgHq68T6PWQ-MAIfM,49213
346
358
  empathy_os/workflows/security_audit_phase3.py,sha256=pEoOWsUBy5PHykYhc8_xXiYyVYzbf21DPm2zTtsoNV0,11321
347
359
  empathy_os/workflows/step_config.py,sha256=CdRNAQ1SiPsuAl10s58ioyk5w8XCArecSS9AjyHWQJM,7213
348
360
  empathy_os/workflows/telemetry_mixin.py,sha256=RB-zpllkILtBqjChU_LcDIo9nAdxky-Z7LI3SquI_Ok,10091
@@ -363,14 +375,23 @@ empathy_os/workflows/keyboard_shortcuts/parsers.py,sha256=aws4HSjqBOrl-DQEOV9WeJ
363
375
  empathy_os/workflows/keyboard_shortcuts/prompts.py,sha256=gcV2F2bAMjZUrbB13lOI4ixXzXm2TNWEZ4VbPhC7ITw,9164
364
376
  empathy_os/workflows/keyboard_shortcuts/schema.py,sha256=MwvM63J9WTO6nqtwes5A04HH1dTa9XhJlD0SbFhsS5E,5806
365
377
  empathy_os/workflows/keyboard_shortcuts/workflow.py,sha256=FOEQwc8IR0PEYim05zjR-uIlw6oPZHW9jQZ8skxXp0c,17678
378
+ empathy_os/workflows/progressive/README 2.md,sha256=ngn3ZC48LW-ON5Vow90dW4UvEWeOKuU7V-W4JdudqJo,13793
366
379
  empathy_os/workflows/progressive/README.md,sha256=ngn3ZC48LW-ON5Vow90dW4UvEWeOKuU7V-W4JdudqJo,13793
380
+ empathy_os/workflows/progressive/__init__ 2.py,sha256=l18JX30ONk8H08Wm210k1W3AKat2tVzI840JqlzTBpU,2203
367
381
  empathy_os/workflows/progressive/__init__.py,sha256=qkPVjO_MtHjxVcHMr5jbU9NMZTxVCGHXVD3EkngyCso,2179
382
+ empathy_os/workflows/progressive/cli 2.py,sha256=WIFxTBUsCL2hvKKoPFxYUgfhRFjMm-HVUjRp3Y-pvXA,6305
368
383
  empathy_os/workflows/progressive/cli.py,sha256=jbl5jSk3wlbjGc00Ao06OO7aU53AZuVZVKJpJJAajX4,6122
384
+ empathy_os/workflows/progressive/core 2.py,sha256=891OttvWkFokBRVzvqVUxwpcNlgc7edlVYqGUCkn0vs,16101
369
385
  empathy_os/workflows/progressive/core.py,sha256=2FzIsy0xKyP91-aMTGfERbX5Mow5CSlfR9RUmHU4GeM,16070
386
+ empathy_os/workflows/progressive/orchestrator 2.py,sha256=FsLcoRC8jujRcOV87PyN-0jzlLvStIQQqMFisxWWg0I,26786
370
387
  empathy_os/workflows/progressive/orchestrator.py,sha256=LssTqdy4ufqhgpgS3QNZEdpeSkdg-MgpFyhW5zCJmAY,27733
388
+ empathy_os/workflows/progressive/reports 2.py,sha256=F2p3HyInGH8fT9-e_BsOVcgeQBtOugYsSyBn49yhhmc,17588
371
389
  empathy_os/workflows/progressive/reports.py,sha256=VgymV6v7owodELf_QLQTwqGOEZjaFKclKxeQ0-vow0k,17631
390
+ empathy_os/workflows/progressive/telemetry 2.py,sha256=5ZjCmeGjtfESejocWdtvnm5iCTAQv5_3NRTYmuoIbVs,9427
372
391
  empathy_os/workflows/progressive/telemetry.py,sha256=DiDTrkeKDjsWJnA57UrNfhbSG6qv9LaTP2wqHPcRscA,9398
392
+ empathy_os/workflows/progressive/test_gen 2.py,sha256=rNjjrQ8AFoXRe99X1Yk020gX6tcTxLh5pGMXXho8XRs,15802
373
393
  empathy_os/workflows/progressive/test_gen.py,sha256=wdpjx-Tlz-dWqOwHwoblbgEABr7EjTRV2faXMTad1M0,15759
394
+ empathy_os/workflows/progressive/workflow 2.py,sha256=bGXKmB9UFLfDw5c9MsW6Zw4GSbknCP-9HnaIEX36nhY,21597
374
395
  empathy_os/workflows/progressive/workflow.py,sha256=FD3MzRSMV1n_c1S8jSlLLIrcewcus6Niyml6-EMdk_E,21146
375
396
  empathy_software_plugin/SOFTWARE_PLUGIN_README.md,sha256=XjvK2TXoI5nsgEZqh4RQIAxBiGVpvbXihIu7zF8KNYk,1399
376
397
  empathy_software_plugin/__init__.py,sha256=OceDhLoQrjD0jTPlI4418608l97OT48u4SCL5yEDPQc,309
@@ -382,8 +403,8 @@ workflow_scaffolding/__init__.py,sha256=UpX5vjjjPjIaAKyIV1D4GxJzLUZy5DzdzgSkePYM
382
403
  workflow_scaffolding/__main__.py,sha256=0qspuNoadTDqyskXTlT8Sahqau-XIxN35NHTSGVW6z4,236
383
404
  workflow_scaffolding/cli.py,sha256=yLgvMsPbqI-LHt7UKXMuj-Dc0-44EqWiChldysrw1YQ,6763
384
405
  workflow_scaffolding/generator.py,sha256=9eEmm324kVzf8BCtXEML090pyke06o0U7aGATzZIaPM,8869
385
- empathy_framework-4.9.0.dist-info/METADATA,sha256=A42trSFKu7TJLqPhKxJygG4T7JfIC1iUt2WASQd4D9Q,29776
386
- empathy_framework-4.9.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
387
- empathy_framework-4.9.0.dist-info/entry_points.txt,sha256=Ox9iu_2Fx66x5fyZ5L1NJrrFFekD-BZJIudHNzKwYPs,1565
388
- empathy_framework-4.9.0.dist-info/top_level.txt,sha256=YJNBYFE2u5f2XnveFqYO-rZDcHR_aMOHAiIIf9tl72c,102
389
- empathy_framework-4.9.0.dist-info/RECORD,,
406
+ empathy_framework-5.0.0.dist-info/METADATA,sha256=pdhbUWuaAomc_ph0T65TW94dG0mmVl_j5cvZi6VwdWk,31268
407
+ empathy_framework-5.0.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
408
+ empathy_framework-5.0.0.dist-info/entry_points.txt,sha256=Ox9iu_2Fx66x5fyZ5L1NJrrFFekD-BZJIudHNzKwYPs,1565
409
+ empathy_framework-5.0.0.dist-info/top_level.txt,sha256=YJNBYFE2u5f2XnveFqYO-rZDcHR_aMOHAiIIf9tl72c,102
410
+ empathy_framework-5.0.0.dist-info/RECORD,,
empathy_os/__init__.py CHANGED
@@ -55,9 +55,9 @@ Copyright 2025 Smart AI Memory, LLC
55
55
  Licensed under Fair Source 0.9
56
56
  """
57
57
 
58
- __version__ = "4.6.5"
58
+ __version__ = "5.0.0"
59
59
  __author__ = "Patrick Roebuck"
60
- __email__ = "hello@deepstudy.ai"
60
+ __email__ = "patrick.roebuck@smartaimemory.com"
61
61
 
62
62
  # =============================================================================
63
63
  # LAZY IMPORTS - Deferred loading for faster startup
@@ -6,6 +6,7 @@ Copyright 2025 Smart-AI-Memory
6
6
  Licensed under Fair Source License 0.9
7
7
  """
8
8
 
9
+ import heapq
9
10
  import logging
10
11
  import time
11
12
  from typing import Any
@@ -202,10 +203,12 @@ class HashOnlyCache(BaseCache):
202
203
  # Evict 10% of entries (LRU)
203
204
  num_to_evict = max(1, len(self._memory_cache) // 10)
204
205
 
205
- # Sort by access time (oldest first)
206
- sorted_keys = sorted(self._access_times.items(), key=lambda x: x[1])
206
+ # Get oldest entries by access time (LRU eviction)
207
+ oldest_keys = heapq.nsmallest(
208
+ num_to_evict, self._access_times.items(), key=lambda x: x[1]
209
+ )
207
210
 
208
- for cache_key, _ in sorted_keys[:num_to_evict]:
211
+ for cache_key, _ in oldest_keys:
209
212
  self._evict_entry(cache_key)
210
213
  logger.debug(f"LRU eviction: {cache_key[:16]}...")
211
214
 
@@ -13,6 +13,7 @@ Licensed under Fair Source License 0.9
13
13
  """
14
14
 
15
15
  import hashlib
16
+ import heapq
16
17
  import logging
17
18
  import time
18
19
  from pathlib import Path
@@ -407,10 +408,12 @@ class HybridCache(BaseCache):
407
408
  # Evict 10% of entries
408
409
  num_to_evict = max(1, len(self._hash_cache) // 10)
409
410
 
410
- # Sort by access time
411
- sorted_keys = sorted(self._access_times.items(), key=lambda x: x[1])
411
+ # Get oldest entries by access time (LRU eviction)
412
+ oldest_keys = heapq.nsmallest(
413
+ num_to_evict, self._access_times.items(), key=lambda x: x[1]
414
+ )
412
415
 
413
- for cache_key, _ in sorted_keys[:num_to_evict]:
416
+ for cache_key, _ in oldest_keys:
414
417
  self._evict_entry(cache_key)
415
418
 
416
419
  logger.info(
empathy_os/cli_legacy.py CHANGED
@@ -1,5 +1,22 @@
1
- """Command-Line Interface for Empathy Framework
1
+ """Command-Line Interface for Empathy Framework (LEGACY)
2
2
 
3
+ DEPRECATED: This module is deprecated as of v5.0.0.
4
+ Use the minimal CLI instead: `empathy` (empathy_os.cli_minimal)
5
+
6
+ The minimal CLI provides:
7
+ - `empathy workflow list|info|run` - Workflow management
8
+ - `empathy telemetry show|savings|export` - Usage tracking
9
+ - `empathy provider show|set` - Provider configuration
10
+ - `empathy validate` - Configuration validation
11
+
12
+ For interactive features, use Claude Code slash commands:
13
+ - /dev, /testing, /docs, /release, /help
14
+
15
+ Migration guide: https://smartaimemory.com/framework-docs/migration/cli/
16
+
17
+ ---
18
+
19
+ Original description:
3
20
  Provides CLI commands for:
4
21
  - Running interactive REPL (empathy run)
5
22
  - Inspecting patterns, metrics, state (empathy inspect)
@@ -12,6 +29,15 @@ Copyright 2025 Smart-AI-Memory
12
29
  Licensed under Fair Source License 0.9
13
30
  """
14
31
 
32
+ import warnings
33
+
34
+ warnings.warn(
35
+ "empathy_os.cli_legacy is deprecated. Use 'empathy' (cli_minimal) instead. "
36
+ "See: https://smartaimemory.com/framework-docs/reference/cli-reference/",
37
+ DeprecationWarning,
38
+ stacklevel=2,
39
+ )
40
+
15
41
  import argparse
16
42
  import heapq
17
43
  import sys