@tacuchi/agent-workflow-cli 25.9.0 → 26.0.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.
- package/CHANGELOG.md +26 -0
- package/README.md +1 -2
- package/dist/application/capability/design-handler.js +94 -0
- package/dist/application/capability/design-handler.js.map +1 -1
- package/dist/application/capability/dispatcher.js +178 -18
- package/dist/application/capability/dispatcher.js.map +1 -1
- package/dist/application/capability/durable-effect.js.map +1 -1
- package/dist/application/capability/readiness.js +8 -54
- package/dist/application/capability/readiness.js.map +1 -1
- package/dist/application/capability/resolution.js +124 -192
- package/dist/application/capability/resolution.js.map +1 -1
- package/dist/application/doctor/prepare.js +0 -3
- package/dist/application/doctor/prepare.js.map +1 -1
- package/dist/application/doctor/provider-skills.js +21 -132
- package/dist/application/doctor/provider-skills.js.map +1 -1
- package/dist/application/doctor/repair-runner.js +0 -47
- package/dist/application/doctor/repair-runner.js.map +1 -1
- package/dist/application/flow/submit.js +1 -1
- package/dist/application/flow/submit.js.map +1 -1
- package/dist/application/plan-lint-service.js +31 -5
- package/dist/application/plan-lint-service.js.map +1 -1
- package/dist/application/retirement/attribution.js +1 -2
- package/dist/application/retirement/attribution.js.map +1 -1
- package/dist/application/self/clean-legacy.js +1 -2
- package/dist/application/self/clean-legacy.js.map +1 -1
- package/dist/application/self/install-skill.js +5 -49
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/self/skill-files.js +29 -0
- package/dist/application/self/skill-files.js.map +1 -0
- package/dist/application/skills-resolver-service.js +5 -91
- package/dist/application/skills-resolver-service.js.map +1 -1
- package/dist/application/source-boundary-policy.js +10 -2
- package/dist/application/source-boundary-policy.js.map +1 -1
- package/dist/cli/commands/capability.js +12 -4
- package/dist/cli/commands/capability.js.map +1 -1
- package/dist/cli/commands/index.js +0 -4
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/self.js +1 -22
- package/dist/cli/commands/self.js.map +1 -1
- package/dist/cli/commands/skills.js +4 -11
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/help-groups.js +1 -3
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/tui/app.js +2 -3
- package/dist/cli/tui/app.js.map +1 -1
- package/dist/cli/tui/components/host-admin-section.js +2 -13
- package/dist/cli/tui/components/host-admin-section.js.map +1 -1
- package/dist/cli/tui/components/tabs-config.js +1 -2
- package/dist/cli/tui/components/tabs-config.js.map +1 -1
- package/dist/cli/tui/tui-prefs.js +2 -0
- package/dist/cli/tui/tui-prefs.js.map +1 -1
- package/dist/dist-manifest.json +60 -204
- package/dist/domain/capability/protocol.js +3 -1
- package/dist/domain/capability/protocol.js.map +1 -1
- package/dist/domain/doctor/operations.js +0 -18
- package/dist/domain/doctor/operations.js.map +1 -1
- package/dist/domain/flow/authority.js +1 -3
- package/dist/domain/flow/authority.js.map +1 -1
- package/dist/domain/skills.js +2 -6
- package/dist/domain/skills.js.map +1 -1
- package/package.json +2 -2
- package/skills/w/SKILL.md +9 -16
- package/skills/w/exports/README.md +4 -4
- package/skills/w/exports/export-diagrams/EXPORT.md +1 -1
- package/skills/w/exports/export-scripts/EXPORT.md +1 -1
- package/skills/w/harness/HARNESS.md +2 -5
- package/skills/w/loops/CHASSIS.md +1 -1
- package/skills/w/loops/CODE-POLICIES.md +1 -1
- package/skills/w/loops/README.md +2 -2
- package/skills/w/loops/quick-loop/LOOP.md +1 -1
- package/skills/w/loops/spec-refine-loop/LOOP.md +1 -1
- package/skills/w/roles/README.md +11 -47
- package/skills/w/roles/design/ROLE.md +3 -1
- package/skills/w/roles/diagrams/ROLE.md +1 -1
- package/skills/w/roles/git/ROLE.md +1 -1
- package/skills/w/roles/research/ROLE.md +1 -1
- package/skills/w/roles/sql/ROLE.md +1 -1
- package/dist/application/capability/descriptor-loader.js +0 -109
- package/dist/application/capability/descriptor-loader.js.map +0 -1
- package/dist/application/capability/installed-inventory.js +0 -168
- package/dist/application/capability/installed-inventory.js.map +0 -1
- package/dist/application/doctor/skills-toml-migrate.js +0 -76
- package/dist/application/doctor/skills-toml-migrate.js.map +0 -1
- package/dist/application/self/install-plugin-skills-git.js +0 -226
- package/dist/application/self/install-plugin-skills-git.js.map +0 -1
- package/dist/application/self/install-plugin-skills.js +0 -203
- package/dist/application/self/install-plugin-skills.js.map +0 -1
- package/dist/application/self/plugin-cache-clear.js +0 -133
- package/dist/application/self/plugin-cache-clear.js.map +0 -1
- package/dist/application/self/plugin-cache-reload.js +0 -141
- package/dist/application/self/plugin-cache-reload.js.map +0 -1
- package/dist/application/self/skills-apply.js +0 -623
- package/dist/application/self/skills-apply.js.map +0 -1
- package/dist/application/self/skills-catalog.js +0 -35
- package/dist/application/self/skills-catalog.js.map +0 -1
- package/dist/application/self/skills-change.js +0 -479
- package/dist/application/self/skills-change.js.map +0 -1
- package/dist/application/self/skills-discovery.js +0 -275
- package/dist/application/self/skills-discovery.js.map +0 -1
- package/dist/application/self/skills-manager.js +0 -253
- package/dist/application/self/skills-manager.js.map +0 -1
- package/dist/application/self/skills-payload.js +0 -566
- package/dist/application/self/skills-payload.js.map +0 -1
- package/dist/application/self/skills-registry.js +0 -107
- package/dist/application/self/skills-registry.js.map +0 -1
- package/dist/application/skill-index-service.js +0 -78
- package/dist/application/skill-index-service.js.map +0 -1
- package/dist/cli/commands/plugin-cache.js +0 -25
- package/dist/cli/commands/plugin-cache.js.map +0 -1
- package/dist/cli/commands/skill-index.js +0 -19
- package/dist/cli/commands/skill-index.js.map +0 -1
- package/dist/cli/tui/data/recommended-skills.js +0 -482
- package/dist/cli/tui/data/recommended-skills.js.map +0 -1
- package/dist/cli/tui/tabs/skills-tab.js +0 -664
- package/dist/cli/tui/tabs/skills-tab.js.map +0 -1
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
// User-level registry of standalone skills (the ones [Skills] manages — NOT
|
|
2
|
-
// the `w` bundle nor plugin skills). Kept as a separate file from
|
|
3
|
-
// .skill-lock.json on purpose: distinct lifecycles (the lock is written by the
|
|
4
|
-
// bundle's install-skill; this registry is written by skills-manager).
|
|
5
|
-
import { join } from "node:path";
|
|
6
|
-
import { AGENTS_LOCK_REL } from "./install-skill.js";
|
|
7
|
-
export const SKILLS_REGISTRY_REL = [".agents", ".skills-registry.json"];
|
|
8
|
-
export function skillsRegistryPath(home) {
|
|
9
|
-
return join(home, ...SKILLS_REGISTRY_REL);
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* A skill name is a safe path segment: registry names are joined into paths
|
|
13
|
-
* that later get removed recursively — never "..", separators, or empty.
|
|
14
|
-
*/
|
|
15
|
-
export function isValidSkillName(name) {
|
|
16
|
-
return /^[A-Za-z0-9][A-Za-z0-9._-]{0,100}$/.test(name);
|
|
17
|
-
}
|
|
18
|
-
export async function readSkillsRegistry(ctx) {
|
|
19
|
-
const path = skillsRegistryPath(ctx.env.homeDir());
|
|
20
|
-
if (!(await ctx.fs.exists(path)))
|
|
21
|
-
return { registry: { skills: {} }, path };
|
|
22
|
-
let parsed;
|
|
23
|
-
try {
|
|
24
|
-
parsed = JSON.parse(await ctx.fs.readText(path));
|
|
25
|
-
}
|
|
26
|
-
catch (err) {
|
|
27
|
-
return {
|
|
28
|
-
registry: { skills: {} },
|
|
29
|
-
path,
|
|
30
|
-
warning: `No se pudo parsear ${path}: ${err.message}. Registro tratado como vacío; el archivo queda intacto.`,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
34
|
-
return { registry: { skills: {} }, path, warning: `${path} no es un objeto JSON.` };
|
|
35
|
-
}
|
|
36
|
-
const rawSkills = parsed.skills;
|
|
37
|
-
const skills = {};
|
|
38
|
-
if (rawSkills && typeof rawSkills === "object" && !Array.isArray(rawSkills)) {
|
|
39
|
-
for (const [name, value] of Object.entries(rawSkills)) {
|
|
40
|
-
// Invalid name (e.g. "..", with separators) = entry discarded: a
|
|
41
|
-
// hand-edited registry never turns a remove into an rm outside the root.
|
|
42
|
-
if (!isValidSkillName(name))
|
|
43
|
-
continue;
|
|
44
|
-
const entry = parseRegistryEntry(value);
|
|
45
|
-
if (entry !== null)
|
|
46
|
-
skills[name] = entry;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return { registry: { skills }, path };
|
|
50
|
-
}
|
|
51
|
-
/** One entry as the file holds it — a field of the wrong type is dropped and
|
|
52
|
-
* the rest of the entry survives. Reading NEVER migrates: an entry written
|
|
53
|
-
* before the identity fields existed keeps its exact keys, and one that
|
|
54
|
-
* carries them keeps them through every cycle (uninstall, repair, update). */
|
|
55
|
-
function parseRegistryEntry(value) {
|
|
56
|
-
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
57
|
-
return null;
|
|
58
|
-
const v = value;
|
|
59
|
-
if (typeof v.source !== "string" || v.source.length === 0)
|
|
60
|
-
return null;
|
|
61
|
-
const text = (key) => typeof v[key] === "string" ? v[key] : undefined;
|
|
62
|
-
const ref = text("ref");
|
|
63
|
-
const installedAt = text("installedAt");
|
|
64
|
-
const path = text("path");
|
|
65
|
-
const skillName = text("skillName");
|
|
66
|
-
const resolvedRef = text("resolvedRef");
|
|
67
|
-
const payloadDigest = text("payloadDigest");
|
|
68
|
-
return {
|
|
69
|
-
source: v.source,
|
|
70
|
-
...(ref !== undefined ? { ref } : {}),
|
|
71
|
-
...(v.mode === "symlink" || v.mode === "copy" ? { mode: v.mode } : {}),
|
|
72
|
-
...(installedAt !== undefined ? { installedAt } : {}),
|
|
73
|
-
...(path !== undefined ? { path } : {}),
|
|
74
|
-
...(skillName !== undefined ? { skillName } : {}),
|
|
75
|
-
...(resolvedRef !== undefined ? { resolvedRef } : {}),
|
|
76
|
-
...(payloadDigest !== undefined ? { payloadDigest } : {}),
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
export async function writeSkillsRegistry(ctx, registry) {
|
|
80
|
-
const path = skillsRegistryPath(ctx.env.homeDir());
|
|
81
|
-
await ctx.fs.mkdirp(join(ctx.env.homeDir(), ".agents"));
|
|
82
|
-
await ctx.fs.writeText(path, `${JSON.stringify(registry, null, 2)}\n`);
|
|
83
|
-
return path;
|
|
84
|
-
}
|
|
85
|
-
/** Lock shared with skills.sh (same path the bundle's install-skill flow
|
|
86
|
-
* writes — single constant in install-skill.ts). This engine only READS it:
|
|
87
|
-
* a source hint for canonicals outside the registry. */
|
|
88
|
-
export async function readSkillsShLockSources(ctx) {
|
|
89
|
-
const path = join(ctx.env.homeDir(), ...AGENTS_LOCK_REL);
|
|
90
|
-
try {
|
|
91
|
-
const parsed = JSON.parse(await ctx.fs.readText(path));
|
|
92
|
-
const sources = {};
|
|
93
|
-
for (const [name, value] of Object.entries(parsed?.skills ?? {})) {
|
|
94
|
-
if (!isValidSkillName(name))
|
|
95
|
-
continue;
|
|
96
|
-
if (typeof value?.source === "string" && value.source.length > 0) {
|
|
97
|
-
sources[name] = value.source;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return sources;
|
|
101
|
-
}
|
|
102
|
-
catch {
|
|
103
|
-
// Absent or broken = no hints; the lock never blocks listing.
|
|
104
|
-
return {};
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=skills-registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skills-registry.js","sourceRoot":"","sources":["../../../src/application/self/skills-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { join, posix as posixPath, relative } from "node:path";
|
|
2
|
-
import { HARNESSES } from "../domain/harnesses.js";
|
|
3
|
-
import { getSkillVersion, parseSkillFrontmatter } from "../domain/skill-frontmatter.js";
|
|
4
|
-
export async function runSkillIndex(fs, env, input) {
|
|
5
|
-
const pluginRoot = input.pluginRoot ?? env.cwd();
|
|
6
|
-
const pluginName = await readPluginName(fs, pluginRoot);
|
|
7
|
-
const items = await buildIndex(fs, pluginRoot);
|
|
8
|
-
const filtered = input.exportedOnly === true ? items.filter((s) => s.exported) : items;
|
|
9
|
-
return {
|
|
10
|
-
plugin: pluginName,
|
|
11
|
-
plugin_root: pluginRoot,
|
|
12
|
-
skills_count: filtered.length,
|
|
13
|
-
exported_only: input.exportedOnly === true,
|
|
14
|
-
skills: filtered,
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
async function readPluginName(fs, pluginRoot) {
|
|
18
|
-
const manifestPaths = HARNESSES.map((h) => h.pluginManifest).filter((m) => m !== null);
|
|
19
|
-
for (const candidate of manifestPaths.map((rel) => join(pluginRoot, ...rel.split("/")))) {
|
|
20
|
-
if (!(await fs.exists(candidate)))
|
|
21
|
-
continue;
|
|
22
|
-
try {
|
|
23
|
-
const text = await fs.readText(candidate);
|
|
24
|
-
const json = JSON.parse(text);
|
|
25
|
-
if (json.name)
|
|
26
|
-
return json.name;
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
// ignore
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
async function buildIndex(fs, pluginRoot) {
|
|
35
|
-
const skillsDir = join(pluginRoot, "skills");
|
|
36
|
-
if (!(await fs.exists(skillsDir)))
|
|
37
|
-
return [];
|
|
38
|
-
const entries = await fs.list(skillsDir);
|
|
39
|
-
const dirs = entries.filter((e) => e.type === "dir").sort((a, b) => a.name.localeCompare(b.name));
|
|
40
|
-
const items = [];
|
|
41
|
-
for (const dir of dirs) {
|
|
42
|
-
const skillMd = join(dir.path, "SKILL.md");
|
|
43
|
-
if (!(await fs.exists(skillMd)))
|
|
44
|
-
continue;
|
|
45
|
-
const text = await fs.readText(skillMd);
|
|
46
|
-
const fm = parseSkillFrontmatter(text);
|
|
47
|
-
const relPath = toPosixRelative(skillMd, pluginRoot);
|
|
48
|
-
if (!fm) {
|
|
49
|
-
items.push({
|
|
50
|
-
name: dir.name,
|
|
51
|
-
description: null,
|
|
52
|
-
version: null,
|
|
53
|
-
exported: false,
|
|
54
|
-
frontmatter_ok: false,
|
|
55
|
-
path: relPath,
|
|
56
|
-
});
|
|
57
|
-
continue;
|
|
58
|
-
}
|
|
59
|
-
const name = fm.fields.name ?? dir.name;
|
|
60
|
-
items.push({
|
|
61
|
-
name,
|
|
62
|
-
description: fm.fields.description ?? null,
|
|
63
|
-
version: getSkillVersion(fm),
|
|
64
|
-
exported: false,
|
|
65
|
-
registry_version: null,
|
|
66
|
-
since_export: null,
|
|
67
|
-
frontmatter_ok: true,
|
|
68
|
-
path: relPath,
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
items.sort((a, b) => a.name.localeCompare(b.name));
|
|
72
|
-
return items;
|
|
73
|
-
}
|
|
74
|
-
function toPosixRelative(path, base) {
|
|
75
|
-
const rel = relative(base, path);
|
|
76
|
-
return rel.split(/[\\/]/).join(posixPath.sep);
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=skill-index-service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-index-service.js","sourceRoot":"","sources":["../../src/application/skill-index-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { selfClearPluginCache } from "../../application/self/plugin-cache-clear.js";
|
|
2
|
-
import { selfReloadPluginCache } from "../../application/self/plugin-cache-reload.js";
|
|
3
|
-
import { fail } from "../render.js";
|
|
4
|
-
export const pluginCacheCommand = {
|
|
5
|
-
name: "plugin-cache",
|
|
6
|
-
flags: {
|
|
7
|
-
known: ["plugin", "target", "dry-run"],
|
|
8
|
-
actions: { reload: { known: ["from"] } },
|
|
9
|
-
},
|
|
10
|
-
describe: "Limpia o recarga el cache de un plugin instalado en un host. Subcomandos: clear, reload. Flags: --plugin <ns> --target <claude|codex|warp|agents> [--from <path>] [--dry-run].",
|
|
11
|
-
async execute(args, ctx) {
|
|
12
|
-
const subcommand = args.rest[0];
|
|
13
|
-
if (!subcommand) {
|
|
14
|
-
return fail("INVALID_INPUT", "plugin-cache requiere un subcomando: clear | reload");
|
|
15
|
-
}
|
|
16
|
-
if (subcommand === "clear") {
|
|
17
|
-
return await selfClearPluginCache(args, ctx);
|
|
18
|
-
}
|
|
19
|
-
if (subcommand === "reload") {
|
|
20
|
-
return await selfReloadPluginCache(args, ctx);
|
|
21
|
-
}
|
|
22
|
-
return fail("INVALID_INPUT", `plugin-cache: subcomando desconocido '${subcommand}'. Usá: clear | reload`);
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=plugin-cache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-cache.js","sourceRoot":"","sources":["../../../src/cli/commands/plugin-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAItF,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,MAAM,CAAC,MAAM,kBAAkB,GAAe;IAC5C,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE;QACL,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;QACtC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE;KACzC;IACD,QAAQ,EACN,gLAAgL;IAClL,KAAK,CAAC,OAAO,CAAC,IAAgB,EAAE,GAAe;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,eAAe,EAAE,qDAAqD,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;YAC3B,OAAO,MAAM,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,MAAM,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CACT,eAAe,EACf,yCAAyC,UAAU,wBAAwB,CAC5E,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { runSkillIndex } from "../../application/skill-index-service.js";
|
|
2
|
-
export const skillIndexCommand = {
|
|
3
|
-
name: "skill-index",
|
|
4
|
-
flags: { known: ["plugin-root", "exported-only"] },
|
|
5
|
-
describe: "Lazy-load skill index (frontmatter only). " +
|
|
6
|
-
"Usage: aw skill-index [--plugin-root <path>] [--exported-only].",
|
|
7
|
-
async execute(args, ctx) {
|
|
8
|
-
const pluginRoot = args.plugin.pluginRoot ?? args.values.get("plugin-root");
|
|
9
|
-
const exportedOnly = args.flags.has("--exported-only");
|
|
10
|
-
const input = {};
|
|
11
|
-
if (pluginRoot !== undefined)
|
|
12
|
-
input.pluginRoot = pluginRoot;
|
|
13
|
-
if (exportedOnly)
|
|
14
|
-
input.exportedOnly = true;
|
|
15
|
-
const data = await runSkillIndex(ctx.fs, ctx.env, input);
|
|
16
|
-
return { ok: true, data, exitCode: 0 };
|
|
17
|
-
},
|
|
18
|
-
};
|
|
19
|
-
//# sourceMappingURL=skill-index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-index.js","sourceRoot":"","sources":["../../../src/cli/commands/skill-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAMzE,MAAM,CAAC,MAAM,iBAAiB,GAAe;IAC3C,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC,EAAE;IAClD,QAAQ,EACN,4CAA4C;QAC5C,iEAAiE;IACnE,KAAK,CAAC,OAAO,CAAC,IAAgB,EAAE,GAAe;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACvD,MAAM,KAAK,GAAwC,EAAE,CAAC;QACtD,IAAI,UAAU,KAAK,SAAS;YAAE,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QAC5D,IAAI,YAAY;YAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACzC,CAAC;CACF,CAAC"}
|