@eminent337/aery 0.1.20 → 0.1.22
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.
|
@@ -615,6 +615,8 @@ export class InteractiveMode {
|
|
|
615
615
|
// Fresh install - record the version, send telemetry, don't show changelog
|
|
616
616
|
this.settingsManager.setLastChangelogVersion(VERSION);
|
|
617
617
|
this.reportInstallTelemetry(VERSION);
|
|
618
|
+
// Auto-install core extension pack on fresh install
|
|
619
|
+
this.installCorePackIfNeeded();
|
|
618
620
|
return undefined;
|
|
619
621
|
}
|
|
620
622
|
const newEntries = getNewEntries(entries, lastVersion);
|
|
@@ -638,6 +640,41 @@ export class InteractiveMode {
|
|
|
638
640
|
.then(() => undefined)
|
|
639
641
|
.catch(() => undefined);
|
|
640
642
|
}
|
|
643
|
+
installCorePackIfNeeded() {
|
|
644
|
+
// Fire-and-forget: install core extension pack on fresh install
|
|
645
|
+
void (async () => {
|
|
646
|
+
try {
|
|
647
|
+
const { execFile } = await import("node:child_process");
|
|
648
|
+
const { promisify } = await import("node:util");
|
|
649
|
+
const { existsSync, readFileSync, writeFileSync } = await import("node:fs");
|
|
650
|
+
const { join } = await import("node:path");
|
|
651
|
+
const { homedir } = await import("node:os");
|
|
652
|
+
const exec = promisify(execFile);
|
|
653
|
+
await exec("aery", ["install", "https://github.com/eminent337/aery-extensions"], {
|
|
654
|
+
timeout: 30000,
|
|
655
|
+
});
|
|
656
|
+
// Wire core extensions into settings.json
|
|
657
|
+
const repoPath = join(homedir(), ".aery", "agent", "git", "github.com", "eminent337", "aery-extensions");
|
|
658
|
+
const settingsPath = join(homedir(), ".aery", "agent", "settings.json");
|
|
659
|
+
const CORE = ["auto-compact", "damage-control", "provider-profiles", "model-failover", "web-search", "web-fetch", "commands", "hooks", "circuit-breaker", "auto-router", "memory-include", "aery-header", "aery-footer"];
|
|
660
|
+
if (existsSync(settingsPath)) {
|
|
661
|
+
const settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
|
|
662
|
+
const existing = new Set(settings.extensions || []);
|
|
663
|
+
for (const ext of CORE) {
|
|
664
|
+
const p = join(repoPath, "core", ext + ".ts");
|
|
665
|
+
if (existsSync(p) && !existing.has(p)) {
|
|
666
|
+
settings.extensions = settings.extensions || [];
|
|
667
|
+
settings.extensions.push(p);
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
catch {
|
|
674
|
+
// Silent fail — user can install manually
|
|
675
|
+
}
|
|
676
|
+
})();
|
|
677
|
+
}
|
|
641
678
|
getMarkdownThemeWithSettings() {
|
|
642
679
|
return {
|
|
643
680
|
...getMarkdownTheme(),
|