@voodocs/cli 2.1.3 → 2.2.1

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 (51) hide show
  1. package/CHANGELOG.md +215 -38
  2. package/LICENSE +1 -1
  3. package/PRIVACY.md +10 -10
  4. package/README.md +39 -35
  5. package/USAGE.md +50 -27
  6. package/examples/.cursorrules +9 -9
  7. package/examples/instructions/.claude/instructions.md +77 -65
  8. package/examples/instructions/.cursorrules +9 -9
  9. package/examples/instructions/.windsurfrules +9 -9
  10. package/examples/instructions/VOODOCS_INSTRUCTIONS.md +74 -62
  11. package/examples/math_example.py +1 -1
  12. package/examples/phase2_test.py +1 -1
  13. package/examples/test_function_invariants.py +1 -1
  14. package/lib/cli/__init__.py +3 -3
  15. package/lib/cli/benchmark.py +3 -3
  16. package/lib/cli/context.py +1 -1
  17. package/lib/cli/fix.py +1 -1
  18. package/lib/cli/generate.py +60 -1
  19. package/lib/cli/init.py +10 -10
  20. package/lib/cli/instruct.py +1 -1
  21. package/lib/cli/validate.py +3 -3
  22. package/lib/darkarts/annotations/DARKARTS_SYMBOLS.md +110 -95
  23. package/lib/darkarts/annotations/TRANSFORMATION_EXAMPLES.md +29 -27
  24. package/lib/darkarts/annotations/parser.py +1 -1
  25. package/lib/darkarts/cli_darkarts.py +5 -5
  26. package/lib/darkarts/context/ai_instructions.py +12 -12
  27. package/lib/darkarts/context/ai_integrations.py +16 -16
  28. package/lib/darkarts/context/commands.py +4 -4
  29. package/lib/darkarts/context/errors.py +1 -1
  30. package/lib/darkarts/context/models.py +1 -1
  31. package/lib/darkarts/context/ui.py +4 -4
  32. package/lib/darkarts/context/yaml_utils.py +3 -3
  33. package/lib/darkarts/core/loader.py +1 -1
  34. package/lib/darkarts/documentation/__init__.py +10 -0
  35. package/lib/darkarts/documentation/categorizer.py +137 -0
  36. package/lib/darkarts/documentation/consolidator.py +303 -0
  37. package/lib/darkarts/exceptions.py +3 -3
  38. package/lib/darkarts/plugins/voodocs/ai_native_plugin.py +1 -1
  39. package/lib/darkarts/plugins/voodocs/annotation_validator.py +2 -2
  40. package/lib/darkarts/plugins/voodocs/documentation_generator.py +3 -3
  41. package/lib/darkarts/plugins/voodocs/html_exporter.py +4 -4
  42. package/lib/darkarts/plugins/voodocs/instruction_generator.py +10 -10
  43. package/lib/darkarts/plugins/voodocs/pdf_exporter.py +1 -1
  44. package/lib/darkarts/plugins/voodocs/test_generator.py +1 -1
  45. package/lib/darkarts/telemetry.py +5 -5
  46. package/lib/darkarts/validation/README.md +6 -3
  47. package/package.json +2 -1
  48. package/requirements.txt +2 -2
  49. package/templates/ci/github-actions.yml +64 -64
  50. package/templates/ci/pre-commit-hook.sh +4 -4
  51. package/voodocs_cli.py +1 -1
@@ -1,16 +1,17 @@
1
- # VooDocs Instructions for Generic AI Assistant
1
+ # Voodocs Instructions for Generic AI Assistant
2
2
 
3
- **Project**: VooDocs Example Project
4
- **Generated**: Automatically by VooDocs
3
+ **Project**: Voodocs Example Project
4
+ **Generated**: Automatically by Voodocs
5
5
  **Purpose**: Guide AI assistants to document code using @voodocs annotations
6
6
 
7
7
  ---
8
8
 
9
9
  ## Overview
10
10
 
11
- VooDocs is an AI-native documentation system that allows you to document code in **DarkArts language** - a mathematical and logical notation that AI naturally understands. Your annotations will be automatically translated into human-readable documentation, property-based tests, and API specifications.
11
+ Voodocs is an AI-native documentation system that allows you to document code in **DarkArts language** - a mathematical and logical notation that AI naturally understands. Your annotations will be automatically translated into human-readable documentation, property-based tests, and API specifications.
12
12
 
13
13
  **Key Benefits:**
14
+
14
15
  - Document in AI's native language (mathematical notation)
15
16
  - Automatic generation of comprehensive tests
16
17
  - Property-based testing with Hypothesis
@@ -22,7 +23,7 @@ As an AI coding assistant, you should add `@voodocs` annotations to **every sign
22
23
 
23
24
  ## Core Principles
24
25
 
25
- When writing code with VooDocs annotations, follow these principles:
26
+ When writing code with Voodocs annotations, follow these principles:
26
27
 
27
28
  1. **Annotate as you code** - Add `@voodocs` annotations immediately when creating functions/classes
28
29
  2. **Be precise** - Use mathematical notation for exact specifications
@@ -61,33 +62,33 @@ class ClassName:
61
62
 
62
63
  ### For Functions/Methods
63
64
 
64
- | Field | Required | Description | Example |
65
- |-------|----------|-------------|---------|
66
- | `preconditions` | Recommended | Conditions that must be true before execution | `["x > 0", "user is authenticated"]` |
67
- | `postconditions` | Recommended | Conditions guaranteed after execution | `["result > 0", "database updated"]` |
68
- | `complexity` | Recommended | Time/space complexity | `"O(n log n)"` or `"O(n)"` |
69
- | `invariants` | Optional | Properties that remain unchanged | `["∀ x: x ∈ original_set ⇒ x ∈ result_set"]` |
70
- | `error_cases` | Optional | Error conditions and exceptions | `["x < 0 → ValueError", "file not found → FileNotFoundError"]` |
71
- | `side_effects` | Optional | External changes made | `["Writes to database", "Sends email"]` |
72
- | `security_implications` | Optional | Security considerations | `["Requires admin role", "Rate limited"]` |
73
- | `assumptions` | Optional | Environmental assumptions | `["Database is available", "Network is stable"]` |
65
+ | Field | Required | Description | Example |
66
+ | ----------------------- | ----------- | --------------------------------------------- | -------------------------------------------------------------- |
67
+ | `preconditions` | Recommended | Conditions that must be true before execution | `["x > 0", "user is authenticated"]` |
68
+ | `postconditions` | Recommended | Conditions guaranteed after execution | `["result > 0", "database updated"]` |
69
+ | `complexity` | Recommended | Time/space complexity | `"O(n log n)"` or `"O(n)"` |
70
+ | `invariants` | Optional | Properties that remain unchanged | `["∀ x: x ∈ original_set ⇒ x ∈ result_set"]` |
71
+ | `error_cases` | Optional | Error conditions and exceptions | `["x < 0 → ValueError", "file not found → FileNotFoundError"]` |
72
+ | `side_effects` | Optional | External changes made | `["Writes to database", "Sends email"]` |
73
+ | `security_implications` | Optional | Security considerations | `["Requires admin role", "Rate limited"]` |
74
+ | `assumptions` | Optional | Environmental assumptions | `["Database is available", "Network is stable"]` |
74
75
 
75
76
  ### For Classes
76
77
 
77
- | Field | Description | Example |
78
- |-------|-------------|---------|
79
- | `class_invariants` | Properties that always hold | `["∀ item ∈ queue: item.status ∈ VALID_STATUSES"]` |
80
- | `state_transitions` | Valid state changes | `["IDLE → PROCESSING", "PROCESSING → COMPLETE"]` |
81
- | `thread_safety` | Concurrency safety | `"Thread-safe with mutex"` or `"Not thread-safe"` |
78
+ | Field | Description | Example |
79
+ | ------------------- | --------------------------- | -------------------------------------------------- |
80
+ | `class_invariants` | Properties that always hold | `["∀ item ∈ queue: item.status ∈ VALID_STATUSES"]` |
81
+ | `state_transitions` | Valid state changes | `["IDLE → PROCESSING", "PROCESSING → COMPLETE"]` |
82
+ | `thread_safety` | Concurrency safety | `"Thread-safe with mutex"` or `"Not thread-safe"` |
82
83
 
83
84
  ### For Modules
84
85
 
85
- | Field | Description | Example |
86
- |-------|-------------|---------|
87
- | `module_purpose` | High-level module description | `"User authentication and authorization"` |
88
- | `dependencies` | External dependencies | `["@supabase/supabase-js", "bcrypt"]` |
89
- | `assumptions` | Module-level assumptions | `["Database schema v2.0", "Redis available"]` |
90
- | `security_model` | Overall security approach | `"Defense in depth - fails closed"` |
86
+ | Field | Description | Example |
87
+ | ---------------- | ----------------------------- | --------------------------------------------- |
88
+ | `module_purpose` | High-level module description | `"User authentication and authorization"` |
89
+ | `dependencies` | External dependencies | `["@supabase/supabase-js", "bcrypt"]` |
90
+ | `assumptions` | Module-level assumptions | `["Database schema v2.0", "Redis available"]` |
91
+ | `security_model` | Overall security approach | `"Defense in depth - fails closed"` |
91
92
 
92
93
  ## DarkArts Language Guide
93
94
 
@@ -95,49 +96,49 @@ DarkArts is a mathematical notation language for precise specifications. Use the
95
96
 
96
97
  ### Logical Operators
97
98
 
98
- | Symbol | Meaning | Example |
99
- |--------|---------|---------|
100
- | `∧` | AND | `x > 0 ∧ y > 0` |
101
- | `∨` | OR | `x = 0 ∨ y = 0` |
102
- | `¬` | NOT | `¬(x < 0)` |
103
- | `⇒` | IMPLIES | `x > 0 ⇒ result > 0` |
104
- | `⇔` | IF AND ONLY IF | `result = true ⇔ user.isAdmin` |
99
+ | Symbol | Meaning | Example |
100
+ | ------ | -------------- | ------------------------------ |
101
+ | `∧` | AND | `x > 0 ∧ y > 0` |
102
+ | `∨` | OR | `x = 0 ∨ y = 0` |
103
+ | `¬` | NOT | `¬(x < 0)` |
104
+ | `⇒` | IMPLIES | `x > 0 ⇒ result > 0` |
105
+ | `⇔` | IF AND ONLY IF | `result = true ⇔ user.isAdmin` |
105
106
 
106
107
  ### Quantifiers
107
108
 
108
- | Symbol | Meaning | Example |
109
- |--------|---------|---------|
110
- | `∀` | FOR ALL | `∀ x ∈ items: x > 0` |
111
- | `∃` | THERE EXISTS | `∃ x ∈ items: x = target` |
109
+ | Symbol | Meaning | Example |
110
+ | ------ | ------------ | ------------------------- |
111
+ | `∀` | FOR ALL | `∀ x ∈ items: x > 0` |
112
+ | `∃` | THERE EXISTS | `∃ x ∈ items: x = target` |
112
113
 
113
114
  ### Set Operations
114
115
 
115
- | Symbol | Meaning | Example |
116
- |--------|---------|---------|
117
- | `∈` | IN / ELEMENT OF | `x ∈ valid_values` |
118
- | `∉` | NOT IN | `x ∉ blacklist` |
119
- | `⊆` | SUBSET OF | `result ⊆ input` |
120
- | `∪` | UNION | `result = set1 ∪ set2` |
121
- | `∩` | INTERSECTION | `common = set1 ∩ set2` |
116
+ | Symbol | Meaning | Example |
117
+ | ------ | --------------- | ---------------------- |
118
+ | `∈` | IN / ELEMENT OF | `x ∈ valid_values` |
119
+ | `∉` | NOT IN | `x ∉ blacklist` |
120
+ | `⊆` | SUBSET OF | `result ⊆ input` |
121
+ | `∪` | UNION | `result = set1 ∪ set2` |
122
+ | `∩` | INTERSECTION | `common = set1 ∩ set2` |
122
123
 
123
124
  ### Comparisons
124
125
 
125
- | Symbol | Meaning | Example |
126
- |--------|---------|---------|
127
- | `≥` | GREATER THAN OR EQUAL | `x ≥ 0` |
128
- | `≤` | LESS THAN OR EQUAL | `x ≤ 100` |
129
- | `≠` | NOT EQUAL | `x ≠ 0` |
130
- | `≈` | APPROXIMATELY EQUAL | `result ≈ expected` |
126
+ | Symbol | Meaning | Example |
127
+ | ------ | --------------------- | ------------------- |
128
+ | `≥` | GREATER THAN OR EQUAL | `x ≥ 0` |
129
+ | `≤` | LESS THAN OR EQUAL | `x ≤ 100` |
130
+ | `≠` | NOT EQUAL | `x ≠ 0` |
131
+ | `≈` | APPROXIMATELY EQUAL | `result ≈ expected` |
131
132
 
132
133
  ### Number Sets
133
134
 
134
- | Symbol | Meaning | Example |
135
- |--------|---------|---------|
136
- | `ℕ` | Natural numbers (0, 1, 2, ...) | `n ∈ ℕ` |
137
- | `ℤ` | Integers (..., -1, 0, 1, ...) | `x ∈ ℤ` |
138
- | `ℝ` | Real numbers | `x ∈ ℝ` |
135
+ | Symbol | Meaning | Example |
136
+ | ------ | ------------------------------ | ------- |
137
+ | `ℕ` | Natural numbers (0, 1, 2, ...) | `n ∈ ℕ` |
138
+ | `ℤ` | Integers (..., -1, 0, 1, ...) | `x ∈ ℤ` |
139
+ | `ℝ` | Real numbers | `x ∈ ℝ` |
139
140
 
140
- **Tip**: You can use plain English too! VooDocs understands both mathematical notation and natural language. Mix them for clarity.
141
+ **Tip**: You can use plain English too! Voodocs understands both mathematical notation and natural language. Mix them for clarity.
141
142
 
142
143
  ## Examples
143
144
 
@@ -167,7 +168,7 @@ def calculate_discount(price: float, discount_percent: float) -> float:
167
168
  raise ValueError("Price must be positive")
168
169
  if not 0 <= discount_percent <= 100:
169
170
  raise ValueError("Discount must be between 0 and 100")
170
-
171
+
171
172
  return price * (1 - discount_percent / 100)
172
173
  ```
173
174
 
@@ -219,12 +220,12 @@ class BankAccount:
219
220
  ]
220
221
  thread_safety: "Thread-safe with account-level mutex"
221
222
  """
222
-
223
+
223
224
  def __init__(self, account_id: str):
224
225
  self.balance = 0.0
225
226
  self.transactions = []
226
227
  self.status = "PENDING"
227
-
228
+
228
229
  def deposit(self, amount: float) -> bool:
229
230
  """@voodocs
230
231
  preconditions: [
@@ -314,7 +315,7 @@ complexity: "O(1)"
314
315
  """
315
316
  ```
316
317
 
317
- VooDocs generates:
318
+ Voodocs generates:
318
319
 
319
320
  ```python
320
321
  # Generated test
@@ -332,6 +333,7 @@ def test_property_based_add(x, y):
332
333
  ### 1. Be Specific with Preconditions
333
334
 
334
335
  **Good:**
336
+
335
337
  ```python
336
338
  preconditions: [
337
339
  "amount > 0",
@@ -341,6 +343,7 @@ preconditions: [
341
343
  ```
342
344
 
343
345
  **Avoid:**
346
+
344
347
  ```python
345
348
  preconditions: ["valid input"] # Too vague
346
349
  ```
@@ -348,6 +351,7 @@ preconditions: ["valid input"] # Too vague
348
351
  ### 2. Use Mathematical Notation for Precision
349
352
 
350
353
  **Good:**
354
+
351
355
  ```python
352
356
  postconditions: [
353
357
  "∀ x ∈ result: x ∈ input", # All results are from input
@@ -356,6 +360,7 @@ postconditions: [
356
360
  ```
357
361
 
358
362
  **Avoid:**
363
+
359
364
  ```python
360
365
  postconditions: ["returns filtered list"] # Imprecise
361
366
  ```
@@ -363,18 +368,21 @@ postconditions: ["returns filtered list"] # Imprecise
363
368
  ### 3. Always Specify Complexity
364
369
 
365
370
  **Good:**
371
+
366
372
  ```python
367
373
  complexity: "O(n log n)"
368
374
  ```
369
375
 
370
376
  **Also Good:**
377
+
371
378
  ```python
372
- complexity: "O(n)" # VooDocs infers space as O(1)
379
+ complexity: "O(n)" # Voodocs infers space as O(1)
373
380
  ```
374
381
 
375
382
  ### 4. Document Security Implications
376
383
 
377
384
  **Good:**
385
+
378
386
  ```python
379
387
  security_implications: [
380
388
  "Requires admin role",
@@ -386,6 +394,7 @@ security_implications: [
386
394
  ### 5. Specify Error Cases
387
395
 
388
396
  **Good:**
397
+
389
398
  ```python
390
399
  error_cases: [
391
400
  "amount <= 0 → ValueError",
@@ -397,6 +406,7 @@ error_cases: [
397
406
  ### 6. Use Invariants for Loops and Recursion
398
407
 
399
408
  **Good:**
409
+
400
410
  ```python
401
411
  invariants: [
402
412
  "∀ iteration: 0 <= i < len(arr)",
@@ -407,6 +417,7 @@ invariants: [
407
417
  ### 7. Document Side Effects
408
418
 
409
419
  **Good:**
420
+
410
421
  ```python
411
422
  side_effects: [
412
423
  "Writes to database",
@@ -416,6 +427,7 @@ side_effects: [
416
427
  ```
417
428
 
418
429
  **Avoid:**
430
+
419
431
  ```python
420
432
  side_effects: ["Does stuff"] # Too vague
421
433
  ```
@@ -434,4 +446,4 @@ side_effects: ["Does stuff"] # Too vague
434
446
 
435
447
  By documenting in DarkArts language, you're not just writing comments - you're creating a **formal specification** that generates tests, documentation, and API specs automatically.
436
448
 
437
- **Generated by VooDocs** - AI-native documentation for modern development.
449
+ **Generated by Voodocs** - AI-native documentation for modern development.
@@ -1,5 +1,5 @@
1
1
  """
2
- Example module demonstrating VooDocs annotations and generated tests.
2
+ Example module demonstrating Voodocs annotations and generated tests.
3
3
  """
4
4
 
5
5
  def add_positive(x: int, y: int) -> int:
@@ -1,5 +1,5 @@
1
1
  """
2
- Test file for VooDocs Phase 2 improvements.
2
+ Test file for Voodocs Phase 2 improvements.
3
3
  """
4
4
 
5
5
  def fully_annotated_function(a: int, b: int) -> int:
@@ -1,5 +1,5 @@
1
1
  """
2
- Example demonstrating function-level invariants in VooDocs.
2
+ Example demonstrating function-level invariants in Voodocs.
3
3
 
4
4
  This file shows how to use invariants at the function level to document
5
5
  properties that must hold throughout the function's execution.
@@ -8,9 +8,9 @@
8
8
  """
9
9
 
10
10
  """
11
- VooDocs CLI - Main entry point
11
+ Voodocs CLI - Main entry point
12
12
 
13
- This module provides the command-line interface for VooDocs.
13
+ This module provides the command-line interface for Voodocs.
14
14
  """
15
15
 
16
16
  import click
@@ -24,7 +24,7 @@ __version__ = "2.1.3"
24
24
  @click.pass_context
25
25
  def cli(ctx):
26
26
  """
27
- VooDocs - AI-Native Symbolic Documentation System
27
+ Voodocs - AI-Native Symbolic Documentation System
28
28
 
29
29
  Generate and validate @darkarts symbolic annotations in your codebase.
30
30
 
@@ -8,7 +8,7 @@
8
8
  """
9
9
 
10
10
  """
11
- VooDocs CLI - Benchmark Command
11
+ Voodocs CLI - Benchmark Command
12
12
 
13
13
  Runs performance benchmarks to validate complexity claims in @darkarts annotations.
14
14
  """
@@ -222,7 +222,7 @@ def _generate_html_report(results: Dict[str, Any]) -> str:
222
222
  html = f"""<!DOCTYPE html>
223
223
  <html>
224
224
  <head>
225
- <title>VooDocs Benchmark Report</title>
225
+ <title>Voodocs Benchmark Report</title>
226
226
  <style>
227
227
  body {{ font-family: Arial, sans-serif; margin: 40px; background: #f5f5f5; }}
228
228
  .container {{ max-width: 1200px; margin: 0 auto; background: white; padding: 30px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }}
@@ -242,7 +242,7 @@ def _generate_html_report(results: Dict[str, Any]) -> str:
242
242
  </head>
243
243
  <body>
244
244
  <div class="container">
245
- <h1>📊 VooDocs Benchmark Report</h1>
245
+ <h1>📊 Voodocs Benchmark Report</h1>
246
246
 
247
247
  <div class="summary">
248
248
  <div class="metric">
@@ -8,7 +8,7 @@
8
8
  """
9
9
 
10
10
  """
11
- VooDocs CLI - Context Command
11
+ Voodocs CLI - Context Command
12
12
 
13
13
  Manages AI context files generated from @darkarts annotations.
14
14
  """
package/lib/cli/fix.py CHANGED
@@ -8,7 +8,7 @@
8
8
  """
9
9
 
10
10
  """
11
- VooDocs CLI - Fix Command
11
+ Voodocs CLI - Fix Command
12
12
 
13
13
  Automatically fixes validation issues in @darkarts annotations.
14
14
  """
@@ -8,7 +8,7 @@
8
8
  """
9
9
 
10
10
  """
11
- VooDocs CLI - Generate Command
11
+ Voodocs CLI - Generate Command
12
12
 
13
13
  Generates documentation from @darkarts annotations.
14
14
  """
@@ -202,6 +202,65 @@ def generate(
202
202
  except Exception as e:
203
203
  click.secho(f"❌ {file_path}: {e}", fg='red')
204
204
 
205
+ # Generate consolidated documentation
206
+ click.echo()
207
+ click.secho("📚 Generating consolidated documentation...", fg='cyan')
208
+ try:
209
+ from darkarts.documentation import DocumentationConsolidator, DocumentedItem, AnnotationCategorizer
210
+
211
+ consolidator = DocumentationConsolidator(
212
+ project_name=config.get('project', {}).get('name', 'Project') if config else 'Project'
213
+ )
214
+
215
+ # Add all processed files to consolidator
216
+ for file_path in files_to_process:
217
+ try:
218
+ content = file_path.read_text(encoding='utf-8')
219
+ annotation = _extract_annotation(content)
220
+
221
+ if annotation:
222
+ # Parse annotations
223
+ annotations_dict = {
224
+ 'module_id': _extract_section(annotation, '⊢'),
225
+ 'dependencies': _extract_section(annotation, '∂'),
226
+ 'assumptions': _extract_section(annotation, '⚠'),
227
+ 'invariants': _extract_section(annotation, '⊨'),
228
+ 'security': _extract_section(annotation, '🔒'),
229
+ 'complexity': _extract_section(annotation, '⚡'),
230
+ }
231
+
232
+ # Create documented item
233
+ item = DocumentedItem(
234
+ name=AnnotationCategorizer.extract_name(str(file_path)),
235
+ file_path=str(file_path.relative_to(source_path)),
236
+ item_type=AnnotationCategorizer.detect_type(str(file_path), annotations_dict),
237
+ content=_generate_doc_for_file(file_path, 'markdown', include_private),
238
+ annotations=annotations_dict,
239
+ )
240
+
241
+ # Detect categories
242
+ item.domains = AnnotationCategorizer.detect_domains(str(file_path), annotations_dict)
243
+ item.concerns = AnnotationCategorizer.detect_concerns(annotations_dict)
244
+ item.layers = AnnotationCategorizer.detect_layers(str(file_path), annotations_dict)
245
+
246
+ consolidator.add_item(item)
247
+ except Exception as e:
248
+ click.secho(f" ⚠️ Failed to consolidate {file_path}: {e}", fg='yellow')
249
+
250
+ # Generate all consolidated docs
251
+ consolidated_docs = consolidator.generate_all()
252
+
253
+ # Write consolidated docs
254
+ for doc_path, doc_content in consolidated_docs.items():
255
+ full_path = output_path / doc_path
256
+ full_path.parent.mkdir(parents=True, exist_ok=True)
257
+ full_path.write_text(doc_content, encoding='utf-8')
258
+ click.echo(f" ✓ {doc_path}")
259
+
260
+ click.secho(f" ✓ Generated {len(consolidated_docs)} consolidated documents", fg='green')
261
+ except Exception as e:
262
+ click.secho(f" ⚠️ Consolidated documentation failed: {e}", fg='yellow')
263
+
205
264
  # Summary
206
265
  click.echo()
207
266
  click.echo("━" * 60)
package/lib/cli/init.py CHANGED
@@ -8,9 +8,9 @@
8
8
  """
9
9
 
10
10
  """
11
- VooDocs Init Command
11
+ Voodocs Init Command
12
12
 
13
- Interactive wizard to initialize or upgrade a project with VooDocs.
13
+ Interactive wizard to initialize or upgrade a project with Voodocs.
14
14
  Re-runnable to add missing features after upgrades.
15
15
  """
16
16
 
@@ -35,7 +35,7 @@ from typing import Optional, Dict, Any
35
35
  )
36
36
  def init(non_interactive, upgrade):
37
37
  """
38
- Initialize or upgrade a project with VooDocs.
38
+ Initialize or upgrade a project with Voodocs.
39
39
 
40
40
  This interactive wizard will:
41
41
  - Set up your project configuration
@@ -70,14 +70,14 @@ def init(non_interactive, upgrade):
70
70
  click.echo()
71
71
  if is_upgrade:
72
72
  click.echo(click.style('╔══════════════════════════════════════════╗', fg='yellow', bold=True))
73
- click.echo(click.style('║ 🔄 VooDocs Upgrade Wizard ║', fg='yellow', bold=True))
73
+ click.echo(click.style('║ 🔄 Voodocs Upgrade Wizard ║', fg='yellow', bold=True))
74
74
  click.echo(click.style('╚══════════════════════════════════════════╝', fg='yellow', bold=True))
75
75
  click.echo()
76
76
  click.echo(click.style('Existing configuration detected!', fg='yellow'))
77
77
  click.echo('This wizard will help you add any missing features.')
78
78
  else:
79
79
  click.echo(click.style('╔══════════════════════════════════════════╗', fg='cyan', bold=True))
80
- click.echo(click.style('║ 🎉 Welcome to VooDocs Setup Wizard ║', fg='cyan', bold=True))
80
+ click.echo(click.style('║ 🎉 Welcome to Voodocs Setup Wizard ║', fg='cyan', bold=True))
81
81
  click.echo(click.style('╚══════════════════════════════════════════╝', fg='cyan', bold=True))
82
82
  click.echo()
83
83
 
@@ -361,11 +361,11 @@ def init(non_interactive, upgrade):
361
361
  click.echo()
362
362
  if is_upgrade:
363
363
  click.echo(click.style('╔══════════════════════════════════════════╗', fg='green', bold=True))
364
- click.echo(click.style('║ ✅ VooDocs Upgrade Complete! ║', fg='green', bold=True))
364
+ click.echo(click.style('║ ✅ Voodocs Upgrade Complete! ║', fg='green', bold=True))
365
365
  click.echo(click.style('╚══════════════════════════════════════════╝', fg='green', bold=True))
366
366
  else:
367
367
  click.echo(click.style('╔══════════════════════════════════════════╗', fg='green', bold=True))
368
- click.echo(click.style('║ 🎉 VooDocs Setup Complete! ║', fg='green', bold=True))
368
+ click.echo(click.style('║ 🎉 Voodocs Setup Complete! ║', fg='green', bold=True))
369
369
  click.echo(click.style('╚══════════════════════════════════════════╝', fg='green', bold=True))
370
370
  click.echo()
371
371
  click.echo(click.style('Next steps:', fg='cyan', bold=True))
@@ -532,7 +532,7 @@ def _add_to_gitignore(cwd: Path, entry: str):
532
532
 
533
533
  if content and not content.endswith('\n'):
534
534
  content += '\n'
535
- content += f'\n# VooDocs\n{entry}\n'
535
+ content += f'\n# Voodocs\n{entry}\n'
536
536
 
537
537
  gitignore.write_text(content)
538
538
 
@@ -648,10 +648,10 @@ def _install_git_hooks(cwd: Path):
648
648
  pre_commit_hook = hooks_dir / 'pre-commit'
649
649
 
650
650
  hook_content = '''#!/bin/sh
651
- # VooDocs auto-update hook
651
+ # Voodocs auto-update hook
652
652
  # Updates context files before commit
653
653
 
654
- echo "🔄 Updating VooDocs context..."
654
+ echo "🔄 Updating Voodocs context..."
655
655
  voodocs generate --quiet 2>&1 || true
656
656
  git add context/
657
657
 
@@ -8,7 +8,7 @@
8
8
  """
9
9
 
10
10
  """
11
- VooDocs Instruct Command
11
+ Voodocs Instruct Command
12
12
 
13
13
  Generate AI-specific instructions for writing @darkarts annotations.
14
14
  """
@@ -8,7 +8,7 @@
8
8
  """
9
9
 
10
10
  """
11
- VooDocs CLI - Validate Command
11
+ Voodocs CLI - Validate Command
12
12
 
13
13
  Validates @darkarts annotations in Python files.
14
14
  """
@@ -309,7 +309,7 @@ def display_html_results(
309
309
  <!DOCTYPE html>
310
310
  <html>
311
311
  <head>
312
- <title>VooDocs Validation Report</title>
312
+ <title>Voodocs Validation Report</title>
313
313
  <style>
314
314
  body { font-family: Arial, sans-serif; margin: 20px; }
315
315
  h1 { color: #333; }
@@ -319,7 +319,7 @@ def display_html_results(
319
319
  </style>
320
320
  </head>
321
321
  <body>
322
- <h1>VooDocs Validation Report</h1>
322
+ <h1>Voodocs Validation Report</h1>
323
323
 
324
324
  <h2>Semantic Validation</h2>
325
325
  """