claude-code-workflow 6.3.2 → 6.3.5
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/CLAUDE.md +9 -1
- package/.claude/commands/{clean.md → workflow/clean.md} +5 -5
- package/.claude/commands/workflow/docs/analyze.md +1467 -0
- package/.claude/commands/workflow/docs/copyright.md +1265 -0
- package/.claude/commands/workflow/lite-plan.md +1 -1
- package/.claude/commands/workflow/tools/conflict-resolution.md +76 -240
- package/.claude/commands/workflow/tools/task-generate-agent.md +81 -8
- package/.claude/skills/_shared/mermaid-utils.md +584 -0
- package/.claude/skills/copyright-docs/SKILL.md +132 -0
- package/.claude/skills/copyright-docs/phases/01-metadata-collection.md +78 -0
- package/.claude/skills/copyright-docs/phases/02-deep-analysis.md +454 -0
- package/.claude/skills/copyright-docs/phases/02.5-consolidation.md +192 -0
- package/.claude/skills/copyright-docs/phases/04-document-assembly.md +261 -0
- package/.claude/skills/copyright-docs/phases/05-compliance-refinement.md +192 -0
- package/.claude/skills/copyright-docs/specs/cpcc-requirements.md +121 -0
- package/.claude/skills/copyright-docs/templates/agent-base.md +200 -0
- package/.claude/skills/project-analyze/SKILL.md +162 -0
- package/.claude/skills/project-analyze/phases/01-requirements-discovery.md +79 -0
- package/.claude/skills/project-analyze/phases/02-project-exploration.md +75 -0
- package/.claude/skills/project-analyze/phases/03-deep-analysis.md +640 -0
- package/.claude/skills/project-analyze/phases/03.5-consolidation.md +208 -0
- package/.claude/skills/project-analyze/phases/04-report-generation.md +217 -0
- package/.claude/skills/project-analyze/phases/05-iterative-refinement.md +124 -0
- package/.claude/skills/project-analyze/specs/quality-standards.md +115 -0
- package/.claude/skills/project-analyze/specs/writing-style.md +152 -0
- package/.claude/workflows/cli-templates/schemas/conflict-resolution-schema.json +79 -65
- package/.claude/workflows/cli-tools-usage.md +515 -516
- package/README.md +11 -1
- package/ccw/dist/cli.d.ts.map +1 -1
- package/ccw/dist/cli.js +7 -1
- package/ccw/dist/cli.js.map +1 -1
- package/ccw/dist/commands/cli.d.ts +1 -1
- package/ccw/dist/commands/cli.d.ts.map +1 -1
- package/ccw/dist/commands/cli.js +116 -14
- package/ccw/dist/commands/cli.js.map +1 -1
- package/ccw/dist/core/routes/cli-routes.js +2 -2
- package/ccw/dist/core/routes/cli-routes.js.map +1 -1
- package/ccw/dist/tools/claude-cli-tools.d.ts +7 -3
- package/ccw/dist/tools/claude-cli-tools.d.ts.map +1 -1
- package/ccw/dist/tools/claude-cli-tools.js +31 -17
- package/ccw/dist/tools/claude-cli-tools.js.map +1 -1
- package/ccw/dist/tools/cli-executor.d.ts.map +1 -1
- package/ccw/dist/tools/cli-executor.js +19 -7
- package/ccw/dist/tools/cli-executor.js.map +1 -1
- package/ccw/dist/tools/cli-history-store.d.ts +33 -0
- package/ccw/dist/tools/cli-history-store.d.ts.map +1 -1
- package/ccw/dist/tools/cli-history-store.js +89 -5
- package/ccw/dist/tools/cli-history-store.js.map +1 -1
- package/ccw/dist/tools/smart-search.d.ts +25 -0
- package/ccw/dist/tools/smart-search.d.ts.map +1 -1
- package/ccw/dist/tools/smart-search.js +121 -17
- package/ccw/dist/tools/smart-search.js.map +1 -1
- package/ccw/src/cli.ts +264 -258
- package/ccw/src/commands/cli.ts +1009 -884
- package/ccw/src/core/routes/cli-routes.ts +3 -3
- package/ccw/src/templates/dashboard-js/components/cli-history.js +40 -13
- package/ccw/src/templates/dashboard-js/components/cli-status.js +26 -2
- package/ccw/src/templates/dashboard-js/views/cli-manager.js +5 -0
- package/ccw/src/templates/dashboard-js/views/history.js +19 -4
- package/ccw/src/tools/claude-cli-tools.ts +37 -20
- package/ccw/src/tools/cli-executor.ts +20 -7
- package/ccw/src/tools/cli-history-store.ts +125 -5
- package/ccw/src/tools/smart-search.ts +157 -16
- package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/config.py +8 -0
- 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 +71 -1
- package/codex-lens/src/codexlens/search/hybrid_search.py +144 -11
- package/codex-lens/src/codexlens/search/ranking.py +540 -274
- package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/chunker.py +55 -10
- package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/global_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/dir_index.py +1888 -1850
- package/codex-lens/src/codexlens/storage/global_index.py +365 -0
- package/codex-lens/src/codexlens/storage/index_tree.py +83 -10
- package/package.json +2 -2
|
Binary file
|
|
@@ -392,6 +392,22 @@ class HybridChunker:
|
|
|
392
392
|
filtered.append(symbol)
|
|
393
393
|
return filtered
|
|
394
394
|
|
|
395
|
+
def _find_parent_symbol(
|
|
396
|
+
self,
|
|
397
|
+
start_line: int,
|
|
398
|
+
end_line: int,
|
|
399
|
+
symbols: List[Symbol],
|
|
400
|
+
) -> Optional[Symbol]:
|
|
401
|
+
"""Find the smallest symbol range that fully contains a docstring span."""
|
|
402
|
+
candidates: List[Symbol] = []
|
|
403
|
+
for symbol in symbols:
|
|
404
|
+
sym_start, sym_end = symbol.range
|
|
405
|
+
if sym_start <= start_line and end_line <= sym_end:
|
|
406
|
+
candidates.append(symbol)
|
|
407
|
+
if not candidates:
|
|
408
|
+
return None
|
|
409
|
+
return min(candidates, key=lambda s: (s.range[1] - s.range[0], s.range[0]))
|
|
410
|
+
|
|
395
411
|
def chunk_file(
|
|
396
412
|
self,
|
|
397
413
|
content: str,
|
|
@@ -414,24 +430,53 @@ class HybridChunker:
|
|
|
414
430
|
chunks: List[SemanticChunk] = []
|
|
415
431
|
|
|
416
432
|
# Step 1: Extract docstrings as dedicated chunks
|
|
417
|
-
docstrings
|
|
433
|
+
docstrings: List[Tuple[str, int, int]] = []
|
|
434
|
+
if language == "python":
|
|
435
|
+
# Fast path: avoid expensive docstring extraction if delimiters are absent.
|
|
436
|
+
if '"""' in content or "'''" in content:
|
|
437
|
+
docstrings = self.docstring_extractor.extract_docstrings(content, language)
|
|
438
|
+
elif language in {"javascript", "typescript"}:
|
|
439
|
+
if "/**" in content:
|
|
440
|
+
docstrings = self.docstring_extractor.extract_docstrings(content, language)
|
|
441
|
+
else:
|
|
442
|
+
docstrings = self.docstring_extractor.extract_docstrings(content, language)
|
|
443
|
+
|
|
444
|
+
# Fast path: no docstrings -> delegate to base chunker directly.
|
|
445
|
+
if not docstrings:
|
|
446
|
+
if symbols:
|
|
447
|
+
base_chunks = self.base_chunker.chunk_by_symbol(
|
|
448
|
+
content, symbols, file_path, language, symbol_token_counts
|
|
449
|
+
)
|
|
450
|
+
else:
|
|
451
|
+
base_chunks = self.base_chunker.chunk_sliding_window(content, file_path, language)
|
|
452
|
+
|
|
453
|
+
for chunk in base_chunks:
|
|
454
|
+
chunk.metadata["strategy"] = "hybrid"
|
|
455
|
+
chunk.metadata["chunk_type"] = "code"
|
|
456
|
+
return base_chunks
|
|
418
457
|
|
|
419
458
|
for docstring_content, start_line, end_line in docstrings:
|
|
420
459
|
if len(docstring_content.strip()) >= self.config.min_chunk_size:
|
|
460
|
+
parent_symbol = self._find_parent_symbol(start_line, end_line, symbols)
|
|
421
461
|
# Use base chunker's token estimation method
|
|
422
462
|
token_count = self.base_chunker._estimate_token_count(docstring_content)
|
|
463
|
+
metadata = {
|
|
464
|
+
"file": str(file_path),
|
|
465
|
+
"language": language,
|
|
466
|
+
"chunk_type": "docstring",
|
|
467
|
+
"start_line": start_line,
|
|
468
|
+
"end_line": end_line,
|
|
469
|
+
"strategy": "hybrid",
|
|
470
|
+
"token_count": token_count,
|
|
471
|
+
}
|
|
472
|
+
if parent_symbol is not None:
|
|
473
|
+
metadata["parent_symbol"] = parent_symbol.name
|
|
474
|
+
metadata["parent_symbol_kind"] = parent_symbol.kind
|
|
475
|
+
metadata["parent_symbol_range"] = parent_symbol.range
|
|
423
476
|
chunks.append(SemanticChunk(
|
|
424
477
|
content=docstring_content,
|
|
425
478
|
embedding=None,
|
|
426
|
-
metadata=
|
|
427
|
-
"file": str(file_path),
|
|
428
|
-
"language": language,
|
|
429
|
-
"chunk_type": "docstring",
|
|
430
|
-
"start_line": start_line,
|
|
431
|
-
"end_line": end_line,
|
|
432
|
-
"strategy": "hybrid",
|
|
433
|
-
"token_count": token_count,
|
|
434
|
-
}
|
|
479
|
+
metadata=metadata
|
|
435
480
|
))
|
|
436
481
|
|
|
437
482
|
# Step 2: Get line ranges occupied by docstrings
|
|
Binary file
|
|
Binary file
|