@flyingrobots/graft 0.10.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +41 -0
  3. package/dist/adapters/edict-cli-projection-provider.d.ts +13 -0
  4. package/dist/adapters/edict-cli-projection-provider.d.ts.map +1 -0
  5. package/dist/adapters/edict-cli-projection-provider.js +71 -0
  6. package/dist/adapters/edict-cli-projection-provider.js.map +1 -0
  7. package/dist/api/index.d.ts +16 -2
  8. package/dist/api/index.d.ts.map +1 -1
  9. package/dist/api/index.js +15 -1
  10. package/dist/api/index.js.map +1 -1
  11. package/dist/contracts/review-digest.d.ts +2 -0
  12. package/dist/contracts/review-digest.d.ts.map +1 -0
  13. package/dist/contracts/review-digest.js +145 -0
  14. package/dist/contracts/review-digest.js.map +1 -0
  15. package/dist/mcp/tools/changed-since.js +2 -2
  16. package/dist/mcp/tools/changed-since.js.map +1 -1
  17. package/dist/operations/cached-file.js +2 -2
  18. package/dist/operations/cached-file.js.map +1 -1
  19. package/dist/operations/edict-projection.d.ts +126 -0
  20. package/dist/operations/edict-projection.d.ts.map +1 -0
  21. package/dist/operations/edict-projection.js +394 -0
  22. package/dist/operations/edict-projection.js.map +1 -0
  23. package/dist/operations/projection-profile-resolver.d.ts +67 -0
  24. package/dist/operations/projection-profile-resolver.d.ts.map +1 -0
  25. package/dist/operations/projection-profile-resolver.js +368 -0
  26. package/dist/operations/projection-profile-resolver.js.map +1 -0
  27. package/dist/operations/projection-provider-registry.d.ts +30 -0
  28. package/dist/operations/projection-provider-registry.d.ts.map +1 -0
  29. package/dist/operations/projection-provider-registry.js +86 -0
  30. package/dist/operations/projection-provider-registry.js.map +1 -0
  31. package/dist/operations/repo-workspace.js +2 -2
  32. package/dist/operations/repo-workspace.js.map +1 -1
  33. package/dist/operations/structured-buffer-model.d.ts +28 -3
  34. package/dist/operations/structured-buffer-model.d.ts.map +1 -1
  35. package/dist/operations/structured-buffer-model.js +168 -7
  36. package/dist/operations/structured-buffer-model.js.map +1 -1
  37. package/dist/operations/structured-buffer-query.d.ts.map +1 -1
  38. package/dist/operations/structured-buffer-query.js +231 -6
  39. package/dist/operations/structured-buffer-query.js.map +1 -1
  40. package/dist/operations/structured-buffer.d.ts +19 -1
  41. package/dist/operations/structured-buffer.d.ts.map +1 -1
  42. package/dist/operations/structured-buffer.js +11 -0
  43. package/dist/operations/structured-buffer.js.map +1 -1
  44. package/dist/operations/wesley-projection.d.ts +67 -0
  45. package/dist/operations/wesley-projection.d.ts.map +1 -0
  46. package/dist/operations/wesley-projection.js +2 -0
  47. package/dist/operations/wesley-projection.js.map +1 -0
  48. package/dist/operations/xml-syntax.d.ts +5 -0
  49. package/dist/operations/xml-syntax.d.ts.map +1 -0
  50. package/dist/operations/xml-syntax.js +155 -0
  51. package/dist/operations/xml-syntax.js.map +1 -0
  52. package/dist/parser/lang.d.ts +9 -1
  53. package/dist/parser/lang.d.ts.map +1 -1
  54. package/dist/parser/lang.js +20 -0
  55. package/dist/parser/lang.js.map +1 -1
  56. package/dist/parser/outline.d.ts.map +1 -1
  57. package/dist/parser/outline.js +9 -3
  58. package/dist/parser/outline.js.map +1 -1
  59. package/package.json +1 -1
@@ -0,0 +1,368 @@
1
+ import picomatch from "picomatch";
2
+ import { canonicalJsonSha256Review } from "../contracts/review-digest.js";
3
+ const PROFILE_DIGEST_DOMAIN = "graft.projection-profile/v1";
4
+ const ROUTE_DIGEST_DOMAIN = "graft.projection-route/v1";
5
+ const LOWERCASE_SHA256_REVIEW = /^sha256:[0-9a-f]{64}$/u;
6
+ const FILE_EXTENSION_SUFFIX = /^\.[a-z0-9][a-z0-9_-]*$/u;
7
+ export class ProjectionProfileResolverError extends Error {
8
+ kind = "profile_config_invalid";
9
+ constructor(message) {
10
+ super(message);
11
+ this.name = "ProjectionProfileResolverError";
12
+ }
13
+ }
14
+ export function createProjectionProfileResolver(config) {
15
+ return new ProjectionProfileResolverImpl(config);
16
+ }
17
+ class ProjectionProfileResolverImpl {
18
+ #profiles = new Map();
19
+ #routes;
20
+ #extensionFallbacks;
21
+ constructor(config) {
22
+ for (const profileInput of config.profiles) {
23
+ const profile = normalizeProfile(profileInput);
24
+ if (this.#profiles.has(profile.id)) {
25
+ fail(`Projection profile ${profile.id} is already configured`);
26
+ }
27
+ this.#profiles.set(profile.id, profile);
28
+ }
29
+ this.#routes = Object.freeze((config.routes ?? []).map((route) => normalizeRoute(route, this.#profiles)));
30
+ this.#extensionFallbacks = Object.freeze(normalizeExtensionFallbacks(config.extensionFallbacks ?? [], this.#profiles));
31
+ }
32
+ resolve(opts) {
33
+ const explicitProfileId = normalizeOptionalText(opts.profile);
34
+ if (explicitProfileId !== null) {
35
+ const profile = this.#profiles.get(explicitProfileId);
36
+ if (profile === undefined) {
37
+ return failed({
38
+ kind: "unknown_profile",
39
+ message: `Projection profile ${explicitProfileId} is not configured`,
40
+ profileId: explicitProfileId,
41
+ });
42
+ }
43
+ return resolved(profile, "explicit");
44
+ }
45
+ const normalizedPath = normalizePath(opts.path);
46
+ const matchingRoutes = this.#routes.filter((route) => route.matches(normalizedPath));
47
+ if (matchingRoutes.length > 1) {
48
+ return failed({
49
+ kind: "ambiguous_profile",
50
+ message: `Projection path ${normalizedPath} matches multiple profiles`,
51
+ path: normalizedPath,
52
+ matchingProfileIds: matchingRoutes
53
+ .map((route) => route.profileId)
54
+ .sort(),
55
+ });
56
+ }
57
+ if (matchingRoutes.length === 1) {
58
+ const route = matchingRoutes[0];
59
+ if (route === undefined) {
60
+ fail("Projection route resolution became inconsistent");
61
+ }
62
+ return resolved(this.#mustProfile(route.profileId), "project_config", route.routingDigest);
63
+ }
64
+ const fallback = this.#resolveExtensionFallback(normalizedPath, opts.language);
65
+ if (fallback !== null) {
66
+ if (fallback.state === "failed") {
67
+ return fallback;
68
+ }
69
+ return resolved(this.#mustProfile(fallback.profileId), "extension_fallback");
70
+ }
71
+ return failed({
72
+ kind: "no_provider",
73
+ message: `No projection profile matches ${normalizedPath}`,
74
+ path: normalizedPath,
75
+ });
76
+ }
77
+ #mustProfile(profileId) {
78
+ const profile = this.#profiles.get(profileId);
79
+ if (profile === undefined) {
80
+ fail(`Projection route references missing profile ${profileId}`);
81
+ }
82
+ return profile;
83
+ }
84
+ #resolveExtensionFallback(path, rawLanguage) {
85
+ const extension = extensionForPath(path);
86
+ if (extension === null) {
87
+ return null;
88
+ }
89
+ const language = normalizeOptionalLanguage(rawLanguage);
90
+ const matches = this.#extensionFallbacks.filter((fallback) => fallback.fileExtensions.includes(extension) &&
91
+ (language === null || fallback.language === language));
92
+ if (matches.length === 0) {
93
+ return null;
94
+ }
95
+ if (matches.length > 1) {
96
+ return {
97
+ state: "failed",
98
+ failure: {
99
+ kind: "ambiguous_profile",
100
+ message: `Projection path ${path} matches multiple extension fallback profiles`,
101
+ path,
102
+ matchingProfileIds: matches
103
+ .map((fallback) => fallback.profileId)
104
+ .sort(),
105
+ },
106
+ };
107
+ }
108
+ const match = matches[0];
109
+ if (match === undefined) {
110
+ fail("Projection extension fallback resolution became inconsistent");
111
+ }
112
+ return { state: "matched", profileId: match.profileId };
113
+ }
114
+ }
115
+ function resolved(profile, resolutionSource, routingDigest) {
116
+ const authorityBase = {
117
+ language: profile.language,
118
+ profileId: profile.id,
119
+ profileDigest: profile.profileDigest,
120
+ provider: profile.provider,
121
+ extensions: profile.extensions,
122
+ resolutionSource,
123
+ };
124
+ return {
125
+ state: "resolved",
126
+ authority: routingDigest === undefined
127
+ ? authorityBase
128
+ : { ...authorityBase, routingDigest },
129
+ };
130
+ }
131
+ function failed(failure) {
132
+ return { state: "failed", failure };
133
+ }
134
+ function normalizeProfile(input) {
135
+ const id = normalizeRequiredText(input.id, "projection profile id");
136
+ const language = normalizeLanguage(input.language, "projection profile language");
137
+ const provider = normalizeLanguage(input.provider, "projection profile provider");
138
+ if (input.extensions.length === 0) {
139
+ fail(`Projection profile ${id} must declare at least one semantic extension`);
140
+ }
141
+ const seenCoordinates = new Set();
142
+ const extensions = input.extensions.map((extension) => {
143
+ const coordinate = normalizeRequiredText(extension.coordinate, `projection profile ${id} extension coordinate`);
144
+ if (seenCoordinates.has(coordinate)) {
145
+ fail(`Projection profile ${id} duplicates extension coordinate ${coordinate}`);
146
+ }
147
+ seenCoordinates.add(coordinate);
148
+ const digest = normalizeDigest(extension.digest, `projection profile ${id} extension ${coordinate} digest`);
149
+ return Object.freeze({ coordinate, digest });
150
+ });
151
+ const options = input.options === undefined
152
+ ? undefined
153
+ : normalizeJsonValue(input.options, `projection profile ${id} options`);
154
+ const digestExtensions = [...extensions].sort((left, right) => compareCodePoint(left.coordinate, right.coordinate));
155
+ const digestInput = options === undefined
156
+ ? { id, language, provider, extensions: digestExtensions }
157
+ : { id, language, provider, extensions: digestExtensions, options };
158
+ return Object.freeze({
159
+ id,
160
+ language,
161
+ provider,
162
+ extensions: Object.freeze(extensions),
163
+ ...(options === undefined ? {} : { options }),
164
+ profileDigest: digestReview(PROFILE_DIGEST_DOMAIN, digestInput),
165
+ });
166
+ }
167
+ function normalizeRoute(input, profiles) {
168
+ const profileId = normalizeRequiredText(input.profileId, "projection route profile id");
169
+ if (!profiles.has(profileId)) {
170
+ fail(`Projection route references missing profile ${profileId}`);
171
+ }
172
+ const include = normalizePatternList(input.include, `projection route ${profileId} include`, { requireNonEmpty: true });
173
+ const exclude = normalizePatternList(input.exclude ?? [], `projection route ${profileId} exclude`, {
174
+ requireNonEmpty: false,
175
+ });
176
+ const includeMatcher = picomatch([...include], { dot: true });
177
+ const excludeMatcher = exclude.length === 0 ? null : picomatch([...exclude], { dot: true });
178
+ return Object.freeze({
179
+ profileId,
180
+ include,
181
+ exclude,
182
+ routingDigest: digestReview(ROUTE_DIGEST_DOMAIN, { profileId, include, exclude }),
183
+ matches(path) {
184
+ return includeMatcher(path) && !(excludeMatcher?.(path) ?? false);
185
+ },
186
+ });
187
+ }
188
+ function normalizeExtensionFallbacks(inputs, profiles) {
189
+ const seen = new Set();
190
+ return Object.freeze(inputs.map((input) => {
191
+ const language = normalizeLanguage(input.language, "projection extension fallback language");
192
+ const profileId = normalizeRequiredText(input.profileId, "projection extension fallback profile id");
193
+ const profile = profiles.get(profileId);
194
+ if (profile === undefined) {
195
+ fail(`Projection extension fallback references missing profile ${profileId}`);
196
+ }
197
+ if (profile.language !== language) {
198
+ fail(`Projection extension fallback ${profileId} language must match its profile language`);
199
+ }
200
+ const fileExtensions = normalizeFileExtensionList(input.fileExtensions, `projection extension fallback ${profileId}`);
201
+ for (const extension of fileExtensions) {
202
+ const key = `${language}\0${extension}`;
203
+ if (seen.has(key)) {
204
+ fail(`Projection extension fallback for ${language} ${extension} is already configured`);
205
+ }
206
+ seen.add(key);
207
+ }
208
+ return Object.freeze({ language, profileId, fileExtensions });
209
+ }));
210
+ }
211
+ function normalizePatternList(values, label, opts) {
212
+ if (opts.requireNonEmpty && values.length === 0) {
213
+ fail(`${label} must include at least one glob`);
214
+ }
215
+ const patterns = normalizeUniqueSorted(values, label, (value) => normalizeGlobPattern(value, label));
216
+ if (opts.requireNonEmpty && patterns.length === 0) {
217
+ fail(`${label} must include at least one glob`);
218
+ }
219
+ return patterns;
220
+ }
221
+ function normalizeFileExtensionList(values, label) {
222
+ if (values.length === 0) {
223
+ fail(`${label} must include at least one file extension`);
224
+ }
225
+ return normalizeUniqueSorted(values, label, normalizeFileExtension);
226
+ }
227
+ function normalizeUniqueSorted(values, label, normalize) {
228
+ const seen = new Set();
229
+ const normalized = [];
230
+ for (const value of values) {
231
+ const item = normalize(value);
232
+ if (seen.has(item)) {
233
+ fail(`${label} duplicates ${item}`);
234
+ }
235
+ seen.add(item);
236
+ normalized.push(item);
237
+ }
238
+ return Object.freeze(normalized.sort());
239
+ }
240
+ function normalizeOptionalText(value) {
241
+ if (value === null || value === undefined || value.trim().length === 0) {
242
+ return null;
243
+ }
244
+ return value.trim();
245
+ }
246
+ function normalizeOptionalLanguage(value) {
247
+ const text = normalizeOptionalText(value);
248
+ return text === null ? null : normalizeLanguage(text, "projection language override");
249
+ }
250
+ function normalizeRequiredText(value, label) {
251
+ const text = value.trim();
252
+ if (text.length === 0) {
253
+ fail(`${label} must not be empty`);
254
+ }
255
+ return text;
256
+ }
257
+ function normalizeGlobPattern(value, label) {
258
+ const pattern = normalizeRequiredText(value, label);
259
+ if (pattern.startsWith("!")) {
260
+ fail(`${label} must use the exclude field instead of negated glob patterns`);
261
+ }
262
+ return pattern;
263
+ }
264
+ function normalizeLanguage(value, label) {
265
+ return normalizeRequiredText(value, label).toLowerCase();
266
+ }
267
+ function normalizeDigest(value, label) {
268
+ const digest = normalizeRequiredText(value, label);
269
+ if (!LOWERCASE_SHA256_REVIEW.test(digest)) {
270
+ fail(`${label} must be a lowercase sha256 digest`);
271
+ }
272
+ return digest;
273
+ }
274
+ function normalizeFileExtension(value) {
275
+ const text = normalizeRequiredText(value, "projection fallback file extension").toLowerCase();
276
+ const extension = text.startsWith(".") ? text : `.${text}`;
277
+ if (!FILE_EXTENSION_SUFFIX.test(extension)) {
278
+ fail("projection fallback file extension must be a simple file suffix");
279
+ }
280
+ return extension;
281
+ }
282
+ function extensionForPath(path) {
283
+ const leaf = path.split("/").pop() ?? "";
284
+ const dotIndex = leaf.lastIndexOf(".");
285
+ if (dotIndex <= 0 || dotIndex === leaf.length - 1) {
286
+ return null;
287
+ }
288
+ return leaf.slice(dotIndex).toLowerCase();
289
+ }
290
+ function normalizePath(path) {
291
+ const normalized = path.replaceAll("\\", "/").replace(/^\.\//u, "");
292
+ return normalized.length === 0 ? "." : normalized;
293
+ }
294
+ function normalizeJsonValue(value, label, seen = new WeakSet()) {
295
+ if (value === null || typeof value === "string" || typeof value === "boolean") {
296
+ return value;
297
+ }
298
+ if (typeof value === "number") {
299
+ if (!Number.isFinite(value)) {
300
+ fail(`${label} must be finite JSON data`);
301
+ }
302
+ return value;
303
+ }
304
+ if (Array.isArray(value)) {
305
+ if (seen.has(value)) {
306
+ fail(`${label} must not contain circular data`);
307
+ }
308
+ seen.add(value);
309
+ try {
310
+ const output = [];
311
+ for (let index = 0; index < value.length; index += 1) {
312
+ if (!Object.hasOwn(value, index)) {
313
+ fail(`${label} must not contain sparse arrays`);
314
+ }
315
+ output.push(normalizeJsonValue(value[index], `${label}[${String(index)}]`, seen));
316
+ }
317
+ return Object.freeze(output);
318
+ }
319
+ finally {
320
+ seen.delete(value);
321
+ }
322
+ }
323
+ if (typeof value === "object") {
324
+ const proto = Object.getPrototypeOf(value);
325
+ if (proto !== Object.prototype && proto !== null) {
326
+ fail(`${label} must be plain JSON data`);
327
+ }
328
+ if (seen.has(value)) {
329
+ fail(`${label} must not contain circular data`);
330
+ }
331
+ seen.add(value);
332
+ try {
333
+ const record = value;
334
+ const output = Object.create(null);
335
+ for (const key of Object.keys(record).sort()) {
336
+ const item = record[key];
337
+ if (item === undefined) {
338
+ fail(`${label}.${key} must not be undefined`);
339
+ }
340
+ Object.defineProperty(output, key, {
341
+ enumerable: true,
342
+ value: normalizeJsonValue(item, `${label}.${key}`, seen),
343
+ });
344
+ }
345
+ return Object.freeze(output);
346
+ }
347
+ finally {
348
+ seen.delete(value);
349
+ }
350
+ }
351
+ fail(`${label} must be JSON data`);
352
+ }
353
+ function digestReview(domain, value) {
354
+ return canonicalJsonSha256Review(domain, value);
355
+ }
356
+ function compareCodePoint(left, right) {
357
+ if (left < right) {
358
+ return -1;
359
+ }
360
+ if (left > right) {
361
+ return 1;
362
+ }
363
+ return 0;
364
+ }
365
+ function fail(message) {
366
+ throw new ProjectionProfileResolverError(message);
367
+ }
368
+ //# sourceMappingURL=projection-profile-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection-profile-resolver.js","sourceRoot":"","sources":["../../src/operations/projection-profile-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { EdictProjectionProvider } from "./edict-projection.js";
2
+ import type { WesleyProjectionProvider } from "./wesley-projection.js";
3
+ export type ProjectionProviderBinding = {
4
+ readonly kind: "edict";
5
+ readonly provider: EdictProjectionProvider;
6
+ } | {
7
+ readonly kind: "wesley";
8
+ readonly provider: WesleyProjectionProvider;
9
+ };
10
+ export interface ProjectionProviderRegistration {
11
+ readonly language: string;
12
+ readonly extensions: readonly string[];
13
+ readonly provider: ProjectionProviderBinding;
14
+ }
15
+ export interface ProjectionProviderResolution {
16
+ readonly language: string;
17
+ readonly provider: ProjectionProviderBinding;
18
+ }
19
+ export interface ProjectionProviderRegistry {
20
+ register(registration: ProjectionProviderRegistration): ProjectionProviderRegistry;
21
+ resolve(opts: {
22
+ readonly path: string;
23
+ readonly language?: string | null | undefined;
24
+ }): ProjectionProviderResolution | null;
25
+ }
26
+ export declare class ProjectionProviderRegistryError extends Error {
27
+ constructor(message: string);
28
+ }
29
+ export declare function createProjectionProviderRegistry(registrations?: readonly ProjectionProviderRegistration[]): ProjectionProviderRegistry;
30
+ //# sourceMappingURL=projection-provider-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection-provider-registry.d.ts","sourceRoot":"","sources":["../../src/operations/projection-provider-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEvE,MAAM,MAAM,yBAAyB,GACjC;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;CAC5C,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;CAC7C,CAAC;AAEN,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;CAC9C;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;CAC9C;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,YAAY,EAAE,8BAA8B,GAAG,0BAA0B,CAAC;IACnF,OAAO,CAAC,IAAI,EAAE;QACZ,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;KAC/C,GAAG,4BAA4B,GAAG,IAAI,CAAC;CACzC;AAED,qBAAa,+BAAgC,SAAQ,KAAK;gBAC5C,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,gCAAgC,CAC9C,aAAa,GAAE,SAAS,8BAA8B,EAAO,GAC5D,0BAA0B,CAM5B"}
@@ -0,0 +1,86 @@
1
+ export class ProjectionProviderRegistryError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = "ProjectionProviderRegistryError";
5
+ }
6
+ }
7
+ export function createProjectionProviderRegistry(registrations = []) {
8
+ const registry = new ProjectionProviderRegistryImpl();
9
+ for (const registration of registrations) {
10
+ registry.register(registration);
11
+ }
12
+ return registry;
13
+ }
14
+ class ProjectionProviderRegistryImpl {
15
+ #byLanguage = new Map();
16
+ #byExtension = new Map();
17
+ register(registration) {
18
+ const language = normalizeLanguage(registration.language, "projection provider language");
19
+ if (this.#byLanguage.has(language)) {
20
+ throw new ProjectionProviderRegistryError(`projection provider language ${language} is already registered`);
21
+ }
22
+ if (registration.extensions.length === 0) {
23
+ throw new ProjectionProviderRegistryError(`projection provider ${language} must register at least one extension`);
24
+ }
25
+ const resolution = { language, provider: registration.provider };
26
+ const seenExtensions = new Set();
27
+ const extensions = [];
28
+ for (const rawExtension of registration.extensions) {
29
+ const extension = normalizeExtension(rawExtension);
30
+ if (seenExtensions.has(extension)) {
31
+ throw new ProjectionProviderRegistryError(`projection provider extension ${extension} is duplicated in ${language}`);
32
+ }
33
+ if (this.#byExtension.has(extension)) {
34
+ throw new ProjectionProviderRegistryError(`projection provider extension ${extension} is already registered`);
35
+ }
36
+ seenExtensions.add(extension);
37
+ extensions.push(extension);
38
+ }
39
+ this.#byLanguage.set(language, resolution);
40
+ for (const extension of extensions) {
41
+ this.#byExtension.set(extension, resolution);
42
+ }
43
+ return this;
44
+ }
45
+ resolve(opts) {
46
+ const language = normalizeOptionalLanguage(opts.language);
47
+ if (language !== null) {
48
+ return this.#byLanguage.get(language) ?? null;
49
+ }
50
+ const extension = extensionForPath(opts.path);
51
+ if (extension === null) {
52
+ return null;
53
+ }
54
+ return this.#byExtension.get(extension) ?? null;
55
+ }
56
+ }
57
+ function normalizeOptionalLanguage(value) {
58
+ if (value === null || value === undefined || value.trim().length === 0) {
59
+ return null;
60
+ }
61
+ return normalizeLanguage(value, "projection language override");
62
+ }
63
+ function normalizeLanguage(value, label) {
64
+ const language = value.trim().toLowerCase();
65
+ if (language.length === 0) {
66
+ throw new ProjectionProviderRegistryError(`${label} must not be empty`);
67
+ }
68
+ return language;
69
+ }
70
+ function normalizeExtension(value) {
71
+ const trimmed = value.trim().toLowerCase();
72
+ const extension = trimmed.startsWith(".") ? trimmed : `.${trimmed}`;
73
+ if (extension.length <= 1) {
74
+ throw new ProjectionProviderRegistryError("projection provider extension must not be empty");
75
+ }
76
+ return extension;
77
+ }
78
+ function extensionForPath(path) {
79
+ const leaf = path.split(/[\\/]/u).pop() ?? "";
80
+ const dotIndex = leaf.lastIndexOf(".");
81
+ if (dotIndex <= 0 || dotIndex === leaf.length - 1) {
82
+ return null;
83
+ }
84
+ return leaf.slice(dotIndex).toLowerCase();
85
+ }
86
+ //# sourceMappingURL=projection-provider-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection-provider-registry.js","sourceRoot":"","sources":["../../src/operations/projection-provider-registry.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { CachedFile } from "./cached-file.js";
5
5
  import { ObservationCache, hashContent } from "./observation-cache.js";
6
6
  import { GovernorTracker } from "../session/tracker.js";
7
7
  import { diffOutlines } from "../parser/diff.js";
8
- import { detectStructuredFormat } from "../parser/lang.js";
8
+ import { detectOutlineFormat } from "../parser/lang.js";
9
9
  import { evaluatePolicy } from "../policy/evaluate.js";
10
10
  import { RefusedResult } from "../policy/types.js";
11
11
  import { loadGraftignore } from "../policy/graftignore.js";
@@ -250,7 +250,7 @@ export class RepoWorkspace {
250
250
  return { status: "unchanged" };
251
251
  }
252
252
  if (cacheResult.stale === null) {
253
- if (detectStructuredFormat(filePath) === null) {
253
+ if (detectOutlineFormat(filePath) === null) {
254
254
  const outline = await extractOutlineProjectionForContent(filePath, rawContent, {
255
255
  proseProjector: this.proseProjector,
256
256
  });
@@ -1 +1 @@
1
- {"version":3,"file":"repo-workspace.js","sourceRoot":"","sources":["../../src/operations/repo-workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo-workspace.js","sourceRoot":"","sources":["../../src/operations/repo-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EACL,kCAAkC,EAClC,WAAW,GAGZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAwB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAmE3D,KAAK,UAAU,wBAAwB,CACrC,EAAgC,EAChC,WAAmB;IAEnB,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,WAAW,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,OAAO,aAAa;IACP,oBAAoB,CAA4B;IAChD,0BAA0B,CAAmC;IACrE,WAAW,CAAS;IACpB,EAAE,CAAa;IACf,KAAK,CAAY;IACjB,mBAAmB,CAAoB;IACvC,QAAQ,CAAkB;IAC1B,KAAK,CAAmB;IACxB,cAAc,CAAsC;IAE7D,YAAY,OAA6B;QACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,eAAe,EAAE,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACtE,IAAI,CAAC,0BAA0B,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAClC,EAAgC,EAChC,WAAmB;QAEnB,OAAO,wBAAwB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACnC,CAAC;IAEO,eAAe,CACrB,QAAgB,EAChB,MAA0D;QAE1D,MAAM,MAAM,GAAG,cAAc,CAC3B;YACE,IAAI,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC;YAC/C,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,EACD;YACE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS;YACpG,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;YAC9C,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,SAAS;SACtD,CACF,CAAC;QACF,IAAI,CAAC,CAAC,MAAM,YAAY,aAAa,CAAC,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;YACtB,MAAM;SACP,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,QAAoB;QACnD,OAAO,kCAAkC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE;YAC5E,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAqE;QAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtD,IAAI,QAAQ,GAAsB,IAAI,CAAC;QACvC,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QACjF,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;QAED,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAChE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrB,OAAO,OAAO,CAAC;gBACjB,CAAC;gBACD,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;gBACxC,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,WAAW;oBACvB,MAAM,EAAE,kBAAkB;oBAC1B,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO;oBAChC,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,SAAS;oBACpC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM;oBAC9B,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,SAAS;oBACpC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK;oBAC5C,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,UAAU;iBACvC,CAAC;YACJ,CAAC;YAED,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAChE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrB,OAAO,OAAO,CAAC;gBACjB,CAAC;gBACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBAC7D,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;oBAC1B,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE;wBAC9B,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,OAAO,EAAE,QAAQ,CAAC,UAAU;wBAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,UAAU,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC;wBACrD,mBAAmB,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;wBAClD,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;wBAC9C,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,SAAS;wBACrD,cAAc,EAAE,IAAI,CAAC,cAAc;qBACpC,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,MAAM,CACf,QAAQ,EACR,QAAQ,CAAC,IAAI,EACb,YAAY,CAAC,OAAO,EACpB,YAAY,CAAC,SAAS,EACtB,QAAQ,CAAC,MAAM,CAChB,CAAC;gBACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACzC,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,MAAM;oBAClB,MAAM,EAAE,yBAAyB;oBACjC,IAAI,EAAE,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC;oBACnE,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,SAAS,EAAE,YAAY,CAAC,SAAS;oBACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC;oBAC1C,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;iBACpD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE;YACtC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,QAAQ,EAAE,UAAU;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC;YACrD,mBAAmB,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;YAClD,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;YAC9C,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,SAAS;YACrD,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC,CAAC;QAEH,IACE,QAAQ,KAAK,IAAI;YACjB,MAAM,CAAC,MAAM,KAAK,SAAS;YAC3B,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC;YACpE,MAAM,CAAC,MAAM,KAAK,sBAAsB,EACxC,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS;oBAC1C,CAAC,CAAC;wBACA,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;qBAClC;oBACD,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBAC5C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChG,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,4EAA4E;YAC9E,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAA+B;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtD,IAAI,UAAU,GAAkB,IAAI,CAAC;QACrC,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;QAED,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG;gBACb,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;gBACpC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;aACrC,CAAC;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC3D,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;gBACpB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;gBACxC,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;oBACrC,SAAS,EAAE,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;oBACzC,QAAQ,EAAE,IAAI;iBACf,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE;YACzC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC,CAAC;QACH,IAAI,UAAU,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,sBAAsB,EAAE,CAAC;YACpE,IAAI,CAAC,KAAK,CAAC,MAAM,CACf,QAAQ,EACR,WAAW,CAAC,UAAU,CAAC,EACvB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,SAAS,EAChB,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAC/E,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAA6E;QAC3F,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,UAAU,GAAkB,IAAI,CAAC;QACrC,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;QACD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;gBAC7C,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;gBACpC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;aACrC,CAAC,CAAC;YACH,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAuE;QACxF,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;QAEtC,IAAI,UAAkB,CAAC;QACvB,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;QACtC,CAAC;QAED,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;YACpC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;SACrC,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QACvD,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC3D,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;YACpB,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACjC,CAAC;QACD,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC/B,IAAI,mBAAmB,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC3C,MAAM,OAAO,GAAG,MAAM,kCAAkC,CAAC,QAAQ,EAAE,UAAU,EAAE;oBAC7E,cAAc,EAAE,IAAI,CAAC,cAAc;iBACpC,CAAC,CAAC;gBACH,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrB,OAAO;wBACL,MAAM,EAAE,aAAa;wBACrB,MAAM,EAAE,sBAAsB;qBAC/B,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;QAC/C,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,kCAAkC,CAAC,QAAQ,EAAE,UAAU,EAAE;YACtF,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC,CAAC;QACH,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAC9B,OAAO;gBACL,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE,sBAAsB;aAC/B,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE/E,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CACf,QAAQ,EACR,WAAW,CAAC,UAAU,CAAC,EACvB,gBAAgB,CAAC,OAAO,EACxB,gBAAgB,CAAC,SAAS,EAC1B,MAAM,CACP,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACrC,CAAC;CACF"}