sycommon-python-lib 0.2.5a6__tar.gz → 0.2.5a8__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.
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/PKG-INFO +1 -1
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/pyproject.toml +1 -1
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/mcp/tool_loader.py +4 -17
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/auth/wecom_ldap_service.py +61 -18
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/llm/struct_token.py +26 -24
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/README.md +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/setup.cfg +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/cli.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/core/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/core/console.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/core/models.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/core/project.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/core/utils.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/api/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/api/query.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/client/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/db/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/db/service.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/model/parse.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/tools/mq.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/.env.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/.gitignore.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/Dockerfile.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/app.yaml.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/client/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/model/file_info.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/requirements.txt.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/cli/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/cli/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/cli/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/cli/commands/hello.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/cli/pyproject.toml.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/web/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/web/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/web/api/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/web/api/echo.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/web/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/web/client/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/web/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/web/tools/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/web/tools/mq.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/nexus/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/__main__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/agents/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/agents/factory.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/agents/prompts.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/browser.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/capabilities/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/capabilities/console.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/capabilities/dom.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/capabilities/network.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/capabilities/page_errors.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/capabilities/performance.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/capabilities/screenshot.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/client.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/protocol.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/repl.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cli.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/commands/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/commands/cdp_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/commands/chat_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/commands/create_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/commands/evaluate_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/commands/init_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/commands/memory_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/commands/resume_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/commands/rollback_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/commands/run_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/core/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/core/backend.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/core/config.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/core/display.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/core/git_integration.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/core/llm.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/core/state.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/evaluate/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/evaluate/api_evaluator.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/memory/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/memory/compressor.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/memory/full.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/memory/hot.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/memory/manager.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/memory/warm.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/mode/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/mode/create.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/mode/optimize.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/models/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/models/config_models.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/baseline_tests.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/checkpoint.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/convergence.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/diagnosis.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/engine.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/environment.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/experience.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/harness_prompts.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/history.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/optimization_logger.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/pre_validation.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/reward.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/strategy_bandit.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/strategy_generator.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/strategy_prompts.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/skills/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/agent_manager.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/chat_events.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/deep_agent.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/mcp/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/mcp/models.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/multi_agent_team.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/sandbox/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/sandbox/file_ops.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/sandbox/http_sandbox_backend.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/sandbox/minio_sync.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/sandbox/session.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/summarization_utils.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/auth/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/auth/ldap_service.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/auth/oa_cache.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/auth/oa_crypto.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/auth/oa_service.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/config/Config.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/config/DatabaseConfig.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/config/ElasticsearchConfig.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/config/EmbeddingConfig.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/config/LLMConfig.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/config/LangfuseConfig.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/config/MQConfig.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/config/PgConfig.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/config/RedisConfig.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/config/RerankerConfig.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/config/SentryConfig.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/config/XxlJobConfig.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/config/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/database/async_base_db_service.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/database/async_database_service.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/database/base_db_service.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/database/database_service.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/database/elasticsearch_service.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/database/pg_checkpoint_service.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/database/redis_service.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/database/token_usage_db_service.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/health/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/health/health_check.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/health/metrics.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/health/ping.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/heartbeat_process/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/llm/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/llm/embedding.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/llm/get_llm.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/llm/llm_logger.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/llm/llm_tokens.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/llm/output_fixing_runnable.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/llm/sy_langfuse.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/llm/token_usage_es_service.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/llm/usage_token.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/logging/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/logging/async_sql_logger.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/logging/kafka_log.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/logging/logger_levels.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/logging/logger_wrapper.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/logging/process_logger.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/logging/sql_logger.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/middleware/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/middleware/background_execution.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/middleware/context.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/middleware/cors.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/middleware/docs.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/middleware/exception.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/middleware/middleware.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/middleware/monitor_memory.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/middleware/mq.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/middleware/sandbox.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/middleware/timeout.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/middleware/token_tracking.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/middleware/tool_result_truncation.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/middleware/traceid.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/models/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/models/base_http.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/models/log.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/models/mqlistener_config.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/models/mqmsg_model.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/models/mqsend_config.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/models/sandbox.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/models/sso_user.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/models/token_usage.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/models/token_usage_mysql.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/models/xxljob_handler_config.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/notice/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/notice/uvicorn_monitor.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/notice/wecom_message.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/sentry/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/sentry/sy_sentry.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/services.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/sse/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/sse/event.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/sse/sse.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/synacos/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/synacos/example.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/synacos/example2.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/synacos/feign.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/synacos/feign_client.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/synacos/nacos_client_base.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/synacos/nacos_config_manager.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/synacos/nacos_service.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/synacos/nacos_service_registration.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/synacos/param.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tests/deep_agent_server.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tests/test_deep_agent.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tests/test_email.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tests/test_minimax_reasoning.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tests/test_mq.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tests/test_oa_login.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tests/test_real_summarization.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tests/test_summarization_config.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tests/test_summarization_real.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tools/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tools/async_utils.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tools/docs.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tools/env.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tools/merge_headers.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tools/snowflake.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tools/syemail.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/tools/timing.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/xxljob/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/xxljob/xxljob_service.py +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
- {sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/tests/test_sycli.py +0 -0
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/agent/mcp/tool_loader.py
RENAMED
|
@@ -73,7 +73,7 @@ def wrap_tool_with_error_handler(
|
|
|
73
73
|
|
|
74
74
|
|
|
75
75
|
def _make_user_id_interceptor(user_id: str):
|
|
76
|
-
"""创建 MCP 工具调用拦截器,注入 X-User-Id
|
|
76
|
+
"""创建 MCP 工具调用拦截器,注入 X-User-Id header"""
|
|
77
77
|
from langchain_mcp_adapters.interceptors import MCPToolCallRequest, MCPToolCallResult
|
|
78
78
|
from typing import Callable, Awaitable
|
|
79
79
|
|
|
@@ -83,16 +83,6 @@ def _make_user_id_interceptor(user_id: str):
|
|
|
83
83
|
) -> MCPToolCallResult:
|
|
84
84
|
headers = dict(request.headers or {})
|
|
85
85
|
headers["X-User-Id"] = user_id
|
|
86
|
-
|
|
87
|
-
# 自动获取 OA session_id 注入 header
|
|
88
|
-
try:
|
|
89
|
-
from sycommon.auth.oa_cache import oa_login_with_cache
|
|
90
|
-
success, _, session_id = await oa_login_with_cache(user_id)
|
|
91
|
-
if success and session_id:
|
|
92
|
-
headers["X-OA-Session-Id"] = session_id
|
|
93
|
-
except Exception:
|
|
94
|
-
pass
|
|
95
|
-
|
|
96
86
|
request = request.override(headers=headers)
|
|
97
87
|
return await handler(request)
|
|
98
88
|
|
|
@@ -132,7 +122,6 @@ async def load_mcp_tools(
|
|
|
132
122
|
for config in enabled_configs:
|
|
133
123
|
try:
|
|
134
124
|
from langchain_mcp_adapters.client import MultiServerMCPClient
|
|
135
|
-
from langchain_mcp_adapters.tools import load_mcp_tools as _load_tools
|
|
136
125
|
|
|
137
126
|
key = sanitize_name(config.name)
|
|
138
127
|
client_config = {
|
|
@@ -144,18 +133,16 @@ async def load_mcp_tools(
|
|
|
144
133
|
}
|
|
145
134
|
|
|
146
135
|
client = MultiServerMCPClient(client_config)
|
|
147
|
-
session = await client.session_for(key)
|
|
148
|
-
await session.initialize()
|
|
149
136
|
|
|
150
|
-
|
|
151
|
-
|
|
137
|
+
async with client.session(key) as session:
|
|
138
|
+
from langchain_mcp_adapters.tools import _list_all_tools
|
|
139
|
+
raw_tools = await _list_all_tools(session)
|
|
152
140
|
|
|
153
141
|
original_names = []
|
|
154
142
|
for tool in raw_tools:
|
|
155
143
|
original_name = tool.name
|
|
156
144
|
original_names.append(original_name)
|
|
157
145
|
|
|
158
|
-
# 使用 convert_mcp_tool_to_langchain_tool 带 interceptors
|
|
159
146
|
from langchain_mcp_adapters.tools import convert_mcp_tool_to_langchain_tool
|
|
160
147
|
lc_tool = convert_mcp_tool_to_langchain_tool(
|
|
161
148
|
session,
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/auth/wecom_ldap_service.py
RENAMED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
通过企微 userid 关联 LDAP 域账号,获取邮箱、部门、职位等完整信息。
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
关联策略:中文名 → 英文名+中文姓 → 英文名前缀,匹配率约 98%。
|
|
7
7
|
|
|
8
8
|
使用示例::
|
|
9
9
|
|
|
@@ -87,18 +87,21 @@ class WeComLDAPUser(BaseModel):
|
|
|
87
87
|
|
|
88
88
|
|
|
89
89
|
class _LDAPIndex:
|
|
90
|
-
"""LDAP 用户索引(按 cn
|
|
90
|
+
"""LDAP 用户索引(按 cn、英文名+姓拼音、sAMAccountName 前缀建索引)"""
|
|
91
91
|
|
|
92
92
|
def __init__(self):
|
|
93
93
|
# cn(中文名) -> LDAPFullUser
|
|
94
94
|
self.by_cn: Dict[str, LDAPFullUser] = {}
|
|
95
|
-
# sAMAccountName 前缀(小写) -> [
|
|
96
|
-
self.by_sam_prefix: Dict[str, List[
|
|
95
|
+
# sAMAccountName 前缀(小写) -> [LDAPFullUser]
|
|
96
|
+
self.by_sam_prefix: Dict[str, List[LDAPFullUser]] = defaultdict(list)
|
|
97
|
+
# "en_prefix.sn_pinyin" -> [LDAPFullUser]
|
|
98
|
+
self.by_en_sn: Dict[str, List[LDAPFullUser]] = defaultdict(list)
|
|
97
99
|
|
|
98
100
|
def build(self, users: List[dict]):
|
|
99
101
|
"""从 LDAP 查询结果构建索引"""
|
|
100
102
|
self.by_cn.clear()
|
|
101
103
|
self.by_sam_prefix.clear()
|
|
104
|
+
self.by_en_sn.clear()
|
|
102
105
|
|
|
103
106
|
for u in users:
|
|
104
107
|
cn = u.get("cn", "").strip()
|
|
@@ -126,14 +129,31 @@ class _LDAPIndex:
|
|
|
126
129
|
|
|
127
130
|
# sAMAccountName 如 "sussie.xia" -> 前缀 "sussie"
|
|
128
131
|
prefix = sam.split(".")[0].lower()
|
|
129
|
-
self.by_sam_prefix[prefix].append(
|
|
132
|
+
self.by_sam_prefix[prefix].append(ldap_user)
|
|
130
133
|
|
|
131
|
-
|
|
134
|
+
# 英文名+姓(拼音)索引: "sussie.xiao"
|
|
135
|
+
sn = u.get("sn", "").strip()
|
|
136
|
+
if prefix and sn:
|
|
137
|
+
sn_pinyin = self._to_pinyin(sn)
|
|
138
|
+
if sn_pinyin:
|
|
139
|
+
self.by_en_sn[f"{prefix}.{sn_pinyin}"].append(ldap_user)
|
|
140
|
+
|
|
141
|
+
@staticmethod
|
|
142
|
+
def _to_pinyin(text: str) -> str:
|
|
143
|
+
"""中文转拼音(小写)"""
|
|
144
|
+
try:
|
|
145
|
+
from pypinyin import pinyin, Style
|
|
146
|
+
return "".join(p[0] for p in pinyin(text, style=Style.NORMAL)).lower()
|
|
147
|
+
except Exception:
|
|
148
|
+
return ""
|
|
149
|
+
|
|
150
|
+
def lookup(self, chinese_name: str, english_name: str = "", surname: str = "", position: str = "") -> tuple:
|
|
132
151
|
"""查找匹配的 LDAP 用户
|
|
133
152
|
|
|
134
153
|
Args:
|
|
135
|
-
chinese_name:
|
|
136
|
-
english_name:
|
|
154
|
+
chinese_name: 中文名(企微 name)
|
|
155
|
+
english_name: 英文名(企微 extattr.英文名)
|
|
156
|
+
surname: 中文姓(取 chinese_name 首字)
|
|
137
157
|
|
|
138
158
|
Returns:
|
|
139
159
|
(LDAPFullUser | None, match_method | None)
|
|
@@ -142,16 +162,29 @@ class _LDAPIndex:
|
|
|
142
162
|
if chinese_name in self.by_cn:
|
|
143
163
|
return self.by_cn[chinese_name], "chinese_name"
|
|
144
164
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
165
|
+
en_first = english_name.lower().split()[0] if english_name else ""
|
|
166
|
+
|
|
167
|
+
# 第二优先级:英文名 + 中文姓拼音
|
|
168
|
+
if en_first and surname:
|
|
169
|
+
surname_pinyin = self._to_pinyin(surname)
|
|
170
|
+
if surname_pinyin:
|
|
171
|
+
key = f"{en_first}.{surname_pinyin}"
|
|
172
|
+
candidates = self.by_en_sn.get(key, [])
|
|
173
|
+
if len(candidates) == 1:
|
|
174
|
+
return candidates[0], "english_name_surname"
|
|
175
|
+
elif len(candidates) > 1:
|
|
176
|
+
pass
|
|
177
|
+
|
|
178
|
+
# 第三优先级:英文名前缀匹配(唯一)
|
|
179
|
+
if en_first:
|
|
180
|
+
candidates = self.by_sam_prefix.get(en_first, [])
|
|
149
181
|
if len(candidates) == 1:
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
182
|
+
return candidates[0], "english_name"
|
|
183
|
+
elif len(candidates) > 1 and position:
|
|
184
|
+
# 多候选人时用职位消歧
|
|
185
|
+
pos_hits = [c for c in candidates if c.title and c.title in position]
|
|
186
|
+
if len(pos_hits) == 1:
|
|
187
|
+
return pos_hits[0], "english_name_position"
|
|
155
188
|
|
|
156
189
|
return None, None
|
|
157
190
|
|
|
@@ -297,6 +330,7 @@ class WeComLDAPService(metaclass=SingletonMeta):
|
|
|
297
330
|
attributes=[
|
|
298
331
|
"cn",
|
|
299
332
|
"sAMAccountName",
|
|
333
|
+
"sn",
|
|
300
334
|
"mail",
|
|
301
335
|
"department",
|
|
302
336
|
"title",
|
|
@@ -320,6 +354,7 @@ class WeComLDAPService(metaclass=SingletonMeta):
|
|
|
320
354
|
{
|
|
321
355
|
"cn": cn,
|
|
322
356
|
"sAMAccountName": sam,
|
|
357
|
+
"sn": str(entry.sn).strip() if entry.sn else "",
|
|
323
358
|
"mail": str(entry.mail).strip()
|
|
324
359
|
if entry.mail
|
|
325
360
|
else "",
|
|
@@ -389,7 +424,15 @@ class WeComLDAPService(metaclass=SingletonMeta):
|
|
|
389
424
|
english_name = self._parse_wecom_english_name(user_data)
|
|
390
425
|
chinese_name = user_data.get("name", "")
|
|
391
426
|
|
|
392
|
-
|
|
427
|
+
# 提取中文姓(取中文名首字)
|
|
428
|
+
import re
|
|
429
|
+
surname = ""
|
|
430
|
+
if chinese_name and re.search(r'[一-鿿]', chinese_name[0]):
|
|
431
|
+
surname = chinese_name[0]
|
|
432
|
+
|
|
433
|
+
ldap_user, match_method = ldap_index.lookup(
|
|
434
|
+
chinese_name, english_name, surname, user_data.get("position", "")
|
|
435
|
+
)
|
|
393
436
|
|
|
394
437
|
return WeComLDAPUser(
|
|
395
438
|
wecom_userid=user_data.get("userid", ""),
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycommon/llm/struct_token.py
RENAMED
|
@@ -10,10 +10,33 @@ from sycommon.llm.llm_logger import LLMLogger
|
|
|
10
10
|
from langfuse import Langfuse, LangfuseSpan, propagate_attributes
|
|
11
11
|
from typing import Dict, List, Optional, Any
|
|
12
12
|
import tiktoken
|
|
13
|
-
import
|
|
13
|
+
import os
|
|
14
14
|
import warnings
|
|
15
15
|
warnings.filterwarnings("ignore", message="Pydantic serializer warnings")
|
|
16
16
|
|
|
17
|
+
# 模块级 encoding 单例,所有实例共享,只初始化一次
|
|
18
|
+
_cached_encoding = None
|
|
19
|
+
_encoding_initialized = False
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _get_shared_encoding(model_name: str):
|
|
23
|
+
"""获取模块级共享的 tiktoken encoding,只初始化一次"""
|
|
24
|
+
global _cached_encoding, _encoding_initialized
|
|
25
|
+
if _encoding_initialized:
|
|
26
|
+
return _cached_encoding
|
|
27
|
+
|
|
28
|
+
_encoding_initialized = True
|
|
29
|
+
try:
|
|
30
|
+
_cached_encoding = tiktoken.encoding_for_model(model_name)
|
|
31
|
+
except KeyError:
|
|
32
|
+
try:
|
|
33
|
+
_cached_encoding = tiktoken.get_encoding("cl100k_base")
|
|
34
|
+
except Exception as e:
|
|
35
|
+
SYLogger.error(f"tiktoken 初始化失败,将使用字符数近似估算: {e}")
|
|
36
|
+
except Exception as e:
|
|
37
|
+
SYLogger.error(f"tiktoken 初始化失败,将使用字符数近似估算: {e}")
|
|
38
|
+
return _cached_encoding
|
|
39
|
+
|
|
17
40
|
|
|
18
41
|
class StructuredRunnableWithToken(Runnable):
|
|
19
42
|
"""
|
|
@@ -49,29 +72,8 @@ class StructuredRunnableWithToken(Runnable):
|
|
|
49
72
|
self.max_compression_attempts = max_compression_attempts # 最大压缩尝试次数
|
|
50
73
|
self.is_native_mode = is_native_mode # 是否为原生模式
|
|
51
74
|
|
|
52
|
-
# 初始化 Tokenizer
|
|
53
|
-
self.encoding =
|
|
54
|
-
|
|
55
|
-
def _init_encoding():
|
|
56
|
-
nonlocal encoding_result
|
|
57
|
-
try:
|
|
58
|
-
encoding_result = tiktoken.encoding_for_model(model_name)
|
|
59
|
-
except KeyError:
|
|
60
|
-
try:
|
|
61
|
-
encoding_result = tiktoken.get_encoding("cl100k_base")
|
|
62
|
-
except Exception as e:
|
|
63
|
-
SYLogger.error(f"tiktoken get_encoding 失败: {e}")
|
|
64
|
-
except Exception as e:
|
|
65
|
-
SYLogger.error(f"tiktoken encoding_for_model 失败: {e}")
|
|
66
|
-
|
|
67
|
-
encoding_result = None
|
|
68
|
-
t = threading.Thread(target=_init_encoding, daemon=True)
|
|
69
|
-
t.start()
|
|
70
|
-
t.join(timeout=5)
|
|
71
|
-
if t.is_alive():
|
|
72
|
-
SYLogger.error("tiktoken 初始化超时(5s),将使用字符数近似估算")
|
|
73
|
-
elif encoding_result is not None:
|
|
74
|
-
self.encoding = encoding_result
|
|
75
|
+
# 初始化 Tokenizer(模块级单例,只初始化一次)
|
|
76
|
+
self.encoding = _get_shared_encoding(model_name)
|
|
75
77
|
|
|
76
78
|
def _encode_text(self, text: str) -> int:
|
|
77
79
|
"""计算文本的 token 数量,encoding 不可用时按字符数近似估算"""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/agent/app.py.tpl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/.env.tpl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/README.md.tpl
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/app.py.tpl
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/base/app.yaml.tpl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/cli/README.md.tpl
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/cli/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/cli/app.py.tpl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/web/README.md.tpl
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/web/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/command/templates/web/app.py.tpl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/capabilities/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/capabilities/console.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/capabilities/dom.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/capabilities/network.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/cdp/capabilities/screenshot.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/commands/create_cmd.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/commands/evaluate_cmd.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/commands/memory_cmd.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/commands/resume_cmd.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/commands/rollback_cmd.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/core/git_integration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/evaluate/api_evaluator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/models/config_models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a6 → sycommon_python_lib-0.2.5a8}/src/sycli/rl/optimization_logger.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|