@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.
Files changed (315) hide show
  1. package/LICENSE +22 -0
  2. package/dist/assets/plugin-registry.json +67 -0
  3. package/dist/assets/scripts/athene-doctor.ps1 +352 -0
  4. package/dist/assets/scripts/athene-doctor.sh +552 -0
  5. package/dist/assets/scripts/athene-update.ps1 +224 -0
  6. package/dist/assets/scripts/athene-update.sh +252 -0
  7. package/dist/commands/completion.d.ts +3 -0
  8. package/dist/commands/completion.d.ts.map +1 -0
  9. package/dist/commands/completion.js +26 -0
  10. package/dist/commands/completion.js.map +1 -0
  11. package/dist/commands/config.d.ts +11 -0
  12. package/dist/commands/config.d.ts.map +1 -0
  13. package/dist/commands/config.js +89 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/dashboard.d.ts +3 -0
  16. package/dist/commands/dashboard.d.ts.map +1 -0
  17. package/dist/commands/dashboard.js +103 -0
  18. package/dist/commands/dashboard.js.map +1 -0
  19. package/dist/commands/doctor.d.ts +3 -0
  20. package/dist/commands/doctor.d.ts.map +1 -0
  21. package/dist/commands/doctor.js +329 -0
  22. package/dist/commands/doctor.js.map +1 -0
  23. package/dist/commands/events.d.ts +3 -0
  24. package/dist/commands/events.d.ts.map +1 -0
  25. package/dist/commands/events.js +172 -0
  26. package/dist/commands/events.js.map +1 -0
  27. package/dist/commands/migrate-storage.d.ts +3 -0
  28. package/dist/commands/migrate-storage.d.ts.map +1 -0
  29. package/dist/commands/migrate-storage.js +78 -0
  30. package/dist/commands/migrate-storage.js.map +1 -0
  31. package/dist/commands/notify.d.ts +3 -0
  32. package/dist/commands/notify.d.ts.map +1 -0
  33. package/dist/commands/notify.js +143 -0
  34. package/dist/commands/notify.js.map +1 -0
  35. package/dist/commands/open.d.ts +3 -0
  36. package/dist/commands/open.d.ts.map +1 -0
  37. package/dist/commands/open.js +167 -0
  38. package/dist/commands/open.js.map +1 -0
  39. package/dist/commands/plugin.d.ts +3 -0
  40. package/dist/commands/plugin.d.ts.map +1 -0
  41. package/dist/commands/plugin.js +462 -0
  42. package/dist/commands/plugin.js.map +1 -0
  43. package/dist/commands/project.d.ts +3 -0
  44. package/dist/commands/project.d.ts.map +1 -0
  45. package/dist/commands/project.js +143 -0
  46. package/dist/commands/project.js.map +1 -0
  47. package/dist/commands/report.d.ts +19 -0
  48. package/dist/commands/report.d.ts.map +1 -0
  49. package/dist/commands/report.js +114 -0
  50. package/dist/commands/report.js.map +1 -0
  51. package/dist/commands/review-check.d.ts +3 -0
  52. package/dist/commands/review-check.d.ts.map +1 -0
  53. package/dist/commands/review-check.js +122 -0
  54. package/dist/commands/review-check.js.map +1 -0
  55. package/dist/commands/review.d.ts +3 -0
  56. package/dist/commands/review.d.ts.map +1 -0
  57. package/dist/commands/review.js +215 -0
  58. package/dist/commands/review.js.map +1 -0
  59. package/dist/commands/send.d.ts +3 -0
  60. package/dist/commands/send.d.ts.map +1 -0
  61. package/dist/commands/send.js +187 -0
  62. package/dist/commands/send.js.map +1 -0
  63. package/dist/commands/session.d.ts +3 -0
  64. package/dist/commands/session.d.ts.map +1 -0
  65. package/dist/commands/session.js +439 -0
  66. package/dist/commands/session.js.map +1 -0
  67. package/dist/commands/setup.d.ts +5 -0
  68. package/dist/commands/setup.d.ts.map +1 -0
  69. package/dist/commands/setup.js +297 -0
  70. package/dist/commands/setup.js.map +1 -0
  71. package/dist/commands/spawn.d.ts +4 -0
  72. package/dist/commands/spawn.d.ts.map +1 -0
  73. package/dist/commands/spawn.js +436 -0
  74. package/dist/commands/spawn.js.map +1 -0
  75. package/dist/commands/start.d.ts +21 -0
  76. package/dist/commands/start.d.ts.map +1 -0
  77. package/dist/commands/start.js +1836 -0
  78. package/dist/commands/start.js.map +1 -0
  79. package/dist/commands/status.d.ts +3 -0
  80. package/dist/commands/status.d.ts.map +1 -0
  81. package/dist/commands/status.js +556 -0
  82. package/dist/commands/status.js.map +1 -0
  83. package/dist/commands/update.d.ts +15 -0
  84. package/dist/commands/update.d.ts.map +1 -0
  85. package/dist/commands/update.js +652 -0
  86. package/dist/commands/update.js.map +1 -0
  87. package/dist/commands/verify.d.ts +3 -0
  88. package/dist/commands/verify.d.ts.map +1 -0
  89. package/dist/commands/verify.js +131 -0
  90. package/dist/commands/verify.js.map +1 -0
  91. package/dist/index.d.ts +3 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +24 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/lib/bun-tmp-janitor.d.ts +18 -0
  96. package/dist/lib/bun-tmp-janitor.d.ts.map +1 -0
  97. package/dist/lib/bun-tmp-janitor.js +127 -0
  98. package/dist/lib/bun-tmp-janitor.js.map +1 -0
  99. package/dist/lib/caller-context.d.ts +13 -0
  100. package/dist/lib/caller-context.d.ts.map +1 -0
  101. package/dist/lib/caller-context.js +20 -0
  102. package/dist/lib/caller-context.js.map +1 -0
  103. package/dist/lib/cli-errors.d.ts +8 -0
  104. package/dist/lib/cli-errors.d.ts.map +1 -0
  105. package/dist/lib/cli-errors.js +20 -0
  106. package/dist/lib/cli-errors.js.map +1 -0
  107. package/dist/lib/completion.d.ts +13 -0
  108. package/dist/lib/completion.d.ts.map +1 -0
  109. package/dist/lib/completion.js +428 -0
  110. package/dist/lib/completion.js.map +1 -0
  111. package/dist/lib/composio-setup.d.ts +65 -0
  112. package/dist/lib/composio-setup.d.ts.map +1 -0
  113. package/dist/lib/composio-setup.js +3255 -0
  114. package/dist/lib/composio-setup.js.map +1 -0
  115. package/dist/lib/config-instruction.d.ts +2 -0
  116. package/dist/lib/config-instruction.d.ts.map +1 -0
  117. package/dist/lib/config-instruction.js +193 -0
  118. package/dist/lib/config-instruction.js.map +1 -0
  119. package/dist/lib/constants.d.ts +3 -0
  120. package/dist/lib/constants.d.ts.map +1 -0
  121. package/dist/lib/constants.js +3 -0
  122. package/dist/lib/constants.js.map +1 -0
  123. package/dist/lib/create-session-manager.d.ts +26 -0
  124. package/dist/lib/create-session-manager.d.ts.map +1 -0
  125. package/dist/lib/create-session-manager.js +55 -0
  126. package/dist/lib/create-session-manager.js.map +1 -0
  127. package/dist/lib/credential-resolver.d.ts +37 -0
  128. package/dist/lib/credential-resolver.d.ts.map +1 -0
  129. package/dist/lib/credential-resolver.js +105 -0
  130. package/dist/lib/credential-resolver.js.map +1 -0
  131. package/dist/lib/daemon.d.ts +69 -0
  132. package/dist/lib/daemon.d.ts.map +1 -0
  133. package/dist/lib/daemon.js +77 -0
  134. package/dist/lib/daemon.js.map +1 -0
  135. package/dist/lib/dashboard-rebuild.d.ts +53 -0
  136. package/dist/lib/dashboard-rebuild.d.ts.map +1 -0
  137. package/dist/lib/dashboard-rebuild.js +188 -0
  138. package/dist/lib/dashboard-rebuild.js.map +1 -0
  139. package/dist/lib/dashboard-setup.d.ts +14 -0
  140. package/dist/lib/dashboard-setup.d.ts.map +1 -0
  141. package/dist/lib/dashboard-setup.js +192 -0
  142. package/dist/lib/dashboard-setup.js.map +1 -0
  143. package/dist/lib/dashboard-url.d.ts +19 -0
  144. package/dist/lib/dashboard-url.d.ts.map +1 -0
  145. package/dist/lib/dashboard-url.js +25 -0
  146. package/dist/lib/dashboard-url.js.map +1 -0
  147. package/dist/lib/desktop-setup.d.ts +21 -0
  148. package/dist/lib/desktop-setup.d.ts.map +1 -0
  149. package/dist/lib/desktop-setup.js +556 -0
  150. package/dist/lib/desktop-setup.js.map +1 -0
  151. package/dist/lib/detect-agent.d.ts +24 -0
  152. package/dist/lib/detect-agent.d.ts.map +1 -0
  153. package/dist/lib/detect-agent.js +69 -0
  154. package/dist/lib/detect-agent.js.map +1 -0
  155. package/dist/lib/detect-env.d.ts +14 -0
  156. package/dist/lib/detect-env.d.ts.map +1 -0
  157. package/dist/lib/detect-env.js +46 -0
  158. package/dist/lib/detect-env.js.map +1 -0
  159. package/dist/lib/discord-setup.d.ts +20 -0
  160. package/dist/lib/discord-setup.d.ts.map +1 -0
  161. package/dist/lib/discord-setup.js +584 -0
  162. package/dist/lib/discord-setup.js.map +1 -0
  163. package/dist/lib/format.d.ts +11 -0
  164. package/dist/lib/format.d.ts.map +1 -0
  165. package/dist/lib/format.js +116 -0
  166. package/dist/lib/format.js.map +1 -0
  167. package/dist/lib/git-utils.d.ts +14 -0
  168. package/dist/lib/git-utils.d.ts.map +1 -0
  169. package/dist/lib/git-utils.js +45 -0
  170. package/dist/lib/git-utils.js.map +1 -0
  171. package/dist/lib/install-helpers.d.ts +24 -0
  172. package/dist/lib/install-helpers.d.ts.map +1 -0
  173. package/dist/lib/install-helpers.js +76 -0
  174. package/dist/lib/install-helpers.js.map +1 -0
  175. package/dist/lib/lifecycle-service.d.ts +11 -0
  176. package/dist/lib/lifecycle-service.d.ts.map +1 -0
  177. package/dist/lib/lifecycle-service.js +65 -0
  178. package/dist/lib/lifecycle-service.js.map +1 -0
  179. package/dist/lib/notifier-routing.d.ts +35 -0
  180. package/dist/lib/notifier-routing.d.ts.map +1 -0
  181. package/dist/lib/notifier-routing.js +133 -0
  182. package/dist/lib/notifier-routing.js.map +1 -0
  183. package/dist/lib/notify-test.d.ts +72 -0
  184. package/dist/lib/notify-test.d.ts.map +1 -0
  185. package/dist/lib/notify-test.js +674 -0
  186. package/dist/lib/notify-test.js.map +1 -0
  187. package/dist/lib/openclaw-probe.d.ts +38 -0
  188. package/dist/lib/openclaw-probe.d.ts.map +1 -0
  189. package/dist/lib/openclaw-probe.js +146 -0
  190. package/dist/lib/openclaw-probe.js.map +1 -0
  191. package/dist/lib/openclaw-setup.d.ts +19 -0
  192. package/dist/lib/openclaw-setup.d.ts.map +1 -0
  193. package/dist/lib/openclaw-setup.js +684 -0
  194. package/dist/lib/openclaw-setup.js.map +1 -0
  195. package/dist/lib/path-equality.d.ts +29 -0
  196. package/dist/lib/path-equality.d.ts.map +1 -0
  197. package/dist/lib/path-equality.js +52 -0
  198. package/dist/lib/path-equality.js.map +1 -0
  199. package/dist/lib/plugin-marketplace.d.ts +24 -0
  200. package/dist/lib/plugin-marketplace.d.ts.map +1 -0
  201. package/dist/lib/plugin-marketplace.js +175 -0
  202. package/dist/lib/plugin-marketplace.js.map +1 -0
  203. package/dist/lib/plugin-scaffold.d.ts +14 -0
  204. package/dist/lib/plugin-scaffold.d.ts.map +1 -0
  205. package/dist/lib/plugin-scaffold.js +174 -0
  206. package/dist/lib/plugin-scaffold.js.map +1 -0
  207. package/dist/lib/plugin-store.d.ts +9 -0
  208. package/dist/lib/plugin-store.d.ts.map +1 -0
  209. package/dist/lib/plugin-store.js +121 -0
  210. package/dist/lib/plugin-store.js.map +1 -0
  211. package/dist/lib/plugins.d.ts +17 -0
  212. package/dist/lib/plugins.d.ts.map +1 -0
  213. package/dist/lib/plugins.js +65 -0
  214. package/dist/lib/plugins.js.map +1 -0
  215. package/dist/lib/portfolio-display.d.ts +10 -0
  216. package/dist/lib/portfolio-display.d.ts.map +1 -0
  217. package/dist/lib/portfolio-display.js +17 -0
  218. package/dist/lib/portfolio-display.js.map +1 -0
  219. package/dist/lib/preflight.d.ts +27 -0
  220. package/dist/lib/preflight.d.ts.map +1 -0
  221. package/dist/lib/preflight.js +77 -0
  222. package/dist/lib/preflight.js.map +1 -0
  223. package/dist/lib/prevent-sleep.d.ts +34 -0
  224. package/dist/lib/prevent-sleep.d.ts.map +1 -0
  225. package/dist/lib/prevent-sleep.js +65 -0
  226. package/dist/lib/prevent-sleep.js.map +1 -0
  227. package/dist/lib/project-detection.d.ts +11 -0
  228. package/dist/lib/project-detection.d.ts.map +1 -0
  229. package/dist/lib/project-detection.js +206 -0
  230. package/dist/lib/project-detection.js.map +1 -0
  231. package/dist/lib/project-resolution.d.ts +10 -0
  232. package/dist/lib/project-resolution.d.ts.map +1 -0
  233. package/dist/lib/project-resolution.js +17 -0
  234. package/dist/lib/project-resolution.js.map +1 -0
  235. package/dist/lib/project-supervisor.d.ts +28 -0
  236. package/dist/lib/project-supervisor.d.ts.map +1 -0
  237. package/dist/lib/project-supervisor.js +167 -0
  238. package/dist/lib/project-supervisor.js.map +1 -0
  239. package/dist/lib/prompts.d.ts +7 -0
  240. package/dist/lib/prompts.d.ts.map +1 -0
  241. package/dist/lib/prompts.js +37 -0
  242. package/dist/lib/prompts.js.map +1 -0
  243. package/dist/lib/repo-utils.d.ts +16 -0
  244. package/dist/lib/repo-utils.d.ts.map +1 -0
  245. package/dist/lib/repo-utils.js +26 -0
  246. package/dist/lib/repo-utils.js.map +1 -0
  247. package/dist/lib/resolve-project.d.ts +113 -0
  248. package/dist/lib/resolve-project.d.ts.map +1 -0
  249. package/dist/lib/resolve-project.js +433 -0
  250. package/dist/lib/resolve-project.js.map +1 -0
  251. package/dist/lib/routes.d.ts +2 -0
  252. package/dist/lib/routes.d.ts.map +1 -0
  253. package/dist/lib/routes.js +5 -0
  254. package/dist/lib/routes.js.map +1 -0
  255. package/dist/lib/running-state.d.ts +76 -0
  256. package/dist/lib/running-state.d.ts.map +1 -0
  257. package/dist/lib/running-state.js +338 -0
  258. package/dist/lib/running-state.js.map +1 -0
  259. package/dist/lib/script-runner.d.ts +10 -0
  260. package/dist/lib/script-runner.d.ts.map +1 -0
  261. package/dist/lib/script-runner.js +189 -0
  262. package/dist/lib/script-runner.js.map +1 -0
  263. package/dist/lib/session-utils.d.ts +14 -0
  264. package/dist/lib/session-utils.d.ts.map +1 -0
  265. package/dist/lib/session-utils.js +58 -0
  266. package/dist/lib/session-utils.js.map +1 -0
  267. package/dist/lib/shell.d.ts +17 -0
  268. package/dist/lib/shell.d.ts.map +1 -0
  269. package/dist/lib/shell.js +90 -0
  270. package/dist/lib/shell.js.map +1 -0
  271. package/dist/lib/shutdown.d.ts +30 -0
  272. package/dist/lib/shutdown.d.ts.map +1 -0
  273. package/dist/lib/shutdown.js +177 -0
  274. package/dist/lib/shutdown.js.map +1 -0
  275. package/dist/lib/slack-setup.d.ts +17 -0
  276. package/dist/lib/slack-setup.d.ts.map +1 -0
  277. package/dist/lib/slack-setup.js +485 -0
  278. package/dist/lib/slack-setup.js.map +1 -0
  279. package/dist/lib/startup-preflight.d.ts +36 -0
  280. package/dist/lib/startup-preflight.d.ts.map +1 -0
  281. package/dist/lib/startup-preflight.js +273 -0
  282. package/dist/lib/startup-preflight.js.map +1 -0
  283. package/dist/lib/update-channel-onboarding.d.ts +52 -0
  284. package/dist/lib/update-channel-onboarding.d.ts.map +1 -0
  285. package/dist/lib/update-channel-onboarding.js +107 -0
  286. package/dist/lib/update-channel-onboarding.js.map +1 -0
  287. package/dist/lib/update-check.d.ts +161 -0
  288. package/dist/lib/update-check.d.ts.map +1 -0
  289. package/dist/lib/update-check.js +504 -0
  290. package/dist/lib/update-check.js.map +1 -0
  291. package/dist/lib/web-dir.d.ts +47 -0
  292. package/dist/lib/web-dir.d.ts.map +1 -0
  293. package/dist/lib/web-dir.js +179 -0
  294. package/dist/lib/web-dir.js.map +1 -0
  295. package/dist/lib/webhook-setup.d.ts +16 -0
  296. package/dist/lib/webhook-setup.d.ts.map +1 -0
  297. package/dist/lib/webhook-setup.js +383 -0
  298. package/dist/lib/webhook-setup.js.map +1 -0
  299. package/dist/options/version.d.ts +2 -0
  300. package/dist/options/version.d.ts.map +1 -0
  301. package/dist/options/version.js +7 -0
  302. package/dist/options/version.js.map +1 -0
  303. package/dist/program.d.ts +3 -0
  304. package/dist/program.d.ts.map +1 -0
  305. package/dist/program.js +63 -0
  306. package/dist/program.js.map +1 -0
  307. package/package.json +80 -0
  308. package/templates/rules/base.md +4 -0
  309. package/templates/rules/go.md +8 -0
  310. package/templates/rules/javascript.md +4 -0
  311. package/templates/rules/nextjs.md +7 -0
  312. package/templates/rules/pnpm-workspaces.md +4 -0
  313. package/templates/rules/python.md +8 -0
  314. package/templates/rules/react.md +8 -0
  315. 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"}