@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.
Files changed (119) hide show
  1. package/README.md +8 -5
  2. package/bin/northflare-runner +44 -16
  3. package/dist/components/claude-sdk-manager.d.ts +3 -3
  4. package/dist/components/claude-sdk-manager.d.ts.map +1 -1
  5. package/dist/components/claude-sdk-manager.js +80 -111
  6. package/dist/components/claude-sdk-manager.js.map +1 -1
  7. package/dist/components/codex-sdk-manager.d.ts +15 -6
  8. package/dist/components/codex-sdk-manager.d.ts.map +1 -1
  9. package/dist/components/codex-sdk-manager.js +128 -97
  10. package/dist/components/codex-sdk-manager.js.map +1 -1
  11. package/dist/components/enhanced-repository-manager.d.ts +2 -2
  12. package/dist/components/enhanced-repository-manager.d.ts.map +1 -1
  13. package/dist/components/enhanced-repository-manager.js +68 -75
  14. package/dist/components/enhanced-repository-manager.js.map +1 -1
  15. package/dist/components/message-handler-sse.d.ts +1 -1
  16. package/dist/components/message-handler-sse.d.ts.map +1 -1
  17. package/dist/components/message-handler-sse.js +205 -97
  18. package/dist/components/message-handler-sse.js.map +1 -1
  19. package/dist/components/{claude-manager.d.ts → northflare-agent-sdk-manager.d.ts} +17 -14
  20. package/dist/components/northflare-agent-sdk-manager.d.ts.map +1 -0
  21. package/dist/components/northflare-agent-sdk-manager.js +1456 -0
  22. package/dist/components/northflare-agent-sdk-manager.js.map +1 -0
  23. package/dist/components/repository-manager.d.ts +2 -2
  24. package/dist/components/repository-manager.d.ts.map +1 -1
  25. package/dist/components/repository-manager.js +34 -74
  26. package/dist/components/repository-manager.js.map +1 -1
  27. package/dist/index.d.ts +3 -3
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +115 -79
  30. package/dist/index.js.map +1 -1
  31. package/dist/runner-sse.d.ts +22 -5
  32. package/dist/runner-sse.d.ts.map +1 -1
  33. package/dist/runner-sse.js +95 -74
  34. package/dist/runner-sse.js.map +1 -1
  35. package/dist/services/RunnerAPIClient.d.ts +1 -1
  36. package/dist/services/RunnerAPIClient.d.ts.map +1 -1
  37. package/dist/services/RunnerAPIClient.js +3 -7
  38. package/dist/services/RunnerAPIClient.js.map +1 -1
  39. package/dist/services/SSEClient.js +5 -9
  40. package/dist/services/SSEClient.js.map +1 -1
  41. package/dist/types/claude.d.ts +16 -2
  42. package/dist/types/claude.d.ts.map +1 -1
  43. package/dist/types/claude.js +1 -2
  44. package/dist/types/claude.js.map +1 -1
  45. package/dist/types/index.d.ts +5 -3
  46. package/dist/types/index.d.ts.map +1 -1
  47. package/dist/types/index.js +3 -19
  48. package/dist/types/index.js.map +1 -1
  49. package/dist/types/messages.js +1 -2
  50. package/dist/types/messages.js.map +1 -1
  51. package/dist/types/runner-interface.d.ts +8 -4
  52. package/dist/types/runner-interface.d.ts.map +1 -1
  53. package/dist/types/runner-interface.js +1 -2
  54. package/dist/types/runner-interface.js.map +1 -1
  55. package/dist/utils/StateManager.js +12 -19
  56. package/dist/utils/StateManager.js.map +1 -1
  57. package/dist/utils/config.d.ts +1 -1
  58. package/dist/utils/config.d.ts.map +1 -1
  59. package/dist/utils/config.js +19 -26
  60. package/dist/utils/config.js.map +1 -1
  61. package/dist/utils/console.js +3 -6
  62. package/dist/utils/console.js.map +1 -1
  63. package/dist/utils/debug.js +1 -4
  64. package/dist/utils/debug.js.map +1 -1
  65. package/dist/utils/expand-env.js +1 -4
  66. package/dist/utils/expand-env.js.map +1 -1
  67. package/dist/utils/inactivity-timeout.d.ts +19 -0
  68. package/dist/utils/inactivity-timeout.d.ts.map +1 -0
  69. package/dist/utils/inactivity-timeout.js +72 -0
  70. package/dist/utils/inactivity-timeout.js.map +1 -0
  71. package/dist/utils/logger.d.ts.map +1 -1
  72. package/dist/utils/logger.js +24 -35
  73. package/dist/utils/logger.js.map +1 -1
  74. package/dist/utils/model.d.ts +3 -1
  75. package/dist/utils/model.d.ts.map +1 -1
  76. package/dist/utils/model.js +18 -4
  77. package/dist/utils/model.js.map +1 -1
  78. package/dist/utils/status-line.d.ts +1 -0
  79. package/dist/utils/status-line.d.ts.map +1 -1
  80. package/dist/utils/status-line.js +25 -18
  81. package/dist/utils/status-line.js.map +1 -1
  82. package/dist/utils/tool-response-sanitizer.js +6 -10
  83. package/dist/utils/tool-response-sanitizer.js.map +1 -1
  84. package/lib/codex-sdk/dist/index.d.ts +1 -1
  85. package/lib/codex-sdk/dist/samples/basic_streaming.d.ts +3 -0
  86. package/lib/codex-sdk/dist/samples/basic_streaming.d.ts.map +1 -0
  87. package/lib/codex-sdk/dist/samples/basic_streaming.js +81 -0
  88. package/lib/codex-sdk/dist/samples/basic_streaming.js.map +1 -0
  89. package/lib/codex-sdk/dist/samples/helpers.d.ts +2 -0
  90. package/lib/codex-sdk/dist/samples/helpers.d.ts.map +1 -0
  91. package/lib/codex-sdk/dist/samples/helpers.js +6 -0
  92. package/lib/codex-sdk/dist/samples/helpers.js.map +1 -0
  93. package/lib/codex-sdk/dist/samples/structured_output.d.ts +3 -0
  94. package/lib/codex-sdk/dist/samples/structured_output.d.ts.map +1 -0
  95. package/lib/codex-sdk/dist/samples/structured_output.js +17 -0
  96. package/lib/codex-sdk/dist/samples/structured_output.js.map +1 -0
  97. package/lib/codex-sdk/dist/samples/structured_output_zod.d.ts +3 -0
  98. package/lib/codex-sdk/dist/samples/structured_output_zod.d.ts.map +1 -0
  99. package/lib/codex-sdk/dist/samples/structured_output_zod.js +16 -0
  100. package/lib/codex-sdk/dist/samples/structured_output_zod.js.map +1 -0
  101. package/lib/codex-sdk/dist/tsup.config.d.ts +3 -0
  102. package/lib/codex-sdk/dist/tsup.config.js +12 -0
  103. package/package.json +9 -4
  104. package/scripts/verify-openrouter-agent.ts +163 -0
  105. package/dist/collections/runner-messages.d.ts +0 -52
  106. package/dist/collections/runner-messages.d.ts.map +0 -1
  107. package/dist/collections/runner-messages.js +0 -161
  108. package/dist/collections/runner-messages.js.map +0 -1
  109. package/dist/components/claude-manager.d.ts.map +0 -1
  110. package/dist/components/claude-manager.js +0 -783
  111. package/dist/components/claude-manager.js.map +0 -1
  112. package/dist/components/message-handler.d.ts +0 -35
  113. package/dist/components/message-handler.d.ts.map +0 -1
  114. package/dist/components/message-handler.js +0 -689
  115. package/dist/components/message-handler.js.map +0 -1
  116. package/dist/runner.d.ts +0 -51
  117. package/dist/runner.d.ts.map +0 -1
  118. package/dist/runner.js +0 -530
  119. package/dist/runner.js.map +0 -1
package/README.md CHANGED
@@ -66,7 +66,7 @@ Options:
66
66
  --retry-strategy <strategy> registration retry strategy (none, interval, exponential) (default: "exponential")
67
67
  --retry-interval-secs <seconds> retry interval in seconds for interval strategy (default: "60")
68
68
  --retry-duration-secs <seconds> max retry duration in seconds for exponential strategy (default: "900")
69
- --data-dir <path> data directory path (default: "./data")
69
+ --data-dir <path> data directory path (default: env-paths app data dir)
70
70
  --heartbeat-interval <ms> heartbeat interval in milliseconds (default: "120000")
71
71
  -h, --help display help for command
72
72
  ```
@@ -75,11 +75,14 @@ Options:
75
75
 
76
76
  ### Configuration File (optional)
77
77
 
78
- Create a `runner-config.json` file:
78
+ Create a `runner-config.json` file (optional). By default data is stored in
79
+ the OS-specific application data directory provided by [`env-paths`](https://www.npmjs.com/package/env-paths)
80
+ under the `northflare-runner` app name. Override it only if you need the data
81
+ somewhere else:
79
82
 
80
83
  ```json
81
84
  {
82
- "dataDir": "./data"
85
+ "dataDir": "/custom/path/to/northflare-runner-data"
83
86
  }
84
87
  ```
85
88
 
@@ -88,9 +91,9 @@ Create a `runner-config.json` file:
88
91
  | Variable | Required | Description |
89
92
  | ----------------------------- | -------- | ------------------------------------------------------ |
90
93
  | `NORTHFLARE_RUNNER_TOKEN` | Yes | Authentication token from server |
91
- | `NORTHFLARE_WORKSPACE_DIR` | No | Root directory for Git checkouts (default: /workspace) |
94
+ | `NORTHFLARE_WORKSPACE_DIR` | No | Root directory for Git checkouts (default: env-paths app data dir) |
92
95
  | `NORTHFLARE_ORCHESTRATOR_URL` | Yes | Orchestrator API endpoint |
93
- | `NORTHFLARE_DATA_DIR` | No | Override data directory |
96
+ | `NORTHFLARE_DATA_DIR` | No | Override data directory (default: env-paths app data dir) |
94
97
  | `DEBUG` | No | Enable debug logging |
95
98
 
96
99
  ### Programmatic
@@ -4,9 +4,33 @@
4
4
  * CLI executable for Northflare Runner
5
5
  */
6
6
 
7
- const { program, Command } = require("commander");
7
+ import { program, Command } from "commander";
8
+ import path from "path";
9
+ import { fileURLToPath } from "url";
10
+ import { createRequire } from "module";
11
+ import fs from "fs/promises";
12
+ import crypto from "crypto";
13
+ import envPaths from "env-paths";
14
+
15
+ // For reading package.json
16
+ const require = createRequire(import.meta.url);
8
17
  const pkg = require("../package.json");
9
18
 
19
+ const ENV_PATHS_APP_NAME = "northflare-runner";
20
+ const ENV_PATHS_OPTIONS = { suffix: "" };
21
+
22
+ let DEFAULT_DATA_DIR;
23
+ try {
24
+ DEFAULT_DATA_DIR = envPaths(ENV_PATHS_APP_NAME, ENV_PATHS_OPTIONS).data;
25
+ } catch (error) {
26
+ console.warn(
27
+ "env-paths lookup failed, falling back to ./data for data directory",
28
+ error
29
+ );
30
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
31
+ DEFAULT_DATA_DIR = path.resolve(__dirname, "../data");
32
+ }
33
+
10
34
  /**
11
35
  * Helper function to fetch runner ID from orchestrator
12
36
  */
@@ -44,12 +68,16 @@ const startCommand = new Command("start")
44
68
  .description("start the runner")
45
69
  .option("-c, --config <path>", "path to configuration file")
46
70
  .option("-d, --debug", "enable debug logging")
47
- .option("--data-dir <path>", "override data directory")
71
+ .option("--data-dir <path>", "override data directory", DEFAULT_DATA_DIR)
48
72
  .option(
49
73
  "--workspace-dir <path>",
50
74
  "workspace directory for Git checkouts (default: uses env-paths data directory)"
51
75
  )
52
76
  .option("--token <token>", "authentication token")
77
+ .option(
78
+ "--inactivity-timeout <duration>",
79
+ "exit the runner after this much idle time (e.g. 30s, 5m, 1h)"
80
+ )
53
81
  .action(async (options, command) => {
54
82
  // Set environment variables from CLI options
55
83
  if (options.debug) {
@@ -65,6 +93,11 @@ const startCommand = new Command("start")
65
93
  if (token) {
66
94
  process.env.NORTHFLARE_RUNNER_TOKEN = token;
67
95
  }
96
+ const inactivityTimeout =
97
+ options.inactivityTimeout || command.parent?.opts().inactivityTimeout;
98
+ if (inactivityTimeout) {
99
+ process.env.NORTHFLARE_RUNNER_INACTIVITY_TIMEOUT = inactivityTimeout;
100
+ }
68
101
 
69
102
  // Load the main module with config path if provided
70
103
  // Clear argv[2] since it contains 'start' command
@@ -74,8 +107,8 @@ const startCommand = new Command("start")
74
107
  process.argv[2] = configPath;
75
108
  }
76
109
 
77
- // Manually call the main function since require.main won't match
78
- const { main } = require("../dist");
110
+ // Dynamically import the main module
111
+ const { main } = await import("../dist/index.js");
79
112
  await main().catch((error) => {
80
113
  console.error("Fatal error:", error.message);
81
114
  process.exit(1);
@@ -87,7 +120,7 @@ const validateCommand = new Command("validate")
87
120
  .description("validate configuration without starting")
88
121
  .option("-c, --config <path>", "path to configuration file")
89
122
  .option("--token <token>", "authentication token")
90
- .option("--data-dir <path>", "override data directory")
123
+ .option("--data-dir <path>", "override data directory", DEFAULT_DATA_DIR)
91
124
  .option(
92
125
  "--workspace-dir <path>",
93
126
  "workspace directory for Git checkouts (default: uses env-paths data directory)"
@@ -106,7 +139,7 @@ const validateCommand = new Command("validate")
106
139
  process.env.NORTHFLARE_WORKSPACE_DIR = options.workspaceDir;
107
140
  }
108
141
 
109
- const { ConfigManager } = require("../dist/utils/config.js");
142
+ const { ConfigManager } = await import("../dist/utils/config.js");
110
143
  const configPath = options.config || command.parent?.opts().config;
111
144
  const config = await ConfigManager.loadConfig(configPath);
112
145
  console.log("Configuration is valid");
@@ -131,10 +164,6 @@ const listReposCommand = new Command("list-repos")
131
164
  .option("--token <token>", "authentication token")
132
165
  .action(async (options, command) => {
133
166
  try {
134
- const fs = require("fs").promises;
135
- const path = require("path");
136
- const envPaths = require("env-paths").default || require("env-paths");
137
-
138
167
  // Get token from command options, parent options, or environment
139
168
  const token =
140
169
  options.token ||
@@ -238,11 +267,6 @@ const addRepoCommand = new Command("add-repo")
238
267
  .option("--token <token>", "authentication token")
239
268
  .action(async (repoPath, options, command) => {
240
269
  try {
241
- const fs = require("fs").promises;
242
- const path = require("path");
243
- const envPaths = require("env-paths").default || require("env-paths");
244
- const crypto = require("crypto");
245
-
246
270
  // Get token from command options, parent options, or environment
247
271
  const token =
248
272
  options.token ||
@@ -361,7 +385,7 @@ const addRepoCommand = new Command("add-repo")
361
385
  config.runnerRepos[runnerId].push(newRepo);
362
386
 
363
387
  // Save updated config
364
- const { ConfigManager } = require("../dist/utils/config.js");
388
+ const { ConfigManager } = await import("../dist/utils/config.js");
365
389
  await ConfigManager.saveConfigFile(configPath, config);
366
390
 
367
391
  console.log(
@@ -429,6 +453,10 @@ program
429
453
  "--token <token>",
430
454
  "authentication token (can be used with any command)"
431
455
  )
456
+ .option(
457
+ "--inactivity-timeout <duration>",
458
+ "exit the runner after this much idle time (e.g. 30s, 5m, 1h)"
459
+ )
432
460
  .option(
433
461
  "-c, --config <path>",
434
462
  "path to configuration file (can be used with any command)"
@@ -13,9 +13,9 @@
13
13
  * - SDK's onProcessComplete() for proper cleanup
14
14
  * - Simplified error handling while maintaining compatibility
15
15
  */
16
- import { IRunnerApp } from "../types/runner-interface";
17
- import { EnhancedRepositoryManager } from "./enhanced-repository-manager";
18
- import { ConversationContext, ConversationConfig, Message } from "../types";
16
+ import { IRunnerApp } from '../types/runner-interface.js';
17
+ import { EnhancedRepositoryManager } from './enhanced-repository-manager.js';
18
+ import { ConversationContext, ConversationConfig, Message } from '../types/index.js';
19
19
  export declare class ClaudeManager {
20
20
  private runner;
21
21
  private repositoryManager;
@@ -1 +1 @@
1
- {"version":3,"file":"claude-sdk-manager.d.ts","sourceRoot":"","sources":["../../src/components/claude-sdk-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAO5E,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,iBAAiB,CAA4B;gBAGnD,MAAM,EAAE,UAAU,EAClB,iBAAiB,EAAE,yBAAyB;IAiB9C,OAAO,CAAC,sBAAsB;IAKxB,iBAAiB,CACrB,sBAAsB,EAAE,MAAM,GAAG,UAAU,EAC3C,oBAAoB,EAAE,MAAM,EAC5B,MAAM,EAAE,kBAAkB,EAC1B,eAAe,EAAE,OAAO,EAAE,EAC1B,gBAAgB,CAAC,EAAE;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,kBAAkB,EAAE,MAAM,CAAC;QAC3B,qBAAqB,EAAE,MAAM,CAAC;QAC9B,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;KACxB,GACA,OAAO,CAAC,mBAAmB,CAAC;IA6XzB,gBAAgB,CACpB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,mBAAmB,EAC5B,gBAAgB,GAAE,OAAe,EACjC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAmCV,kBAAkB,CACtB,sBAAsB,EAAE,MAAM,GAAG,UAAU,EAC3C,oBAAoB,EAAE,MAAM,EAC5B,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,kBAAkB,EAC1B,gBAAgB,CAAC,EAAE,GAAG,EACtB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC;YAuCJ,qBAAqB;IAsC7B,eAAe,CACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,GAAG,EACZ,MAAM,CAAC,EAAE,kBAAkB,EAC3B,sBAAsB,CAAC,EAAE,MAAM,GAAG,UAAU,EAC5C,oBAAoB,CAAC,EAAE,MAAM,EAC7B,YAAY,CAAC,EAAE,GAAG,EAClB,uBAAuB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAAC,IAAI,CAAC;YA6HF,iBAAiB;YA2BjB,wBAAwB;IA2BtC,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,eAAe;YA2CT,qBAAqB;CA0dpC"}
1
+ {"version":3,"file":"claude-sdk-manager.d.ts","sourceRoot":"","sources":["../../src/components/claude-sdk-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAOrF,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,iBAAiB,CAA4B;gBAGnD,MAAM,EAAE,UAAU,EAClB,iBAAiB,EAAE,yBAAyB;IAiB9C,OAAO,CAAC,sBAAsB;IAKxB,iBAAiB,CACrB,sBAAsB,EAAE,MAAM,GAAG,UAAU,EAC3C,oBAAoB,EAAE,MAAM,EAC5B,MAAM,EAAE,kBAAkB,EAC1B,eAAe,EAAE,OAAO,EAAE,EAC1B,gBAAgB,CAAC,EAAE;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,kBAAkB,EAAE,MAAM,CAAC;QAC3B,qBAAqB,EAAE,MAAM,CAAC;QAC9B,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;KACxB,GACA,OAAO,CAAC,mBAAmB,CAAC;IA4XzB,gBAAgB,CACpB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,mBAAmB,EAC5B,gBAAgB,GAAE,OAAe,EACjC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAmCV,kBAAkB,CACtB,sBAAsB,EAAE,MAAM,GAAG,UAAU,EAC3C,oBAAoB,EAAE,MAAM,EAC5B,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,kBAAkB,EAC1B,gBAAgB,CAAC,EAAE,GAAG,EACtB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC;YAuCJ,qBAAqB;IA2C7B,eAAe,CACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,GAAG,EACZ,MAAM,CAAC,EAAE,kBAAkB,EAC3B,sBAAsB,CAAC,EAAE,MAAM,GAAG,UAAU,EAC5C,oBAAoB,CAAC,EAAE,MAAM,EAC7B,YAAY,CAAC,EAAE,GAAG,EAClB,uBAAuB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAAC,IAAI,CAAC;YAgIF,iBAAiB;YA2BjB,wBAAwB;IA2BtC,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,eAAe;YA2CT,qBAAqB;CA0dpC"}