skill-flow 1.0.8 → 1.3.3
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/README.md +209 -131
- package/README.zh.md +170 -131
- package/dist/bridge-command.d.ts +9 -0
- package/dist/bridge-command.js +422 -0
- package/dist/bridge-command.js.map +1 -0
- package/dist/cli.js +68 -8
- package/dist/cli.js.map +1 -1
- package/package.json +11 -2
- package/dist/adapters/channel-adapters.d.ts +0 -8
- package/dist/adapters/channel-adapters.js +0 -64
- package/dist/adapters/channel-adapters.js.map +0 -1
- package/dist/domain/types.d.ts +0 -234
- package/dist/domain/types.js +0 -2
- package/dist/domain/types.js.map +0 -1
- package/dist/services/config-coordinator.d.ts +0 -38
- package/dist/services/config-coordinator.js +0 -83
- package/dist/services/config-coordinator.js.map +0 -1
- package/dist/services/deployment-applier.d.ts +0 -10
- package/dist/services/deployment-applier.js +0 -84
- package/dist/services/deployment-applier.js.map +0 -1
- package/dist/services/deployment-planner.d.ts +0 -16
- package/dist/services/deployment-planner.js +0 -366
- package/dist/services/deployment-planner.js.map +0 -1
- package/dist/services/doctor-service.d.ts +0 -7
- package/dist/services/doctor-service.js +0 -204
- package/dist/services/doctor-service.js.map +0 -1
- package/dist/services/inventory-service.d.ts +0 -17
- package/dist/services/inventory-service.js +0 -216
- package/dist/services/inventory-service.js.map +0 -1
- package/dist/services/skill-flow.d.ts +0 -136
- package/dist/services/skill-flow.js +0 -1210
- package/dist/services/skill-flow.js.map +0 -1
- package/dist/services/source-service.d.ts +0 -57
- package/dist/services/source-service.js +0 -809
- package/dist/services/source-service.js.map +0 -1
- package/dist/services/workflow-service.d.ts +0 -5
- package/dist/services/workflow-service.js +0 -45
- package/dist/services/workflow-service.js.map +0 -1
- package/dist/services/workspace-bootstrap-service.d.ts +0 -25
- package/dist/services/workspace-bootstrap-service.js +0 -140
- package/dist/services/workspace-bootstrap-service.js.map +0 -1
- package/dist/state/store.d.ts +0 -35
- package/dist/state/store.js +0 -151
- package/dist/state/store.js.map +0 -1
- package/dist/tests/add-flow-model.test.d.ts +0 -1
- package/dist/tests/add-flow-model.test.js +0 -108
- package/dist/tests/add-flow-model.test.js.map +0 -1
- package/dist/tests/add-flow-ui.test.d.ts +0 -1
- package/dist/tests/add-flow-ui.test.js +0 -16
- package/dist/tests/add-flow-ui.test.js.map +0 -1
- package/dist/tests/add-prepare-flow.test.d.ts +0 -1
- package/dist/tests/add-prepare-flow.test.js +0 -166
- package/dist/tests/add-prepare-flow.test.js.map +0 -1
- package/dist/tests/add-selection-and-find-command.test.d.ts +0 -1
- package/dist/tests/add-selection-and-find-command.test.js +0 -89
- package/dist/tests/add-selection-and-find-command.test.js.map +0 -1
- package/dist/tests/clawhub.test.d.ts +0 -1
- package/dist/tests/clawhub.test.js +0 -63
- package/dist/tests/clawhub.test.js.map +0 -1
- package/dist/tests/cli-utils.test.d.ts +0 -1
- package/dist/tests/cli-utils.test.js +0 -24
- package/dist/tests/cli-utils.test.js.map +0 -1
- package/dist/tests/config-coordinator.test.d.ts +0 -1
- package/dist/tests/config-coordinator.test.js +0 -219
- package/dist/tests/config-coordinator.test.js.map +0 -1
- package/dist/tests/config-integration.test.d.ts +0 -1
- package/dist/tests/config-integration.test.js +0 -276
- package/dist/tests/config-integration.test.js.map +0 -1
- package/dist/tests/config-ui-utils.test.d.ts +0 -1
- package/dist/tests/config-ui-utils.test.js +0 -523
- package/dist/tests/config-ui-utils.test.js.map +0 -1
- package/dist/tests/find-and-naming-utils.test.d.ts +0 -1
- package/dist/tests/find-and-naming-utils.test.js +0 -127
- package/dist/tests/find-and-naming-utils.test.js.map +0 -1
- package/dist/tests/inventory-service-precedence.test.d.ts +0 -1
- package/dist/tests/inventory-service-precedence.test.js +0 -42
- package/dist/tests/inventory-service-precedence.test.js.map +0 -1
- package/dist/tests/skill-flow.test.d.ts +0 -1
- package/dist/tests/skill-flow.test.js +0 -991
- package/dist/tests/skill-flow.test.js.map +0 -1
- package/dist/tests/source-lifecycle.test.d.ts +0 -1
- package/dist/tests/source-lifecycle.test.js +0 -644
- package/dist/tests/source-lifecycle.test.js.map +0 -1
- package/dist/tests/source-parsing-compatibility.test.d.ts +0 -1
- package/dist/tests/source-parsing-compatibility.test.js +0 -72
- package/dist/tests/source-parsing-compatibility.test.js.map +0 -1
- package/dist/tests/target-definitions.test.d.ts +0 -1
- package/dist/tests/target-definitions.test.js +0 -51
- package/dist/tests/target-definitions.test.js.map +0 -1
- package/dist/tests/test-helpers.d.ts +0 -18
- package/dist/tests/test-helpers.js +0 -123
- package/dist/tests/test-helpers.js.map +0 -1
- package/dist/tui/add-flow-model.d.ts +0 -62
- package/dist/tui/add-flow-model.js +0 -206
- package/dist/tui/add-flow-model.js.map +0 -1
- package/dist/tui/add-flow.d.ts +0 -25
- package/dist/tui/add-flow.js +0 -534
- package/dist/tui/add-flow.js.map +0 -1
- package/dist/tui/config-app.d.ts +0 -178
- package/dist/tui/config-app.js +0 -1551
- package/dist/tui/config-app.js.map +0 -1
- package/dist/tui/find-app.d.ts +0 -9
- package/dist/tui/find-app.js +0 -150
- package/dist/tui/find-app.js.map +0 -1
- package/dist/tui/selection-state.d.ts +0 -8
- package/dist/tui/selection-state.js +0 -32
- package/dist/tui/selection-state.js.map +0 -1
- package/dist/utils/builtin-git-sources.d.ts +0 -5
- package/dist/utils/builtin-git-sources.js +0 -23
- package/dist/utils/builtin-git-sources.js.map +0 -1
- package/dist/utils/clawhub.d.ts +0 -41
- package/dist/utils/clawhub.js +0 -94
- package/dist/utils/clawhub.js.map +0 -1
- package/dist/utils/cli.d.ts +0 -2
- package/dist/utils/cli.js +0 -19
- package/dist/utils/cli.js.map +0 -1
- package/dist/utils/constants.d.ts +0 -23
- package/dist/utils/constants.js +0 -195
- package/dist/utils/constants.js.map +0 -1
- package/dist/utils/find-command.d.ts +0 -2
- package/dist/utils/find-command.js +0 -29
- package/dist/utils/find-command.js.map +0 -1
- package/dist/utils/format.d.ts +0 -7
- package/dist/utils/format.js +0 -68
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/fs.d.ts +0 -16
- package/dist/utils/fs.js +0 -144
- package/dist/utils/fs.js.map +0 -1
- package/dist/utils/git.d.ts +0 -3
- package/dist/utils/git.js +0 -12
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/github-catalog.d.ts +0 -1
- package/dist/utils/github-catalog.js +0 -25
- package/dist/utils/github-catalog.js.map +0 -1
- package/dist/utils/naming.d.ts +0 -29
- package/dist/utils/naming.js +0 -115
- package/dist/utils/naming.js.map +0 -1
- package/dist/utils/result.d.ts +0 -4
- package/dist/utils/result.js +0 -15
- package/dist/utils/result.js.map +0 -1
- package/dist/utils/source-id.d.ts +0 -2
- package/dist/utils/source-id.js +0 -49
- package/dist/utils/source-id.js.map +0 -1
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { describe, expect, test } from "vitest";
|
|
2
|
-
import { buildFindCommand } from "../utils/find-command.js";
|
|
3
|
-
import { buildProjectedSkillName, formatGroupLabel, resolveProjectedSkillNames } from "../utils/naming.js";
|
|
4
|
-
import { deriveSourceId } from "../utils/source-id.js";
|
|
5
|
-
describe("find and naming utils", () => {
|
|
6
|
-
test("normalizes GitHub locators to the same source id across supported formats", () => {
|
|
7
|
-
const locators = [
|
|
8
|
-
"https://github.com/garrytan/gstack",
|
|
9
|
-
"https://github.com/garrytan/gstack.git",
|
|
10
|
-
"git@github.com:garrytan/gstack.git",
|
|
11
|
-
"garrytan/gstack",
|
|
12
|
-
];
|
|
13
|
-
expect(locators.map((locator) => deriveSourceId(locator))).toEqual([
|
|
14
|
-
"garrytan-gstack",
|
|
15
|
-
"garrytan-gstack",
|
|
16
|
-
"garrytan-gstack",
|
|
17
|
-
"garrytan-gstack",
|
|
18
|
-
]);
|
|
19
|
-
});
|
|
20
|
-
test("normalizes ClawHub locators to the same source id across version forms", () => {
|
|
21
|
-
expect(deriveSourceId("clawhub:find-skills")).toBe("clawhub-find-skills");
|
|
22
|
-
expect(deriveSourceId("clawhub:find-skills@1.2.3")).toBe("clawhub-find-skills");
|
|
23
|
-
});
|
|
24
|
-
test("builds follow-up commands for search candidates", () => {
|
|
25
|
-
expect(buildFindCommand({
|
|
26
|
-
id: "builtin:1",
|
|
27
|
-
title: "find-skills",
|
|
28
|
-
description: "Find skills",
|
|
29
|
-
source: "builtin-git",
|
|
30
|
-
sourceLabel: "skills(@anthropics)",
|
|
31
|
-
sourceId: "anthropics-skills",
|
|
32
|
-
sourceKind: "git",
|
|
33
|
-
locator: "https://github.com/anthropics/skills.git",
|
|
34
|
-
relativePath: "skills/find-skills",
|
|
35
|
-
installed: false,
|
|
36
|
-
action: {
|
|
37
|
-
type: "add-git",
|
|
38
|
-
locator: "https://github.com/anthropics/skills.git",
|
|
39
|
-
requestedPath: "skills/find-skills",
|
|
40
|
-
},
|
|
41
|
-
})).toBe("skill-flow add https://github.com/anthropics/skills.git --path skills/find-skills");
|
|
42
|
-
expect(buildFindCommand({
|
|
43
|
-
id: "clawhub:1",
|
|
44
|
-
title: "Find Skills",
|
|
45
|
-
description: "Find skills",
|
|
46
|
-
source: "clawhub",
|
|
47
|
-
sourceLabel: "ClawHub",
|
|
48
|
-
sourceId: "clawhub-find-skills",
|
|
49
|
-
sourceKind: "clawhub",
|
|
50
|
-
locator: "clawhub:find-skills",
|
|
51
|
-
installed: false,
|
|
52
|
-
action: {
|
|
53
|
-
type: "add-clawhub",
|
|
54
|
-
slug: "find-skills",
|
|
55
|
-
version: "1.2.3",
|
|
56
|
-
},
|
|
57
|
-
})).toBe("skill-flow add clawhub:find-skills@1.2.3");
|
|
58
|
-
});
|
|
59
|
-
test("formats GitHub groups as groupName(@owner)", () => {
|
|
60
|
-
expect(formatGroupLabel({
|
|
61
|
-
id: "garrytan-gstack",
|
|
62
|
-
locator: "git@github.com:garrytan/gstack.git",
|
|
63
|
-
displayName: "gstack",
|
|
64
|
-
})).toBe("gstack@garrytan");
|
|
65
|
-
});
|
|
66
|
-
test("prefers groupName-skillName for projected collisions", () => {
|
|
67
|
-
const projected = resolveProjectedSkillNames([
|
|
68
|
-
{
|
|
69
|
-
leafId: "a:browse",
|
|
70
|
-
groupId: "garrytan-gstack",
|
|
71
|
-
groupName: "gstack",
|
|
72
|
-
groupAuthor: "garrytan",
|
|
73
|
-
skillName: "browse",
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
leafId: "b:browse",
|
|
77
|
-
groupId: "alice-toolkit",
|
|
78
|
-
groupName: "toolkit",
|
|
79
|
-
groupAuthor: "alice",
|
|
80
|
-
skillName: "browse",
|
|
81
|
-
},
|
|
82
|
-
]);
|
|
83
|
-
expect(projected.get("a:browse")).toBe(buildProjectedSkillName("gstack", "browse", "garrytan"));
|
|
84
|
-
expect(projected.get("b:browse")).toBe(buildProjectedSkillName("toolkit", "browse", "alice"));
|
|
85
|
-
});
|
|
86
|
-
test("falls back to groupId-skillName when projected names still collide", () => {
|
|
87
|
-
const projected = resolveProjectedSkillNames([
|
|
88
|
-
{
|
|
89
|
-
leafId: "a:browse",
|
|
90
|
-
groupId: "alice-gstack",
|
|
91
|
-
groupName: "gstack",
|
|
92
|
-
groupAuthor: "alice",
|
|
93
|
-
skillName: "browse",
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
leafId: "b:browse",
|
|
97
|
-
groupId: "garrytan-gstack",
|
|
98
|
-
groupName: "gstack",
|
|
99
|
-
groupAuthor: "garrytan",
|
|
100
|
-
skillName: "browse",
|
|
101
|
-
},
|
|
102
|
-
]);
|
|
103
|
-
expect(projected.get("a:browse")).toBe("gstack(alice)-browse");
|
|
104
|
-
expect(projected.get("b:browse")).toBe("gstack(garrytan)-browse");
|
|
105
|
-
});
|
|
106
|
-
test("prefers author prefix when repo prefix would repeat the skill prefix", () => {
|
|
107
|
-
const projected = resolveProjectedSkillNames([
|
|
108
|
-
{
|
|
109
|
-
leafId: "a:skill-creator",
|
|
110
|
-
groupId: "anthropic-skill",
|
|
111
|
-
groupName: "skill",
|
|
112
|
-
groupAuthor: "anthropic",
|
|
113
|
-
skillName: "skill-creator",
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
leafId: "b:skill-creator",
|
|
117
|
-
groupId: "openai-skill",
|
|
118
|
-
groupName: "skill",
|
|
119
|
-
groupAuthor: "openai",
|
|
120
|
-
skillName: "skill-creator",
|
|
121
|
-
},
|
|
122
|
-
]);
|
|
123
|
-
expect(projected.get("a:skill-creator")).toBe("anthropic-skill-creator");
|
|
124
|
-
expect(projected.get("b:skill-creator")).toBe("openai-skill-creator");
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
//# sourceMappingURL=find-and-naming-utils.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"find-and-naming-utils.test.js","sourceRoot":"","sources":["../../src/tests/find-and-naming-utils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { describe, expect, test } from "vitest";
|
|
2
|
-
import { InventoryService } from "../services/inventory-service.js";
|
|
3
|
-
import { createRepo, skillDoc, useSkillFlowSandbox, } from "./test-helpers.js";
|
|
4
|
-
describe.sequential("inventory discovery precedence", () => {
|
|
5
|
-
const sandbox = useSkillFlowSandbox();
|
|
6
|
-
test("keeps a root skill ahead of matching duplicates in other buckets", async () => {
|
|
7
|
-
const repoPath = await createRepo(sandbox.sandboxRoot, {
|
|
8
|
-
"SKILL.md": skillDoc("browse", "Root browse skill."),
|
|
9
|
-
"alpha/browse/SKILL.md": skillDoc("browse", "Root browse skill."),
|
|
10
|
-
"skills/browse/SKILL.md": skillDoc("browse", "Root browse skill."),
|
|
11
|
-
});
|
|
12
|
-
const inventory = new InventoryService();
|
|
13
|
-
const scanned = await inventory.scanSource("demo-source", repoPath, "demo");
|
|
14
|
-
expect(scanned.leafs).toHaveLength(1);
|
|
15
|
-
expect(scanned.leafs[0]?.relativePath).toBe(".");
|
|
16
|
-
expect(scanned.duplicateLeafs.some((duplicate) => duplicate.path === "alpha/browse" && duplicate.keptPath === ".")).toBe(true);
|
|
17
|
-
});
|
|
18
|
-
test("prefers standard skill buckets over alphabetically earlier recursive matches", async () => {
|
|
19
|
-
const repoPath = await createRepo(sandbox.sandboxRoot, {
|
|
20
|
-
"alpha/browse/SKILL.md": skillDoc("browse", "Shared browse skill."),
|
|
21
|
-
"skills/browse/SKILL.md": skillDoc("browse", "Shared browse skill."),
|
|
22
|
-
"skills/.curated/browse/SKILL.md": skillDoc("browse", "Shared browse skill."),
|
|
23
|
-
"skills/.experimental/browse/SKILL.md": skillDoc("browse", "Shared browse skill."),
|
|
24
|
-
"skills/.system/browse/SKILL.md": skillDoc("browse", "Shared browse skill."),
|
|
25
|
-
});
|
|
26
|
-
const inventory = new InventoryService();
|
|
27
|
-
const scanned = await inventory.scanSource("demo-source", repoPath, "demo");
|
|
28
|
-
expect(scanned.leafs).toHaveLength(1);
|
|
29
|
-
expect(scanned.leafs[0]?.relativePath).toBe("skills/browse");
|
|
30
|
-
expect(scanned.duplicateLeafs.some((duplicate) => duplicate.path === "alpha/browse" && duplicate.keptPath === "skills/browse")).toBe(true);
|
|
31
|
-
});
|
|
32
|
-
test("preserves recursive fallback for hidden host directories", async () => {
|
|
33
|
-
const repoPath = await createRepo(sandbox.sandboxRoot, {
|
|
34
|
-
".agents/skills/gstack-browse/SKILL.md": skillDoc("gstack-browse", "Host directory skill."),
|
|
35
|
-
});
|
|
36
|
-
const inventory = new InventoryService();
|
|
37
|
-
const scanned = await inventory.scanSource("demo-source", repoPath, "demo");
|
|
38
|
-
expect(scanned.leafs).toHaveLength(1);
|
|
39
|
-
expect(scanned.leafs[0]?.relativePath).toBe(".agents/skills/gstack-browse");
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
//# sourceMappingURL=inventory-service-precedence.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inventory-service-precedence.test.js","sourceRoot":"","sources":["../../src/tests/inventory-service-precedence.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EACL,UAAU,EACV,QAAQ,EACR,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,QAAQ,CAAC,UAAU,CAAC,gCAAgC,EAAE,GAAG,EAAE;IACzD,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IAEtC,IAAI,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE;YACrD,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;YACpD,uBAAuB,EAAE,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;YACjE,wBAAwB,EAAE,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;SACnE,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAEzC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE5E,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,CACJ,OAAO,CAAC,cAAc,CAAC,IAAI,CACzB,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,IAAI,SAAS,CAAC,QAAQ,KAAK,GAAG,CAC/E,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE;YACrD,uBAAuB,EAAE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;YACnE,wBAAwB,EAAE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;YACpE,iCAAiC,EAAE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;YAC7E,sCAAsC,EAAE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;YAClF,gCAAgC,EAAE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;SAC7E,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAEzC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE5E,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7D,MAAM,CACJ,OAAO,CAAC,cAAc,CAAC,IAAI,CACzB,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,IAAI,SAAS,CAAC,QAAQ,KAAK,eAAe,CAC3F,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE;YACrD,uCAAuC,EAAE,QAAQ,CAAC,eAAe,EAAE,uBAAuB,CAAC;SAC5F,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAEzC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE5E,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|