@loopstack/ai-module 0.20.6 → 0.20.8

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/README.md CHANGED
@@ -141,11 +141,13 @@ Executes tool calls requested by the LLM and returns the results in the expected
141
141
 
142
142
  #### Arguments
143
143
 
144
- | Argument | Type | Required | Description |
145
- | --------------- | ------ | -------- | --------------------------------------------------------------- |
146
- | `message` | object | Yes | The LLM response message containing tool call parts |
147
- | `message.id` | string | Yes | Message identifier |
148
- | `message.parts` | array | Yes | Array of tool call parts with `type`, `input`, and `toolCallId` |
144
+ | Argument | Type | Required | Description |
145
+ | --------------------- | ------- | -------- | ------------------------------------------------------------------------- |
146
+ | `message` | object | Yes | The LLM response message containing tool call parts |
147
+ | `message.id` | string | Yes | Message identifier |
148
+ | `message.parts` | array | Yes | Array of tool call parts with `type`, `input`, and `toolCallId` |
149
+ | `document` | string | No | Document name to auto-create with tool results (e.g. `aiMessageDocument`) |
150
+ | `skipResponseMessage` | boolean | No | When `true`, skip automatic document creation even if `document` is set |
149
151
 
150
152
  #### Example
151
153
 
@@ -153,6 +155,7 @@ Executes tool calls requested by the LLM and returns the results in the expected
153
155
  - tool: delegateToolCall
154
156
  args:
155
157
  message: ${ llmResponse }
158
+ document: aiMessageDocument
156
159
  assign:
157
160
  toolCallResult: ${ result.data }
158
161
  ```
package/dist/ai.module.js CHANGED
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.AiModule = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
11
  const core_1 = require("@nestjs/core");
12
- const core_ui_module_1 = require("@loopstack/core-ui-module");
12
+ const core_2 = require("@loopstack/core");
13
13
  const documents_1 = require("./documents");
14
14
  const anthropic_provider_1 = require("./providers/anthropic.provider");
15
15
  const openai_provider_1 = require("./providers/openai.provider");
@@ -23,7 +23,7 @@ let AiModule = class AiModule {
23
23
  exports.AiModule = AiModule;
24
24
  exports.AiModule = AiModule = __decorate([
25
25
  (0, common_1.Module)({
26
- imports: [core_ui_module_1.CoreUiModule, core_1.DiscoveryModule],
26
+ imports: [core_2.LoopCoreModule, core_1.DiscoveryModule],
27
27
  providers: [
28
28
  services_1.AiMessagesHelperService,
29
29
  services_2.AiProviderModelHelperService,
@@ -1 +1 @@
1
- {"version":3,"file":"ai.module.js","sourceRoot":"","sources":["../src/ai.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uCAA+C;AAC/C,8DAAyD;AACzD,2CAAgD;AAChD,uEAA0E;AAC1E,iEAAoE;AACpE,yCAAqD;AACrD,yCAA0D;AAC1D,yCAAkD;AAClD,0FAAoF;AACpF,mCAAiG;AA0B1F,IAAM,QAAQ,GAAd,MAAM,QAAQ;CAAG,CAAA;AAAX,4BAAQ;mBAAR,QAAQ;IAxBpB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,6BAAY,EAAE,sBAAe,CAAC;QACxC,SAAS,EAAE;YAET,kCAAuB;YACvB,uCAA4B;YAC5B,+BAAoB;YACpB,wDAAyB;YAGzB,uCAAqB;YACrB,6CAAwB;YAGxB,0BAAkB;YAClB,wBAAgB;YAChB,sBAAc;YACd,wBAAgB;YAGhB,6BAAiB;SAClB;QACD,OAAO,EAAE,CAAC,0BAAkB,EAAE,wBAAgB,EAAE,sBAAc,EAAE,wBAAgB,EAAE,6BAAiB,CAAC;KACrG,CAAC;GACW,QAAQ,CAAG"}
1
+ {"version":3,"file":"ai.module.js","sourceRoot":"","sources":["../src/ai.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uCAA+C;AAC/C,0CAAiD;AACjD,2CAAgD;AAChD,uEAA0E;AAC1E,iEAAoE;AACpE,yCAAqD;AACrD,yCAA0D;AAC1D,yCAAkD;AAClD,0FAAoF;AACpF,mCAAiG;AA0B1F,IAAM,QAAQ,GAAd,MAAM,QAAQ;CAAG,CAAA;AAAX,4BAAQ;mBAAR,QAAQ;IAxBpB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,qBAAc,EAAE,sBAAe,CAAC;QAC1C,SAAS,EAAE;YAET,kCAAuB;YACvB,uCAA4B;YAC5B,+BAAoB;YACpB,wDAAyB;YAGzB,uCAAqB;YACrB,6CAAwB;YAGxB,0BAAkB;YAClB,wBAAgB;YAChB,sBAAc;YACd,wBAAgB;YAGhB,6BAAiB;SAClB;QACD,OAAO,EAAE,CAAC,0BAAkB,EAAE,wBAAgB,EAAE,sBAAc,EAAE,wBAAgB,EAAE,6BAAiB,CAAC;KACrG,CAAC;GACW,QAAQ,CAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-messages-helper.service.d.ts","sourceRoot":"","sources":["../../src/services/ai-messages-helper.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBACa,uBAAuB;IAClC,OAAO,CAAC,cAAc;IAUtB,WAAW,CACT,SAAS,EAAE,cAAc,EAAE,EAC3B,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,GACtG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE;CAU1D"}
1
+ {"version":3,"file":"ai-messages-helper.service.d.ts","sourceRoot":"","sources":["../../src/services/ai-messages-helper.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBACa,uBAAuB;IAClC,OAAO,CAAC,cAAc;IAUtB,WAAW,CACT,SAAS,EAAE,cAAc,EAAE,EAC3B,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,GACtG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE;CAQ1D"}
@@ -20,7 +20,6 @@ let AiMessagesHelperService = class AiMessagesHelperService {
20
20
  if (!messages?.length) {
21
21
  messages = this.searchMessages(documents, args.messagesSearchTag ?? 'message');
22
22
  }
23
- console.log(JSON.stringify(messages, null, 2));
24
23
  return messages;
25
24
  }
26
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ai-messages-helper.service.js","sourceRoot":"","sources":["../../src/services/ai-messages-helper.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAKrC,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAC1B,cAAc,CACpB,SAA2B,EAC3B,GAAW;QAEX,OAAO,SAAS;aACb,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC7E,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;aACjC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAA+D,CAAC,CAAC;IACjG,CAAC;IAED,WAAW,CACT,SAA2B,EAC3B,IAAuG;QAEvG,IAAI,QAAQ,GAAuE,IAAI,CAAC,QAAQ,CAAC;QACjG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YACtB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,IAAI,SAAS,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE/C,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAA;AAxBY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;GACA,uBAAuB,CAwBnC"}
1
+ {"version":3,"file":"ai-messages-helper.service.js","sourceRoot":"","sources":["../../src/services/ai-messages-helper.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAKrC,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAC1B,cAAc,CACpB,SAA2B,EAC3B,GAAW;QAEX,OAAO,SAAS;aACb,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC7E,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;aACjC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAA+D,CAAC,CAAC;IACjG,CAAC;IAED,WAAW,CACT,SAA2B,EAC3B,IAAuG;QAEvG,IAAI,QAAQ,GAAuE,IAAI,CAAC,QAAQ,CAAC;QACjG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YACtB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,IAAI,SAAS,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAA;AAtBY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;GACA,uBAAuB,CAsBnC"}
@@ -11,7 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.AiGenerateDocument = void 0;
13
13
  const common_1 = require("@loopstack/common");
14
- const core_ui_module_1 = require("@loopstack/core-ui-module");
14
+ const core_1 = require("@loopstack/core");
15
15
  const ai_generate_object_tool_1 = require("./ai-generate-object.tool");
16
16
  let AiGenerateDocument = class AiGenerateDocument {
17
17
  aiGenerateObject;
@@ -46,7 +46,7 @@ __decorate([
46
46
  ], AiGenerateDocument.prototype, "aiGenerateObject", void 0);
47
47
  __decorate([
48
48
  (0, common_1.InjectTool)(),
49
- __metadata("design:type", core_ui_module_1.CreateDocument)
49
+ __metadata("design:type", core_1.CreateDocument)
50
50
  ], AiGenerateDocument.prototype, "createDocument", void 0);
51
51
  __decorate([
52
52
  (0, common_1.Input)({
@@ -1 +1 @@
1
- {"version":3,"file":"ai-generate-document.tool.js","sourceRoot":"","sources":["../../src/tools/ai-generate-document.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAU2B;AAC3B,8DAA2D;AAC3D,uEAA+G;AAOxG,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IACP,gBAAgB,CAAoB;IACpC,cAAc,CAAkB;IAKtD,IAAI,CAA2B;IAEvB,eAAe,CAAC,IAAY;QAClC,MAAM,IAAI,GAAG,IAAA,qBAAY,EAAgB,IAAI,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,oBAAoB,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CACX,IAA8B,EAC9B,GAAe,EACf,MAAyB,EACzB,QAAmC;QAEnC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3G,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,OAAO,CACzE;YACE,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;YACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAChC,MAAM,EAAE;gBACN,OAAO,EAAE,cAAc,CAAC,IAAe;aACxC;SACF,EACD,GAAG,EACH,MAAM,EACN,QAAQ,CACT,CAAC;QAEF,OAAO;YACL,GAAG,cAAc;YACjB,QAAQ,EAAE,cAAc,CAAC,QAAQ;SAClC,CAAC;IACJ,CAAC;CACF,CAAA;AA1CY,gDAAkB;AACP;IAArB,IAAA,mBAAU,GAAE;8BAA4B,0CAAgB;4DAAC;AACpC;IAArB,IAAA,mBAAU,GAAE;8BAA0B,+BAAc;0DAAC;AAKtD;IAHC,IAAA,cAAK,EAAC;QACL,MAAM,EAAE,gDAAsB;KAC/B,CAAC;;gDAC6B;6BAPpB,kBAAkB;IAL9B,IAAA,aAAI,EAAC;QACJ,MAAM,EAAE;YACN,WAAW,EAAE,sEAAsE;SACpF;KACF,CAAC;GACW,kBAAkB,CA0C9B"}
1
+ {"version":3,"file":"ai-generate-document.tool.js","sourceRoot":"","sources":["../../src/tools/ai-generate-document.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAU2B;AAC3B,0CAAiD;AACjD,uEAA+G;AAOxG,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IACP,gBAAgB,CAAoB;IACpC,cAAc,CAAkB;IAKtD,IAAI,CAA2B;IAEvB,eAAe,CAAC,IAAY;QAClC,MAAM,IAAI,GAAG,IAAA,qBAAY,EAAgB,IAAI,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,oBAAoB,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CACX,IAA8B,EAC9B,GAAe,EACf,MAAyB,EACzB,QAAmC;QAEnC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3G,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,OAAO,CACzE;YACE,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;YACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAChC,MAAM,EAAE;gBACN,OAAO,EAAE,cAAc,CAAC,IAAe;aACxC;SACF,EACD,GAAG,EACH,MAAM,EACN,QAAQ,CACT,CAAC;QAEF,OAAO;YACL,GAAG,cAAc;YACjB,QAAQ,EAAE,cAAc,CAAC,QAAQ;SAClC,CAAC;IACJ,CAAC;CACF,CAAA;AA1CY,gDAAkB;AACP;IAArB,IAAA,mBAAU,GAAE;8BAA4B,0CAAgB;4DAAC;AACpC;IAArB,IAAA,mBAAU,GAAE;8BAA0B,qBAAc;0DAAC;AAKtD;IAHC,IAAA,cAAK,EAAC;QACL,MAAM,EAAE,gDAAsB;KAC/B,CAAC;;gDAC6B;6BAPpB,kBAAkB;IAL9B,IAAA,aAAI,EAAC;QACJ,MAAM,EAAE;YACN,WAAW,EAAE,sEAAsE;SACpF;KACF,CAAC;GACW,kBAAkB,CA0C9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-generate-object.tool.d.ts","sourceRoot":"","sources":["../../src/tools/ai-generate-object.tool.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAGL,UAAU,EAEV,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,yBAAyB,EAG1B,MAAM,mBAAmB,CAAC;AAK3B,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;kBAKxB,CAAC;AAEZ,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE9E,qBAKa,gBAAiB,YAAW,aAAa,CAAC,wBAAwB,CAAC;IAE9E,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAGlE,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA+B;IAK5E,IAAI,EAAE,wBAAwB,CAAC;IAEzB,OAAO,CACX,IAAI,EAAE,wBAAwB,EAC9B,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,yBAAyB,GAClC,OAAO,CAAC,UAAU,CAAC;YAgDR,oBAAoB;CAsBnC"}
1
+ {"version":3,"file":"ai-generate-object.tool.d.ts","sourceRoot":"","sources":["../../src/tools/ai-generate-object.tool.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAGL,UAAU,EAEV,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,yBAAyB,EAG1B,MAAM,mBAAmB,CAAC;AAK3B,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;kBAKxB,CAAC;AAEZ,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE9E,qBAKa,gBAAiB,YAAW,aAAa,CAAC,wBAAwB,CAAC;IAE9E,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAGlE,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA+B;IAK5E,IAAI,EAAE,wBAAwB,CAAC;IAEzB,OAAO,CACX,IAAI,EAAE,wBAAwB,EAC9B,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,yBAAyB,GAClC,OAAO,CAAC,UAAU,CAAC;YAgDR,oBAAoB;CAoBnC"}
@@ -68,7 +68,6 @@ let AiGenerateObject = class AiGenerateObject {
68
68
  async handleGenerateObject(model, options) {
69
69
  const startTime = performance.now();
70
70
  try {
71
- console.log(options.schema);
72
71
  return (0, ai_1.generateText)({
73
72
  model,
74
73
  messages: options.messages,
@@ -1 +1 @@
1
- {"version":3,"file":"ai-generate-object.tool.js","sourceRoot":"","sources":["../../src/tools/ai-generate-object.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-generate-object.tool.js","sourceRoot":"","sources":["../../src/tools/ai-generate-object.tool.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ export declare class AiGenerateText implements ToolInterface<AiGenerateTextArgsT
27
27
  private readonly aiProviderModelHelperService;
28
28
  args: AiGenerateTextArgsType;
29
29
  execute(args: AiGenerateTextArgsType, ctx: RunContext, parent: WorkflowInterface, runtime: WorkflowMetadataInterface): Promise<ToolResult>;
30
+ private extractToolCalls;
30
31
  private handleGenerateText;
31
32
  }
32
33
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ai-generate-text.tool.d.ts","sourceRoot":"","sources":["../../src/tools/ai-generate-text.tool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,UAAU,EAEV,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,mBAAmB,CAAC;AAM3B,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;kBAEtB,CAAC;AAEZ,KAAK,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEnE,qBAKa,cAAe,YAAW,aAAa,CAAC,sBAAsB,CAAC;IAE1E,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAElE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;IAE5D,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA+B;IAK5E,IAAI,EAAE,sBAAsB,CAAC;IAEvB,OAAO,CACX,IAAI,EAAE,sBAAsB,EAC5B,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,UAAU,CAAC;YAqCR,kBAAkB;CA0DjC"}
1
+ {"version":3,"file":"ai-generate-text.tool.d.ts","sourceRoot":"","sources":["../../src/tools/ai-generate-text.tool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,UAAU,EAIV,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,mBAAmB,CAAC;AAM3B,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;kBAEtB,CAAC;AAEZ,KAAK,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEnE,qBAKa,cAAe,YAAW,aAAa,CAAC,sBAAsB,CAAC;IAE1E,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAElE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;IAE5D,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA+B;IAK5E,IAAI,EAAE,sBAAsB,CAAC;IAEvB,OAAO,CACX,IAAI,EAAE,sBAAsB,EAC5B,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,UAAU,CAAC;IA0CtB,OAAO,CAAC,gBAAgB;YAmBV,kBAAkB;CA0DjC"}
@@ -48,11 +48,30 @@ let AiGenerateText = class AiGenerateText {
48
48
  });
49
49
  }
50
50
  const { uiMessage, usage } = await this.handleGenerateText(model, options);
51
+ const toolCalls = this.extractToolCalls(uiMessage);
51
52
  return {
52
- data: uiMessage,
53
+ data: {
54
+ ...uiMessage,
55
+ ...(toolCalls ? { toolCalls } : {}),
56
+ },
53
57
  metadata: { usage },
54
58
  };
55
59
  }
60
+ extractToolCalls(message) {
61
+ const toolCalls = {};
62
+ for (const part of message.parts) {
63
+ if (!('type' in part) || typeof part.type !== 'string' || !part.type.startsWith('tool-')) {
64
+ continue;
65
+ }
66
+ const toolName = part.type.replace(/^tool-/, '');
67
+ toolCalls[toolName] = {
68
+ id: part.toolCallId ?? '',
69
+ name: toolName,
70
+ input: part.input,
71
+ };
72
+ }
73
+ return Object.keys(toolCalls).length > 0 ? toolCalls : null;
74
+ }
56
75
  async handleGenerateText(model, options) {
57
76
  const startTime = performance.now();
58
77
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"ai-generate-text.tool.js","sourceRoot":"","sources":["../../src/tools/ai-generate-text.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-generate-text.tool.js","sourceRoot":"","sources":["../../src/tools/ai-generate-text.tool.ts"],"names":[],"mappings":"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"}
@@ -9,11 +9,15 @@ declare const DelegateToolCallsToolSchema: z.ZodObject<{
9
9
  toolCallId: z.ZodOptional<z.ZodString>;
10
10
  }, z.core.$strip>>;
11
11
  }, z.core.$strip>;
12
+ document: z.ZodOptional<z.ZodString>;
13
+ skipResponseMessage: z.ZodOptional<z.ZodBoolean>;
12
14
  }, z.core.$strip>;
13
15
  type DelegateToolCallsToolArgs = z.infer<typeof DelegateToolCallsToolSchema>;
14
16
  export declare class DelegateToolCall implements ToolInterface<DelegateToolCallsToolArgs> {
17
+ private readonly logger;
15
18
  args: DelegateToolCallsToolArgs;
16
19
  execute(args: DelegateToolCallsToolArgs, ctx: RunContext, parent: WorkflowInterface, runtime: WorkflowMetadataInterface): Promise<ToolResult>;
20
+ private createResponseMessage;
17
21
  }
18
22
  export {};
19
23
  //# sourceMappingURL=delegate-tool-call.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"delegate-tool-call.tool.d.ts","sourceRoot":"","sources":["../../src/tools/delegate-tool-call.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,UAAU,EAEV,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,yBAAyB,EAE1B,MAAM,mBAAmB,CAAC;AAE3B,QAAA,MAAM,2BAA2B;;;;;;;;;iBAW/B,CAAC;AAEH,KAAK,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE7E,qBAKa,gBAAiB,YAAW,aAAa,CAAC,yBAAyB,CAAC;IAI/E,IAAI,EAAE,yBAAyB,CAAC;IAE1B,OAAO,CACX,IAAI,EAAE,yBAAyB,EAC/B,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,UAAU,CAAC;CA2CvB"}
1
+ {"version":3,"file":"delegate-tool-call.tool.d.ts","sourceRoot":"","sources":["../../src/tools/delegate-tool-call.tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,UAAU,EAIV,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,yBAAyB,EAE1B,MAAM,mBAAmB,CAAC;AAE3B,QAAA,MAAM,2BAA2B;;;;;;;;;;;iBAa/B,CAAC;AAEH,KAAK,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE7E,qBAKa,gBAAiB,YAAW,aAAa,CAAC,yBAAyB,CAAC;IAC/E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAK5D,IAAI,EAAE,yBAAyB,CAAC;IAE1B,OAAO,CACX,IAAI,EAAE,yBAAyB,EAC/B,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,UAAU,CAAC;YAkFR,qBAAqB;CAuBpC"}
@@ -8,10 +8,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
+ var DelegateToolCall_1;
11
12
  Object.defineProperty(exports, "__esModule", { value: true });
12
13
  exports.DelegateToolCall = void 0;
14
+ const common_1 = require("@nestjs/common");
13
15
  const zod_1 = require("zod");
14
- const common_1 = require("@loopstack/common");
16
+ const common_2 = require("@loopstack/common");
15
17
  const DelegateToolCallsToolSchema = zod_1.z.object({
16
18
  message: zod_1.z.object({
17
19
  id: zod_1.z.string(),
@@ -21,12 +23,16 @@ const DelegateToolCallsToolSchema = zod_1.z.object({
21
23
  toolCallId: zod_1.z.string().optional(),
22
24
  })),
23
25
  }),
26
+ document: zod_1.z.string().optional(),
27
+ skipResponseMessage: zod_1.z.boolean().optional(),
24
28
  });
25
- let DelegateToolCall = class DelegateToolCall {
29
+ let DelegateToolCall = DelegateToolCall_1 = class DelegateToolCall {
30
+ logger = new common_1.Logger(DelegateToolCall_1.name);
26
31
  args;
27
32
  async execute(args, ctx, parent, runtime) {
28
33
  const parts = args.message.parts;
29
34
  const resultParts = [];
35
+ const toolCalls = {};
30
36
  for (const part of parts) {
31
37
  if (!part.type.startsWith('tool-')) {
32
38
  continue;
@@ -35,41 +41,84 @@ let DelegateToolCall = class DelegateToolCall {
35
41
  throw new Error(`No toolCallId provided`);
36
42
  }
37
43
  const toolName = part.type.replace(/^tool-/, '');
38
- const tool = (0, common_1.getBlockTool)(parent, toolName);
44
+ const tool = (0, common_2.getBlockTool)(parent, toolName);
39
45
  if (!tool) {
40
46
  throw new Error(`Tool ${toolName} not found.`);
41
47
  }
42
- const result = await tool.execute(part.input, ctx, parent, runtime);
43
- resultParts.push({
44
- type: part.type,
45
- toolCallId: part.toolCallId,
46
- output: {
47
- type: 'text',
48
- value: JSON.stringify(result.data, null, 2),
49
- },
50
- input: part.input,
51
- state: 'output-available',
52
- });
48
+ try {
49
+ const result = await tool.execute(part.input, ctx, parent, runtime);
50
+ resultParts.push({
51
+ type: part.type,
52
+ toolCallId: part.toolCallId,
53
+ output: {
54
+ type: 'text',
55
+ value: JSON.stringify(result.data, null, 2),
56
+ },
57
+ input: part.input,
58
+ state: 'output-available',
59
+ });
60
+ toolCalls[toolName] = {
61
+ id: part.toolCallId,
62
+ name: toolName,
63
+ input: part.input,
64
+ output: result.data,
65
+ };
66
+ }
67
+ catch (error) {
68
+ const errorMessage = error instanceof Error ? error.message : String(error);
69
+ this.logger.error(`Tool "${toolName}" failed: ${errorMessage}`);
70
+ resultParts.push({
71
+ type: part.type,
72
+ toolCallId: part.toolCallId,
73
+ input: part.input,
74
+ state: 'output-error',
75
+ errorText: errorMessage,
76
+ });
77
+ toolCalls[toolName] = {
78
+ id: part.toolCallId,
79
+ name: toolName,
80
+ input: part.input,
81
+ };
82
+ }
53
83
  }
54
84
  const resultMessage = {
55
85
  id: args.message.id,
56
86
  role: 'assistant',
57
87
  parts: resultParts,
88
+ ...(Object.keys(toolCalls).length > 0 ? { toolCalls } : {}),
58
89
  };
90
+ if (args.document && !args.skipResponseMessage) {
91
+ const docResult = await this.createResponseMessage(args, resultMessage, ctx, parent, runtime);
92
+ return {
93
+ data: resultMessage,
94
+ effects: docResult.effects,
95
+ };
96
+ }
59
97
  return {
60
98
  data: resultMessage,
61
99
  };
62
100
  }
101
+ async createResponseMessage(args, resultMessage, ctx, parent, runtime) {
102
+ const createDocumentTool = (0, common_2.getBlockTool)(parent, 'createDocument');
103
+ if (!createDocumentTool) {
104
+ throw new Error('createDocument tool not found in parent context.');
105
+ }
106
+ return createDocumentTool.execute({
107
+ id: args.message.id,
108
+ document: args.document,
109
+ update: { content: resultMessage },
110
+ }, ctx, parent, runtime);
111
+ }
63
112
  };
64
113
  exports.DelegateToolCall = DelegateToolCall;
65
114
  __decorate([
66
- (0, common_1.Input)({
115
+ (0, common_2.Input)({
67
116
  schema: DelegateToolCallsToolSchema,
68
117
  }),
69
118
  __metadata("design:type", Object)
70
119
  ], DelegateToolCall.prototype, "args", void 0);
71
- exports.DelegateToolCall = DelegateToolCall = __decorate([
72
- (0, common_1.Tool)({
120
+ exports.DelegateToolCall = DelegateToolCall = DelegateToolCall_1 = __decorate([
121
+ (0, common_2.Tool)({
73
122
  config: {
74
123
  description: 'Delegate a tool call.',
75
124
  },
@@ -1 +1 @@
1
- {"version":3,"file":"delegate-tool-call.tool.js","sourceRoot":"","sources":["../../src/tools/delegate-tool-call.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,6BAAwB;AACxB,8CAS2B;AAE3B,MAAM,2BAA2B,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC;QAChB,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;QACd,KAAK,EAAE,OAAC,CAAC,KAAK,CACZ,OAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;YAChB,KAAK,EAAE,OAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACzB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAClC,CAAC,CACH;KACF,CAAC;CACH,CAAC,CAAC;AASI,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAI3B,IAAI,CAA4B;IAEhC,KAAK,CAAC,OAAO,CACX,IAA+B,EAC/B,GAAe,EACf,MAAyB,EACzB,OAAkC;QAElC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,MAAM,WAAW,GAAiB,EAAE,CAAC;QAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,SAAS;YACX,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAEjD,MAAM,IAAI,GAAG,IAAA,qBAAY,EAAgB,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,aAAa,CAAC,CAAC;YACjD,CAAC;YACD,MAAM,MAAM,GAAe,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAgC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAE3G,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,IAAI,CAAC,IAA0B;gBACrC,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,MAAM,EAAE;oBACN,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC5C;gBACD,KAAK,EAAE,IAAI,CAAC,KAAgC;gBAC5C,KAAK,EAAE,kBAAkB;aACL,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,aAAa,GAAc;YAC/B,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YACnB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,WAAW;SACnB,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,aAAa;SACpB,CAAC;IACJ,CAAC;CACF,CAAA;AAtDY,4CAAgB;AAI3B;IAHC,IAAA,cAAK,EAAC;QACL,MAAM,EAAE,2BAA2B;KACpC,CAAC;;8CAC8B;2BAJrB,gBAAgB;IAL5B,IAAA,aAAI,EAAC;QACJ,MAAM,EAAE;YACN,WAAW,EAAE,uBAAuB;SACrC;KACF,CAAC;GACW,gBAAgB,CAsD5B"}
1
+ {"version":3,"file":"delegate-tool-call.tool.js","sourceRoot":"","sources":["../../src/tools/delegate-tool-call.tool.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "openai",
11
11
  "tool"
12
12
  ],
13
- "version": "0.20.6",
13
+ "version": "0.20.8",
14
14
  "license": "Apache-2.0",
15
15
  "author": {
16
16
  "name": "Jakob Klippel",
@@ -34,8 +34,8 @@
34
34
  "@ai-sdk/anthropic": "^3.0.45",
35
35
  "@ai-sdk/openai": "^3.0.30",
36
36
  "@ai-sdk/provider-utils": "^4.0.15",
37
- "@loopstack/common": "^0.23.0",
38
- "@loopstack/core-ui-module": "^0.20.6",
37
+ "@loopstack/common": "^0.24.0",
38
+ "@loopstack/core": "^0.24.0",
39
39
  "@nestjs/common": "^11.1.14",
40
40
  "@nestjs/config": "^4.0.3",
41
41
  "@nestjs/core": "^11.1.14",
package/src/ai.module.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Module } from '@nestjs/common';
2
2
  import { DiscoveryModule } from '@nestjs/core';
3
- import { CoreUiModule } from '@loopstack/core-ui-module';
3
+ import { LoopCoreModule } from '@loopstack/core';
4
4
  import { AiMessageDocument } from './documents';
5
5
  import { AnthropicProviderService } from './providers/anthropic.provider';
6
6
  import { OpenAiProviderService } from './providers/openai.provider';
@@ -11,7 +11,7 @@ import { AiProviderRegistryService } from './services/ai-provider-registry.servi
11
11
  import { AiGenerateDocument, AiGenerateObject, AiGenerateText, DelegateToolCall } from './tools';
12
12
 
13
13
  @Module({
14
- imports: [CoreUiModule, DiscoveryModule],
14
+ imports: [LoopCoreModule, DiscoveryModule],
15
15
  providers: [
16
16
  // services
17
17
  AiMessagesHelperService,
@@ -23,8 +23,6 @@ export class AiMessagesHelperService {
23
23
  messages = this.searchMessages(documents, args.messagesSearchTag ?? 'message');
24
24
  }
25
25
 
26
- console.log(JSON.stringify(messages, null, 2));
27
-
28
26
  return messages;
29
27
  }
30
28
  }
@@ -9,7 +9,7 @@ import {
9
9
  WorkflowMetadataInterface,
10
10
  getBlockTool,
11
11
  } from '@loopstack/common';
12
- import { CreateDocument } from '@loopstack/core-ui-module';
12
+ import { CreateDocument } from '@loopstack/core';
13
13
  import { AiGenerateObject, AiGenerateObjectArgsType, AiGenerateObjectSchema } from './ai-generate-object.tool';
14
14
 
15
15
  @Tool({
@@ -114,8 +114,6 @@ export class AiGenerateObject implements ToolInterface<AiGenerateObjectArgsType>
114
114
  ): Promise<GenerateTextResult<ToolSet, any>> {
115
115
  const startTime = performance.now();
116
116
  try {
117
- console.log(options.schema);
118
-
119
117
  return generateText({
120
118
  model,
121
119
  messages: options.messages,
@@ -6,6 +6,8 @@ import {
6
6
  Input,
7
7
  RunContext,
8
8
  Tool,
9
+ ToolCallEntry,
10
+ ToolCallsMap,
9
11
  ToolInterface,
10
12
  ToolResult,
11
13
  WorkflowInterface,
@@ -76,12 +78,36 @@ export class AiGenerateText implements ToolInterface<AiGenerateTextArgsType> {
76
78
 
77
79
  const { uiMessage, usage } = await this.handleGenerateText(model, options);
78
80
 
81
+ const toolCalls = this.extractToolCalls(uiMessage);
82
+
79
83
  return {
80
- data: uiMessage,
84
+ data: {
85
+ ...uiMessage,
86
+ ...(toolCalls ? { toolCalls } : {}),
87
+ },
81
88
  metadata: { usage },
82
89
  };
83
90
  }
84
91
 
92
+ private extractToolCalls(message: UIMessage): ToolCallsMap | null {
93
+ const toolCalls: ToolCallsMap = {};
94
+
95
+ for (const part of message.parts) {
96
+ if (!('type' in part) || typeof part.type !== 'string' || !part.type.startsWith('tool-')) {
97
+ continue;
98
+ }
99
+
100
+ const toolName = part.type.replace(/^tool-/, '');
101
+ toolCalls[toolName] = {
102
+ id: (part as { toolCallId?: string }).toolCallId ?? '',
103
+ name: toolName,
104
+ input: (part as { input?: unknown }).input,
105
+ } satisfies ToolCallEntry;
106
+ }
107
+
108
+ return Object.keys(toolCalls).length > 0 ? toolCalls : null;
109
+ }
110
+
85
111
  private async handleGenerateText(
86
112
  model: LanguageModel,
87
113
  options: {
@@ -1,9 +1,12 @@
1
+ import { Logger } from '@nestjs/common';
1
2
  import { ToolUIPart, UIMessage } from 'ai';
2
3
  import { z } from 'zod';
3
4
  import {
4
5
  Input,
5
6
  RunContext,
6
7
  Tool,
8
+ ToolCallEntry,
9
+ ToolCallsMap,
7
10
  ToolInterface,
8
11
  ToolResult,
9
12
  WorkflowInterface,
@@ -22,6 +25,8 @@ const DelegateToolCallsToolSchema = z.object({
22
25
  }),
23
26
  ),
24
27
  }),
28
+ document: z.string().optional(),
29
+ skipResponseMessage: z.boolean().optional(),
25
30
  });
26
31
 
27
32
  type DelegateToolCallsToolArgs = z.infer<typeof DelegateToolCallsToolSchema>;
@@ -32,6 +37,8 @@ type DelegateToolCallsToolArgs = z.infer<typeof DelegateToolCallsToolSchema>;
32
37
  },
33
38
  })
34
39
  export class DelegateToolCall implements ToolInterface<DelegateToolCallsToolArgs> {
40
+ private readonly logger = new Logger(DelegateToolCall.name);
41
+
35
42
  @Input({
36
43
  schema: DelegateToolCallsToolSchema,
37
44
  })
@@ -45,6 +52,7 @@ export class DelegateToolCall implements ToolInterface<DelegateToolCallsToolArgs
45
52
  ): Promise<ToolResult> {
46
53
  const parts = args.message.parts;
47
54
  const resultParts: ToolUIPart[] = [];
55
+ const toolCalls: ToolCallsMap = {};
48
56
 
49
57
  for (const part of parts) {
50
58
  if (!part.type.startsWith('tool-')) {
@@ -61,28 +69,89 @@ export class DelegateToolCall implements ToolInterface<DelegateToolCallsToolArgs
61
69
  if (!tool) {
62
70
  throw new Error(`Tool ${toolName} not found.`);
63
71
  }
64
- const result: ToolResult = await tool.execute(part.input as Record<string, unknown>, ctx, parent, runtime);
65
-
66
- resultParts.push({
67
- type: part.type as ToolUIPart['type'],
68
- toolCallId: part.toolCallId,
69
- output: {
70
- type: 'text',
71
- value: JSON.stringify(result.data, null, 2),
72
- },
73
- input: part.input as Record<string, unknown>,
74
- state: 'output-available',
75
- } satisfies ToolUIPart);
72
+
73
+ try {
74
+ const result: ToolResult = await tool.execute(part.input as Record<string, unknown>, ctx, parent, runtime);
75
+
76
+ resultParts.push({
77
+ type: part.type as ToolUIPart['type'],
78
+ toolCallId: part.toolCallId,
79
+ output: {
80
+ type: 'text',
81
+ value: JSON.stringify(result.data, null, 2),
82
+ },
83
+ input: part.input as Record<string, unknown>,
84
+ state: 'output-available',
85
+ } satisfies ToolUIPart);
86
+
87
+ toolCalls[toolName] = {
88
+ id: part.toolCallId,
89
+ name: toolName,
90
+ input: part.input,
91
+ output: result.data,
92
+ } satisfies ToolCallEntry;
93
+ } catch (error) {
94
+ const errorMessage = error instanceof Error ? error.message : String(error);
95
+ this.logger.error(`Tool "${toolName}" failed: ${errorMessage}`);
96
+
97
+ resultParts.push({
98
+ type: part.type as ToolUIPart['type'],
99
+ toolCallId: part.toolCallId,
100
+ input: part.input as Record<string, unknown>,
101
+ state: 'output-error',
102
+ errorText: errorMessage,
103
+ } as ToolUIPart);
104
+
105
+ toolCalls[toolName] = {
106
+ id: part.toolCallId,
107
+ name: toolName,
108
+ input: part.input,
109
+ } satisfies ToolCallEntry;
110
+ }
76
111
  }
77
112
 
78
- const resultMessage: UIMessage = {
113
+ const resultMessage: UIMessage & { toolCalls?: ToolCallsMap } = {
79
114
  id: args.message.id,
80
115
  role: 'assistant',
81
116
  parts: resultParts,
117
+ ...(Object.keys(toolCalls).length > 0 ? { toolCalls } : {}),
82
118
  };
83
119
 
120
+ if (args.document && !args.skipResponseMessage) {
121
+ const docResult = await this.createResponseMessage(args, resultMessage, ctx, parent, runtime);
122
+
123
+ return {
124
+ data: resultMessage,
125
+ effects: docResult.effects,
126
+ };
127
+ }
128
+
84
129
  return {
85
130
  data: resultMessage,
86
131
  };
87
132
  }
133
+
134
+ private async createResponseMessage(
135
+ args: DelegateToolCallsToolArgs,
136
+ resultMessage: UIMessage,
137
+ ctx: RunContext,
138
+ parent: WorkflowInterface,
139
+ runtime: WorkflowMetadataInterface,
140
+ ): Promise<ToolResult> {
141
+ const createDocumentTool = getBlockTool<ToolInterface>(parent, 'createDocument');
142
+ if (!createDocumentTool) {
143
+ throw new Error('createDocument tool not found in parent context.');
144
+ }
145
+
146
+ return createDocumentTool.execute(
147
+ {
148
+ id: args.message.id,
149
+ document: args.document,
150
+ update: { content: resultMessage },
151
+ },
152
+ ctx,
153
+ parent,
154
+ runtime,
155
+ );
156
+ }
88
157
  }