@timiagama/ecr 0.0.1 → 0.1.0

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 (138) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +16 -0
  3. package/README.md +411 -7
  4. package/dist/bin.d.ts +20 -0
  5. package/dist/bin.d.ts.map +1 -0
  6. package/dist/bin.js +26 -0
  7. package/dist/bin.js.map +1 -0
  8. package/dist/cli/corpus-loader.d.ts +198 -0
  9. package/dist/cli/corpus-loader.d.ts.map +1 -0
  10. package/dist/cli/corpus-loader.js +351 -0
  11. package/dist/cli/corpus-loader.js.map +1 -0
  12. package/dist/cli/corpus-statistics.d.ts +113 -0
  13. package/dist/cli/corpus-statistics.d.ts.map +1 -0
  14. package/dist/cli/corpus-statistics.js +119 -0
  15. package/dist/cli/corpus-statistics.js.map +1 -0
  16. package/dist/cli/diagnostic-reporter.d.ts +103 -0
  17. package/dist/cli/diagnostic-reporter.d.ts.map +1 -0
  18. package/dist/cli/diagnostic-reporter.js +254 -0
  19. package/dist/cli/diagnostic-reporter.js.map +1 -0
  20. package/dist/cli/project-ignore.d.ts +113 -0
  21. package/dist/cli/project-ignore.d.ts.map +1 -0
  22. package/dist/cli/project-ignore.js +199 -0
  23. package/dist/cli/project-ignore.js.map +1 -0
  24. package/dist/cli/safe-text.d.ts +25 -0
  25. package/dist/cli/safe-text.d.ts.map +1 -0
  26. package/dist/cli/safe-text.js +34 -0
  27. package/dist/cli/safe-text.js.map +1 -0
  28. package/dist/cli/supervisor.d.ts +108 -0
  29. package/dist/cli/supervisor.d.ts.map +1 -0
  30. package/dist/cli/supervisor.js +139 -0
  31. package/dist/cli/supervisor.js.map +1 -0
  32. package/dist/cli.d.ts +247 -0
  33. package/dist/cli.d.ts.map +1 -0
  34. package/dist/cli.js +591 -0
  35. package/dist/cli.js.map +1 -0
  36. package/dist/corpus-validator.d.ts +183 -0
  37. package/dist/corpus-validator.d.ts.map +1 -0
  38. package/dist/corpus-validator.js +479 -0
  39. package/dist/corpus-validator.js.map +1 -0
  40. package/dist/document-identity-rule.d.ts +198 -0
  41. package/dist/document-identity-rule.d.ts.map +1 -0
  42. package/dist/document-identity-rule.js +244 -0
  43. package/dist/document-identity-rule.js.map +1 -0
  44. package/dist/ecr.d.ts +103 -0
  45. package/dist/ecr.d.ts.map +1 -0
  46. package/dist/ecr.js +216 -0
  47. package/dist/ecr.js.map +1 -0
  48. package/dist/glob-pattern.d.ts +94 -0
  49. package/dist/glob-pattern.d.ts.map +1 -0
  50. package/dist/glob-pattern.js +188 -0
  51. package/dist/glob-pattern.js.map +1 -0
  52. package/dist/heading-source-form.d.ts +77 -0
  53. package/dist/heading-source-form.d.ts.map +1 -0
  54. package/dist/heading-source-form.js +129 -0
  55. package/dist/heading-source-form.js.map +1 -0
  56. package/dist/identifier-grammar.d.ts +212 -0
  57. package/dist/identifier-grammar.d.ts.map +1 -0
  58. package/dist/identifier-grammar.js +273 -0
  59. package/dist/identifier-grammar.js.map +1 -0
  60. package/dist/index.d.ts +19 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +11 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/inline-reference-rule.d.ts +557 -0
  65. package/dist/inline-reference-rule.d.ts.map +1 -0
  66. package/dist/inline-reference-rule.js +802 -0
  67. package/dist/inline-reference-rule.js.map +1 -0
  68. package/dist/meta-documents.d.ts +91 -0
  69. package/dist/meta-documents.d.ts.map +1 -0
  70. package/dist/meta-documents.js +133 -0
  71. package/dist/meta-documents.js.map +1 -0
  72. package/dist/per-document-visitor.d.ts +510 -0
  73. package/dist/per-document-visitor.d.ts.map +1 -0
  74. package/dist/per-document-visitor.js +1032 -0
  75. package/dist/per-document-visitor.js.map +1 -0
  76. package/dist/references-section-rule.d.ts +482 -0
  77. package/dist/references-section-rule.d.ts.map +1 -0
  78. package/dist/references-section-rule.js +777 -0
  79. package/dist/references-section-rule.js.map +1 -0
  80. package/dist/section-hierarchy-rule.d.ts +299 -0
  81. package/dist/section-hierarchy-rule.d.ts.map +1 -0
  82. package/dist/section-hierarchy-rule.js +482 -0
  83. package/dist/section-hierarchy-rule.js.map +1 -0
  84. package/dist/source-alignment.d.ts +41 -0
  85. package/dist/source-alignment.d.ts.map +1 -0
  86. package/dist/source-alignment.js +166 -0
  87. package/dist/source-alignment.js.map +1 -0
  88. package/dist/source-lines.d.ts +69 -0
  89. package/dist/source-lines.d.ts.map +1 -0
  90. package/dist/source-lines.js +104 -0
  91. package/dist/source-lines.js.map +1 -0
  92. package/dist/spec-version.d.ts +19 -0
  93. package/dist/spec-version.d.ts.map +1 -0
  94. package/dist/spec-version.js +19 -0
  95. package/dist/spec-version.js.map +1 -0
  96. package/dist/types.d.ts +219 -0
  97. package/dist/types.d.ts.map +1 -0
  98. package/dist/types.js +11 -0
  99. package/dist/types.js.map +1 -0
  100. package/examples/docs/0. Orientation/0.0 - System Overview.md +34 -0
  101. package/examples/docs/0. Orientation/0.0.1 - Glossary.md +21 -0
  102. package/examples/docs/0. Orientation/0.0.2 - Quality Gates.md +22 -0
  103. package/examples/docs/3. Ingestion/3.1 - Ingestion - Validation Rules.md +33 -0
  104. package/examples/docs/4. Payments/4.10 - Settlement.md +22 -0
  105. package/examples/docs/4. Payments/4.2 - Payment Processing Contract.md +33 -0
  106. package/examples/docs/8. Orchestration/8.1 - Workflow Orchestration Contract.md +38 -0
  107. package/examples/docs/8. Orchestration/8.1.3 - Retry Policy.md +17 -0
  108. package/examples/docs/8. Orchestration/8.10 - Dead Letter Queue.md +20 -0
  109. package/examples/docs/README.md +7 -0
  110. package/package.json +65 -7
  111. package/protocol/navigation-protocol.md +223 -0
  112. package/spec/v2/1 - ECR - Structural Specification.md +1467 -0
  113. package/spec/v2/2 - ECR - User Guide.md +845 -0
  114. package/spec/v2/3 - Design Rationale - The Section Separator.md +243 -0
  115. package/src/bin.ts +30 -0
  116. package/src/cli/corpus-loader.ts +482 -0
  117. package/src/cli/corpus-statistics.ts +196 -0
  118. package/src/cli/diagnostic-reporter.ts +344 -0
  119. package/src/cli/project-ignore.ts +238 -0
  120. package/src/cli/safe-text.ts +39 -0
  121. package/src/cli/supervisor.ts +204 -0
  122. package/src/cli.ts +836 -0
  123. package/src/corpus-validator.ts +642 -0
  124. package/src/document-identity-rule.ts +422 -0
  125. package/src/ecr.ts +298 -0
  126. package/src/glob-pattern.ts +242 -0
  127. package/src/heading-source-form.ts +173 -0
  128. package/src/identifier-grammar.ts +380 -0
  129. package/src/index.ts +78 -0
  130. package/src/inline-reference-rule.ts +1235 -0
  131. package/src/meta-documents.ts +159 -0
  132. package/src/per-document-visitor.ts +1528 -0
  133. package/src/references-section-rule.ts +1182 -0
  134. package/src/section-hierarchy-rule.ts +705 -0
  135. package/src/source-alignment.ts +209 -0
  136. package/src/source-lines.ts +123 -0
  137. package/src/spec-version.ts +19 -0
  138. package/src/types.ts +267 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-reference-rule.js","sourceRoot":"","sources":["../src/inline-reference-rule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Meta-Document Filtering
3
+ *
4
+ * ECR governs *architectural* documents — those that carry a DocID and
5
+ * participate in the reference graph. A corpus also contains documents that
6
+ * deliberately sit outside that graph: READMEs, agent instruction files,
7
+ * contributing guides, changelogs and licences. These have no DocID by design
8
+ * and must not be reported as structurally invalid.
9
+ *
10
+ * File discovery is the host's responsibility (spec 1#3.2), so this module is
11
+ * offered for hosts to apply when assembling a corpus rather than being
12
+ * enforced inside the rules themselves.
13
+ */
14
+ /**
15
+ * Filenames that are conventionally outside the ECR reference graph.
16
+ *
17
+ * Matching is case-insensitive and ignores the file extension, so `README.md`,
18
+ * `readme.MD` and `Readme` are all treated alike.
19
+ */
20
+ export declare const DEFAULT_META_DOCUMENT_NAMES: readonly string[];
21
+ /**
22
+ * Decides which documents in a corpus are meta-documents and therefore exempt
23
+ * from ECR structural validation.
24
+ *
25
+ * A document is exempt when its filename matches a known meta-document name, or
26
+ * when its path matches one of the caller-supplied ignore patterns.
27
+ *
28
+ * Ignore patterns use a minimal glob syntax: `*` matches any run of characters
29
+ * except `/`, and `**` matches any run of characters including `/`. Patterns are
30
+ * matched against the document's corpus-relative path using forward slashes.
31
+ */
32
+ export declare class MetaDocumentFilter {
33
+ /** Lower-cased filenames treated as meta-documents. */
34
+ private readonly metaDocumentNames;
35
+ /** Compiled ignore patterns supplied by the caller. */
36
+ private readonly ignorePatterns;
37
+ /**
38
+ * Compiled directory parts of the ignore patterns that exclude everything
39
+ * beneath a directory: those ending in slash-double-star, and `**` itself.
40
+ */
41
+ private readonly ignoredDirectoryPatterns;
42
+ /**
43
+ * Creates a filter.
44
+ *
45
+ * @param ignorePatterns - Additional glob patterns to exclude, matched against the corpus-relative path
46
+ * @param metaDocumentNames - Filenames treated as meta-documents; defaults to {@link DEFAULT_META_DOCUMENT_NAMES}
47
+ */
48
+ constructor(ignorePatterns?: readonly string[], metaDocumentNames?: readonly string[]);
49
+ /**
50
+ * Determines whether a document should be excluded from ECR validation.
51
+ *
52
+ * @param corpusRelativePath - The document's path relative to the corpus root, using forward slashes
53
+ * @returns `true` when the document is a meta-document or matches an ignore pattern
54
+ */
55
+ shouldExclude(corpusRelativePath: string): boolean;
56
+ /**
57
+ * Determines whether a path names a conventional meta-document.
58
+ *
59
+ * @param corpusRelativePath - The document's path relative to the corpus root
60
+ * @returns `true` when the filename, without extension, is a known meta-document name
61
+ */
62
+ isMetaDocument(corpusRelativePath: string): boolean;
63
+ /**
64
+ * Determines whether a path matches any caller-supplied ignore pattern.
65
+ *
66
+ * @param corpusRelativePath - The document's path relative to the corpus root
67
+ * @returns `true` when at least one ignore pattern matches
68
+ */
69
+ matchesIgnorePattern(corpusRelativePath: string): boolean;
70
+ /**
71
+ * Determines whether an ignore pattern excludes every path beneath a
72
+ * directory, so that the directory need not be walked at all.
73
+ *
74
+ * Only a pattern ending in slash-double-star (or `**` alone) says so: `vendor/**`
75
+ * excludes all of `vendor`, but `vendor/*` excludes only the files directly
76
+ * inside it, so `vendor` must still be walked for `vendor/a/b.md`.
77
+ *
78
+ * @param corpusRelativeDirectory - The directory's path relative to the corpus root, using forward slashes, without a trailing slash
79
+ * @returns `true` when no path beneath the directory could be included
80
+ */
81
+ excludesDirectory(corpusRelativeDirectory: string): boolean;
82
+ /**
83
+ * Reads the directory part of an ignore pattern that excludes a whole
84
+ * directory.
85
+ *
86
+ * @param pattern - An ignore pattern
87
+ * @returns The pattern for the excluded directories, or `undefined` when the pattern does not exclude whole directories
88
+ */
89
+ private static readIgnoredDirectory;
90
+ }
91
+ //# sourceMappingURL=meta-documents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-documents.d.ts","sourceRoot":"","sources":["../src/meta-documents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAgBxD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,qBAAa,kBAAkB;IAC7B,uDAAuD;IACvD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsB;IAExD,uDAAuD;IACvD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IAExD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAyB;IAElE;;;;;OAKG;gBAED,cAAc,GAAE,SAAS,MAAM,EAAO,EACtC,iBAAiB,GAAE,SAAS,MAAM,EAAgC;IAcpE;;;;;OAKG;IACI,aAAa,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO;IAOzD;;;;;OAKG;IACI,cAAc,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO;IAU1D;;;;;OAKG;IACI,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO;IAMhE;;;;;;;;;;OAUG;IACI,iBAAiB,CAAC,uBAAuB,EAAE,MAAM,GAAG,OAAO;IAMlE;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;CAOpC"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Meta-Document Filtering
3
+ *
4
+ * ECR governs *architectural* documents — those that carry a DocID and
5
+ * participate in the reference graph. A corpus also contains documents that
6
+ * deliberately sit outside that graph: READMEs, agent instruction files,
7
+ * contributing guides, changelogs and licences. These have no DocID by design
8
+ * and must not be reported as structurally invalid.
9
+ *
10
+ * File discovery is the host's responsibility (spec 1#3.2), so this module is
11
+ * offered for hosts to apply when assembling a corpus rather than being
12
+ * enforced inside the rules themselves.
13
+ */
14
+ import { GlobPattern } from './glob-pattern.js';
15
+ /**
16
+ * Filenames that are conventionally outside the ECR reference graph.
17
+ *
18
+ * Matching is case-insensitive and ignores the file extension, so `README.md`,
19
+ * `readme.MD` and `Readme` are all treated alike.
20
+ */
21
+ export const DEFAULT_META_DOCUMENT_NAMES = [
22
+ // The name `ecr init` once gave the navigation protocol when it wrote it into
23
+ // a corpus. The protocol carries no DocID by design, so a copy kept in a
24
+ // corpus under that name must not be reported as an invalid document.
25
+ 'ecr-navigation-protocol',
26
+ 'readme',
27
+ 'claude',
28
+ 'agents',
29
+ 'contributing',
30
+ 'changelog',
31
+ 'license',
32
+ 'licence',
33
+ 'code_of_conduct',
34
+ 'security',
35
+ 'authors',
36
+ 'notice',
37
+ ];
38
+ /**
39
+ * Decides which documents in a corpus are meta-documents and therefore exempt
40
+ * from ECR structural validation.
41
+ *
42
+ * A document is exempt when its filename matches a known meta-document name, or
43
+ * when its path matches one of the caller-supplied ignore patterns.
44
+ *
45
+ * Ignore patterns use a minimal glob syntax: `*` matches any run of characters
46
+ * except `/`, and `**` matches any run of characters including `/`. Patterns are
47
+ * matched against the document's corpus-relative path using forward slashes.
48
+ */
49
+ export class MetaDocumentFilter {
50
+ /** Lower-cased filenames treated as meta-documents. */
51
+ metaDocumentNames;
52
+ /** Compiled ignore patterns supplied by the caller. */
53
+ ignorePatterns;
54
+ /**
55
+ * Compiled directory parts of the ignore patterns that exclude everything
56
+ * beneath a directory: those ending in slash-double-star, and `**` itself.
57
+ */
58
+ ignoredDirectoryPatterns;
59
+ /**
60
+ * Creates a filter.
61
+ *
62
+ * @param ignorePatterns - Additional glob patterns to exclude, matched against the corpus-relative path
63
+ * @param metaDocumentNames - Filenames treated as meta-documents; defaults to {@link DEFAULT_META_DOCUMENT_NAMES}
64
+ */
65
+ constructor(ignorePatterns = [], metaDocumentNames = DEFAULT_META_DOCUMENT_NAMES) {
66
+ this.metaDocumentNames = new Set(metaDocumentNames.map((name) => name.toLowerCase()));
67
+ this.ignorePatterns = ignorePatterns.map((pattern) => new GlobPattern(pattern));
68
+ this.ignoredDirectoryPatterns = ignorePatterns
69
+ .map((pattern) => MetaDocumentFilter.readIgnoredDirectory(pattern))
70
+ .filter((directory) => directory !== undefined)
71
+ .map((directory) => new GlobPattern(directory));
72
+ }
73
+ /**
74
+ * Determines whether a document should be excluded from ECR validation.
75
+ *
76
+ * @param corpusRelativePath - The document's path relative to the corpus root, using forward slashes
77
+ * @returns `true` when the document is a meta-document or matches an ignore pattern
78
+ */
79
+ shouldExclude(corpusRelativePath) {
80
+ return (this.isMetaDocument(corpusRelativePath) ||
81
+ this.matchesIgnorePattern(corpusRelativePath));
82
+ }
83
+ /**
84
+ * Determines whether a path names a conventional meta-document.
85
+ *
86
+ * @param corpusRelativePath - The document's path relative to the corpus root
87
+ * @returns `true` when the filename, without extension, is a known meta-document name
88
+ */
89
+ isMetaDocument(corpusRelativePath) {
90
+ const lastSlashIndex = corpusRelativePath.lastIndexOf('/');
91
+ const fileName = corpusRelativePath.substring(lastSlashIndex + 1);
92
+ const lastDotIndex = fileName.lastIndexOf('.');
93
+ const baseName = lastDotIndex > 0 ? fileName.substring(0, lastDotIndex) : fileName;
94
+ return this.metaDocumentNames.has(baseName.toLowerCase());
95
+ }
96
+ /**
97
+ * Determines whether a path matches any caller-supplied ignore pattern.
98
+ *
99
+ * @param corpusRelativePath - The document's path relative to the corpus root
100
+ * @returns `true` when at least one ignore pattern matches
101
+ */
102
+ matchesIgnorePattern(corpusRelativePath) {
103
+ return this.ignorePatterns.some((pattern) => pattern.matches(corpusRelativePath));
104
+ }
105
+ /**
106
+ * Determines whether an ignore pattern excludes every path beneath a
107
+ * directory, so that the directory need not be walked at all.
108
+ *
109
+ * Only a pattern ending in slash-double-star (or `**` alone) says so: `vendor/**`
110
+ * excludes all of `vendor`, but `vendor/*` excludes only the files directly
111
+ * inside it, so `vendor` must still be walked for `vendor/a/b.md`.
112
+ *
113
+ * @param corpusRelativeDirectory - The directory's path relative to the corpus root, using forward slashes, without a trailing slash
114
+ * @returns `true` when no path beneath the directory could be included
115
+ */
116
+ excludesDirectory(corpusRelativeDirectory) {
117
+ return this.ignoredDirectoryPatterns.some((pattern) => pattern.matches(corpusRelativeDirectory));
118
+ }
119
+ /**
120
+ * Reads the directory part of an ignore pattern that excludes a whole
121
+ * directory.
122
+ *
123
+ * @param pattern - An ignore pattern
124
+ * @returns The pattern for the excluded directories, or `undefined` when the pattern does not exclude whole directories
125
+ */
126
+ static readIgnoredDirectory(pattern) {
127
+ if (pattern === '**') {
128
+ return pattern;
129
+ }
130
+ return pattern.endsWith('/**') ? pattern.slice(0, -'/**'.length) : undefined;
131
+ }
132
+ }
133
+ //# sourceMappingURL=meta-documents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-documents.js","sourceRoot":"","sources":["../src/meta-documents.ts"],"names":[],"mappings":"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"}