claude-code-workflow 6.3.29 → 6.3.30

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.
@@ -956,15 +956,13 @@ function renderSkillFileModal() {
956
956
  </div>
957
957
 
958
958
  <!-- Content -->
959
- <div class="flex-1 overflow-hidden p-4">
959
+ <div class="flex-1 min-h-0 overflow-auto p-4">
960
960
  ${isEditing ? `
961
961
  <textarea id="skillFileContent"
962
962
  class="w-full h-full min-h-[400px] px-4 py-3 bg-background border border-border rounded-lg text-sm font-mono focus:outline-none focus:ring-2 focus:ring-primary resize-none"
963
963
  spellcheck="false">${escapeHtml(content)}</textarea>
964
964
  ` : `
965
- <div class="w-full h-full min-h-[400px] overflow-auto">
966
- <pre class="px-4 py-3 bg-muted/30 rounded-lg text-sm font-mono whitespace-pre-wrap break-words">${escapeHtml(content)}</pre>
967
- </div>
965
+ <pre class="px-4 py-3 bg-muted/30 rounded-lg text-sm font-mono whitespace-pre-wrap break-words">${escapeHtml(content)}</pre>
968
966
  `}
969
967
  </div>
970
968
 
@@ -3645,6 +3645,84 @@ def index_status(
3645
3645
  console.print(f" SPLADE encoder: {'[green]Yes[/green]' if splade_available else f'[red]No[/red] ({splade_err})'}")
3646
3646
 
3647
3647
 
3648
+ # ==================== Index Update Command ====================
3649
+
3650
+ @index_app.command("update")
3651
+ def index_update(
3652
+ file_path: Path = typer.Argument(..., exists=True, file_okay=True, dir_okay=False, help="Path to the file to update in the index."),
3653
+ json_mode: bool = typer.Option(False, "--json", help="Output JSON response."),
3654
+ verbose: bool = typer.Option(False, "--verbose", "-v", help="Enable debug logging."),
3655
+ ) -> None:
3656
+ """Update the index for a single file incrementally.
3657
+
3658
+ This is a lightweight command designed for use in hooks (e.g., Claude Code PostToolUse).
3659
+ It updates only the specified file without scanning the entire directory.
3660
+
3661
+ The file's parent directory must already be indexed via 'codexlens index init'.
3662
+
3663
+ Examples:
3664
+ codexlens index update src/main.py # Update single file
3665
+ codexlens index update ./foo.ts --json # JSON output for hooks
3666
+ """
3667
+ _configure_logging(verbose, json_mode)
3668
+
3669
+ from codexlens.watcher.incremental_indexer import IncrementalIndexer
3670
+
3671
+ registry: RegistryStore | None = None
3672
+ indexer: IncrementalIndexer | None = None
3673
+
3674
+ try:
3675
+ registry = RegistryStore()
3676
+ registry.initialize()
3677
+ mapper = PathMapper()
3678
+ config = Config()
3679
+
3680
+ resolved_path = file_path.resolve()
3681
+
3682
+ # Check if project is indexed
3683
+ source_root = mapper.get_project_root(resolved_path)
3684
+ if not source_root or not registry.get_project(source_root):
3685
+ error_msg = f"Project containing file is not indexed: {file_path}"
3686
+ if json_mode:
3687
+ print_json(success=False, error=error_msg)
3688
+ else:
3689
+ console.print(f"[red]Error:[/red] {error_msg}")
3690
+ console.print("[dim]Run 'codexlens index init' on the project root first.[/dim]")
3691
+ raise typer.Exit(code=1)
3692
+
3693
+ indexer = IncrementalIndexer(registry, mapper, config)
3694
+ result = indexer._index_file(resolved_path)
3695
+
3696
+ if result.success:
3697
+ if json_mode:
3698
+ print_json(success=True, result={
3699
+ "path": str(result.path),
3700
+ "symbols_count": result.symbols_count,
3701
+ "status": "updated",
3702
+ })
3703
+ else:
3704
+ console.print(f"[green]✓[/green] Updated index for [bold]{result.path.name}[/bold] ({result.symbols_count} symbols)")
3705
+ else:
3706
+ error_msg = result.error or f"Failed to update index for {file_path}"
3707
+ if json_mode:
3708
+ print_json(success=False, error=error_msg)
3709
+ else:
3710
+ console.print(f"[red]Error:[/red] {error_msg}")
3711
+ raise typer.Exit(code=1)
3712
+
3713
+ except CodexLensError as exc:
3714
+ if json_mode:
3715
+ print_json(success=False, error=str(exc))
3716
+ else:
3717
+ console.print(f"[red]Update failed:[/red] {exc}")
3718
+ raise typer.Exit(code=1)
3719
+ finally:
3720
+ if indexer:
3721
+ indexer.close()
3722
+ if registry:
3723
+ registry.close()
3724
+
3725
+
3648
3726
  # ==================== Index All Command ====================
3649
3727
 
3650
3728
  @index_app.command("all")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-workflow",
3
- "version": "6.3.29",
3
+ "version": "6.3.30",
4
4
  "description": "JSON-driven multi-agent development framework with intelligent CLI orchestration (Gemini/Qwen/Codex), context-first architecture, and automated workflow execution",
5
5
  "type": "module",
6
6
  "main": "ccw/src/index.js",