@neurcode-ai/cli 0.9.48 → 0.9.50
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/commands/fix.d.ts +13 -0
- package/dist/commands/fix.d.ts.map +1 -0
- package/dist/commands/fix.js +785 -0
- package/dist/commands/fix.js.map +1 -0
- package/dist/commands/generate.d.ts +7 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +132 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/patch-apply.d.ts +7 -0
- package/dist/commands/patch-apply.d.ts.map +1 -0
- package/dist/commands/patch-apply.js +85 -0
- package/dist/commands/patch-apply.js.map +1 -0
- package/dist/commands/plan-show.d.ts +6 -0
- package/dist/commands/plan-show.d.ts.map +1 -0
- package/dist/commands/plan-show.js +33 -0
- package/dist/commands/plan-show.js.map +1 -0
- package/dist/commands/start-intent.d.ts +6 -0
- package/dist/commands/start-intent.d.ts.map +1 -0
- package/dist/commands/start-intent.js +80 -0
- package/dist/commands/start-intent.js.map +1 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +703 -186
- package/dist/commands/verify.js.map +1 -1
- package/dist/context-engine/graph.d.ts +6 -0
- package/dist/context-engine/graph.d.ts.map +1 -0
- package/dist/context-engine/graph.js +55 -0
- package/dist/context-engine/graph.js.map +1 -0
- package/dist/context-engine/index.d.ts +14 -0
- package/dist/context-engine/index.d.ts.map +1 -0
- package/dist/context-engine/index.js +26 -0
- package/dist/context-engine/index.js.map +1 -0
- package/dist/context-engine/scanner.d.ts +6 -0
- package/dist/context-engine/scanner.d.ts.map +1 -0
- package/dist/context-engine/scanner.js +62 -0
- package/dist/context-engine/scanner.js.map +1 -0
- package/dist/context-engine/scorer.d.ts +9 -0
- package/dist/context-engine/scorer.d.ts.map +1 -0
- package/dist/context-engine/scorer.js +112 -0
- package/dist/context-engine/scorer.js.map +1 -0
- package/dist/context-engine/suggestions.d.ts +12 -0
- package/dist/context-engine/suggestions.d.ts.map +1 -0
- package/dist/context-engine/suggestions.js +22 -0
- package/dist/context-engine/suggestions.js.map +1 -0
- package/dist/index.js +129 -55
- package/dist/index.js.map +1 -1
- package/dist/mcp/context-injector.d.ts +45 -0
- package/dist/mcp/context-injector.d.ts.map +1 -0
- package/dist/mcp/context-injector.js +587 -0
- package/dist/mcp/context-injector.js.map +1 -0
- package/dist/mcp/proximity.d.ts +3 -0
- package/dist/mcp/proximity.d.ts.map +1 -0
- package/dist/mcp/proximity.js +135 -0
- package/dist/mcp/proximity.js.map +1 -0
- package/dist/patch-engine/diff.d.ts +12 -0
- package/dist/patch-engine/diff.d.ts.map +1 -0
- package/dist/patch-engine/diff.js +74 -0
- package/dist/patch-engine/diff.js.map +1 -0
- package/dist/patch-engine/generator.d.ts +13 -0
- package/dist/patch-engine/generator.d.ts.map +1 -0
- package/dist/patch-engine/generator.js +51 -0
- package/dist/patch-engine/generator.js.map +1 -0
- package/dist/patch-engine/index.d.ts +47 -0
- package/dist/patch-engine/index.d.ts.map +1 -0
- package/dist/patch-engine/index.js +182 -0
- package/dist/patch-engine/index.js.map +1 -0
- package/dist/patch-engine/patterns.d.ts +4 -0
- package/dist/patch-engine/patterns.d.ts.map +1 -0
- package/dist/patch-engine/patterns.js +99 -0
- package/dist/patch-engine/patterns.js.map +1 -0
- package/dist/utils/git.d.ts +8 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +55 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/plan-sync.d.ts +34 -0
- package/dist/utils/plan-sync.d.ts.map +1 -0
- package/dist/utils/plan-sync.js +265 -0
- package/dist/utils/plan-sync.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,587 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildProjectContext = buildProjectContext;
|
|
4
|
+
exports.buildPlanContext = buildPlanContext;
|
|
5
|
+
exports.buildPolicyContext = buildPolicyContext;
|
|
6
|
+
exports.buildInjectedContext = buildInjectedContext;
|
|
7
|
+
exports.buildGovernedPrompt = buildGovernedPrompt;
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const change_contract_1 = require("../utils/change-contract");
|
|
11
|
+
const policy_compiler_1 = require("../utils/policy-compiler");
|
|
12
|
+
const policy_packs_1 = require("../utils/policy-packs");
|
|
13
|
+
const plan_sync_1 = require("../utils/plan-sync");
|
|
14
|
+
const state_1 = require("../utils/state");
|
|
15
|
+
const proximity_1 = require("./proximity");
|
|
16
|
+
const DEFAULT_MAX_TREE_ENTRIES = 80;
|
|
17
|
+
const DEFAULT_MAX_TREE_DEPTH = 3;
|
|
18
|
+
const IGNORED_TREE_DIRS = new Set([
|
|
19
|
+
'.git',
|
|
20
|
+
'.neurcode',
|
|
21
|
+
'.next',
|
|
22
|
+
'.turbo',
|
|
23
|
+
'.cache',
|
|
24
|
+
'node_modules',
|
|
25
|
+
'dist',
|
|
26
|
+
'build',
|
|
27
|
+
'coverage',
|
|
28
|
+
]);
|
|
29
|
+
const IGNORED_TREE_EXTENSIONS = new Set([
|
|
30
|
+
'.png',
|
|
31
|
+
'.jpg',
|
|
32
|
+
'.jpeg',
|
|
33
|
+
'.gif',
|
|
34
|
+
'.svg',
|
|
35
|
+
'.ico',
|
|
36
|
+
'.woff',
|
|
37
|
+
'.woff2',
|
|
38
|
+
'.ttf',
|
|
39
|
+
'.eot',
|
|
40
|
+
'.map',
|
|
41
|
+
'.log',
|
|
42
|
+
'.lock',
|
|
43
|
+
]);
|
|
44
|
+
function normalizeRepoPath(value) {
|
|
45
|
+
return value.replace(/\\/g, '/').replace(/^\.\//, '').trim();
|
|
46
|
+
}
|
|
47
|
+
function isEnabledFlag(value) {
|
|
48
|
+
if (!value)
|
|
49
|
+
return false;
|
|
50
|
+
const normalized = value.trim().toLowerCase();
|
|
51
|
+
return normalized === '1' || normalized === 'true' || normalized === 'yes' || normalized === 'on';
|
|
52
|
+
}
|
|
53
|
+
function isStrictScopeModeEnabled(userPrompt) {
|
|
54
|
+
if (isEnabledFlag(process.env.NEURCODE_MCP_STRICT_SCOPE)) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return /\bstrict(\s|-)?(scope|mode)\b|\b--strict-scope\b/i.test(userPrompt);
|
|
58
|
+
}
|
|
59
|
+
function isUrgencyDetected(userPrompt) {
|
|
60
|
+
if (isEnabledFlag(process.env.NEURCODE_MCP_EXPEDITE_MODE)) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
return /\bhotfix\b|\burgent\b|\bprod\s*down\b|\bincident\b|\b--expedite\b/i.test(userPrompt);
|
|
64
|
+
}
|
|
65
|
+
function chooseScopeExtensionOption(userPrompt, requestedOutOfScopeFiles) {
|
|
66
|
+
const normalized = userPrompt.toLowerCase();
|
|
67
|
+
const newFeatureSignals = [
|
|
68
|
+
'add new',
|
|
69
|
+
'create',
|
|
70
|
+
'new endpoint',
|
|
71
|
+
'new feature',
|
|
72
|
+
'introduce',
|
|
73
|
+
'build',
|
|
74
|
+
'implement feature',
|
|
75
|
+
];
|
|
76
|
+
const maintenanceSignals = [
|
|
77
|
+
'fix',
|
|
78
|
+
'bug',
|
|
79
|
+
'patch',
|
|
80
|
+
'hotfix',
|
|
81
|
+
'refactor',
|
|
82
|
+
'cleanup',
|
|
83
|
+
'optimize',
|
|
84
|
+
'rename',
|
|
85
|
+
'adjust',
|
|
86
|
+
'update existing',
|
|
87
|
+
];
|
|
88
|
+
const hasNewFeatureSignal = newFeatureSignals.some((signal) => normalized.includes(signal));
|
|
89
|
+
const hasMaintenanceSignal = maintenanceSignals.some((signal) => normalized.includes(signal));
|
|
90
|
+
if (hasNewFeatureSignal || requestedOutOfScopeFiles.length > 1) {
|
|
91
|
+
return {
|
|
92
|
+
option: 1,
|
|
93
|
+
explanation: 'new-feature intent detected; scope extension is the safer path',
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (hasMaintenanceSignal && !hasNewFeatureSignal) {
|
|
97
|
+
return {
|
|
98
|
+
option: 2,
|
|
99
|
+
explanation: 'maintenance/refactor intent detected; staying in allowed scope is preferred',
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
option: 1,
|
|
104
|
+
explanation: 'requested change likely needs planned scope expansion',
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function toTreeLine(depth, label) {
|
|
108
|
+
return `${' '.repeat(Math.max(0, depth))}- ${label}`;
|
|
109
|
+
}
|
|
110
|
+
function buildProjectContext(projectRoot, options) {
|
|
111
|
+
const maxEntries = Number.isFinite(options?.maxEntries)
|
|
112
|
+
? Math.max(10, Math.floor(options?.maxEntries))
|
|
113
|
+
: DEFAULT_MAX_TREE_ENTRIES;
|
|
114
|
+
const maxDepth = Number.isFinite(options?.maxDepth)
|
|
115
|
+
? Math.max(1, Math.floor(options?.maxDepth))
|
|
116
|
+
: DEFAULT_MAX_TREE_DEPTH;
|
|
117
|
+
const treeLines = [];
|
|
118
|
+
let scannedEntries = 0;
|
|
119
|
+
let truncated = false;
|
|
120
|
+
const walk = (currentPath, depth) => {
|
|
121
|
+
if (depth > maxDepth || truncated)
|
|
122
|
+
return;
|
|
123
|
+
let entries = [];
|
|
124
|
+
try {
|
|
125
|
+
entries = (0, fs_1.readdirSync)(currentPath).map((name) => {
|
|
126
|
+
const absolutePath = (0, path_1.join)(currentPath, name);
|
|
127
|
+
let isDirectory = false;
|
|
128
|
+
try {
|
|
129
|
+
const stat = (0, fs_1.lstatSync)(absolutePath);
|
|
130
|
+
if (stat.isSymbolicLink()) {
|
|
131
|
+
return { name, isDirectory: false, absolutePath: '' };
|
|
132
|
+
}
|
|
133
|
+
isDirectory = stat.isDirectory();
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return { name, isDirectory: false, absolutePath: '' };
|
|
137
|
+
}
|
|
138
|
+
return { name, isDirectory, absolutePath };
|
|
139
|
+
}).filter((entry) => Boolean(entry.absolutePath));
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
entries.sort((left, right) => {
|
|
145
|
+
if (left.isDirectory !== right.isDirectory) {
|
|
146
|
+
return left.isDirectory ? -1 : 1;
|
|
147
|
+
}
|
|
148
|
+
return left.name.localeCompare(right.name);
|
|
149
|
+
});
|
|
150
|
+
for (const entry of entries) {
|
|
151
|
+
if (truncated)
|
|
152
|
+
break;
|
|
153
|
+
if (!entry.name)
|
|
154
|
+
continue;
|
|
155
|
+
if (entry.name.startsWith('.') && !entry.name.startsWith('.env')) {
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (IGNORED_TREE_DIRS.has(entry.name))
|
|
159
|
+
continue;
|
|
160
|
+
if (!entry.isDirectory) {
|
|
161
|
+
const lowered = entry.name.toLowerCase();
|
|
162
|
+
if ([...IGNORED_TREE_EXTENSIONS].some((ext) => lowered.endsWith(ext))) {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
scannedEntries += 1;
|
|
167
|
+
if (scannedEntries > maxEntries) {
|
|
168
|
+
truncated = true;
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
const relativePath = normalizeRepoPath((0, path_1.relative)(projectRoot, entry.absolutePath));
|
|
172
|
+
if (!relativePath || relativePath.startsWith('..')) {
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
if (entry.isDirectory) {
|
|
176
|
+
treeLines.push(toTreeLine(depth, `${entry.name}/`));
|
|
177
|
+
walk(entry.absolutePath, depth + 1);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
treeLines.push(toTreeLine(depth, entry.name));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
walk(projectRoot, 0);
|
|
185
|
+
return {
|
|
186
|
+
rootPath: projectRoot,
|
|
187
|
+
treeLines: treeLines.slice(0, maxEntries),
|
|
188
|
+
scannedEntries: Math.min(scannedEntries, maxEntries),
|
|
189
|
+
maxEntries,
|
|
190
|
+
maxDepth,
|
|
191
|
+
truncated,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
function buildPlanContext(projectRoot, requestedPlanId) {
|
|
195
|
+
const contractRead = (0, change_contract_1.readChangeContract)(projectRoot);
|
|
196
|
+
const localPlan = (0, plan_sync_1.ensureLocalPlan)(projectRoot);
|
|
197
|
+
const localExpectedFiles = localPlan.expectedFiles
|
|
198
|
+
.map((file) => normalizeRepoPath(file))
|
|
199
|
+
.filter((file) => file.length > 0)
|
|
200
|
+
.slice(0, 50);
|
|
201
|
+
const localIntent = localPlan.intent || null;
|
|
202
|
+
const localConstraints = (localPlan.constraints || []).slice(0, 20);
|
|
203
|
+
const requested = requestedPlanId?.trim() || null;
|
|
204
|
+
const statePlanId = (0, state_1.getActivePlanId)();
|
|
205
|
+
if (contractRead.contract) {
|
|
206
|
+
const contract = contractRead.contract;
|
|
207
|
+
const contractExpectedFiles = (contract.expectedFiles || [])
|
|
208
|
+
.map((file) => normalizeRepoPath(file))
|
|
209
|
+
.filter((file) => file.length > 0)
|
|
210
|
+
.slice(0, 50);
|
|
211
|
+
const expectedFiles = [...new Set([...contractExpectedFiles, ...localExpectedFiles])]
|
|
212
|
+
.slice(0, 50);
|
|
213
|
+
const blockedFiles = (contract.planFiles || [])
|
|
214
|
+
.filter((file) => file.action === 'BLOCK')
|
|
215
|
+
.map((file) => normalizeRepoPath(file.path))
|
|
216
|
+
.filter((file) => file.length > 0)
|
|
217
|
+
.slice(0, 25);
|
|
218
|
+
const notes = [];
|
|
219
|
+
if (requested && requested !== contract.planId) {
|
|
220
|
+
notes.push(`Requested plan ID (${requested}) differs from local change contract plan ID (${contract.planId}).`);
|
|
221
|
+
}
|
|
222
|
+
if (expectedFiles.length === 0) {
|
|
223
|
+
notes.push('Plan artifact present but expected file scope is empty.');
|
|
224
|
+
}
|
|
225
|
+
if (localExpectedFiles.length > 0) {
|
|
226
|
+
notes.push(`Plan Sync loaded ${localExpectedFiles.length} local expected file(s) from .neurcode/plan.json.`);
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
available: true,
|
|
230
|
+
source: 'change_contract',
|
|
231
|
+
planId: requested || contract.planId || null,
|
|
232
|
+
intent: localIntent,
|
|
233
|
+
expectedFiles,
|
|
234
|
+
constraints: localConstraints,
|
|
235
|
+
blockedFiles,
|
|
236
|
+
notes,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
if (requested || statePlanId) {
|
|
240
|
+
const notes = ['Using plan ID from CLI state; no local change contract artifact was found.'];
|
|
241
|
+
if (localExpectedFiles.length > 0) {
|
|
242
|
+
notes.push(`Plan Sync loaded ${localExpectedFiles.length} local expected file(s) from .neurcode/plan.json.`);
|
|
243
|
+
}
|
|
244
|
+
return {
|
|
245
|
+
available: true,
|
|
246
|
+
source: 'state',
|
|
247
|
+
planId: requested || statePlanId,
|
|
248
|
+
intent: localIntent,
|
|
249
|
+
expectedFiles: localExpectedFiles,
|
|
250
|
+
constraints: localConstraints,
|
|
251
|
+
blockedFiles: [],
|
|
252
|
+
notes,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
if (localExpectedFiles.length > 0) {
|
|
256
|
+
return {
|
|
257
|
+
available: true,
|
|
258
|
+
source: 'state',
|
|
259
|
+
planId: 'local-plan-sync',
|
|
260
|
+
intent: localIntent,
|
|
261
|
+
expectedFiles: localExpectedFiles,
|
|
262
|
+
constraints: localConstraints,
|
|
263
|
+
blockedFiles: [],
|
|
264
|
+
notes: ['Using local Plan Sync scope from .neurcode/plan.json.'],
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
return {
|
|
268
|
+
available: false,
|
|
269
|
+
source: 'none',
|
|
270
|
+
planId: null,
|
|
271
|
+
intent: null,
|
|
272
|
+
expectedFiles: [],
|
|
273
|
+
constraints: [],
|
|
274
|
+
blockedFiles: [],
|
|
275
|
+
notes: ['No active plan context found in local artifacts.'],
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
function buildPolicyContext(projectRoot) {
|
|
279
|
+
const compiled = (0, policy_compiler_1.readCompiledPolicyArtifact)(projectRoot);
|
|
280
|
+
const lock = (0, policy_packs_1.readPolicyLockFile)(projectRoot);
|
|
281
|
+
const hasCompiled = Boolean(compiled.artifact);
|
|
282
|
+
const hasLock = Boolean(lock.lock);
|
|
283
|
+
const source = hasCompiled && hasLock
|
|
284
|
+
? 'compiled_policy+policy_lock'
|
|
285
|
+
: hasCompiled
|
|
286
|
+
? 'compiled_policy'
|
|
287
|
+
: hasLock
|
|
288
|
+
? 'policy_lock'
|
|
289
|
+
: 'none';
|
|
290
|
+
if (source === 'none') {
|
|
291
|
+
return {
|
|
292
|
+
available: false,
|
|
293
|
+
source,
|
|
294
|
+
policyPackId: null,
|
|
295
|
+
policyPackVersion: null,
|
|
296
|
+
effectiveRuleCount: null,
|
|
297
|
+
deterministicRuleHints: [],
|
|
298
|
+
customPolicyCount: null,
|
|
299
|
+
notes: ['No compiled policy or policy lock file found.'],
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
const policyPackId = compiled.artifact?.source.policyPack?.id
|
|
303
|
+
|| lock.lock?.policyPack?.id
|
|
304
|
+
|| null;
|
|
305
|
+
const policyPackVersion = compiled.artifact?.source.policyPack?.version
|
|
306
|
+
|| lock.lock?.policyPack?.version
|
|
307
|
+
|| null;
|
|
308
|
+
const effectiveRuleCount = compiled.artifact?.source.effectiveRuleCount
|
|
309
|
+
|| lock.lock?.effective.ruleCount
|
|
310
|
+
|| null;
|
|
311
|
+
const customPolicyCount = lock.lock?.customPolicies.count
|
|
312
|
+
?? null;
|
|
313
|
+
const deterministicRuleHints = [...new Set((compiled.artifact?.compilation.deterministicRules || [])
|
|
314
|
+
.slice(0, 12)
|
|
315
|
+
.map((rule) => rule.statement.trim())
|
|
316
|
+
.filter((statement) => statement.length > 0))].slice(0, 8);
|
|
317
|
+
const notes = [];
|
|
318
|
+
if (compiled.error) {
|
|
319
|
+
notes.push(`Compiled policy artifact parse issue: ${compiled.error}`);
|
|
320
|
+
}
|
|
321
|
+
if (lock.error) {
|
|
322
|
+
notes.push(`Policy lock parse issue: ${lock.error}`);
|
|
323
|
+
}
|
|
324
|
+
return {
|
|
325
|
+
available: true,
|
|
326
|
+
source,
|
|
327
|
+
policyPackId,
|
|
328
|
+
policyPackVersion,
|
|
329
|
+
effectiveRuleCount: typeof effectiveRuleCount === 'number' ? effectiveRuleCount : null,
|
|
330
|
+
deterministicRuleHints,
|
|
331
|
+
customPolicyCount: typeof customPolicyCount === 'number' ? customPolicyCount : null,
|
|
332
|
+
notes,
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
function buildInjectedContext(input) {
|
|
336
|
+
const lines = [];
|
|
337
|
+
const userPrompt = input.userPrompt || '';
|
|
338
|
+
const requestedFiles = (0, proximity_1.extractRequestedFilePathsFromPrompt)(userPrompt, 3);
|
|
339
|
+
const allowedFileSet = new Set(input.plan.expectedFiles.map((file) => normalizeRepoPath(file)));
|
|
340
|
+
const requestedOutOfScopeFiles = requestedFiles.filter((file) => !allowedFileSet.has(normalizeRepoPath(file)));
|
|
341
|
+
const primaryRequestedFile = requestedOutOfScopeFiles[0] || requestedFiles[0] || '';
|
|
342
|
+
const closestAllowedFile = (0, proximity_1.findClosestAllowedFile)(primaryRequestedFile, input.plan.expectedFiles);
|
|
343
|
+
const closestAllowedTarget = closestAllowedFile || 'an existing allowed file relevant to this feature';
|
|
344
|
+
const strictScopeMode = isStrictScopeModeEnabled(userPrompt);
|
|
345
|
+
const urgencyDetected = isUrgencyDetected(userPrompt);
|
|
346
|
+
const hasOutOfScopeRequest = requestedOutOfScopeFiles.length > 0;
|
|
347
|
+
const scopeRecommendation = chooseScopeExtensionOption(userPrompt, requestedOutOfScopeFiles);
|
|
348
|
+
const recommendedOptionLine = scopeRecommendation.option === 1
|
|
349
|
+
? '* Option 1 — Add these files to plan scope and continue'
|
|
350
|
+
: `* Option 2 — Implement inside existing allowed file (${closestAllowedTarget})`;
|
|
351
|
+
const requestedScopeDelta = hasOutOfScopeRequest
|
|
352
|
+
? requestedOutOfScopeFiles.slice(0, 3)
|
|
353
|
+
: ['<requested file path>'];
|
|
354
|
+
const scopeDeltaText = requestedScopeDelta.join(', ');
|
|
355
|
+
const scopeDeltaAlternative = `Add the following file(s) to plan scope: ${scopeDeltaText} OR implement change inside ${closestAllowedTarget}`;
|
|
356
|
+
lines.push('Neurcode MCP v1 Governance Context');
|
|
357
|
+
lines.push('');
|
|
358
|
+
lines.push('Hard Constraints:');
|
|
359
|
+
lines.push('- You MUST NOT modify files outside planned scope.');
|
|
360
|
+
lines.push('- You MUST NOT violate policy rules (for example: layering, validation, and safety guardrails).');
|
|
361
|
+
lines.push('- Only introduce new files if absolutely required.');
|
|
362
|
+
lines.push('- For policy conflicts, you MUST refuse and explain the limitation.');
|
|
363
|
+
lines.push('- For scope conflicts, follow Scope Enforcement mode (soft guidance by default; strict refusal only when strict mode is explicitly enabled).');
|
|
364
|
+
if (urgencyDetected) {
|
|
365
|
+
lines.push('- Urgency detected: use Expedite Mode guidance for controlled temporary relaxation of non-critical constraints.');
|
|
366
|
+
}
|
|
367
|
+
lines.push('');
|
|
368
|
+
if (urgencyDetected) {
|
|
369
|
+
lines.push('Expedite Mode Suggested:');
|
|
370
|
+
lines.push('Options:');
|
|
371
|
+
lines.push('1. Standard Mode (strict)');
|
|
372
|
+
lines.push('2. Expedite Mode (temporary)');
|
|
373
|
+
lines.push('Expedite Mode rules:');
|
|
374
|
+
lines.push('- MUST NOT bypass authentication, authorization, or security checks.');
|
|
375
|
+
lines.push('- MAY temporarily relax non-critical validations or layering if needed.');
|
|
376
|
+
lines.push('- MUST keep changes minimal and localized.');
|
|
377
|
+
lines.push('- MUST include follow-up tasks to restore full compliance.');
|
|
378
|
+
lines.push('Next step: choose Option 2 only if this is a time-sensitive incident, then implement the minimal safe patch and add explicit follow-up tasks.');
|
|
379
|
+
lines.push('');
|
|
380
|
+
}
|
|
381
|
+
lines.push('Scope Enforcement:');
|
|
382
|
+
if (input.plan.expectedFiles.length > 0) {
|
|
383
|
+
lines.push('- Allowed files (from plan):');
|
|
384
|
+
for (const file of input.plan.expectedFiles.slice(0, 20)) {
|
|
385
|
+
lines.push(` - ${file}`);
|
|
386
|
+
}
|
|
387
|
+
if (input.plan.expectedFiles.length > 20) {
|
|
388
|
+
lines.push(` - ... and ${input.plan.expectedFiles.length - 20} more allowed file(s)`);
|
|
389
|
+
}
|
|
390
|
+
lines.push('- You MUST NOT modify files outside this allowed list.');
|
|
391
|
+
if (hasOutOfScopeRequest) {
|
|
392
|
+
lines.push('- Requested out-of-scope file(s) detected in current prompt:');
|
|
393
|
+
requestedOutOfScopeFiles.slice(0, 3).forEach((file) => {
|
|
394
|
+
lines.push(` - ${file}`);
|
|
395
|
+
});
|
|
396
|
+
if (strictScopeMode) {
|
|
397
|
+
lines.push('- Strict scope mode is enabled.');
|
|
398
|
+
lines.push(`- You MUST refuse if the request requires out-of-scope files, and explain the limitation. Use Allowed Alternative like: "${scopeDeltaAlternative}".`);
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
lines.push('- Soft scope mode is enabled (guided scope expansion).');
|
|
402
|
+
lines.push('- Do NOT auto-modify plan. Only suggest scope extension options.');
|
|
403
|
+
lines.push('Scope Extension Suggested:');
|
|
404
|
+
lines.push('Requested file(s):');
|
|
405
|
+
requestedOutOfScopeFiles.slice(0, 3).forEach((file) => {
|
|
406
|
+
lines.push(`* ${file}`);
|
|
407
|
+
});
|
|
408
|
+
lines.push('Options:');
|
|
409
|
+
lines.push('1. Add these files to plan scope and continue');
|
|
410
|
+
lines.push(`2. Implement change inside existing allowed file (${closestAllowedTarget})`);
|
|
411
|
+
lines.push('Recommended option:');
|
|
412
|
+
lines.push(recommendedOptionLine);
|
|
413
|
+
lines.push(`Reason: ${scopeRecommendation.explanation}.`);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
if (!hasOutOfScopeRequest) {
|
|
417
|
+
lines.push('- No out-of-scope files detected in the current prompt.');
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
else {
|
|
421
|
+
lines.push('- Allowed files list is unavailable from local plan artifacts.');
|
|
422
|
+
lines.push('- You MUST refuse scope expansion without explicit plan update, and explain the limitation.');
|
|
423
|
+
}
|
|
424
|
+
lines.push('');
|
|
425
|
+
lines.push('Response Rules:');
|
|
426
|
+
lines.push('- If request is valid:');
|
|
427
|
+
lines.push(' - Generate only the required code.');
|
|
428
|
+
lines.push(' - Do NOT include unnecessary explanations or commentary.');
|
|
429
|
+
lines.push('- If request is out-of-scope:');
|
|
430
|
+
lines.push(' - In soft scope mode:');
|
|
431
|
+
lines.push(' - Do NOT generate out-of-scope code yet.');
|
|
432
|
+
lines.push(' - Respond with Scope Extension Suggested block and wait for user choice.');
|
|
433
|
+
lines.push(' - In strict scope mode:');
|
|
434
|
+
lines.push(' - You MUST NOT generate any code.');
|
|
435
|
+
lines.push(' - You MUST respond ONLY in the following format:');
|
|
436
|
+
lines.push(' - Violation: <brief description>');
|
|
437
|
+
lines.push(' - Reason: <constraint violated>');
|
|
438
|
+
lines.push(` - Allowed Alternative: <concrete next step with file path; e.g., "${scopeDeltaAlternative}">`);
|
|
439
|
+
lines.push(' - Do NOT include any additional text, explanation, or code outside this format.');
|
|
440
|
+
lines.push('- If request violates policy constraints (layering, validation, safety):');
|
|
441
|
+
lines.push(' - You MUST NOT generate violating code.');
|
|
442
|
+
lines.push(' - You MUST respond ONLY in the following format:');
|
|
443
|
+
lines.push(' - Violation: <brief description>');
|
|
444
|
+
lines.push(' - Reason: <constraint violated>');
|
|
445
|
+
lines.push(` - Allowed Alternative: <concrete next step with file path; e.g., "${scopeDeltaAlternative}">`);
|
|
446
|
+
lines.push(' - Do NOT include any additional text, explanation, or code outside this format.');
|
|
447
|
+
if (urgencyDetected) {
|
|
448
|
+
lines.push('- If Expedite Mode is chosen for a non-critical policy issue:');
|
|
449
|
+
lines.push(' - Propose a minimal safe temporary patch.');
|
|
450
|
+
lines.push(' - Add explicit follow-up tasks to restore full compliance.');
|
|
451
|
+
lines.push(' - Mark the response clearly as "Expedite Mode used".');
|
|
452
|
+
}
|
|
453
|
+
lines.push('');
|
|
454
|
+
lines.push('Policy Enforcement Examples:');
|
|
455
|
+
lines.push('- Direct DB in UI: Allowed Alternative: Move logic to a service file such as src/core/<service>.ts, then call it from UI.');
|
|
456
|
+
lines.push(`- Out-of-scope file: Allowed Alternative: Add <requested file> to plan scope OR modify ${closestAllowedTarget}.`);
|
|
457
|
+
lines.push(`- Missing validation: Allowed Alternative: Add input validation in ${closestAllowedTarget} before request handling.`);
|
|
458
|
+
lines.push('');
|
|
459
|
+
lines.push('Response Self-Check:');
|
|
460
|
+
lines.push('- Before responding, verify that your output complies with all constraints above.');
|
|
461
|
+
lines.push('');
|
|
462
|
+
lines.push('Priority:');
|
|
463
|
+
lines.push('1. Follow architecture plan');
|
|
464
|
+
lines.push('2. Respect policies');
|
|
465
|
+
lines.push('3. Minimize scope');
|
|
466
|
+
lines.push('');
|
|
467
|
+
lines.push('Allowed Actions:');
|
|
468
|
+
lines.push('- Modify planned files.');
|
|
469
|
+
lines.push('- Add minimal supporting code only when necessary to complete the requested change.');
|
|
470
|
+
lines.push('');
|
|
471
|
+
lines.push('Output Expectations:');
|
|
472
|
+
lines.push('- Produce minimal, production-ready code.');
|
|
473
|
+
lines.push('- Avoid overengineering.');
|
|
474
|
+
lines.push('- Keep changes localized.');
|
|
475
|
+
lines.push('');
|
|
476
|
+
lines.push('Architecture Constraints:');
|
|
477
|
+
if (input.plan.available) {
|
|
478
|
+
lines.push(`- Active plan source: ${input.plan.source}`);
|
|
479
|
+
if (input.plan.planId) {
|
|
480
|
+
lines.push(`- Active plan ID: ${input.plan.planId}`);
|
|
481
|
+
}
|
|
482
|
+
if (input.plan.intent) {
|
|
483
|
+
lines.push(`- Plan intent: ${input.plan.intent}`);
|
|
484
|
+
}
|
|
485
|
+
if (input.plan.constraints.length > 0) {
|
|
486
|
+
lines.push('- Plan constraints:');
|
|
487
|
+
for (const constraint of input.plan.constraints.slice(0, 8)) {
|
|
488
|
+
lines.push(` - ${constraint}`);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
if (input.plan.expectedFiles.length > 0) {
|
|
492
|
+
lines.push('- Scope boundary: prefer changes only in planned files unless scope expansion is explicitly requested.');
|
|
493
|
+
lines.push('- Planned files:');
|
|
494
|
+
for (const file of input.plan.expectedFiles.slice(0, 12)) {
|
|
495
|
+
lines.push(` - ${file}`);
|
|
496
|
+
}
|
|
497
|
+
if (input.plan.expectedFiles.length > 12) {
|
|
498
|
+
lines.push(` - ... and ${input.plan.expectedFiles.length - 12} more planned file(s)`);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
else {
|
|
502
|
+
lines.push('- Plan context found, but explicit planned files are unavailable. Keep changes tightly scoped.');
|
|
503
|
+
}
|
|
504
|
+
if (input.plan.blockedFiles.length > 0) {
|
|
505
|
+
lines.push('- Blocked files from plan:');
|
|
506
|
+
for (const file of input.plan.blockedFiles.slice(0, 8)) {
|
|
507
|
+
lines.push(` - ${file}`);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
for (const note of input.plan.notes) {
|
|
511
|
+
lines.push(`- Note: ${note}`);
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
else {
|
|
515
|
+
lines.push('- No active plan artifact found. Avoid unrelated architectural changes.');
|
|
516
|
+
}
|
|
517
|
+
lines.push('');
|
|
518
|
+
lines.push('Policy Hints:');
|
|
519
|
+
if (input.policies.available) {
|
|
520
|
+
lines.push(`- Policy source: ${input.policies.source}`);
|
|
521
|
+
if (input.policies.policyPackId && input.policies.policyPackVersion) {
|
|
522
|
+
lines.push(`- Active policy pack: ${input.policies.policyPackId}@${input.policies.policyPackVersion}`);
|
|
523
|
+
}
|
|
524
|
+
if (typeof input.policies.effectiveRuleCount === 'number') {
|
|
525
|
+
lines.push(`- Effective policy rule count: ${input.policies.effectiveRuleCount}`);
|
|
526
|
+
}
|
|
527
|
+
if (typeof input.policies.customPolicyCount === 'number') {
|
|
528
|
+
lines.push(`- Custom policy count: ${input.policies.customPolicyCount}`);
|
|
529
|
+
}
|
|
530
|
+
if (input.policies.deterministicRuleHints.length > 0) {
|
|
531
|
+
lines.push('- Deterministic policy hints:');
|
|
532
|
+
for (const hint of input.policies.deterministicRuleHints.slice(0, 6)) {
|
|
533
|
+
lines.push(` - ${hint}`);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
else {
|
|
537
|
+
lines.push('- Deterministic policy hints are not available in local artifacts.');
|
|
538
|
+
}
|
|
539
|
+
for (const note of input.policies.notes) {
|
|
540
|
+
lines.push(`- Note: ${note}`);
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
else {
|
|
544
|
+
lines.push('- No policy artifacts found. Follow standard repository conventions and avoid risky scope expansion.');
|
|
545
|
+
}
|
|
546
|
+
lines.push('');
|
|
547
|
+
lines.push('Scope Boundaries:');
|
|
548
|
+
lines.push('- Keep implementation focused on user intent and planned scope.');
|
|
549
|
+
lines.push('- Avoid unrelated refactors unless explicitly requested.');
|
|
550
|
+
if (input.plan.blockedFiles.length > 0) {
|
|
551
|
+
lines.push('- Do not edit blocked plan files without explicit approval.');
|
|
552
|
+
}
|
|
553
|
+
lines.push('');
|
|
554
|
+
lines.push(`Project Structure (depth ${input.projectContext.maxDepth}, max ${input.projectContext.maxEntries} entries):`);
|
|
555
|
+
for (const line of input.projectContext.treeLines) {
|
|
556
|
+
lines.push(line);
|
|
557
|
+
}
|
|
558
|
+
if (input.projectContext.treeLines.length === 0) {
|
|
559
|
+
lines.push('- (project tree unavailable)');
|
|
560
|
+
}
|
|
561
|
+
if (input.projectContext.truncated) {
|
|
562
|
+
lines.push(`- ... truncated after ${input.projectContext.maxEntries} entries`);
|
|
563
|
+
}
|
|
564
|
+
return lines.join('\n');
|
|
565
|
+
}
|
|
566
|
+
function buildGovernedPrompt(input) {
|
|
567
|
+
const injectedContext = buildInjectedContext({
|
|
568
|
+
userPrompt: input.userPrompt,
|
|
569
|
+
plan: input.plan,
|
|
570
|
+
policies: input.policies,
|
|
571
|
+
projectContext: input.projectContext,
|
|
572
|
+
});
|
|
573
|
+
return [
|
|
574
|
+
'You are implementing code in a Neurcode-governed repository.',
|
|
575
|
+
'Use the governance context below before generating code.',
|
|
576
|
+
'',
|
|
577
|
+
'--- Governed Context ---',
|
|
578
|
+
injectedContext,
|
|
579
|
+
'',
|
|
580
|
+
'You MUST implement the user request while strictly following the governance context above.',
|
|
581
|
+
'If constraints conflict with the request, follow constraints and explain the limitation.',
|
|
582
|
+
'',
|
|
583
|
+
'--- User Prompt ---',
|
|
584
|
+
input.userPrompt.trim(),
|
|
585
|
+
].join('\n');
|
|
586
|
+
}
|
|
587
|
+
//# sourceMappingURL=context-injector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-injector.js","sourceRoot":"","sources":["../../src/mcp/context-injector.ts"],"names":[],"mappings":";;AA4JA,kDA6FC;AAED,4CA0FC;AAED,gDAwEC;AAED,oDA4OC;AAED,kDAqBC;AApqBD,2BAA4C;AAC5C,+BAAsC;AACtC,8DAA8D;AAC9D,8DAAsE;AACtE,wDAA2D;AAC3D,kDAAqD;AACrD,0CAAiD;AACjD,2CAA0F;AAE1F,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,MAAM;IACN,WAAW;IACX,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,cAAc;IACd,MAAM;IACN,OAAO;IACP,UAAU;CACX,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;CACR,CAAC,CAAC;AAwCH,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,aAAa,CAAC,KAAyB;IAC9C,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,IAAI,CAAC;AACpG,CAAC;AAED,SAAS,wBAAwB,CAAC,UAAkB;IAClD,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,mDAAmD,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAkB;IAC3C,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,oEAAoE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,0BAA0B,CACjC,UAAkB,EAClB,wBAAkC;IAElC,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,iBAAiB,GAAG;QACxB,SAAS;QACT,QAAQ;QACR,cAAc;QACd,aAAa;QACb,WAAW;QACX,OAAO;QACP,mBAAmB;KACpB,CAAC;IACF,MAAM,kBAAkB,GAAG;QACzB,KAAK;QACL,KAAK;QACL,OAAO;QACP,QAAQ;QACR,UAAU;QACV,SAAS;QACT,UAAU;QACV,QAAQ;QACR,QAAQ;QACR,iBAAiB;KAClB,CAAC;IAEF,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5F,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9F,IAAI,mBAAmB,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO;YACL,MAAM,EAAE,CAAC;YACT,WAAW,EAAE,gEAAgE;SAC9E,CAAC;IACJ,CAAC;IAED,IAAI,oBAAoB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjD,OAAO;YACL,MAAM,EAAE,CAAC;YACT,WAAW,EAAE,6EAA6E;SAC3F,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,uDAAuD;KACrE,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,KAAa;IAC9C,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;AACxD,CAAC;AAED,SAAgB,mBAAmB,CACjC,WAAmB,EACnB,OAGC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;QACrD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,UAAoB,CAAC,CAAC;QACzD,CAAC,CAAC,wBAAwB,CAAC;IAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,QAAkB,CAAC,CAAC;QACtD,CAAC,CAAC,sBAAsB,CAAC;IAE3B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,IAAI,GAAG,CAAC,WAAmB,EAAE,KAAa,EAAQ,EAAE;QACxD,IAAI,KAAK,GAAG,QAAQ,IAAI,SAAS;YAAE,OAAO;QAE1C,IAAI,OAAO,GAAwE,EAAE,CAAC;QACtF,IAAI,CAAC;YACH,OAAO,GAAG,IAAA,gBAAW,EAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC9C,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBAC7C,IAAI,WAAW,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAA,cAAS,EAAC,YAAY,CAAC,CAAC;oBACrC,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;wBAC1B,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;oBACxD,CAAC;oBACD,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;gBACxD,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;YAC7C,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC3B,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,SAAS;gBAAE,MAAM;YACrB,IAAI,CAAC,KAAK,CAAC,IAAI;gBAAE,SAAS;YAC1B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjE,SAAS;YACX,CAAC;YACD,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YAEhD,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzC,IAAI,CAAC,GAAG,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBACtE,SAAS;gBACX,CAAC;YACH,CAAC;YAED,cAAc,IAAI,CAAC,CAAC;YACpB,IAAI,cAAc,GAAG,UAAU,EAAE,CAAC;gBAChC,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;YACR,CAAC;YAED,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAA,eAAQ,EAAC,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YAClF,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAErB,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;QACzC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC;QACpD,UAAU;QACV,QAAQ;QACR,SAAS;KACV,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,WAAmB,EAAE,eAAwB;IAC5E,MAAM,YAAY,GAAG,IAAA,oCAAkB,EAAC,WAAW,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAA,2BAAe,EAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,kBAAkB,GAAG,SAAS,CAAC,aAAa;SAC/C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;SACtC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChB,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC;IAC7C,MAAM,gBAAgB,GAAG,CAAC,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,eAAe,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;IAClD,MAAM,WAAW,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEtC,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;QACvC,MAAM,qBAAqB,GAAG,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC;aACzD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;aACtC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChB,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,qBAAqB,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC;aAClF,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhB,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;aAC5C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC;aACzC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC3C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,SAAS,IAAI,SAAS,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,sBAAsB,SAAS,iDAAiD,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;QAClH,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,oBAAoB,kBAAkB,CAAC,MAAM,mDAAmD,CAAC,CAAC;QAC/G,CAAC;QAED,OAAO;YACL,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,SAAS,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI;YAC5C,MAAM,EAAE,WAAW;YACnB,aAAa;YACb,WAAW,EAAE,gBAAgB;YAC7B,YAAY;YACZ,KAAK;SACN,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,IAAI,WAAW,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAa,CAAC,4EAA4E,CAAC,CAAC;QACvG,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,oBAAoB,kBAAkB,CAAC,MAAM,mDAAmD,CAAC,CAAC;QAC/G,CAAC;QACD,OAAO;YACL,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,SAAS,IAAI,WAAW;YAChC,MAAM,EAAE,WAAW;YACnB,aAAa,EAAE,kBAAkB;YACjC,WAAW,EAAE,gBAAgB;YAC7B,YAAY,EAAE,EAAE;YAChB,KAAK;SACN,CAAC;IACJ,CAAC;IAED,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO;YACL,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,WAAW;YACnB,aAAa,EAAE,kBAAkB;YACjC,WAAW,EAAE,gBAAgB;YAC7B,YAAY,EAAE,EAAE;YAChB,KAAK,EAAE,CAAC,uDAAuD,CAAC;SACjE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,EAAE;QACjB,WAAW,EAAE,EAAE;QACf,YAAY,EAAE,EAAE;QAChB,KAAK,EAAE,CAAC,kDAAkD,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAAC,WAAmB;IACpD,MAAM,QAAQ,GAAG,IAAA,4CAA0B,EAAC,WAAW,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,IAAA,iCAAkB,EAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnC,MAAM,MAAM,GACV,WAAW,IAAI,OAAO;QACpB,CAAC,CAAC,6BAA6B;QAC/B,CAAC,CAAC,WAAW;YACX,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,OAAO;gBACP,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,MAAM,CAAC;IAEjB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM;YACN,YAAY,EAAE,IAAI;YAClB,iBAAiB,EAAE,IAAI;YACvB,kBAAkB,EAAE,IAAI;YACxB,sBAAsB,EAAE,EAAE;YAC1B,iBAAiB,EAAE,IAAI;YACvB,KAAK,EAAE,CAAC,+CAA+C,CAAC;SACzD,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAChB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE;WACrC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;WACzB,IAAI,CAAC;IACV,MAAM,iBAAiB,GACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO;WAC1C,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO;WAC9B,IAAI,CAAC;IAEV,MAAM,kBAAkB,GACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,kBAAkB;WACzC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS;WAC9B,IAAI,CAAC;IAEV,MAAM,iBAAiB,GACrB,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK;WAC5B,IAAI,CAAC;IAEV,MAAM,sBAAsB,GAAG,CAAC,GAAG,IAAI,GAAG,CACxC,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,kBAAkB,IAAI,EAAE,CAAC;aACtD,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aACZ,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;aACpC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAC/C,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEf,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,yCAAyC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,OAAO;QACL,SAAS,EAAE,IAAI;QACf,MAAM;QACN,YAAY;QACZ,iBAAiB;QACjB,kBAAkB,EAAE,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI;QACtF,sBAAsB;QACtB,iBAAiB,EAAE,OAAO,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI;QACnF,KAAK;KACN,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAClC,KAA6E;IAE7E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,IAAA,+CAAmC,EAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChG,MAAM,wBAAwB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/G,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpF,MAAM,kBAAkB,GAAG,IAAA,kCAAsB,EAAC,oBAAoB,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAClG,MAAM,oBAAoB,GAAG,kBAAkB,IAAI,mDAAmD,CAAC;IACvG,MAAM,eAAe,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,eAAe,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,MAAM,GAAG,CAAC,CAAC;IACjE,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;IAC7F,MAAM,qBAAqB,GACzB,mBAAmB,CAAC,MAAM,KAAK,CAAC;QAC9B,CAAC,CAAC,yDAAyD;QAC3D,CAAC,CAAC,wDAAwD,oBAAoB,GAAG,CAAC;IACtF,MAAM,mBAAmB,GACvB,oBAAoB;QAClB,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;IAChC,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,qBAAqB,GAAG,4CAA4C,cAAc,+BAA+B,oBAAoB,EAAE,CAAC;IAE9I,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,iGAAiG,CAAC,CAAC;IAC9G,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;IAClF,KAAK,CAAC,IAAI,CAAC,8IAA8I,CAAC,CAAC;IAC3J,IAAI,eAAe,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,iHAAiH,CAAC,CAAC;IAChI,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,IAAI,eAAe,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;QACnF,KAAK,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;QACtF,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,+IAA+I,CAAC,CAAC;QAC5J,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,uBAAuB,CAAC,CAAC;QACzF,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACrE,IAAI,oBAAoB,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAC3E,wBAAwB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACpD,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,IAAI,eAAe,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBAC9C,KAAK,CAAC,IAAI,CAAC,4HAA4H,qBAAqB,IAAI,CAAC,CAAC;YACpK,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;gBACrE,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;gBAC/E,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBACzC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACjC,wBAAwB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACpD,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC,qDAAqD,oBAAoB,GAAG,CAAC,CAAC;gBACzF,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,WAAW,mBAAmB,CAAC,WAAW,GAAG,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;IAC5G,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IACzE,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC3D,KAAK,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;IAC3F,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,2EAA2E,qBAAqB,IAAI,CAAC,CAAC;IACjH,KAAK,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;IAClG,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IACvF,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACxD,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAClD,KAAK,CAAC,IAAI,CAAC,yEAAyE,qBAAqB,IAAI,CAAC,CAAC;IAC/G,KAAK,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;IAChG,IAAI,eAAe,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC3E,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACvE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,2HAA2H,CAAC,CAAC;IACxI,KAAK,CAAC,IAAI,CAAC,0FAA0F,oBAAoB,GAAG,CAAC,CAAC;IAC9H,KAAK,CAAC,IAAI,CAAC,sEAAsE,oBAAoB,2BAA2B,CAAC,CAAC;IAClI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;IAChG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxB,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;IAClG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACxD,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACxC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAClC,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC,OAAO,UAAU,EAAE,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,wGAAwG,CAAC,CAAC;YACrH,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBACzD,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBACzC,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,uBAAuB,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;QAC/G,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACvD,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,IAAI,KAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YACpE,KAAK,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAC,QAAQ,CAAC,YAAY,IAAI,KAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACzG,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,kBAAkB,KAAK,QAAQ,EAAE,CAAC;YAC1D,KAAK,CAAC,IAAI,CAAC,kCAAkC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACrE,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;QACnF,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,sGAAsG,CAAC,CAAC;IACrH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;IAC9E,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACvE,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,4BAA4B,KAAK,CAAC,cAAc,CAAC,QAAQ,SAAS,KAAK,CAAC,cAAc,CAAC,UAAU,YAAY,CAAC,CAAC;IAC1H,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAC,cAAc,CAAC,UAAU,UAAU,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAgB,mBAAmB,CAAC,KAA+B;IACjE,MAAM,eAAe,GAAG,oBAAoB,CAAC;QAC3C,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,cAAc,EAAE,KAAK,CAAC,cAAc;KACrC,CAAC,CAAC;IAEH,OAAO;QACL,8DAA8D;QAC9D,0DAA0D;QAC1D,EAAE;QACF,0BAA0B;QAC1B,eAAe;QACf,EAAE;QACF,4FAA4F;QAC5F,0FAA0F;QAC1F,EAAE;QACF,qBAAqB;QACrB,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE;KACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proximity.d.ts","sourceRoot":"","sources":["../../src/mcp/proximity.ts"],"names":[],"mappings":"AAsEA,wBAAgB,mCAAmC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,MAAM,EAAE,CAyB1F;AAED,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,GAAG,IAAI,CAiDf"}
|