@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 +22 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +274 -0
- package/dist/index.js.map +1 -0
- package/package.json +47 -0
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.
|
package/dist/index.d.ts
ADDED
|
@@ -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
|
+
}
|