claude-code-workflow 6.3.13 → 6.3.15
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.
- package/.claude/agents/issue-plan-agent.md +57 -103
- package/.claude/agents/issue-queue-agent.md +69 -120
- package/.claude/commands/issue/new.md +217 -473
- package/.claude/commands/issue/plan.md +76 -154
- package/.claude/commands/issue/queue.md +208 -259
- package/.claude/skills/issue-manage/SKILL.md +63 -22
- package/.claude/workflows/cli-templates/schemas/discovery-finding-schema.json +3 -3
- package/.claude/workflows/cli-templates/schemas/issues-jsonl-schema.json +3 -3
- package/.claude/workflows/cli-templates/schemas/queue-schema.json +0 -5
- package/.codex/prompts/issue-plan.md +16 -19
- package/.codex/prompts/issue-queue.md +0 -1
- package/README.md +1 -0
- package/ccw/dist/cli.d.ts.map +1 -1
- package/ccw/dist/cli.js +3 -1
- package/ccw/dist/cli.js.map +1 -1
- package/ccw/dist/commands/cli.d.ts.map +1 -1
- package/ccw/dist/commands/cli.js +45 -3
- package/ccw/dist/commands/cli.js.map +1 -1
- package/ccw/dist/commands/issue.d.ts +3 -1
- package/ccw/dist/commands/issue.d.ts.map +1 -1
- package/ccw/dist/commands/issue.js +383 -30
- package/ccw/dist/commands/issue.js.map +1 -1
- package/ccw/dist/core/routes/issue-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/issue-routes.js +77 -16
- package/ccw/dist/core/routes/issue-routes.js.map +1 -1
- package/ccw/dist/tools/cli-executor.d.ts.map +1 -1
- package/ccw/dist/tools/cli-executor.js +117 -4
- package/ccw/dist/tools/cli-executor.js.map +1 -1
- package/ccw/dist/tools/litellm-executor.d.ts +4 -0
- package/ccw/dist/tools/litellm-executor.d.ts.map +1 -1
- package/ccw/dist/tools/litellm-executor.js +54 -1
- package/ccw/dist/tools/litellm-executor.js.map +1 -1
- package/ccw/dist/tools/ui-generate-preview.d.ts +18 -0
- package/ccw/dist/tools/ui-generate-preview.d.ts.map +1 -1
- package/ccw/dist/tools/ui-generate-preview.js +26 -10
- package/ccw/dist/tools/ui-generate-preview.js.map +1 -1
- package/ccw/src/cli.ts +3 -1
- package/ccw/src/commands/cli.ts +47 -3
- package/ccw/src/commands/issue.ts +442 -34
- package/ccw/src/core/routes/issue-routes.ts +82 -16
- package/ccw/src/tools/cli-executor.ts +125 -4
- package/ccw/src/tools/litellm-executor.ts +107 -24
- package/ccw/src/tools/ui-generate-preview.js +60 -37
- package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/__pycache__/entities.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/config.py +25 -2
- package/codex-lens/src/codexlens/entities.py +5 -1
- package/codex-lens/src/codexlens/indexing/__pycache__/symbol_extractor.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/indexing/symbol_extractor.py +243 -243
- package/codex-lens/src/codexlens/parsers/__pycache__/factory.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/treesitter_parser.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/factory.py +256 -256
- package/codex-lens/src/codexlens/parsers/treesitter_parser.py +335 -335
- package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/chain_search.py +30 -1
- package/codex-lens/src/codexlens/semantic/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/embedder.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/reranker.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/vector_store.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/embedder.py +6 -9
- package/codex-lens/src/codexlens/semantic/vector_store.py +271 -200
- package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/index_tree.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/sqlite_store.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/sqlite_store.py +184 -108
- package/package.json +6 -1
- package/.claude/commands/issue/manage.md +0 -113
|
Binary file
|
|
Binary file
|
|
@@ -337,12 +337,41 @@ class ChainSearchEngine:
|
|
|
337
337
|
root_cmp = root_str.lower().rstrip("\\/")
|
|
338
338
|
dir_cmp = file_dir_str.lower().rstrip("\\/")
|
|
339
339
|
|
|
340
|
+
# Guard against Windows cross-drive comparisons (ValueError).
|
|
341
|
+
if os.name == "nt":
|
|
342
|
+
root_drive, _ = os.path.splitdrive(root_cmp)
|
|
343
|
+
dir_drive, _ = os.path.splitdrive(dir_cmp)
|
|
344
|
+
if root_drive and dir_drive and root_drive != dir_drive:
|
|
345
|
+
self.logger.debug(
|
|
346
|
+
"Skipping symbol due to cross-drive path (root=%s file=%s name=%s)",
|
|
347
|
+
root_cmp,
|
|
348
|
+
sym.file,
|
|
349
|
+
sym.name,
|
|
350
|
+
)
|
|
351
|
+
continue
|
|
352
|
+
|
|
340
353
|
if os.path.commonpath([root_cmp, dir_cmp]) != root_cmp:
|
|
341
354
|
continue
|
|
342
355
|
|
|
343
356
|
rel = os.path.relpath(dir_cmp, root_cmp)
|
|
344
357
|
rel_depth = 0 if rel == "." else len(rel.split(os.sep))
|
|
345
|
-
except
|
|
358
|
+
except ValueError as exc:
|
|
359
|
+
self.logger.debug(
|
|
360
|
+
"Skipping symbol due to path operation failure (root=%s file=%s name=%s): %s",
|
|
361
|
+
str(search_root),
|
|
362
|
+
sym.file,
|
|
363
|
+
sym.name,
|
|
364
|
+
exc,
|
|
365
|
+
)
|
|
366
|
+
continue
|
|
367
|
+
except Exception as exc:
|
|
368
|
+
self.logger.debug(
|
|
369
|
+
"Skipping symbol due to unexpected path error (root=%s file=%s name=%s): %s",
|
|
370
|
+
str(search_root),
|
|
371
|
+
sym.file,
|
|
372
|
+
sym.name,
|
|
373
|
+
exc,
|
|
374
|
+
)
|
|
346
375
|
continue
|
|
347
376
|
|
|
348
377
|
if options.depth >= 0 and rel_depth > options.depth:
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -21,7 +21,7 @@ logger = logging.getLogger(__name__)
|
|
|
21
21
|
|
|
22
22
|
# Global embedder cache for singleton pattern
|
|
23
23
|
_embedder_cache: Dict[str, "Embedder"] = {}
|
|
24
|
-
_cache_lock = threading.
|
|
24
|
+
_cache_lock = threading.RLock()
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
def get_embedder(profile: str = "code", use_gpu: bool = True) -> "Embedder":
|
|
@@ -43,15 +43,12 @@ def get_embedder(profile: str = "code", use_gpu: bool = True) -> "Embedder":
|
|
|
43
43
|
# Cache key includes GPU preference to support mixed configurations
|
|
44
44
|
cache_key = f"{profile}:{'gpu' if use_gpu else 'cpu'}"
|
|
45
45
|
|
|
46
|
-
#
|
|
47
|
-
|
|
48
|
-
return _embedder_cache[cache_key]
|
|
49
|
-
|
|
50
|
-
# Slow path: acquire lock for initialization
|
|
46
|
+
# All cache access is protected by _cache_lock to avoid races with
|
|
47
|
+
# clear_embedder_cache() during concurrent access.
|
|
51
48
|
with _cache_lock:
|
|
52
|
-
|
|
53
|
-
if
|
|
54
|
-
return
|
|
49
|
+
embedder = _embedder_cache.get(cache_key)
|
|
50
|
+
if embedder is not None:
|
|
51
|
+
return embedder
|
|
55
52
|
|
|
56
53
|
# Create new embedder and cache it
|
|
57
54
|
embedder = Embedder(profile=profile, use_gpu=use_gpu)
|