code-mode-core 2.0.0 → 2.1.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,cAAc,EAGf,MAAM,SAAS,CAAC;AAqBjB,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO;IAIP,4CAA4C;WAC/B,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAK9C,2DAA2D;IACrD,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC;IAuB3E,yDAAyD;IACnD,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAClC,OAAO,CAAC,eAAe,CAAC;IAoC3B,uDAAuD;IACjD,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAM3C,kFAAkF;IAC5E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAOd,kBAAkB;YAWlB,iBAAiB;IAgC/B,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,YAAY;CAOrB"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,cAAc,EAGf,MAAM,SAAS,CAAC;AAqBjB,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO;IAIP,4CAA4C;WAC/B,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAK9C,2DAA2D;IACrD,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC;IAuB3E,yDAAyD;IACnD,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAClC,OAAO,CAAC,eAAe,CAAC;IAsD3B,uDAAuD;IACjD,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAM3C,kFAAkF;IAC5E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAOd,kBAAkB;YAWlB,iBAAiB;IAgC/B,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,YAAY;CAOrB"}
package/dist/engine.js CHANGED
@@ -57,15 +57,31 @@ class CodeModeEngine {
57
57
  /** Execute code in the sandbox with registered tools. */
58
58
  async execute(code, options) {
59
59
  const opts = { ...DEFAULT_OPTIONS, ...options };
60
- const tools = await this.getToolsAsToolLike();
60
+ const registeredTools = await this.getToolsAsToolLike();
61
+ // Merge external tools (e.g., sibling tools from n8n)
62
+ const allTools = opts.externalTools
63
+ ? [...registeredTools, ...opts.externalTools]
64
+ : registeredTools;
61
65
  // Get or compute cached setup
62
- const setup = await this.getOrComputeSetup(tools);
63
- // Build callToolFn — optionally with tracing
66
+ const setup = await this.getOrComputeSetup(allTools);
67
+ // Build callToolFn — compose external + internal, optionally with tracing
68
+ const internalCallTool = this.createCallTool();
69
+ const baseCallTool = opts.externalCallToolFn
70
+ ? (() => {
71
+ const externalNames = new Set(opts.externalTools?.map(t => t.name));
72
+ return async (toolName, args) => {
73
+ if (externalNames.has(toolName)) {
74
+ return opts.externalCallToolFn(toolName, args);
75
+ }
76
+ return internalCallTool(toolName, args);
77
+ };
78
+ })()
79
+ : internalCallTool;
64
80
  const trace = [];
65
81
  const callToolFn = opts.enableTrace
66
- ? this.createTracedCallTool(trace)
67
- : this.createCallTool();
68
- const sandboxResult = await (0, sandbox_1.executeInSandbox)(code, tools, callToolFn, setup.interfacesString, setup.interfaceMap, { timeout: opts.timeout, memoryLimit: opts.memoryLimit });
82
+ ? this.createTracedCallTool(trace, baseCallTool)
83
+ : baseCallTool;
84
+ const sandboxResult = await (0, sandbox_1.executeInSandbox)(code, allTools, callToolFn, setup.interfacesString, setup.interfaceMap, { timeout: opts.timeout, memoryLimit: opts.memoryLimit });
69
85
  const executionResult = {
70
86
  result: sandboxResult.result,
71
87
  logs: sandboxResult.logs,
@@ -132,11 +148,12 @@ class CodeModeEngine {
132
148
  return this.client.callTool(toolName, args);
133
149
  };
134
150
  }
135
- createTracedCallTool(trace) {
151
+ createTracedCallTool(trace, baseCallTool) {
152
+ const callFn = baseCallTool ?? this.createCallTool();
136
153
  return async (toolName, args) => {
137
154
  const start = performance.now();
138
155
  try {
139
- const result = await this.client.callTool(toolName, args);
156
+ const result = await callFn(toolName, args);
140
157
  trace.push({ toolName, args, result, durationMs: performance.now() - start });
141
158
  return result;
142
159
  }
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,mCAAuC;AASvC,iDAGwB;AAExB,uCAA6C;AAC7C,mCAKiB;AAGjB,MAAM,eAAe,GAAqB;IACxC,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,GAAG;IAChB,WAAW,EAAE,KAAK;CACnB,CAAC;AAEF,MAAa,cAAc;IAIzB,YAAoB,MAAkB;QAF9B,cAAS,GAAW,EAAE,CAAC;QAG7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,4CAA4C;IAC5C,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,MAAM,MAAM,GAAG,MAAM,gBAAU,CAAC,MAAM,EAAE,CAAC;QACzC,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,kBAAkB,CAAC,MAAwB;QAC/C,8EAA8E;QAC9E,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAa,CAAC,CAAC;YAC/D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;gBACpF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YACtC,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,EAAE;gBACb,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC;aACjD,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,EAAE;gBACb,MAAM,EAAE,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAC3D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,OAAO,CACX,IAAY,EACZ,OAAmC;QAEnC,MAAM,IAAI,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;QAChD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAExD,sDAAsD;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa;YACjC,CAAC,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;YAC7C,CAAC,CAAC,eAAe,CAAC;QAEpB,8BAA8B;QAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAErD,0EAA0E;QAC1E,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB;YAC1C,CAAC,CAAC,CAAC,GAAG,EAAE;gBACJ,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACpE,OAAO,KAAK,EAAE,QAAgB,EAAE,IAA6B,EAAoB,EAAE;oBACjF,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAChC,OAAO,IAAI,CAAC,kBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAClD,CAAC;oBACD,OAAO,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC1C,CAAC,CAAC;YACJ,CAAC,CAAC,EAAE;YACN,CAAC,CAAC,gBAAgB,CAAC;QAErB,MAAM,KAAK,GAAqB,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW;YACjC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC;YAChD,CAAC,CAAC,YAAY,CAAC;QAEjB,MAAM,aAAa,GAAG,MAAM,IAAA,0BAAgB,EAC1C,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,YAAY,EAClB,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CACzD,CAAC;QAEF,MAAM,eAAe,GAAoB;YACvC,MAAM,EAAE,aAAa,CAAC,MAAM;YAC5B,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC;QAEF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC;YAC9B,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,kBAAkB;QACtB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,eAAe,CAAC;IAC/B,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAA,kCAAmB,GAAE,CAAC;QACtB,IAAA,uBAAe,GAAE,CAAC;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YAC5B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;SACnB,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,KAAiB;QAC/C,MAAM,IAAI,GAAG,IAAA,wBAAgB,EAAC,KAAK,CAAC,CAAC;QAErC,IAAI,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,IAAI,CAAC,CAAC;YACpC,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;QAED,iFAAiF;QACjF,IAAA,kCAAmB,GAAE,CAAC;QACtB,MAAM,YAAY,GAA2B,EAAE,CAAC;QAChD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAA,wCAAyB,EAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,gBAAgB,GAAG,2DAA2D,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAE/H,MAAM,eAAe,GAAG;YACtB,uEAAuE;YACvE,iHAAiH;YACjH,0CAA0C;YAC1C,EAAE;YACF,4BAA4B;YAC5B,gBAAgB,IAAI,4DAA4D;SACjF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,KAAK,GAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;QAC/E,IAAA,sBAAc,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,cAAc;QACpB,OAAO,KAAK,EAAE,QAAgB,EAAE,IAA6B,EAAE,EAAE;YAC/D,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAC1B,KAAuB,EACvB,YAAoF;QAEpF,MAAM,MAAM,GAAG,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACrD,OAAO,KAAK,EAAE,QAAgB,EAAE,IAA6B,EAAE,EAAE;YAC/D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;gBAC9E,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,CAAC,IAAI,CAAC;oBACT,QAAQ;oBACR,IAAI;oBACJ,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;oBACvD,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK;iBACtC,CAAC,CAAC;gBACH,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,KAAuB;QAC1C,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;YAChE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM;SAC1D,CAAC;IACJ,CAAC;CACF;AA9LD,wCA8LC"}
package/dist/index.d.ts CHANGED
@@ -7,4 +7,6 @@
7
7
  */
8
8
  export { CodeModeEngine } from './engine';
9
9
  export type { ExecutionOptions, ExecutionResult, ToolDefinition, ToolCallRecord, ExecutionStats, ToolSourceConfig, RegisterResult, JsonSchemaLike, } from './types';
10
+ export type { ToolLike } from './schema-to-ts';
11
+ export type { CallToolFn } from './bridges';
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,cAAc,GACf,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
package/dist/types.d.ts CHANGED
@@ -5,6 +5,8 @@
5
5
  * License, v. 2.0. If a copy of the MPL was not distributed with this
6
6
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7
7
  */
8
+ import type { ToolLike } from './schema-to-ts';
9
+ import type { CallToolFn } from './bridges';
8
10
  /** Minimal JSON Schema subset used for tool input/output definitions. */
9
11
  export interface JsonSchemaLike {
10
12
  type?: string | string[];
@@ -30,6 +32,10 @@ export interface ExecutionOptions {
30
32
  memoryLimit: number;
31
33
  /** Enable execution tracing (tool call timing). Default: false */
32
34
  enableTrace: boolean;
35
+ /** External tools to merge with registered tools (for platform-specific sources). */
36
+ externalTools?: ToolLike[];
37
+ /** External call handler for external tools. Checked before internal client.callTool. */
38
+ externalCallToolFn?: CallToolFn;
33
39
  }
34
40
  /** A single tool call recorded during traced execution. */
35
41
  export interface ToolCallRecord {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;IAC1C,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,cAAc,CAAC;IAC5B,YAAY,EAAE,cAAc,CAAC;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,kCAAkC;AAClC,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,2DAA2D;AAC3D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;IAC1C,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,cAAc,CAAC;IAC5B,YAAY,EAAE,cAAc,CAAC;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,kCAAkC;AAClC,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,WAAW,EAAE,OAAO,CAAC;IACrB,qFAAqF;IACrF,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC3B,yFAAyF;IACzF,kBAAkB,CAAC,EAAE,UAAU,CAAC;CACjC;AAED,2DAA2D;AAC3D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-mode-core",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "Platform-agnostic code execution engine. Chains multiple tool calls into a single TypeScript code execution in a secure sandbox.",
5
5
  "license": "MPL-2.0",
6
6
  "author": "Marius J",
package/src/engine.ts CHANGED
@@ -82,20 +82,38 @@ export class CodeModeEngine {
82
82
  options?: Partial<ExecutionOptions>,
83
83
  ): Promise<ExecutionResult> {
84
84
  const opts = { ...DEFAULT_OPTIONS, ...options };
85
- const tools = await this.getToolsAsToolLike();
85
+ const registeredTools = await this.getToolsAsToolLike();
86
+
87
+ // Merge external tools (e.g., sibling tools from n8n)
88
+ const allTools = opts.externalTools
89
+ ? [...registeredTools, ...opts.externalTools]
90
+ : registeredTools;
86
91
 
87
92
  // Get or compute cached setup
88
- const setup = await this.getOrComputeSetup(tools);
93
+ const setup = await this.getOrComputeSetup(allTools);
94
+
95
+ // Build callToolFn — compose external + internal, optionally with tracing
96
+ const internalCallTool = this.createCallTool();
97
+ const baseCallTool = opts.externalCallToolFn
98
+ ? (() => {
99
+ const externalNames = new Set(opts.externalTools?.map(t => t.name));
100
+ return async (toolName: string, args: Record<string, unknown>): Promise<unknown> => {
101
+ if (externalNames.has(toolName)) {
102
+ return opts.externalCallToolFn!(toolName, args);
103
+ }
104
+ return internalCallTool(toolName, args);
105
+ };
106
+ })()
107
+ : internalCallTool;
89
108
 
90
- // Build callToolFn — optionally with tracing
91
109
  const trace: ToolCallRecord[] = [];
92
110
  const callToolFn = opts.enableTrace
93
- ? this.createTracedCallTool(trace)
94
- : this.createCallTool();
111
+ ? this.createTracedCallTool(trace, baseCallTool)
112
+ : baseCallTool;
95
113
 
96
114
  const sandboxResult = await executeInSandbox(
97
115
  code,
98
- tools,
116
+ allTools,
99
117
  callToolFn,
100
118
  setup.interfacesString,
101
119
  setup.interfaceMap,
@@ -182,11 +200,13 @@ export class CodeModeEngine {
182
200
 
183
201
  private createTracedCallTool(
184
202
  trace: ToolCallRecord[],
203
+ baseCallTool?: (toolName: string, args: Record<string, unknown>) => Promise<unknown>,
185
204
  ): (toolName: string, args: Record<string, unknown>) => Promise<unknown> {
205
+ const callFn = baseCallTool ?? this.createCallTool();
186
206
  return async (toolName: string, args: Record<string, unknown>) => {
187
207
  const start = performance.now();
188
208
  try {
189
- const result = await this.client.callTool(toolName, args);
209
+ const result = await callFn(toolName, args);
190
210
  trace.push({ toolName, args, result, durationMs: performance.now() - start });
191
211
  return result;
192
212
  } catch (err) {
package/src/index.ts CHANGED
@@ -18,3 +18,6 @@ export type {
18
18
  RegisterResult,
19
19
  JsonSchemaLike,
20
20
  } from './types';
21
+
22
+ export type { ToolLike } from './schema-to-ts';
23
+ export type { CallToolFn } from './bridges';
package/src/types.ts CHANGED
@@ -6,6 +6,9 @@
6
6
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7
7
  */
8
8
 
9
+ import type { ToolLike } from './schema-to-ts';
10
+ import type { CallToolFn } from './bridges';
11
+
9
12
  /** Minimal JSON Schema subset used for tool input/output definitions. */
10
13
  export interface JsonSchemaLike {
11
14
  type?: string | string[];
@@ -33,6 +36,10 @@ export interface ExecutionOptions {
33
36
  memoryLimit: number;
34
37
  /** Enable execution tracing (tool call timing). Default: false */
35
38
  enableTrace: boolean;
39
+ /** External tools to merge with registered tools (for platform-specific sources). */
40
+ externalTools?: ToolLike[];
41
+ /** External call handler for external tools. Checked before internal client.callTool. */
42
+ externalCallToolFn?: CallToolFn;
36
43
  }
37
44
 
38
45
  /** A single tool call recorded during traced execution. */