@made-by-moonlight/athene-plugin-agent-aider 0.9.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/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Composio, Inc.
4
+ Copyright (c) 2026 slievr (Athene fork)
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
@@ -0,0 +1,23 @@
1
+ import { type Agent } from "@made-by-moonlight/athene-core";
2
+ export declare const manifest: {
3
+ name: string;
4
+ slot: "agent";
5
+ description: string;
6
+ version: string;
7
+ displayName: string;
8
+ };
9
+ export declare function create(): Agent;
10
+ export declare function detect(): boolean;
11
+ declare const _default: {
12
+ manifest: {
13
+ name: string;
14
+ slot: "agent";
15
+ description: string;
16
+ version: string;
17
+ displayName: string;
18
+ };
19
+ create: typeof create;
20
+ detect: typeof detect;
21
+ };
22
+ export default _default;
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,KAAK,KAAK,EAUX,MAAM,gCAAgC,CAAC;AA4DxC,eAAO,MAAM,QAAQ;;;;;;CAMpB,CAAC;AAsNF,wBAAgB,MAAM,IAAI,KAAK,CAE9B;AAED,wBAAgB,MAAM,IAAI,OAAO,CAWhC;;;;;;;;;;;;AAED,wBAA0E"}
package/dist/index.js ADDED
@@ -0,0 +1,274 @@
1
+ import { shellEscape, normalizeAgentPermissionMode, readLastActivityEntry, checkActivityLogState, getActivityFallbackState, recordTerminalActivity, hasRecentCommits, DEFAULT_READY_THRESHOLD_MS, DEFAULT_ACTIVE_WINDOW_MS, isWindows, PROCESS_PROBE_INDETERMINATE, } from "@made-by-moonlight/athene-core";
2
+ import { execFile, execFileSync } from "node:child_process";
3
+ import { promisify } from "node:util";
4
+ import { stat, access, readFile } from "node:fs/promises";
5
+ import { join } from "node:path";
6
+ import { constants, readFileSync } from "node:fs";
7
+ const execFileAsync = promisify(execFile);
8
+ // =============================================================================
9
+ // Aider Activity Detection Helpers
10
+ // =============================================================================
11
+ /**
12
+ * Get modification time of Aider chat history file.
13
+ */
14
+ async function getChatHistoryMtime(workspacePath) {
15
+ try {
16
+ const chatFile = join(workspacePath, ".aider.chat.history.md");
17
+ await access(chatFile, constants.R_OK);
18
+ const stats = await stat(chatFile);
19
+ return stats.mtime;
20
+ }
21
+ catch {
22
+ return null;
23
+ }
24
+ }
25
+ // =============================================================================
26
+ // Session Info Helpers
27
+ // =============================================================================
28
+ /**
29
+ * Extract a summary from Aider's chat history file.
30
+ * Reads the first user message (lines starting with "#### " in the markdown format)
31
+ * and truncates to 120 characters.
32
+ */
33
+ async function extractAiderSummary(workspacePath) {
34
+ try {
35
+ const chatFile = join(workspacePath, ".aider.chat.history.md");
36
+ const content = await readFile(chatFile, "utf-8");
37
+ // Aider chat history uses "#### " prefix for user messages
38
+ for (const line of content.split("\n")) {
39
+ if (line.startsWith("#### ")) {
40
+ const msg = line.slice(5).trim();
41
+ if (msg.length > 0) {
42
+ return msg.length > 120 ? msg.substring(0, 120) + "..." : msg;
43
+ }
44
+ }
45
+ }
46
+ }
47
+ catch {
48
+ // File doesn't exist or read error
49
+ }
50
+ return null;
51
+ }
52
+ // =============================================================================
53
+ // Plugin Manifest
54
+ // =============================================================================
55
+ export const manifest = {
56
+ name: "aider",
57
+ slot: "agent",
58
+ description: "Agent plugin: Aider",
59
+ version: "0.1.0",
60
+ displayName: "Aider",
61
+ };
62
+ // =============================================================================
63
+ // Agent Implementation
64
+ // =============================================================================
65
+ function createAiderAgent() {
66
+ return {
67
+ name: "aider",
68
+ processName: "aider",
69
+ getLaunchCommand(config) {
70
+ const parts = ["aider"];
71
+ const permissionMode = normalizeAgentPermissionMode(config.permissions);
72
+ if (permissionMode === "permissionless" || permissionMode === "auto-edit") {
73
+ parts.push("--yes");
74
+ }
75
+ if (config.model) {
76
+ parts.push("--model", shellEscape(config.model));
77
+ }
78
+ if (config.systemPromptFile) {
79
+ if (isWindows()) {
80
+ const content = readFileSync(config.systemPromptFile, "utf-8");
81
+ parts.push("--system-prompt", shellEscape(content));
82
+ }
83
+ else {
84
+ parts.push("--system-prompt", `"$(cat ${shellEscape(config.systemPromptFile)})"`);
85
+ }
86
+ }
87
+ else if (config.systemPrompt) {
88
+ parts.push("--system-prompt", shellEscape(config.systemPrompt));
89
+ }
90
+ if (config.prompt) {
91
+ parts.push("--message", shellEscape(config.prompt));
92
+ }
93
+ return parts.join(" ");
94
+ },
95
+ getEnvironment(config) {
96
+ const env = {};
97
+ env["AO_SESSION_ID"] = config.sessionId;
98
+ // NOTE: AO_PROJECT_ID is the caller's responsibility (spawn.ts sets it)
99
+ if (config.issueId) {
100
+ env["AO_ISSUE_ID"] = config.issueId;
101
+ }
102
+ // PATH and GH_PATH are injected by session-manager for all agents.
103
+ return env;
104
+ },
105
+ detectActivity(terminalOutput) {
106
+ if (!terminalOutput.trim())
107
+ return "idle";
108
+ const lines = terminalOutput.trim().split("\n");
109
+ const lastLine = lines[lines.length - 1]?.trim() ?? "";
110
+ // Aider's input prompt — agent is idle, waiting for user command
111
+ if (/^[>$#]\s*$/.test(lastLine))
112
+ return "idle";
113
+ // Aider-specific prompt patterns
114
+ if (/^aider>\s*$/.test(lastLine))
115
+ return "idle";
116
+ // Check the last few lines for permission/confirmation prompts
117
+ const tail = lines.slice(-5).join("\n");
118
+ if (/\(Y\)es.*\(N\)o/i.test(tail))
119
+ return "waiting_input";
120
+ if (/Allow creation of/i.test(tail))
121
+ return "waiting_input";
122
+ if (/Add .+ to the chat\?/i.test(tail))
123
+ return "waiting_input";
124
+ if (/\[Yes\].*\[No\]/i.test(tail))
125
+ return "waiting_input";
126
+ if (/proceed\?/i.test(tail))
127
+ return "waiting_input";
128
+ return "active";
129
+ },
130
+ async getActivityState(session, readyThresholdMs) {
131
+ const threshold = readyThresholdMs ?? DEFAULT_READY_THRESHOLD_MS;
132
+ // Check if process is running first
133
+ const exitedAt = new Date();
134
+ if (!session.runtimeHandle)
135
+ return { state: "exited", timestamp: exitedAt };
136
+ const running = await this.isProcessRunning(session.runtimeHandle);
137
+ if (running === PROCESS_PROBE_INDETERMINATE)
138
+ return null;
139
+ if (!running)
140
+ return { state: "exited", timestamp: exitedAt };
141
+ // Process is running - check for activity signals
142
+ if (!session.workspacePath)
143
+ return null;
144
+ // 1. Check AO activity JSONL first (written by recordActivity from terminal output).
145
+ // This is the only source of waiting_input/blocked states for Aider.
146
+ const activityResult = await readLastActivityEntry(session.workspacePath);
147
+ const activityState = checkActivityLogState(activityResult);
148
+ if (activityState)
149
+ return activityState;
150
+ // 2. Fallback: check for recent git commits (Aider auto-commits changes)
151
+ const hasCommits = await hasRecentCommits(session.workspacePath);
152
+ if (hasCommits)
153
+ return { state: "active" };
154
+ // 3. Fallback: check chat history file modification time
155
+ const chatMtime = await getChatHistoryMtime(session.workspacePath);
156
+ if (chatMtime) {
157
+ const ageMs = Date.now() - chatMtime.getTime();
158
+ const activeWindowMs = Math.min(DEFAULT_ACTIVE_WINDOW_MS, threshold);
159
+ if (ageMs <= activeWindowMs)
160
+ return { state: "active", timestamp: chatMtime };
161
+ if (ageMs <= threshold)
162
+ return { state: "ready", timestamp: chatMtime };
163
+ return { state: "idle", timestamp: chatMtime };
164
+ }
165
+ // 4. Fallback: use JSONL entry with age-based decay when chat history is unavailable.
166
+ const activeWindowMs = Math.min(DEFAULT_ACTIVE_WINDOW_MS, threshold);
167
+ const fallback = getActivityFallbackState(activityResult, activeWindowMs, threshold);
168
+ if (fallback)
169
+ return fallback;
170
+ return null;
171
+ },
172
+ async recordActivity(session, terminalOutput) {
173
+ if (!session.workspacePath)
174
+ return;
175
+ await recordTerminalActivity(session.workspacePath, terminalOutput, (output) => this.detectActivity(output));
176
+ },
177
+ async isProcessRunning(handle) {
178
+ try {
179
+ if (handle.runtimeName === "tmux" && handle.id) {
180
+ // ps -eo is Unix-only; guard against stale tmux handles on Windows
181
+ if (isWindows())
182
+ return false;
183
+ const { stdout: ttyOut } = await execFileAsync("tmux", ["list-panes", "-t", handle.id, "-F", "#{pane_tty}"], { timeout: 30_000 });
184
+ const ttys = ttyOut
185
+ .trim()
186
+ .split("\n")
187
+ .map((t) => t.trim())
188
+ .filter(Boolean);
189
+ if (ttys.length === 0)
190
+ return false;
191
+ const { stdout: psOut } = await execFileAsync("ps", ["-eo", "pid,tty,args"], {
192
+ timeout: 30_000,
193
+ });
194
+ if (!psOut)
195
+ return PROCESS_PROBE_INDETERMINATE;
196
+ const ttySet = new Set(ttys.map((t) => t.replace(/^\/dev\//, "")));
197
+ const processRe = /(?:^|\/)aider(?:\s|$)/;
198
+ for (const line of psOut.split("\n")) {
199
+ const cols = line.trimStart().split(/\s+/);
200
+ if (cols.length < 3 || !ttySet.has(cols[1] ?? ""))
201
+ continue;
202
+ const args = cols.slice(2).join(" ");
203
+ if (processRe.test(args)) {
204
+ return true;
205
+ }
206
+ }
207
+ return false;
208
+ }
209
+ const rawPid = handle.data["pid"];
210
+ const pid = typeof rawPid === "number" ? rawPid : Number(rawPid);
211
+ if (Number.isFinite(pid) && pid > 0) {
212
+ try {
213
+ process.kill(pid, 0);
214
+ return true;
215
+ }
216
+ catch (err) {
217
+ if (err instanceof Error && "code" in err && err.code === "EPERM") {
218
+ return true;
219
+ }
220
+ return false;
221
+ }
222
+ }
223
+ return false;
224
+ }
225
+ catch {
226
+ return PROCESS_PROBE_INDETERMINATE;
227
+ }
228
+ },
229
+ async getSessionInfo(session) {
230
+ if (!session.workspacePath)
231
+ return null;
232
+ const summary = await extractAiderSummary(session.workspacePath);
233
+ if (!summary)
234
+ return null;
235
+ return {
236
+ summary,
237
+ summaryIsFallback: true,
238
+ agentSessionId: null,
239
+ // Aider doesn't expose token/cost data
240
+ };
241
+ },
242
+ // Aider doesn't support session resume — return null so caller falls back to getLaunchCommand
243
+ async getRestoreCommand() {
244
+ return null;
245
+ },
246
+ async setupWorkspaceHooks(_workspacePath, _config) {
247
+ // PATH wrappers are installed by session-manager for all agents.
248
+ },
249
+ async postLaunchSetup(_session) {
250
+ // PATH wrappers are re-ensured by session-manager.
251
+ },
252
+ };
253
+ }
254
+ // =============================================================================
255
+ // Plugin Export
256
+ // =============================================================================
257
+ export function create() {
258
+ return createAiderAgent();
259
+ }
260
+ export function detect() {
261
+ try {
262
+ execFileSync("aider", ["--version"], {
263
+ stdio: "ignore",
264
+ shell: isWindows(),
265
+ windowsHide: true,
266
+ });
267
+ return true;
268
+ }
269
+ catch {
270
+ return false;
271
+ }
272
+ }
273
+ export default { manifest, create, detect };
274
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@made-by-moonlight/athene-plugin-agent-aider",
3
+ "version": "0.9.1",
4
+ "description": "Agent plugin: Aider",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/slievr/Athene.git",
21
+ "directory": "packages/plugins/agent-aider"
22
+ },
23
+ "homepage": "https://github.com/slievr/Athene",
24
+ "bugs": {
25
+ "url": "https://github.com/slievr/Athene/issues"
26
+ },
27
+ "engines": {
28
+ "node": ">=20.0.0"
29
+ },
30
+ "dependencies": {
31
+ "@made-by-moonlight/athene-core": "0.9.1"
32
+ },
33
+ "devDependencies": {
34
+ "@types/node": "^25.2.3",
35
+ "typescript": "^5.7.0",
36
+ "vitest": "^3.0.0"
37
+ },
38
+ "publishConfig": {
39
+ "access": "public"
40
+ },
41
+ "scripts": {
42
+ "build": "tsc",
43
+ "typecheck": "tsc --noEmit",
44
+ "test": "vitest run",
45
+ "clean": "rm -rf dist"
46
+ }
47
+ }