aura-code 0.6.3 → 0.10.1
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 +47 -164
- package/dist/agent/affect.d.ts +13 -0
- package/dist/agent/affect.js +34 -0
- package/dist/agent/affect.js.map +1 -0
- package/dist/agent/compactor.d.ts +27 -4
- package/dist/agent/compactor.js +185 -54
- package/dist/agent/compactor.js.map +1 -1
- package/dist/agent/confess.d.ts +35 -0
- package/dist/agent/confess.js +296 -0
- package/dist/agent/confess.js.map +1 -0
- package/dist/agent/context.d.ts +0 -4
- package/dist/agent/context.js +0 -38
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/domain-expertise.d.ts +22 -0
- package/dist/agent/domain-expertise.js +110 -0
- package/dist/agent/domain-expertise.js.map +1 -0
- package/dist/agent/executive-queue.d.ts +26 -0
- package/dist/agent/executive-queue.js +50 -0
- package/dist/agent/executive-queue.js.map +1 -0
- package/dist/agent/generational-flush.d.ts +28 -0
- package/dist/agent/generational-flush.js +48 -0
- package/dist/agent/generational-flush.js.map +1 -0
- package/dist/agent/loop-profile.d.ts +50 -0
- package/dist/agent/loop-profile.js +88 -0
- package/dist/agent/loop-profile.js.map +1 -0
- package/dist/agent/loop.d.ts +14 -5
- package/dist/agent/loop.js +167 -39
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/memory-consolidate.d.ts +14 -0
- package/dist/agent/memory-consolidate.js +141 -0
- package/dist/agent/memory-consolidate.js.map +1 -0
- package/dist/agent/mixture.d.ts +33 -0
- package/dist/agent/mixture.js +138 -0
- package/dist/agent/mixture.js.map +1 -0
- package/dist/agent/spawner.js +2 -2
- package/dist/agent/spawner.js.map +1 -1
- package/dist/agent/system-prompt.d.ts +1 -1
- package/dist/agent/system-prompt.js +50 -22
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/agent/unified-memory.d.ts +15 -0
- package/dist/agent/unified-memory.js +164 -0
- package/dist/agent/unified-memory.js.map +1 -0
- package/dist/checkpoints/engine.d.ts +44 -0
- package/dist/checkpoints/engine.js +324 -0
- package/dist/checkpoints/engine.js.map +1 -0
- package/dist/cli/command-palette.d.ts +26 -0
- package/dist/cli/command-palette.js +133 -0
- package/dist/cli/command-palette.js.map +1 -0
- package/dist/cli/context-health.d.ts +51 -0
- package/dist/cli/context-health.js +187 -0
- package/dist/cli/context-health.js.map +1 -0
- package/dist/cli/diamond.d.ts +67 -0
- package/dist/cli/diamond.js +222 -12
- package/dist/cli/diamond.js.map +1 -1
- package/dist/cli/dic.d.ts +2 -0
- package/dist/cli/dic.js +106 -0
- package/dist/cli/dic.js.map +1 -0
- package/dist/cli/diff-view.d.ts +18 -0
- package/dist/cli/diff-view.js +114 -0
- package/dist/cli/diff-view.js.map +1 -0
- package/dist/cli/display.d.ts +18 -4
- package/dist/cli/display.js +74 -151
- package/dist/cli/display.js.map +1 -1
- package/dist/cli/help-data.d.ts +7 -0
- package/dist/cli/help-data.js +80 -0
- package/dist/cli/help-data.js.map +1 -0
- package/dist/cli/index.js +1002 -852
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/markdown.d.ts +5 -0
- package/dist/cli/markdown.js +128 -0
- package/dist/cli/markdown.js.map +1 -0
- package/dist/cli/model-select.d.ts +39 -0
- package/dist/cli/model-select.js +65 -0
- package/dist/cli/model-select.js.map +1 -0
- package/dist/cli/tui.d.ts +34 -0
- package/dist/cli/tui.js +1176 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/config/defaults.d.ts +6 -17
- package/dist/config/defaults.js +25 -46
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/project-config.d.ts +2 -6
- package/dist/config/project-config.js +2 -2
- package/dist/config/project-config.js.map +1 -1
- package/dist/doctor/checks.d.ts +18 -0
- package/dist/doctor/checks.js +524 -0
- package/dist/doctor/checks.js.map +1 -0
- package/dist/doctor/index.d.ts +4 -0
- package/dist/doctor/index.js +229 -0
- package/dist/doctor/index.js.map +1 -0
- package/dist/doctor/repair.d.ts +19 -0
- package/dist/doctor/repair.js +126 -0
- package/dist/doctor/repair.js.map +1 -0
- package/dist/doctor/types.d.ts +38 -0
- package/dist/doctor/types.js +10 -0
- package/dist/doctor/types.js.map +1 -0
- package/dist/dream/dream.d.ts +79 -59
- package/dist/dream/dream.js +324 -144
- package/dist/dream/dream.js.map +1 -1
- package/dist/dream/episode.d.ts +17 -0
- package/dist/dream/episode.js +116 -0
- package/dist/dream/episode.js.map +1 -0
- package/dist/kanban/engine.d.ts +26 -0
- package/dist/kanban/engine.js +208 -0
- package/dist/kanban/engine.js.map +1 -0
- package/dist/kanban/types.d.ts +19 -0
- package/dist/kanban/types.js +9 -1
- package/dist/kanban/types.js.map +1 -1
- package/dist/machina/render-html.js +4 -2
- package/dist/machina/render-html.js.map +1 -1
- package/dist/machina/render-terminal.js +11 -4
- package/dist/machina/render-terminal.js.map +1 -1
- package/dist/machina/repair.d.ts +23 -0
- package/dist/machina/repair.js +98 -0
- package/dist/machina/repair.js.map +1 -0
- package/dist/machina/spec.js +12 -12
- package/dist/machina/spec.js.map +1 -1
- package/dist/machina/verify.d.ts +13 -1
- package/dist/machina/verify.js +12 -2
- package/dist/machina/verify.js.map +1 -1
- package/dist/mining/extract.d.ts +34 -0
- package/dist/mining/extract.js +229 -0
- package/dist/mining/extract.js.map +1 -0
- package/dist/mining/refine.d.ts +28 -0
- package/dist/mining/refine.js +256 -0
- package/dist/mining/refine.js.map +1 -0
- package/dist/perception/extractor.js +5 -3
- package/dist/perception/extractor.js.map +1 -1
- package/dist/perception/graph-store.d.ts +0 -11
- package/dist/perception/graph-store.js +0 -33
- package/dist/perception/graph-store.js.map +1 -1
- package/dist/perception/index.d.ts +1 -1
- package/dist/perception/index.js +1 -2
- package/dist/perception/index.js.map +1 -1
- package/dist/plugins/commands.d.ts +38 -0
- package/dist/plugins/commands.js +134 -0
- package/dist/plugins/commands.js.map +1 -0
- package/dist/plugins/frontmatter.d.ts +14 -0
- package/dist/plugins/frontmatter.js +78 -0
- package/dist/plugins/frontmatter.js.map +1 -0
- package/dist/plugins/hooks.d.ts +12 -0
- package/dist/plugins/hooks.js +148 -0
- package/dist/plugins/hooks.js.map +1 -0
- package/dist/plugins/loader.d.ts +7 -0
- package/dist/plugins/loader.js +255 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/market.d.ts +23 -0
- package/dist/plugins/market.js +281 -0
- package/dist/plugins/market.js.map +1 -0
- package/dist/plugins/types.d.ts +90 -0
- package/dist/plugins/types.js +20 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/providers/anthropic-oauth-draft.d.ts +119 -0
- package/dist/providers/anthropic-oauth-draft.js +414 -0
- package/dist/providers/anthropic-oauth-draft.js.map +1 -0
- package/dist/providers/anthropic.d.ts +4 -1
- package/dist/providers/anthropic.js +35 -7
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/factory.d.ts +43 -19
- package/dist/providers/factory.js +183 -129
- package/dist/providers/factory.js.map +1 -1
- package/dist/providers/google.js +9 -22
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/live-models.d.ts +23 -0
- package/dist/providers/live-models.js +145 -0
- package/dist/providers/live-models.js.map +1 -0
- package/dist/providers/openai-compatible.d.ts +1 -12
- package/dist/providers/openai-compatible.js +71 -108
- package/dist/providers/openai-compatible.js.map +1 -1
- package/dist/providers/resilient-factory.js +1 -1
- package/dist/providers/resilient-factory.js.map +1 -1
- package/dist/repl/queue.d.ts +22 -0
- package/dist/repl/queue.js +165 -0
- package/dist/repl/queue.js.map +1 -0
- package/dist/repl/side-channel.d.ts +23 -0
- package/dist/repl/side-channel.js +63 -0
- package/dist/repl/side-channel.js.map +1 -0
- package/dist/research/council.d.ts +2 -0
- package/dist/research/council.js +29 -4
- package/dist/research/council.js.map +1 -1
- package/dist/ruby/alternator.d.ts +11 -30
- package/dist/ruby/alternator.js +59 -38
- package/dist/ruby/alternator.js.map +1 -1
- package/dist/ruby/episode-capture.d.ts +0 -10
- package/dist/ruby/episode-capture.js +0 -33
- package/dist/ruby/episode-capture.js.map +1 -1
- package/dist/ruby/types.js +1 -1
- package/dist/ruby/types.js.map +1 -1
- package/dist/safety/path-jail.d.ts +17 -0
- package/dist/safety/path-jail.js +100 -0
- package/dist/safety/path-jail.js.map +1 -0
- package/dist/safety/permissions.d.ts +12 -21
- package/dist/safety/permissions.js +81 -216
- package/dist/safety/permissions.js.map +1 -1
- package/dist/safety/ssrf.d.ts +29 -0
- package/dist/safety/ssrf.js +185 -0
- package/dist/safety/ssrf.js.map +1 -0
- package/dist/server/index.js +64 -10
- package/dist/server/index.js.map +1 -1
- package/dist/setup/first-run.d.ts +0 -24
- package/dist/setup/first-run.js +10 -344
- package/dist/setup/first-run.js.map +1 -1
- package/dist/setup/key-store.d.ts +12 -0
- package/dist/setup/key-store.js +108 -0
- package/dist/setup/key-store.js.map +1 -0
- package/dist/setup/provider-registry.js +31 -18
- package/dist/setup/provider-registry.js.map +1 -1
- package/dist/setup/provider-test.d.ts +7 -0
- package/dist/setup/provider-test.js +73 -10
- package/dist/setup/provider-test.js.map +1 -1
- package/dist/setup/provider-wizard.d.ts +4 -1
- package/dist/setup/provider-wizard.js +92 -26
- package/dist/setup/provider-wizard.js.map +1 -1
- package/dist/setup/xiaomi.d.ts +1 -1
- package/dist/setup/xiaomi.js +3 -3
- package/dist/setup/xiaomi.js.map +1 -1
- package/dist/tools/browser.js +14 -10
- package/dist/tools/browser.js.map +1 -1
- package/dist/tools/clipboard.js +7 -1
- package/dist/tools/clipboard.js.map +1 -1
- package/dist/tools/dictate.d.ts +60 -0
- package/dist/tools/dictate.js +983 -0
- package/dist/tools/dictate.js.map +1 -0
- package/dist/tools/dictate_patched.js +1057 -0
- package/dist/tools/edit-file.js +10 -2
- package/dist/tools/edit-file.js.map +1 -1
- package/dist/tools/http-request.js +14 -4
- package/dist/tools/http-request.js.map +1 -1
- package/dist/tools/image-read.js +34 -2
- package/dist/tools/image-read.js.map +1 -1
- package/dist/tools/index.d.ts +16 -1
- package/dist/tools/index.js +59 -8
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mcp.js +12 -0
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/read-file.js +10 -14
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/telegram-audio-policy.d.ts +30 -0
- package/dist/tools/telegram-audio-policy.js +49 -0
- package/dist/tools/telegram-audio-policy.js.map +1 -0
- package/dist/tools/telegram-bot.js +1136 -537
- package/dist/tools/telegram-bot.js.map +1 -1
- package/dist/tools/telegram-voice.d.ts +18 -5
- package/dist/tools/telegram-voice.js +54 -12
- package/dist/tools/telegram-voice.js.map +1 -1
- package/dist/tools/telegram.d.ts +3 -3
- package/dist/tools/telegram.js +5 -84
- package/dist/tools/telegram.js.map +1 -1
- package/dist/tools/tools.d.ts +2 -14
- package/dist/tools/tools.js +79 -144
- package/dist/tools/tools.js.map +1 -1
- package/dist/tools/web-fetch.js +39 -7
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/web-search.d.ts +0 -20
- package/dist/tools/web-search.js +40 -137
- package/dist/tools/web-search.js.map +1 -1
- package/dist/util/errors.js +1 -15
- package/dist/util/errors.js.map +1 -1
- package/dist/util/json-repair.d.ts +11 -0
- package/dist/util/json-repair.js +31 -0
- package/dist/util/json-repair.js.map +1 -0
- package/dist/util/rate-limiter.js +2 -8
- package/dist/util/rate-limiter.js.map +1 -1
- package/dist/viz/index.js +793 -792
- package/dist/viz/index.js.map +1 -1
- package/package.json +12 -32
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.pluginsDir = pluginsDir;
|
|
37
|
+
exports.marketplacesDir = marketplacesDir;
|
|
38
|
+
exports.loadAllPlugins = loadAllPlugins;
|
|
39
|
+
exports.loadPlugin = loadPlugin;
|
|
40
|
+
/**
|
|
41
|
+
* Plugin loader — reads installed plugins (Claude Code format) from
|
|
42
|
+
* ~/.aura/plugins/<name> and parses their commands, agents, skills, and hooks.
|
|
43
|
+
*
|
|
44
|
+
* Loading is tolerant: a malformed file skips that file, a malformed plugin
|
|
45
|
+
* skips that plugin — plugins must never brick the CLI.
|
|
46
|
+
*/
|
|
47
|
+
const fs = __importStar(require("fs"));
|
|
48
|
+
const os = __importStar(require("os"));
|
|
49
|
+
const path = __importStar(require("path"));
|
|
50
|
+
const frontmatter_js_1 = require("./frontmatter.js");
|
|
51
|
+
function pluginsDir() {
|
|
52
|
+
return process.env.AURA_PLUGIN_DIR
|
|
53
|
+
?? path.join(process.env.HOME ?? os.homedir(), '.aura', 'plugins');
|
|
54
|
+
}
|
|
55
|
+
function marketplacesDir() {
|
|
56
|
+
return process.env.AURA_MARKETPLACE_DIR
|
|
57
|
+
?? path.join(process.env.HOME ?? os.homedir(), '.aura', 'marketplaces');
|
|
58
|
+
}
|
|
59
|
+
/** Load every plugin installed in the plugins dir. Never throws. */
|
|
60
|
+
function loadAllPlugins() {
|
|
61
|
+
const dir = pluginsDir();
|
|
62
|
+
let entries;
|
|
63
|
+
try {
|
|
64
|
+
entries = fs.readdirSync(dir).filter(e => {
|
|
65
|
+
try {
|
|
66
|
+
return fs.statSync(path.join(dir, e)).isDirectory();
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
const plugins = [];
|
|
77
|
+
for (const entry of entries.sort()) {
|
|
78
|
+
const plugin = loadPlugin(path.join(dir, entry));
|
|
79
|
+
if (plugin)
|
|
80
|
+
plugins.push(plugin);
|
|
81
|
+
}
|
|
82
|
+
return plugins;
|
|
83
|
+
}
|
|
84
|
+
/** Load a single plugin directory. Returns null when it isn't a plugin. */
|
|
85
|
+
function loadPlugin(dir) {
|
|
86
|
+
let manifest = null;
|
|
87
|
+
try {
|
|
88
|
+
const raw = JSON.parse(fs.readFileSync(path.join(dir, '.claude-plugin', 'plugin.json'), 'utf8'));
|
|
89
|
+
if (typeof raw === 'object' && raw !== null && typeof raw.name === 'string') {
|
|
90
|
+
manifest = {
|
|
91
|
+
name: raw.name,
|
|
92
|
+
version: typeof raw.version === 'string' ? raw.version : undefined,
|
|
93
|
+
description: typeof raw.description === 'string' ? raw.description : undefined,
|
|
94
|
+
author: typeof raw.author === 'string' ? raw.author
|
|
95
|
+
: typeof raw.author?.name === 'string' ? raw.author.name : undefined,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch { /* manifest optional — fall back to dir name */ }
|
|
100
|
+
const name = manifest?.name ?? path.basename(dir);
|
|
101
|
+
const commands = loadCommands(dir, name);
|
|
102
|
+
const agents = loadAgents(dir, name);
|
|
103
|
+
const skills = loadSkills(dir, name);
|
|
104
|
+
const hooks = loadHooks(dir, name);
|
|
105
|
+
const mcpServerCount = countMcpServers(dir);
|
|
106
|
+
// A directory with no manifest and no plugin content isn't a plugin.
|
|
107
|
+
if (!manifest && commands.length === 0 && agents.length === 0 && skills.length === 0 && hooks.length === 0) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
name, path: dir,
|
|
112
|
+
manifest: manifest ?? { name },
|
|
113
|
+
commands, agents, skills, hooks, mcpServerCount,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function mdFilesRecursive(dir, base = dir) {
|
|
117
|
+
let out = [];
|
|
118
|
+
let entries;
|
|
119
|
+
try {
|
|
120
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return [];
|
|
124
|
+
}
|
|
125
|
+
for (const e of entries) {
|
|
126
|
+
const full = path.join(dir, e.name);
|
|
127
|
+
if (e.isDirectory())
|
|
128
|
+
out = out.concat(mdFilesRecursive(full, base));
|
|
129
|
+
else if (e.isFile() && e.name.endsWith('.md'))
|
|
130
|
+
out.push(full);
|
|
131
|
+
}
|
|
132
|
+
return out;
|
|
133
|
+
}
|
|
134
|
+
function loadCommands(pluginDir, pluginName) {
|
|
135
|
+
const dir = path.join(pluginDir, 'commands');
|
|
136
|
+
const out = [];
|
|
137
|
+
for (const file of mdFilesRecursive(dir).sort()) {
|
|
138
|
+
try {
|
|
139
|
+
const { data, body } = (0, frontmatter_js_1.parseFrontmatter)(fs.readFileSync(file, 'utf8'));
|
|
140
|
+
// commands/foo.md → "foo"; commands/git/commit.md → "git:commit"
|
|
141
|
+
const rel = path.relative(dir, file).replace(/\.md$/, '');
|
|
142
|
+
const name = rel.split(path.sep).join(':');
|
|
143
|
+
out.push({
|
|
144
|
+
name, pluginName,
|
|
145
|
+
description: str(data.description),
|
|
146
|
+
argumentHint: str(data['argument-hint']),
|
|
147
|
+
body: body.trim(),
|
|
148
|
+
filePath: file,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
catch { /* skip malformed command file */ }
|
|
152
|
+
}
|
|
153
|
+
return out;
|
|
154
|
+
}
|
|
155
|
+
function loadAgents(pluginDir, pluginName) {
|
|
156
|
+
const dir = path.join(pluginDir, 'agents');
|
|
157
|
+
const out = [];
|
|
158
|
+
for (const file of mdFilesRecursive(dir).sort()) {
|
|
159
|
+
try {
|
|
160
|
+
const { data, body } = (0, frontmatter_js_1.parseFrontmatter)(fs.readFileSync(file, 'utf8'));
|
|
161
|
+
out.push({
|
|
162
|
+
name: str(data.name) ?? path.basename(file, '.md'),
|
|
163
|
+
pluginName,
|
|
164
|
+
description: str(data.description),
|
|
165
|
+
systemPrompt: body.trim(),
|
|
166
|
+
filePath: file,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
catch { /* skip malformed agent file */ }
|
|
170
|
+
}
|
|
171
|
+
return out;
|
|
172
|
+
}
|
|
173
|
+
function loadSkills(pluginDir, pluginName) {
|
|
174
|
+
const dir = path.join(pluginDir, 'skills');
|
|
175
|
+
const out = [];
|
|
176
|
+
let entries;
|
|
177
|
+
try {
|
|
178
|
+
entries = fs.readdirSync(dir);
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
return [];
|
|
182
|
+
}
|
|
183
|
+
for (const entry of entries.sort()) {
|
|
184
|
+
const skillFile = path.join(dir, entry, 'SKILL.md');
|
|
185
|
+
try {
|
|
186
|
+
const { data, body } = (0, frontmatter_js_1.parseFrontmatter)(fs.readFileSync(skillFile, 'utf8'));
|
|
187
|
+
out.push({
|
|
188
|
+
name: str(data.name) ?? entry,
|
|
189
|
+
pluginName,
|
|
190
|
+
description: str(data.description),
|
|
191
|
+
body: body.trim(),
|
|
192
|
+
dir: path.join(dir, entry),
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
catch { /* no SKILL.md or malformed — skip */ }
|
|
196
|
+
}
|
|
197
|
+
return out;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* hooks/hooks.json, Claude Code schema:
|
|
201
|
+
* { "hooks": { "PreToolUse": [ { "matcher": "Bash",
|
|
202
|
+
* "hooks": [ { "type": "command", "command": "…", "timeout": 60 } ] } ] } }
|
|
203
|
+
* Flattened to HookEntry[]. Only PreToolUse/PostToolUse are supported — other
|
|
204
|
+
* events are silently ignored (they have no aura equivalent yet).
|
|
205
|
+
*/
|
|
206
|
+
function loadHooks(pluginDir, pluginName) {
|
|
207
|
+
const out = [];
|
|
208
|
+
let raw;
|
|
209
|
+
try {
|
|
210
|
+
raw = JSON.parse(fs.readFileSync(path.join(pluginDir, 'hooks', 'hooks.json'), 'utf8'));
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
return [];
|
|
214
|
+
}
|
|
215
|
+
const events = raw?.hooks;
|
|
216
|
+
if (typeof events !== 'object' || events === null)
|
|
217
|
+
return [];
|
|
218
|
+
for (const event of ['PreToolUse', 'PostToolUse']) {
|
|
219
|
+
const groups = events[event];
|
|
220
|
+
if (!Array.isArray(groups))
|
|
221
|
+
continue;
|
|
222
|
+
for (const group of groups) {
|
|
223
|
+
if (typeof group !== 'object' || group === null)
|
|
224
|
+
continue;
|
|
225
|
+
const matcher = typeof group.matcher === 'string' ? group.matcher : undefined;
|
|
226
|
+
const hooks = Array.isArray(group.hooks) ? group.hooks : [];
|
|
227
|
+
for (const h of hooks) {
|
|
228
|
+
if (typeof h?.command !== 'string')
|
|
229
|
+
continue;
|
|
230
|
+
out.push({
|
|
231
|
+
event, matcher,
|
|
232
|
+
command: h.command,
|
|
233
|
+
timeout: typeof h.timeout === 'number' ? h.timeout : undefined,
|
|
234
|
+
pluginName,
|
|
235
|
+
pluginRoot: pluginDir,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return out;
|
|
241
|
+
}
|
|
242
|
+
function countMcpServers(pluginDir) {
|
|
243
|
+
try {
|
|
244
|
+
const raw = JSON.parse(fs.readFileSync(path.join(pluginDir, '.mcp.json'), 'utf8'));
|
|
245
|
+
const servers = raw?.mcpServers;
|
|
246
|
+
return typeof servers === 'object' && servers !== null ? Object.keys(servers).length : 0;
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
return 0;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
function str(v) {
|
|
253
|
+
return typeof v === 'string' && v !== '' ? v : undefined;
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,gCAGC;AAED,0CAGC;AAGD,wCAkBC;AAGD,gCAgCC;AAhFD;;;;;;GAMG;AACH,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,qDAAoD;AAMpD,SAAgB,UAAU;IACxB,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe;WAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACvE,CAAC;AAED,SAAgB,eAAe;IAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB;WAClC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;AAC5E,CAAC;AAED,oEAAoE;AACpE,SAAgB,cAAc;IAC5B,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACvC,IAAI,CAAC;gBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAAC,CAAC;YAC5D,MAAM,CAAC;gBAAC,OAAO,KAAK,CAAC;YAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QACjD,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,2EAA2E;AAC3E,SAAgB,UAAU,CAAC,GAAW;IACpC,IAAI,QAAQ,GAA0B,IAAI,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACjG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5E,QAAQ,GAAG;gBACT,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;gBAClE,WAAW,EAAE,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;gBAC9E,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM;oBACjD,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;aACvE,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,+CAA+C,CAAC,CAAC;IAE3D,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAE5C,qEAAqE;IACrE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3G,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI,EAAE,GAAG;QACf,QAAQ,EAAE,QAAQ,IAAI,EAAE,IAAI,EAAE;QAC9B,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc;KAChD,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW,EAAE,IAAI,GAAG,GAAG;IAC/C,IAAI,GAAG,GAAa,EAAE,CAAC;IACvB,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAAC,CAAC;IAC/D,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IACpB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,CAAC,WAAW,EAAE;YAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;aAC/D,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB,EAAE,UAAkB;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAA,iCAAgB,EAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACvE,iEAAiE;YACjE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;gBAClC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACxC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;gBACjB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC,CAAC,iCAAiC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,SAAiB,EAAE,UAAkB;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAA,iCAAgB,EAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACvE,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;gBAClD,UAAU;gBACV,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;gBAClC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE;gBACzB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC,CAAC,+BAA+B,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,SAAiB,EAAE,UAAkB;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IAC3D,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAA,iCAAgB,EAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5E,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK;gBAC7B,UAAU;gBACV,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;gBAClC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;gBACjB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;aAC3B,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC,CAAC,qCAAqC,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,SAAiB,EAAE,UAAkB;IACtD,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,CAAC;IAC/F,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IAEpB,MAAM,MAAM,GAAI,GAA+B,EAAE,KAAK,CAAC;IACvD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE,aAAa,CAAgB,EAAE,CAAC;QACjE,MAAM,MAAM,GAAI,MAAkC,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,SAAS;QACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;gBAAE,SAAS;YAC1D,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9E,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,IAAI,OAAO,CAAC,EAAE,OAAO,KAAK,QAAQ;oBAAE,SAAS;gBAC7C,GAAG,CAAC,IAAI,CAAC;oBACP,KAAK,EAAE,OAAO;oBACd,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;oBAC9D,UAAU;oBACV,UAAU,EAAE,SAAS;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACnF,MAAM,OAAO,GAAG,GAAG,EAAE,UAAU,CAAC;QAChC,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,SAAS,GAAG,CAAC,CAAU;IACrB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { LoadedPlugin, Marketplace } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Register a marketplace from a GitHub shorthand, git URL, or local path.
|
|
4
|
+
* Returns the loaded marketplace.
|
|
5
|
+
*/
|
|
6
|
+
export declare function addMarketplace(source: string): Promise<Marketplace>;
|
|
7
|
+
export declare function listMarketplaces(): Marketplace[];
|
|
8
|
+
export declare function removeMarketplace(name: string): boolean;
|
|
9
|
+
export interface InstallResult {
|
|
10
|
+
plugin: LoadedPlugin;
|
|
11
|
+
/** Notes worth surfacing (e.g. unsupported MCP servers). */
|
|
12
|
+
warnings: string[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Install a plugin. Accepted specs:
|
|
16
|
+
* "name@marketplace" — from a registered marketplace
|
|
17
|
+
* "name" — from any registered marketplace that has it
|
|
18
|
+
* "owner/repo" — GitHub repo containing a plugin
|
|
19
|
+
* git URL — same
|
|
20
|
+
* local path — directory containing a plugin
|
|
21
|
+
*/
|
|
22
|
+
export declare function installPlugin(spec: string): Promise<InstallResult>;
|
|
23
|
+
export declare function removePlugin(name: string): boolean;
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.addMarketplace = addMarketplace;
|
|
37
|
+
exports.listMarketplaces = listMarketplaces;
|
|
38
|
+
exports.removeMarketplace = removeMarketplace;
|
|
39
|
+
exports.installPlugin = installPlugin;
|
|
40
|
+
exports.removePlugin = removePlugin;
|
|
41
|
+
/**
|
|
42
|
+
* Plugin marketplaces & installation — Claude Code compatible.
|
|
43
|
+
*
|
|
44
|
+
* A marketplace is a git repo containing .claude-plugin/marketplace.json:
|
|
45
|
+
* { "name": "...", "owner": {...}, "plugins": [ {"name", "source", ...} ] }
|
|
46
|
+
*
|
|
47
|
+
* Sources we resolve (the formats found across published marketplaces):
|
|
48
|
+
* "./plugins/foo" — path inside the marketplace repo
|
|
49
|
+
* "owner/repo" — GitHub shorthand
|
|
50
|
+
* "https://…/repo.git" — any git URL
|
|
51
|
+
* { "source": "github", "repo": "o/r" } — object form
|
|
52
|
+
* { "source": "git", "url": "…" }
|
|
53
|
+
* { "source": "path"|"local", "path": "…" }— path inside the marketplace repo
|
|
54
|
+
*
|
|
55
|
+
* Layout on disk:
|
|
56
|
+
* ~/.aura/marketplaces/<name> — cloned marketplace repos
|
|
57
|
+
* ~/.aura/plugins/<name> — installed plugins (self-contained copies)
|
|
58
|
+
*/
|
|
59
|
+
const child_process_1 = require("child_process");
|
|
60
|
+
const fs = __importStar(require("fs"));
|
|
61
|
+
const os = __importStar(require("os"));
|
|
62
|
+
const path = __importStar(require("path"));
|
|
63
|
+
const loader_js_1 = require("./loader.js");
|
|
64
|
+
function run(cmd, args, cwd) {
|
|
65
|
+
return new Promise((resolve, reject) => {
|
|
66
|
+
(0, child_process_1.execFile)(cmd, args, { cwd, maxBuffer: 16 * 1024 * 1024, timeout: 120_000 }, (err, stdout, stderr) => {
|
|
67
|
+
if (err)
|
|
68
|
+
reject(new Error(stderr.trim() || err.message));
|
|
69
|
+
else
|
|
70
|
+
resolve(stdout);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
function gitUrlFor(source) {
|
|
75
|
+
if (/^(https?|git|ssh|file):\/\//.test(source) || source.endsWith('.git'))
|
|
76
|
+
return source;
|
|
77
|
+
if (/^[\w.-]+\/[\w.-]+$/.test(source))
|
|
78
|
+
return `https://github.com/${source}.git`;
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
async function cloneTo(url, dest) {
|
|
82
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
83
|
+
await run('git', ['clone', '--depth', '1', '--quiet', url, dest]);
|
|
84
|
+
// The clone is a snapshot install, not a working checkout — drop .git so
|
|
85
|
+
// installed plugins are plain directories (update = reinstall).
|
|
86
|
+
fs.rmSync(path.join(dest, '.git'), { recursive: true, force: true });
|
|
87
|
+
}
|
|
88
|
+
function copyDir(src, dest) {
|
|
89
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
90
|
+
fs.cpSync(src, dest, { recursive: true });
|
|
91
|
+
fs.rmSync(path.join(dest, '.git'), { recursive: true, force: true });
|
|
92
|
+
}
|
|
93
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
94
|
+
// Marketplaces
|
|
95
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
96
|
+
function readMarketplaceJson(dir) {
|
|
97
|
+
try {
|
|
98
|
+
const raw = JSON.parse(fs.readFileSync(path.join(dir, '.claude-plugin', 'marketplace.json'), 'utf8'));
|
|
99
|
+
if (typeof raw?.name !== 'string')
|
|
100
|
+
return null;
|
|
101
|
+
const plugins = Array.isArray(raw.plugins)
|
|
102
|
+
? raw.plugins
|
|
103
|
+
.filter((p) => typeof p === 'object' && p !== null && typeof p.name === 'string')
|
|
104
|
+
.map((p) => ({
|
|
105
|
+
name: p.name,
|
|
106
|
+
description: typeof p.description === 'string' ? p.description : undefined,
|
|
107
|
+
source: p.source,
|
|
108
|
+
}))
|
|
109
|
+
: [];
|
|
110
|
+
return { name: raw.name, description: typeof raw.description === 'string' ? raw.description : undefined, plugins };
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Register a marketplace from a GitHub shorthand, git URL, or local path.
|
|
118
|
+
* Returns the loaded marketplace.
|
|
119
|
+
*/
|
|
120
|
+
async function addMarketplace(source) {
|
|
121
|
+
const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'aura-market-'));
|
|
122
|
+
const staging = path.join(tmp, 'repo');
|
|
123
|
+
try {
|
|
124
|
+
const url = gitUrlFor(source);
|
|
125
|
+
if (url && !fs.existsSync(source)) {
|
|
126
|
+
await cloneTo(url, staging);
|
|
127
|
+
}
|
|
128
|
+
else if (fs.existsSync(source) && fs.statSync(source).isDirectory()) {
|
|
129
|
+
copyDir(path.resolve(source), staging);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
throw new Error(`Not a git repo shorthand, URL, or local directory: ${source}`);
|
|
133
|
+
}
|
|
134
|
+
const meta = readMarketplaceJson(staging);
|
|
135
|
+
if (!meta) {
|
|
136
|
+
throw new Error('No valid .claude-plugin/marketplace.json found — is this a marketplace repo? (To install a single plugin, use: aura --plugin install <source>)');
|
|
137
|
+
}
|
|
138
|
+
const dest = path.join((0, loader_js_1.marketplacesDir)(), meta.name);
|
|
139
|
+
fs.rmSync(dest, { recursive: true, force: true });
|
|
140
|
+
copyDir(staging, dest);
|
|
141
|
+
return { name: meta.name, path: dest, description: meta.description, plugins: meta.plugins };
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
fs.rmSync(tmp, { recursive: true, force: true });
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
function listMarketplaces() {
|
|
148
|
+
const dir = (0, loader_js_1.marketplacesDir)();
|
|
149
|
+
let entries;
|
|
150
|
+
try {
|
|
151
|
+
entries = fs.readdirSync(dir);
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return [];
|
|
155
|
+
}
|
|
156
|
+
const out = [];
|
|
157
|
+
for (const entry of entries.sort()) {
|
|
158
|
+
const mDir = path.join(dir, entry);
|
|
159
|
+
const meta = readMarketplaceJson(mDir);
|
|
160
|
+
if (meta)
|
|
161
|
+
out.push({ name: meta.name, path: mDir, description: meta.description, plugins: meta.plugins });
|
|
162
|
+
}
|
|
163
|
+
return out;
|
|
164
|
+
}
|
|
165
|
+
function removeMarketplace(name) {
|
|
166
|
+
const dir = path.join((0, loader_js_1.marketplacesDir)(), name);
|
|
167
|
+
if (!fs.existsSync(dir))
|
|
168
|
+
return false;
|
|
169
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Install a plugin. Accepted specs:
|
|
174
|
+
* "name@marketplace" — from a registered marketplace
|
|
175
|
+
* "name" — from any registered marketplace that has it
|
|
176
|
+
* "owner/repo" — GitHub repo containing a plugin
|
|
177
|
+
* git URL — same
|
|
178
|
+
* local path — directory containing a plugin
|
|
179
|
+
*/
|
|
180
|
+
async function installPlugin(spec) {
|
|
181
|
+
// name@marketplace / bare marketplace name
|
|
182
|
+
const at = spec.indexOf('@');
|
|
183
|
+
if (at > 0 || (!spec.includes('/') && !fs.existsSync(spec))) {
|
|
184
|
+
const pluginName = at > 0 ? spec.slice(0, at) : spec;
|
|
185
|
+
const marketName = at > 0 ? spec.slice(at + 1) : undefined;
|
|
186
|
+
return installFromMarketplace(pluginName, marketName);
|
|
187
|
+
}
|
|
188
|
+
// Local path
|
|
189
|
+
if (fs.existsSync(spec) && fs.statSync(spec).isDirectory()) {
|
|
190
|
+
return finalizeInstall(path.resolve(spec), 'copy');
|
|
191
|
+
}
|
|
192
|
+
// GitHub shorthand or git URL
|
|
193
|
+
const url = gitUrlFor(spec);
|
|
194
|
+
if (!url)
|
|
195
|
+
throw new Error(`Unrecognized plugin source: ${spec}`);
|
|
196
|
+
const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'aura-plugin-'));
|
|
197
|
+
try {
|
|
198
|
+
const staging = path.join(tmp, 'repo');
|
|
199
|
+
await cloneTo(url, staging);
|
|
200
|
+
return finalizeInstall(staging, 'move');
|
|
201
|
+
}
|
|
202
|
+
finally {
|
|
203
|
+
fs.rmSync(tmp, { recursive: true, force: true });
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
async function installFromMarketplace(pluginName, marketName) {
|
|
207
|
+
const markets = listMarketplaces();
|
|
208
|
+
if (markets.length === 0) {
|
|
209
|
+
throw new Error('No marketplaces registered. Add one first: aura --plugin marketplace add <owner/repo>');
|
|
210
|
+
}
|
|
211
|
+
const candidates = markets
|
|
212
|
+
.filter(m => !marketName || m.name === marketName)
|
|
213
|
+
.map(m => ({ market: m, entry: m.plugins.find(p => p.name === pluginName) }))
|
|
214
|
+
.filter((c) => !!c.entry);
|
|
215
|
+
if (marketName && !markets.some(m => m.name === marketName)) {
|
|
216
|
+
throw new Error(`Marketplace not registered: ${marketName}`);
|
|
217
|
+
}
|
|
218
|
+
if (candidates.length === 0) {
|
|
219
|
+
throw new Error(`Plugin "${pluginName}" not found in ${marketName ?? 'any registered marketplace'}.`);
|
|
220
|
+
}
|
|
221
|
+
if (candidates.length > 1) {
|
|
222
|
+
throw new Error(`Plugin "${pluginName}" exists in multiple marketplaces (${candidates.map(c => c.market.name).join(', ')}) — use name@marketplace.`);
|
|
223
|
+
}
|
|
224
|
+
const { market, entry } = candidates[0];
|
|
225
|
+
const src = entry.source;
|
|
226
|
+
// Path inside the marketplace repo (string "./…" or object {source: path|local})
|
|
227
|
+
const relPath = typeof src === 'string' && !gitUrlFor(src) ? src
|
|
228
|
+
: typeof src === 'object' && src !== null && ['path', 'local'].includes(String(src.source))
|
|
229
|
+
? String(src.path ?? '')
|
|
230
|
+
: null;
|
|
231
|
+
if (relPath) {
|
|
232
|
+
const abs = path.resolve(market.path, relPath);
|
|
233
|
+
if (!abs.startsWith(fs.realpathSync(market.path) + path.sep) && abs !== fs.realpathSync(market.path)) {
|
|
234
|
+
throw new Error(`Marketplace entry escapes its repo: ${relPath}`);
|
|
235
|
+
}
|
|
236
|
+
if (!fs.existsSync(abs))
|
|
237
|
+
throw new Error(`Marketplace entry path missing: ${relPath}`);
|
|
238
|
+
return finalizeInstall(abs, 'copy', pluginName);
|
|
239
|
+
}
|
|
240
|
+
// Remote source: "owner/repo" string, {source: github, repo}, {source: git|url, url}
|
|
241
|
+
const url = typeof src === 'string' ? gitUrlFor(src)
|
|
242
|
+
: typeof src === 'object' && src !== null
|
|
243
|
+
? gitUrlFor(String(src.repo ?? src.url ?? ''))
|
|
244
|
+
: null;
|
|
245
|
+
if (!url)
|
|
246
|
+
throw new Error(`Unsupported source format for "${pluginName}" in marketplace ${market.name}.`);
|
|
247
|
+
const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'aura-plugin-'));
|
|
248
|
+
try {
|
|
249
|
+
const staging = path.join(tmp, 'repo');
|
|
250
|
+
await cloneTo(url, staging);
|
|
251
|
+
return finalizeInstall(staging, 'move', pluginName);
|
|
252
|
+
}
|
|
253
|
+
finally {
|
|
254
|
+
fs.rmSync(tmp, { recursive: true, force: true });
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/** Validate the staged plugin, copy it into pluginsDir under its real name. */
|
|
258
|
+
function finalizeInstall(stagingDir, mode, fallbackName) {
|
|
259
|
+
const probe = (0, loader_js_1.loadPlugin)(stagingDir);
|
|
260
|
+
if (!probe) {
|
|
261
|
+
throw new Error('Directory contains no plugin (no .claude-plugin/plugin.json, commands/, agents/, skills/, or hooks/).');
|
|
262
|
+
}
|
|
263
|
+
const name = probe.manifest.name ?? fallbackName ?? path.basename(stagingDir);
|
|
264
|
+
const dest = path.join((0, loader_js_1.pluginsDir)(), name);
|
|
265
|
+
fs.rmSync(dest, { recursive: true, force: true });
|
|
266
|
+
copyDir(stagingDir, dest);
|
|
267
|
+
const plugin = (0, loader_js_1.loadPlugin)(dest);
|
|
268
|
+
const warnings = [];
|
|
269
|
+
if (plugin.mcpServerCount > 0) {
|
|
270
|
+
warnings.push(`declares ${plugin.mcpServerCount} MCP server(s) — aura has no MCP client yet, those are ignored.`);
|
|
271
|
+
}
|
|
272
|
+
return { plugin, warnings };
|
|
273
|
+
}
|
|
274
|
+
function removePlugin(name) {
|
|
275
|
+
const dir = path.join((0, loader_js_1.pluginsDir)(), name);
|
|
276
|
+
if (!fs.existsSync(dir))
|
|
277
|
+
return false;
|
|
278
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
279
|
+
return true;
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=market.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../src/plugins/market.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkFA,wCAyBC;AAED,4CAWC;AAED,8CAKC;AAoBD,sCAyBC;AA8ED,oCAKC;AA/PD;;;;;;;;;;;;;;;;;GAiBG;AACH,iDAAyC;AACzC,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,2CAAsE;AAGtE,SAAS,GAAG,CAAC,GAAW,EAAE,IAAc,EAAE,GAAY;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAA,wBAAQ,EAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAClG,IAAI,GAAG;gBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;;gBACpD,OAAO,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,MAAc;IAC/B,IAAI,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACzF,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,sBAAsB,MAAM,MAAM,CAAC;IACjF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,IAAY;IAC9C,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAClE,yEAAyE;IACzE,gEAAgE;IAChE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,OAAO,CAAC,GAAW,EAAE,IAAY;IACxC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACtG,IAAI,OAAO,GAAG,EAAE,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC/C,MAAM,OAAO,GAA6B,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAClE,CAAC,CAAC,GAAG,CAAC,OAAO;iBACR,MAAM,CAAC,CAAC,CAAU,EAAgC,EAAE,CACnD,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,OAAQ,CAA6B,CAAC,IAAI,KAAK,QAAQ,CAAC;iBAChG,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC;gBACpC,IAAI,EAAE,CAAC,CAAC,IAAc;gBACtB,WAAW,EAAE,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;gBAC1E,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAC;YACP,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;IACrH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,cAAc,CAAC,MAAc;IACjD,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,sDAAsD,MAAM,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,gJAAgJ,CAAC,CAAC;QACpK,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,2BAAe,GAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAC/F,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB;IAC9B,MAAM,GAAG,GAAG,IAAA,2BAAe,GAAE,CAAC;IAC9B,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IAC3D,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,2BAAe,GAAE,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC;AAYD;;;;;;;GAOG;AACI,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,2CAA2C;IAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,MAAM,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,OAAO,sBAAsB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,aAAa;IACb,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3D,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,8BAA8B;IAC9B,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5B,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,UAAkB,EAAE,UAAmB;IAC3E,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;IAC3G,CAAC;IAED,MAAM,UAAU,GAAG,OAAO;SACvB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;SACjD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;SAC5E,MAAM,CAAC,CAAC,CAAC,EAA+D,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEzF,IAAI,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,kBAAkB,UAAU,IAAI,4BAA4B,GAAG,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,sCAAsC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACvJ,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IAEzB,iFAAiF;IACjF,MAAM,OAAO,GACX,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;QAChD,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAE,GAA+B,CAAC,MAAM,CAAC,CAAC;YACtH,CAAC,CAAC,MAAM,CAAE,GAA+B,CAAC,IAAI,IAAI,EAAE,CAAC;YACrD,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACrG,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;QACvF,OAAO,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,qFAAqF;IACrF,MAAM,GAAG,GACP,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;QACxC,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;YACvC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAE,GAA+B,CAAC,IAAI,IAAK,GAA+B,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YACxG,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,UAAU,oBAAoB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IAE1G,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5B,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACtD,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,SAAS,eAAe,CAAC,UAAkB,EAAE,IAAqB,EAAE,YAAqB;IACvF,MAAM,KAAK,GAAG,IAAA,sBAAU,EAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,uGAAuG,CAAC,CAAC;IAC3H,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,sBAAU,GAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAE1B,MAAM,MAAM,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAE,CAAC;IACjC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,cAAc,iEAAiE,CAAC,CAAC;IACpH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED,SAAgB,YAAY,CAAC,IAAY;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,sBAAU,GAAE,EAAE,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC"}
|