@action-llama/action-llama 0.18.11 → 0.19.0
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/dist/agents/container-entry.d.ts.map +1 -1
- package/dist/agents/container-entry.js +16 -158
- package/dist/agents/container-entry.js.map +1 -1
- package/dist/agents/container-runner.d.ts +10 -1
- package/dist/agents/container-runner.d.ts.map +1 -1
- package/dist/agents/container-runner.js +125 -121
- package/dist/agents/container-runner.js.map +1 -1
- package/dist/agents/session-loop.d.ts +22 -0
- package/dist/agents/session-loop.d.ts.map +1 -0
- package/dist/agents/session-loop.js +159 -0
- package/dist/agents/session-loop.js.map +1 -0
- package/dist/agents/types.d.ts +17 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/build-info.json +1 -1
- package/dist/cli/commands/run-agent.d.ts.map +1 -1
- package/dist/cli/commands/run-agent.js +16 -117
- package/dist/cli/commands/run-agent.js.map +1 -1
- package/dist/control/routes/dashboard-api.d.ts.map +1 -1
- package/dist/control/routes/dashboard-api.js +43 -0
- package/dist/control/routes/dashboard-api.js.map +1 -1
- package/dist/control/routes/stats.d.ts.map +1 -1
- package/dist/control/routes/stats.js +54 -0
- package/dist/control/routes/stats.js.map +1 -1
- package/dist/db/connection.d.ts +20 -0
- package/dist/db/connection.d.ts.map +1 -0
- package/dist/db/connection.js +34 -0
- package/dist/db/connection.js.map +1 -0
- package/dist/db/index.d.ts +8 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +7 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrate.d.ts +27 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/migrate.js +180 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/schema.d.ts +1383 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +158 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/docker/local-runtime.js +1 -1
- package/dist/docker/local-runtime.js.map +1 -1
- package/dist/docker/ssh-docker-runtime.js +1 -1
- package/dist/docker/ssh-docker-runtime.js.map +1 -1
- package/dist/events/event-queue-sqlite.d.ts +8 -3
- package/dist/events/event-queue-sqlite.d.ts.map +1 -1
- package/dist/events/event-queue-sqlite.js +42 -41
- package/dist/events/event-queue-sqlite.js.map +1 -1
- package/dist/execution/execution.d.ts +1 -0
- package/dist/execution/execution.d.ts.map +1 -1
- package/dist/execution/execution.js +8 -3
- package/dist/execution/execution.js.map +1 -1
- package/dist/frontend/assets/index-BO_q8PRQ.css +2 -0
- package/dist/frontend/assets/index-DKQX_6iM.js +13 -0
- package/dist/frontend/index.html +2 -2
- package/dist/gateway/frontend.d.ts +20 -0
- package/dist/gateway/frontend.d.ts.map +1 -0
- package/dist/gateway/frontend.js +80 -0
- package/dist/gateway/frontend.js.map +1 -0
- package/dist/gateway/index.d.ts +3 -70
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +109 -214
- package/dist/gateway/index.js.map +1 -1
- package/dist/gateway/middleware/auth.d.ts +12 -0
- package/dist/gateway/middleware/auth.d.ts.map +1 -0
- package/dist/gateway/middleware/auth.js +25 -0
- package/dist/gateway/middleware/auth.js.map +1 -0
- package/dist/gateway/middleware/request-logging.d.ts +9 -0
- package/dist/gateway/middleware/request-logging.d.ts.map +1 -0
- package/dist/gateway/middleware/request-logging.js +26 -0
- package/dist/gateway/middleware/request-logging.js.map +1 -0
- package/dist/gateway/middleware/telemetry.d.ts +7 -0
- package/dist/gateway/middleware/telemetry.d.ts.map +1 -0
- package/dist/gateway/middleware/telemetry.js +28 -0
- package/dist/gateway/middleware/telemetry.js.map +1 -0
- package/dist/gateway/routes/chat.d.ts +32 -0
- package/dist/gateway/routes/chat.d.ts.map +1 -0
- package/dist/gateway/routes/chat.js +24 -0
- package/dist/gateway/routes/chat.js.map +1 -0
- package/dist/gateway/routes/dashboard.d.ts +19 -0
- package/dist/gateway/routes/dashboard.d.ts.map +1 -0
- package/dist/gateway/routes/dashboard.js +26 -0
- package/dist/gateway/routes/dashboard.js.map +1 -0
- package/dist/gateway/routes/execution.d.ts +24 -0
- package/dist/gateway/routes/execution.d.ts.map +1 -0
- package/dist/gateway/routes/execution.js +13 -0
- package/dist/gateway/routes/execution.js.map +1 -0
- package/dist/gateway/routes/system.d.ts +14 -0
- package/dist/gateway/routes/system.d.ts.map +1 -0
- package/dist/gateway/routes/system.js +18 -0
- package/dist/gateway/routes/system.js.map +1 -0
- package/dist/gateway/routes/webhooks.d.ts +20 -0
- package/dist/gateway/routes/webhooks.d.ts.map +1 -0
- package/dist/gateway/routes/webhooks.js +11 -0
- package/dist/gateway/routes/webhooks.js.map +1 -0
- package/dist/gateway/stores.d.ts +21 -0
- package/dist/gateway/stores.d.ts.map +1 -0
- package/dist/gateway/stores.js +24 -0
- package/dist/gateway/stores.js.map +1 -0
- package/dist/gateway/types.d.ts +65 -0
- package/dist/gateway/types.d.ts.map +1 -0
- package/dist/gateway/types.js +2 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/scheduler/dependencies.d.ts +11 -0
- package/dist/scheduler/dependencies.d.ts.map +1 -0
- package/dist/scheduler/dependencies.js +34 -0
- package/dist/scheduler/dependencies.js.map +1 -0
- package/dist/scheduler/gateway-setup.d.ts.map +1 -1
- package/dist/scheduler/gateway-setup.js +8 -2
- package/dist/scheduler/gateway-setup.js.map +1 -1
- package/dist/scheduler/index.d.ts +1 -1
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +20 -176
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/orphan-recovery.d.ts +25 -0
- package/dist/scheduler/orphan-recovery.d.ts.map +1 -0
- package/dist/scheduler/orphan-recovery.js +130 -0
- package/dist/scheduler/orphan-recovery.js.map +1 -0
- package/dist/scheduler/persistence.d.ts +18 -0
- package/dist/scheduler/persistence.d.ts.map +1 -0
- package/dist/scheduler/persistence.js +42 -0
- package/dist/scheduler/persistence.js.map +1 -0
- package/dist/scheduler/shutdown.d.ts +2 -0
- package/dist/scheduler/shutdown.d.ts.map +1 -1
- package/dist/scheduler/shutdown.js +8 -1
- package/dist/scheduler/shutdown.js.map +1 -1
- package/dist/shared/config/index.d.ts +5 -0
- package/dist/shared/config/index.d.ts.map +1 -0
- package/dist/shared/config/index.js +5 -0
- package/dist/shared/config/index.js.map +1 -0
- package/dist/shared/config/load-agent.d.ts +27 -0
- package/dist/shared/config/load-agent.d.ts.map +1 -0
- package/dist/shared/config/load-agent.js +169 -0
- package/dist/shared/config/load-agent.js.map +1 -0
- package/dist/shared/config/load-project.d.ts +22 -0
- package/dist/shared/config/load-project.d.ts.map +1 -0
- package/dist/shared/config/load-project.js +84 -0
- package/dist/shared/config/load-project.js.map +1 -0
- package/dist/shared/config/types.d.ts +115 -0
- package/dist/shared/config/types.d.ts.map +1 -0
- package/dist/shared/config/types.js +2 -0
- package/dist/shared/config/types.js.map +1 -0
- package/dist/shared/config/validate.d.ts +4 -0
- package/dist/shared/config/validate.d.ts.map +1 -0
- package/dist/shared/config/validate.js +23 -0
- package/dist/shared/config/validate.js.map +1 -0
- package/dist/shared/config.d.ts +4 -161
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +5 -269
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/constants.d.ts +2 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +2 -0
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/errors.js +1 -1
- package/dist/shared/errors.js.map +1 -1
- package/dist/shared/paths.d.ts +6 -0
- package/dist/shared/paths.d.ts.map +1 -1
- package/dist/shared/paths.js +12 -0
- package/dist/shared/paths.js.map +1 -1
- package/dist/shared/persistence/backends/sqlite.d.ts +9 -5
- package/dist/shared/persistence/backends/sqlite.d.ts.map +1 -1
- package/dist/shared/persistence/backends/sqlite.js +107 -135
- package/dist/shared/persistence/backends/sqlite.js.map +1 -1
- package/dist/shared/queue-sqlite.d.ts +9 -4
- package/dist/shared/queue-sqlite.d.ts.map +1 -1
- package/dist/shared/queue-sqlite.js +41 -36
- package/dist/shared/queue-sqlite.js.map +1 -1
- package/dist/shared/state-store-sqlite.d.ts +8 -3
- package/dist/shared/state-store-sqlite.d.ts.map +1 -1
- package/dist/shared/state-store-sqlite.js +55 -37
- package/dist/shared/state-store-sqlite.js.map +1 -1
- package/dist/stats/store.d.ts +11 -2
- package/dist/stats/store.d.ts.map +1 -1
- package/dist/stats/store.js +200 -291
- package/dist/stats/store.js.map +1 -1
- package/package.json +4 -1
- package/dist/agents/execution-engine.d.ts +0 -19
- package/dist/agents/execution-engine.d.ts.map +0 -1
- package/dist/agents/execution-engine.js +0 -179
- package/dist/agents/execution-engine.js.map +0 -1
- package/dist/agents/runner.d.ts +0 -38
- package/dist/agents/runner.d.ts.map +0 -1
- package/dist/agents/runner.js +0 -375
- package/dist/agents/runner.js.map +0 -1
- package/dist/frontend/assets/index-CSIS2n0j.css +0 -2
- package/dist/frontend/assets/index-W_Sfmu8j.js +0 -13
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@action-llama/action-llama",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"description": "Automated development agents triggered by cron or webhooks. BYOM — bring your own model.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"build:assets": "node -e \"const fs=require('fs'),s='../frontend/dist',d='dist/frontend';fs.existsSync(s+'/index.html')?(fs.cpSync(s,d,{recursive:true}),console.log('Copied frontend dist → dist/frontend')):console.log('Frontend dist not found, skipping')\"",
|
|
43
43
|
"clean": "rm -rf dist",
|
|
44
44
|
"prebuild": "npm run clean",
|
|
45
|
+
"db:generate": "drizzle-kit generate",
|
|
45
46
|
"test:playwright": "npx playwright test --config playwright.config.ts"
|
|
46
47
|
},
|
|
47
48
|
"dependencies": {
|
|
@@ -59,6 +60,7 @@
|
|
|
59
60
|
"better-sqlite3": "^12.8.0",
|
|
60
61
|
"commander": "^14.0.3",
|
|
61
62
|
"croner": "^10.0.1",
|
|
63
|
+
"drizzle-orm": "^0.38.4",
|
|
62
64
|
"hono": "^4.12.5",
|
|
63
65
|
"ink": "^6.8.0",
|
|
64
66
|
"pino": "^10.3.1",
|
|
@@ -73,6 +75,7 @@
|
|
|
73
75
|
"@types/better-sqlite3": "^7.6.13",
|
|
74
76
|
"@types/react": "^19.2.14",
|
|
75
77
|
"@types/ws": "^8.18.1",
|
|
78
|
+
"drizzle-kit": "^0.30.6",
|
|
76
79
|
"ink-testing-library": "^4.0.0"
|
|
77
80
|
}
|
|
78
81
|
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { AgentConfig } from "../shared/config.js";
|
|
2
|
-
import type { Logger } from "../shared/logger.js";
|
|
3
|
-
import type { StatusTracker } from "../tui/status-tracker.js";
|
|
4
|
-
import type { TokenUsage } from "../shared/usage.js";
|
|
5
|
-
export type RunResult = "completed" | "rerun" | "error";
|
|
6
|
-
export interface ExecutionResult {
|
|
7
|
-
result: RunResult;
|
|
8
|
-
outputText: string;
|
|
9
|
-
unrecoverableErrors: number;
|
|
10
|
-
usage?: TokenUsage;
|
|
11
|
-
}
|
|
12
|
-
export declare class ExecutionEngine {
|
|
13
|
-
private agentConfig;
|
|
14
|
-
private logger;
|
|
15
|
-
private statusTracker?;
|
|
16
|
-
constructor(agentConfig: AgentConfig, logger: Logger, statusTracker?: StatusTracker);
|
|
17
|
-
execute(prompt: string, cwd: string): Promise<ExecutionResult>;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=execution-engine.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execution-engine.d.ts","sourceRoot":"","sources":["../../src/agents/execution-engine.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKrD,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAC,CAAgB;gBAE1B,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa;IAM7E,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CA6KrE"}
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import { DefaultResourceLoader, SettingsManager, } from "@mariozechner/pi-coding-agent";
|
|
2
|
-
import { readFileSync, existsSync, mkdtempSync, rmSync } from "fs";
|
|
3
|
-
import { resolve, join } from "path";
|
|
4
|
-
import { tmpdir } from "os";
|
|
5
|
-
import { loadCredentialField } from "../shared/credentials.js";
|
|
6
|
-
import { AgentError, isUnrecoverableError, UNRECOVERABLE_THRESHOLD } from "../shared/errors.js";
|
|
7
|
-
import { installSignalCommands, readSignals } from "./signals.js";
|
|
8
|
-
import { sessionStatsToUsage } from "../shared/usage.js";
|
|
9
|
-
import { circuitBreaker, selectAvailableModels, isRateLimitError } from "./model-fallback.js";
|
|
10
|
-
import { createSessionForModel } from "./session-factory.js";
|
|
11
|
-
export class ExecutionEngine {
|
|
12
|
-
agentConfig;
|
|
13
|
-
logger;
|
|
14
|
-
statusTracker;
|
|
15
|
-
constructor(agentConfig, logger, statusTracker) {
|
|
16
|
-
this.agentConfig = agentConfig;
|
|
17
|
-
this.logger = logger;
|
|
18
|
-
this.statusTracker = statusTracker;
|
|
19
|
-
}
|
|
20
|
-
async execute(prompt, cwd) {
|
|
21
|
-
// Set up file-based signal IPC
|
|
22
|
-
const signalTmpDir = mkdtempSync(join(tmpdir(), "al-signals-"));
|
|
23
|
-
const signalDir = join(signalTmpDir, "signals");
|
|
24
|
-
const signalBinDir = join(signalTmpDir, "bin");
|
|
25
|
-
installSignalCommands(signalBinDir, signalDir);
|
|
26
|
-
const savedPath = process.env.PATH;
|
|
27
|
-
process.env.PATH = `${signalBinDir}:${process.env.PATH || ""}`;
|
|
28
|
-
process.env.AL_SIGNAL_DIR = signalDir;
|
|
29
|
-
const agentsFile = resolve(cwd, "SKILL.md");
|
|
30
|
-
// SKILL.md must exist on disk (written during al new)
|
|
31
|
-
if (!existsSync(agentsFile)) {
|
|
32
|
-
throw new AgentError(`SKILL.md not found at ${agentsFile}. Run 'al new' to create it.`);
|
|
33
|
-
}
|
|
34
|
-
const agentsContent = readFileSync(agentsFile, "utf-8");
|
|
35
|
-
const resourceLoader = new DefaultResourceLoader({
|
|
36
|
-
noExtensions: true,
|
|
37
|
-
agentsFilesOverride: () => ({
|
|
38
|
-
agentsFiles: [
|
|
39
|
-
{ path: agentsFile, content: agentsContent },
|
|
40
|
-
],
|
|
41
|
-
}),
|
|
42
|
-
});
|
|
43
|
-
await resourceLoader.reload();
|
|
44
|
-
const settingsManager = SettingsManager.inMemory({
|
|
45
|
-
compaction: { enabled: true },
|
|
46
|
-
retry: { enabled: true, maxRetries: 2 },
|
|
47
|
-
});
|
|
48
|
-
// Model fallback loop
|
|
49
|
-
const MAX_PASSES = 3;
|
|
50
|
-
const DEFAULT_BACKOFF_MS = 30_000;
|
|
51
|
-
const MAX_BACKOFF_MS = 300_000;
|
|
52
|
-
const pendingCmds = new Map();
|
|
53
|
-
let outputText = "";
|
|
54
|
-
let currentTurnText = "";
|
|
55
|
-
let unrecoverableErrors = 0;
|
|
56
|
-
let usage;
|
|
57
|
-
for (let pass = 0; pass <= MAX_PASSES; pass++) {
|
|
58
|
-
const availableModels = selectAvailableModels(this.agentConfig.models, circuitBreaker);
|
|
59
|
-
let modelSucceeded = false;
|
|
60
|
-
for (const modelConfig of availableModels) {
|
|
61
|
-
this.logger.info({ provider: modelConfig.provider, model: modelConfig.model }, "trying model");
|
|
62
|
-
const { session } = await createSessionForModel(modelConfig, {
|
|
63
|
-
cwd,
|
|
64
|
-
resourceLoader,
|
|
65
|
-
settingsManager,
|
|
66
|
-
loadCredential: loadCredentialField,
|
|
67
|
-
});
|
|
68
|
-
// Subscribe to events for logging
|
|
69
|
-
session.subscribe((event) => {
|
|
70
|
-
if (event.type === "message_update" && event.assistantMessageEvent?.type === "text_delta") {
|
|
71
|
-
const delta = event.assistantMessageEvent.delta;
|
|
72
|
-
outputText += delta;
|
|
73
|
-
currentTurnText += delta;
|
|
74
|
-
}
|
|
75
|
-
if (event.type === "message_end") {
|
|
76
|
-
if (currentTurnText.trim()) {
|
|
77
|
-
this.logger.info({ text: currentTurnText.trim() }, "assistant");
|
|
78
|
-
}
|
|
79
|
-
currentTurnText = "";
|
|
80
|
-
}
|
|
81
|
-
if (event.type === "tool_execution_start") {
|
|
82
|
-
const cmd = String(event.args?.command || "");
|
|
83
|
-
if (event.toolName === "bash") {
|
|
84
|
-
pendingCmds.set(event.toolCallId, cmd);
|
|
85
|
-
this.logger.info({ cmd: cmd.slice(0, 200) }, "bash");
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
this.logger.debug({ tool: event.toolName }, "tool start");
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
if (event.type === "tool_execution_end") {
|
|
92
|
-
const resultStr = typeof event.result === "string"
|
|
93
|
-
? event.result
|
|
94
|
-
: JSON.stringify(event.result);
|
|
95
|
-
const originCmd = pendingCmds.get(event.toolCallId);
|
|
96
|
-
pendingCmds.delete(event.toolCallId);
|
|
97
|
-
if (event.isError) {
|
|
98
|
-
this.logger.error({ tool: event.toolName, result: resultStr.slice(0, 1000) }, "tool error");
|
|
99
|
-
let errorMsg = resultStr;
|
|
100
|
-
try {
|
|
101
|
-
const parsed = JSON.parse(resultStr);
|
|
102
|
-
if (parsed?.content?.[0]?.text) {
|
|
103
|
-
errorMsg = parsed.content[0].text;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
catch { /* use raw string */ }
|
|
107
|
-
const cmdPrefix = originCmd ? `$ ${originCmd.slice(0, 80)} — ` : "";
|
|
108
|
-
const detail = `${cmdPrefix}${errorMsg.slice(0, 200)}`;
|
|
109
|
-
this.statusTracker?.setAgentError(this.agentConfig.name, detail);
|
|
110
|
-
this.statusTracker?.addLogLine(this.agentConfig.name, `ERROR: ${detail}`);
|
|
111
|
-
if (isUnrecoverableError(errorMsg)) {
|
|
112
|
-
unrecoverableErrors++;
|
|
113
|
-
if (unrecoverableErrors >= UNRECOVERABLE_THRESHOLD) {
|
|
114
|
-
this.logger.error("Aborting: repeated auth/permission failures — check credentials");
|
|
115
|
-
this.statusTracker?.addLogLine(this.agentConfig.name, "ABORT: repeated auth/permission failures — check credentials");
|
|
116
|
-
session.dispose();
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
this.logger.debug({ tool: event.toolName, resultLength: resultStr.length }, "tool done");
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
try {
|
|
126
|
-
await session.prompt(prompt);
|
|
127
|
-
circuitBreaker.recordSuccess(modelConfig.provider, modelConfig.model);
|
|
128
|
-
const sessionStats = session.getSessionStats();
|
|
129
|
-
usage = sessionStatsToUsage(sessionStats);
|
|
130
|
-
session.dispose();
|
|
131
|
-
modelSucceeded = true;
|
|
132
|
-
break;
|
|
133
|
-
}
|
|
134
|
-
catch (promptErr) {
|
|
135
|
-
const msg = String(promptErr?.message || promptErr || "");
|
|
136
|
-
if (isRateLimitError(msg)) {
|
|
137
|
-
circuitBreaker.recordFailure(modelConfig.provider, modelConfig.model);
|
|
138
|
-
this.logger.warn({ provider: modelConfig.provider, model: modelConfig.model }, "rate limited, trying next model");
|
|
139
|
-
this.statusTracker?.addLogLine(this.agentConfig.name, `Rate limited on ${modelConfig.model}, trying fallback...`);
|
|
140
|
-
session.dispose();
|
|
141
|
-
continue;
|
|
142
|
-
}
|
|
143
|
-
session.dispose();
|
|
144
|
-
throw promptErr;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
if (modelSucceeded)
|
|
148
|
-
break;
|
|
149
|
-
if (pass < MAX_PASSES) {
|
|
150
|
-
const delayMs = Math.min(DEFAULT_BACKOFF_MS * Math.pow(2, pass), MAX_BACKOFF_MS);
|
|
151
|
-
this.logger.warn({ pass: pass + 1, delayMs }, "all models exhausted, backing off");
|
|
152
|
-
this.statusTracker?.addLogLine(this.agentConfig.name, `All models exhausted, retrying in ${Math.round(delayMs / 1000)}s...`);
|
|
153
|
-
await new Promise((r) => setTimeout(r, delayMs));
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
// Read signal files
|
|
157
|
-
const signals = readSignals(signalDir);
|
|
158
|
-
// Clean up signal dir and restore PATH
|
|
159
|
-
if (savedPath !== undefined) {
|
|
160
|
-
process.env.PATH = savedPath;
|
|
161
|
-
}
|
|
162
|
-
delete process.env.AL_SIGNAL_DIR;
|
|
163
|
-
try {
|
|
164
|
-
rmSync(signalTmpDir, { recursive: true, force: true });
|
|
165
|
-
}
|
|
166
|
-
catch { /* best-effort */ }
|
|
167
|
-
let result;
|
|
168
|
-
if (signals.rerun) {
|
|
169
|
-
this.logger.info({ outputLength: outputText.length }, "run completed, rerun requested");
|
|
170
|
-
result = "rerun";
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
this.logger.info({ outputLength: outputText.length }, "run completed");
|
|
174
|
-
result = "completed";
|
|
175
|
-
}
|
|
176
|
-
return { result, outputText, unrecoverableErrors, usage };
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
//# sourceMappingURL=execution-engine.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execution-engine.js","sourceRoot":"","sources":["../../src/agents/execution-engine.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/runner.d.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { AgentConfig } from "../shared/config.js";
|
|
2
|
-
import type { Logger } from "../shared/logger.js";
|
|
3
|
-
import type { StatusTracker } from "../tui/status-tracker.js";
|
|
4
|
-
import type { TokenUsage } from "../shared/usage.js";
|
|
5
|
-
export type RunResult = "completed" | "rerun" | "error";
|
|
6
|
-
export interface TriggerRequest {
|
|
7
|
-
agent: string;
|
|
8
|
-
context: string;
|
|
9
|
-
}
|
|
10
|
-
export interface RunOutcome {
|
|
11
|
-
result: RunResult;
|
|
12
|
-
triggers: TriggerRequest[];
|
|
13
|
-
returnValue?: string;
|
|
14
|
-
exitCode?: number;
|
|
15
|
-
exitReason?: string;
|
|
16
|
-
usage?: TokenUsage;
|
|
17
|
-
preHookMs?: number;
|
|
18
|
-
postHookMs?: number;
|
|
19
|
-
}
|
|
20
|
-
export declare class AgentRunner {
|
|
21
|
-
private running;
|
|
22
|
-
private agentConfig;
|
|
23
|
-
private baseLogger;
|
|
24
|
-
private logger;
|
|
25
|
-
private projectPath;
|
|
26
|
-
private statusTracker?;
|
|
27
|
-
instanceId: string;
|
|
28
|
-
private abortController;
|
|
29
|
-
constructor(agentConfig: AgentConfig, logger: Logger, projectPath: string, statusTracker?: StatusTracker);
|
|
30
|
-
get isRunning(): boolean;
|
|
31
|
-
abort(): void;
|
|
32
|
-
run(prompt: string, triggerInfo?: {
|
|
33
|
-
type: 'schedule' | 'manual' | 'webhook' | 'agent';
|
|
34
|
-
source?: string;
|
|
35
|
-
}, instanceId?: string): Promise<RunOutcome>;
|
|
36
|
-
private _runInternal;
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAO9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKrD,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAC,CAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,eAAe,CAAkB;gBAE7B,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa;IAUxG,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,KAAK,IAAI,IAAI;IAKP,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;YA8C3I,YAAY;CAwT3B"}
|