@northflare/runner 0.0.9 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/claude-sdk-manager.d.ts.map +1 -1
- package/dist/components/claude-sdk-manager.js +5 -4
- package/dist/components/claude-sdk-manager.js.map +1 -1
- package/dist/components/codex-sdk-manager.d.ts +2 -0
- package/dist/components/codex-sdk-manager.d.ts.map +1 -1
- package/dist/components/codex-sdk-manager.js +98 -11
- package/dist/components/codex-sdk-manager.js.map +1 -1
- package/dist/components/message-handler-sse.d.ts.map +1 -1
- package/dist/components/message-handler-sse.js +15 -14
- package/dist/components/message-handler-sse.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/runner-sse.d.ts.map +1 -1
- package/dist/runner-sse.js +25 -112
- package/dist/runner-sse.js.map +1 -1
- package/dist/runner.js +3 -3
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +1 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/console.d.ts.map +1 -1
- package/dist/utils/console.js +2 -1
- package/dist/utils/console.js.map +1 -1
- package/dist/utils/debug.d.ts +2 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/debug.js +19 -0
- package/dist/utils/debug.js.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +6 -4
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/status-line.d.ts +0 -8
- package/dist/utils/status-line.d.ts.map +1 -1
- package/dist/utils/status-line.js +4 -3
- package/dist/utils/status-line.js.map +1 -1
- package/dist/utils/tool-response-sanitizer.d.ts +9 -0
- package/dist/utils/tool-response-sanitizer.d.ts.map +1 -0
- package/dist/utils/tool-response-sanitizer.js +122 -0
- package/dist/utils/tool-response-sanitizer.js.map +1 -0
- package/exceptions.log +2 -0
- package/package.json +1 -1
- package/rejections.log +3 -0
- package/src/components/claude-sdk-manager.ts +5 -4
- package/src/components/codex-sdk-manager.ts +121 -11
- package/src/components/message-handler-sse.ts +15 -14
- package/src/index.ts +4 -2
- package/src/runner-sse.ts +29 -133
- package/src/types/index.ts +1 -0
- package/src/utils/config.ts +1 -0
- package/src/utils/console.ts +4 -2
- package/src/utils/debug.ts +18 -0
- package/src/utils/logger.ts +8 -5
- package/src/utils/status-line.ts +3 -2
- package/src/utils/tool-response-sanitizer.ts +160 -0
- package/tests/tool-response-sanitizer.test.ts +63 -0
package/package.json
CHANGED
package/rejections.log
CHANGED
|
@@ -63,3 +63,6 @@
|
|
|
63
63
|
{"date":"Fri Oct 31 2025 15:15:47 GMT+0100 (Central European Standard Time)","error":{"code":"MODULE_NOT_FOUND","path":"/Users/toby/Code/claudette/runner/node_modules/@anthropic-ai/claude-code/package.json","requestPath":"@anthropic-ai/claude-code"},"level":"error","message":"unhandledRejection: Cannot find module '/Users/toby/Code/claudette/runner/node_modules/@anthropic-ai/claude-code/sdk.mjs'. Please verify that the package.json has a valid \"main\" entry\nError: Cannot find module '/Users/toby/Code/claudette/runner/node_modules/@anthropic-ai/claude-code/sdk.mjs'. Please verify that the package.json has a valid \"main\" entry\n at tryPackage (node:internal/modules/cjs/loader:511:19)\n at Function._findPath (node:internal/modules/cjs/loader:796:18)\n at Function._resolveFilename (node:internal/modules/cjs/loader:1387:27)\n at defaultResolveImpl (node:internal/modules/cjs/loader:1057:19)\n at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1062:22)\n at Function._load (node:internal/modules/cjs/loader:1211:37)\n at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)\n at Module.require (node:internal/modules/cjs/loader:1487:12)\n at require (node:internal/modules/helpers:135:16)","os":{"loadavg":[10.09228515625,5.86376953125,4.3662109375],"uptime":187703},"process":{"argv":["/Users/toby/.nvm/versions/node/v22.15.0/bin/node","/Users/toby/Code/claudette/runner/bin/claudette-runner"],"cwd":"/Users/toby/Code/claudette/runner","execPath":"/Users/toby/.nvm/versions/node/v22.15.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":12531,"external":1652665,"heapTotal":10829824,"heapUsed":7045984,"rss":56049664},"pid":4552,"uid":501,"version":"v22.15.0"},"rejection":true,"stack":"Error: Cannot find module '/Users/toby/Code/claudette/runner/node_modules/@anthropic-ai/claude-code/sdk.mjs'. Please verify that the package.json has a valid \"main\" entry\n at tryPackage (node:internal/modules/cjs/loader:511:19)\n at Function._findPath (node:internal/modules/cjs/loader:796:18)\n at Function._resolveFilename (node:internal/modules/cjs/loader:1387:27)\n at defaultResolveImpl (node:internal/modules/cjs/loader:1057:19)\n at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1062:22)\n at Function._load (node:internal/modules/cjs/loader:1211:37)\n at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)\n at Module.require (node:internal/modules/cjs/loader:1487:12)\n at require (node:internal/modules/helpers:135:16)","trace":[{"column":19,"file":"node:internal/modules/cjs/loader","function":"tryPackage","line":511,"method":null,"native":false},{"column":18,"file":"node:internal/modules/cjs/loader","function":"Function._findPath","line":796,"method":"_findPath","native":false},{"column":27,"file":"node:internal/modules/cjs/loader","function":"Function._resolveFilename","line":1387,"method":"_resolveFilename","native":false},{"column":19,"file":"node:internal/modules/cjs/loader","function":"defaultResolveImpl","line":1057,"method":null,"native":false},{"column":22,"file":"node:internal/modules/cjs/loader","function":"resolveForCJSWithHooks","line":1062,"method":null,"native":false},{"column":37,"file":"node:internal/modules/cjs/loader","function":"Function._load","line":1211,"method":"_load","native":false},{"column":14,"file":"node:diagnostics_channel","function":"TracingChannel.traceSync","line":322,"method":"traceSync","native":false},{"column":24,"file":"node:internal/modules/cjs/loader","function":"wrapModuleLoad","line":235,"method":null,"native":false},{"column":12,"file":"node:internal/modules/cjs/loader","function":"Module.require","line":1487,"method":"require","native":false},{"column":16,"file":"node:internal/modules/helpers","function":"require","line":135,"method":null,"native":false}]}
|
|
64
64
|
{"date":"Tue Nov 18 2025 11:23:35 GMT+0100 (Central European Standard Time)","error":{"code":"ERR_PACKAGE_PATH_NOT_EXPORTED"},"level":"error","message":"unhandledRejection: No \"exports\" main defined in /Users/toby/Code/claudette/runner/node_modules/@northflare/codex-sdk/package.json\nError [ERR_PACKAGE_PATH_NOT_EXPORTED]: No \"exports\" main defined in /Users/toby/Code/claudette/runner/node_modules/@northflare/codex-sdk/package.json\n at exportsNotFound (node:internal/modules/esm/resolve:314:10)\n at packageExportsResolve (node:internal/modules/esm/resolve:604:13)\n at resolveExports (node:internal/modules/cjs/loader:657:36)\n at Function._findPath (node:internal/modules/cjs/loader:749:31)\n at Function._resolveFilename (node:internal/modules/cjs/loader:1387:27)\n at defaultResolveImpl (node:internal/modules/cjs/loader:1057:19)\n at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1062:22)\n at Function._load (node:internal/modules/cjs/loader:1211:37)\n at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)","os":{"loadavg":[4.82373046875,4.37255859375,4.115234375],"uptime":97198},"process":{"argv":["/Users/toby/.nvm/versions/node/v22.15.0/bin/node","/Users/toby/Code/claudette/runner/bin/northflare-runner"],"cwd":"/Users/toby/Code/claudette/runner","execPath":"/Users/toby/.nvm/versions/node/v22.15.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":18675,"external":2091282,"heapTotal":18972672,"heapUsed":12330016,"rss":65404928},"pid":95991,"uid":501,"version":"v22.15.0"},"rejection":true,"stack":"Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No \"exports\" main defined in /Users/toby/Code/claudette/runner/node_modules/@northflare/codex-sdk/package.json\n at exportsNotFound (node:internal/modules/esm/resolve:314:10)\n at packageExportsResolve (node:internal/modules/esm/resolve:604:13)\n at resolveExports (node:internal/modules/cjs/loader:657:36)\n at Function._findPath (node:internal/modules/cjs/loader:749:31)\n at Function._resolveFilename (node:internal/modules/cjs/loader:1387:27)\n at defaultResolveImpl (node:internal/modules/cjs/loader:1057:19)\n at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1062:22)\n at Function._load (node:internal/modules/cjs/loader:1211:37)\n at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)","trace":[{"column":10,"file":"node:internal/modules/esm/resolve","function":"exportsNotFound","line":314,"method":null,"native":false},{"column":13,"file":"node:internal/modules/esm/resolve","function":"packageExportsResolve","line":604,"method":null,"native":false},{"column":36,"file":"node:internal/modules/cjs/loader","function":"resolveExports","line":657,"method":null,"native":false},{"column":31,"file":"node:internal/modules/cjs/loader","function":"Function._findPath","line":749,"method":"_findPath","native":false},{"column":27,"file":"node:internal/modules/cjs/loader","function":"Function._resolveFilename","line":1387,"method":"_resolveFilename","native":false},{"column":19,"file":"node:internal/modules/cjs/loader","function":"defaultResolveImpl","line":1057,"method":null,"native":false},{"column":22,"file":"node:internal/modules/cjs/loader","function":"resolveForCJSWithHooks","line":1062,"method":null,"native":false},{"column":37,"file":"node:internal/modules/cjs/loader","function":"Function._load","line":1211,"method":"_load","native":false},{"column":14,"file":"node:diagnostics_channel","function":"TracingChannel.traceSync","line":322,"method":"traceSync","native":false},{"column":24,"file":"node:internal/modules/cjs/loader","function":"wrapModuleLoad","line":235,"method":null,"native":false}]}
|
|
65
65
|
{"date":"Tue Nov 18 2025 11:24:17 GMT+0100 (Central European Standard Time)","error":{"code":"ERR_PACKAGE_PATH_NOT_EXPORTED"},"level":"error","message":"unhandledRejection: No \"exports\" main defined in /Users/toby/Code/claudette/runner/node_modules/@northflare/codex-sdk/package.json\nError [ERR_PACKAGE_PATH_NOT_EXPORTED]: No \"exports\" main defined in /Users/toby/Code/claudette/runner/node_modules/@northflare/codex-sdk/package.json\n at exportsNotFound (node:internal/modules/esm/resolve:314:10)\n at packageExportsResolve (node:internal/modules/esm/resolve:604:13)\n at resolveExports (node:internal/modules/cjs/loader:657:36)\n at Function._findPath (node:internal/modules/cjs/loader:749:31)\n at Function._resolveFilename (node:internal/modules/cjs/loader:1387:27)\n at defaultResolveImpl (node:internal/modules/cjs/loader:1057:19)\n at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1062:22)\n at Function._load (node:internal/modules/cjs/loader:1211:37)\n at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)","os":{"loadavg":[7.13623046875,4.9140625,4.31787109375],"uptime":97240},"process":{"argv":["/Users/toby/.nvm/versions/node/v22.15.0/bin/node","/Users/toby/Code/claudette/runner/bin/northflare-runner"],"cwd":"/Users/toby/Code/claudette/runner","execPath":"/Users/toby/.nvm/versions/node/v22.15.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":18675,"external":2091282,"heapTotal":18710528,"heapUsed":12265536,"rss":65486848},"pid":99528,"uid":501,"version":"v22.15.0"},"rejection":true,"stack":"Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No \"exports\" main defined in /Users/toby/Code/claudette/runner/node_modules/@northflare/codex-sdk/package.json\n at exportsNotFound (node:internal/modules/esm/resolve:314:10)\n at packageExportsResolve (node:internal/modules/esm/resolve:604:13)\n at resolveExports (node:internal/modules/cjs/loader:657:36)\n at Function._findPath (node:internal/modules/cjs/loader:749:31)\n at Function._resolveFilename (node:internal/modules/cjs/loader:1387:27)\n at defaultResolveImpl (node:internal/modules/cjs/loader:1057:19)\n at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1062:22)\n at Function._load (node:internal/modules/cjs/loader:1211:37)\n at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)","trace":[{"column":10,"file":"node:internal/modules/esm/resolve","function":"exportsNotFound","line":314,"method":null,"native":false},{"column":13,"file":"node:internal/modules/esm/resolve","function":"packageExportsResolve","line":604,"method":null,"native":false},{"column":36,"file":"node:internal/modules/cjs/loader","function":"resolveExports","line":657,"method":null,"native":false},{"column":31,"file":"node:internal/modules/cjs/loader","function":"Function._findPath","line":749,"method":"_findPath","native":false},{"column":27,"file":"node:internal/modules/cjs/loader","function":"Function._resolveFilename","line":1387,"method":"_resolveFilename","native":false},{"column":19,"file":"node:internal/modules/cjs/loader","function":"defaultResolveImpl","line":1057,"method":null,"native":false},{"column":22,"file":"node:internal/modules/cjs/loader","function":"resolveForCJSWithHooks","line":1062,"method":null,"native":false},{"column":37,"file":"node:internal/modules/cjs/loader","function":"Function._load","line":1211,"method":"_load","native":false},{"column":14,"file":"node:diagnostics_channel","function":"TracingChannel.traceSync","line":322,"method":"traceSync","native":false},{"column":24,"file":"node:internal/modules/cjs/loader","function":"wrapModuleLoad","line":235,"method":null,"native":false}]}
|
|
66
|
+
{"date":"Wed Nov 19 2025 04:00:21 GMT+0100 (Central European Standard Time)","error":{},"level":"error","message":"unhandledRejection: Cannot access 'debug_1' before initialization\nReferenceError: Cannot access 'debug_1' before initialization\n at new StatusLineManager (/Users/toby/Code/claudette/runner/dist/utils/status-line.js:19:39)\n at Object.<anonymous> (/Users/toby/Code/claudette/runner/dist/utils/status-line.js:112:29)\n at Module._compile (node:internal/modules/cjs/loader:1730:14)\n at Object..js (node:internal/modules/cjs/loader:1895:10)\n at Module.load (node:internal/modules/cjs/loader:1465:32)\n at Function._load (node:internal/modules/cjs/loader:1282:12)\n at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)\n at Module.require (node:internal/modules/cjs/loader:1487:12)\n at require (node:internal/modules/helpers:135:16)","os":{"loadavg":[4.80712890625,4.451171875,4.53564453125],"uptime":157004},"process":{"argv":["/Users/toby/.nvm/versions/node/v22.15.0/bin/node","/Users/toby/Code/claudette/runner/bin/northflare-runner"],"cwd":"/Users/toby/Code/claudette/runner","execPath":"/Users/toby/.nvm/versions/node/v22.15.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":12531,"external":1652665,"heapTotal":11091968,"heapUsed":6918376,"rss":54345728},"pid":4913,"uid":501,"version":"v22.15.0"},"rejection":true,"stack":"ReferenceError: Cannot access 'debug_1' before initialization\n at new StatusLineManager (/Users/toby/Code/claudette/runner/dist/utils/status-line.js:19:39)\n at Object.<anonymous> (/Users/toby/Code/claudette/runner/dist/utils/status-line.js:112:29)\n at Module._compile (node:internal/modules/cjs/loader:1730:14)\n at Object..js (node:internal/modules/cjs/loader:1895:10)\n at Module.load (node:internal/modules/cjs/loader:1465:32)\n at Function._load (node:internal/modules/cjs/loader:1282:12)\n at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)\n at Module.require (node:internal/modules/cjs/loader:1487:12)\n at require (node:internal/modules/helpers:135:16)","trace":[{"column":39,"file":"/Users/toby/Code/claudette/runner/dist/utils/status-line.js","function":"new StatusLineManager","line":19,"method":null,"native":false},{"column":29,"file":"/Users/toby/Code/claudette/runner/dist/utils/status-line.js","function":null,"line":112,"method":null,"native":false},{"column":14,"file":"node:internal/modules/cjs/loader","function":"Module._compile","line":1730,"method":"_compile","native":false},{"column":10,"file":"node:internal/modules/cjs/loader","function":"Object..js","line":1895,"method":".js","native":false},{"column":32,"file":"node:internal/modules/cjs/loader","function":"Module.load","line":1465,"method":"load","native":false},{"column":12,"file":"node:internal/modules/cjs/loader","function":"Function._load","line":1282,"method":"_load","native":false},{"column":14,"file":"node:diagnostics_channel","function":"TracingChannel.traceSync","line":322,"method":"traceSync","native":false},{"column":24,"file":"node:internal/modules/cjs/loader","function":"wrapModuleLoad","line":235,"method":null,"native":false},{"column":12,"file":"node:internal/modules/cjs/loader","function":"Module.require","line":1487,"method":"require","native":false},{"column":16,"file":"node:internal/modules/helpers","function":"require","line":135,"method":null,"native":false}]}
|
|
67
|
+
{"date":"Wed Nov 19 2025 04:01:10 GMT+0100 (Central European Standard Time)","error":{},"level":"error","message":"unhandledRejection: Cannot access 'debug_1' before initialization\nReferenceError: Cannot access 'debug_1' before initialization\n at new StatusLineManager (/Users/toby/Code/claudette/runner/dist/utils/status-line.js:19:39)\n at Object.<anonymous> (/Users/toby/Code/claudette/runner/dist/utils/status-line.js:112:29)\n at Module._compile (node:internal/modules/cjs/loader:1730:14)\n at Object..js (node:internal/modules/cjs/loader:1895:10)\n at Module.load (node:internal/modules/cjs/loader:1465:32)\n at Function._load (node:internal/modules/cjs/loader:1282:12)\n at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)\n at Module.require (node:internal/modules/cjs/loader:1487:12)\n at require (node:internal/modules/helpers:135:16)","os":{"loadavg":[4.14501953125,4.3193359375,4.48046875],"uptime":157053},"process":{"argv":["/Users/toby/.nvm/versions/node/v22.15.0/bin/node","/Users/toby/Code/claudette/runner/bin/northflare-runner"],"cwd":"/Users/toby/Code/claudette/runner","execPath":"/Users/toby/.nvm/versions/node/v22.15.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":12531,"external":1652665,"heapTotal":11091968,"heapUsed":6903192,"rss":55017472},"pid":8705,"uid":501,"version":"v22.15.0"},"rejection":true,"stack":"ReferenceError: Cannot access 'debug_1' before initialization\n at new StatusLineManager (/Users/toby/Code/claudette/runner/dist/utils/status-line.js:19:39)\n at Object.<anonymous> (/Users/toby/Code/claudette/runner/dist/utils/status-line.js:112:29)\n at Module._compile (node:internal/modules/cjs/loader:1730:14)\n at Object..js (node:internal/modules/cjs/loader:1895:10)\n at Module.load (node:internal/modules/cjs/loader:1465:32)\n at Function._load (node:internal/modules/cjs/loader:1282:12)\n at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)\n at Module.require (node:internal/modules/cjs/loader:1487:12)\n at require (node:internal/modules/helpers:135:16)","trace":[{"column":39,"file":"/Users/toby/Code/claudette/runner/dist/utils/status-line.js","function":"new StatusLineManager","line":19,"method":null,"native":false},{"column":29,"file":"/Users/toby/Code/claudette/runner/dist/utils/status-line.js","function":null,"line":112,"method":null,"native":false},{"column":14,"file":"node:internal/modules/cjs/loader","function":"Module._compile","line":1730,"method":"_compile","native":false},{"column":10,"file":"node:internal/modules/cjs/loader","function":"Object..js","line":1895,"method":".js","native":false},{"column":32,"file":"node:internal/modules/cjs/loader","function":"Module.load","line":1465,"method":"load","native":false},{"column":12,"file":"node:internal/modules/cjs/loader","function":"Function._load","line":1282,"method":"_load","native":false},{"column":14,"file":"node:diagnostics_channel","function":"TracingChannel.traceSync","line":322,"method":"traceSync","native":false},{"column":24,"file":"node:internal/modules/cjs/loader","function":"wrapModuleLoad","line":235,"method":null,"native":false},{"column":12,"file":"node:internal/modules/cjs/loader","function":"Module.require","line":1487,"method":"require","native":false},{"column":16,"file":"node:internal/modules/helpers","function":"require","line":135,"method":null,"native":false}]}
|
|
68
|
+
{"date":"Wed Nov 19 2025 04:01:13 GMT+0100 (Central European Standard Time)","error":{},"level":"error","message":"unhandledRejection: Cannot access 'debug_1' before initialization\nReferenceError: Cannot access 'debug_1' before initialization\n at new StatusLineManager (/Users/toby/Code/claudette/runner/dist/utils/status-line.js:19:39)\n at Object.<anonymous> (/Users/toby/Code/claudette/runner/dist/utils/status-line.js:112:29)\n at Module._compile (node:internal/modules/cjs/loader:1730:14)\n at Object..js (node:internal/modules/cjs/loader:1895:10)\n at Module.load (node:internal/modules/cjs/loader:1465:32)\n at Function._load (node:internal/modules/cjs/loader:1282:12)\n at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)\n at Module.require (node:internal/modules/cjs/loader:1487:12)\n at require (node:internal/modules/helpers:135:16)","os":{"loadavg":[4.53369140625,4.39697265625,4.5068359375],"uptime":157056},"process":{"argv":["/Users/toby/.nvm/versions/node/v22.15.0/bin/node","/Users/toby/Code/claudette/runner/bin/northflare-runner"],"cwd":"/Users/toby/Code/claudette/runner","execPath":"/Users/toby/.nvm/versions/node/v22.15.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":12531,"external":1652665,"heapTotal":11091968,"heapUsed":6909192,"rss":55214080},"pid":8860,"uid":501,"version":"v22.15.0"},"rejection":true,"stack":"ReferenceError: Cannot access 'debug_1' before initialization\n at new StatusLineManager (/Users/toby/Code/claudette/runner/dist/utils/status-line.js:19:39)\n at Object.<anonymous> (/Users/toby/Code/claudette/runner/dist/utils/status-line.js:112:29)\n at Module._compile (node:internal/modules/cjs/loader:1730:14)\n at Object..js (node:internal/modules/cjs/loader:1895:10)\n at Module.load (node:internal/modules/cjs/loader:1465:32)\n at Function._load (node:internal/modules/cjs/loader:1282:12)\n at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)\n at Module.require (node:internal/modules/cjs/loader:1487:12)\n at require (node:internal/modules/helpers:135:16)","trace":[{"column":39,"file":"/Users/toby/Code/claudette/runner/dist/utils/status-line.js","function":"new StatusLineManager","line":19,"method":null,"native":false},{"column":29,"file":"/Users/toby/Code/claudette/runner/dist/utils/status-line.js","function":null,"line":112,"method":null,"native":false},{"column":14,"file":"node:internal/modules/cjs/loader","function":"Module._compile","line":1730,"method":"_compile","native":false},{"column":10,"file":"node:internal/modules/cjs/loader","function":"Object..js","line":1895,"method":".js","native":false},{"column":32,"file":"node:internal/modules/cjs/loader","function":"Module.load","line":1465,"method":"load","native":false},{"column":12,"file":"node:internal/modules/cjs/loader","function":"Function._load","line":1282,"method":"_load","native":false},{"column":14,"file":"node:diagnostics_channel","function":"TracingChannel.traceSync","line":322,"method":"traceSync","native":false},{"column":24,"file":"node:internal/modules/cjs/loader","function":"wrapModuleLoad","line":235,"method":null,"native":false},{"column":12,"file":"node:internal/modules/cjs/loader","function":"Module.require","line":1487,"method":"require","native":false},{"column":16,"file":"node:internal/modules/helpers","function":"require","line":135,"method":null,"native":false}]}
|
|
@@ -24,6 +24,7 @@ import { ConversationContext, ConversationConfig, Message } from "../types";
|
|
|
24
24
|
import { statusLineManager } from "../utils/status-line";
|
|
25
25
|
import { console } from "../utils/console";
|
|
26
26
|
import { expandEnv } from "../utils/expand-env";
|
|
27
|
+
import { isRunnerDebugEnabled } from "../utils/debug";
|
|
27
28
|
import * as jwt from "jsonwebtoken";
|
|
28
29
|
|
|
29
30
|
export class ClaudeManager {
|
|
@@ -38,7 +39,7 @@ export class ClaudeManager {
|
|
|
38
39
|
this.repositoryManager = repositoryManager;
|
|
39
40
|
|
|
40
41
|
// Log debug mode status
|
|
41
|
-
if (
|
|
42
|
+
if (isRunnerDebugEnabled()) {
|
|
42
43
|
console.log(
|
|
43
44
|
"[ClaudeManager] DEBUG MODE ENABLED - Claude SDK will log verbose output"
|
|
44
45
|
);
|
|
@@ -256,7 +257,7 @@ export class ClaudeManager {
|
|
|
256
257
|
envVars["GITHUB_TOKEN"] = githubToken;
|
|
257
258
|
}
|
|
258
259
|
|
|
259
|
-
if (
|
|
260
|
+
if (isRunnerDebugEnabled()) {
|
|
260
261
|
envVars["DEBUG"] = "1";
|
|
261
262
|
}
|
|
262
263
|
|
|
@@ -334,7 +335,7 @@ export class ClaudeManager {
|
|
|
334
335
|
: {}),
|
|
335
336
|
...(disallowedTools.length ? { disallowedTools } : {}),
|
|
336
337
|
...(mcpServers ? { mcpServers } : {}),
|
|
337
|
-
...(
|
|
338
|
+
...(isRunnerDebugEnabled()
|
|
338
339
|
? {
|
|
339
340
|
stderr: (data: string) => {
|
|
340
341
|
try {
|
|
@@ -678,7 +679,7 @@ export class ClaudeManager {
|
|
|
678
679
|
// Native message injection - SDK handles queueing and delivery
|
|
679
680
|
const normalizedText = this.normalizeToText(content);
|
|
680
681
|
|
|
681
|
-
if (
|
|
682
|
+
if (isRunnerDebugEnabled()) {
|
|
682
683
|
console.log("[ClaudeManager] Normalized follow-up content", {
|
|
683
684
|
originalType: typeof content,
|
|
684
685
|
isArray: Array.isArray(content) || undefined,
|
|
@@ -9,6 +9,7 @@ import { parseModelValue } from "../utils/model";
|
|
|
9
9
|
import * as jwt from "jsonwebtoken";
|
|
10
10
|
import fs from "fs/promises";
|
|
11
11
|
import path from "path";
|
|
12
|
+
import { isRunnerDebugEnabled } from "../utils/debug";
|
|
12
13
|
|
|
13
14
|
let codexSdkPromise: Promise<typeof import("@northflare/codex-sdk")> | null =
|
|
14
15
|
null;
|
|
@@ -349,7 +350,7 @@ export class CodexManager {
|
|
|
349
350
|
envVars["TOOL_TOKEN"] = toolToken;
|
|
350
351
|
}
|
|
351
352
|
|
|
352
|
-
if (
|
|
353
|
+
if (isRunnerDebugEnabled()) {
|
|
353
354
|
envVars["DEBUG"] = "1";
|
|
354
355
|
}
|
|
355
356
|
|
|
@@ -543,6 +544,8 @@ export class CodexManager {
|
|
|
543
544
|
event: ThreadEvent
|
|
544
545
|
): Promise<void> {
|
|
545
546
|
try {
|
|
547
|
+
this.logRawThreadEvent(event);
|
|
548
|
+
|
|
546
549
|
switch (event.type) {
|
|
547
550
|
case "thread.started": {
|
|
548
551
|
await this.handleThreadStarted(context, event.thread_id);
|
|
@@ -687,19 +690,68 @@ export class CodexManager {
|
|
|
687
690
|
};
|
|
688
691
|
}
|
|
689
692
|
case "command_execution": {
|
|
693
|
+
// Namespace command_execution tool use IDs so they don't collide
|
|
694
|
+
// with MCP tool call IDs that may reuse the same raw item.id.
|
|
695
|
+
const internalNamespace = "codex_command";
|
|
696
|
+
const toolUseId = this.buildToolUseId(
|
|
697
|
+
context,
|
|
698
|
+
`${internalNamespace}:${item.id}`
|
|
699
|
+
);
|
|
700
|
+
const timestamp = new Date().toISOString();
|
|
701
|
+
const isTerminal =
|
|
702
|
+
phase === "completed" ||
|
|
703
|
+
item.status === "completed" ||
|
|
704
|
+
item.status === "failed";
|
|
705
|
+
|
|
706
|
+
if (!isTerminal) {
|
|
707
|
+
if (phase !== "started") {
|
|
708
|
+
return null;
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
return {
|
|
712
|
+
type: "assistant",
|
|
713
|
+
subtype: "tool_use",
|
|
714
|
+
content: [
|
|
715
|
+
{
|
|
716
|
+
toolCalls: [
|
|
717
|
+
{
|
|
718
|
+
id: toolUseId,
|
|
719
|
+
name: "codex_command",
|
|
720
|
+
arguments: {
|
|
721
|
+
command: item.command,
|
|
722
|
+
status: item.status,
|
|
723
|
+
},
|
|
724
|
+
status: item.status,
|
|
725
|
+
},
|
|
726
|
+
],
|
|
727
|
+
timestamp,
|
|
728
|
+
},
|
|
729
|
+
],
|
|
730
|
+
};
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
const exitCode =
|
|
734
|
+
typeof item.exit_code === "number" ? item.exit_code : null;
|
|
735
|
+
const isError = item.status === "failed" || (exitCode ?? 0) !== 0;
|
|
736
|
+
|
|
690
737
|
return {
|
|
691
|
-
type: "
|
|
692
|
-
subtype:
|
|
738
|
+
type: "tool_result",
|
|
739
|
+
subtype: "tool_result",
|
|
693
740
|
content: [
|
|
694
741
|
{
|
|
695
|
-
type: "
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
742
|
+
type: "tool_result",
|
|
743
|
+
tool_use_id: toolUseId,
|
|
744
|
+
content: {
|
|
745
|
+
kind: "codex_command_result",
|
|
746
|
+
command: item.command,
|
|
747
|
+
output: item.aggregated_output || "",
|
|
748
|
+
exitCode,
|
|
749
|
+
status: item.status,
|
|
750
|
+
},
|
|
751
|
+
timestamp,
|
|
701
752
|
},
|
|
702
753
|
],
|
|
754
|
+
isError,
|
|
703
755
|
};
|
|
704
756
|
}
|
|
705
757
|
case "file_change": {
|
|
@@ -718,7 +770,10 @@ export class CodexManager {
|
|
|
718
770
|
}
|
|
719
771
|
case "mcp_tool_call": {
|
|
720
772
|
const toolName = this.buildMcpToolName(item.server, item.tool);
|
|
721
|
-
|
|
773
|
+
// Namespace MCP tool call IDs with the MCP tool name so they don't
|
|
774
|
+
// collide with internal tool IDs or MCP calls from other servers.
|
|
775
|
+
const namespacedRawId = `mcp:${toolName}:${item.id}`;
|
|
776
|
+
const toolUseId = this.buildToolUseId(context, namespacedRawId);
|
|
722
777
|
|
|
723
778
|
if (item.status === "in_progress" || phase !== "completed") {
|
|
724
779
|
return {
|
|
@@ -860,7 +915,7 @@ export class CodexManager {
|
|
|
860
915
|
timestamp: new Date().toISOString(),
|
|
861
916
|
};
|
|
862
917
|
|
|
863
|
-
if (
|
|
918
|
+
if (isRunnerDebugEnabled()) {
|
|
864
919
|
console.log("[CodexManager] Sending message.agent", payload);
|
|
865
920
|
}
|
|
866
921
|
|
|
@@ -948,6 +1003,61 @@ export class CodexManager {
|
|
|
948
1003
|
return `mcp__${safeServer}__${safeTool}`;
|
|
949
1004
|
}
|
|
950
1005
|
|
|
1006
|
+
private logRawThreadEvent(event: ThreadEvent): void {
|
|
1007
|
+
if (!isRunnerDebugEnabled()) {
|
|
1008
|
+
return;
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
try {
|
|
1012
|
+
console.log(
|
|
1013
|
+
"[CodexManager] RAW Codex event FULL:",
|
|
1014
|
+
this.safeStringify(event)
|
|
1015
|
+
);
|
|
1016
|
+
|
|
1017
|
+
const summary: Record<string, unknown> = {
|
|
1018
|
+
type: event?.type,
|
|
1019
|
+
keys: Object.keys((event as Record<string, unknown>) || {}),
|
|
1020
|
+
hasItem: Boolean((event as any)?.item),
|
|
1021
|
+
itemType: (event as any)?.item?.type,
|
|
1022
|
+
hasUsage: Boolean((event as any)?.usage),
|
|
1023
|
+
threadId: (event as any)?.thread_id,
|
|
1024
|
+
turnId: (event as any)?.turn_id,
|
|
1025
|
+
};
|
|
1026
|
+
|
|
1027
|
+
console.log("[CodexManager] RAW Codex event summary:", summary);
|
|
1028
|
+
|
|
1029
|
+
if ((event as any)?.item) {
|
|
1030
|
+
console.log(
|
|
1031
|
+
"[CodexManager] RAW Codex event item:",
|
|
1032
|
+
this.safeStringify((event as any).item)
|
|
1033
|
+
);
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
if ((event as any)?.usage) {
|
|
1037
|
+
console.log("[CodexManager] RAW Codex usage:", (event as any).usage);
|
|
1038
|
+
}
|
|
1039
|
+
} catch (error) {
|
|
1040
|
+
console.warn("[CodexManager] Failed to log raw Codex event:", error);
|
|
1041
|
+
}
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
private safeStringify(value: any): string {
|
|
1045
|
+
const seen = new WeakSet();
|
|
1046
|
+
return JSON.stringify(
|
|
1047
|
+
value,
|
|
1048
|
+
(key, nested) => {
|
|
1049
|
+
if (typeof nested === "function") return undefined;
|
|
1050
|
+
if (typeof nested === "bigint") return nested.toString();
|
|
1051
|
+
if (typeof nested === "object" && nested !== null) {
|
|
1052
|
+
if (seen.has(nested)) return "[Circular]";
|
|
1053
|
+
seen.add(nested);
|
|
1054
|
+
}
|
|
1055
|
+
return nested;
|
|
1056
|
+
},
|
|
1057
|
+
2
|
|
1058
|
+
);
|
|
1059
|
+
}
|
|
1060
|
+
|
|
951
1061
|
private buildToolUseId(context: ConversationContext, rawId: string): string {
|
|
952
1062
|
const scope =
|
|
953
1063
|
context.agentSessionId ||
|
|
@@ -14,6 +14,7 @@ import { RunnerAPIClient } from "../services/RunnerAPIClient";
|
|
|
14
14
|
import { statusLineManager } from "../utils/status-line";
|
|
15
15
|
import { console } from "../utils/console";
|
|
16
16
|
import { createLogger } from "../utils/logger";
|
|
17
|
+
import { isRunnerDebugEnabled } from "../utils/debug";
|
|
17
18
|
|
|
18
19
|
const logger = createLogger("MessageHandler");
|
|
19
20
|
|
|
@@ -156,7 +157,7 @@ export class MessageHandler {
|
|
|
156
157
|
if (event.type === "runner.message") {
|
|
157
158
|
const message = event.data as RunnerMessage;
|
|
158
159
|
|
|
159
|
-
if (
|
|
160
|
+
if (isRunnerDebugEnabled()) {
|
|
160
161
|
logger.debug("Received SSE event", {
|
|
161
162
|
eventId: event.id,
|
|
162
163
|
type: event.type,
|
|
@@ -183,7 +184,7 @@ export class MessageHandler {
|
|
|
183
184
|
}
|
|
184
185
|
|
|
185
186
|
private async processMessage(message: RunnerMessage): Promise<void> {
|
|
186
|
-
if (
|
|
187
|
+
if (isRunnerDebugEnabled()) {
|
|
187
188
|
logger.debug("processMessage called", {
|
|
188
189
|
messageId: message.id,
|
|
189
190
|
method: message.payload?.method,
|
|
@@ -216,7 +217,7 @@ export class MessageHandler {
|
|
|
216
217
|
return;
|
|
217
218
|
}
|
|
218
219
|
|
|
219
|
-
if (
|
|
220
|
+
if (isRunnerDebugEnabled()) {
|
|
220
221
|
logger.debug("Processing message", {
|
|
221
222
|
messageId: message.id,
|
|
222
223
|
method: method,
|
|
@@ -232,7 +233,7 @@ export class MessageHandler {
|
|
|
232
233
|
// Acknowledge ALL messages to update lastProcessedAt
|
|
233
234
|
await this.acknowledgeMessage(message);
|
|
234
235
|
|
|
235
|
-
if (
|
|
236
|
+
if (isRunnerDebugEnabled()) {
|
|
236
237
|
logger.debug("Message acknowledged", {
|
|
237
238
|
messageId: message.id,
|
|
238
239
|
method: method,
|
|
@@ -241,7 +242,7 @@ export class MessageHandler {
|
|
|
241
242
|
});
|
|
242
243
|
}
|
|
243
244
|
} catch (error) {
|
|
244
|
-
if (
|
|
245
|
+
if (isRunnerDebugEnabled()) {
|
|
245
246
|
logger.debug("Message processing error", {
|
|
246
247
|
messageId: message.id,
|
|
247
248
|
method: method,
|
|
@@ -298,7 +299,7 @@ export class MessageHandler {
|
|
|
298
299
|
};
|
|
299
300
|
})();
|
|
300
301
|
|
|
301
|
-
if (
|
|
302
|
+
if (isRunnerDebugEnabled()) {
|
|
302
303
|
logger.debug("Message processing decision", {
|
|
303
304
|
messageId: message.id,
|
|
304
305
|
method: message.payload?.method,
|
|
@@ -366,7 +367,7 @@ export class MessageHandler {
|
|
|
366
367
|
console.error(
|
|
367
368
|
`[MessageHandler] Cannot send error report - no conversationObjectId available. Error: ${errorMessage}`
|
|
368
369
|
);
|
|
369
|
-
if (
|
|
370
|
+
if (isRunnerDebugEnabled()) {
|
|
370
371
|
logger.debug("Error without conversationObjectId", {
|
|
371
372
|
messageId: message.id,
|
|
372
373
|
method: message.payload?.method,
|
|
@@ -403,7 +404,7 @@ export class MessageHandler {
|
|
|
403
404
|
console.error(
|
|
404
405
|
`[MessageHandler] Cannot send error report - no conversationObjectId available. Processing error: ${errorMessage}`
|
|
405
406
|
);
|
|
406
|
-
if (
|
|
407
|
+
if (isRunnerDebugEnabled()) {
|
|
407
408
|
logger.debug("Processing error without conversationObjectId", {
|
|
408
409
|
messageId: message.id,
|
|
409
410
|
method: message.payload?.method,
|
|
@@ -770,7 +771,7 @@ export class MessageHandler {
|
|
|
770
771
|
`MessageHandler: Handling UID change notification - new UID: ${runnerUid}, lastProcessedAt: ${lastProcessedAt}`
|
|
771
772
|
);
|
|
772
773
|
|
|
773
|
-
if (
|
|
774
|
+
if (isRunnerDebugEnabled()) {
|
|
774
775
|
logger.debug("UID change notification received", {
|
|
775
776
|
newUid: runnerUid,
|
|
776
777
|
currentUid: this.runner.getRunnerUid(),
|
|
@@ -792,7 +793,7 @@ export class MessageHandler {
|
|
|
792
793
|
lastProcessedAt ? new Date(lastProcessedAt) : null
|
|
793
794
|
);
|
|
794
795
|
|
|
795
|
-
if (
|
|
796
|
+
if (isRunnerDebugEnabled()) {
|
|
796
797
|
logger.debug("Runner activated as primary", {
|
|
797
798
|
runnerUid: runnerUid,
|
|
798
799
|
lastProcessedAt: lastProcessedAt,
|
|
@@ -808,7 +809,7 @@ export class MessageHandler {
|
|
|
808
809
|
});
|
|
809
810
|
} catch (error) {
|
|
810
811
|
console.error("Failed to send activation notification:", error);
|
|
811
|
-
if (
|
|
812
|
+
if (isRunnerDebugEnabled()) {
|
|
812
813
|
logger.debug("Activation notification failed", {
|
|
813
814
|
error: error instanceof Error ? error.message : String(error),
|
|
814
815
|
});
|
|
@@ -830,7 +831,7 @@ export class MessageHandler {
|
|
|
830
831
|
console.log(
|
|
831
832
|
`MessageHandler: Ignoring old UID change (${lastProcessedAt} < ${currentLastProcessedAt.toISOString()})`
|
|
832
833
|
);
|
|
833
|
-
if (
|
|
834
|
+
if (isRunnerDebugEnabled()) {
|
|
834
835
|
logger.debug("Ignoring old UID change", {
|
|
835
836
|
newUid: runnerUid,
|
|
836
837
|
newLastProcessedAt: lastProcessedAt,
|
|
@@ -855,7 +856,7 @@ export class MessageHandler {
|
|
|
855
856
|
}
|
|
856
857
|
}
|
|
857
858
|
|
|
858
|
-
if (
|
|
859
|
+
if (isRunnerDebugEnabled()) {
|
|
859
860
|
logger.debug("Runner deactivated - being replaced", {
|
|
860
861
|
newRunnerUid: runnerUid,
|
|
861
862
|
ourUid: this.runner.getRunnerUid(),
|
|
@@ -882,7 +883,7 @@ export class MessageHandler {
|
|
|
882
883
|
});
|
|
883
884
|
} catch (error) {
|
|
884
885
|
console.error("Failed to send deactivation notification:", error);
|
|
885
|
-
if (
|
|
886
|
+
if (isRunnerDebugEnabled()) {
|
|
886
887
|
logger.debug("Deactivation notification failed", {
|
|
887
888
|
error: error instanceof Error ? error.message : String(error),
|
|
888
889
|
});
|
package/src/index.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { RunnerApp } from "./runner-sse";
|
|
6
6
|
import { ConfigManager } from "./utils/config";
|
|
7
7
|
import { logger, configureFileLogging } from "./utils/logger";
|
|
8
|
+
import { isRunnerDebugEnabled } from "./utils/debug";
|
|
8
9
|
import path from "path";
|
|
9
10
|
import fs from "fs/promises";
|
|
10
11
|
|
|
@@ -13,6 +14,7 @@ let runner: RunnerApp | null = null;
|
|
|
13
14
|
async function main() {
|
|
14
15
|
try {
|
|
15
16
|
logger.info("Starting Northflare Runner...");
|
|
17
|
+
const debugEnabled = isRunnerDebugEnabled();
|
|
16
18
|
|
|
17
19
|
// Load configuration (args already parsed by CLI)
|
|
18
20
|
let configPath = process.argv[2]; // This is set by the CLI if --config was provided
|
|
@@ -53,7 +55,7 @@ async function main() {
|
|
|
53
55
|
});
|
|
54
56
|
|
|
55
57
|
// Additional debug logging
|
|
56
|
-
if (
|
|
58
|
+
if (debugEnabled) {
|
|
57
59
|
logger.debug("Debug mode enabled - verbose logging active", {
|
|
58
60
|
dataDir: config.dataDir,
|
|
59
61
|
heartbeatInterval: config.heartbeatInterval,
|
|
@@ -75,7 +77,7 @@ async function main() {
|
|
|
75
77
|
});
|
|
76
78
|
|
|
77
79
|
// Log additional details in debug mode
|
|
78
|
-
if (
|
|
80
|
+
if (debugEnabled && runner) {
|
|
79
81
|
logger.debug("Runner started with full details", {
|
|
80
82
|
runnerId: runner.getRunnerId(),
|
|
81
83
|
runnerUid: runner.getRunnerUid(),
|