opencode-plugin-team-agreements 0.1.0 → 0.2.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.
@@ -2,10 +2,12 @@ import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
2
  import { mkdir, writeFile, rm } from "fs/promises";
3
3
  import { join } from "path";
4
4
  import { tmpdir } from "os";
5
- import { fileExists, loadTeamAgreements, formatQuestionsAsMarkdown, buildTopicIssueBody, COMMAND_TEMPLATE, PLUGIN_REPO, TeamAgreementsPlugin, } from "./index.js";
5
+ import { TeamAgreementsPlugin } from "./index.js";
6
+ import { fileExists, loadTeamAgreements, formatQuestionsAsMarkdown, buildTopicIssueBody, detectEnforcementMechanisms, formatEnforcementResults, COMMAND_TEMPLATE, PLUGIN_REPO, } from "./utils.js";
6
7
  describe("fileExists", () => {
7
- const testDir = join(tmpdir(), "team-agreements-test-" + Date.now());
8
+ let testDir;
8
9
  beforeEach(async () => {
10
+ testDir = join(tmpdir(), "team-agreements-test-" + Date.now() + "-" + Math.random().toString(36).slice(2));
9
11
  await mkdir(testDir, { recursive: true });
10
12
  });
11
13
  afterEach(async () => {
@@ -25,36 +27,45 @@ describe("fileExists", () => {
25
27
  });
26
28
  });
27
29
  describe("loadTeamAgreements", () => {
28
- const testDir = join(tmpdir(), "team-agreements-test-" + Date.now());
30
+ let testDir;
29
31
  beforeEach(async () => {
30
- await mkdir(join(testDir, "docs"), { recursive: true });
32
+ testDir = join(tmpdir(), "team-agreements-test-" + Date.now() + "-" + Math.random().toString(36).slice(2));
33
+ await mkdir(testDir, { recursive: true });
31
34
  });
32
35
  afterEach(async () => {
33
36
  await rm(testDir, { recursive: true, force: true });
34
37
  });
35
- it("returns formatted content when agreements file exists", async () => {
38
+ it("returns formatted content when AGENTS.md exists", async () => {
36
39
  const agreementsContent = "# My Team Agreements\n\nWe agree to be awesome.";
37
- await writeFile(join(testDir, "docs", "TEAM_AGREEMENTS.md"), agreementsContent);
40
+ await writeFile(join(testDir, "AGENTS.md"), agreementsContent);
38
41
  const result = await loadTeamAgreements(testDir);
39
42
  expect(result).not.toBeNull();
40
43
  expect(result).toContain("## Team Agreements");
44
+ expect(result).toContain("from AGENTS.md");
41
45
  expect(result).toContain("The following team agreements are in effect");
42
46
  expect(result).toContain(agreementsContent);
43
47
  });
44
- it("returns null when agreements file does not exist", async () => {
48
+ it("returns formatted content from CLAUDE.md when AGENTS.md does not exist", async () => {
49
+ const agreementsContent = "# Claude Rules\n\nBe helpful.";
50
+ await writeFile(join(testDir, "CLAUDE.md"), agreementsContent);
45
51
  const result = await loadTeamAgreements(testDir);
46
- expect(result).toBeNull();
52
+ expect(result).not.toBeNull();
53
+ expect(result).toContain("## Team Agreements");
54
+ expect(result).toContain("from CLAUDE.md");
55
+ expect(result).toContain(agreementsContent);
47
56
  });
48
- it("returns null when docs directory does not exist", async () => {
49
- const emptyDir = join(tmpdir(), "empty-test-" + Date.now());
50
- await mkdir(emptyDir, { recursive: true });
51
- try {
52
- const result = await loadTeamAgreements(emptyDir);
53
- expect(result).toBeNull();
54
- }
55
- finally {
56
- await rm(emptyDir, { recursive: true, force: true });
57
- }
57
+ it("prefers AGENTS.md over CLAUDE.md when both exist", async () => {
58
+ await writeFile(join(testDir, "AGENTS.md"), "# AGENTS content");
59
+ await writeFile(join(testDir, "CLAUDE.md"), "# CLAUDE content");
60
+ const result = await loadTeamAgreements(testDir);
61
+ expect(result).not.toBeNull();
62
+ expect(result).toContain("from AGENTS.md");
63
+ expect(result).toContain("# AGENTS content");
64
+ expect(result).not.toContain("# CLAUDE content");
65
+ });
66
+ it("returns null when neither file exists", async () => {
67
+ const result = await loadTeamAgreements(testDir);
68
+ expect(result).toBeNull();
58
69
  });
59
70
  });
60
71
  describe("formatQuestionsAsMarkdown", () => {
@@ -106,8 +117,11 @@ describe("buildTopicIssueBody", () => {
106
117
  describe("COMMAND_TEMPLATE", () => {
107
118
  it("contains required sections", () => {
108
119
  expect(COMMAND_TEMPLATE).toContain("$ARGUMENTS");
109
- expect(COMMAND_TEMPLATE).toContain("## Instructions");
110
- expect(COMMAND_TEMPLATE).toContain("Storage Location");
120
+ expect(COMMAND_TEMPLATE).toContain("## Overview");
121
+ expect(COMMAND_TEMPLATE).toContain("AGENTS.md");
122
+ expect(COMMAND_TEMPLATE).toContain("## Step 1: Analyze Existing Files");
123
+ expect(COMMAND_TEMPLATE).toContain("## Step 2: Determine the Scenario");
124
+ expect(COMMAND_TEMPLATE).toContain("## Step 3: Gather Team Agreements");
111
125
  expect(COMMAND_TEMPLATE).toContain("Programming Languages");
112
126
  expect(COMMAND_TEMPLATE).toContain("Code Quality Standards");
113
127
  expect(COMMAND_TEMPLATE).toContain("Commit Message Conventions");
@@ -118,6 +132,164 @@ describe("COMMAND_TEMPLATE", () => {
118
132
  it("mentions the suggestion tool", () => {
119
133
  expect(COMMAND_TEMPLATE).toContain("suggest_team_agreement_topic");
120
134
  });
135
+ it("contains enforcement section", () => {
136
+ expect(COMMAND_TEMPLATE).toContain("detect_enforcement_mechanisms");
137
+ expect(COMMAND_TEMPLATE).toContain("Enforcement Mechanisms");
138
+ expect(COMMAND_TEMPLATE).toContain("Pre-commit Hooks");
139
+ expect(COMMAND_TEMPLATE).toContain("CI Workflows");
140
+ expect(COMMAND_TEMPLATE).toContain("GitHub Rulesets");
141
+ expect(COMMAND_TEMPLATE).toContain("Linting Rules");
142
+ });
143
+ it("contains intelligent merging section", () => {
144
+ expect(COMMAND_TEMPLATE).toContain("## Step 4: Intelligent Merging");
145
+ expect(COMMAND_TEMPLATE).toContain("Preserve existing structure");
146
+ expect(COMMAND_TEMPLATE).toContain("Avoid duplication");
147
+ });
148
+ it("contains CLAUDE.md coordination section", () => {
149
+ expect(COMMAND_TEMPLATE).toContain("## Step 5: Handle CLAUDE.md Coordination");
150
+ expect(COMMAND_TEMPLATE).toContain("@AGENTS.md");
151
+ expect(COMMAND_TEMPLATE).toContain("Claude-specific");
152
+ });
153
+ });
154
+ describe("detectEnforcementMechanisms", () => {
155
+ let testDir;
156
+ beforeEach(async () => {
157
+ testDir = join(tmpdir(), "enforcement-test-" + Date.now() + "-" + Math.random().toString(36).slice(2));
158
+ await mkdir(testDir, { recursive: true });
159
+ });
160
+ afterEach(async () => {
161
+ await rm(testDir, { recursive: true, force: true });
162
+ });
163
+ it("returns empty array for project with no enforcement", async () => {
164
+ const result = await detectEnforcementMechanisms(testDir);
165
+ expect(result).toEqual([]);
166
+ });
167
+ it("detects husky pre-commit hooks", async () => {
168
+ await mkdir(join(testDir, ".husky"), { recursive: true });
169
+ const result = await detectEnforcementMechanisms(testDir);
170
+ expect(result).toContainEqual(expect.objectContaining({
171
+ type: "pre-commit",
172
+ name: "husky",
173
+ detected: true,
174
+ }));
175
+ });
176
+ it("detects lefthook", async () => {
177
+ await writeFile(join(testDir, "lefthook.yml"), "pre-commit:\n commands: []");
178
+ const result = await detectEnforcementMechanisms(testDir);
179
+ expect(result).toContainEqual(expect.objectContaining({
180
+ type: "pre-commit",
181
+ name: "lefthook",
182
+ detected: true,
183
+ }));
184
+ });
185
+ it("detects commitlint", async () => {
186
+ await writeFile(join(testDir, "commitlint.config.js"), "module.exports = { extends: ['@commitlint/config-conventional'] }");
187
+ const result = await detectEnforcementMechanisms(testDir);
188
+ expect(result).toContainEqual(expect.objectContaining({
189
+ type: "commit-validation",
190
+ name: "commitlint",
191
+ detected: true,
192
+ }));
193
+ });
194
+ it("detects eslint", async () => {
195
+ await writeFile(join(testDir, ".eslintrc.json"), '{ "extends": "eslint:recommended" }');
196
+ const result = await detectEnforcementMechanisms(testDir);
197
+ expect(result).toContainEqual(expect.objectContaining({
198
+ type: "linter",
199
+ name: "eslint",
200
+ detected: true,
201
+ }));
202
+ });
203
+ it("detects biome", async () => {
204
+ await writeFile(join(testDir, "biome.json"), '{ "formatter": { "enabled": true } }');
205
+ const result = await detectEnforcementMechanisms(testDir);
206
+ expect(result).toContainEqual(expect.objectContaining({
207
+ type: "linter",
208
+ name: "biome",
209
+ detected: true,
210
+ }));
211
+ });
212
+ it("detects GitHub Actions", async () => {
213
+ await mkdir(join(testDir, ".github", "workflows"), { recursive: true });
214
+ const result = await detectEnforcementMechanisms(testDir);
215
+ expect(result).toContainEqual(expect.objectContaining({
216
+ type: "ci",
217
+ name: "github-actions",
218
+ detected: true,
219
+ }));
220
+ });
221
+ it("detects GitHub PR templates", async () => {
222
+ await mkdir(join(testDir, ".github"), { recursive: true });
223
+ await writeFile(join(testDir, ".github", "pull_request_template.md"), "## Description");
224
+ const result = await detectEnforcementMechanisms(testDir);
225
+ expect(result).toContainEqual(expect.objectContaining({
226
+ type: "pr-template",
227
+ name: "github-pr-template",
228
+ detected: true,
229
+ }));
230
+ });
231
+ it("detects opencode.json", async () => {
232
+ await writeFile(join(testDir, "opencode.json"), '{ "instructions": [] }');
233
+ const result = await detectEnforcementMechanisms(testDir);
234
+ expect(result).toContainEqual(expect.objectContaining({
235
+ type: "opencode",
236
+ name: "opencode-config",
237
+ detected: true,
238
+ }));
239
+ });
240
+ it("detects prettier", async () => {
241
+ await writeFile(join(testDir, ".prettierrc"), '{ "semi": true }');
242
+ const result = await detectEnforcementMechanisms(testDir);
243
+ expect(result).toContainEqual(expect.objectContaining({
244
+ type: "formatter",
245
+ name: "prettier",
246
+ detected: true,
247
+ }));
248
+ });
249
+ it("detects multiple mechanisms", async () => {
250
+ await mkdir(join(testDir, ".husky"), { recursive: true });
251
+ await mkdir(join(testDir, ".github", "workflows"), { recursive: true });
252
+ await writeFile(join(testDir, "biome.json"), "{}");
253
+ const result = await detectEnforcementMechanisms(testDir);
254
+ expect(result.length).toBeGreaterThanOrEqual(3);
255
+ expect(result.map((m) => m.name)).toContain("husky");
256
+ expect(result.map((m) => m.name)).toContain("github-actions");
257
+ expect(result.map((m) => m.name)).toContain("biome");
258
+ });
259
+ });
260
+ describe("formatEnforcementResults", () => {
261
+ it("formats empty results with suggestions", () => {
262
+ const result = formatEnforcementResults([]);
263
+ expect(result).toContain("No existing enforcement mechanisms detected");
264
+ expect(result).toContain("Available Options");
265
+ expect(result).toContain("husky");
266
+ expect(result).toContain("commitlint");
267
+ expect(result).toContain("GitHub Actions");
268
+ });
269
+ it("formats detected mechanisms grouped by type", () => {
270
+ const result = formatEnforcementResults([
271
+ {
272
+ type: "pre-commit",
273
+ name: "husky",
274
+ detected: true,
275
+ configFile: ".husky/",
276
+ notes: "Git hooks manager",
277
+ },
278
+ {
279
+ type: "linter",
280
+ name: "eslint",
281
+ detected: true,
282
+ configFile: ".eslintrc.json",
283
+ notes: "JS linter",
284
+ },
285
+ ]);
286
+ expect(result).toContain("Detected Enforcement Mechanisms");
287
+ expect(result).toContain("Pre-commit Hooks");
288
+ expect(result).toContain("**husky**");
289
+ expect(result).toContain("Linters");
290
+ expect(result).toContain("**eslint**");
291
+ expect(result).toContain("Recommendations");
292
+ });
121
293
  });
122
294
  describe("PLUGIN_REPO", () => {
123
295
  it("has correct value", () => {
@@ -125,9 +297,10 @@ describe("PLUGIN_REPO", () => {
125
297
  });
126
298
  });
127
299
  describe("TeamAgreementsPlugin", () => {
128
- const testDir = join(tmpdir(), "team-agreements-plugin-test-" + Date.now());
300
+ let testDir;
129
301
  beforeEach(async () => {
130
- await mkdir(join(testDir, "docs"), { recursive: true });
302
+ testDir = join(tmpdir(), "team-agreements-plugin-test-" + Date.now() + "-" + Math.random().toString(36).slice(2));
303
+ await mkdir(testDir, { recursive: true });
131
304
  });
132
305
  afterEach(async () => {
133
306
  await rm(testDir, { recursive: true, force: true });
@@ -149,8 +322,10 @@ describe("TeamAgreementsPlugin", () => {
149
322
  expect(config.command["team-agreements"].description).toContain("team agreements");
150
323
  expect(config.command["team-agreements"].template).toBe(COMMAND_TEMPLATE);
151
324
  });
152
- it("adds agreements to instructions when file exists", async () => {
153
- await writeFile(join(testDir, "docs", "TEAM_AGREEMENTS.md"), "# Agreements");
325
+ it("does not inject instructions (AGENTS.md is auto-loaded by OpenCode)", async () => {
326
+ // Note: We no longer inject AGENTS.md into instructions because OpenCode
327
+ // automatically loads it from the project root
328
+ await writeFile(join(testDir, "AGENTS.md"), "# Agreements");
154
329
  const mockCtx = {
155
330
  directory: testDir,
156
331
  client: {},
@@ -162,10 +337,11 @@ describe("TeamAgreementsPlugin", () => {
162
337
  const hooks = await TeamAgreementsPlugin(mockCtx);
163
338
  const config = {};
164
339
  await hooks.config(config);
165
- expect(config.instructions).toBeDefined();
166
- expect(config.instructions).toContain("docs/TEAM_AGREEMENTS.md");
340
+ // Config should NOT have instructions added - AGENTS.md is auto-loaded
341
+ expect(config.instructions).toBeUndefined();
167
342
  });
168
- it("does not add instructions when agreements file does not exist", async () => {
343
+ it("provides compaction hook that injects agreements from AGENTS.md", async () => {
344
+ await writeFile(join(testDir, "AGENTS.md"), "# Test Agreements");
169
345
  const mockCtx = {
170
346
  directory: testDir,
171
347
  client: {},
@@ -175,12 +351,13 @@ describe("TeamAgreementsPlugin", () => {
175
351
  $: {},
176
352
  };
177
353
  const hooks = await TeamAgreementsPlugin(mockCtx);
178
- const config = {};
179
- await hooks.config(config);
180
- expect(config.instructions).toBeUndefined();
354
+ const output = { context: [], prompt: undefined };
355
+ await hooks["experimental.session.compacting"]({ sessionID: "test" }, output);
356
+ expect(output.context.length).toBe(1);
357
+ expect(output.context[0]).toContain("Team Agreements");
358
+ expect(output.context[0]).toContain("# Test Agreements");
181
359
  });
182
- it("does not duplicate instructions if already present", async () => {
183
- await writeFile(join(testDir, "docs", "TEAM_AGREEMENTS.md"), "# Agreements");
360
+ it("compaction hook does nothing when no agreements file", async () => {
184
361
  const mockCtx = {
185
362
  directory: testDir,
186
363
  client: {},
@@ -190,15 +367,11 @@ describe("TeamAgreementsPlugin", () => {
190
367
  $: {},
191
368
  };
192
369
  const hooks = await TeamAgreementsPlugin(mockCtx);
193
- const config = {
194
- instructions: ["docs/TEAM_AGREEMENTS.md", "other-file.md"],
195
- };
196
- await hooks.config(config);
197
- const count = config.instructions.filter((i) => i === "docs/TEAM_AGREEMENTS.md").length;
198
- expect(count).toBe(1);
370
+ const output = { context: [], prompt: undefined };
371
+ await hooks["experimental.session.compacting"]({ sessionID: "test" }, output);
372
+ expect(output.context.length).toBe(0);
199
373
  });
200
- it("provides compaction hook that injects agreements", async () => {
201
- await writeFile(join(testDir, "docs", "TEAM_AGREEMENTS.md"), "# Test Agreements");
374
+ it("registers the suggest_team_agreement_topic tool", async () => {
202
375
  const mockCtx = {
203
376
  directory: testDir,
204
377
  client: {},
@@ -208,13 +381,11 @@ describe("TeamAgreementsPlugin", () => {
208
381
  $: {},
209
382
  };
210
383
  const hooks = await TeamAgreementsPlugin(mockCtx);
211
- const output = { context: [], prompt: undefined };
212
- await hooks["experimental.session.compacting"]({ sessionID: "test" }, output);
213
- expect(output.context.length).toBe(1);
214
- expect(output.context[0]).toContain("Team Agreements");
215
- expect(output.context[0]).toContain("# Test Agreements");
384
+ expect(hooks.tool).toBeDefined();
385
+ expect(hooks.tool.suggest_team_agreement_topic).toBeDefined();
386
+ expect(hooks.tool.suggest_team_agreement_topic.description).toContain("Suggest a new topic");
216
387
  });
217
- it("compaction hook does nothing when no agreements file", async () => {
388
+ it("registers the detect_enforcement_mechanisms tool", async () => {
218
389
  const mockCtx = {
219
390
  directory: testDir,
220
391
  client: {},
@@ -224,11 +395,12 @@ describe("TeamAgreementsPlugin", () => {
224
395
  $: {},
225
396
  };
226
397
  const hooks = await TeamAgreementsPlugin(mockCtx);
227
- const output = { context: [], prompt: undefined };
228
- await hooks["experimental.session.compacting"]({ sessionID: "test" }, output);
229
- expect(output.context.length).toBe(0);
398
+ expect(hooks.tool).toBeDefined();
399
+ expect(hooks.tool.detect_enforcement_mechanisms).toBeDefined();
400
+ expect(hooks.tool.detect_enforcement_mechanisms.description).toContain("enforcement mechanisms");
230
401
  });
231
- it("registers the suggest_team_agreement_topic tool", async () => {
402
+ it("detect_enforcement_mechanisms tool returns formatted results", async () => {
403
+ await mkdir(join(testDir, ".husky"), { recursive: true });
232
404
  const mockCtx = {
233
405
  directory: testDir,
234
406
  client: {},
@@ -237,10 +409,18 @@ describe("TeamAgreementsPlugin", () => {
237
409
  serverUrl: new URL("http://localhost"),
238
410
  $: {},
239
411
  };
412
+ const mockToolContext = {
413
+ sessionID: "test-session",
414
+ messageID: "test-message",
415
+ agent: "test-agent",
416
+ abort: new AbortController().signal,
417
+ metadata: () => { },
418
+ ask: async () => { },
419
+ };
240
420
  const hooks = await TeamAgreementsPlugin(mockCtx);
241
- expect(hooks.tool).toBeDefined();
242
- expect(hooks.tool.suggest_team_agreement_topic).toBeDefined();
243
- expect(hooks.tool.suggest_team_agreement_topic.description).toContain("Suggest a new topic");
421
+ const result = await hooks.tool.detect_enforcement_mechanisms.execute({}, mockToolContext);
422
+ expect(result).toContain("Detected Enforcement Mechanisms");
423
+ expect(result).toContain("husky");
244
424
  });
245
425
  });
246
426
  //# sourceMappingURL=index.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Internal utility functions for the team-agreements plugin.
3
+ *
4
+ * NOTE: These are intentionally NOT exported from the main module entry point
5
+ * because OpenCode's plugin loader iterates through all exports and tries to
6
+ * call them as plugin functions. Only the plugin function should be exported
7
+ * from the main entry point.
8
+ */
9
+ import { exec } from "child_process";
10
+ export declare const execAsync: typeof exec.__promisify__;
11
+ export declare const PLUGIN_REPO = "jwilger/opencode-plugin-team-agreements";
12
+ export declare const COMMAND_TEMPLATE: string;
13
+ /**
14
+ * Check if a file exists at the given path.
15
+ */
16
+ export declare function fileExists(path: string): Promise<boolean>;
17
+ /**
18
+ * Check if the gh CLI is installed and authenticated.
19
+ */
20
+ export declare function isGhAvailable(): Promise<boolean>;
21
+ /**
22
+ * Load team agreements from the project directory.
23
+ * Checks AGENTS.md first (primary), then CLAUDE.md (fallback).
24
+ * Returns the content if found, null otherwise.
25
+ */
26
+ export declare function loadTeamAgreements(directory: string): Promise<string | null>;
27
+ /**
28
+ * Format suggested questions as a markdown list.
29
+ */
30
+ export declare function formatQuestionsAsMarkdown(questions: string[]): string;
31
+ /**
32
+ * Build the issue body for a topic suggestion.
33
+ */
34
+ export declare function buildTopicIssueBody(args: {
35
+ topic_name: string;
36
+ description: string;
37
+ suggested_questions: string[];
38
+ example_agreement?: string;
39
+ }): string;
40
+ /**
41
+ * Enforcement mechanism detection result.
42
+ */
43
+ export interface EnforcementMechanism {
44
+ type: string;
45
+ name: string;
46
+ detected: boolean;
47
+ configFile?: string;
48
+ notes?: string;
49
+ }
50
+ /**
51
+ * Detect existing enforcement mechanisms in the project.
52
+ */
53
+ export declare function detectEnforcementMechanisms(directory: string): Promise<EnforcementMechanism[]>;
54
+ /**
55
+ * Format enforcement detection results as markdown.
56
+ */
57
+ export declare function formatEnforcementResults(mechanisms: EnforcementMechanism[]): string;
58
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAGpC,eAAO,MAAM,SAAS,2BAAkB,CAAA;AAExC,eAAO,MAAM,WAAW,4CAA4C,CAAA;AAGpE,eAAO,MAAM,gBAAgB,QAwOjB,CAAA;AAEZ;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/D;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAOtD;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwBxB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAErE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,GAAG,MAAM,CAmBT;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAiMjC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,oBAAoB,EAAE,GACjC,MAAM,CA4ER"}