@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.
- package/LICENSE +14 -0
- package/dist/cache/cache-key.d.ts +45 -0
- package/dist/cache/cache-key.d.ts.map +1 -0
- package/dist/cache/cache-key.js +135 -0
- package/dist/cache/index.d.ts +27 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +38 -0
- package/dist/cache/providers/file-cache.d.ts +63 -0
- package/dist/cache/providers/file-cache.d.ts.map +1 -0
- package/dist/cache/providers/file-cache.js +369 -0
- package/dist/cache/providers/memory-cache.d.ts +52 -0
- package/dist/cache/providers/memory-cache.d.ts.map +1 -0
- package/dist/cache/providers/memory-cache.js +197 -0
- package/dist/cache/providers/null-cache.d.ts +26 -0
- package/dist/cache/providers/null-cache.d.ts.map +1 -0
- package/dist/cache/providers/null-cache.js +50 -0
- package/dist/cache/types.d.ts +114 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +4 -0
- package/dist/concurrency/agent.d.ts +137 -0
- package/dist/concurrency/agent.d.ts.map +1 -0
- package/dist/concurrency/agent.js +440 -0
- package/dist/concurrency/atomic.d.ts +93 -0
- package/dist/concurrency/atomic.d.ts.map +1 -0
- package/dist/concurrency/atomic.js +281 -0
- package/dist/concurrency/git-agent.d.ts +114 -0
- package/dist/concurrency/git-agent.d.ts.map +1 -0
- package/dist/concurrency/git-agent.js +313 -0
- package/dist/concurrency/index.d.ts +95 -0
- package/dist/concurrency/index.d.ts.map +1 -0
- package/dist/concurrency/index.js +127 -0
- package/dist/concurrency/lock-manager.d.ts +170 -0
- package/dist/concurrency/lock-manager.d.ts.map +1 -0
- package/dist/concurrency/lock-manager.js +525 -0
- package/dist/concurrency/queue-manager.d.ts +166 -0
- package/dist/concurrency/queue-manager.d.ts.map +1 -0
- package/dist/concurrency/queue-manager.js +442 -0
- package/dist/concurrency/types.d.ts +382 -0
- package/dist/concurrency/types.d.ts.map +1 -0
- package/dist/concurrency/types.js +204 -0
- package/dist/export/constraint-collector.d.ts +175 -0
- package/dist/export/constraint-collector.d.ts.map +1 -0
- package/dist/export/constraint-collector.js +203 -0
- package/dist/export/formatters/llms-txt-formatter.d.ts +89 -0
- package/dist/export/formatters/llms-txt-formatter.d.ts.map +1 -0
- package/dist/export/formatters/llms-txt-formatter.js +249 -0
- package/dist/export/formatters/mcp-resource-formatter.d.ts +186 -0
- package/dist/export/formatters/mcp-resource-formatter.d.ts.map +1 -0
- package/dist/export/formatters/mcp-resource-formatter.js +139 -0
- package/dist/export/formatters/prompt-formatter.d.ts +83 -0
- package/dist/export/formatters/prompt-formatter.d.ts.map +1 -0
- package/dist/export/formatters/prompt-formatter.js +256 -0
- package/dist/export/index.d.ts +10 -0
- package/dist/export/index.d.ts.map +1 -0
- package/dist/export/index.js +9 -0
- package/dist/gate/check.interface.d.ts +15 -0
- package/dist/gate/check.interface.d.ts.map +1 -0
- package/dist/gate/check.interface.js +18 -0
- package/dist/gate/checks/antipattern.check.d.ts +27 -0
- package/dist/gate/checks/antipattern.check.d.ts.map +1 -0
- package/dist/gate/checks/antipattern.check.js +140 -0
- package/dist/gate/checks/architecture/circular-detector.d.ts +33 -0
- package/dist/gate/checks/architecture/circular-detector.d.ts.map +1 -0
- package/dist/gate/checks/architecture/circular-detector.js +71 -0
- package/dist/gate/checks/architecture/dependency-analyzer.d.ts +81 -0
- package/dist/gate/checks/architecture/dependency-analyzer.d.ts.map +1 -0
- package/dist/gate/checks/architecture/dependency-analyzer.js +136 -0
- package/dist/gate/checks/architecture/layer-validator.d.ts +75 -0
- package/dist/gate/checks/architecture/layer-validator.d.ts.map +1 -0
- package/dist/gate/checks/architecture/layer-validator.js +193 -0
- package/dist/gate/checks/architecture.check.d.ts +56 -0
- package/dist/gate/checks/architecture.check.d.ts.map +1 -0
- package/dist/gate/checks/architecture.check.js +394 -0
- package/dist/gate/checks/command-safety.check.d.ts +12 -0
- package/dist/gate/checks/command-safety.check.d.ts.map +1 -0
- package/dist/gate/checks/command-safety.check.js +230 -0
- package/dist/gate/checks/coverage.check.d.ts +9 -0
- package/dist/gate/checks/coverage.check.d.ts.map +1 -0
- package/dist/gate/checks/coverage.check.js +81 -0
- package/dist/gate/checks/dependency.check.d.ts +17 -0
- package/dist/gate/checks/dependency.check.d.ts.map +1 -0
- package/dist/gate/checks/dependency.check.js +342 -0
- package/dist/gate/checks/eslint.check.d.ts +14 -0
- package/dist/gate/checks/eslint.check.d.ts.map +1 -0
- package/dist/gate/checks/eslint.check.js +79 -0
- package/dist/gate/checks/policy.check.d.ts +78 -0
- package/dist/gate/checks/policy.check.d.ts.map +1 -0
- package/dist/gate/checks/policy.check.js +457 -0
- package/dist/gate/checks/secret/entropy-detector.d.ts +44 -0
- package/dist/gate/checks/secret/entropy-detector.d.ts.map +1 -0
- package/dist/gate/checks/secret/entropy-detector.js +76 -0
- package/dist/gate/checks/secret/git-scanner.d.ts +36 -0
- package/dist/gate/checks/secret/git-scanner.d.ts.map +1 -0
- package/dist/gate/checks/secret/git-scanner.js +90 -0
- package/dist/gate/checks/secret/secret-patterns.d.ts +42 -0
- package/dist/gate/checks/secret/secret-patterns.d.ts.map +1 -0
- package/dist/gate/checks/secret/secret-patterns.js +137 -0
- package/dist/gate/checks/secret.check.d.ts +56 -0
- package/dist/gate/checks/secret.check.d.ts.map +1 -0
- package/dist/gate/checks/secret.check.js +245 -0
- package/dist/gate/config/command-safety-config.d.ts +5 -0
- package/dist/gate/config/command-safety-config.d.ts.map +1 -0
- package/dist/gate/config/command-safety-config.js +69 -0
- package/dist/gate/config/index.d.ts +2 -0
- package/dist/gate/config/index.d.ts.map +1 -0
- package/dist/gate/config/index.js +1 -0
- package/dist/gate/formatters/command-safety-formatter.d.ts +10 -0
- package/dist/gate/formatters/command-safety-formatter.d.ts.map +1 -0
- package/dist/gate/formatters/command-safety-formatter.js +64 -0
- package/dist/gate/formatters/index.d.ts +2 -0
- package/dist/gate/formatters/index.d.ts.map +1 -0
- package/dist/gate/formatters/index.js +1 -0
- package/dist/gate/gate-config.d.ts +44 -0
- package/dist/gate/gate-config.d.ts.map +1 -0
- package/dist/gate/gate-config.js +334 -0
- package/dist/gate/gate-runner.d.ts +160 -0
- package/dist/gate/gate-runner.d.ts.map +1 -0
- package/dist/gate/gate-runner.js +531 -0
- package/dist/gate/index.d.ts +20 -0
- package/dist/gate/index.d.ts.map +1 -0
- package/dist/gate/index.js +14 -0
- package/dist/gate/parsers/command-parser.d.ts +18 -0
- package/dist/gate/parsers/command-parser.d.ts.map +1 -0
- package/dist/gate/parsers/command-parser.js +363 -0
- package/dist/gate/parsers/index.d.ts +2 -0
- package/dist/gate/parsers/index.d.ts.map +1 -0
- package/dist/gate/parsers/index.js +1 -0
- package/dist/gate/policy/index.d.ts +12 -0
- package/dist/gate/policy/index.d.ts.map +1 -0
- package/dist/gate/policy/index.js +10 -0
- package/dist/gate/rules/default-filesystem-rules.d.ts +3 -0
- package/dist/gate/rules/default-filesystem-rules.d.ts.map +1 -0
- package/dist/gate/rules/default-filesystem-rules.js +201 -0
- package/dist/gate/rules/default-git-rules.d.ts +3 -0
- package/dist/gate/rules/default-git-rules.d.ts.map +1 -0
- package/dist/gate/rules/default-git-rules.js +192 -0
- package/dist/gate/rules/index.d.ts +5 -0
- package/dist/gate/rules/index.d.ts.map +1 -0
- package/dist/gate/rules/index.js +3 -0
- package/dist/gate/rules/rule-matcher.d.ts +27 -0
- package/dist/gate/rules/rule-matcher.d.ts.map +1 -0
- package/dist/gate/rules/rule-matcher.js +228 -0
- package/dist/gate/rules/types.d.ts +250 -0
- package/dist/gate/rules/types.d.ts.map +1 -0
- package/dist/gate/rules/types.js +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/types/gate.types.d.ts +42 -0
- package/dist/types/gate.types.d.ts.map +1 -0
- package/dist/types/gate.types.js +94 -0
- package/dist/watch/debouncer.d.ts +90 -0
- package/dist/watch/debouncer.d.ts.map +1 -0
- package/dist/watch/debouncer.js +135 -0
- package/dist/watch/file-watcher.d.ts +73 -0
- package/dist/watch/file-watcher.d.ts.map +1 -0
- package/dist/watch/file-watcher.js +121 -0
- package/dist/watch/git-status.d.ts +98 -0
- package/dist/watch/git-status.d.ts.map +1 -0
- package/dist/watch/git-status.js +266 -0
- package/dist/watch/index.d.ts +16 -0
- package/dist/watch/index.d.ts.map +1 -0
- package/dist/watch/index.js +15 -0
- package/dist/watch/orchestrator.d.ts +113 -0
- package/dist/watch/orchestrator.d.ts.map +1 -0
- package/dist/watch/orchestrator.js +409 -0
- package/dist/watch/types.d.ts +190 -0
- package/dist/watch/types.d.ts.map +1 -0
- package/dist/watch/types.js +76 -0
- 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
|
+
}
|