buddy-agent-harness 0.7.0 → 0.9.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.
@@ -0,0 +1,87 @@
1
+ //#region ../../node_modules/.pnpm/search-packages@2.2.1/node_modules/search-packages/esm/hasAllKeywords.js
2
+ function hasAllKeywords(actual, expected) {
3
+ const set = new Set(actual);
4
+ return !expected.find((key) => !set.has(key));
5
+ }
6
+ //#endregion
7
+ //#region ../../node_modules/.pnpm/search-packages@2.2.1/node_modules/search-packages/esm/pickPackagesWithKeywords.js
8
+ function pickPackagesWithKeywords(packageInfos, keywords, fields) {
9
+ const pkgs = packageInfos.filter((pkg) => hasAllKeywords(pkg.keywords, keywords));
10
+ if (fields) return pkgs.map((pkg) => fields.reduce((p, v) => {
11
+ p[v] = pkg[v];
12
+ return p;
13
+ }, { name: pkg.name }));
14
+ return pkgs.map((pkg) => pkg.name);
15
+ }
16
+ //#endregion
17
+ //#region ../../node_modules/.pnpm/search-packages@2.2.1/node_modules/search-packages/esm/registry.js
18
+ /**
19
+ * The public npm registry search endpoint.
20
+ */
21
+ const DEFAULT_REGISTRY = "https://registry.npmjs.org";
22
+ /**
23
+ * Upper bound on how many results `searchByKeywords` will page through.
24
+ *
25
+ * The registry reports a `total` that can run into the thousands for a broad keyword.
26
+ * Paging all of it would mean dozens of sequential requests, which defeats the point of
27
+ * replacing the `npm search` shell-out. 1000 is 4 requests at {@link MAX_PAGE_SIZE} and
28
+ * covers every realistic plugin-discovery search.
29
+ *
30
+ * When the registry has more matches than this, the extra results are dropped and
31
+ * `truncated` is set on the result so the caller can tell.
32
+ */
33
+ const DEFAULT_MAX_RESULTS = 1e3;
34
+ var RegistrySearchError = class extends Error {
35
+ status;
36
+ constructor(message, status) {
37
+ super(message);
38
+ this.status = status;
39
+ this.name = "RegistrySearchError";
40
+ }
41
+ };
42
+ /**
43
+ * Queries the npm registry search endpoint for packages carrying `keywords`,
44
+ * paging until `total` is reached or `maxResults` is hit.
45
+ *
46
+ * The registry's `keywords:` qualifier is not a strict conjunction, so the returned
47
+ * packages still need filtering by {@link hasAllKeywords} on the caller's side.
48
+ */
49
+ async function fetchPackagesByKeywords(keywords, options = {}) {
50
+ const { registry = DEFAULT_REGISTRY, maxResults = DEFAULT_MAX_RESULTS, signal, fetch: fetchImpl = globalThis.fetch } = options;
51
+ if (keywords.length === 0) return {
52
+ packages: [],
53
+ truncated: false
54
+ };
55
+ if (typeof fetchImpl !== "function") throw new RegistrySearchError("global fetch is not available; Node 18 or later is required");
56
+ const text = `keywords:${keywords.join(",")}`;
57
+ const packages = [];
58
+ let total = Number.POSITIVE_INFINITY;
59
+ while (packages.length < maxResults && packages.length < total) {
60
+ const size = Math.min(250, maxResults - packages.length);
61
+ const response = await fetchImpl(`${trimTrailingSlash(registry)}/-/v1/search?text=${encodeURIComponent(text)}&size=${size}&from=${packages.length}`, { signal });
62
+ if (!response.ok) throw new RegistrySearchError(`npm registry search failed: ${response.status} ${response.statusText}`, response.status);
63
+ const body = await response.json();
64
+ const objects = body?.objects ?? [];
65
+ total = typeof body?.total === "number" ? body.total : packages.length + objects.length;
66
+ if (objects.length === 0) return {
67
+ packages,
68
+ truncated: false
69
+ };
70
+ for (const object of objects) if (object?.package) packages.push(object.package);
71
+ }
72
+ return {
73
+ packages,
74
+ truncated: total > packages.length
75
+ };
76
+ }
77
+ function trimTrailingSlash(url) {
78
+ return url.endsWith("/") ? url.slice(0, -1) : url;
79
+ }
80
+ //#endregion
81
+ //#region ../../node_modules/.pnpm/search-packages@2.2.1/node_modules/search-packages/esm/searchByKeywords.js
82
+ async function searchByKeywords(keywords, fields, options) {
83
+ const { packages } = await fetchPackagesByKeywords(keywords, options);
84
+ return pickPackagesWithKeywords(packages, keywords, fields);
85
+ }
86
+ //#endregion
87
+ export { searchByKeywords };
@@ -0,0 +1,64 @@
1
+ import { createRequire } from "node:module";
2
+ //#region \0rolldown/runtime.js
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
12
+ key = keys[i];
13
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: ((k) => from[k]).bind(null, key),
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
21
+ value: mod,
22
+ enumerable: true
23
+ }) : target, mod));
24
+ var __require = /* #__PURE__ */ (() => createRequire(import.meta.url))();
25
+ //#endregion
26
+ //#region ../../node_modules/.pnpm/unpartial@1.0.5/node_modules/unpartial/esm/index.js
27
+ function required(source1, source2, source3) {
28
+ return merge([
29
+ source1,
30
+ source2,
31
+ source3
32
+ ], (p, e) => {
33
+ return {
34
+ ...p,
35
+ ...e
36
+ };
37
+ });
38
+ }
39
+ function merge(entries, reducer) {
40
+ if (entries[0] === void 0 || entries[0] === null) return entries[0];
41
+ return entries.filter((x) => !!x).reduce(reducer, {});
42
+ }
43
+ function unpartial(s1, s2, s3) {
44
+ if (s1 === void 0 || s1 === null) return s1;
45
+ return [
46
+ s1,
47
+ s2,
48
+ s3
49
+ ].filter(notNil).reduce((p, s) => ({
50
+ ...p,
51
+ ...trimNilProps(s)
52
+ }), {});
53
+ }
54
+ function trimNilProps(value) {
55
+ return Object.keys(value).reduce((p, k) => {
56
+ if (notNil(value[k])) p[k] = value[k];
57
+ return p;
58
+ }, {});
59
+ }
60
+ function notNil(value) {
61
+ return value !== null && value !== void 0;
62
+ }
63
+ //#endregion
64
+ export { __toESM as a, __require as i, unpartial as n, __commonJSMin as r, required as t };
package/dist/index.d.mts CHANGED
@@ -1,5 +1,18 @@
1
- import { run } from "./cli.mjs";
2
1
  import { cli as cli$1 } from "clibuilder";
2
+ //#region src/cli.d.ts
3
+ /**
4
+ * The application boundary: argv in, exit code out, nothing read from or written to the process.
5
+ *
6
+ * The exit code is returned rather than written so that a caller which is not the process — a skill
7
+ * launcher, a test — can run a command and learn how it went. `bin/buddy-agent-harness.mjs` is the
8
+ * only place that turns the returned code back into a process outcome.
9
+ *
10
+ * One exit path this return cannot carry: `clibuilder` answers an unknown option or an unknown
11
+ * command by printing help and writing `process.exitCode` itself, returning nothing. `run` reports
12
+ * `0` there, which is why `bin` and the launchers apply the returned code only when it is non-zero.
13
+ */
14
+ export declare function run(argv: string[]): Promise<number>;
15
+ //#endregion
3
16
  //#region src/harness-registry/instruction-bridge.d.ts
4
17
  /**
5
18
  * What a harness needs in order to read the repository's `AGENTS.md`.
@@ -163,7 +176,7 @@ type Harness = {
163
176
  *
164
177
  * See `.research/agentic-configuration-standards/` for the per-harness sources.
165
178
  */
166
- declare const harnessRegistry: readonly Harness[];
179
+ export declare const harnessRegistry: readonly Harness[];
167
180
  //#endregion
168
181
  //#region src/diagnose-bridges/diagnose-instructions.d.ts
169
182
  /** What is on disk where an instruction bridge belongs. */
@@ -189,7 +202,7 @@ type InstructionReport = {
189
202
  * checks are read-only, and no repair is a command — rewriting an instruction file is the `init`
190
203
  * skill's judgment.
191
204
  */
192
- declare function diagnoseInstructions(root: string, harnesses: readonly Harness[], cli: string): {
205
+ export declare function diagnoseInstructions(root: string, harnesses: readonly Harness[], cli: string): {
193
206
  instructions: InstructionReport[];
194
207
  findings: BridgeFinding[];
195
208
  };
@@ -309,10 +322,10 @@ type Repair = {
309
322
  */
310
323
  skillRepair(at: Locator): string;
311
324
  };
312
- declare const bridgeRepairs: readonly Repair[];
313
- declare const instructionRepairs: readonly Repair[];
314
- declare const doctorRepairs: readonly Repair[];
315
- declare const doctorSkill: {
325
+ export declare const bridgeRepairs: readonly Repair[];
326
+ export declare const instructionRepairs: readonly Repair[];
327
+ export declare const doctorRepairs: readonly Repair[];
328
+ export declare const doctorSkill: {
316
329
  readonly name: "doctor";
317
330
  readonly description: "Use this skill when a repository loads no project skills, when skills are missing after a clone, when a harness appears to be ignoring AGENTS.md, or when checking whether the agent configuration bridges into .claude/skills, CLAUDE.md, and the other harness files still resolve.";
318
331
  };
@@ -324,7 +337,7 @@ declare const doctorSkill: {
324
337
  * The finding tables are NOT here. They live in the reference pages below, and this file carries
325
338
  * only what every reader needs: how to run it, how to read the report, and where to go next.
326
339
  */
327
- declare function renderDoctorSkill(version: string): string;
340
+ export declare function renderDoctorSkill(version: string): string;
328
341
  //#endregion
329
342
  //#region src/diagnose-bridges/git-bridge-state.d.ts
330
343
  /** Which side of a diverged bridge moved since the last commit where the two agreed. */
@@ -425,7 +438,7 @@ type DiagnoseResult = {
425
438
  * `.agents/skills`, and the instruction bridges into `AGENTS.md`. Read-only: nothing is created,
426
439
  * moved, or repaired, so the caller decides what to run from the repair each finding carries.
427
440
  */
428
- declare function diagnoseBridges({ root, harnesses: preferred, cli }: DiagnoseOptions): DiagnoseResult;
441
+ export declare function diagnoseBridges({ root, harnesses: preferred, cli }: DiagnoseOptions): DiagnoseResult;
429
442
  //#endregion
430
443
  //#region src/diagnose-configuration/diagnose-configuration.d.ts
431
444
  /**
@@ -480,8 +493,8 @@ type DoctorReport = {
480
493
  * AXI §5: the healthy answer states the zero with context, so an agent does not re-run with other
481
494
  * flags to confirm that an empty section really meant "nothing wrong".
482
495
  */
483
- declare function buildDoctorReport(bin: string, result: DiagnoseResult, configuration?: ConfigurationFinding[]): DoctorReport;
484
- declare const doctorCommand: cli$1.Command;
496
+ export declare function buildDoctorReport(bin: string, result: DiagnoseResult, configuration?: ConfigurationFinding[]): DoctorReport;
497
+ export declare const doctorCommand: cli$1.Command;
485
498
  //#endregion
486
499
  //#region src/diagnose-mcp/diagnose-mcp.d.ts
487
500
  /**
@@ -505,7 +518,7 @@ type DiagnoseMcpOptions = {
505
518
  /** How to name this tool in the repair commands. */
506
519
  cli: string;
507
520
  };
508
- declare function diagnoseMcp({ root, git, cli }: DiagnoseMcpOptions): ConfigurationFinding[];
521
+ export declare function diagnoseMcp({ root, git, cli }: DiagnoseMcpOptions): ConfigurationFinding[];
509
522
  //#endregion
510
523
  //#region src/diagnose-mcp/mcp-model.d.ts
511
524
  /**
@@ -544,12 +557,12 @@ type McpDirection = "target" | "golden" | "both" | "unknown";
544
557
  //#endregion
545
558
  //#region src/diagnose-mcp/mcp-sources.d.ts
546
559
  /** Where the golden set lives, and why it is namespaced rather than sitting at `.agents/mcp.json`. */
547
- declare const goldenSetPath = ".agents/buddy-agent-harness/mcp.toml";
560
+ export declare const goldenSetPath = ".agents/buddy-agent-harness/mcp.toml";
548
561
  //#endregion
549
562
  //#region src/initialize-harnesses/init.command.d.ts
550
- declare const initCommand: cli$1.Command;
551
- declare const harnessCommand: cli$1.Command;
552
- declare function activate({ addCommand }: {
563
+ export declare const initCommand: cli$1.Command;
564
+ export declare const harnessCommand: cli$1.Command;
565
+ export declare function activate({ addCommand }: {
553
566
  addCommand(command: typeof harnessCommand): void;
554
567
  }): void;
555
568
  //#endregion
@@ -583,7 +596,7 @@ type InitializeResult = {
583
596
  skills: number;
584
597
  copied: boolean;
585
598
  };
586
- declare function initializeHarnesses({ root, harnesses: preferred, copy, force }: InitializeOptions): InitializeResult;
599
+ export declare function initializeHarnesses({ root, harnesses: preferred, copy, force }: InitializeOptions): InitializeResult;
587
600
  //#endregion
588
- export { type BridgeFinding, type BridgeKind, type BridgeProblem, type BridgeReport, type BridgeStatus, type ConfigurationFault, type ConfigurationProblem, type DiagnoseMcpOptions, type DiagnoseOptions, type DiagnoseResult, type DivergenceDirection, type DivergenceReport, type DoctorProblem, type DoctorReport, type Harness, type HarnessName, type HarnessScope, type HarnessScopeName, type InitializeOptions, type InitializeResult, type InstructionBridge, type InstructionKind, type InstructionProblem, type InstructionReport, type InstructionStatus, type McpConfig, type McpDirection, type McpField, type McpProblem, type McpServer, type McpTransport, type Repair, activate, bridgeRepairs, buildDoctorReport, diagnoseBridges, diagnoseInstructions, diagnoseMcp, doctorCommand, doctorRepairs, doctorSkill, goldenSetPath, harnessCommand, harnessRegistry, initCommand, initializeHarnesses, instructionRepairs, renderDoctorSkill, run };
601
+ export type { BridgeFinding, BridgeKind, BridgeProblem, BridgeReport, BridgeStatus, ConfigurationFault, ConfigurationProblem, DiagnoseMcpOptions, DiagnoseOptions, DiagnoseResult, DivergenceDirection, DivergenceReport, DoctorProblem, DoctorReport, Harness, HarnessName, HarnessScope, HarnessScopeName, InitializeOptions, InitializeResult, InstructionBridge, InstructionKind, InstructionProblem, InstructionReport, InstructionStatus, McpConfig, McpDirection, McpField, McpProblem, McpServer, McpTransport, Repair };
589
602
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/harness-registry/instruction-bridge.ts","../src/harness-registry/mcp-config.ts","../src/harness-registry/nonstandard-artifact.ts","../src/harness-registry/harness-registry.ts","../src/diagnose-bridges/diagnose-instructions.ts","../src/diagnose-bridges/locator.ts","../src/diagnose-bridges/doctor-guidance.ts","../src/diagnose-bridges/git-bridge-state.ts","../src/diagnose-bridges/diagnose-bridges.ts","../src/diagnose-configuration/diagnose-configuration.ts","../src/diagnose-bridges/doctor.command.ts","../src/diagnose-mcp/diagnose-mcp.ts","../src/diagnose-mcp/mcp-model.ts","../src/diagnose-mcp/mcp-baseline.ts","../src/diagnose-mcp/mcp-sources.ts","../src/initialize-harnesses/init.command.ts","../src/skill-projection/skill-projection.ts","../src/initialize-harnesses/initialize-harnesses.ts"],"mappings":";;;;;;;;;;;;;;;KAYY;;;;;;EAOT;;EAEA;;;EAIA;;EAEA;;EAEA;;;;;;;;;;;;;;;;;;;;KCbS;;EAEX;;;;;;EAMA;;;;;EAKA;;;;;;EAMA;;;;;;;;;;;;;;;;;KCtBW;KAgBA;;;;;EAKX;;EAEA;EACA,MAAM;;;;KC/BK;;KAUA;;;;;;;;;;;;;;;;;;;;;;;;;KA0BA;EACX;EACA;EACA,oBAAoB;EACpB,YAAY;EACZ,uBAAuB;;KAGZ;EACX,MAAM;;EAEN,SAAS;;;;;EAKT,OAAO;;EAEP,aAAa;;;;;;;;;;;;;;;;;;;;;;cAuBD,0BAA0B;;;;KCzE3B;;;;;;KAMA;KAEA;EACX,SAAS;;EAET;EACA,MAAM;EACN,QAAQ;;;;;;;;;;iBAkFO,qBACf,cACA,oBAAoB,WACpB;EACI,cAAc;EAAqB,UAAU;;;;;;;;;;;;;;;;;;;;KC5FtC;EAAa;EAAc;;KAE3B;;EAEX;;EAEA;;EAEA;;EAEA,WAAW;;;;;;;;;;KCfA;;;;;;;;;;;KAqBA;;;;;;;;;KAUA;;;;;;;;;KAoBA;KAOA;;KAOA,gBAAgB,gBAAgB,qBAAqB,qBAAqB,aAAa;;KAGvF,uBAAuB;;;;;;;;;;;;;;;;;;KAmBvB;;EAEX;;EAEA;;KAGW;EACX,SAAS;;EAET;;;;;;;EAOA,OAAO,IAAI,SAAS,cAAc;;;;;;EAMlC,YAAY,IAAI;;cAwKJ,wBAAwB;cA4CxB,6BAA6B;cAuM7B,wBAAwB;cAOxB;WACZ;WACA;;;;;;;;;;iBAmCe,kBAAkB;;;;KC5jBtB;;KAGA;;;;;;cAwBC;mBAIA;;mBAFK;EAEjB,YAAY;;;;;;EASZ,WAAW,eAAe;;;;;;;EAa1B,UAAU;;;;;;;;;EAaV,gBAAgB;;EAMhB,UAAU,gBAAgB;;;;;EAS1B,YAAY,gBAAgB,oBAAoB;;UAYxC;;;;;UAmBA;;;;KC5GG;KACA;KAEA;EACX,SAAS;;EAET;EACA,MAAM;EACN,QAAQ;;KAGG;EACX;;;;;EAKA,SAAS;EACT;;EAEA,QAAQ;;KAGG;EACX;EACA,WAAW;;KAGA;EACX;EACA,YAAY;;EAEZ;;KAGW;EACX,SAAS;;;;;EAKT,cAAc;EACd,YAAY;EACZ,UAAU;;;;;;;iBA2EK,kBAAkB,MAAM,WAAW,WAAgB,OAAO,kBAAkB;;;;;;;;;;;;;;;;;KC1GhF;;EAEX;EACA,SAAS;EACT;;EAEA,QAAQ;;;;KCfG;EACX;EACA,SAAS;EACT,cAAc;EACd,aAAa;;;;;EAKb;IAAY;IAAc,SAAS;IAAe;;;;;;;;;;EASlD,OAAO;;;;;;iBAOQ,kBACf,aACA,QAAQ,gBACR,gBAAe,yBACb;cAgCU,eAAe,MAAI;;;;;;;;;;;;;;;;;;KC7CpB;EACX;EACA,KAAK;;EAEL;;iBAgCe,cAAc,MAAM,KAAK,OAAO,qBAAqB;;;;;;;;;;;;;;;;KClDzD;KAEA;EACX,YAAY;EACZ;EACA;EACA,MAAM,SAAS;EACf;EACA,UAAU,SAAS;EACnB;EACA;EACA;EACA;;;cAIY;KAaD,mBAAmB;;;;KCnCnB;;;;cCAC;;;cCAA,aAAa,MAAI;cAoDjB,gBAAgB,MAAI;iBAMjB,WAAW;EAAgB,WAAW,gBAAgB;;;;;;;;;KCV1D;;;KCpDA;EACX;EACA,YAAY;EACZ;EACA,QAAQ;;KAEG;EACX;EACA,WAAW;EACX,QAAQ;EACR,QAAQ;;EAER,SAAS;;EAET;IAAc,MAAM;IAAa,YAAY;;EAC7C;EACA;;iBAGe,sBACf,MACA,WAAW,WACX,MACA,SACE,oBAAoB"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/cli.ts","../src/harness-registry/instruction-bridge.ts","../src/harness-registry/mcp-config.ts","../src/harness-registry/nonstandard-artifact.ts","../src/harness-registry/harness-registry.ts","../src/diagnose-bridges/diagnose-instructions.ts","../src/diagnose-bridges/locator.ts","../src/diagnose-bridges/doctor-guidance.ts","../src/diagnose-bridges/git-bridge-state.ts","../src/diagnose-bridges/diagnose-bridges.ts","../src/diagnose-configuration/diagnose-configuration.ts","../src/diagnose-bridges/doctor.command.ts","../src/diagnose-mcp/diagnose-mcp.ts","../src/diagnose-mcp/mcp-model.ts","../src/diagnose-mcp/mcp-baseline.ts","../src/diagnose-mcp/mcp-sources.ts","../src/initialize-harnesses/init.command.ts","../src/skill-projection/skill-projection.ts","../src/initialize-harnesses/initialize-harnesses.ts"],"mappings":";;;;;;;;;;;;;wBAyCsB,IAAI,iBAAiB;;;;;;;;;;;;;;;KC7B/B;;;;;;EAOT;;EAEA;;;EAIA;;EAEA;;EAEA;;;;;;;;;;;;;;;;;;;;KCbS;;EAEX;;;;;;EAMA;;;;;EAKA;;;;;;EAMA;;;;;;;;;;;;;;;;;KCtBW;KAgBA;;;;;EAKX;;EAEA;EACA,MAAM;;;;KC/BK;;KAUA;;;;;;;;;;;;;;;;;;;;;;;;;KA0BA;EACX;EACA;EACA,oBAAoB;EACpB,YAAY;EACZ,uBAAuB;;KAGZ;EACX,MAAM;;EAEN,SAAS;;;;;EAKT,OAAO;;EAEP,aAAa;;;;;;;;;;;;;;;;;;;;;;qBAuBD,0BAA0B;;;;KCzE3B;;;;;;KAMA;KAEA;EACX,SAAS;;EAET;EACA,MAAM;EACN,QAAQ;;;;;;;;;;wBAkFO,qBACf,cACA,oBAAoB,WACpB;EACI,cAAc;EAAqB,UAAU;;;;;;;;;;;;;;;;;;;;KC5FtC;EAAa;EAAc;;KAE3B;;EAEX;;EAEA;;EAEA;;EAEA,WAAW;;;;;;;;;;KCfA;;;;;;;;;;;KAqBA;;;;;;;;;KAUA;;;;;;;;;KAoBA;KAOA;;KAOA,gBAAgB,gBAAgB,qBAAqB,qBAAqB,aAAa;;KAGvF,uBAAuB;;;;;;;;;;;;;;;;;;KAmBvB;;EAEX;;EAEA;;KAGW;EACX,SAAS;;EAET;;;;;;;EAOA,OAAO,IAAI,SAAS,cAAc;;;;;;EAMlC,YAAY,IAAI;;qBAwKJ,wBAAwB;qBA4CxB,6BAA6B;qBAuM7B,wBAAwB;qBAOxB;WACZ;WACA;;;;;;;;;;wBAmCe,kBAAkB;;;;KC5jBtB;;KAGA;;;;;;cAwBC;mBAIA;;mBAFK;EAEjB,YAAY;;;;;;EASZ,WAAW,eAAe;;;;;;;EAa1B,UAAU;;;;;;;;;EAaV,gBAAgB;;EAMhB,UAAU,gBAAgB;;;;;EAS1B,YAAY,gBAAgB,oBAAoB;;UAYxC;;;;;UAmBA;;;;KC5GG;KACA;KAEA;EACX,SAAS;;EAET;EACA,MAAM;EACN,QAAQ;;KAGG;EACX;;;;;EAKA,SAAS;EACT;;EAEA,QAAQ;;KAGG;EACX;EACA,WAAW;;KAGA;EACX;EACA,YAAY;;EAEZ;;KAGW;EACX,SAAS;;;;;EAKT,cAAc;EACd,YAAY;EACZ,UAAU;;;;;;;wBA2EK,kBAAkB,MAAM,WAAW,WAAgB,OAAO,kBAAkB;;;;;;;;;;;;;;;;;KC1GhF;;EAEX;EACA,SAAS;EACT;;EAEA,QAAQ;;;;KCfG;EACX;EACA,SAAS;EACT,cAAc;EACd,aAAa;;;;;EAKb;IAAY;IAAc,SAAS;IAAe;;;;;;;;;;EASlD,OAAO;;;;;;wBAOQ,kBACf,aACA,QAAQ,gBACR,gBAAe,yBACb;qBAgCU,eAAe,MAAI;;;;;;;;;;;;;;;;;;KC7CpB;EACX;EACA,KAAK;;EAEL;;wBAgCe,cAAc,MAAM,KAAK,OAAO,qBAAqB;;;;;;;;;;;;;;;;KClDzD;KAEA;EACX,YAAY;EACZ;EACA;EACA,MAAM,SAAS;EACf;EACA,UAAU,SAAS;EACnB;EACA;EACA;EACA;;;cAIY;KAaD,mBAAmB;;;;KCnCnB;;;;qBCAC;;;qBCAA,aAAa,MAAI;qBAoDjB,gBAAgB,MAAI;wBAMjB,WAAW;EAAgB,WAAW,gBAAgB;;;;;;;;;KCV1D;;;KCpDA;EACX;EACA,YAAY;EACZ;EACA,QAAQ;;KAEG;EACX;EACA,WAAW;EACX,QAAQ;EACR,QAAQ;;EAER,SAAS;;EAET;IAAc,MAAM;IAAa,YAAY;;EAC7C;EACA;;wBAGe,sBACf,MACA,WAAW,WACX,MACA,SACE,oBAAoB"}