@voodocs/cli 3.0.3 → 3.0.6

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.
@@ -16,7 +16,7 @@ This module provides the command-line interface for VooDocs.
16
16
  import click
17
17
  from typing import Optional
18
18
 
19
- __version__ = "3.0.3"
19
+ __version__ = "3.0.6"
20
20
 
21
21
 
22
22
  @click.group()
@@ -651,6 +651,8 @@ class AnnotationParser:
651
651
  module.dependencies = annotations['dependencies'] if isinstance(annotations['dependencies'], list) else [annotations['dependencies']]
652
652
  if 'assumptions' in annotations:
653
653
  module.assumptions = annotations['assumptions'] if isinstance(annotations['assumptions'], list) else [annotations['assumptions']]
654
+ if 'invariants' in annotations:
655
+ module.invariants = annotations['invariants'] if isinstance(annotations['invariants'], list) else [annotations['invariants']]
654
656
 
655
657
  def _apply_class_annotations(self, cls: ClassAnnotation, annotations: Dict[str, Any]):
656
658
  """Apply annotations to a class."""
@@ -918,10 +920,13 @@ class AnnotationParser:
918
920
 
919
921
  def _overlay_annotations(self, structure: ParsedAnnotations, annotations_by_line: Dict[int, Any]) -> ParsedAnnotations:
920
922
  """Overlay parsed annotations onto code structure by matching line numbers."""
923
+ # Find the first code element line number
924
+ first_code_line = self._get_first_code_line(structure)
925
+
921
926
  # Match annotations to code elements by finding the closest following element
922
927
  for line_num, annotation in annotations_by_line.items():
923
928
  # Check if this is a module-level annotation (appears before any code)
924
- if self._is_module_annotation(annotation):
929
+ if self._is_module_annotation(annotation, line_num, first_code_line):
925
930
  self._apply_module_annotation_from_darkarts(structure.module, annotation)
926
931
  continue
927
932
 
@@ -957,9 +962,31 @@ class AnnotationParser:
957
962
 
958
963
  return structure
959
964
 
960
- def _is_module_annotation(self, annotation: Any) -> bool:
961
- """Check if annotation is module-level."""
962
- return hasattr(annotation, 'module') and annotation.module
965
+ def _get_first_code_line(self, structure: ParsedAnnotations) -> int:
966
+ """Get the line number of the first code element (function or class)."""
967
+ min_line = float('inf')
968
+
969
+ # Check all functions
970
+ for func in structure.module.functions:
971
+ if func.line_number > 0 and func.line_number < min_line:
972
+ min_line = func.line_number
973
+
974
+ # Check all classes
975
+ for cls in structure.module.classes:
976
+ if cls.line_number > 0 and cls.line_number < min_line:
977
+ min_line = cls.line_number
978
+
979
+ return min_line if min_line != float('inf') else 999999
980
+
981
+ def _is_module_annotation(self, annotation: Any, line_num: int, first_code_line: int) -> bool:
982
+ """Check if annotation is module-level (has ⊢{} and appears before first code element)."""
983
+ # Must have module purpose (⊢{})
984
+ if not (hasattr(annotation, 'module') and annotation.module):
985
+ return False
986
+
987
+ # Must appear before the first function/class
988
+ # Allow up to 5 lines before first code element for module annotation
989
+ return line_num < first_code_line
963
990
 
964
991
  def _apply_module_annotation_from_darkarts(self, module: ModuleAnnotation, annotation: Any):
965
992
  """Apply @darkarts annotation to module."""
@@ -121,6 +121,7 @@ class ModuleAnnotation:
121
121
  module_purpose: Optional[str] = None
122
122
  dependencies: List[str] = field(default_factory=list)
123
123
  assumptions: List[str] = field(default_factory=list)
124
+ invariants: List[str] = field(default_factory=list)
124
125
 
125
126
  # Classes and functions in this module
126
127
  classes: List[ClassAnnotation] = field(default_factory=list)
@@ -91,7 +91,7 @@ export declare class TypeScriptAnnotationParser {
91
91
  */
92
92
  private getLeadingComments;
93
93
  /**
94
- * Check if a comment contains @voodocs annotation
94
+ * Check if a comment contains @darkarts or @voodocs annotation
95
95
  */
96
96
  private isDarkArtsComment;
97
97
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,UAAU,UAAU;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,UAAU,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,CAAC;IACxB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,UAAU,CAAC;IAC/B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,UAAU,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,qBAAa,0BAA0B;IAIzB,OAAO,CAAC,QAAQ;IAH5B,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,UAAU,CAAS;gBAEP,QAAQ,EAAE,MAAM;IAUpC;;OAEG;IACI,KAAK,IAAI,WAAW;IAyC3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;OAEG;IACH,OAAO,CAAC,UAAU;IA2BlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA6B9B;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAQvC;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAOvC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2C3B;;OAEG;IACH,OAAO,CAAC,UAAU;IAmElB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,OAAO;IAQf;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,OAAO,CAAC,aAAa;CAItB"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,UAAU,UAAU;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,UAAU,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,CAAC;IACxB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,UAAU,CAAC;IAC/B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,UAAU,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,qBAAa,0BAA0B;IAIzB,OAAO,CAAC,QAAQ;IAH5B,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,UAAU,CAAS;gBAEP,QAAQ,EAAE,MAAM;IAUpC;;OAEG;IACI,KAAK,IAAI,WAAW;IAyC3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;OAEG;IACH,OAAO,CAAC,UAAU;IA2BlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA6B9B;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAQvC;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAOvC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4C3B;;OAEG;IACH,OAAO,CAAC,UAAU;IAmElB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,OAAO;IAQf;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,OAAO,CAAC,aAAa;CAItB"}
@@ -270,10 +270,10 @@ class TypeScriptAnnotationParser {
270
270
  return comments;
271
271
  }
272
272
  /**
273
- * Check if a comment contains @voodocs annotation
273
+ * Check if a comment contains @darkarts or @voodocs annotation
274
274
  */
275
275
  isDarkArtsComment(comment) {
276
- return comment.includes('@voodocs');
276
+ return comment.includes('@darkarts') || comment.includes('@voodocs');
277
277
  }
278
278
  /**
279
279
  * Parse the annotation text and extract key-value pairs
@@ -283,7 +283,8 @@ class TypeScriptAnnotationParser {
283
283
  // Remove comment markers
284
284
  let text = comment.replace(/^\/\*\*?|\*\/$/g, '').trim();
285
285
  text = text.replace(/^\s*\*\s?/gm, ''); // Remove leading asterisks
286
- // Remove @voodocs marker
286
+ // Remove @darkarts or @voodocs marker
287
+ text = text.replace(/@darkarts\s*/i, '');
287
288
  text = text.replace(/@voodocs\s*/i, '');
288
289
  // Parse key-value pairs
289
290
  const lines = text.split('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
@@ -301,10 +301,10 @@ export class TypeScriptAnnotationParser {
301
301
  }
302
302
 
303
303
  /**
304
- * Check if a comment contains @voodocs annotation
304
+ * Check if a comment contains @darkarts or @voodocs annotation
305
305
  */
306
306
  private isDarkArtsComment(comment: string): boolean {
307
- return comment.includes('@voodocs');
307
+ return comment.includes('@darkarts') || comment.includes('@voodocs');
308
308
  }
309
309
 
310
310
  /**
@@ -317,7 +317,8 @@ export class TypeScriptAnnotationParser {
317
317
  let text = comment.replace(/^\/\*\*?|\*\/$/g, '').trim();
318
318
  text = text.replace(/^\s*\*\s?/gm, ''); // Remove leading asterisks
319
319
 
320
- // Remove @voodocs marker
320
+ // Remove @darkarts or @voodocs marker
321
+ text = text.replace(/@darkarts\s*/i, '');
321
322
  text = text.replace(/@voodocs\s*/i, '');
322
323
 
323
324
  // Parse key-value pairs
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voodocs/cli",
3
- "version": "3.0.3",
3
+ "version": "3.0.6",
4
4
  "description": "AI-Native Symbolic Documentation System - The world's first documentation tool using mathematical notation with semantic validation",
5
5
  "main": "voodocs_cli.py",
6
6
  "bin": {
@@ -1,75 +1,112 @@
1
1
  # Project-Level DarkArts Annotations
2
2
 
3
- This file contains project-wide annotations that apply to the entire codebase.
3
+ # @darkarts
4
+ # ⊢{distributed microservices platform}
5
+ # ⊨{∀service→isolated-db, ∀api→authenticated, ∀transaction→idempotent}
6
+ # ⊣{postgres≥14, redis≥7, kubernetes≥1.24}
7
+ # ⚠{kubernetes≥1.24, postgres≥14, redis≥7.0, node≥18}
4
8
 
5
- ## Usage
9
+ ## About This File
10
+
11
+ This file contains **project-wide annotations** that apply to the entire codebase.
6
12
 
7
13
  Place this file in your project root as `PROJECT.darkarts.md` and it will be automatically detected by `voodocs context generate`.
8
14
 
9
- ## Syntax
15
+ ## How to Use
10
16
 
11
- Use standard @darkarts symbolic notation:
17
+ **Important:** Annotations must use Python comment syntax (`#`) at the start of each line, not markdown code blocks.
12
18
 
19
+ ### Correct Format:
13
20
  ```
14
- @darkarts
15
- ⊢{project purpose}
16
- ⊨{global invariants}
17
- ⊣{system-wide assumptions}
18
- ⚠{technology requirements}
21
+ # @darkarts
22
+ # ⊢{your project purpose}
23
+ # ⊨{global invariant 1, global invariant 2}
24
+ # ⊣{assumption 1, assumption 2}
25
+ # ⚠{requirement 1, requirement 2}
19
26
  ```
20
27
 
21
- ---
22
-
23
- ## Example: Project-Level Annotations
24
-
28
+ ### Incorrect Format (won't work):
25
29
  ```markdown
26
30
  @darkarts
27
- ⊢{distributed microservices platform for AI-powered financial services}
28
-
29
- ⊨{
30
- ∀service→isolated-db,
31
- ∀api→authenticated,
32
- ∀transaction→idempotent,
33
- ∀data→encrypted-at-rest,
34
- consistency:eventual
35
- }
36
-
37
- ⊣{
38
- postgres≥14 available,
39
- redis cluster available,
40
- kubernetes cluster available,
41
- all services use UTC timestamps,
42
- all APIs use JSON
43
- }
44
-
45
- ⚠{
46
- kubernetes≥1.24,
47
- postgres≥14,
48
- redis≥7.0,
49
- node≥18,
50
- python≥3.11
51
- }
31
+ ⊢{your project purpose}
52
32
  ```
53
33
 
54
- ---
34
+ ## Symbolic Notation Reference
35
+
36
+ - `⊢{}` - Project purpose/description
37
+ - `⊨{}` - Global invariants (system-wide rules that must always hold)
38
+ - `⊣{}` - System-wide assumptions (what the system depends on)
39
+ - `⚠{}` - Technology requirements (versions, dependencies)
40
+ - `∂{}` - Dependencies (external systems, services)
41
+
42
+ ## Example: Real Project Annotations
43
+
44
+ ```
45
+ # @darkarts
46
+ # ⊢{3NS: Decentralized naming system with dual-layer resolution (on-chain + off-chain cache)}
47
+ #
48
+ # ⊨{
49
+ # UUTRegister contract is source of truth,
50
+ # PostgreSQL is cache only,
51
+ # All database access enforced by Supabase RLS,
52
+ # 3Pay is generic infrastructure - no domain logic,
53
+ # All domain-specific logic in plugins
54
+ # }
55
+ #
56
+ # ⊣{
57
+ # Supabase RLS policies enforce all access,
58
+ # PostgreSQL cache can be rebuilt from blockchain,
59
+ # UUTRegister contract is immutable,
60
+ # All services use UTC timestamps
61
+ # }
62
+ #
63
+ # ⚠{
64
+ # supabase-js≥2.0,
65
+ # postgres≥14,
66
+ # node≥18,
67
+ # typescript≥5.0
68
+ # }
69
+ ```
55
70
 
56
71
  ## Architecture Decisions
57
72
 
58
- You can also document architecture decisions in plain Markdown:
73
+ You can also document architecture decisions in plain Markdown below the annotations:
59
74
 
60
- ### Decision: Event-Driven Architecture
75
+ ### Decision: Separated 3Pay as Generic Infrastructure (PRINCIPLE_6)
61
76
 
62
- **Rationale:** Enables loose coupling between services and supports eventual consistency model.
77
+ **Date:** 2024-12
63
78
 
64
- **Alternatives Considered:**
65
- - Synchronous REST APIs (rejected: tight coupling, cascading failures)
66
- - GraphQL federation (rejected: complexity overhead)
79
+ **Rationale:** 3Pay should be reusable across different domain systems, not tied to 3NS-specific logic.
80
+
81
+ **What Changed:**
82
+ - Moved all domain-specific logic to plugins
83
+ - 3Pay now handles only: payments, subscriptions, credits
84
+ - Domain resolution logic stays in 3NS
67
85
 
68
86
  **Trade-offs:**
69
- - ✅ Better scalability and resilience
70
- - ✅ Easier to add new services
71
- - ❌ More complex debugging
72
- - ❌ Requires event schema management
87
+ - ✅ 3Pay can be reused for other projects
88
+ - ✅ Cleaner separation of concerns
89
+ - ❌ Slightly more complex plugin system
90
+
91
+ ---
92
+
93
+ ### Decision: PostgreSQL as Cache, UUTRegister as Source of Truth
94
+
95
+ **Date:** 2024-11
96
+
97
+ **Rationale:** Blockchain data is immutable and authoritative; PostgreSQL provides fast queries.
98
+
99
+ **Implementation:**
100
+ - UUTRegister contract stores all domain registrations
101
+ - PostgreSQL caches data for fast lookups
102
+ - Cache can be rebuilt from blockchain at any time
103
+ - Supabase RLS enforces access control
104
+
105
+ **Trade-offs:**
106
+ - ✅ Fast queries via PostgreSQL
107
+ - ✅ Authoritative data on blockchain
108
+ - ✅ Can rebuild cache if corrupted
109
+ - ❌ Requires cache synchronization logic
73
110
 
74
111
  ---
75
112
 
@@ -77,11 +114,11 @@ You can also document architecture decisions in plain Markdown:
77
114
 
78
115
  Document system-wide invariants that must hold across all services:
79
116
 
80
- - All user data must be encrypted at rest
81
- - All API endpoints must require authentication
82
- - All database transactions must be idempotent
83
- - All timestamps must use UTC
84
- - All monetary amounts must use decimal types (never float)
117
+ - **Database Access:** All database access must go through Supabase RLS (no direct PostgreSQL access)
118
+ - **Source of Truth:** UUTRegister contract is the only source of truth for domain ownership
119
+ - **Cache Consistency:** PostgreSQL cache must be rebuildable from blockchain
120
+ - **Generic Infrastructure:** 3Pay must remain generic (no domain-specific logic)
121
+ - **Plugin Isolation:** All domain-specific logic must be in plugins, not core
85
122
 
86
123
  ---
87
124
 
@@ -89,23 +126,25 @@ Document system-wide invariants that must hold across all services:
89
126
 
90
127
  Document assumptions that the entire system relies on:
91
128
 
92
- - PostgreSQL is always available (99.9% SLA)
93
- - Redis is used only for caching (not source of truth)
94
- - All services can communicate via internal network
95
- - Clock skew between services is < 1 second
96
- - All services use the same authentication service
129
+ - **Supabase RLS:** RLS policies correctly enforce all access control
130
+ - **Blockchain Availability:** UUTRegister contract is always accessible
131
+ - **Cache Rebuild:** PostgreSQL can be rebuilt from blockchain if needed
132
+ - **UTC Timestamps:** All services use UTC for timestamps
133
+ - **Immutable Contracts:** Smart contracts are immutable after deployment
97
134
 
98
135
  ---
99
136
 
100
137
  ## Technology Stack
101
138
 
102
- Document the standard technology stack for the project:
103
-
104
139
  **Backend:**
105
140
  - Node.js 18+ (TypeScript)
106
- - Python 3.11+ (FastAPI)
107
- - PostgreSQL 14+
108
- - Redis 7.0+
141
+ - Supabase (PostgreSQL + Auth + RLS)
142
+ - Web3.js / Ethers.js (blockchain interaction)
143
+
144
+ **Smart Contracts:**
145
+ - Solidity 0.8+
146
+ - Hardhat (development)
147
+ - UUTRegister (domain registry)
109
148
 
110
149
  **Frontend:**
111
150
  - React 18+
@@ -113,16 +152,18 @@ Document the standard technology stack for the project:
113
152
  - TailwindCSS 3+
114
153
 
115
154
  **Infrastructure:**
116
- - Kubernetes 1.24+
117
- - Docker
118
- - GitHub Actions (CI/CD)
155
+ - Supabase (hosted PostgreSQL)
156
+ - Vercel / Netlify (frontend hosting)
157
+ - Ethereum / Polygon (blockchain)
119
158
 
120
159
  ---
121
160
 
122
161
  ## Notes
123
162
 
124
- - This file is parsed by `voodocs context generate`
125
- - Annotations in this file are added to the `.voodocs.context` file
126
- - Global invariants from this file appear in the "Global Invariants" section
127
- - Architecture decisions can be written in plain Markdown
128
- - This file should be version controlled alongside your code
163
+ - This file is parsed by `voodocs context generate`
164
+ - Annotations must use `#` comment syntax (Python style)
165
+ - Global invariants from this file appear in `.voodocs.context`
166
+ - Architecture decisions can be written in plain Markdown
167
+ - This file should be version controlled alongside your code
168
+ - ❌ Don't use markdown code blocks for annotations (won't be parsed)
169
+ - ❌ Don't forget the `#` at the start of each annotation line