@made-by-moonlight/athene-cli 0.9.2
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/LICENSE +22 -0
- package/dist/assets/plugin-registry.json +67 -0
- package/dist/assets/scripts/athene-doctor.ps1 +352 -0
- package/dist/assets/scripts/athene-doctor.sh +552 -0
- package/dist/assets/scripts/athene-update.ps1 +224 -0
- package/dist/assets/scripts/athene-update.sh +252 -0
- package/dist/commands/completion.d.ts +3 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +26 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/config.d.ts +11 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +89 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/dashboard.d.ts +3 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +103 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +329 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/events.d.ts +3 -0
- package/dist/commands/events.d.ts.map +1 -0
- package/dist/commands/events.js +172 -0
- package/dist/commands/events.js.map +1 -0
- package/dist/commands/migrate-storage.d.ts +3 -0
- package/dist/commands/migrate-storage.d.ts.map +1 -0
- package/dist/commands/migrate-storage.js +78 -0
- package/dist/commands/migrate-storage.js.map +1 -0
- package/dist/commands/notify.d.ts +3 -0
- package/dist/commands/notify.d.ts.map +1 -0
- package/dist/commands/notify.js +143 -0
- package/dist/commands/notify.js.map +1 -0
- package/dist/commands/open.d.ts +3 -0
- package/dist/commands/open.d.ts.map +1 -0
- package/dist/commands/open.js +167 -0
- package/dist/commands/open.js.map +1 -0
- package/dist/commands/plugin.d.ts +3 -0
- package/dist/commands/plugin.d.ts.map +1 -0
- package/dist/commands/plugin.js +462 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/project.d.ts +3 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +143 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/report.d.ts +19 -0
- package/dist/commands/report.d.ts.map +1 -0
- package/dist/commands/report.js +114 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/commands/review-check.d.ts +3 -0
- package/dist/commands/review-check.d.ts.map +1 -0
- package/dist/commands/review-check.js +122 -0
- package/dist/commands/review-check.js.map +1 -0
- package/dist/commands/review.d.ts +3 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +215 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/send.d.ts +3 -0
- package/dist/commands/send.d.ts.map +1 -0
- package/dist/commands/send.js +187 -0
- package/dist/commands/send.js.map +1 -0
- package/dist/commands/session.d.ts +3 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +439 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup.d.ts +5 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +297 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/spawn.d.ts +4 -0
- package/dist/commands/spawn.d.ts.map +1 -0
- package/dist/commands/spawn.js +436 -0
- package/dist/commands/spawn.js.map +1 -0
- package/dist/commands/start.d.ts +21 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +1836 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +556 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update.d.ts +15 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +652 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/verify.d.ts +3 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +131 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/bun-tmp-janitor.d.ts +18 -0
- package/dist/lib/bun-tmp-janitor.d.ts.map +1 -0
- package/dist/lib/bun-tmp-janitor.js +127 -0
- package/dist/lib/bun-tmp-janitor.js.map +1 -0
- package/dist/lib/caller-context.d.ts +13 -0
- package/dist/lib/caller-context.d.ts.map +1 -0
- package/dist/lib/caller-context.js +20 -0
- package/dist/lib/caller-context.js.map +1 -0
- package/dist/lib/cli-errors.d.ts +8 -0
- package/dist/lib/cli-errors.d.ts.map +1 -0
- package/dist/lib/cli-errors.js +20 -0
- package/dist/lib/cli-errors.js.map +1 -0
- package/dist/lib/completion.d.ts +13 -0
- package/dist/lib/completion.d.ts.map +1 -0
- package/dist/lib/completion.js +428 -0
- package/dist/lib/completion.js.map +1 -0
- package/dist/lib/composio-setup.d.ts +65 -0
- package/dist/lib/composio-setup.d.ts.map +1 -0
- package/dist/lib/composio-setup.js +3255 -0
- package/dist/lib/composio-setup.js.map +1 -0
- package/dist/lib/config-instruction.d.ts +2 -0
- package/dist/lib/config-instruction.d.ts.map +1 -0
- package/dist/lib/config-instruction.js +193 -0
- package/dist/lib/config-instruction.js.map +1 -0
- package/dist/lib/constants.d.ts +3 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +3 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/create-session-manager.d.ts +26 -0
- package/dist/lib/create-session-manager.d.ts.map +1 -0
- package/dist/lib/create-session-manager.js +55 -0
- package/dist/lib/create-session-manager.js.map +1 -0
- package/dist/lib/credential-resolver.d.ts +37 -0
- package/dist/lib/credential-resolver.d.ts.map +1 -0
- package/dist/lib/credential-resolver.js +105 -0
- package/dist/lib/credential-resolver.js.map +1 -0
- package/dist/lib/daemon.d.ts +69 -0
- package/dist/lib/daemon.d.ts.map +1 -0
- package/dist/lib/daemon.js +77 -0
- package/dist/lib/daemon.js.map +1 -0
- package/dist/lib/dashboard-rebuild.d.ts +53 -0
- package/dist/lib/dashboard-rebuild.d.ts.map +1 -0
- package/dist/lib/dashboard-rebuild.js +188 -0
- package/dist/lib/dashboard-rebuild.js.map +1 -0
- package/dist/lib/dashboard-setup.d.ts +14 -0
- package/dist/lib/dashboard-setup.d.ts.map +1 -0
- package/dist/lib/dashboard-setup.js +192 -0
- package/dist/lib/dashboard-setup.js.map +1 -0
- package/dist/lib/dashboard-url.d.ts +19 -0
- package/dist/lib/dashboard-url.d.ts.map +1 -0
- package/dist/lib/dashboard-url.js +25 -0
- package/dist/lib/dashboard-url.js.map +1 -0
- package/dist/lib/desktop-setup.d.ts +21 -0
- package/dist/lib/desktop-setup.d.ts.map +1 -0
- package/dist/lib/desktop-setup.js +556 -0
- package/dist/lib/desktop-setup.js.map +1 -0
- package/dist/lib/detect-agent.d.ts +24 -0
- package/dist/lib/detect-agent.d.ts.map +1 -0
- package/dist/lib/detect-agent.js +69 -0
- package/dist/lib/detect-agent.js.map +1 -0
- package/dist/lib/detect-env.d.ts +14 -0
- package/dist/lib/detect-env.d.ts.map +1 -0
- package/dist/lib/detect-env.js +46 -0
- package/dist/lib/detect-env.js.map +1 -0
- package/dist/lib/discord-setup.d.ts +20 -0
- package/dist/lib/discord-setup.d.ts.map +1 -0
- package/dist/lib/discord-setup.js +584 -0
- package/dist/lib/discord-setup.js.map +1 -0
- package/dist/lib/format.d.ts +11 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/format.js +116 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/git-utils.d.ts +14 -0
- package/dist/lib/git-utils.d.ts.map +1 -0
- package/dist/lib/git-utils.js +45 -0
- package/dist/lib/git-utils.js.map +1 -0
- package/dist/lib/install-helpers.d.ts +24 -0
- package/dist/lib/install-helpers.d.ts.map +1 -0
- package/dist/lib/install-helpers.js +76 -0
- package/dist/lib/install-helpers.js.map +1 -0
- package/dist/lib/lifecycle-service.d.ts +11 -0
- package/dist/lib/lifecycle-service.d.ts.map +1 -0
- package/dist/lib/lifecycle-service.js +65 -0
- package/dist/lib/lifecycle-service.js.map +1 -0
- package/dist/lib/notifier-routing.d.ts +35 -0
- package/dist/lib/notifier-routing.d.ts.map +1 -0
- package/dist/lib/notifier-routing.js +133 -0
- package/dist/lib/notifier-routing.js.map +1 -0
- package/dist/lib/notify-test.d.ts +72 -0
- package/dist/lib/notify-test.d.ts.map +1 -0
- package/dist/lib/notify-test.js +674 -0
- package/dist/lib/notify-test.js.map +1 -0
- package/dist/lib/openclaw-probe.d.ts +38 -0
- package/dist/lib/openclaw-probe.d.ts.map +1 -0
- package/dist/lib/openclaw-probe.js +146 -0
- package/dist/lib/openclaw-probe.js.map +1 -0
- package/dist/lib/openclaw-setup.d.ts +19 -0
- package/dist/lib/openclaw-setup.d.ts.map +1 -0
- package/dist/lib/openclaw-setup.js +684 -0
- package/dist/lib/openclaw-setup.js.map +1 -0
- package/dist/lib/path-equality.d.ts +29 -0
- package/dist/lib/path-equality.d.ts.map +1 -0
- package/dist/lib/path-equality.js +52 -0
- package/dist/lib/path-equality.js.map +1 -0
- package/dist/lib/plugin-marketplace.d.ts +24 -0
- package/dist/lib/plugin-marketplace.d.ts.map +1 -0
- package/dist/lib/plugin-marketplace.js +175 -0
- package/dist/lib/plugin-marketplace.js.map +1 -0
- package/dist/lib/plugin-scaffold.d.ts +14 -0
- package/dist/lib/plugin-scaffold.d.ts.map +1 -0
- package/dist/lib/plugin-scaffold.js +174 -0
- package/dist/lib/plugin-scaffold.js.map +1 -0
- package/dist/lib/plugin-store.d.ts +9 -0
- package/dist/lib/plugin-store.d.ts.map +1 -0
- package/dist/lib/plugin-store.js +121 -0
- package/dist/lib/plugin-store.js.map +1 -0
- package/dist/lib/plugins.d.ts +17 -0
- package/dist/lib/plugins.d.ts.map +1 -0
- package/dist/lib/plugins.js +65 -0
- package/dist/lib/plugins.js.map +1 -0
- package/dist/lib/portfolio-display.d.ts +10 -0
- package/dist/lib/portfolio-display.d.ts.map +1 -0
- package/dist/lib/portfolio-display.js +17 -0
- package/dist/lib/portfolio-display.js.map +1 -0
- package/dist/lib/preflight.d.ts +27 -0
- package/dist/lib/preflight.d.ts.map +1 -0
- package/dist/lib/preflight.js +77 -0
- package/dist/lib/preflight.js.map +1 -0
- package/dist/lib/prevent-sleep.d.ts +34 -0
- package/dist/lib/prevent-sleep.d.ts.map +1 -0
- package/dist/lib/prevent-sleep.js +65 -0
- package/dist/lib/prevent-sleep.js.map +1 -0
- package/dist/lib/project-detection.d.ts +11 -0
- package/dist/lib/project-detection.d.ts.map +1 -0
- package/dist/lib/project-detection.js +206 -0
- package/dist/lib/project-detection.js.map +1 -0
- package/dist/lib/project-resolution.d.ts +10 -0
- package/dist/lib/project-resolution.d.ts.map +1 -0
- package/dist/lib/project-resolution.js +17 -0
- package/dist/lib/project-resolution.js.map +1 -0
- package/dist/lib/project-supervisor.d.ts +28 -0
- package/dist/lib/project-supervisor.d.ts.map +1 -0
- package/dist/lib/project-supervisor.js +167 -0
- package/dist/lib/project-supervisor.js.map +1 -0
- package/dist/lib/prompts.d.ts +7 -0
- package/dist/lib/prompts.d.ts.map +1 -0
- package/dist/lib/prompts.js +37 -0
- package/dist/lib/prompts.js.map +1 -0
- package/dist/lib/repo-utils.d.ts +16 -0
- package/dist/lib/repo-utils.d.ts.map +1 -0
- package/dist/lib/repo-utils.js +26 -0
- package/dist/lib/repo-utils.js.map +1 -0
- package/dist/lib/resolve-project.d.ts +113 -0
- package/dist/lib/resolve-project.d.ts.map +1 -0
- package/dist/lib/resolve-project.js +433 -0
- package/dist/lib/resolve-project.js.map +1 -0
- package/dist/lib/routes.d.ts +2 -0
- package/dist/lib/routes.d.ts.map +1 -0
- package/dist/lib/routes.js +5 -0
- package/dist/lib/routes.js.map +1 -0
- package/dist/lib/running-state.d.ts +76 -0
- package/dist/lib/running-state.d.ts.map +1 -0
- package/dist/lib/running-state.js +338 -0
- package/dist/lib/running-state.js.map +1 -0
- package/dist/lib/script-runner.d.ts +10 -0
- package/dist/lib/script-runner.d.ts.map +1 -0
- package/dist/lib/script-runner.js +189 -0
- package/dist/lib/script-runner.js.map +1 -0
- package/dist/lib/session-utils.d.ts +14 -0
- package/dist/lib/session-utils.d.ts.map +1 -0
- package/dist/lib/session-utils.js +58 -0
- package/dist/lib/session-utils.js.map +1 -0
- package/dist/lib/shell.d.ts +17 -0
- package/dist/lib/shell.d.ts.map +1 -0
- package/dist/lib/shell.js +90 -0
- package/dist/lib/shell.js.map +1 -0
- package/dist/lib/shutdown.d.ts +30 -0
- package/dist/lib/shutdown.d.ts.map +1 -0
- package/dist/lib/shutdown.js +177 -0
- package/dist/lib/shutdown.js.map +1 -0
- package/dist/lib/slack-setup.d.ts +17 -0
- package/dist/lib/slack-setup.d.ts.map +1 -0
- package/dist/lib/slack-setup.js +485 -0
- package/dist/lib/slack-setup.js.map +1 -0
- package/dist/lib/startup-preflight.d.ts +36 -0
- package/dist/lib/startup-preflight.d.ts.map +1 -0
- package/dist/lib/startup-preflight.js +273 -0
- package/dist/lib/startup-preflight.js.map +1 -0
- package/dist/lib/update-channel-onboarding.d.ts +52 -0
- package/dist/lib/update-channel-onboarding.d.ts.map +1 -0
- package/dist/lib/update-channel-onboarding.js +107 -0
- package/dist/lib/update-channel-onboarding.js.map +1 -0
- package/dist/lib/update-check.d.ts +161 -0
- package/dist/lib/update-check.d.ts.map +1 -0
- package/dist/lib/update-check.js +504 -0
- package/dist/lib/update-check.js.map +1 -0
- package/dist/lib/web-dir.d.ts +47 -0
- package/dist/lib/web-dir.d.ts.map +1 -0
- package/dist/lib/web-dir.js +179 -0
- package/dist/lib/web-dir.js.map +1 -0
- package/dist/lib/webhook-setup.d.ts +16 -0
- package/dist/lib/webhook-setup.d.ts.map +1 -0
- package/dist/lib/webhook-setup.js +383 -0
- package/dist/lib/webhook-setup.js.map +1 -0
- package/dist/options/version.d.ts +2 -0
- package/dist/options/version.d.ts.map +1 -0
- package/dist/options/version.js +7 -0
- package/dist/options/version.js.map +1 -0
- package/dist/program.d.ts +3 -0
- package/dist/program.d.ts.map +1 -0
- package/dist/program.js +63 -0
- package/dist/program.js.map +1 -0
- package/package.json +80 -0
- package/templates/rules/base.md +4 -0
- package/templates/rules/go.md +8 -0
- package/templates/rules/javascript.md +4 -0
- package/templates/rules/nextjs.md +7 -0
- package/templates/rules/pnpm-workspaces.md +4 -0
- package/templates/rules/python.md +8 -0
- package/templates/rules/react.md +8 -0
- package/templates/rules/typescript.md +6 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { pathToFileURL } from "node:url";
|
|
6
|
+
import { exec } from "./shell.js";
|
|
7
|
+
import { formatCommandError } from "./cli-errors.js";
|
|
8
|
+
const STORE_MANIFEST = {
|
|
9
|
+
name: "ao-plugin-store",
|
|
10
|
+
private: true,
|
|
11
|
+
type: "module",
|
|
12
|
+
};
|
|
13
|
+
function getPluginStorePackageJsonPath() {
|
|
14
|
+
return join(getPluginStoreRoot(), "package.json");
|
|
15
|
+
}
|
|
16
|
+
function getInstalledPackageJsonPath(packageName) {
|
|
17
|
+
return join(getPluginStoreRoot(), "node_modules", ...packageName.split("/"), "package.json");
|
|
18
|
+
}
|
|
19
|
+
function getStoreRequire() {
|
|
20
|
+
const packageJsonPath = getPluginStorePackageJsonPath();
|
|
21
|
+
ensurePluginStore();
|
|
22
|
+
return createRequire(packageJsonPath);
|
|
23
|
+
}
|
|
24
|
+
function isPackageSpecifier(specifier) {
|
|
25
|
+
return !(specifier.startsWith("file:") ||
|
|
26
|
+
specifier.startsWith("node:") ||
|
|
27
|
+
specifier.startsWith("/") ||
|
|
28
|
+
specifier.startsWith("./") ||
|
|
29
|
+
specifier.startsWith("../"));
|
|
30
|
+
}
|
|
31
|
+
async function runNpmInStore(args) {
|
|
32
|
+
const storeRoot = ensurePluginStore();
|
|
33
|
+
try {
|
|
34
|
+
await exec("npm", args, { cwd: storeRoot });
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
throw formatCommandError(err, {
|
|
38
|
+
cmd: "npm",
|
|
39
|
+
args,
|
|
40
|
+
action: "manage AO marketplace plugins",
|
|
41
|
+
installHints: ["Install Node.js/npm from https://nodejs.org/ and re-run the command."],
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function getPluginStoreRoot() {
|
|
46
|
+
return join(homedir(), ".agent-orchestrator", "plugins");
|
|
47
|
+
}
|
|
48
|
+
export function ensurePluginStore() {
|
|
49
|
+
const rootDir = getPluginStoreRoot();
|
|
50
|
+
mkdirSync(rootDir, { recursive: true });
|
|
51
|
+
const packageJsonPath = getPluginStorePackageJsonPath();
|
|
52
|
+
if (!existsSync(packageJsonPath)) {
|
|
53
|
+
writeFileSync(packageJsonPath, `${JSON.stringify(STORE_MANIFEST, null, 2)}\n`, "utf-8");
|
|
54
|
+
}
|
|
55
|
+
return rootDir;
|
|
56
|
+
}
|
|
57
|
+
export function readInstalledPackageVersion(packageName) {
|
|
58
|
+
const packageJsonPath = getInstalledPackageJsonPath(packageName);
|
|
59
|
+
if (!existsSync(packageJsonPath))
|
|
60
|
+
return null;
|
|
61
|
+
try {
|
|
62
|
+
const parsed = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
|
|
63
|
+
return typeof parsed.version === "string" && parsed.version.length > 0 ? parsed.version : null;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export async function installPackageIntoStore(packageName, version) {
|
|
70
|
+
const requested = version ? `${packageName}@${version}` : packageName;
|
|
71
|
+
await runNpmInStore(["install", "--save-exact", requested]);
|
|
72
|
+
const installedVersion = readInstalledPackageVersion(packageName);
|
|
73
|
+
if (!installedVersion) {
|
|
74
|
+
throw new Error(`Package ${packageName} was installed into the AO plugin store but no version was resolved afterwards.`);
|
|
75
|
+
}
|
|
76
|
+
return installedVersion;
|
|
77
|
+
}
|
|
78
|
+
export async function uninstallPackageFromStore(packageName) {
|
|
79
|
+
if (!readInstalledPackageVersion(packageName)) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
await runNpmInStore(["uninstall", packageName]);
|
|
83
|
+
return readInstalledPackageVersion(packageName) === null;
|
|
84
|
+
}
|
|
85
|
+
export function tryResolveInstalledPluginSpecifier(packageName) {
|
|
86
|
+
try {
|
|
87
|
+
const resolvedPath = getStoreRequire().resolve(packageName);
|
|
88
|
+
return pathToFileURL(resolvedPath).href;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export async function importPluginModuleFromSource(specifier) {
|
|
95
|
+
if (isPackageSpecifier(specifier)) {
|
|
96
|
+
const storeSpecifier = tryResolveInstalledPluginSpecifier(specifier);
|
|
97
|
+
if (storeSpecifier) {
|
|
98
|
+
return import(storeSpecifier);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return import(specifier);
|
|
102
|
+
}
|
|
103
|
+
export async function getLatestPublishedPackageVersion(packageName) {
|
|
104
|
+
try {
|
|
105
|
+
const { stdout } = await exec("npm", ["view", packageName, "version", "--json"]);
|
|
106
|
+
const parsed = JSON.parse(stdout);
|
|
107
|
+
if (typeof parsed === "string" && parsed.length > 0) {
|
|
108
|
+
return parsed;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
throw formatCommandError(err, {
|
|
113
|
+
cmd: "npm",
|
|
114
|
+
args: ["view", packageName, "version", "--json"],
|
|
115
|
+
action: `resolve the latest published version for ${packageName}`,
|
|
116
|
+
installHints: ["Install Node.js/npm from https://nodejs.org/ and re-run the command."],
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
throw new Error(`npm did not return a usable version for ${packageName}.`);
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=plugin-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-store.js","sourceRoot":"","sources":["../../src/lib/plugin-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Agent, OrchestratorConfig, PluginRegistry, SCM } from "@made-by-moonlight/athene-core";
|
|
2
|
+
/**
|
|
3
|
+
* Resolve the Agent plugin for a project (or fall back to the config default).
|
|
4
|
+
* Direct import — no dynamic loading needed since the CLI depends on all agent plugins.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getAgent(config: OrchestratorConfig, projectId?: string): Agent;
|
|
7
|
+
/** Get an agent by name directly (for fallback/no-config scenarios). */
|
|
8
|
+
export declare function getAgentByName(name: string): Agent;
|
|
9
|
+
/** Get an agent by name from the shared registry. */
|
|
10
|
+
export declare function getAgentByNameFromRegistry(registry: PluginRegistry, name: string): Agent;
|
|
11
|
+
/**
|
|
12
|
+
* Resolve the SCM plugin for a project (or fall back to "github").
|
|
13
|
+
*/
|
|
14
|
+
export declare function getSCM(config: OrchestratorConfig, projectId: string): SCM;
|
|
15
|
+
/** Resolve the SCM plugin for a project from the shared registry. */
|
|
16
|
+
export declare function getSCMFromRegistry(registry: PluginRegistry, config: OrchestratorConfig, projectId: string): SCM;
|
|
17
|
+
//# sourceMappingURL=plugins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/lib/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AAwBrG;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAI9E;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAMlD;AAED,qDAAqD;AACrD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAMxF;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAOzE;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,kBAAkB,EAC1B,SAAS,EAAE,MAAM,GAChB,GAAG,CAOL"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import claudeCodePlugin from "@made-by-moonlight/athene-plugin-agent-claude-code";
|
|
2
|
+
import codexPlugin from "@made-by-moonlight/athene-plugin-agent-codex";
|
|
3
|
+
import aiderPlugin from "@made-by-moonlight/athene-plugin-agent-aider";
|
|
4
|
+
import cursorPlugin from "@made-by-moonlight/athene-plugin-agent-cursor";
|
|
5
|
+
import kimicodePlugin from "@made-by-moonlight/athene-plugin-agent-kimicode";
|
|
6
|
+
import grokPlugin from "@made-by-moonlight/athene-plugin-agent-grok";
|
|
7
|
+
import opencodePlugin from "@made-by-moonlight/athene-plugin-agent-opencode";
|
|
8
|
+
import githubSCMPlugin from "@made-by-moonlight/athene-plugin-scm-github";
|
|
9
|
+
const agentPlugins = {
|
|
10
|
+
"claude-code": claudeCodePlugin,
|
|
11
|
+
codex: codexPlugin,
|
|
12
|
+
aider: aiderPlugin,
|
|
13
|
+
cursor: cursorPlugin,
|
|
14
|
+
kimicode: kimicodePlugin,
|
|
15
|
+
grok: grokPlugin,
|
|
16
|
+
opencode: opencodePlugin,
|
|
17
|
+
};
|
|
18
|
+
const scmPlugins = {
|
|
19
|
+
github: githubSCMPlugin,
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Resolve the Agent plugin for a project (or fall back to the config default).
|
|
23
|
+
* Direct import — no dynamic loading needed since the CLI depends on all agent plugins.
|
|
24
|
+
*/
|
|
25
|
+
export function getAgent(config, projectId) {
|
|
26
|
+
const agentName = (projectId ? config.projects[projectId]?.agent : undefined) || config.defaults.agent;
|
|
27
|
+
return getAgentByName(agentName);
|
|
28
|
+
}
|
|
29
|
+
/** Get an agent by name directly (for fallback/no-config scenarios). */
|
|
30
|
+
export function getAgentByName(name) {
|
|
31
|
+
const plugin = agentPlugins[name];
|
|
32
|
+
if (!plugin) {
|
|
33
|
+
throw new Error(`Unknown agent plugin: ${name}`);
|
|
34
|
+
}
|
|
35
|
+
return plugin.create();
|
|
36
|
+
}
|
|
37
|
+
/** Get an agent by name from the shared registry. */
|
|
38
|
+
export function getAgentByNameFromRegistry(registry, name) {
|
|
39
|
+
const plugin = registry.get("agent", name);
|
|
40
|
+
if (!plugin) {
|
|
41
|
+
throw new Error(`Unknown agent plugin: ${name}`);
|
|
42
|
+
}
|
|
43
|
+
return plugin;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Resolve the SCM plugin for a project (or fall back to "github").
|
|
47
|
+
*/
|
|
48
|
+
export function getSCM(config, projectId) {
|
|
49
|
+
const scmName = config.projects[projectId]?.scm?.plugin || "github";
|
|
50
|
+
const plugin = scmPlugins[scmName];
|
|
51
|
+
if (!plugin) {
|
|
52
|
+
throw new Error(`Unknown SCM plugin: ${scmName}`);
|
|
53
|
+
}
|
|
54
|
+
return plugin.create();
|
|
55
|
+
}
|
|
56
|
+
/** Resolve the SCM plugin for a project from the shared registry. */
|
|
57
|
+
export function getSCMFromRegistry(registry, config, projectId) {
|
|
58
|
+
const scmName = config.projects[projectId]?.scm?.plugin || "github";
|
|
59
|
+
const plugin = registry.get("scm", scmName);
|
|
60
|
+
if (!plugin) {
|
|
61
|
+
throw new Error(`Unknown SCM plugin: ${scmName}`);
|
|
62
|
+
}
|
|
63
|
+
return plugin;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/lib/plugins.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,oDAAoD,CAAC;AAClF,OAAO,WAAW,MAAM,8CAA8C,CAAC;AACvE,OAAO,WAAW,MAAM,8CAA8C,CAAC;AACvE,OAAO,YAAY,MAAM,+CAA+C,CAAC;AACzE,OAAO,cAAc,MAAM,iDAAiD,CAAC;AAC7E,OAAO,UAAU,MAAM,6CAA6C,CAAC;AACrE,OAAO,cAAc,MAAM,iDAAiD,CAAC;AAC7E,OAAO,eAAe,MAAM,6CAA6C,CAAC;AAE1E,MAAM,YAAY,GAAwC;IACxD,aAAa,EAAE,gBAAgB;IAC/B,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,YAAY;IACpB,QAAQ,EAAE,cAAc;IACxB,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,cAAc;CACzB,CAAC;AAEF,MAAM,UAAU,GAAsC;IACpD,MAAM,EAAE,eAAe;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,MAA0B,EAAE,SAAkB;IACrE,MAAM,SAAS,GACb,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;IACvF,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;AACzB,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,0BAA0B,CAAC,QAAwB,EAAE,IAAY;IAC/E,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAQ,OAAO,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,MAA0B,EAAE,SAAiB;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,IAAI,QAAQ,CAAC;IACpE,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;AACzB,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,kBAAkB,CAChC,QAAwB,EACxB,MAA0B,EAC1B,SAAiB;IAEjB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,IAAI,QAAQ,CAAC;IACpE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAM,KAAK,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PortfolioProject } from "@made-by-moonlight/athene-core";
|
|
2
|
+
type PortfolioSessionCount = {
|
|
3
|
+
total: number;
|
|
4
|
+
active: number;
|
|
5
|
+
};
|
|
6
|
+
export declare function formatPortfolioProjectStatus(project: PortfolioProject, count: PortfolioSessionCount): string;
|
|
7
|
+
export declare function formatPortfolioProjectName(project: PortfolioProject): string;
|
|
8
|
+
export declare function formatPortfolioDegradedReason(project: PortfolioProject): string | null;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=portfolio-display.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portfolio-display.d.ts","sourceRoot":"","sources":["../../src/lib/portfolio-display.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,KAAK,qBAAqB,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,qBAAqB,GAC3B,MAAM,CAUR;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAE5E;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAEtF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
export function formatPortfolioProjectStatus(project, count) {
|
|
3
|
+
if (project.resolveError) {
|
|
4
|
+
return chalk.red("degraded");
|
|
5
|
+
}
|
|
6
|
+
if (!project.enabled) {
|
|
7
|
+
return chalk.dim("disabled");
|
|
8
|
+
}
|
|
9
|
+
return count.active > 0 ? chalk.green(`${count.active} active`) : chalk.dim("idle");
|
|
10
|
+
}
|
|
11
|
+
export function formatPortfolioProjectName(project) {
|
|
12
|
+
return project.name !== project.id ? ` ${chalk.dim(`(${project.name})`)}` : "";
|
|
13
|
+
}
|
|
14
|
+
export function formatPortfolioDegradedReason(project) {
|
|
15
|
+
return project.resolveError ? chalk.red(project.resolveError) : null;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=portfolio-display.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portfolio-display.js","sourceRoot":"","sources":["../../src/lib/portfolio-display.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,MAAM,UAAU,4BAA4B,CAC1C,OAAyB,EACzB,KAA4B;IAE5B,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAyB;IAClE,OAAO,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,OAAyB;IACrE,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-flight checks for `athene start` (port + dashboard build artifacts).
|
|
3
|
+
*
|
|
4
|
+
* Tool/auth checks for `athene spawn` live on each plugin's `preflight()` method.
|
|
5
|
+
* Adding a new runtime/tracker/scm therefore doesn't require editing this
|
|
6
|
+
* file — the plugin declares its own prereqs.
|
|
7
|
+
*
|
|
8
|
+
* All checks throw on failure so callers can catch and handle uniformly.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Check that the dashboard port is free.
|
|
12
|
+
* Throws if the port is already in use.
|
|
13
|
+
*/
|
|
14
|
+
declare function checkPort(port: number): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Check that workspace packages have been compiled (TypeScript → JavaScript).
|
|
17
|
+
* Locates @made-by-moonlight/athene-core by walking up from webDir, handling both pnpm
|
|
18
|
+
* workspaces (symlinked deps in webDir/node_modules) and npm/yarn global
|
|
19
|
+
* installs (hoisted to a parent node_modules).
|
|
20
|
+
*/
|
|
21
|
+
declare function checkBuilt(webDir: string): Promise<void>;
|
|
22
|
+
export declare const preflight: {
|
|
23
|
+
checkPort: typeof checkPort;
|
|
24
|
+
checkBuilt: typeof checkBuilt;
|
|
25
|
+
};
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/lib/preflight.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH;;;GAGG;AACH,iBAAe,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOpD;AAED;;;;;GAKG;AACH,iBAAe,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBvD;AAmBD,eAAO,MAAM,SAAS;;;CAGrB,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-flight checks for `athene start` (port + dashboard build artifacts).
|
|
3
|
+
*
|
|
4
|
+
* Tool/auth checks for `athene spawn` live on each plugin's `preflight()` method.
|
|
5
|
+
* Adding a new runtime/tracker/scm therefore doesn't require editing this
|
|
6
|
+
* file — the plugin declares its own prereqs.
|
|
7
|
+
*
|
|
8
|
+
* All checks throw on failure so callers can catch and handle uniformly.
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync } from "node:fs";
|
|
11
|
+
import { resolve, dirname } from "node:path";
|
|
12
|
+
import { isPortAvailable } from "./web-dir.js";
|
|
13
|
+
import { isInstalledUnderNodeModules } from "./dashboard-rebuild.js";
|
|
14
|
+
/**
|
|
15
|
+
* Check that the dashboard port is free.
|
|
16
|
+
* Throws if the port is already in use.
|
|
17
|
+
*/
|
|
18
|
+
async function checkPort(port) {
|
|
19
|
+
const free = await isPortAvailable(port);
|
|
20
|
+
if (!free) {
|
|
21
|
+
throw new Error(`Port ${port} is already in use. Free it or change 'port' in agent-orchestrator.yaml.`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Check that workspace packages have been compiled (TypeScript → JavaScript).
|
|
26
|
+
* Locates @made-by-moonlight/athene-core by walking up from webDir, handling both pnpm
|
|
27
|
+
* workspaces (symlinked deps in webDir/node_modules) and npm/yarn global
|
|
28
|
+
* installs (hoisted to a parent node_modules).
|
|
29
|
+
*/
|
|
30
|
+
async function checkBuilt(webDir) {
|
|
31
|
+
const isNpmInstall = isInstalledUnderNodeModules(webDir);
|
|
32
|
+
const corePkgDir = findPackageUp(webDir, "@made-by-moonlight", "core");
|
|
33
|
+
if (!corePkgDir) {
|
|
34
|
+
const hint = isNpmInstall
|
|
35
|
+
? "Run: npm install -g @made-by-moonlight/athene@latest"
|
|
36
|
+
: "Run: pnpm install && pnpm build";
|
|
37
|
+
throw new Error(`Dependencies not installed. ${hint}`);
|
|
38
|
+
}
|
|
39
|
+
const coreEntry = resolve(corePkgDir, "dist", "index.js");
|
|
40
|
+
if (!existsSync(coreEntry)) {
|
|
41
|
+
const hint = isNpmInstall
|
|
42
|
+
? "Run: npm install -g @made-by-moonlight/athene@latest"
|
|
43
|
+
: "Run: pnpm build";
|
|
44
|
+
throw new Error(`Packages not built. ${hint}`);
|
|
45
|
+
}
|
|
46
|
+
const webBuildId = resolve(webDir, ".next", "BUILD_ID");
|
|
47
|
+
const startAllEntry = resolve(webDir, "dist-server", "start-all.js");
|
|
48
|
+
if (!existsSync(webBuildId) || !existsSync(startAllEntry)) {
|
|
49
|
+
const hint = isNpmInstall
|
|
50
|
+
? "Run: npm install -g @made-by-moonlight/athene@latest"
|
|
51
|
+
: "Run: pnpm build";
|
|
52
|
+
throw new Error(`Packages not built. ${hint}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Walk up from startDir looking for node_modules/<segments>.
|
|
57
|
+
* Mirrors Node's module resolution: checks each ancestor directory until
|
|
58
|
+
* the package is found or the filesystem root is reached.
|
|
59
|
+
*/
|
|
60
|
+
function findPackageUp(startDir, ...segments) {
|
|
61
|
+
let dir = resolve(startDir);
|
|
62
|
+
while (true) {
|
|
63
|
+
const candidate = resolve(dir, "node_modules", ...segments);
|
|
64
|
+
if (existsSync(candidate))
|
|
65
|
+
return candidate;
|
|
66
|
+
const parent = dirname(dir);
|
|
67
|
+
if (parent === dir)
|
|
68
|
+
break;
|
|
69
|
+
dir = parent;
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
export const preflight = {
|
|
74
|
+
checkPort,
|
|
75
|
+
checkBuilt,
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/lib/preflight.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAErE;;;GAGG;AACH,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,QAAQ,IAAI,0EAA0E,CACvF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,UAAU,CAAC,MAAc;IACtC,MAAM,YAAY,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACvE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,YAAY;YACvB,CAAC,CAAC,sDAAsD;YACxD,CAAC,CAAC,iCAAiC,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,YAAY;YACvB,CAAC,CAAC,sDAAsD;YACxD,CAAC,CAAC,iBAAiB,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IACrE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,YAAY;YACvB,CAAC,CAAC,sDAAsD;YACxD,CAAC,CAAC,iBAAiB,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,QAAgB,EAAE,GAAG,QAAkB;IAC5D,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC,CAAC;QAC5D,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,SAAS;IACT,UAAU;CACX,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Idle sleep prevention for macOS.
|
|
3
|
+
*
|
|
4
|
+
* Spawns `caffeinate -i -w <pid>` to hold an idle-sleep prevention assertion
|
|
5
|
+
* for the duration of the AO process. The assertion is automatically released
|
|
6
|
+
* when the watched process exits (cleanly, on crash, or via kill -9).
|
|
7
|
+
*
|
|
8
|
+
* No-op on non-macOS platforms.
|
|
9
|
+
*
|
|
10
|
+
* @see https://github.com/slievr/Athene/issues/1072
|
|
11
|
+
*/
|
|
12
|
+
export interface SleepPreventionHandle {
|
|
13
|
+
/** Release the sleep prevention assertion early (optional — auto-releases on process exit) */
|
|
14
|
+
release: () => void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Prevent macOS idle sleep for the lifetime of a process.
|
|
18
|
+
*
|
|
19
|
+
* @param pid - The process ID to watch. When this process exits, the assertion is released.
|
|
20
|
+
* Defaults to the current process.
|
|
21
|
+
* @returns A handle to release the assertion early, or null if not on macOS.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* // Prevent sleep for the current process
|
|
26
|
+
* const handle = preventIdleSleep();
|
|
27
|
+
*
|
|
28
|
+
* // Prevent sleep while a child process runs
|
|
29
|
+
* const child = spawn("node", ["server.js"]);
|
|
30
|
+
* const handle = preventIdleSleep(child.pid);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function preventIdleSleep(pid?: number): SleepPreventionHandle | null;
|
|
34
|
+
//# sourceMappingURL=prevent-sleep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prevent-sleep.d.ts","sourceRoot":"","sources":["../../src/lib/prevent-sleep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,WAAW,qBAAqB;IACpC,8FAA8F;IAC9F,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAuC3E"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Idle sleep prevention for macOS.
|
|
3
|
+
*
|
|
4
|
+
* Spawns `caffeinate -i -w <pid>` to hold an idle-sleep prevention assertion
|
|
5
|
+
* for the duration of the AO process. The assertion is automatically released
|
|
6
|
+
* when the watched process exits (cleanly, on crash, or via kill -9).
|
|
7
|
+
*
|
|
8
|
+
* No-op on non-macOS platforms.
|
|
9
|
+
*
|
|
10
|
+
* @see https://github.com/slievr/Athene/issues/1072
|
|
11
|
+
*/
|
|
12
|
+
import { spawn } from "node:child_process";
|
|
13
|
+
/**
|
|
14
|
+
* Prevent macOS idle sleep for the lifetime of a process.
|
|
15
|
+
*
|
|
16
|
+
* @param pid - The process ID to watch. When this process exits, the assertion is released.
|
|
17
|
+
* Defaults to the current process.
|
|
18
|
+
* @returns A handle to release the assertion early, or null if not on macOS.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* // Prevent sleep for the current process
|
|
23
|
+
* const handle = preventIdleSleep();
|
|
24
|
+
*
|
|
25
|
+
* // Prevent sleep while a child process runs
|
|
26
|
+
* const child = spawn("node", ["server.js"]);
|
|
27
|
+
* const handle = preventIdleSleep(child.pid);
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export function preventIdleSleep(pid) {
|
|
31
|
+
// Only supported on macOS
|
|
32
|
+
if (process.platform !== "darwin") {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const targetPid = pid ?? process.pid;
|
|
36
|
+
// Spawn caffeinate:
|
|
37
|
+
// -i: Create an assertion to prevent idle sleep (works on battery)
|
|
38
|
+
// -w <pid>: Wait for the specified process to exit, then release the assertion
|
|
39
|
+
const child = spawn("caffeinate", ["-i", "-w", String(targetPid)], {
|
|
40
|
+
stdio: "ignore",
|
|
41
|
+
detached: true,
|
|
42
|
+
});
|
|
43
|
+
// Check if spawn succeeded — child.pid is undefined if spawn failed synchronously
|
|
44
|
+
// (e.g., ENOENT when caffeinate doesn't exist)
|
|
45
|
+
if (child.pid === undefined) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
// Don't keep the Node event loop alive for this child
|
|
49
|
+
child.unref();
|
|
50
|
+
// Handle spawn errors silently — caffeinate might not exist on old macOS versions
|
|
51
|
+
child.on("error", () => {
|
|
52
|
+
// caffeinate not available — silently ignore
|
|
53
|
+
});
|
|
54
|
+
return {
|
|
55
|
+
release: () => {
|
|
56
|
+
try {
|
|
57
|
+
child.kill();
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// Already dead or not killable — ignore
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=prevent-sleep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prevent-sleep.js","sourceRoot":"","sources":["../../src/lib/prevent-sleep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAO9D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,0BAA0B;IAC1B,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAErC,oBAAoB;IACpB,mEAAmE;IACnE,+EAA+E;IAC/E,MAAM,KAAK,GAAiB,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE;QAC/E,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,kFAAkF;IAClF,+CAA+C;IAC/C,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sDAAsD;IACtD,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,kFAAkF;IAClF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,6CAA6C;IAC/C,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,CAAC;gBACH,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,wCAAwC;YAC1C,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ProjectType {
|
|
2
|
+
languages: string[];
|
|
3
|
+
frameworks: string[];
|
|
4
|
+
tools: string[];
|
|
5
|
+
testFramework?: string;
|
|
6
|
+
packageManager?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function detectProjectType(dir: string): ProjectType;
|
|
9
|
+
export declare function generateRulesFromTemplates(projectType: ProjectType): string;
|
|
10
|
+
export declare function formatProjectTypeForDisplay(projectType: ProjectType): string;
|
|
11
|
+
//# sourceMappingURL=project-detection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-detection.d.ts","sourceRoot":"","sources":["../../src/lib/project-detection.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CA0G1D;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CA6C3E;AA8CD,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAwB5E"}
|