coze-coding-utils 0.2.8a1__tar.gz → 0.2.8a2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/PKG-INFO +1 -1
  2. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/pyproject.toml +1 -1
  3. coze_coding_utils-0.2.8a2/src/coze_coding_utils/log/config.py +28 -0
  4. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/log/node_log.py +5 -2
  5. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/log/write_log.py +2 -2
  6. coze_coding_utils-0.2.8a1/src/coze_coding_utils/log/config.py +0 -10
  7. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/.gitignore +0 -0
  8. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/LICENSE +0 -0
  9. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/README.md +0 -0
  10. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/__init__.py +0 -0
  11. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/error/__init__.py +0 -0
  12. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/error/classifier.py +0 -0
  13. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/error/codes.py +0 -0
  14. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/error/exceptions.py +0 -0
  15. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/error/patterns.py +0 -0
  16. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/file/__init__.py +0 -0
  17. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/file/file.py +0 -0
  18. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/helper/__init__.py +0 -0
  19. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/helper/agent_helper.py +0 -0
  20. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/helper/graph_helper.py +0 -0
  21. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/helper/stream_runner.py +0 -0
  22. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/log/__init__.py +0 -0
  23. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/log/common.py +0 -0
  24. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/log/err_trace.py +0 -0
  25. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/log/loop_trace.py +0 -0
  26. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/log/parser.py +0 -0
  27. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/messages/__init__.py +0 -0
  28. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/messages/client.py +0 -0
  29. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/messages/server.py +0 -0
  30. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/openai/__init__.py +0 -0
  31. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/openai/converter/__init__.py +0 -0
  32. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/openai/converter/request_converter.py +0 -0
  33. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/openai/converter/response_converter.py +0 -0
  34. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/openai/handler.py +0 -0
  35. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/openai/types/__init__.py +0 -0
  36. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/openai/types/request.py +0 -0
  37. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/openai/types/response.py +0 -0
  38. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/runtime_ctx/__init__.py +0 -0
  39. {coze_coding_utils-0.2.8a1 → coze_coding_utils-0.2.8a2}/src/coze_coding_utils/runtime_ctx/context.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coze-coding-utils
3
- Version: 0.2.8a1
3
+ Version: 0.2.8a2
4
4
  Summary: Utilities for Coze coding client runtime context and helpers.
5
5
  Project-URL: Homepage, https://code.byted.org/stone/coze-coding-client
6
6
  Author: Bytedance Stone Team
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "coze-coding-utils"
7
- version = "0.2.8a1"
7
+ version = "0.2.8a2"
8
8
  description = "Utilities for Coze coding client runtime context and helpers."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -0,0 +1,28 @@
1
+ """
2
+ Application configuration
3
+ """
4
+ import os
5
+ from pathlib import Path
6
+
7
+ from coze_coding_utils.runtime_ctx.context import ENV_WORKTREE_NAME
8
+
9
+ # Logging
10
+ LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")
11
+
12
+ LOG_DIR = Path(os.getenv("COZE_LOG_DIR", "/tmp/app/work/logs/bypass"))
13
+
14
+
15
+ def resolve_log_dir() -> Path:
16
+ """Resolve the per-process log directory based on COZE_WORKTREE_NAME.
17
+
18
+ 沙箱拉起产物子进程时通过环境变量 COZE_WORKTREE_NAME 注入当前 worktree 名(主仓为空)。
19
+ LogWatcherManager 在 services/devbox/app/services/log_watcher.py 里按 worktree 隔离监听目录:
20
+ - 主仓 → LOG_DIR/
21
+ - 具名 worktree → LOG_DIR/worktrees/<name>/
22
+ SDK 这里用同样规则解析写入目录,watcher 才能拾起对应日志,按正确 worktree group 推 IDE。
23
+ """
24
+ worktree_name = os.getenv(ENV_WORKTREE_NAME, "")
25
+ if worktree_name:
26
+ return LOG_DIR / "worktrees" / worktree_name
27
+ return LOG_DIR
28
+
@@ -1,7 +1,7 @@
1
1
  import time
2
2
  import logging
3
3
  from uuid import UUID
4
- from coze_coding_utils.log.config import LOG_DIR
4
+ from coze_coding_utils.log.config import LOG_DIR, resolve_log_dir
5
5
  from coze_coding_utils.log.common import get_execute_mode, is_prod
6
6
  import uuid
7
7
  from langchain_core.callbacks import BaseCallbackHandler
@@ -26,8 +26,11 @@ class ParamInfo:
26
26
 
27
27
  # 2. 确保日志目录存在
28
28
  # 尝试使用可写目录,先尝试/app目录,如果失败则使用/tmp目录
29
+
29
30
  try:
30
- LOG_FILE = os.path.join(LOG_DIR, 'app.log')
31
+ _resolved_log_dir = resolve_log_dir()
32
+ os.makedirs(_resolved_log_dir, exist_ok=True)
33
+ LOG_FILE = os.path.join(_resolved_log_dir, 'app.log')
31
34
  # 测试写入权限
32
35
  with open(LOG_FILE, 'a') as f:
33
36
  pass
@@ -5,7 +5,7 @@ from contextvars import ContextVar
5
5
  from typing import Optional
6
6
  from pathlib import Path
7
7
  from coze_coding_utils.runtime_ctx.context import Context
8
- from coze_coding_utils.log.config import LOG_DIR
8
+ from coze_coding_utils.log.config import LOG_DIR, resolve_log_dir
9
9
 
10
10
  request_context: ContextVar[Optional[Context]] = ContextVar('request_context', default=None)
11
11
 
@@ -134,7 +134,7 @@ def setup_logging(
134
134
 
135
135
  if log_file is None:
136
136
  try:
137
- log_dir = Path(LOG_DIR)
137
+ log_dir = Path(resolve_log_dir())
138
138
  log_dir.mkdir(parents=True, exist_ok=True)
139
139
  log_file = str(log_dir / 'app.log')
140
140
  except Exception as e:
@@ -1,10 +0,0 @@
1
- """
2
- Application configuration
3
- """
4
- import os
5
- from pathlib import Path
6
-
7
- # Logging
8
- LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")
9
-
10
- LOG_DIR = Path(os.getenv("COZE_LOG_DIR", "/tmp/app/work/logs/bypass"))