@northflare/runner 0.0.23 → 0.0.25

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 (37) hide show
  1. package/README.md +3 -3
  2. package/bin/northflare-runner +234 -172
  3. package/dist/components/claude-sdk-manager.d.ts +6 -0
  4. package/dist/components/claude-sdk-manager.d.ts.map +1 -1
  5. package/dist/components/claude-sdk-manager.js +46 -5
  6. package/dist/components/claude-sdk-manager.js.map +1 -1
  7. package/dist/components/message-handler-sse.d.ts +3 -0
  8. package/dist/components/message-handler-sse.d.ts.map +1 -1
  9. package/dist/components/message-handler-sse.js +148 -72
  10. package/dist/components/message-handler-sse.js.map +1 -1
  11. package/dist/components/repository-manager.js +4 -4
  12. package/dist/components/repository-manager.js.map +1 -1
  13. package/dist/index.d.ts +2 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +49 -14
  16. package/dist/index.js.map +1 -1
  17. package/dist/runner-sse.d.ts +10 -6
  18. package/dist/runner-sse.d.ts.map +1 -1
  19. package/dist/runner-sse.js +130 -109
  20. package/dist/runner-sse.js.map +1 -1
  21. package/dist/services/RunnerAPIClient.d.ts +20 -0
  22. package/dist/services/RunnerAPIClient.d.ts.map +1 -1
  23. package/dist/services/RunnerAPIClient.js +50 -1
  24. package/dist/services/RunnerAPIClient.js.map +1 -1
  25. package/dist/services/SSEClient.d.ts.map +1 -1
  26. package/dist/services/SSEClient.js +22 -0
  27. package/dist/services/SSEClient.js.map +1 -1
  28. package/dist/types/index.d.ts +4 -2
  29. package/dist/types/index.d.ts.map +1 -1
  30. package/dist/types/runner-interface.d.ts +4 -1
  31. package/dist/types/runner-interface.d.ts.map +1 -1
  32. package/dist/utils/config.d.ts +7 -1
  33. package/dist/utils/config.d.ts.map +1 -1
  34. package/dist/utils/config.js +185 -62
  35. package/dist/utils/config.js.map +1 -1
  36. package/docs/claude-manager.md +1 -1
  37. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"repository-manager.js","sourceRoot":"","sources":["../../src/components/repository-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repository-manager.js","sourceRoot":"","sources":["../../src/components/repository-manager.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * Main entry point for the Northflare Runner App
3
3
  */
4
+ declare let isShuttingDown: boolean;
4
5
  declare function main(): Promise<void>;
5
6
  export { RunnerApp } from './runner-sse.js';
6
7
  export { ConfigManager } from './utils/config.js';
7
8
  export * from './types/index.js';
8
- export { main };
9
+ export { main, isShuttingDown };
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyBH,iBAAe,IAAI,kBA6GlB;AAmHD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyCH,QAAA,IAAI,cAAc,SAAQ,CAAC;AAK3B,iBAAe,IAAI,kBAgHlB;AAiID,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -8,15 +8,34 @@ import { isRunnerDebugEnabled } from './utils/debug.js';
8
8
  import { parseInactivityTimeout, formatInactivityTimeoutFromMs, } from './utils/inactivity-timeout.js';
9
9
  import path from "path";
10
10
  import fs from "fs/promises";
11
+ import { existsSync } from "fs";
11
12
  import envPaths from "env-paths";
12
13
  const INACTIVITY_TIMEOUT_ENV_KEY = "NORTHFLARE_RUNNER_INACTIVITY_TIMEOUT";
13
14
  const INACTIVITY_CHECK_INTERVAL_MS = 1000;
14
- const ENV_PATHS_APP_NAME = "northflare-runner";
15
+ function resolveEnvPathsAppName() {
16
+ if (process.env["NODE_ENV"] === "development")
17
+ return "northflare-runner-dev";
18
+ try {
19
+ const __dirname = path.dirname(new URL(import.meta.url).pathname);
20
+ const repoRoot = path.resolve(__dirname, "../..");
21
+ if (existsSync(path.join(repoRoot, "pnpm-workspace.yaml"))) {
22
+ return "northflare-runner-dev";
23
+ }
24
+ }
25
+ catch {
26
+ // ignore and fall back
27
+ }
28
+ return "northflare-runner";
29
+ }
30
+ const ENV_PATHS_APP_NAME = resolveEnvPathsAppName();
15
31
  const ENV_PATHS_OPTIONS = { suffix: "" };
32
+ const IS_DEV_APP = ENV_PATHS_APP_NAME.endsWith("-dev");
33
+ const SHUTDOWN_TIMEOUT_MS = 10_000;
16
34
  let runner = null;
17
35
  let isShuttingDown = false;
18
36
  let inactivityMonitorHandle = null;
19
37
  let inactivityCountdownStart = null;
38
+ let shutdownTimeoutHandle = null;
20
39
  async function main() {
21
40
  try {
22
41
  logger.info("Starting Northflare Runner...");
@@ -40,20 +59,25 @@ async function main() {
40
59
  if (!configPath) {
41
60
  try {
42
61
  const paths = envPaths(ENV_PATHS_APP_NAME, ENV_PATHS_OPTIONS);
43
- const defaultConfigPath = path.join(paths.config, "config.json");
44
- // Check if default config exists
45
- if (await fs
46
- .access(defaultConfigPath)
47
- .then(() => true)
48
- .catch(() => false)) {
49
- configPath = defaultConfigPath;
50
- }
62
+ configPath = path.join(paths.config, "config.json");
51
63
  }
52
64
  catch (error) {
53
65
  // env-paths not available or error accessing default location
66
+ const localDir = IS_DEV_APP ? "./config/dev" : "./config";
67
+ configPath = path.resolve(localDir, "config.json");
54
68
  }
55
69
  }
56
- const config = await ConfigManager.loadConfig(configPath);
70
+ // Normalize for downstream consumers and logging
71
+ configPath = path.resolve(configPath);
72
+ if (debugEnabled) {
73
+ logger.debug("Using configuration file", {
74
+ configPath,
75
+ exists: existsSync(configPath),
76
+ });
77
+ }
78
+ const config = await ConfigManager.loadConfig(configPath, {
79
+ promptForWorkspacePath: true,
80
+ });
57
81
  if (inactivitySetting) {
58
82
  config.inactivityTimeoutMs = inactivitySetting.milliseconds;
59
83
  config.inactivityTimeoutDisplay = inactivitySetting.display;
@@ -168,17 +192,24 @@ function clearInactivityMonitor() {
168
192
  function beginShutdown(exitCode = 0, message) {
169
193
  if (isShuttingDown) {
170
194
  if (message) {
171
- logger.info(`Already shutting down, ignoring duplicate request (${message})`);
195
+ logger.warn(`Shutdown already in progress. Forcing exit now (${message})`);
172
196
  }
173
197
  else {
174
- logger.info("Already shutting down, ignoring duplicate request");
198
+ logger.warn("Shutdown already in progress. Forcing exit now");
175
199
  }
176
- return;
200
+ // If a second signal arrives while we're still stopping, exit immediately
201
+ process.exit(exitCode || 1);
177
202
  }
178
203
  if (message) {
179
204
  logger.info(message);
180
205
  }
181
206
  isShuttingDown = true;
207
+ // Ensure we don't hang forever waiting for async cleanup
208
+ shutdownTimeoutHandle = setTimeout(() => {
209
+ logger.error(`Shutdown did not complete within ${SHUTDOWN_TIMEOUT_MS}ms. Forcing exit.`);
210
+ process.exit(1);
211
+ }, SHUTDOWN_TIMEOUT_MS);
212
+ shutdownTimeoutHandle.unref?.();
182
213
  void shutdown(exitCode);
183
214
  }
184
215
  async function shutdown(exitCode = 0) {
@@ -193,6 +224,10 @@ async function shutdown(exitCode = 0) {
193
224
  exitCode = 1;
194
225
  }
195
226
  }
227
+ if (shutdownTimeoutHandle) {
228
+ clearTimeout(shutdownTimeoutHandle);
229
+ shutdownTimeoutHandle = null;
230
+ }
196
231
  process.exit(exitCode);
197
232
  }
198
233
  // Note: In ESM, the bin/northflare-runner script handles calling main() directly
@@ -200,5 +235,5 @@ async function shutdown(exitCode = 0) {
200
235
  export { RunnerApp } from './runner-sse.js';
201
236
  export { ConfigManager } from './utils/config.js';
202
237
  export * from './types/index.js';
203
- export { main };
238
+ export { main, isShuttingDown };
204
239
  //# 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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
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 './types/index.js';
5
+ import { RunnerConfig, ConversationContext, JsonRpcMessage, RunnerRepo } from './types/index.js';
6
6
  import { IRunnerApp } from './types/runner-interface.js';
7
7
  import { ClaudeManager } from './components/claude-sdk-manager.js';
8
8
  import { CodexManager } from './components/codex-sdk-manager.js';
@@ -18,6 +18,7 @@ export declare class RunnerApp implements IRunnerApp {
18
18
  private agentConversations;
19
19
  private config;
20
20
  private configPath?;
21
+ private runnerReposCachePath?;
21
22
  private heartbeatInterval?;
22
23
  private isRunning;
23
24
  private isRegistered;
@@ -50,11 +51,6 @@ export declare class RunnerApp implements IRunnerApp {
50
51
  private cleanupCompletedConversations;
51
52
  private registerRunner;
52
53
  private registerWithRetry;
53
- /**
54
- * Load runnerRepos for a specific runnerId from the config file
55
- */
56
- private loadRunnerReposForId;
57
- private updateRunnerReposWithIds;
58
54
  private sendToOrchestratorWithRetry;
59
55
  private startHeartbeat;
60
56
  private stopAllConversations;
@@ -65,6 +61,7 @@ export declare class RunnerApp implements IRunnerApp {
65
61
  get codexManager_(): CodexManager;
66
62
  get northflareAgentManager_(): NorthflareAgentManager;
67
63
  get repositoryManager_(): EnhancedRepositoryManager;
64
+ getConfigPath(): string | undefined;
68
65
  getRunnerId(): string | undefined;
69
66
  getRunnerUid(): string | null;
70
67
  getLastProcessedAt(): Date | null;
@@ -73,6 +70,13 @@ export declare class RunnerApp implements IRunnerApp {
73
70
  setLastProcessedAt(timestamp: Date | null): void;
74
71
  getPreHandoffConversations(): Set<string>;
75
72
  setDelayFunction(fn: (ms: number) => Promise<void>): void;
73
+ getWorkspacePath(): string | undefined;
74
+ replaceRunnerRepos(repos: RunnerRepo[]): Promise<void>;
75
+ private saveRunnerRepoCache;
76
+ private loadRunnerRepoCache;
77
+ private isRepoAllowed;
78
+ private prepareRunnerRepos;
79
+ private refreshRunnerReposFromServer;
76
80
  private getManagerForContext;
77
81
  }
78
82
  //# sourceMappingURL=runner-sse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner-sse.d.ts","sourceRoot":"","sources":["../src/runner-sse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner-sse.d.ts","sourceRoot":"","sources":["../src/runner-sse.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,16 @@ import path from "path";
16
16
  import computerName from "computer-name";
17
17
  import { sanitizeToolResponsePayload, TOOL_RESPONSE_BYTE_LIMIT, } from './utils/tool-response-sanitizer.js';
18
18
  import { buildOutgoingMessageLog, messageFlowLogger, messagesDebugEnabled, } from './utils/message-log.js';
19
+ import { RunnerAPIClient } from './services/RunnerAPIClient.js';
20
+ function isSubPath(base, candidate) {
21
+ if (!base)
22
+ return false;
23
+ const normalizedBase = path.resolve(base);
24
+ const normalizedCandidate = path.resolve(candidate);
25
+ const baseWithSep = normalizedBase.endsWith(path.sep) ? normalizedBase : normalizedBase + path.sep;
26
+ return (normalizedCandidate === normalizedBase ||
27
+ normalizedCandidate.startsWith(baseWithSep));
28
+ }
19
29
  const logger = createLogger("RunnerApp");
20
30
  function logToolResponseTruncation(toolUseId) {
21
31
  const message = `Tool response exceeded ${TOOL_RESPONSE_BYTE_LIMIT} bytes and was truncated`;
@@ -36,6 +46,7 @@ export class RunnerApp {
36
46
  agentConversations; // Keyed by conversation.id
37
47
  config;
38
48
  configPath;
49
+ runnerReposCachePath;
39
50
  heartbeatInterval;
40
51
  isRunning = false;
41
52
  isRegistered = false;
@@ -54,6 +65,7 @@ export class RunnerApp {
54
65
  this.config = config;
55
66
  this.configPath = configPath;
56
67
  this.agentConversations = new Map();
68
+ this.runnerReposCachePath = path.join(this.config.dataDir, "runner-repos-cache.json");
57
69
  // Note: State manager will be initialized in start() after fetching runnerId
58
70
  }
59
71
  async fetchRunnerId() {
@@ -124,11 +136,9 @@ export class RunnerApp {
124
136
  lastProcessedAt: savedState.lastProcessedAt,
125
137
  isActiveRunner: savedState.isActiveRunner,
126
138
  });
127
- // Load runnerRepos for this specific runnerId
128
- if (this.configPath && savedState.runnerId) {
129
- await this.loadRunnerReposForId(savedState.runnerId);
130
- }
131
139
  }
140
+ // Bootstrap runner repos from server (with cache fallback)
141
+ await this.refreshRunnerReposFromServer(true);
132
142
  // Register with retry strategy
133
143
  await this.registerWithRetry();
134
144
  // Log debug info after registration
@@ -335,26 +345,12 @@ export class RunnerApp {
335
345
  }
336
346
  async registerRunner() {
337
347
  try {
338
- // Filter runnerRepos by valid paths
339
- let filteredRunnerRepos = [];
340
- if (this.config.runnerRepos && Array.isArray(this.config.runnerRepos)) {
341
- for (const repo of this.config.runnerRepos) {
342
- try {
343
- const resolvedPath = path.resolve(repo.path);
344
- const stats = await fs.stat(resolvedPath);
345
- if (stats.isDirectory()) {
346
- filteredRunnerRepos.push(repo);
347
- logger.info(`RunnerRepo validated: ${repo.name} at ${resolvedPath}`);
348
- }
349
- else {
350
- logger.warn(`RunnerRepo path is not a directory: ${repo.name} at ${resolvedPath}`);
351
- }
352
- }
353
- catch (error) {
354
- logger.warn(`RunnerRepo path does not exist: ${repo.name} at ${repo.path}`);
355
- }
356
- }
348
+ if (!this.config.workspacePath || !path.isAbsolute(this.config.workspacePath)) {
349
+ throw new Error("workspacePath must be an absolute path");
357
350
  }
351
+ const filteredRunnerRepos = Array.isArray(this.config.runnerRepos)
352
+ ? this.config.runnerRepos
353
+ : [];
358
354
  // Get computer name for registration
359
355
  let hostComputerName;
360
356
  try {
@@ -371,6 +367,7 @@ export class RunnerApp {
371
367
  version: "1.0.0",
372
368
  runnerRepos: filteredRunnerRepos,
373
369
  computerName: hostComputerName,
370
+ workspacePath: this.config.workspacePath,
374
371
  },
375
372
  });
376
373
  // Debug log the full response
@@ -410,7 +407,8 @@ export class RunnerApp {
410
407
  logger.info(`Runner registered successfully with ID: ${this.config.runnerId} and UID: ${this.runnerUid}`);
411
408
  // Process runnerRepos from response
412
409
  if (result.runnerRepos && Array.isArray(result.runnerRepos)) {
413
- await this.updateRunnerReposWithIds(result.runnerRepos);
410
+ const prepared = await this.prepareRunnerRepos(result.runnerRepos);
411
+ await this.replaceRunnerRepos(prepared);
414
412
  }
415
413
  // Debug logging for registration details
416
414
  if (isRunnerDebugEnabled()) {
@@ -515,91 +513,6 @@ export class RunnerApp {
515
513
  }
516
514
  }
517
515
  }
518
- /**
519
- * Load runnerRepos for a specific runnerId from the config file
520
- */
521
- async loadRunnerReposForId(runnerId) {
522
- if (!this.configPath) {
523
- logger.debug("No config path specified, cannot load runnerRepos");
524
- return;
525
- }
526
- try {
527
- const configContent = await fs.readFile(path.resolve(this.configPath), "utf-8");
528
- const configFile = JSON.parse(configContent);
529
- if (!configFile.runnerRepos || typeof configFile.runnerRepos !== "object") {
530
- logger.debug("No runnerRepos in config file");
531
- this.config.runnerRepos = [];
532
- return;
533
- }
534
- const reposForThisRunner = configFile.runnerRepos[runnerId];
535
- if (reposForThisRunner && Array.isArray(reposForThisRunner)) {
536
- this.config.runnerRepos = reposForThisRunner;
537
- logger.info(`Loaded ${reposForThisRunner.length} runnerRepos for runner ${runnerId}`);
538
- }
539
- else {
540
- this.config.runnerRepos = [];
541
- logger.debug(`No runnerRepos found for runner ${runnerId}, using empty array`);
542
- }
543
- }
544
- catch (error) {
545
- logger.error("Failed to load runnerRepos for runner", error);
546
- this.config.runnerRepos = [];
547
- }
548
- }
549
- async updateRunnerReposWithIds(serverRunnerRepos) {
550
- if (!this.configPath || !this.config.runnerId) {
551
- logger.info("No config path or runnerId specified, cannot update runnerRepos with IDs");
552
- return;
553
- }
554
- try {
555
- const { ConfigManager } = await import("./utils/config.js");
556
- const configContent = await fs.readFile(path.resolve(this.configPath), "utf-8");
557
- const configFile = JSON.parse(configContent);
558
- // Initialize runnerRepos namespace if not present
559
- if (!configFile.runnerRepos) {
560
- configFile.runnerRepos = {};
561
- }
562
- // Get or create repos array for this runnerId
563
- let reposForThisRunner = configFile.runnerRepos[this.config.runnerId];
564
- if (!reposForThisRunner || !Array.isArray(reposForThisRunner)) {
565
- reposForThisRunner = [];
566
- configFile.runnerRepos[this.config.runnerId] = reposForThisRunner;
567
- }
568
- // Update runnerRepos with UUIDs from server
569
- let hasUpdates = false;
570
- for (const serverRepo of serverRunnerRepos) {
571
- const localRepo = reposForThisRunner.find((r) => r.name === serverRepo.name && r.path === serverRepo.path);
572
- if (localRepo && serverRepo.uuid) {
573
- // Store UUID if not already present or different
574
- if (!localRepo.uuid || localRepo.uuid !== serverRepo.uuid) {
575
- localRepo.uuid = serverRepo.uuid;
576
- hasUpdates = true;
577
- logger.info(`Updated RunnerRepo "${localRepo.name}" with UUID: ${serverRepo.uuid}`);
578
- }
579
- }
580
- else if (serverRepo.uuid) {
581
- // Add new repo from server
582
- reposForThisRunner.push({
583
- uuid: serverRepo.uuid,
584
- name: serverRepo.name,
585
- path: serverRepo.path,
586
- });
587
- hasUpdates = true;
588
- logger.info(`Added new RunnerRepo "${serverRepo.name}" with UUID: ${serverRepo.uuid}`);
589
- }
590
- }
591
- // Save the updated config if there were changes
592
- if (hasUpdates) {
593
- await ConfigManager.saveConfigFile(this.configPath, configFile);
594
- // Update our in-memory config
595
- this.config.runnerRepos = reposForThisRunner;
596
- logger.info(`Saved ${reposForThisRunner.length} runnerRepos for runner ${this.config.runnerId}`);
597
- }
598
- }
599
- catch (error) {
600
- logger.error("Failed to update runnerRepos with IDs", error);
601
- }
602
- }
603
516
  async sendToOrchestratorWithRetry(message) {
604
517
  const maxRetries = 5;
605
518
  const initialDelayMs = 1000; // Start with 1 second
@@ -721,6 +634,9 @@ export class RunnerApp {
721
634
  get repositoryManager_() {
722
635
  return this.repositoryManager;
723
636
  }
637
+ getConfigPath() {
638
+ return this.configPath;
639
+ }
724
640
  getRunnerId() {
725
641
  return this.config.runnerId;
726
642
  }
@@ -769,6 +685,111 @@ export class RunnerApp {
769
685
  setDelayFunction(fn) {
770
686
  this.delayFn = fn;
771
687
  }
688
+ getWorkspacePath() {
689
+ return this.config.workspacePath;
690
+ }
691
+ async replaceRunnerRepos(repos) {
692
+ this.config.runnerRepos = repos;
693
+ await this.saveRunnerRepoCache(repos);
694
+ }
695
+ async saveRunnerRepoCache(repos) {
696
+ if (!this.runnerReposCachePath)
697
+ return;
698
+ try {
699
+ await fs.mkdir(path.dirname(this.runnerReposCachePath), { recursive: true });
700
+ await fs.writeFile(this.runnerReposCachePath, JSON.stringify({ updatedAt: new Date().toISOString(), repos }, null, 2), "utf-8");
701
+ }
702
+ catch (err) {
703
+ logger.warn("Failed to persist runner repo cache", err);
704
+ }
705
+ }
706
+ async loadRunnerRepoCache() {
707
+ if (!this.runnerReposCachePath)
708
+ return null;
709
+ try {
710
+ const content = await fs.readFile(this.runnerReposCachePath, "utf-8");
711
+ const parsed = JSON.parse(content);
712
+ if (Array.isArray(parsed?.repos)) {
713
+ logger.info(`Loaded ${parsed.repos.length} runner repos from cache at ${this.runnerReposCachePath}`);
714
+ return parsed.repos;
715
+ }
716
+ }
717
+ catch (err) {
718
+ if (err?.code !== "ENOENT") {
719
+ logger.warn("Failed to load runner repo cache", err);
720
+ }
721
+ }
722
+ return null;
723
+ }
724
+ isRepoAllowed(repo, workspacePath) {
725
+ const base = workspacePath || this.config.workspacePath;
726
+ const resolvedPath = path.resolve(repo.path);
727
+ const external = repo.external === true || !isSubPath(base, resolvedPath);
728
+ if (!external && base && !isSubPath(base, resolvedPath)) {
729
+ return false;
730
+ }
731
+ return true;
732
+ }
733
+ async prepareRunnerRepos(repos, workspacePath) {
734
+ const prepared = [];
735
+ for (const repo of repos || []) {
736
+ if (!repo?.path || !repo?.name)
737
+ continue;
738
+ const resolvedPath = path.resolve(repo.path);
739
+ const external = repo.external === true || !isSubPath(workspacePath || this.config.workspacePath, resolvedPath);
740
+ if (!external && workspacePath && !isSubPath(workspacePath, resolvedPath)) {
741
+ logger.warn(`Ignoring runnerRepo ${repo.name} because path is outside workspace: ${resolvedPath}`);
742
+ continue;
743
+ }
744
+ if (!external && this.config.workspacePath && !isSubPath(this.config.workspacePath, resolvedPath)) {
745
+ logger.warn(`Ignoring runnerRepo ${repo.name} because path is outside configured workspace: ${resolvedPath}`);
746
+ continue;
747
+ }
748
+ try {
749
+ await fs.mkdir(resolvedPath, { recursive: true });
750
+ const stats = await fs.stat(resolvedPath);
751
+ if (!stats.isDirectory()) {
752
+ logger.warn(`RunnerRepo path is not a directory: ${repo.name} at ${resolvedPath}`);
753
+ continue;
754
+ }
755
+ }
756
+ catch (err) {
757
+ logger.warn(`RunnerRepo path could not be prepared: ${repo.name} at ${resolvedPath}`, err);
758
+ continue;
759
+ }
760
+ prepared.push({
761
+ ...repo,
762
+ path: resolvedPath,
763
+ external,
764
+ });
765
+ }
766
+ return prepared;
767
+ }
768
+ async refreshRunnerReposFromServer(useCacheOnFailure = true) {
769
+ const apiClient = new RunnerAPIClient(this.config);
770
+ if (this.config.runnerId) {
771
+ apiClient.setRunnerId(this.config.runnerId);
772
+ }
773
+ try {
774
+ const snapshot = await apiClient.listRunnerRepos();
775
+ const prepared = await this.prepareRunnerRepos(snapshot.repos || [], snapshot.workspacePath);
776
+ await this.replaceRunnerRepos(prepared);
777
+ logger.info(`Hydrated runner repos from server snapshot (${prepared.length})`);
778
+ }
779
+ catch (err) {
780
+ logger.error("Failed to fetch runner repo snapshot from server", err);
781
+ if (useCacheOnFailure) {
782
+ const cached = await this.loadRunnerRepoCache();
783
+ if (cached) {
784
+ const prepared = await this.prepareRunnerRepos(cached);
785
+ await this.replaceRunnerRepos(prepared);
786
+ logger.info(`Hydrated runner repos from local cache (${prepared.length}) after snapshot failure`);
787
+ return;
788
+ }
789
+ }
790
+ throw err;
791
+ }
792
+ }
772
793
  getManagerForContext(context) {
773
794
  const provider = context?.provider?.toLowerCase();
774
795
  if (provider === "openai") {