@northflare/runner 0.0.13 → 0.0.16
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/README.md +8 -5
- package/bin/northflare-runner +44 -16
- package/dist/components/claude-sdk-manager.d.ts +3 -3
- package/dist/components/claude-sdk-manager.d.ts.map +1 -1
- package/dist/components/claude-sdk-manager.js +80 -111
- package/dist/components/claude-sdk-manager.js.map +1 -1
- package/dist/components/codex-sdk-manager.d.ts +15 -6
- package/dist/components/codex-sdk-manager.d.ts.map +1 -1
- package/dist/components/codex-sdk-manager.js +128 -97
- package/dist/components/codex-sdk-manager.js.map +1 -1
- package/dist/components/enhanced-repository-manager.d.ts +2 -2
- package/dist/components/enhanced-repository-manager.d.ts.map +1 -1
- package/dist/components/enhanced-repository-manager.js +68 -75
- package/dist/components/enhanced-repository-manager.js.map +1 -1
- package/dist/components/message-handler-sse.d.ts +1 -1
- package/dist/components/message-handler-sse.d.ts.map +1 -1
- package/dist/components/message-handler-sse.js +205 -97
- package/dist/components/message-handler-sse.js.map +1 -1
- package/dist/components/{claude-manager.d.ts → northflare-agent-sdk-manager.d.ts} +17 -14
- package/dist/components/northflare-agent-sdk-manager.d.ts.map +1 -0
- package/dist/components/northflare-agent-sdk-manager.js +1456 -0
- package/dist/components/northflare-agent-sdk-manager.js.map +1 -0
- package/dist/components/repository-manager.d.ts +2 -2
- package/dist/components/repository-manager.d.ts.map +1 -1
- package/dist/components/repository-manager.js +34 -74
- package/dist/components/repository-manager.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +115 -79
- package/dist/index.js.map +1 -1
- package/dist/runner-sse.d.ts +22 -5
- package/dist/runner-sse.d.ts.map +1 -1
- package/dist/runner-sse.js +95 -74
- package/dist/runner-sse.js.map +1 -1
- package/dist/services/RunnerAPIClient.d.ts +1 -1
- package/dist/services/RunnerAPIClient.d.ts.map +1 -1
- package/dist/services/RunnerAPIClient.js +3 -7
- package/dist/services/RunnerAPIClient.js.map +1 -1
- package/dist/services/SSEClient.js +5 -9
- package/dist/services/SSEClient.js.map +1 -1
- package/dist/types/claude.d.ts +16 -2
- package/dist/types/claude.d.ts.map +1 -1
- package/dist/types/claude.js +1 -2
- package/dist/types/claude.js.map +1 -1
- package/dist/types/index.d.ts +5 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -19
- package/dist/types/index.js.map +1 -1
- package/dist/types/messages.js +1 -2
- package/dist/types/messages.js.map +1 -1
- package/dist/types/runner-interface.d.ts +8 -4
- package/dist/types/runner-interface.d.ts.map +1 -1
- package/dist/types/runner-interface.js +1 -2
- package/dist/types/runner-interface.js.map +1 -1
- package/dist/utils/StateManager.js +12 -19
- package/dist/utils/StateManager.js.map +1 -1
- package/dist/utils/config.d.ts +1 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +19 -26
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/console.js +3 -6
- package/dist/utils/console.js.map +1 -1
- package/dist/utils/debug.js +1 -4
- package/dist/utils/debug.js.map +1 -1
- package/dist/utils/expand-env.js +1 -4
- package/dist/utils/expand-env.js.map +1 -1
- package/dist/utils/inactivity-timeout.d.ts +19 -0
- package/dist/utils/inactivity-timeout.d.ts.map +1 -0
- package/dist/utils/inactivity-timeout.js +72 -0
- package/dist/utils/inactivity-timeout.js.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +24 -35
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/model.d.ts +3 -1
- package/dist/utils/model.d.ts.map +1 -1
- package/dist/utils/model.js +18 -4
- package/dist/utils/model.js.map +1 -1
- package/dist/utils/status-line.d.ts +1 -0
- package/dist/utils/status-line.d.ts.map +1 -1
- package/dist/utils/status-line.js +25 -18
- package/dist/utils/status-line.js.map +1 -1
- package/dist/utils/tool-response-sanitizer.js +6 -10
- package/dist/utils/tool-response-sanitizer.js.map +1 -1
- package/lib/codex-sdk/dist/index.d.ts +1 -1
- package/lib/codex-sdk/dist/samples/basic_streaming.d.ts +3 -0
- package/lib/codex-sdk/dist/samples/basic_streaming.d.ts.map +1 -0
- package/lib/codex-sdk/dist/samples/basic_streaming.js +81 -0
- package/lib/codex-sdk/dist/samples/basic_streaming.js.map +1 -0
- package/lib/codex-sdk/dist/samples/helpers.d.ts +2 -0
- package/lib/codex-sdk/dist/samples/helpers.d.ts.map +1 -0
- package/lib/codex-sdk/dist/samples/helpers.js +6 -0
- package/lib/codex-sdk/dist/samples/helpers.js.map +1 -0
- package/lib/codex-sdk/dist/samples/structured_output.d.ts +3 -0
- package/lib/codex-sdk/dist/samples/structured_output.d.ts.map +1 -0
- package/lib/codex-sdk/dist/samples/structured_output.js +17 -0
- package/lib/codex-sdk/dist/samples/structured_output.js.map +1 -0
- package/lib/codex-sdk/dist/samples/structured_output_zod.d.ts +3 -0
- package/lib/codex-sdk/dist/samples/structured_output_zod.d.ts.map +1 -0
- package/lib/codex-sdk/dist/samples/structured_output_zod.js +16 -0
- package/lib/codex-sdk/dist/samples/structured_output_zod.js.map +1 -0
- package/lib/codex-sdk/dist/tsup.config.d.ts +3 -0
- package/lib/codex-sdk/dist/tsup.config.js +12 -0
- package/package.json +9 -4
- package/scripts/verify-openrouter-agent.ts +163 -0
- package/dist/collections/runner-messages.d.ts +0 -52
- package/dist/collections/runner-messages.d.ts.map +0 -1
- package/dist/collections/runner-messages.js +0 -161
- package/dist/collections/runner-messages.js.map +0 -1
- package/dist/components/claude-manager.d.ts.map +0 -1
- package/dist/components/claude-manager.js +0 -783
- package/dist/components/claude-manager.js.map +0 -1
- package/dist/components/message-handler.d.ts +0 -35
- package/dist/components/message-handler.d.ts.map +0 -1
- package/dist/components/message-handler.js +0 -689
- package/dist/components/message-handler.js.map +0 -1
- package/dist/runner.d.ts +0 -51
- package/dist/runner.d.ts.map +0 -1
- package/dist/runner.js +0 -530
- package/dist/runner.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Main entry point for the Northflare Runner App
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
-
};
|
|
19
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
20
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
21
|
-
};
|
|
22
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.ConfigManager = exports.RunnerApp = void 0;
|
|
24
|
-
exports.main = main;
|
|
25
|
-
const runner_sse_1 = require("./runner-sse");
|
|
26
|
-
const config_1 = require("./utils/config");
|
|
27
|
-
const logger_1 = require("./utils/logger");
|
|
28
|
-
const debug_1 = require("./utils/debug");
|
|
29
|
-
const path_1 = __importDefault(require("path"));
|
|
30
|
-
const promises_1 = __importDefault(require("fs/promises"));
|
|
4
|
+
import { RunnerApp } from './runner-sse.js';
|
|
5
|
+
import { ConfigManager } from './utils/config.js';
|
|
6
|
+
import { logger, configureFileLogging } from './utils/logger.js';
|
|
7
|
+
import { isRunnerDebugEnabled } from './utils/debug.js';
|
|
8
|
+
import { parseInactivityTimeout, formatInactivityTimeoutFromMs, } from './utils/inactivity-timeout.js';
|
|
9
|
+
import path from "path";
|
|
10
|
+
import fs from "fs/promises";
|
|
11
|
+
import envPaths from "env-paths";
|
|
12
|
+
const INACTIVITY_TIMEOUT_ENV_KEY = "NORTHFLARE_RUNNER_INACTIVITY_TIMEOUT";
|
|
13
|
+
const INACTIVITY_CHECK_INTERVAL_MS = 1000;
|
|
14
|
+
const ENV_PATHS_APP_NAME = "northflare-runner";
|
|
15
|
+
const ENV_PATHS_OPTIONS = { suffix: "" };
|
|
31
16
|
let runner = null;
|
|
17
|
+
let isShuttingDown = false;
|
|
18
|
+
let inactivityMonitorHandle = null;
|
|
19
|
+
let inactivityCountdownStart = null;
|
|
32
20
|
async function main() {
|
|
33
21
|
try {
|
|
34
|
-
|
|
35
|
-
const debugEnabled =
|
|
22
|
+
logger.info("Starting Northflare Runner...");
|
|
23
|
+
const debugEnabled = isRunnerDebugEnabled();
|
|
24
|
+
const inactivityEnvValue = process.env[INACTIVITY_TIMEOUT_ENV_KEY];
|
|
25
|
+
let inactivitySetting = null;
|
|
26
|
+
if (inactivityEnvValue) {
|
|
27
|
+
try {
|
|
28
|
+
inactivitySetting = parseInactivityTimeout(inactivityEnvValue);
|
|
29
|
+
logger.info(`Runner will terminate after ${inactivitySetting.display} with no active agent processes`);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
33
|
+
logger.error(`Invalid inactivity timeout '${inactivityEnvValue}': ${errorMessage}`);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
36
37
|
// Load configuration (args already parsed by CLI)
|
|
37
38
|
let configPath = process.argv[2]; // This is set by the CLI if --config was provided
|
|
38
39
|
// If no config path provided, check for default location
|
|
39
40
|
if (!configPath) {
|
|
40
41
|
try {
|
|
41
|
-
const
|
|
42
|
-
const
|
|
43
|
-
const defaultConfigPath = path_1.default.join(paths.config, "config.json");
|
|
42
|
+
const paths = envPaths(ENV_PATHS_APP_NAME, ENV_PATHS_OPTIONS);
|
|
43
|
+
const defaultConfigPath = path.join(paths.config, "config.json");
|
|
44
44
|
// Check if default config exists
|
|
45
|
-
if (await
|
|
45
|
+
if (await fs
|
|
46
46
|
.access(defaultConfigPath)
|
|
47
47
|
.then(() => true)
|
|
48
48
|
.catch(() => false)) {
|
|
@@ -53,12 +53,16 @@ async function main() {
|
|
|
53
53
|
// env-paths not available or error accessing default location
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
const config = await
|
|
56
|
+
const config = await ConfigManager.loadConfig(configPath);
|
|
57
|
+
if (inactivitySetting) {
|
|
58
|
+
config.inactivityTimeoutMs = inactivitySetting.milliseconds;
|
|
59
|
+
config.inactivityTimeoutDisplay = inactivitySetting.display;
|
|
60
|
+
}
|
|
57
61
|
// Set up file logging
|
|
58
|
-
const logDir =
|
|
59
|
-
await
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
const logDir = path.join(config.dataDir, "logs");
|
|
63
|
+
await fs.mkdir(logDir, { recursive: true });
|
|
64
|
+
configureFileLogging(logDir);
|
|
65
|
+
logger.info("Configuration loaded", {
|
|
62
66
|
orchestratorUrl: config.orchestratorUrl,
|
|
63
67
|
retryStrategy: config.retryStrategy,
|
|
64
68
|
retryIntervalSecs: config.retryIntervalSecs,
|
|
@@ -66,7 +70,7 @@ async function main() {
|
|
|
66
70
|
});
|
|
67
71
|
// Additional debug logging
|
|
68
72
|
if (debugEnabled) {
|
|
69
|
-
|
|
73
|
+
logger.debug("Debug mode enabled - verbose logging active", {
|
|
70
74
|
dataDir: config.dataDir,
|
|
71
75
|
heartbeatInterval: config.heartbeatInterval,
|
|
72
76
|
nodeVersion: process.version,
|
|
@@ -75,16 +79,21 @@ async function main() {
|
|
|
75
79
|
});
|
|
76
80
|
}
|
|
77
81
|
// Create and start runner - pass the resolved config path
|
|
78
|
-
runner = new
|
|
82
|
+
runner = new RunnerApp(config, configPath);
|
|
79
83
|
await runner.start();
|
|
80
84
|
// Set up graceful shutdown handlers
|
|
81
85
|
setupShutdownHandlers();
|
|
82
|
-
|
|
86
|
+
if (config.inactivityTimeoutMs) {
|
|
87
|
+
const timeoutLabel = config.inactivityTimeoutDisplay ||
|
|
88
|
+
formatInactivityTimeoutFromMs(config.inactivityTimeoutMs);
|
|
89
|
+
startInactivityMonitor(config.inactivityTimeoutMs, timeoutLabel);
|
|
90
|
+
}
|
|
91
|
+
logger.info("Northflare Runner is running", {
|
|
83
92
|
runnerId: runner.getRunnerId() || "pending registration",
|
|
84
93
|
});
|
|
85
94
|
// Log additional details in debug mode
|
|
86
95
|
if (debugEnabled && runner) {
|
|
87
|
-
|
|
96
|
+
logger.debug("Runner started with full details", {
|
|
88
97
|
runnerId: runner.getRunnerId(),
|
|
89
98
|
runnerUid: runner.getRunnerUid(),
|
|
90
99
|
lastProcessedAt: runner.getLastProcessedAt()?.toISOString() || "null",
|
|
@@ -95,74 +104,101 @@ async function main() {
|
|
|
95
104
|
}
|
|
96
105
|
}
|
|
97
106
|
catch (error) {
|
|
98
|
-
|
|
107
|
+
logger.error("Failed to start runner:", error);
|
|
99
108
|
process.exit(1);
|
|
100
109
|
}
|
|
101
110
|
}
|
|
102
111
|
function setupShutdownHandlers() {
|
|
103
|
-
let isShuttingDown = false;
|
|
104
112
|
// Handle various shutdown signals
|
|
105
113
|
const signals = ["SIGTERM", "SIGINT", "SIGHUP"];
|
|
106
114
|
for (const signal of signals) {
|
|
107
|
-
process.on(signal,
|
|
108
|
-
|
|
109
|
-
logger_1.logger.info(`Already shutting down, ignoring ${signal}`);
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
isShuttingDown = true;
|
|
113
|
-
logger_1.logger.info(`Received ${signal}, shutting down gracefully...`);
|
|
114
|
-
await shutdown();
|
|
115
|
+
process.on(signal, () => {
|
|
116
|
+
beginShutdown(0, `Received ${signal}, shutting down gracefully...`);
|
|
115
117
|
});
|
|
116
118
|
}
|
|
117
119
|
// Handle uncaught exceptions
|
|
118
|
-
process.on("uncaughtException",
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
isShuttingDown = true;
|
|
122
|
-
await shutdown(1);
|
|
123
|
-
}
|
|
120
|
+
process.on("uncaughtException", (error) => {
|
|
121
|
+
logger.error("Uncaught exception:", error);
|
|
122
|
+
beginShutdown(1);
|
|
124
123
|
});
|
|
125
124
|
// Handle unhandled promise rejections
|
|
126
|
-
process.on("unhandledRejection",
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
isShuttingDown = true;
|
|
130
|
-
await shutdown(1);
|
|
131
|
-
}
|
|
125
|
+
process.on("unhandledRejection", (reason, promise) => {
|
|
126
|
+
logger.error("Unhandled rejection", { promise, reason });
|
|
127
|
+
beginShutdown(1);
|
|
132
128
|
});
|
|
133
129
|
// Handle process warnings
|
|
134
130
|
process.on("warning", (warning) => {
|
|
135
|
-
|
|
131
|
+
logger.warn("Process warning", {
|
|
136
132
|
name: warning.name,
|
|
137
133
|
message: warning.message,
|
|
138
134
|
stack: warning.stack,
|
|
139
135
|
});
|
|
140
136
|
});
|
|
141
137
|
}
|
|
138
|
+
function startInactivityMonitor(timeoutMs, displayLabel) {
|
|
139
|
+
clearInactivityMonitor();
|
|
140
|
+
inactivityCountdownStart = null;
|
|
141
|
+
inactivityMonitorHandle = setInterval(() => {
|
|
142
|
+
if (!runner || isShuttingDown) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const activeCount = runner.activeConversations_.size;
|
|
146
|
+
if (activeCount > 0) {
|
|
147
|
+
inactivityCountdownStart = null;
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (inactivityCountdownStart === null) {
|
|
151
|
+
inactivityCountdownStart = Date.now();
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const elapsed = Date.now() - inactivityCountdownStart;
|
|
155
|
+
if (elapsed >= timeoutMs) {
|
|
156
|
+
clearInactivityMonitor();
|
|
157
|
+
beginShutdown(0, `Inactivity timeout reached: no active agent processes for ${displayLabel}. Exiting.`);
|
|
158
|
+
}
|
|
159
|
+
}, INACTIVITY_CHECK_INTERVAL_MS);
|
|
160
|
+
}
|
|
161
|
+
function clearInactivityMonitor() {
|
|
162
|
+
if (inactivityMonitorHandle) {
|
|
163
|
+
clearInterval(inactivityMonitorHandle);
|
|
164
|
+
inactivityMonitorHandle = null;
|
|
165
|
+
}
|
|
166
|
+
inactivityCountdownStart = null;
|
|
167
|
+
}
|
|
168
|
+
function beginShutdown(exitCode = 0, message) {
|
|
169
|
+
if (isShuttingDown) {
|
|
170
|
+
if (message) {
|
|
171
|
+
logger.info(`Already shutting down, ignoring duplicate request (${message})`);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
logger.info("Already shutting down, ignoring duplicate request");
|
|
175
|
+
}
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
if (message) {
|
|
179
|
+
logger.info(message);
|
|
180
|
+
}
|
|
181
|
+
isShuttingDown = true;
|
|
182
|
+
void shutdown(exitCode);
|
|
183
|
+
}
|
|
142
184
|
async function shutdown(exitCode = 0) {
|
|
185
|
+
clearInactivityMonitor();
|
|
143
186
|
if (runner) {
|
|
144
187
|
try {
|
|
145
188
|
await runner.stop();
|
|
146
|
-
|
|
189
|
+
logger.info("Runner stopped successfully");
|
|
147
190
|
}
|
|
148
191
|
catch (error) {
|
|
149
|
-
|
|
192
|
+
logger.error("Error during shutdown:", error);
|
|
150
193
|
exitCode = 1;
|
|
151
194
|
}
|
|
152
195
|
}
|
|
153
196
|
process.exit(exitCode);
|
|
154
197
|
}
|
|
155
|
-
//
|
|
156
|
-
if (require.main === module) {
|
|
157
|
-
main().catch((error) => {
|
|
158
|
-
logger_1.logger.error("Fatal error:", error);
|
|
159
|
-
process.exit(1);
|
|
160
|
-
});
|
|
161
|
-
}
|
|
198
|
+
// Note: In ESM, the bin/northflare-runner script handles calling main() directly
|
|
162
199
|
// Export for programmatic usage
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
__exportStar(require("./types"), exports);
|
|
200
|
+
export { RunnerApp } from './runner-sse.js';
|
|
201
|
+
export { ConfigManager } from './utils/config.js';
|
|
202
|
+
export * from './types/index.js';
|
|
203
|
+
export { main };
|
|
168
204
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/runner-sse.d.ts
CHANGED
|
@@ -2,15 +2,17 @@
|
|
|
2
2
|
* Main RunnerApp class - entry point and lifecycle manager for the runner app
|
|
3
3
|
* Updated to use SSE for real-time messaging instead of ElectricSQL
|
|
4
4
|
*/
|
|
5
|
-
import { RunnerConfig, ConversationContext, JsonRpcMessage } from
|
|
6
|
-
import { IRunnerApp } from
|
|
7
|
-
import { ClaudeManager } from
|
|
8
|
-
import { CodexManager } from
|
|
9
|
-
import {
|
|
5
|
+
import { RunnerConfig, ConversationContext, JsonRpcMessage } from './types/index.js';
|
|
6
|
+
import { IRunnerApp } from './types/runner-interface.js';
|
|
7
|
+
import { ClaudeManager } from './components/claude-sdk-manager.js';
|
|
8
|
+
import { CodexManager } from './components/codex-sdk-manager.js';
|
|
9
|
+
import { NorthflareAgentManager } from './components/northflare-agent-sdk-manager.js';
|
|
10
|
+
import { EnhancedRepositoryManager } from './components/enhanced-repository-manager.js';
|
|
10
11
|
export declare class RunnerApp implements IRunnerApp {
|
|
11
12
|
private messageHandler;
|
|
12
13
|
private claudeManager;
|
|
13
14
|
private codexManager;
|
|
15
|
+
private northflareAgentManager;
|
|
14
16
|
private repositoryManager;
|
|
15
17
|
private stateManager;
|
|
16
18
|
private agentConversations;
|
|
@@ -24,6 +26,8 @@ export declare class RunnerApp implements IRunnerApp {
|
|
|
24
26
|
private lastProcessedAt;
|
|
25
27
|
private isActiveRunner;
|
|
26
28
|
private preHandoffConversations;
|
|
29
|
+
private completedConversations;
|
|
30
|
+
private static readonly COMPLETED_CONVERSATION_TTL_MS;
|
|
27
31
|
constructor(config: RunnerConfig, configPath?: string);
|
|
28
32
|
private fetchRunnerId;
|
|
29
33
|
private initializeComponents;
|
|
@@ -32,6 +36,18 @@ export declare class RunnerApp implements IRunnerApp {
|
|
|
32
36
|
notify(method: string, params: any): Promise<void>;
|
|
33
37
|
sendToOrchestrator(message: JsonRpcMessage): Promise<any>;
|
|
34
38
|
getConversationContext(conversationId: string): ConversationContext | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Check if a conversation was recently completed (to prevent restart on catch-up)
|
|
41
|
+
*/
|
|
42
|
+
wasConversationCompleted(conversationId: string): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Mark a conversation as completed to prevent restart on catch-up
|
|
45
|
+
*/
|
|
46
|
+
markConversationCompleted(conversationId: string): void;
|
|
47
|
+
/**
|
|
48
|
+
* Clean up expired completed conversation entries
|
|
49
|
+
*/
|
|
50
|
+
private cleanupCompletedConversations;
|
|
35
51
|
private registerRunner;
|
|
36
52
|
private registerWithRetry;
|
|
37
53
|
/**
|
|
@@ -47,6 +63,7 @@ export declare class RunnerApp implements IRunnerApp {
|
|
|
47
63
|
get activeConversations_(): Map<string, ConversationContext>;
|
|
48
64
|
get claudeManager_(): ClaudeManager;
|
|
49
65
|
get codexManager_(): CodexManager;
|
|
66
|
+
get northflareAgentManager_(): NorthflareAgentManager;
|
|
50
67
|
get repositoryManager_(): EnhancedRepositoryManager;
|
|
51
68
|
getRunnerId(): string | undefined;
|
|
52
69
|
getRunnerUid(): string | null;
|
package/dist/runner-sse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-sse.d.ts","sourceRoot":"","sources":["../src/runner-sse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,cAAc,EAGf,MAAM,
|
|
1
|
+
{"version":3,"file":"runner-sse.d.ts","sourceRoot":"","sources":["../src/runner-sse.ts"],"names":[],"mappings":"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"}
|