@northflare/runner 0.0.17 → 0.0.20

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 (154) hide show
  1. package/bin/northflare-runner +17 -3
  2. package/dist/components/claude-sdk-manager.d.ts +6 -3
  3. package/dist/components/claude-sdk-manager.d.ts.map +1 -1
  4. package/dist/components/claude-sdk-manager.js +62 -42
  5. package/dist/components/claude-sdk-manager.js.map +1 -1
  6. package/dist/components/codex-sdk-manager.d.ts +6 -3
  7. package/dist/components/codex-sdk-manager.d.ts.map +1 -1
  8. package/dist/components/codex-sdk-manager.js +60 -16
  9. package/dist/components/codex-sdk-manager.js.map +1 -1
  10. package/dist/components/enhanced-repository-manager.d.ts.map +1 -1
  11. package/dist/components/enhanced-repository-manager.js +2 -1
  12. package/dist/components/enhanced-repository-manager.js.map +1 -1
  13. package/dist/components/message-handler-sse.d.ts.map +1 -1
  14. package/dist/components/message-handler-sse.js +157 -116
  15. package/dist/components/message-handler-sse.js.map +1 -1
  16. package/dist/components/northflare-agent-sdk-manager.d.ts +10 -6
  17. package/dist/components/northflare-agent-sdk-manager.d.ts.map +1 -1
  18. package/dist/components/northflare-agent-sdk-manager.js +350 -98
  19. package/dist/components/northflare-agent-sdk-manager.js.map +1 -1
  20. package/dist/components/repository-manager.d.ts.map +1 -1
  21. package/dist/components/repository-manager.js +2 -1
  22. package/dist/components/repository-manager.js.map +1 -1
  23. package/dist/runner-sse.d.ts.map +1 -1
  24. package/dist/runner-sse.js +7 -0
  25. package/dist/runner-sse.js.map +1 -1
  26. package/dist/types/claude.d.ts +4 -1
  27. package/dist/types/claude.d.ts.map +1 -1
  28. package/dist/utils/console.d.ts +5 -8
  29. package/dist/utils/console.d.ts.map +1 -1
  30. package/dist/utils/console.js +28 -10
  31. package/dist/utils/console.js.map +1 -1
  32. package/dist/utils/debug.d.ts +10 -0
  33. package/dist/utils/debug.d.ts.map +1 -1
  34. package/dist/utils/debug.js +86 -8
  35. package/dist/utils/debug.js.map +1 -1
  36. package/dist/utils/logger.d.ts +2 -1
  37. package/dist/utils/logger.d.ts.map +1 -1
  38. package/dist/utils/logger.js +43 -13
  39. package/dist/utils/logger.js.map +1 -1
  40. package/dist/utils/message-log.d.ts +23 -0
  41. package/dist/utils/message-log.d.ts.map +1 -0
  42. package/dist/utils/message-log.js +69 -0
  43. package/dist/utils/message-log.js.map +1 -0
  44. package/dist/utils/status-line.d.ts +5 -1
  45. package/dist/utils/status-line.d.ts.map +1 -1
  46. package/dist/utils/status-line.js +13 -3
  47. package/dist/utils/status-line.js.map +1 -1
  48. package/package.json +3 -4
  49. package/{lib/codex-sdk/tsup.config.ts → tsup.config.ts} +2 -2
  50. package/lib/codex-sdk/.prettierignore +0 -3
  51. package/lib/codex-sdk/.prettierrc +0 -5
  52. package/lib/codex-sdk/README.md +0 -133
  53. package/lib/codex-sdk/dist/index.d.ts +0 -260
  54. package/lib/codex-sdk/dist/index.js +0 -426
  55. package/lib/codex-sdk/dist/samples/basic_streaming.d.ts +0 -3
  56. package/lib/codex-sdk/dist/samples/basic_streaming.d.ts.map +0 -1
  57. package/lib/codex-sdk/dist/samples/basic_streaming.js +0 -81
  58. package/lib/codex-sdk/dist/samples/basic_streaming.js.map +0 -1
  59. package/lib/codex-sdk/dist/samples/helpers.d.ts +0 -2
  60. package/lib/codex-sdk/dist/samples/helpers.d.ts.map +0 -1
  61. package/lib/codex-sdk/dist/samples/helpers.js +0 -6
  62. package/lib/codex-sdk/dist/samples/helpers.js.map +0 -1
  63. package/lib/codex-sdk/dist/samples/structured_output.d.ts +0 -3
  64. package/lib/codex-sdk/dist/samples/structured_output.d.ts.map +0 -1
  65. package/lib/codex-sdk/dist/samples/structured_output.js +0 -17
  66. package/lib/codex-sdk/dist/samples/structured_output.js.map +0 -1
  67. package/lib/codex-sdk/dist/samples/structured_output_zod.d.ts +0 -3
  68. package/lib/codex-sdk/dist/samples/structured_output_zod.d.ts.map +0 -1
  69. package/lib/codex-sdk/dist/samples/structured_output_zod.js +0 -16
  70. package/lib/codex-sdk/dist/samples/structured_output_zod.js.map +0 -1
  71. package/lib/codex-sdk/dist/src/codex.d.ts +0 -27
  72. package/lib/codex-sdk/dist/src/codex.d.ts.map +0 -1
  73. package/lib/codex-sdk/dist/src/codex.js +0 -33
  74. package/lib/codex-sdk/dist/src/codex.js.map +0 -1
  75. package/lib/codex-sdk/dist/src/codexOptions.d.ts +0 -11
  76. package/lib/codex-sdk/dist/src/codexOptions.d.ts.map +0 -1
  77. package/lib/codex-sdk/dist/src/codexOptions.js +0 -2
  78. package/lib/codex-sdk/dist/src/codexOptions.js.map +0 -1
  79. package/lib/codex-sdk/dist/src/events.d.ts +0 -60
  80. package/lib/codex-sdk/dist/src/events.d.ts.map +0 -1
  81. package/lib/codex-sdk/dist/src/events.js +0 -3
  82. package/lib/codex-sdk/dist/src/events.js.map +0 -1
  83. package/lib/codex-sdk/dist/src/exec.d.ts +0 -27
  84. package/lib/codex-sdk/dist/src/exec.d.ts.map +0 -1
  85. package/lib/codex-sdk/dist/src/exec.js +0 -264
  86. package/lib/codex-sdk/dist/src/exec.js.map +0 -1
  87. package/lib/codex-sdk/dist/src/index.d.ts +0 -9
  88. package/lib/codex-sdk/dist/src/index.d.ts.map +0 -1
  89. package/lib/codex-sdk/dist/src/index.js +0 -3
  90. package/lib/codex-sdk/dist/src/index.js.map +0 -1
  91. package/lib/codex-sdk/dist/src/items.d.ts +0 -103
  92. package/lib/codex-sdk/dist/src/items.d.ts.map +0 -1
  93. package/lib/codex-sdk/dist/src/items.js +0 -3
  94. package/lib/codex-sdk/dist/src/items.js.map +0 -1
  95. package/lib/codex-sdk/dist/src/outputSchemaFile.d.ts +0 -6
  96. package/lib/codex-sdk/dist/src/outputSchemaFile.d.ts.map +0 -1
  97. package/lib/codex-sdk/dist/src/outputSchemaFile.js +0 -33
  98. package/lib/codex-sdk/dist/src/outputSchemaFile.js.map +0 -1
  99. package/lib/codex-sdk/dist/src/thread.d.ts +0 -41
  100. package/lib/codex-sdk/dist/src/thread.d.ts.map +0 -1
  101. package/lib/codex-sdk/dist/src/thread.js +0 -109
  102. package/lib/codex-sdk/dist/src/thread.js.map +0 -1
  103. package/lib/codex-sdk/dist/src/threadOptions.d.ts +0 -16
  104. package/lib/codex-sdk/dist/src/threadOptions.d.ts.map +0 -1
  105. package/lib/codex-sdk/dist/src/threadOptions.js +0 -2
  106. package/lib/codex-sdk/dist/src/threadOptions.js.map +0 -1
  107. package/lib/codex-sdk/dist/src/turnOptions.d.ts +0 -7
  108. package/lib/codex-sdk/dist/src/turnOptions.d.ts.map +0 -1
  109. package/lib/codex-sdk/dist/src/turnOptions.js +0 -2
  110. package/lib/codex-sdk/dist/src/turnOptions.js.map +0 -1
  111. package/lib/codex-sdk/dist/tests/abort.test.d.ts +0 -2
  112. package/lib/codex-sdk/dist/tests/abort.test.d.ts.map +0 -1
  113. package/lib/codex-sdk/dist/tests/abort.test.js +0 -130
  114. package/lib/codex-sdk/dist/tests/abort.test.js.map +0 -1
  115. package/lib/codex-sdk/dist/tests/codexExecSpy.d.ts +0 -6
  116. package/lib/codex-sdk/dist/tests/codexExecSpy.d.ts.map +0 -1
  117. package/lib/codex-sdk/dist/tests/codexExecSpy.js +0 -28
  118. package/lib/codex-sdk/dist/tests/codexExecSpy.js.map +0 -1
  119. package/lib/codex-sdk/dist/tests/responsesProxy.d.ts +0 -56
  120. package/lib/codex-sdk/dist/tests/responsesProxy.d.ts.map +0 -1
  121. package/lib/codex-sdk/dist/tests/responsesProxy.js +0 -155
  122. package/lib/codex-sdk/dist/tests/responsesProxy.js.map +0 -1
  123. package/lib/codex-sdk/dist/tests/run.test.d.ts +0 -2
  124. package/lib/codex-sdk/dist/tests/run.test.d.ts.map +0 -1
  125. package/lib/codex-sdk/dist/tests/run.test.js +0 -524
  126. package/lib/codex-sdk/dist/tests/run.test.js.map +0 -1
  127. package/lib/codex-sdk/dist/tests/runStreamed.test.d.ts +0 -2
  128. package/lib/codex-sdk/dist/tests/runStreamed.test.d.ts.map +0 -1
  129. package/lib/codex-sdk/dist/tests/runStreamed.test.js +0 -153
  130. package/lib/codex-sdk/dist/tests/runStreamed.test.js.map +0 -1
  131. package/lib/codex-sdk/dist/tsup.config.d.ts +0 -3
  132. package/lib/codex-sdk/dist/tsup.config.js +0 -12
  133. package/lib/codex-sdk/eslint.config.js +0 -21
  134. package/lib/codex-sdk/jest.config.cjs +0 -31
  135. package/lib/codex-sdk/package.json +0 -65
  136. package/lib/codex-sdk/samples/basic_streaming.ts +0 -90
  137. package/lib/codex-sdk/samples/helpers.ts +0 -8
  138. package/lib/codex-sdk/samples/structured_output.ts +0 -22
  139. package/lib/codex-sdk/samples/structured_output_zod.ts +0 -19
  140. package/lib/codex-sdk/src/codex.ts +0 -38
  141. package/lib/codex-sdk/src/codexOptions.ts +0 -10
  142. package/lib/codex-sdk/src/events.ts +0 -80
  143. package/lib/codex-sdk/src/exec.ts +0 -336
  144. package/lib/codex-sdk/src/index.ts +0 -39
  145. package/lib/codex-sdk/src/items.ts +0 -127
  146. package/lib/codex-sdk/src/outputSchemaFile.ts +0 -40
  147. package/lib/codex-sdk/src/thread.ts +0 -155
  148. package/lib/codex-sdk/src/threadOptions.ts +0 -18
  149. package/lib/codex-sdk/src/turnOptions.ts +0 -6
  150. package/lib/codex-sdk/tests/abort.test.ts +0 -165
  151. package/lib/codex-sdk/tests/codexExecSpy.ts +0 -37
  152. package/lib/codex-sdk/tests/responsesProxy.ts +0 -225
  153. package/lib/codex-sdk/tests/run.test.ts +0 -687
  154. package/lib/codex-sdk/tests/runStreamed.test.ts +0 -211
@@ -1,16 +1,94 @@
1
- export function isRunnerDebugEnabled() {
2
- const explicitFlag = process.env["NORTHFLARE_RUNNER_DEBUG"];
3
- if (typeof explicitFlag === "string") {
4
- return isTruthy(explicitFlag);
1
+ const KNOWN_SUBSYSTEMS = new Set([
2
+ "runner",
3
+ "manager",
4
+ "rpc",
5
+ "sse",
6
+ "sdk",
7
+ "repo",
8
+ "state",
9
+ "messages",
10
+ ]);
11
+ let cachedConfig = null;
12
+ export function getDebugConfig() {
13
+ // Only use cache if we have already parsed a non-empty debug value.
14
+ // This allows modules that load before CLI sets env vars to re-check
15
+ // the config later once the env vars are actually set.
16
+ if (cachedConfig && cachedConfig.enabled) {
17
+ return cachedConfig;
5
18
  }
19
+ const explicitFlag = process.env["NORTHFLARE_RUNNER_DEBUG"];
6
20
  const legacyFlag = process.env["DEBUG"];
7
- if (typeof legacyFlag === "string") {
8
- return isTruthy(legacyFlag);
21
+ const config = parseDebugValue(typeof explicitFlag === "string" ? explicitFlag : legacyFlag);
22
+ // Only cache if debug is enabled (meaning env vars were set)
23
+ if (config.enabled) {
24
+ cachedConfig = config;
9
25
  }
10
- return false;
26
+ return config;
27
+ }
28
+ export function isRunnerDebugEnabled() {
29
+ return getDebugConfig().enabled;
30
+ }
31
+ export function isDebugEnabledFor(subsystem) {
32
+ const config = getDebugConfig();
33
+ if (!config.enabled)
34
+ return false;
35
+ if (config.allowAll)
36
+ return true;
37
+ if (!subsystem)
38
+ return false;
39
+ const normalized = normalizeSubsystem(subsystem);
40
+ return config.subsystems.has(normalized);
41
+ }
42
+ function parseDebugValue(value) {
43
+ if (!value) {
44
+ return {
45
+ enabled: false,
46
+ allowAll: false,
47
+ subsystems: new Set(),
48
+ raw: "",
49
+ };
50
+ }
51
+ const trimmed = value.trim();
52
+ const normalized = trimmed.toLowerCase();
53
+ // Support boolean-style flags
54
+ if (isTruthy(normalized) || normalized === "*" || normalized === "all") {
55
+ return {
56
+ enabled: true,
57
+ allowAll: true,
58
+ subsystems: new Set(),
59
+ raw: trimmed,
60
+ };
61
+ }
62
+ const parts = normalized
63
+ .split(",")
64
+ .map((part) => part.trim())
65
+ .filter(Boolean)
66
+ .map((part) => normalizeSubsystem(part));
67
+ return {
68
+ enabled: parts.length > 0,
69
+ allowAll: false,
70
+ subsystems: new Set(parts),
71
+ raw: trimmed,
72
+ };
73
+ }
74
+ function normalizeSubsystem(value) {
75
+ const normalized = value.trim().toLowerCase();
76
+ // Common aliases
77
+ if (normalized === "managers")
78
+ return "manager";
79
+ if (normalized === "repos" || normalized === "git")
80
+ return "repo";
81
+ if (normalized === "state-manager")
82
+ return "state";
83
+ if (normalized === "message" || normalized === "msg")
84
+ return "messages";
85
+ return KNOWN_SUBSYSTEMS.has(normalized) ? normalized : normalized;
11
86
  }
12
87
  function isTruthy(value) {
13
88
  const normalized = value.trim().toLowerCase();
14
- return normalized === "true" || normalized === "1" || normalized === "yes" || normalized === "on";
89
+ return (normalized === "true" ||
90
+ normalized === "1" ||
91
+ normalized === "yes" ||
92
+ normalized === "on");
15
93
  }
16
94
  //# sourceMappingURL=debug.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/utils/debug.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB;IAClC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC5D,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,IAAI,CAAC;AACpG,CAAC"}
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/utils/debug.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,9 @@
2
2
  * Logger configuration using Winston
3
3
  */
4
4
  import winston from "winston";
5
+ import { DebugSubsystem } from './debug.js';
5
6
  export declare const logger: winston.Logger;
6
7
  export declare function configureFileLogging(logDir: string): void;
7
- export declare function createLogger(component: string): winston.Logger;
8
+ export declare function createLogger(component: string, subsystem?: DebugSubsystem): winston.Logger;
8
9
  export default logger;
9
10
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AA2D9B,eAAO,MAAM,MAAM,gBAUjB,CAAC;AAGH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAkCzD;AAGD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAE9D;AAeD,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EACL,cAAc,EAGf,MAAM,YAAY,CAAC;AAiGpB,eAAO,MAAM,MAAM,gBAUjB,CAAC;AAGH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAkCzD;AAGD,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,cAAc,GACzB,OAAO,CAAC,MAAM,CAIhB;AAeD,eAAe,MAAM,CAAC"}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import winston from "winston";
5
5
  import path from "path";
6
- import { isRunnerDebugEnabled } from './debug.js';
6
+ import { getDebugConfig, isDebugEnabledFor, } from './debug.js';
7
7
  // Custom log levels
8
8
  const levels = {
9
9
  error: 0,
@@ -25,17 +25,44 @@ const colors = {
25
25
  silly: "gray",
26
26
  };
27
27
  winston.addColors(colors);
28
- const debugEnabled = isRunnerDebugEnabled();
28
+ // Use a getter function so debug state is checked at call time, not module load time
29
+ function isDebugEnabled() {
30
+ return getDebugConfig().enabled;
31
+ }
32
+ const componentSubsystemMap = {
33
+ MessageHandler: "rpc",
34
+ RunnerApp: "runner",
35
+ SSEClient: "sse",
36
+ RunnerAPIClient: "rpc",
37
+ ConfigManager: "runner",
38
+ StateManager: "state",
39
+ MessageFlow: "messages",
40
+ };
41
+ function resolveSubsystem(value) {
42
+ if (value && typeof value === "string") {
43
+ return value.toLowerCase();
44
+ }
45
+ return "runner";
46
+ }
47
+ const subsystemFilter = winston.format((info) => {
48
+ if (info.level !== "debug")
49
+ return info;
50
+ const subsystem = resolveSubsystem(info.subsystem || info.component);
51
+ return isDebugEnabledFor(subsystem) ? info : false;
52
+ });
29
53
  // Format for console output
30
- const consoleFormat = winston.format.combine(winston.format.colorize({ all: true }), winston.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), winston.format.printf(({ timestamp, level, message, stack, ...metadata }) => {
31
- let msg = `${timestamp} [${level}]: ${message}`;
54
+ const consoleFormat = winston.format.combine(subsystemFilter(), winston.format.colorize({ all: true }), winston.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), winston.format.printf(({ timestamp, level, message, stack, component, subsystem, ...metadata }) => {
55
+ const scopeParts = [subsystem, component].filter(Boolean);
56
+ const scope = scopeParts.length ? ` ${scopeParts.join('/')}` : "";
57
+ let msg = `${timestamp} [${level}]${scope}: ${message}`;
32
58
  // Only show stack traces and metadata in debug mode
33
- if (debugEnabled) {
59
+ if (isDebugEnabled()) {
34
60
  if (stack) {
35
61
  msg += `\n${stack}`;
36
62
  }
37
63
  const filteredMetadata = { ...metadata };
38
- delete filteredMetadata["component"]; // Keep component info
64
+ delete filteredMetadata["component"];
65
+ delete filteredMetadata["subsystem"];
39
66
  if (Object.keys(filteredMetadata).length > 0) {
40
67
  msg += ` ${JSON.stringify(filteredMetadata)}`;
41
68
  }
@@ -43,16 +70,18 @@ const consoleFormat = winston.format.combine(winston.format.colorize({ all: true
43
70
  return msg;
44
71
  }));
45
72
  // Format for file output
46
- const fileFormat = winston.format.combine(winston.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), winston.format.errors({ stack: true }), winston.format.json());
73
+ const fileFormat = winston.format.combine(subsystemFilter(), winston.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), winston.format.errors({ stack: true }), winston.format.json());
47
74
  // Create logger instance
75
+ // Set level to debug unconditionally - the subsystemFilter will decide what to actually output
76
+ // This avoids issues with env vars not being set at module load time
48
77
  export const logger = winston.createLogger({
49
- level: debugEnabled ? "debug" : "info",
78
+ level: "debug",
50
79
  levels,
51
80
  transports: [
52
- // Always include console transport for errors
81
+ // Console transport set to debug - subsystemFilter handles the actual filtering
53
82
  new winston.transports.Console({
54
83
  format: consoleFormat,
55
- level: debugEnabled ? "debug" : "error",
84
+ level: "debug",
56
85
  }),
57
86
  ],
58
87
  });
@@ -74,7 +103,7 @@ export function configureFileLogging(logDir) {
74
103
  maxFiles: 10,
75
104
  }));
76
105
  // Debug log file (only in debug mode)
77
- if (debugEnabled) {
106
+ if (isDebugEnabled()) {
78
107
  logger.add(new winston.transports.File({
79
108
  filename: path.join(logDir, "debug.log"),
80
109
  level: "debug",
@@ -85,8 +114,9 @@ export function configureFileLogging(logDir) {
85
114
  }
86
115
  }
87
116
  // Create child logger for specific components
88
- export function createLogger(component) {
89
- return logger.child({ component });
117
+ export function createLogger(component, subsystem) {
118
+ const resolvedSubsystem = subsystem || componentSubsystemMap[component] || "runner";
119
+ return logger.child({ component, subsystem: resolvedSubsystem });
90
120
  }
91
121
  // Log unhandled errors
92
122
  // Route unhandled exceptions/rejections to the console so we don't litter local
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { JsonRpcMessage, RunnerMessage } from '../types/index.js';
2
+ export declare const MESSAGE_LOG_SEGMENT = 500;
3
+ export declare const messageFlowLogger: import("winston").Logger;
4
+ export declare const messagesDebugEnabled: () => boolean;
5
+ /**
6
+ * Trim a long string by keeping the first and last segments.
7
+ */
8
+ export declare function trimStringForLog(value: string, segment?: number): string;
9
+ /**
10
+ * Recursively clone a payload for logging, trimming long string values when requested.
11
+ */
12
+ export declare function clonePayloadForLog<T>(payload: T, options: {
13
+ trimLongStrings: boolean;
14
+ }): T;
15
+ /**
16
+ * Prepare a concise log entry for an incoming RunnerMessage.
17
+ */
18
+ export declare function buildIncomingMessageLog(message: RunnerMessage): Record<string, unknown>;
19
+ /**
20
+ * Prepare a verbose log entry for an outgoing JsonRpcMessage.
21
+ */
22
+ export declare function buildOutgoingMessageLog(message: JsonRpcMessage): Record<string, unknown>;
23
+ //# sourceMappingURL=message-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-log.d.ts","sourceRoot":"","sources":["../../src/utils/message-log.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvE,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAGvC,eAAO,MAAM,iBAAiB,0BAA0C,CAAC;AACzE,eAAO,MAAM,oBAAoB,QAAO,OAAwC,CAAC;AAEjF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAA4B,GAAG,MAAM,CAI7F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE;IAAE,eAAe,EAAE,OAAO,CAAA;CAAE,GAAG,CAAC,CA0B1F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWvF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASxF"}
@@ -0,0 +1,69 @@
1
+ import { createLogger } from './logger.js';
2
+ import { isDebugEnabledFor } from './debug.js';
3
+ // Limit used when trimming long content fields
4
+ export const MESSAGE_LOG_SEGMENT = 500;
5
+ // Shared logger + flag for message flow tracing
6
+ export const messageFlowLogger = createLogger("MessageFlow", "messages");
7
+ export const messagesDebugEnabled = () => isDebugEnabledFor("messages");
8
+ /**
9
+ * Trim a long string by keeping the first and last segments.
10
+ */
11
+ export function trimStringForLog(value, segment = MESSAGE_LOG_SEGMENT) {
12
+ if (value.length <= segment * 2)
13
+ return value;
14
+ const omitted = value.length - segment * 2;
15
+ return `${value.slice(0, segment)}...[${omitted} chars trimmed]...${value.slice(-segment)}`;
16
+ }
17
+ /**
18
+ * Recursively clone a payload for logging, trimming long string values when requested.
19
+ */
20
+ export function clonePayloadForLog(payload, options) {
21
+ if (!options.trimLongStrings) {
22
+ return payload;
23
+ }
24
+ const clone = (value) => {
25
+ if (typeof value === "string") {
26
+ return trimStringForLog(value);
27
+ }
28
+ if (Array.isArray(value)) {
29
+ return value.map(clone);
30
+ }
31
+ if (value && typeof value === "object") {
32
+ const result = {};
33
+ for (const [key, val] of Object.entries(value)) {
34
+ result[key] = clone(val);
35
+ }
36
+ return result;
37
+ }
38
+ return value;
39
+ };
40
+ return clone(payload);
41
+ }
42
+ /**
43
+ * Prepare a concise log entry for an incoming RunnerMessage.
44
+ */
45
+ export function buildIncomingMessageLog(message) {
46
+ return {
47
+ direction: message.direction,
48
+ messageId: message.id,
49
+ method: message.payload?.method,
50
+ taskId: message.taskId,
51
+ conversationId: message.conversationId || message.payload?.params?.conversationId || null,
52
+ workspaceId: message.workspaceId,
53
+ payload: clonePayloadForLog(message.payload, { trimLongStrings: true }),
54
+ };
55
+ }
56
+ /**
57
+ * Prepare a verbose log entry for an outgoing JsonRpcMessage.
58
+ */
59
+ export function buildOutgoingMessageLog(message) {
60
+ return {
61
+ direction: "to_orchestrator",
62
+ method: message.method,
63
+ id: message.id,
64
+ params: message.params,
65
+ result: message.result,
66
+ error: message.error,
67
+ };
68
+ }
69
+ //# sourceMappingURL=message-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-log.js","sourceRoot":"","sources":["../../src/utils/message-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,+CAA+C;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,gDAAgD;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAY,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAEjF;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,UAAkB,mBAAmB;IACnF,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;IAC3C,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,OAAO,qBAAqB,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;AAC9F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAI,OAAU,EAAE,OAAqC;IACrF,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,KAAU,EAAO,EAAE;QAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,MAAM,GAAwB,EAAE,CAAC;YACvC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,OAAO,KAAK,CAAC,OAAO,CAAM,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAsB;IAC5D,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM;QAC/B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,cAAc,EACZ,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,IAAI,IAAI;QAC3E,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;KACxE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAuB;IAC7D,OAAO;QACL,SAAS,EAAE,iBAAiB;QAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;AACJ,CAAC"}
@@ -3,8 +3,12 @@ export declare class StatusLineManager {
3
3
  private alignTimeoutId?;
4
4
  private activeCount;
5
5
  private lastLine;
6
- private isEnabled;
6
+ private isEnabledCached;
7
7
  constructor();
8
+ /**
9
+ * Check if status line is enabled (only enabled when not in debug mode)
10
+ */
11
+ private get isEnabled();
8
12
  /**
9
13
  * Updates the count of active conversations
10
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"status-line.d.ts","sourceRoot":"","sources":["../../src/utils/status-line.ts"],"names":[],"mappings":"AAUA,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,SAAS,CAAiB;;IAOlC;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAqBtC;;OAEG;IACH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;IACH,OAAO,CAAC,UAAU;IAmClB;;OAEG;IACH,OAAO,IAAI,IAAI;CAOhB;AAGD,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
1
+ {"version":3,"file":"status-line.d.ts","sourceRoot":"","sources":["../../src/utils/status-line.ts"],"names":[],"mappings":"AAUA,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,eAAe,CAAwB;;IAO/C;;OAEG;IACH,OAAO,KAAK,SAAS,GAMpB;IAED;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAqBtC;;OAEG;IACH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;IACH,OAAO,CAAC,UAAU;IAmClB;;OAEG;IACH,OAAO,IAAI,IAAI;CAOhB;AAGD,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
@@ -12,10 +12,20 @@ export class StatusLineManager {
12
12
  alignTimeoutId;
13
13
  activeCount = 0;
14
14
  lastLine = "";
15
- isEnabled = true;
15
+ isEnabledCached = null;
16
16
  constructor() {
17
- // Only enable status line when not in debug mode
18
- this.isEnabled = !isRunnerDebugEnabled();
17
+ // Don't cache debug state here - defer until first use
18
+ // This allows env vars to be set after module load
19
+ }
20
+ /**
21
+ * Check if status line is enabled (only enabled when not in debug mode)
22
+ */
23
+ get isEnabled() {
24
+ // Cache on first call, after env vars have been set
25
+ if (this.isEnabledCached === null) {
26
+ this.isEnabledCached = !isRunnerDebugEnabled();
27
+ }
28
+ return this.isEnabledCached;
19
29
  }
20
30
  /**
21
31
  * Updates the count of active conversations
@@ -1 +1 @@
1
- {"version":3,"file":"status-line.js","sourceRoot":"","sources":["../../src/utils/status-line.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status-line.js","sourceRoot":"","sources":["../../src/utils/status-line.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@northflare/runner",
3
- "version": "0.0.17",
3
+ "version": "0.0.20",
4
4
  "description": "Distributed conversation runner for Northflare",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -12,8 +12,6 @@
12
12
  "@anthropic-ai/claude-agent-sdk": "0.1.51",
13
13
  "@botanicastudios/claude-code-sdk-ts": "0.2.22-fork",
14
14
  "@botanicastudios/mcp-host-rpc": "^0.4.0",
15
- "@northflare/codex-sdk": "file:lib/codex-sdk",
16
- "@openai/codex-sdk": "^0.60.1",
17
15
  "@openrouter/ai-sdk-provider": "^1.2.8",
18
16
  "@tanstack/react-query": "^5.x.x",
19
17
  "@types/jsonwebtoken": "^9.0.10",
@@ -28,7 +26,8 @@
28
26
  "simple-git": "^3.x.x",
29
27
  "winston": "^3.x.x",
30
28
  "zod": "^3.25.8",
31
- "@northflare/agent": "0.1.2"
29
+ "@northflare/agent": "0.1.3",
30
+ "@northflare/codex-sdk": "0.1.0"
32
31
  },
33
32
  "devDependencies": {
34
33
  "@types/eventsource": "^1.1.15",
@@ -6,7 +6,7 @@ export default defineConfig({
6
6
  dts: true,
7
7
  sourcemap: true,
8
8
  clean: true,
9
- minify: false,
10
9
  target: "node18",
11
- shims: false,
10
+ // Bundle codex-sdk since it's not published, externalize everything else
11
+ noExternal: ["@northflare/codex-sdk"],
12
12
  });
@@ -1,3 +0,0 @@
1
- dist
2
- node_modules
3
- coverage
@@ -1,5 +0,0 @@
1
- {
2
- "printWidth": 100,
3
- "singleQuote": false,
4
- "trailingComma": "all"
5
- }
@@ -1,133 +0,0 @@
1
- # Codex SDK
2
-
3
- Embed the Codex agent in your workflows and apps.
4
-
5
- The TypeScript SDK wraps the bundled `codex` binary. It spawns the CLI and exchanges JSONL events over stdin/stdout.
6
-
7
- ## Installation
8
-
9
- ```bash
10
- npm install @openai/codex-sdk
11
- ```
12
-
13
- Requires Node.js 18+.
14
-
15
- ## Quickstart
16
-
17
- ```typescript
18
- import { Codex } from "@openai/codex-sdk";
19
-
20
- const codex = new Codex();
21
- const thread = codex.startThread();
22
- const turn = await thread.run("Diagnose the test failure and propose a fix");
23
-
24
- console.log(turn.finalResponse);
25
- console.log(turn.items);
26
- ```
27
-
28
- Call `run()` repeatedly on the same `Thread` instance to continue that conversation.
29
-
30
- ```typescript
31
- const nextTurn = await thread.run("Implement the fix");
32
- ```
33
-
34
- ### Streaming responses
35
-
36
- `run()` buffers events until the turn finishes. To react to intermediate progress—tool calls, streaming responses, and file change notifications—use `runStreamed()` instead, which returns an async generator of structured events.
37
-
38
- ```typescript
39
- const { events } = await thread.runStreamed("Diagnose the test failure and propose a fix");
40
-
41
- for await (const event of events) {
42
- switch (event.type) {
43
- case "item.completed":
44
- console.log("item", event.item);
45
- break;
46
- case "turn.completed":
47
- console.log("usage", event.usage);
48
- break;
49
- }
50
- }
51
- ```
52
-
53
- ### Structured output
54
-
55
- The Codex agent can produce a JSON response that conforms to a specified schema. The schema can be provided for each turn as a plain JSON object.
56
-
57
- ```typescript
58
- const schema = {
59
- type: "object",
60
- properties: {
61
- summary: { type: "string" },
62
- status: { type: "string", enum: ["ok", "action_required"] },
63
- },
64
- required: ["summary", "status"],
65
- additionalProperties: false,
66
- } as const;
67
-
68
- const turn = await thread.run("Summarize repository status", { outputSchema: schema });
69
- console.log(turn.finalResponse);
70
- ```
71
-
72
- You can also create a JSON schema from a [Zod schema](https://github.com/colinhacks/zod) using the [`zod-to-json-schema`](https://www.npmjs.com/package/zod-to-json-schema) package and setting the `target` to `"openAi"`.
73
-
74
- ```typescript
75
- const schema = z.object({
76
- summary: z.string(),
77
- status: z.enum(["ok", "action_required"]),
78
- });
79
-
80
- const turn = await thread.run("Summarize repository status", {
81
- outputSchema: zodToJsonSchema(schema, { target: "openAi" }),
82
- });
83
- console.log(turn.finalResponse);
84
- ```
85
-
86
- ### Attaching images
87
-
88
- Provide structured input entries when you need to include images alongside text. Text entries are concatenated into the final prompt while image entries are passed to the Codex CLI via `--image`.
89
-
90
- ```typescript
91
- const turn = await thread.run([
92
- { type: "text", text: "Describe these screenshots" },
93
- { type: "local_image", path: "./ui.png" },
94
- { type: "local_image", path: "./diagram.jpg" },
95
- ]);
96
- ```
97
-
98
- ### Resuming an existing thread
99
-
100
- Threads are persisted in `~/.codex/sessions`. If you lose the in-memory `Thread` object, reconstruct it with `resumeThread()` and keep going.
101
-
102
- ```typescript
103
- const savedThreadId = process.env.CODEX_THREAD_ID!;
104
- const thread = codex.resumeThread(savedThreadId);
105
- await thread.run("Implement the fix");
106
- ```
107
-
108
- ### Working directory controls
109
-
110
- Codex runs in the current working directory by default. To avoid unrecoverable errors, Codex requires the working directory to be a Git repository. You can skip the Git repository check by passing the `skipGitRepoCheck` option when creating a thread.
111
-
112
- ```typescript
113
- const thread = codex.startThread({
114
- workingDirectory: "/path/to/project",
115
- skipGitRepoCheck: true,
116
- });
117
- ```
118
-
119
- ### Controlling the Codex CLI environment
120
-
121
- By default, the Codex CLI inherits the Node.js process environment. Provide the optional `env` parameter when instantiating the
122
- `Codex` client to fully control which variables the CLI receives—useful for sandboxed hosts like Electron apps.
123
-
124
- ```typescript
125
- const codex = new Codex({
126
- env: {
127
- PATH: "/usr/local/bin",
128
- },
129
- });
130
- ```
131
-
132
- The SDK still injects its required variables (such as `OPENAI_BASE_URL` and `CODEX_API_KEY`) on top of the environment you
133
- provide.