@agent-workspace/cli 0.2.1 → 0.5.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 (91) hide show
  1. package/dist/commands/artifact.d.ts +1 -0
  2. package/dist/commands/artifact.d.ts.map +1 -1
  3. package/dist/commands/artifact.js +76 -15
  4. package/dist/commands/artifact.js.map +1 -1
  5. package/dist/commands/contract.d.ts +32 -0
  6. package/dist/commands/contract.d.ts.map +1 -0
  7. package/dist/commands/contract.js +237 -0
  8. package/dist/commands/contract.js.map +1 -0
  9. package/dist/commands/identity.d.ts.map +1 -1
  10. package/dist/commands/identity.js +3 -2
  11. package/dist/commands/identity.js.map +1 -1
  12. package/dist/commands/init.d.ts.map +1 -1
  13. package/dist/commands/init.js +6 -0
  14. package/dist/commands/init.js.map +1 -1
  15. package/dist/commands/inspect.d.ts.map +1 -1
  16. package/dist/commands/inspect.js +30 -0
  17. package/dist/commands/inspect.js.map +1 -1
  18. package/dist/commands/memory.d.ts +12 -1
  19. package/dist/commands/memory.d.ts.map +1 -1
  20. package/dist/commands/memory.js +72 -18
  21. package/dist/commands/memory.js.map +1 -1
  22. package/dist/commands/project.d.ts +23 -0
  23. package/dist/commands/project.d.ts.map +1 -0
  24. package/dist/commands/project.js +181 -0
  25. package/dist/commands/project.js.map +1 -0
  26. package/dist/commands/reputation.d.ts +25 -0
  27. package/dist/commands/reputation.d.ts.map +1 -0
  28. package/dist/commands/reputation.js +227 -0
  29. package/dist/commands/reputation.js.map +1 -0
  30. package/dist/commands/status.d.ts +5 -0
  31. package/dist/commands/status.d.ts.map +1 -0
  32. package/dist/commands/status.js +182 -0
  33. package/dist/commands/status.js.map +1 -0
  34. package/dist/commands/swarm.d.ts +40 -0
  35. package/dist/commands/swarm.d.ts.map +1 -0
  36. package/dist/commands/swarm.js +373 -0
  37. package/dist/commands/swarm.js.map +1 -0
  38. package/dist/commands/task.d.ts +41 -0
  39. package/dist/commands/task.d.ts.map +1 -0
  40. package/dist/commands/task.js +381 -0
  41. package/dist/commands/task.js.map +1 -0
  42. package/dist/commands/validate.d.ts +3 -1
  43. package/dist/commands/validate.d.ts.map +1 -1
  44. package/dist/commands/validate.js +101 -3
  45. package/dist/commands/validate.js.map +1 -1
  46. package/dist/index.js +198 -20
  47. package/dist/index.js.map +1 -1
  48. package/dist/lib/artifact.d.ts +2 -8
  49. package/dist/lib/artifact.d.ts.map +1 -1
  50. package/dist/lib/artifact.js +3 -21
  51. package/dist/lib/artifact.js.map +1 -1
  52. package/dist/lib/artifact.test.d.ts +2 -0
  53. package/dist/lib/artifact.test.d.ts.map +1 -0
  54. package/dist/lib/artifact.test.js +41 -0
  55. package/dist/lib/artifact.test.js.map +1 -0
  56. package/dist/lib/contract.d.ts +27 -0
  57. package/dist/lib/contract.d.ts.map +1 -0
  58. package/dist/lib/contract.js +83 -0
  59. package/dist/lib/contract.js.map +1 -0
  60. package/dist/lib/frontmatter.d.ts +2 -11
  61. package/dist/lib/frontmatter.d.ts.map +1 -1
  62. package/dist/lib/frontmatter.js +2 -25
  63. package/dist/lib/frontmatter.js.map +1 -1
  64. package/dist/lib/project.d.ts +54 -0
  65. package/dist/lib/project.d.ts.map +1 -0
  66. package/dist/lib/project.js +153 -0
  67. package/dist/lib/project.js.map +1 -0
  68. package/dist/lib/reputation.d.ts +20 -0
  69. package/dist/lib/reputation.d.ts.map +1 -0
  70. package/dist/lib/reputation.js +51 -0
  71. package/dist/lib/reputation.js.map +1 -0
  72. package/dist/lib/reputation.test.d.ts +2 -0
  73. package/dist/lib/reputation.test.d.ts.map +1 -0
  74. package/dist/lib/reputation.test.js +112 -0
  75. package/dist/lib/reputation.test.js.map +1 -0
  76. package/dist/lib/schema.d.ts.map +1 -1
  77. package/dist/lib/schema.js +9 -5
  78. package/dist/lib/schema.js.map +1 -1
  79. package/dist/lib/swarm.d.ts +22 -0
  80. package/dist/lib/swarm.d.ts.map +1 -0
  81. package/dist/lib/swarm.js +59 -0
  82. package/dist/lib/swarm.js.map +1 -0
  83. package/dist/lib/workspace.d.ts +3 -9
  84. package/dist/lib/workspace.d.ts.map +1 -1
  85. package/dist/lib/workspace.js +6 -42
  86. package/dist/lib/workspace.js.map +1 -1
  87. package/dist/lib/workspace.test.d.ts +2 -0
  88. package/dist/lib/workspace.test.d.ts.map +1 -0
  89. package/dist/lib/workspace.test.js +36 -0
  90. package/dist/lib/workspace.test.js.map +1 -0
  91. package/package.json +8 -2
@@ -0,0 +1,373 @@
1
+ import { writeFile } from "node:fs/promises";
2
+ import { AWP_VERSION, CDP_VERSION } from "@agent-workspace/core";
3
+ import { findCandidatesForRole, autoRecruitSwarm, getSwarmStaffingSummary, } from "@agent-workspace/utils";
4
+ import { findWorkspaceRoot } from "../lib/workspace.js";
5
+ import { serializeWorkspaceFile } from "../lib/frontmatter.js";
6
+ import { listProfiles } from "../lib/reputation.js";
7
+ import { validateSlug, slugToSwarmPath, loadSwarm, listSwarms, ensureSwarmsDir, } from "../lib/swarm.js";
8
+ import { access } from "node:fs/promises";
9
+ async function fileExists(path) {
10
+ try {
11
+ await access(path);
12
+ return true;
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ }
18
+ /**
19
+ * awp swarm create <slug>
20
+ */
21
+ export async function swarmCreateCommand(slug, options) {
22
+ const root = await findWorkspaceRoot();
23
+ if (!root) {
24
+ console.error("Not in an AWP workspace.");
25
+ process.exit(1);
26
+ }
27
+ if (!validateSlug(slug)) {
28
+ console.error(`Invalid swarm slug: ${slug} (must be lowercase alphanumeric + hyphens)`);
29
+ process.exit(1);
30
+ }
31
+ await ensureSwarmsDir(root);
32
+ const filePath = slugToSwarmPath(root, slug);
33
+ if (await fileExists(filePath)) {
34
+ console.error(`Swarm "${slug}" already exists.`);
35
+ process.exit(1);
36
+ }
37
+ const now = new Date().toISOString();
38
+ const name = options.name ||
39
+ slug
40
+ .split("-")
41
+ .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
42
+ .join(" ");
43
+ const fm = {
44
+ awp: AWP_VERSION,
45
+ cdp: CDP_VERSION,
46
+ type: "swarm",
47
+ id: `swarm:${slug}`,
48
+ name,
49
+ goal: options.goal || "Define the goal for this swarm",
50
+ status: "recruiting",
51
+ created: now,
52
+ roles: [],
53
+ };
54
+ if (options.project) {
55
+ fm.projectId = `project:${options.project}`;
56
+ }
57
+ if (options.humanLead || options.vetoPower !== undefined) {
58
+ fm.governance = {};
59
+ if (options.humanLead)
60
+ fm.governance.humanLead = options.humanLead;
61
+ if (options.vetoPower !== undefined)
62
+ fm.governance.vetoPower = options.vetoPower;
63
+ }
64
+ const body = `# ${name}\n\n${fm.goal}\n\n## Roles\n\nNo roles defined yet. Use \`awp swarm role add ${slug} <role-name>\` to add roles.\n`;
65
+ const content = serializeWorkspaceFile({ frontmatter: fm, body, filePath });
66
+ await writeFile(filePath, content, "utf-8");
67
+ console.log(`Created swarms/${slug}.md (status: recruiting)`);
68
+ }
69
+ /**
70
+ * awp swarm role add <swarm> <role>
71
+ */
72
+ export async function swarmRoleAddCommand(swarmSlug, roleName, options) {
73
+ const root = await findWorkspaceRoot();
74
+ if (!root) {
75
+ console.error("Not in an AWP workspace.");
76
+ process.exit(1);
77
+ }
78
+ let swarm;
79
+ try {
80
+ swarm = await loadSwarm(root, swarmSlug);
81
+ }
82
+ catch {
83
+ console.error(`Swarm not found: ${swarmSlug}`);
84
+ process.exit(1);
85
+ }
86
+ // Check if role already exists
87
+ if (swarm.frontmatter.roles.some((r) => r.name === roleName)) {
88
+ console.error(`Role "${roleName}" already exists in swarm "${swarmSlug}".`);
89
+ process.exit(1);
90
+ }
91
+ const count = options.count ? parseInt(options.count, 10) : 1;
92
+ if (isNaN(count) || count < 1) {
93
+ console.error("Invalid count: must be a positive integer.");
94
+ process.exit(1);
95
+ }
96
+ // Parse min-reputation options: "dimension:score" or "domain-competence:domain:score"
97
+ const minReputation = {};
98
+ if (options.minReputation) {
99
+ for (const rep of options.minReputation) {
100
+ const parts = rep.split(":");
101
+ if (parts.length === 2) {
102
+ // dimension:score
103
+ const [dim, scoreStr] = parts;
104
+ const score = parseFloat(scoreStr);
105
+ if (isNaN(score) || score < 0 || score > 1) {
106
+ console.error(`Invalid score for ${dim}: must be 0.0-1.0`);
107
+ process.exit(1);
108
+ }
109
+ minReputation[dim] = score;
110
+ }
111
+ else if (parts.length === 3 && parts[0] === "domain-competence") {
112
+ // domain-competence:domain:score
113
+ const [, domain, scoreStr] = parts;
114
+ const score = parseFloat(scoreStr);
115
+ if (isNaN(score) || score < 0 || score > 1) {
116
+ console.error(`Invalid score for domain ${domain}: must be 0.0-1.0`);
117
+ process.exit(1);
118
+ }
119
+ minReputation[`domain-competence:${domain}`] = score;
120
+ }
121
+ else {
122
+ console.error(`Invalid reputation format: ${rep}. Use "dimension:score" or "domain-competence:domain:score"`);
123
+ process.exit(1);
124
+ }
125
+ }
126
+ }
127
+ const role = {
128
+ name: roleName,
129
+ count,
130
+ assigned: [],
131
+ };
132
+ if (Object.keys(minReputation).length > 0) {
133
+ role.minReputation = minReputation;
134
+ }
135
+ swarm.frontmatter.roles.push(role);
136
+ const content = serializeWorkspaceFile(swarm);
137
+ await writeFile(swarm.filePath, content, "utf-8");
138
+ console.log(`Added role "${roleName}" (count: ${count}) to swarm "${swarmSlug}"`);
139
+ if (Object.keys(minReputation).length > 0) {
140
+ console.log("Reputation requirements:");
141
+ for (const [dim, score] of Object.entries(minReputation)) {
142
+ console.log(` ${dim}: ${score}`);
143
+ }
144
+ }
145
+ }
146
+ /**
147
+ * awp swarm recruit <swarm>
148
+ */
149
+ export async function swarmRecruitCommand(swarmSlug, options) {
150
+ const root = await findWorkspaceRoot();
151
+ if (!root) {
152
+ console.error("Not in an AWP workspace.");
153
+ process.exit(1);
154
+ }
155
+ let swarm;
156
+ try {
157
+ swarm = await loadSwarm(root, swarmSlug);
158
+ }
159
+ catch {
160
+ console.error(`Swarm not found: ${swarmSlug}`);
161
+ process.exit(1);
162
+ }
163
+ if (swarm.frontmatter.roles.length === 0) {
164
+ console.log(`Swarm "${swarmSlug}" has no roles defined.`);
165
+ return;
166
+ }
167
+ // Load all reputation profiles
168
+ const profileFiles = await listProfiles(root);
169
+ const profiles = profileFiles.map((p) => p.frontmatter);
170
+ if (profiles.length === 0) {
171
+ console.log("No reputation profiles found in workspace.");
172
+ return;
173
+ }
174
+ const now = new Date();
175
+ if (options.auto) {
176
+ // Auto-recruit mode
177
+ const results = autoRecruitSwarm(swarm.frontmatter, profiles, now);
178
+ let anyAssigned = false;
179
+ for (const result of results) {
180
+ if (result.assigned.length > 0) {
181
+ anyAssigned = true;
182
+ // Update the swarm's role
183
+ const role = swarm.frontmatter.roles.find((r) => r.name === result.role);
184
+ if (role) {
185
+ role.assigned.push(...result.assigned);
186
+ if (!role.assignedSlugs)
187
+ role.assignedSlugs = [];
188
+ role.assignedSlugs.push(...result.assignedSlugs);
189
+ }
190
+ console.log(`Assigned to ${result.role}: ${result.assignedSlugs.join(", ")}`);
191
+ }
192
+ if (result.unfilled > 0) {
193
+ console.log(` ${result.role}: ${result.unfilled} slot(s) still unfilled`);
194
+ }
195
+ }
196
+ if (anyAssigned) {
197
+ // Check if fully staffed, update status
198
+ const summary = getSwarmStaffingSummary(swarm.frontmatter);
199
+ if (summary.needed === 0 && swarm.frontmatter.status === "recruiting") {
200
+ swarm.frontmatter.status = "active";
201
+ console.log(`\nSwarm "${swarmSlug}" is now fully staffed. Status: active`);
202
+ }
203
+ const content = serializeWorkspaceFile(swarm);
204
+ await writeFile(swarm.filePath, content, "utf-8");
205
+ }
206
+ else {
207
+ console.log("No qualified candidates found for any unfilled roles.");
208
+ }
209
+ return;
210
+ }
211
+ // Interactive mode - show candidates for each role
212
+ console.log(`Recruitment Candidates for swarm: ${swarmSlug}`);
213
+ console.log("=".repeat(50));
214
+ for (const role of swarm.frontmatter.roles) {
215
+ const filled = role.assigned.length;
216
+ const needed = role.count;
217
+ console.log("");
218
+ console.log(`Role: ${role.name} (${filled}/${needed} filled)`);
219
+ console.log("-".repeat(30));
220
+ if (filled >= needed) {
221
+ console.log(" [Fully staffed]");
222
+ continue;
223
+ }
224
+ const candidates = findCandidatesForRole(role, profiles, now);
225
+ if (candidates.length === 0) {
226
+ console.log(" No candidates available.");
227
+ continue;
228
+ }
229
+ for (const candidate of candidates) {
230
+ const status = candidate.qualifies ? "✓ qualifies" : "✗ below threshold";
231
+ const scoreStr = Object.entries(candidate.scores)
232
+ .map(([dim, score]) => {
233
+ const dimName = dim.startsWith("domain-competence:")
234
+ ? dim.slice("domain-competence:".length)
235
+ : dim;
236
+ return `${dimName}: ${score.toFixed(2)}`;
237
+ })
238
+ .join(", ");
239
+ console.log(` ${candidate.slug} (${scoreStr}) ${status}`);
240
+ if (candidate.gaps.length > 0) {
241
+ console.log(` Gaps: ${candidate.gaps.join(", ")}`);
242
+ }
243
+ }
244
+ }
245
+ console.log("");
246
+ console.log("Use --auto to automatically assign qualified candidates.");
247
+ }
248
+ /**
249
+ * awp swarm show <slug>
250
+ */
251
+ export async function swarmShowCommand(swarmSlug) {
252
+ const root = await findWorkspaceRoot();
253
+ if (!root) {
254
+ console.error("Not in an AWP workspace.");
255
+ process.exit(1);
256
+ }
257
+ let swarm;
258
+ try {
259
+ swarm = await loadSwarm(root, swarmSlug);
260
+ }
261
+ catch {
262
+ console.error(`Swarm not found: ${swarmSlug}`);
263
+ process.exit(1);
264
+ }
265
+ const fm = swarm.frontmatter;
266
+ const summary = getSwarmStaffingSummary(fm);
267
+ console.log(`Swarm: ${fm.name}`);
268
+ console.log(`ID: ${fm.id}`);
269
+ console.log(`Status: ${fm.status}`);
270
+ console.log(`Goal: ${fm.goal}`);
271
+ console.log(`Created: ${fm.created}`);
272
+ if (fm.projectId)
273
+ console.log(`Project: ${fm.projectId}`);
274
+ if (fm.governance) {
275
+ console.log("");
276
+ console.log("Governance");
277
+ console.log("----------");
278
+ if (fm.governance.humanLead)
279
+ console.log(` Human Lead: ${fm.governance.humanLead}`);
280
+ if (fm.governance.vetoPower !== undefined)
281
+ console.log(` Veto Power: ${fm.governance.vetoPower}`);
282
+ if (fm.governance.escalationThreshold !== undefined)
283
+ console.log(` Escalation Threshold: ${fm.governance.escalationThreshold}`);
284
+ }
285
+ console.log("");
286
+ console.log(`Staffing: ${summary.filled}/${summary.total}`);
287
+ console.log("-".repeat(20));
288
+ for (const role of fm.roles) {
289
+ const filled = role.assigned.length;
290
+ const statusIcon = filled >= role.count ? "✓" : "○";
291
+ console.log(` ${statusIcon} ${role.name}: ${filled}/${role.count}`);
292
+ if (role.assignedSlugs && role.assignedSlugs.length > 0) {
293
+ console.log(` Assigned: ${role.assignedSlugs.join(", ")}`);
294
+ }
295
+ if (role.minReputation && Object.keys(role.minReputation).length > 0) {
296
+ const reqs = Object.entries(role.minReputation)
297
+ .map(([dim, score]) => `${dim}≥${score}`)
298
+ .join(", ");
299
+ console.log(` Requirements: ${reqs}`);
300
+ }
301
+ }
302
+ if (fm.tags?.length) {
303
+ console.log("");
304
+ console.log(`Tags: ${fm.tags.join(", ")}`);
305
+ }
306
+ }
307
+ /**
308
+ * awp swarm list
309
+ */
310
+ export async function swarmListCommand(options) {
311
+ const root = await findWorkspaceRoot();
312
+ if (!root) {
313
+ console.error("Not in an AWP workspace.");
314
+ process.exit(1);
315
+ }
316
+ let swarms = await listSwarms(root);
317
+ if (options.status) {
318
+ swarms = swarms.filter((s) => s.frontmatter.status === options.status);
319
+ }
320
+ if (swarms.length === 0) {
321
+ console.log(options.status
322
+ ? `No swarms with status "${options.status}" found.`
323
+ : "No swarms found in workspace.");
324
+ return;
325
+ }
326
+ const header = "SWARM STATUS STAFFING GOAL";
327
+ console.log(header);
328
+ console.log("-".repeat(header.length));
329
+ for (const swarm of swarms) {
330
+ const fm = swarm.frontmatter;
331
+ const slug = fm.id.replace("swarm:", "");
332
+ const summary = getSwarmStaffingSummary(fm);
333
+ const staffing = `${summary.filled}/${summary.total}`;
334
+ const goalPreview = fm.goal.slice(0, 30) + (fm.goal.length > 30 ? "..." : "");
335
+ console.log(`${slug.padEnd(24)} ${fm.status.padEnd(12)} ${staffing.padEnd(10)} ${goalPreview}`);
336
+ }
337
+ }
338
+ /**
339
+ * awp swarm update <slug>
340
+ */
341
+ export async function swarmUpdateCommand(swarmSlug, options) {
342
+ const root = await findWorkspaceRoot();
343
+ if (!root) {
344
+ console.error("Not in an AWP workspace.");
345
+ process.exit(1);
346
+ }
347
+ let swarm;
348
+ try {
349
+ swarm = await loadSwarm(root, swarmSlug);
350
+ }
351
+ catch {
352
+ console.error(`Swarm not found: ${swarmSlug}`);
353
+ process.exit(1);
354
+ }
355
+ const changes = [];
356
+ if (options.status) {
357
+ const validStatuses = ["recruiting", "active", "completed", "disbanded"];
358
+ if (!validStatuses.includes(options.status)) {
359
+ console.error(`Invalid status: ${options.status}. Use: ${validStatuses.join(", ")}`);
360
+ process.exit(1);
361
+ }
362
+ swarm.frontmatter.status = options.status;
363
+ changes.push(`status → ${options.status}`);
364
+ }
365
+ if (changes.length === 0) {
366
+ console.log("No changes specified.");
367
+ return;
368
+ }
369
+ const content = serializeWorkspaceFile(swarm);
370
+ await writeFile(swarm.filePath, content, "utf-8");
371
+ console.log(`Updated swarm "${swarmSlug}": ${changes.join(", ")}`);
372
+ }
373
+ //# sourceMappingURL=swarm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swarm.js","sourceRoot":"","sources":["../../src/commands/swarm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * awp task create <project> <slug>
3
+ */
4
+ export declare function taskCreateCommand(projectSlug: string, taskSlug: string, options: {
5
+ title?: string;
6
+ assignee?: string;
7
+ assigneeSlug?: string;
8
+ priority?: string;
9
+ deadline?: string;
10
+ blockedBy?: string;
11
+ outputArtifact?: string;
12
+ contract?: string;
13
+ }): Promise<void>;
14
+ /**
15
+ * awp task list <project>
16
+ */
17
+ export declare function taskListCommand(projectSlug: string, options: {
18
+ status?: string;
19
+ assignee?: string;
20
+ }): Promise<void>;
21
+ /**
22
+ * awp task update <project> <slug>
23
+ */
24
+ export declare function taskUpdateCommand(projectSlug: string, taskSlug: string, options: {
25
+ status?: string;
26
+ assignee?: string;
27
+ assigneeSlug?: string;
28
+ }): Promise<void>;
29
+ /**
30
+ * awp task show <project> <slug>
31
+ */
32
+ export declare function taskShowCommand(projectSlug: string, taskSlug: string): Promise<void>;
33
+ /**
34
+ * awp task graph <project>
35
+ * Analyze task dependencies: topological order, cycles, critical path, blocked tasks
36
+ */
37
+ export declare function taskGraphCommand(projectSlug: string, options: {
38
+ check?: boolean;
39
+ json?: boolean;
40
+ }): Promise<void>;
41
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,IAAI,CAAC,CA4Ff;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,IAAI,CAAC,CAsCf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,OAAO,CAAC,IAAI,CAAC,CAiGf;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoD1F;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3C,OAAO,CAAC,IAAI,CAAC,CAkHf"}