@planu/cli 0.52.0 → 0.54.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/dist/engine/hooks/handlers/on-commit.d.ts +9 -0
- package/dist/engine/hooks/handlers/on-commit.d.ts.map +1 -1
- package/dist/engine/hooks/handlers/on-commit.js +55 -2
- package/dist/engine/hooks/handlers/on-commit.js.map +1 -1
- package/dist/engine/hooks/handlers/on-impl-change.d.ts +32 -0
- package/dist/engine/hooks/handlers/on-impl-change.d.ts.map +1 -0
- package/dist/engine/hooks/handlers/on-impl-change.js +137 -0
- package/dist/engine/hooks/handlers/on-impl-change.js.map +1 -0
- package/dist/engine/hooks/handlers/on-push-check.d.ts +41 -0
- package/dist/engine/hooks/handlers/on-push-check.d.ts.map +1 -0
- package/dist/engine/hooks/handlers/on-push-check.js +163 -0
- package/dist/engine/hooks/handlers/on-push-check.js.map +1 -0
- package/dist/engine/hooks/handlers/on-security-check.d.ts +45 -0
- package/dist/engine/hooks/handlers/on-security-check.d.ts.map +1 -0
- package/dist/engine/hooks/handlers/on-security-check.js +188 -0
- package/dist/engine/hooks/handlers/on-security-check.js.map +1 -0
- package/dist/engine/hooks/handlers/on-spec-change.d.ts +11 -0
- package/dist/engine/hooks/handlers/on-spec-change.d.ts.map +1 -0
- package/dist/engine/hooks/handlers/on-spec-change.js +37 -0
- package/dist/engine/hooks/handlers/on-spec-change.js.map +1 -0
- package/dist/engine/hooks/handlers/on-status-change.d.ts +35 -0
- package/dist/engine/hooks/handlers/on-status-change.d.ts.map +1 -0
- package/dist/engine/hooks/handlers/on-status-change.js +128 -0
- package/dist/engine/hooks/handlers/on-status-change.js.map +1 -0
- package/dist/engine/workers/index.d.ts +1 -1
- package/dist/engine/workers/index.d.ts.map +1 -1
- package/dist/engine/workers/index.js +1 -1
- package/dist/engine/workers/index.js.map +1 -1
- package/dist/engine/workers/worker-engine.d.ts +7 -0
- package/dist/engine/workers/worker-engine.d.ts.map +1 -1
- package/dist/engine/workers/worker-engine.js +18 -0
- package/dist/engine/workers/worker-engine.js.map +1 -1
- package/dist/tools/safe-handler.d.ts.map +1 -1
- package/dist/tools/safe-handler.js +4 -2
- package/dist/tools/safe-handler.js.map +1 -1
- package/dist/types/file-hooks.d.ts +80 -0
- package/dist/types/file-hooks.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
// engine/hooks/handlers/on-security-check.ts — on-security-check hook handler (SPEC-138)
|
|
2
|
+
// Security-sensitive file change detection with cooldown and dependency health.
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Constants
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
const SECURITY_KEYWORDS = [
|
|
7
|
+
'auth',
|
|
8
|
+
'token',
|
|
9
|
+
'secret',
|
|
10
|
+
'password',
|
|
11
|
+
'credential',
|
|
12
|
+
'key',
|
|
13
|
+
'license',
|
|
14
|
+
];
|
|
15
|
+
const DEPENDENCY_FILES = [
|
|
16
|
+
'package.json',
|
|
17
|
+
'package-lock.json',
|
|
18
|
+
'yarn.lock',
|
|
19
|
+
'pnpm-lock.yaml',
|
|
20
|
+
'bun.lockb',
|
|
21
|
+
'Gemfile',
|
|
22
|
+
'Gemfile.lock',
|
|
23
|
+
'requirements.txt',
|
|
24
|
+
'Pipfile',
|
|
25
|
+
'Pipfile.lock',
|
|
26
|
+
'go.mod',
|
|
27
|
+
'go.sum',
|
|
28
|
+
'Cargo.toml',
|
|
29
|
+
'Cargo.lock',
|
|
30
|
+
];
|
|
31
|
+
/** Cooldown window: 5 minutes in milliseconds */
|
|
32
|
+
const SECURITY_COOLDOWN_MS = 5 * 60 * 1000;
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
// Module-level state
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
let lastSecurityCheckAt = 0;
|
|
37
|
+
let lastSecurityCheckResult = null;
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
// Path classification
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
/**
|
|
42
|
+
* Returns true if the given path contains security-sensitive keywords.
|
|
43
|
+
*/
|
|
44
|
+
export function isSecuritySensitiveFile(path) {
|
|
45
|
+
const lower = path.toLowerCase();
|
|
46
|
+
return SECURITY_KEYWORDS.some((keyword) => lower.includes(keyword));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Returns true if the given path is a dependency manifest or lockfile.
|
|
50
|
+
*/
|
|
51
|
+
export function isDependencyFile(path) {
|
|
52
|
+
const basename = path.split('/').pop() ?? path;
|
|
53
|
+
return DEPENDENCY_FILES.some((dep) => basename === dep);
|
|
54
|
+
}
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
// Cooldown management
|
|
57
|
+
// ---------------------------------------------------------------------------
|
|
58
|
+
/**
|
|
59
|
+
* Returns true if the security check is currently in cooldown.
|
|
60
|
+
*/
|
|
61
|
+
export function isInCooldown() {
|
|
62
|
+
if (lastSecurityCheckAt === 0) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
return Date.now() - lastSecurityCheckAt < SECURITY_COOLDOWN_MS;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Returns remaining cooldown time in seconds (0 if not in cooldown).
|
|
69
|
+
*/
|
|
70
|
+
export function getCooldownRemainingSeconds() {
|
|
71
|
+
if (!isInCooldown()) {
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
const elapsed = Date.now() - lastSecurityCheckAt;
|
|
75
|
+
return Math.max(0, Math.round((SECURITY_COOLDOWN_MS - elapsed) / 1000));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Reset the security cooldown timestamp.
|
|
79
|
+
* Useful for testing.
|
|
80
|
+
*/
|
|
81
|
+
export function resetSecurityCooldown() {
|
|
82
|
+
lastSecurityCheckAt = 0;
|
|
83
|
+
}
|
|
84
|
+
// ---------------------------------------------------------------------------
|
|
85
|
+
// Dependency health findings
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
/**
|
|
88
|
+
* Build WorkerFindings for dependency file changes.
|
|
89
|
+
*/
|
|
90
|
+
export function buildDependencyHealthFindings(depFiles) {
|
|
91
|
+
return depFiles.map((file) => ({
|
|
92
|
+
severity: 'info',
|
|
93
|
+
file,
|
|
94
|
+
message: `Dependency file changed: ${file}`,
|
|
95
|
+
suggestion: 'Review dependency changes for security vulnerabilities or breaking updates',
|
|
96
|
+
category: 'dependency-health',
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
// Cache accessors
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
/**
|
|
103
|
+
* Get the cached result from the last security check run.
|
|
104
|
+
*/
|
|
105
|
+
export function getLastSecurityCheckResult() {
|
|
106
|
+
return lastSecurityCheckResult;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Reset the security check result cache.
|
|
110
|
+
* Useful for testing.
|
|
111
|
+
*/
|
|
112
|
+
export function resetSecurityCheckCache() {
|
|
113
|
+
lastSecurityCheckResult = null;
|
|
114
|
+
}
|
|
115
|
+
// ---------------------------------------------------------------------------
|
|
116
|
+
// Handler
|
|
117
|
+
// ---------------------------------------------------------------------------
|
|
118
|
+
/**
|
|
119
|
+
* Handle on-security-check event for security-sensitive file changes.
|
|
120
|
+
* Implements a 5-minute cooldown to avoid repeated alerts.
|
|
121
|
+
* Also detects dependency file changes and emits dependency-health findings.
|
|
122
|
+
* Caches results as WorkerRunResult.
|
|
123
|
+
* Fire-and-forget — all errors are caught with console.warn.
|
|
124
|
+
*/
|
|
125
|
+
export function handleOnSecurityCheck(event, projectPath) {
|
|
126
|
+
const startedAt = new Date().toISOString();
|
|
127
|
+
const startMs = Date.now();
|
|
128
|
+
try {
|
|
129
|
+
const findings = [];
|
|
130
|
+
const changedFiles = [event.path];
|
|
131
|
+
// Dependency health check (always runs, no cooldown)
|
|
132
|
+
const depFiles = changedFiles.filter((f) => isDependencyFile(f));
|
|
133
|
+
if (depFiles.length > 0) {
|
|
134
|
+
const depFindings = buildDependencyHealthFindings(depFiles);
|
|
135
|
+
findings.push(...depFindings);
|
|
136
|
+
for (const depFile of depFiles) {
|
|
137
|
+
console.warn(`[hooks] on-security-check: dependency file changed: ${depFile} project=${projectPath}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Security-sensitive file check (with cooldown)
|
|
141
|
+
if (!isSecuritySensitiveFile(event.path)) {
|
|
142
|
+
// Still cache result if dependency findings exist
|
|
143
|
+
if (findings.length > 0) {
|
|
144
|
+
lastSecurityCheckResult = buildRunResult(startedAt, startMs, 'success', findings, 1);
|
|
145
|
+
}
|
|
146
|
+
return Promise.resolve();
|
|
147
|
+
}
|
|
148
|
+
if (isInCooldown()) {
|
|
149
|
+
const remaining = getCooldownRemainingSeconds();
|
|
150
|
+
console.warn(`[hooks] on-security-check: cooldown active, skipping check for ${event.path} (${String(remaining)}s remaining)`);
|
|
151
|
+
if (findings.length > 0) {
|
|
152
|
+
lastSecurityCheckResult = buildRunResult(startedAt, startMs, 'skipped', findings, 1);
|
|
153
|
+
}
|
|
154
|
+
return Promise.resolve();
|
|
155
|
+
}
|
|
156
|
+
lastSecurityCheckAt = Date.now();
|
|
157
|
+
console.warn(`[hooks] on-security-check: security check triggered for ${event.path} type=${event.type} project=${projectPath}`);
|
|
158
|
+
findings.push({
|
|
159
|
+
severity: 'high',
|
|
160
|
+
file: event.path,
|
|
161
|
+
message: `Security-sensitive file changed: ${event.path}`,
|
|
162
|
+
suggestion: 'Review security-sensitive file changes carefully before merging',
|
|
163
|
+
category: 'security',
|
|
164
|
+
});
|
|
165
|
+
lastSecurityCheckResult = buildRunResult(startedAt, startMs, 'success', findings, 1);
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
console.warn(`[hooks] on-security-check: unexpected error for ${event.path}`, err);
|
|
169
|
+
lastSecurityCheckResult = buildRunResult(startedAt, startMs, 'error', [], 0, String(err));
|
|
170
|
+
}
|
|
171
|
+
return Promise.resolve();
|
|
172
|
+
}
|
|
173
|
+
// ---------------------------------------------------------------------------
|
|
174
|
+
// Internal helpers
|
|
175
|
+
// ---------------------------------------------------------------------------
|
|
176
|
+
function buildRunResult(startedAt, startMs, status, findings, analyzedFiles, error) {
|
|
177
|
+
return {
|
|
178
|
+
workerName: 'on-security-check',
|
|
179
|
+
startedAt,
|
|
180
|
+
completedAt: new Date().toISOString(),
|
|
181
|
+
durationMs: Date.now() - startMs,
|
|
182
|
+
status,
|
|
183
|
+
findings,
|
|
184
|
+
analyzedFiles,
|
|
185
|
+
...(error !== undefined ? { error } : {}),
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=on-security-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-security-check.js","sourceRoot":"","sources":["../../../../src/engine/hooks/handlers/on-security-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { WatcherEvent } from '../../../types/file-hooks.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns true for planu/specs/**\/*.md files.
|
|
4
|
+
*/
|
|
5
|
+
export declare function isSpecFile(filePath: string): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Handle a spec file change event.
|
|
8
|
+
* Fire-and-forget — all errors are caught internally.
|
|
9
|
+
*/
|
|
10
|
+
export declare function handleOnSpecChange(event: WatcherEvent, projectPath: string): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=on-spec-change.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-spec-change.d.ts","sourceRoot":"","sources":["../../../../src/engine/hooks/handlers/on-spec-change.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAMjE;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQpD;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW1F"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// engine/hooks/handlers/on-spec-change.ts — on-spec-change hook handler (SPEC-137)
|
|
2
|
+
// Triggered when spec files (planu/specs/**) change.
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Pattern matching
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
/**
|
|
7
|
+
* Returns true for planu/specs/**\/*.md files.
|
|
8
|
+
*/
|
|
9
|
+
export function isSpecFile(filePath) {
|
|
10
|
+
if (!filePath.startsWith('planu/specs/')) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
if (!filePath.endsWith('.md')) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Handler
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
/**
|
|
22
|
+
* Handle a spec file change event.
|
|
23
|
+
* Fire-and-forget — all errors are caught internally.
|
|
24
|
+
*/
|
|
25
|
+
export function handleOnSpecChange(event, projectPath) {
|
|
26
|
+
try {
|
|
27
|
+
if (!isSpecFile(event.path)) {
|
|
28
|
+
return Promise.resolve();
|
|
29
|
+
}
|
|
30
|
+
console.warn(`[hooks] Spec change detected: ${event.path} (${event.type}) in ${projectPath}`);
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
console.warn(`[hooks] on-spec-change error for ${event.path}:`, err);
|
|
34
|
+
}
|
|
35
|
+
return Promise.resolve();
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=on-spec-change.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-spec-change.js","sourceRoot":"","sources":["../../../../src/engine/hooks/handlers/on-spec-change.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,qDAAqD;AAIrD,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAmB,EAAE,WAAmB;IACzE,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,iCAAiC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,QAAQ,WAAW,EAAE,CAAC,CAAC;IAChG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,oCAAoC,KAAK,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { EventBusEvent, SpecStatusChangePayload, StatusChangeResult, DashboardRegenFn } from '../../../types/file-hooks.js';
|
|
2
|
+
import type { EventBus } from '../event-bus.js';
|
|
3
|
+
/**
|
|
4
|
+
* Check if dashboard regen for the project is within rate limit.
|
|
5
|
+
* Returns true if rate-limited (should skip), false if should proceed.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isDashboardRateLimited(projectId: string, nowMs?: number): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Record regen timestamp for a project.
|
|
10
|
+
*/
|
|
11
|
+
export declare function recordRegenTimestamp(projectId: string, nowMs?: number): void;
|
|
12
|
+
/**
|
|
13
|
+
* Clear all regen timestamps (for testing).
|
|
14
|
+
*/
|
|
15
|
+
export declare function clearRegenTimestamps(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Extract and validate SpecStatusChangePayload from an EventBusEvent.
|
|
18
|
+
* Returns null if payload is invalid or missing required fields.
|
|
19
|
+
*/
|
|
20
|
+
export declare function extractStatusChangePayload(event: EventBusEvent): SpecStatusChangePayload | null;
|
|
21
|
+
/**
|
|
22
|
+
* Handle a spec:status-change event.
|
|
23
|
+
* Regenerates the spec dashboard, rate-limited per project.
|
|
24
|
+
*/
|
|
25
|
+
export declare function handleStatusChange(event: EventBusEvent, regenFn: DashboardRegenFn): Promise<StatusChangeResult | null>;
|
|
26
|
+
/**
|
|
27
|
+
* Emit a spec:status-change event on the event bus.
|
|
28
|
+
*/
|
|
29
|
+
export declare function emitSpecStatusChange(bus: EventBus, payload: SpecStatusChangePayload): EventBusEvent;
|
|
30
|
+
/**
|
|
31
|
+
* Subscribe to spec:status-change events on the event bus.
|
|
32
|
+
* Returns an unsubscribe function.
|
|
33
|
+
*/
|
|
34
|
+
export declare function subscribeStatusChangeHandler(bus: EventBus, regenFn: DashboardRegenFn): () => void;
|
|
35
|
+
//# sourceMappingURL=on-status-change.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-status-change.d.ts","sourceRoot":"","sources":["../../../../src/engine/hooks/handlers/on-status-change.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAShD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAmB,GAAG,OAAO,CAM7F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAmB,GAAG,IAAI,CAExF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAMD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,aAAa,GAAG,uBAAuB,GAAG,IAAI,CA0B/F;AAMD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAoCpC;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,QAAQ,EACb,OAAO,EAAE,uBAAuB,GAC/B,aAAa,CAQf;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,IAAI,CAUjG"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// engine/hooks/handlers/on-status-change.ts — on-status-change hook handler (SPEC-137)
|
|
2
|
+
// Listens for spec:status-change events and regenerates the spec dashboard.
|
|
3
|
+
// Rate-limited to 10 seconds per project to avoid excessive regeneration.
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// Rate limiter (per project, 10 second cooldown)
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
const RATE_LIMIT_MS = 10_000; // 10 seconds
|
|
8
|
+
const lastRegenTimestamps = new Map();
|
|
9
|
+
/**
|
|
10
|
+
* Check if dashboard regen for the project is within rate limit.
|
|
11
|
+
* Returns true if rate-limited (should skip), false if should proceed.
|
|
12
|
+
*/
|
|
13
|
+
export function isDashboardRateLimited(projectId, nowMs = Date.now()) {
|
|
14
|
+
const last = lastRegenTimestamps.get(projectId);
|
|
15
|
+
if (last === undefined) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
return nowMs - last < RATE_LIMIT_MS;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Record regen timestamp for a project.
|
|
22
|
+
*/
|
|
23
|
+
export function recordRegenTimestamp(projectId, nowMs = Date.now()) {
|
|
24
|
+
lastRegenTimestamps.set(projectId, nowMs);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Clear all regen timestamps (for testing).
|
|
28
|
+
*/
|
|
29
|
+
export function clearRegenTimestamps() {
|
|
30
|
+
lastRegenTimestamps.clear();
|
|
31
|
+
}
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// Payload extraction
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
/**
|
|
36
|
+
* Extract and validate SpecStatusChangePayload from an EventBusEvent.
|
|
37
|
+
* Returns null if payload is invalid or missing required fields.
|
|
38
|
+
*/
|
|
39
|
+
export function extractStatusChangePayload(event) {
|
|
40
|
+
const { data } = event;
|
|
41
|
+
if (typeof data.eventName !== 'string' || data.eventName !== 'spec:status-change') {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
if (typeof data.specId !== 'string' ||
|
|
45
|
+
typeof data.oldStatus !== 'string' ||
|
|
46
|
+
typeof data.newStatus !== 'string' ||
|
|
47
|
+
typeof data.projectId !== 'string') {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
if (!data.specId || !data.projectId) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
specId: data.specId,
|
|
55
|
+
oldStatus: data.oldStatus,
|
|
56
|
+
newStatus: data.newStatus,
|
|
57
|
+
projectId: data.projectId,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// Core handler logic
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
/**
|
|
64
|
+
* Handle a spec:status-change event.
|
|
65
|
+
* Regenerates the spec dashboard, rate-limited per project.
|
|
66
|
+
*/
|
|
67
|
+
export async function handleStatusChange(event, regenFn) {
|
|
68
|
+
const payload = extractStatusChangePayload(event);
|
|
69
|
+
if (!payload) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
const now = Date.now();
|
|
73
|
+
if (isDashboardRateLimited(payload.projectId, now)) {
|
|
74
|
+
return {
|
|
75
|
+
specId: payload.specId,
|
|
76
|
+
dashboardRegenerated: false,
|
|
77
|
+
reason: 'rate-limited',
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
recordRegenTimestamp(payload.projectId, now);
|
|
81
|
+
try {
|
|
82
|
+
const regenerated = await regenFn(payload.projectId);
|
|
83
|
+
if (regenerated) {
|
|
84
|
+
console.warn(`[hooks] Dashboard regenerated for project ${payload.projectId} after ${payload.specId} changed to ${payload.newStatus}`);
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
specId: payload.specId,
|
|
88
|
+
dashboardRegenerated: regenerated,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
console.warn(`[hooks] on-status-change dashboard regen error:`, err);
|
|
93
|
+
return {
|
|
94
|
+
specId: payload.specId,
|
|
95
|
+
dashboardRegenerated: false,
|
|
96
|
+
reason: 'regen-error',
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
// EventBus integration
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
/**
|
|
104
|
+
* Emit a spec:status-change event on the event bus.
|
|
105
|
+
*/
|
|
106
|
+
export function emitSpecStatusChange(bus, payload) {
|
|
107
|
+
return bus.emitEvent('hook:complete', {
|
|
108
|
+
eventName: 'spec:status-change',
|
|
109
|
+
specId: payload.specId,
|
|
110
|
+
oldStatus: payload.oldStatus,
|
|
111
|
+
newStatus: payload.newStatus,
|
|
112
|
+
projectId: payload.projectId,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Subscribe to spec:status-change events on the event bus.
|
|
117
|
+
* Returns an unsubscribe function.
|
|
118
|
+
*/
|
|
119
|
+
export function subscribeStatusChangeHandler(bus, regenFn) {
|
|
120
|
+
const listener = (event) => {
|
|
121
|
+
void handleStatusChange(event, regenFn);
|
|
122
|
+
};
|
|
123
|
+
bus.onEvent('hook:complete', listener);
|
|
124
|
+
return () => {
|
|
125
|
+
bus.off('hook:complete', listener);
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=on-status-change.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-status-change.js","sourceRoot":"","sources":["../../../../src/engine/hooks/handlers/on-status-change.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { WorkerEngine, getWorkerEngine, resetWorkerEngine } from './worker-engine.js';
|
|
1
|
+
export { WorkerEngine, getWorkerEngine, resetWorkerEngine, ensureWorkersStarted, } from './worker-engine.js';
|
|
2
2
|
export { runTestGaps } from './handlers/test-gaps.js';
|
|
3
3
|
export { runSecurityAudit } from './handlers/security-audit.js';
|
|
4
4
|
export { runOptimization } from './handlers/optimization.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/workers/index.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/workers/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// engine/workers/index.ts — Barrel export for workers engine (SPEC-078)
|
|
2
|
-
export { WorkerEngine, getWorkerEngine, resetWorkerEngine } from './worker-engine.js';
|
|
2
|
+
export { WorkerEngine, getWorkerEngine, resetWorkerEngine, ensureWorkersStarted, } from './worker-engine.js';
|
|
3
3
|
export { runTestGaps } from './handlers/test-gaps.js';
|
|
4
4
|
export { runSecurityAudit } from './handlers/security-audit.js';
|
|
5
5
|
export { runOptimization } from './handlers/optimization.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/workers/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/workers/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -21,4 +21,11 @@ export declare class WorkerEngine {
|
|
|
21
21
|
}
|
|
22
22
|
export declare function getWorkerEngine(): WorkerEngine;
|
|
23
23
|
export declare function resetWorkerEngine(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Auto-start worker engine if not active. Called transparently from the tool
|
|
26
|
+
* pipeline whenever a tool receives a projectPath arg. Idempotent and
|
|
27
|
+
* fire-and-forget — errors are silently swallowed so tool execution is never
|
|
28
|
+
* blocked by worker startup failures.
|
|
29
|
+
*/
|
|
30
|
+
export declare function ensureWorkersStarted(_projectPath: string): void;
|
|
24
31
|
//# sourceMappingURL=worker-engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-engine.d.ts","sourceRoot":"","sources":["../../../src/engine/workers/worker-engine.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EAErB,MAAM,sBAAsB,CAAC;AAiC9B,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,KAAK,CAAyD;IACtE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2C;IAE/D,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxD,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAKZ,QAAQ,IAAI,OAAO;IAInB,oBAAoB,IAAI,gBAAgB,EAAE;IAI1C,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAwBvE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO;IA4CvD,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YAyBpD,aAAa;IAgE3B,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,YAAY,GAAG,SAAS;IAa7E,cAAc,IAAI,MAAM;CAGzB;AAQD,wBAAgB,eAAe,IAAI,YAAY,CAG9C;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC"}
|
|
1
|
+
{"version":3,"file":"worker-engine.d.ts","sourceRoot":"","sources":["../../../src/engine/workers/worker-engine.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EAErB,MAAM,sBAAsB,CAAC;AAiC9B,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,KAAK,CAAyD;IACtE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2C;IAE/D,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxD,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAKZ,QAAQ,IAAI,OAAO;IAInB,oBAAoB,IAAI,gBAAgB,EAAE;IAI1C,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAwBvE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO;IA4CvD,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YAyBpD,aAAa;IAgE3B,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,YAAY,GAAG,SAAS;IAa7E,cAAc,IAAI,MAAM;CAGzB;AAQD,wBAAgB,eAAe,IAAI,YAAY,CAG9C;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAW/D"}
|
|
@@ -230,4 +230,22 @@ export function resetWorkerEngine() {
|
|
|
230
230
|
}
|
|
231
231
|
engineInstance = undefined;
|
|
232
232
|
}
|
|
233
|
+
/**
|
|
234
|
+
* Auto-start worker engine if not active. Called transparently from the tool
|
|
235
|
+
* pipeline whenever a tool receives a projectPath arg. Idempotent and
|
|
236
|
+
* fire-and-forget — errors are silently swallowed so tool execution is never
|
|
237
|
+
* blocked by worker startup failures.
|
|
238
|
+
*/
|
|
239
|
+
export function ensureWorkersStarted(_projectPath) {
|
|
240
|
+
const engine = getWorkerEngine();
|
|
241
|
+
if (engine.isActive()) {
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
void (async () => {
|
|
245
|
+
await engine.loadRegistry();
|
|
246
|
+
engine.start();
|
|
247
|
+
})().catch(() => {
|
|
248
|
+
// Silently swallow — workers are best-effort
|
|
249
|
+
});
|
|
250
|
+
}
|
|
233
251
|
//# sourceMappingURL=worker-engine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-engine.js","sourceRoot":"","sources":["../../../src/engine/workers/worker-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker-engine.js","sourceRoot":"","sources":["../../../src/engine/workers/worker-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-handler.d.ts","sourceRoot":"","sources":["../../src/tools/safe-handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"safe-handler.d.ts","sourceRoot":"","sources":["../../src/tools/safe-handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA2DpD;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,CAAC,EACpB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAalC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAElC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAElC"}
|
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
import { withLicenseGate, withUsageTracking } from './license-gate.js';
|
|
5
5
|
import { sanitizePath } from './sanitize-path.js';
|
|
6
6
|
import { ensureHooksStarted } from './start-hooks.js';
|
|
7
|
+
import { ensureWorkersStarted } from '../engine/workers/index.js';
|
|
7
8
|
/**
|
|
8
9
|
* Sanitizes path-like fields in tool args before passing to handler.
|
|
9
10
|
* Checks `projectPath` and `path` fields for directory traversal attacks.
|
|
10
|
-
* Also triggers lazy
|
|
11
|
+
* Also triggers lazy auto-start for hooks and workers when a projectPath is present.
|
|
11
12
|
*/
|
|
12
13
|
function sanitizeArgs(args) {
|
|
13
14
|
if (args === null || typeof args !== 'object') {
|
|
@@ -16,8 +17,9 @@ function sanitizeArgs(args) {
|
|
|
16
17
|
const obj = args;
|
|
17
18
|
if (typeof obj.projectPath === 'string') {
|
|
18
19
|
obj.projectPath = sanitizePath(obj.projectPath);
|
|
19
|
-
// Auto-start hooks on first tool call with
|
|
20
|
+
// Auto-start hooks + workers on first tool call with projectPath (fire-and-forget)
|
|
20
21
|
ensureHooksStarted(obj.projectPath);
|
|
22
|
+
ensureWorkersStarted(obj.projectPath);
|
|
21
23
|
}
|
|
22
24
|
if (typeof obj.path === 'string') {
|
|
23
25
|
obj.path = sanitizePath(obj.path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-handler.js","sourceRoot":"","sources":["../../src/tools/safe-handler.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,wEAAwE;AACxE,+EAA+E;AAG/E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"safe-handler.js","sourceRoot":"","sources":["../../src/tools/safe-handler.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,wEAAwE;AACxE,+EAA+E;AAG/E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE;;;;GAIG;AACH,SAAS,YAAY,CAAI,IAAO;IAC9B,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACxC,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChD,mFAAmF;QACnF,kBAAkB,CAAC,GAAG,CAAC,WAAqB,CAAC,CAAC;QAC9C,oBAAoB,CAAC,GAAG,CAAC,WAAqB,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,SAAS,YAAY;IACnB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IACjD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAC1C,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,WAAW,CAAI,EAAoB,EAAE,EAAU;IAC5D,IAAI,KAAgD,CAAC;IACrD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;QAC7D,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9D,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IACpD,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAClB,OAAyC;IAEzC,OAAO,KAAK,EAAE,IAAO,EAAuB,EAAE;QAC5C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBACtD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,QAAgB,EAChB,OAAyC;IAEzC,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAgB,EAChB,OAAyC;IAEzC,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC"}
|