@eddacraft/anvil-runtime 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 (170) hide show
  1. package/LICENSE +14 -0
  2. package/dist/cache/cache-key.d.ts +45 -0
  3. package/dist/cache/cache-key.d.ts.map +1 -0
  4. package/dist/cache/cache-key.js +135 -0
  5. package/dist/cache/index.d.ts +27 -0
  6. package/dist/cache/index.d.ts.map +1 -0
  7. package/dist/cache/index.js +38 -0
  8. package/dist/cache/providers/file-cache.d.ts +63 -0
  9. package/dist/cache/providers/file-cache.d.ts.map +1 -0
  10. package/dist/cache/providers/file-cache.js +369 -0
  11. package/dist/cache/providers/memory-cache.d.ts +52 -0
  12. package/dist/cache/providers/memory-cache.d.ts.map +1 -0
  13. package/dist/cache/providers/memory-cache.js +197 -0
  14. package/dist/cache/providers/null-cache.d.ts +26 -0
  15. package/dist/cache/providers/null-cache.d.ts.map +1 -0
  16. package/dist/cache/providers/null-cache.js +50 -0
  17. package/dist/cache/types.d.ts +114 -0
  18. package/dist/cache/types.d.ts.map +1 -0
  19. package/dist/cache/types.js +4 -0
  20. package/dist/concurrency/agent.d.ts +137 -0
  21. package/dist/concurrency/agent.d.ts.map +1 -0
  22. package/dist/concurrency/agent.js +440 -0
  23. package/dist/concurrency/atomic.d.ts +93 -0
  24. package/dist/concurrency/atomic.d.ts.map +1 -0
  25. package/dist/concurrency/atomic.js +281 -0
  26. package/dist/concurrency/git-agent.d.ts +114 -0
  27. package/dist/concurrency/git-agent.d.ts.map +1 -0
  28. package/dist/concurrency/git-agent.js +313 -0
  29. package/dist/concurrency/index.d.ts +95 -0
  30. package/dist/concurrency/index.d.ts.map +1 -0
  31. package/dist/concurrency/index.js +127 -0
  32. package/dist/concurrency/lock-manager.d.ts +170 -0
  33. package/dist/concurrency/lock-manager.d.ts.map +1 -0
  34. package/dist/concurrency/lock-manager.js +525 -0
  35. package/dist/concurrency/queue-manager.d.ts +166 -0
  36. package/dist/concurrency/queue-manager.d.ts.map +1 -0
  37. package/dist/concurrency/queue-manager.js +442 -0
  38. package/dist/concurrency/types.d.ts +382 -0
  39. package/dist/concurrency/types.d.ts.map +1 -0
  40. package/dist/concurrency/types.js +204 -0
  41. package/dist/export/constraint-collector.d.ts +175 -0
  42. package/dist/export/constraint-collector.d.ts.map +1 -0
  43. package/dist/export/constraint-collector.js +203 -0
  44. package/dist/export/formatters/llms-txt-formatter.d.ts +89 -0
  45. package/dist/export/formatters/llms-txt-formatter.d.ts.map +1 -0
  46. package/dist/export/formatters/llms-txt-formatter.js +249 -0
  47. package/dist/export/formatters/mcp-resource-formatter.d.ts +186 -0
  48. package/dist/export/formatters/mcp-resource-formatter.d.ts.map +1 -0
  49. package/dist/export/formatters/mcp-resource-formatter.js +139 -0
  50. package/dist/export/formatters/prompt-formatter.d.ts +83 -0
  51. package/dist/export/formatters/prompt-formatter.d.ts.map +1 -0
  52. package/dist/export/formatters/prompt-formatter.js +256 -0
  53. package/dist/export/index.d.ts +10 -0
  54. package/dist/export/index.d.ts.map +1 -0
  55. package/dist/export/index.js +9 -0
  56. package/dist/gate/check.interface.d.ts +15 -0
  57. package/dist/gate/check.interface.d.ts.map +1 -0
  58. package/dist/gate/check.interface.js +18 -0
  59. package/dist/gate/checks/antipattern.check.d.ts +27 -0
  60. package/dist/gate/checks/antipattern.check.d.ts.map +1 -0
  61. package/dist/gate/checks/antipattern.check.js +140 -0
  62. package/dist/gate/checks/architecture/circular-detector.d.ts +33 -0
  63. package/dist/gate/checks/architecture/circular-detector.d.ts.map +1 -0
  64. package/dist/gate/checks/architecture/circular-detector.js +71 -0
  65. package/dist/gate/checks/architecture/dependency-analyzer.d.ts +81 -0
  66. package/dist/gate/checks/architecture/dependency-analyzer.d.ts.map +1 -0
  67. package/dist/gate/checks/architecture/dependency-analyzer.js +136 -0
  68. package/dist/gate/checks/architecture/layer-validator.d.ts +75 -0
  69. package/dist/gate/checks/architecture/layer-validator.d.ts.map +1 -0
  70. package/dist/gate/checks/architecture/layer-validator.js +193 -0
  71. package/dist/gate/checks/architecture.check.d.ts +56 -0
  72. package/dist/gate/checks/architecture.check.d.ts.map +1 -0
  73. package/dist/gate/checks/architecture.check.js +394 -0
  74. package/dist/gate/checks/command-safety.check.d.ts +12 -0
  75. package/dist/gate/checks/command-safety.check.d.ts.map +1 -0
  76. package/dist/gate/checks/command-safety.check.js +230 -0
  77. package/dist/gate/checks/coverage.check.d.ts +9 -0
  78. package/dist/gate/checks/coverage.check.d.ts.map +1 -0
  79. package/dist/gate/checks/coverage.check.js +81 -0
  80. package/dist/gate/checks/dependency.check.d.ts +17 -0
  81. package/dist/gate/checks/dependency.check.d.ts.map +1 -0
  82. package/dist/gate/checks/dependency.check.js +342 -0
  83. package/dist/gate/checks/eslint.check.d.ts +14 -0
  84. package/dist/gate/checks/eslint.check.d.ts.map +1 -0
  85. package/dist/gate/checks/eslint.check.js +79 -0
  86. package/dist/gate/checks/policy.check.d.ts +78 -0
  87. package/dist/gate/checks/policy.check.d.ts.map +1 -0
  88. package/dist/gate/checks/policy.check.js +457 -0
  89. package/dist/gate/checks/secret/entropy-detector.d.ts +44 -0
  90. package/dist/gate/checks/secret/entropy-detector.d.ts.map +1 -0
  91. package/dist/gate/checks/secret/entropy-detector.js +76 -0
  92. package/dist/gate/checks/secret/git-scanner.d.ts +36 -0
  93. package/dist/gate/checks/secret/git-scanner.d.ts.map +1 -0
  94. package/dist/gate/checks/secret/git-scanner.js +90 -0
  95. package/dist/gate/checks/secret/secret-patterns.d.ts +42 -0
  96. package/dist/gate/checks/secret/secret-patterns.d.ts.map +1 -0
  97. package/dist/gate/checks/secret/secret-patterns.js +137 -0
  98. package/dist/gate/checks/secret.check.d.ts +56 -0
  99. package/dist/gate/checks/secret.check.d.ts.map +1 -0
  100. package/dist/gate/checks/secret.check.js +245 -0
  101. package/dist/gate/config/command-safety-config.d.ts +5 -0
  102. package/dist/gate/config/command-safety-config.d.ts.map +1 -0
  103. package/dist/gate/config/command-safety-config.js +69 -0
  104. package/dist/gate/config/index.d.ts +2 -0
  105. package/dist/gate/config/index.d.ts.map +1 -0
  106. package/dist/gate/config/index.js +1 -0
  107. package/dist/gate/formatters/command-safety-formatter.d.ts +10 -0
  108. package/dist/gate/formatters/command-safety-formatter.d.ts.map +1 -0
  109. package/dist/gate/formatters/command-safety-formatter.js +64 -0
  110. package/dist/gate/formatters/index.d.ts +2 -0
  111. package/dist/gate/formatters/index.d.ts.map +1 -0
  112. package/dist/gate/formatters/index.js +1 -0
  113. package/dist/gate/gate-config.d.ts +44 -0
  114. package/dist/gate/gate-config.d.ts.map +1 -0
  115. package/dist/gate/gate-config.js +334 -0
  116. package/dist/gate/gate-runner.d.ts +160 -0
  117. package/dist/gate/gate-runner.d.ts.map +1 -0
  118. package/dist/gate/gate-runner.js +531 -0
  119. package/dist/gate/index.d.ts +20 -0
  120. package/dist/gate/index.d.ts.map +1 -0
  121. package/dist/gate/index.js +14 -0
  122. package/dist/gate/parsers/command-parser.d.ts +18 -0
  123. package/dist/gate/parsers/command-parser.d.ts.map +1 -0
  124. package/dist/gate/parsers/command-parser.js +363 -0
  125. package/dist/gate/parsers/index.d.ts +2 -0
  126. package/dist/gate/parsers/index.d.ts.map +1 -0
  127. package/dist/gate/parsers/index.js +1 -0
  128. package/dist/gate/policy/index.d.ts +12 -0
  129. package/dist/gate/policy/index.d.ts.map +1 -0
  130. package/dist/gate/policy/index.js +10 -0
  131. package/dist/gate/rules/default-filesystem-rules.d.ts +3 -0
  132. package/dist/gate/rules/default-filesystem-rules.d.ts.map +1 -0
  133. package/dist/gate/rules/default-filesystem-rules.js +201 -0
  134. package/dist/gate/rules/default-git-rules.d.ts +3 -0
  135. package/dist/gate/rules/default-git-rules.d.ts.map +1 -0
  136. package/dist/gate/rules/default-git-rules.js +192 -0
  137. package/dist/gate/rules/index.d.ts +5 -0
  138. package/dist/gate/rules/index.d.ts.map +1 -0
  139. package/dist/gate/rules/index.js +3 -0
  140. package/dist/gate/rules/rule-matcher.d.ts +27 -0
  141. package/dist/gate/rules/rule-matcher.d.ts.map +1 -0
  142. package/dist/gate/rules/rule-matcher.js +228 -0
  143. package/dist/gate/rules/types.d.ts +250 -0
  144. package/dist/gate/rules/types.d.ts.map +1 -0
  145. package/dist/gate/rules/types.js +1 -0
  146. package/dist/index.d.ts +19 -0
  147. package/dist/index.d.ts.map +1 -0
  148. package/dist/index.js +35 -0
  149. package/dist/types/gate.types.d.ts +42 -0
  150. package/dist/types/gate.types.d.ts.map +1 -0
  151. package/dist/types/gate.types.js +94 -0
  152. package/dist/watch/debouncer.d.ts +90 -0
  153. package/dist/watch/debouncer.d.ts.map +1 -0
  154. package/dist/watch/debouncer.js +135 -0
  155. package/dist/watch/file-watcher.d.ts +73 -0
  156. package/dist/watch/file-watcher.d.ts.map +1 -0
  157. package/dist/watch/file-watcher.js +121 -0
  158. package/dist/watch/git-status.d.ts +98 -0
  159. package/dist/watch/git-status.d.ts.map +1 -0
  160. package/dist/watch/git-status.js +266 -0
  161. package/dist/watch/index.d.ts +16 -0
  162. package/dist/watch/index.d.ts.map +1 -0
  163. package/dist/watch/index.js +15 -0
  164. package/dist/watch/orchestrator.d.ts +113 -0
  165. package/dist/watch/orchestrator.d.ts.map +1 -0
  166. package/dist/watch/orchestrator.js +409 -0
  167. package/dist/watch/types.d.ts +190 -0
  168. package/dist/watch/types.d.ts.map +1 -0
  169. package/dist/watch/types.js +76 -0
  170. package/package.json +60 -0
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Watch Mode Types and Schemas
3
+ *
4
+ * Defines configuration and event types for file watching functionality.
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * Git filter configuration
9
+ */
10
+ export declare const WatchGitConfigSchema: z.ZodObject<{
11
+ unstagedOnly: z.ZodDefault<z.ZodBoolean>;
12
+ includeUntracked: z.ZodDefault<z.ZodBoolean>;
13
+ }, z.core.$strip>;
14
+ export type WatchGitConfig = z.infer<typeof WatchGitConfigSchema>;
15
+ /**
16
+ * Watch configuration schema for .anvilrc
17
+ */
18
+ export declare const WatchConfigSchema: z.ZodObject<{
19
+ enabled: z.ZodDefault<z.ZodBoolean>;
20
+ patterns: z.ZodDefault<z.ZodArray<z.ZodString>>;
21
+ exclude: z.ZodDefault<z.ZodArray<z.ZodString>>;
22
+ action: z.ZodDefault<z.ZodEnum<{
23
+ gate: "gate";
24
+ check: "check";
25
+ validate: "validate";
26
+ }>>;
27
+ debounceMs: z.ZodDefault<z.ZodNumber>;
28
+ git: z.ZodDefault<z.ZodObject<{
29
+ unstagedOnly: z.ZodDefault<z.ZodBoolean>;
30
+ includeUntracked: z.ZodDefault<z.ZodBoolean>;
31
+ }, z.core.$strip>>;
32
+ gateProfile: z.ZodOptional<z.ZodEnum<{
33
+ ci: "ci";
34
+ dev: "dev";
35
+ production: "production";
36
+ }>>;
37
+ }, z.core.$strip>;
38
+ export type WatchConfig = z.infer<typeof WatchConfigSchema>;
39
+ /**
40
+ * Git file status from git status --porcelain
41
+ */
42
+ export interface GitFileStatus {
43
+ /** File path relative to workspace root */
44
+ path: string;
45
+ /** Whether file is tracked by git */
46
+ isTracked: boolean;
47
+ /** Whether file has staged changes */
48
+ isStaged: boolean;
49
+ /** Whether file has unstaged changes */
50
+ isUnstaged: boolean;
51
+ /** Whether file is untracked */
52
+ isUntracked: boolean;
53
+ /** Raw status code from git (e.g., ' M', 'M ', '??') */
54
+ statusCode: string;
55
+ }
56
+ /**
57
+ * File change event from watcher
58
+ */
59
+ export interface WatchChangeEvent {
60
+ /** Event type */
61
+ type: 'add' | 'change' | 'unlink';
62
+ /** Absolute file path */
63
+ path: string;
64
+ /** Timestamp of change */
65
+ timestamp: Date;
66
+ }
67
+ /**
68
+ * Debounced batch of changes
69
+ */
70
+ export interface DebouncedChanges {
71
+ /** Files that changed */
72
+ files: string[];
73
+ /** Timestamp when batch was flushed */
74
+ timestamp: Date;
75
+ }
76
+ /**
77
+ * Watch status event types
78
+ */
79
+ export type WatchStatusEventType = 'ready' | 'change' | 'action:start' | 'action:complete' | 'action:error' | 'action:queued' | 'lock:acquired' | 'lock:waiting' | 'lock:denied' | 'stopped';
80
+ /**
81
+ * Action result from validate, gate, or check
82
+ */
83
+ export interface WatchActionResult {
84
+ /** Whether the action succeeded */
85
+ success: boolean;
86
+ /** Action type that was run */
87
+ action: 'validate' | 'gate' | 'check';
88
+ /** Files that were processed */
89
+ files: string[];
90
+ /** Execution time in ms */
91
+ executionTimeMs: number;
92
+ /** Detailed results (validation errors, gate results, warnings, etc.) */
93
+ details?: unknown;
94
+ /** Error message if action failed */
95
+ error?: string;
96
+ }
97
+ /**
98
+ * Status events emitted by watch orchestrator
99
+ */
100
+ export type WatchStatusEvent = {
101
+ type: 'ready';
102
+ patterns: string[];
103
+ gitFilter: boolean;
104
+ agentId?: string;
105
+ } | {
106
+ type: 'change';
107
+ files: string[];
108
+ filtered: string[];
109
+ } | {
110
+ type: 'action:start';
111
+ action: 'validate' | 'gate' | 'check';
112
+ files: string[];
113
+ } | {
114
+ type: 'action:complete';
115
+ result: WatchActionResult;
116
+ } | {
117
+ type: 'action:error';
118
+ error: Error;
119
+ files: string[];
120
+ } | {
121
+ type: 'action:queued';
122
+ action: 'validate' | 'gate' | 'check';
123
+ position: number;
124
+ files: string[];
125
+ } | {
126
+ type: 'lock:acquired';
127
+ resource: string;
128
+ agentId: string;
129
+ } | {
130
+ type: 'lock:waiting';
131
+ resource: string;
132
+ heldBy: string;
133
+ queuePosition?: number;
134
+ } | {
135
+ type: 'lock:denied';
136
+ resource: string;
137
+ heldBy: string;
138
+ reason: string;
139
+ } | {
140
+ type: 'stopped';
141
+ };
142
+ /**
143
+ * Multi-agent mode configuration
144
+ */
145
+ export interface MultiAgentConfig {
146
+ /** Enable multi-agent coordination (default: true) */
147
+ enabled?: boolean;
148
+ /** Acquire exclusive watch lock (only one watcher per workspace) */
149
+ exclusiveWatch?: boolean;
150
+ /** Use coordinated action execution (queue + lock) */
151
+ coordinatedActions?: boolean;
152
+ /** Agent ID (auto-detected if not provided) */
153
+ agentId?: string;
154
+ /** Wait for watch lock instead of failing */
155
+ waitForLock?: boolean;
156
+ /** Lock wait timeout in ms (default: 30000) */
157
+ lockWaitTimeoutMs?: number;
158
+ }
159
+ /**
160
+ * Watch orchestrator options
161
+ */
162
+ export interface WatchOrchestratorOptions {
163
+ /** Workspace root directory */
164
+ workspaceRoot: string;
165
+ /** Watch configuration */
166
+ config: WatchConfig;
167
+ /** Status event callback */
168
+ onEvent?: (event: WatchStatusEvent) => void;
169
+ /** Verbose logging */
170
+ verbose?: boolean;
171
+ /** Multi-agent coordination options */
172
+ multiAgent?: MultiAgentConfig;
173
+ }
174
+ /**
175
+ * Default watch patterns (reused from file-discovery)
176
+ */
177
+ export declare const DEFAULT_WATCH_PATTERNS: string[];
178
+ /**
179
+ * Default exclude patterns
180
+ */
181
+ export declare const DEFAULT_EXCLUDE_PATTERNS: string[];
182
+ /**
183
+ * Parse and validate watch config from raw object
184
+ */
185
+ export declare function parseWatchConfig(raw: unknown): WatchConfig;
186
+ /**
187
+ * Get default watch config
188
+ */
189
+ export declare function getDefaultWatchConfig(): WatchConfig;
190
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/watch/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Watch Mode Types and Schemas
3
+ *
4
+ * Defines configuration and event types for file watching functionality.
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * Git filter configuration
9
+ */
10
+ export const WatchGitConfigSchema = z.object({
11
+ /** Only watch files with unstaged changes (default: true) */
12
+ unstagedOnly: z.boolean().default(true),
13
+ /** Include untracked files in watch (default: true) */
14
+ includeUntracked: z.boolean().default(true),
15
+ });
16
+ /**
17
+ * Watch configuration schema for .anvilrc
18
+ */
19
+ export const WatchConfigSchema = z.object({
20
+ /** Enable watch mode in config (default: false) */
21
+ enabled: z.boolean().default(false),
22
+ /** Glob patterns to watch (default: planning document patterns) */
23
+ patterns: z.array(z.string()).default(['**/*.md']),
24
+ /** Glob patterns to exclude */
25
+ exclude: z
26
+ .array(z.string())
27
+ .default(['node_modules/**', 'dist/**', 'build/**', '.git/**', 'coverage/**']),
28
+ /** Action to run on change: validate, gate, or check */
29
+ action: z.enum(['validate', 'gate', 'check']).default('validate'),
30
+ /** Debounce interval in milliseconds (default: 300) */
31
+ debounceMs: z.number().min(50).max(5000).default(300),
32
+ /** Git filter configuration */
33
+ git: WatchGitConfigSchema.default({ unstagedOnly: true, includeUntracked: true }),
34
+ /** Gate profile to use when action is 'gate' */
35
+ gateProfile: z.enum(['dev', 'ci', 'production']).optional(),
36
+ });
37
+ /**
38
+ * Default watch patterns (reused from file-discovery)
39
+ */
40
+ export const DEFAULT_WATCH_PATTERNS = [
41
+ '**/*.md',
42
+ '**/prd.*',
43
+ '**/plan.*',
44
+ '**/todo.*',
45
+ '**/spec.*',
46
+ '**/requirements.*',
47
+ '**/rfc-*',
48
+ '**/adr-*',
49
+ ];
50
+ /**
51
+ * Default exclude patterns
52
+ */
53
+ export const DEFAULT_EXCLUDE_PATTERNS = [
54
+ 'node_modules/**',
55
+ 'dist/**',
56
+ 'build/**',
57
+ '.git/**',
58
+ 'coverage/**',
59
+ '.next/**',
60
+ '.nuxt/**',
61
+ 'out/**',
62
+ 'target/**',
63
+ 'vendor/**',
64
+ ];
65
+ /**
66
+ * Parse and validate watch config from raw object
67
+ */
68
+ export function parseWatchConfig(raw) {
69
+ return WatchConfigSchema.parse(raw);
70
+ }
71
+ /**
72
+ * Get default watch config
73
+ */
74
+ export function getDefaultWatchConfig() {
75
+ return WatchConfigSchema.parse({});
76
+ }
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@eddacraft/anvil-runtime",
3
+ "version": "0.1.0",
4
+ "description": "Runtime orchestration layer for Anvil — gate runner, file watching, caching, exports",
5
+ "license": "PROPRIETARY",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ },
14
+ "./gate": {
15
+ "types": "./dist/gate/index.d.ts",
16
+ "import": "./dist/gate/index.js"
17
+ },
18
+ "./cache": {
19
+ "types": "./dist/cache/index.d.ts",
20
+ "import": "./dist/cache/index.js"
21
+ },
22
+ "./watch": {
23
+ "types": "./dist/watch/index.d.ts",
24
+ "import": "./dist/watch/index.js"
25
+ },
26
+ "./export": {
27
+ "types": "./dist/export/index.d.ts",
28
+ "import": "./dist/export/index.js"
29
+ }
30
+ },
31
+ "dependencies": {
32
+ "chokidar": "^5.0.0",
33
+ "eslint": "^9.39.2",
34
+ "glob": "13.0.0",
35
+ "minimatch": "^10.2.0",
36
+ "shell-quote": "^1.8.3",
37
+ "zod": "^4.3.6",
38
+ "@eddacraft/anvil-core": "0.1.0",
39
+ "@eddacraft/anvil-policy": "0.1.0"
40
+ },
41
+ "devDependencies": {
42
+ "@types/shell-quote": "^1.7.5",
43
+ "vitest": "^4.0.18"
44
+ },
45
+ "files": [
46
+ "dist",
47
+ "README.md"
48
+ ],
49
+ "keywords": [
50
+ "anvil",
51
+ "runtime",
52
+ "orchestration"
53
+ ],
54
+ "scripts": {
55
+ "build": "tsc -p tsconfig.lib.json",
56
+ "test": "vitest run",
57
+ "test:watch": "vitest",
58
+ "typecheck": "tsc --noEmit"
59
+ }
60
+ }