@loopstack/claude-module 0.22.5 → 0.23.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.
Files changed (72) hide show
  1. package/dist/claude.module.d.ts.map +1 -1
  2. package/dist/claude.module.js +4 -23
  3. package/dist/claude.module.js.map +1 -1
  4. package/dist/documents/index.d.ts +1 -1
  5. package/dist/documents/index.d.ts.map +1 -1
  6. package/dist/documents/index.js +0 -15
  7. package/dist/documents/index.js.map +1 -1
  8. package/dist/services/claude-client.service.d.ts +6 -3
  9. package/dist/services/claude-client.service.d.ts.map +1 -1
  10. package/dist/services/claude-client.service.js +1 -1
  11. package/dist/services/claude-client.service.js.map +1 -1
  12. package/dist/services/claude-llm-provider.d.ts +22 -0
  13. package/dist/services/claude-llm-provider.d.ts.map +1 -0
  14. package/dist/services/claude-llm-provider.js +204 -0
  15. package/dist/services/claude-llm-provider.js.map +1 -0
  16. package/dist/services/index.d.ts +1 -2
  17. package/dist/services/index.d.ts.map +1 -1
  18. package/dist/services/index.js +1 -2
  19. package/dist/services/index.js.map +1 -1
  20. package/dist/tools/claude-web-search-server.tool.d.ts +13 -0
  21. package/dist/tools/claude-web-search-server.tool.d.ts.map +1 -0
  22. package/dist/tools/claude-web-search-server.tool.js +40 -0
  23. package/dist/tools/claude-web-search-server.tool.js.map +1 -0
  24. package/dist/tools/claude-web-search.tool.d.ts +14 -16
  25. package/dist/tools/claude-web-search.tool.d.ts.map +1 -1
  26. package/dist/tools/claude-web-search.tool.js +33 -82
  27. package/dist/tools/claude-web-search.tool.js.map +1 -1
  28. package/dist/tools/index.d.ts +1 -5
  29. package/dist/tools/index.d.ts.map +1 -1
  30. package/dist/tools/index.js +1 -5
  31. package/dist/tools/index.js.map +1 -1
  32. package/dist/types/claude.types.d.ts +5 -29
  33. package/dist/types/claude.types.d.ts.map +1 -1
  34. package/dist/types/claude.types.js.map +1 -1
  35. package/package.json +4 -3
  36. package/dist/documents/claude-message-document.d.ts +0 -16
  37. package/dist/documents/claude-message-document.d.ts.map +0 -1
  38. package/dist/documents/claude-message-document.js +0 -29
  39. package/dist/documents/claude-message-document.js.map +0 -1
  40. package/dist/documents/claude-message-document.yaml +0 -5
  41. package/dist/schemas/claude-generate-tool-base.schema.d.ts +0 -20
  42. package/dist/schemas/claude-generate-tool-base.schema.d.ts.map +0 -1
  43. package/dist/schemas/claude-generate-tool-base.schema.js +0 -24
  44. package/dist/schemas/claude-generate-tool-base.schema.js.map +0 -1
  45. package/dist/services/claude-messages-helper.service.d.ts +0 -10
  46. package/dist/services/claude-messages-helper.service.d.ts.map +0 -1
  47. package/dist/services/claude-messages-helper.service.js +0 -39
  48. package/dist/services/claude-messages-helper.service.js.map +0 -1
  49. package/dist/services/claude-tools-helper.service.d.ts +0 -6
  50. package/dist/services/claude-tools-helper.service.d.ts.map +0 -1
  51. package/dist/services/claude-tools-helper.service.js +0 -42
  52. package/dist/services/claude-tools-helper.service.js.map +0 -1
  53. package/dist/tools/claude-generate-document.tool.d.ts +0 -7
  54. package/dist/tools/claude-generate-document.tool.d.ts.map +0 -1
  55. package/dist/tools/claude-generate-document.tool.js +0 -42
  56. package/dist/tools/claude-generate-document.tool.js.map +0 -1
  57. package/dist/tools/claude-generate-object.tool.d.ts +0 -32
  58. package/dist/tools/claude-generate-object.tool.d.ts.map +0 -1
  59. package/dist/tools/claude-generate-object.tool.js +0 -121
  60. package/dist/tools/claude-generate-object.tool.js.map +0 -1
  61. package/dist/tools/claude-generate-text.tool.d.ts +0 -33
  62. package/dist/tools/claude-generate-text.tool.d.ts.map +0 -1
  63. package/dist/tools/claude-generate-text.tool.js +0 -128
  64. package/dist/tools/claude-generate-text.tool.js.map +0 -1
  65. package/dist/tools/delegate-tool-calls.tool.d.ts +0 -23
  66. package/dist/tools/delegate-tool-calls.tool.d.ts.map +0 -1
  67. package/dist/tools/delegate-tool-calls.tool.js +0 -133
  68. package/dist/tools/delegate-tool-calls.tool.js.map +0 -1
  69. package/dist/tools/update-tool-result.tool.d.ts +0 -22
  70. package/dist/tools/update-tool-result.tool.d.ts.map +0 -1
  71. package/dist/tools/update-tool-result.tool.js +0 -109
  72. package/dist/tools/update-tool-result.tool.js.map +0 -1
@@ -1,32 +0,0 @@
1
- import { z } from 'zod';
2
- import { BaseTool, DocumentClass, ToolResult } from '@loopstack/common';
3
- export declare const ClaudeGenerateObjectSchema: z.ZodObject<{
4
- claude: z.ZodOptional<z.ZodObject<{
5
- model: z.ZodOptional<z.ZodString>;
6
- envApiKey: z.ZodOptional<z.ZodString>;
7
- maxTokens: z.ZodOptional<z.ZodNumber>;
8
- cache: z.ZodOptional<z.ZodBoolean>;
9
- }, z.core.$strip>>;
10
- messages: z.ZodOptional<z.ZodArray<z.ZodObject<{
11
- role: z.ZodEnum<{
12
- user: "user";
13
- assistant: "assistant";
14
- }>;
15
- content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodAny>]>;
16
- }, z.core.$strip>>>;
17
- system: z.ZodOptional<z.ZodString>;
18
- prompt: z.ZodOptional<z.ZodString>;
19
- messagesSearchTag: z.ZodOptional<z.ZodString>;
20
- response: z.ZodObject<{
21
- id: z.ZodOptional<z.ZodString>;
22
- document: z.ZodCustom<DocumentClass, DocumentClass>;
23
- }, z.core.$strip>;
24
- }, z.core.$strict>;
25
- export type ClaudeGenerateObjectArgsType = z.infer<typeof ClaudeGenerateObjectSchema>;
26
- export declare class ClaudeGenerateObject extends BaseTool {
27
- private readonly claudeClientService;
28
- private readonly claudeMessagesHelperService;
29
- call(args: ClaudeGenerateObjectArgsType): Promise<ToolResult>;
30
- private handleGenerateObject;
31
- }
32
- //# sourceMappingURL=claude-generate-object.tool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-generate-object.tool.d.ts","sourceRoot":"","sources":["../../src/tools/claude-generate-object.tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,CAAC,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EACL,QAAQ,EACR,aAAa,EAEb,UAAU,EAGX,MAAM,mBAAmB,CAAC;AAM3B,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;kBAO5B,CAAC;AAEZ,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAItF,qBAMa,oBAAqB,SAAQ,QAAQ;IAEhD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAE1D,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAA8B;IAEpE,IAAI,CAAC,IAAI,EAAE,4BAA4B,GAAG,OAAO,CAAC,UAAU,CAAC;YA6CrD,oBAAoB;CAgDnC"}
@@ -1,121 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ClaudeGenerateObject = exports.ClaudeGenerateObjectSchema = void 0;
13
- const common_1 = require("@nestjs/common");
14
- const zod_1 = require("zod");
15
- const common_2 = require("@loopstack/common");
16
- const claude_generate_tool_base_schema_1 = require("../schemas/claude-generate-tool-base.schema");
17
- const services_1 = require("../services");
18
- const services_2 = require("../services");
19
- const cache_utils_1 = require("../utils/cache.utils");
20
- exports.ClaudeGenerateObjectSchema = claude_generate_tool_base_schema_1.ClaudeGenerateToolBaseSchema.extend({
21
- response: zod_1.z.object({
22
- id: zod_1.z.string().optional(),
23
- document: zod_1.z.custom((val) => typeof val === 'function' && (0, common_2.getBlockTypeFromMetadata)(val) === 'document'),
24
- }),
25
- }).strict();
26
- const STRUCTURED_OUTPUT_TOOL_NAME = 'structured_output';
27
- let ClaudeGenerateObject = class ClaudeGenerateObject extends common_2.BaseTool {
28
- claudeClientService;
29
- claudeMessagesHelperService;
30
- async call(args) {
31
- const client = this.claudeClientService.getClient(args.claude);
32
- const model = this.claudeClientService.getModel(args.claude);
33
- const messages = [];
34
- if (args.prompt) {
35
- messages.push({ role: 'user', content: args.prompt });
36
- }
37
- else {
38
- const resolved = this.claudeMessagesHelperService.getMessages(this.ctx.runtime.documents, {
39
- messages: args.messages,
40
- messagesSearchTag: args.messagesSearchTag,
41
- });
42
- messages.push(...resolved);
43
- }
44
- const responseSchema = (0, common_2.getDocumentSchema)(args.response.document);
45
- if (!responseSchema) {
46
- throw new Error('Claude object generation source document must have a schema.');
47
- }
48
- const jsonSchema = (0, zod_1.toJSONSchema)(responseSchema);
49
- const response = await this.handleGenerateObject(client, {
50
- model,
51
- messages,
52
- system: args.system,
53
- maxTokens: args.claude?.maxTokens,
54
- inputSchema: jsonSchema,
55
- cache: args.claude?.cache,
56
- });
57
- return {
58
- data: response.data,
59
- metadata: {
60
- usage: {
61
- inputTokens: response.usage.input_tokens,
62
- outputTokens: response.usage.output_tokens,
63
- cacheCreationInputTokens: response.usage.cache_creation_input_tokens ?? 0,
64
- cacheReadInputTokens: response.usage.cache_read_input_tokens ?? 0,
65
- },
66
- },
67
- };
68
- }
69
- async handleGenerateObject(client, options) {
70
- const baseTool = {
71
- name: STRUCTURED_OUTPUT_TOOL_NAME,
72
- description: 'Return the structured output matching the schema.',
73
- input_schema: options.inputSchema,
74
- };
75
- const { system, tools, messages } = options.cache
76
- ? (0, cache_utils_1.applyCacheBreakpoints)({ system: options.system, tools: [baseTool], messages: options.messages })
77
- : { system: options.system, tools: [baseTool], messages: options.messages };
78
- const startTime = performance.now();
79
- try {
80
- const response = await client.messages.create({
81
- model: options.model,
82
- messages,
83
- max_tokens: options.maxTokens ?? 4096,
84
- ...(system ? { system } : {}),
85
- tools: tools,
86
- tool_choice: { type: 'tool', name: STRUCTURED_OUTPUT_TOOL_NAME },
87
- });
88
- const toolUseBlock = response.content.find((block) => block.type === 'tool_use');
89
- if (!toolUseBlock) {
90
- throw new Error('Claude did not return a tool_use block for structured output.');
91
- }
92
- return {
93
- data: toolUseBlock.input,
94
- usage: response.usage,
95
- };
96
- }
97
- catch (error) {
98
- const errorResponseTime = performance.now() - startTime;
99
- console.error(`Request failed after ${errorResponseTime}ms:`, error);
100
- throw error;
101
- }
102
- }
103
- };
104
- exports.ClaudeGenerateObject = ClaudeGenerateObject;
105
- __decorate([
106
- (0, common_1.Inject)(),
107
- __metadata("design:type", services_1.ClaudeClientService)
108
- ], ClaudeGenerateObject.prototype, "claudeClientService", void 0);
109
- __decorate([
110
- (0, common_1.Inject)(),
111
- __metadata("design:type", services_2.ClaudeMessagesHelperService)
112
- ], ClaudeGenerateObject.prototype, "claudeMessagesHelperService", void 0);
113
- exports.ClaudeGenerateObject = ClaudeGenerateObject = __decorate([
114
- (0, common_2.Tool)({
115
- uiConfig: {
116
- description: 'Generates a structured object using the Anthropic Claude API',
117
- },
118
- schema: exports.ClaudeGenerateObjectSchema,
119
- })
120
- ], ClaudeGenerateObject);
121
- //# sourceMappingURL=claude-generate-object.tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-generate-object.tool.js","sourceRoot":"","sources":["../../src/tools/claude-generate-object.tool.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- import { z } from 'zod';
2
- import { BaseTool, ToolResult } from '@loopstack/common';
3
- import { ClaudeGenerateTextResult } from '../types';
4
- export declare const ClaudeGenerateTextSchema: z.ZodObject<{
5
- claude: z.ZodOptional<z.ZodObject<{
6
- model: z.ZodOptional<z.ZodString>;
7
- envApiKey: z.ZodOptional<z.ZodString>;
8
- maxTokens: z.ZodOptional<z.ZodNumber>;
9
- cache: z.ZodOptional<z.ZodBoolean>;
10
- }, z.core.$strip>>;
11
- messages: z.ZodOptional<z.ZodArray<z.ZodObject<{
12
- role: z.ZodEnum<{
13
- user: "user";
14
- assistant: "assistant";
15
- }>;
16
- content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodAny>]>;
17
- }, z.core.$strip>>>;
18
- system: z.ZodOptional<z.ZodString>;
19
- prompt: z.ZodOptional<z.ZodString>;
20
- messagesSearchTag: z.ZodOptional<z.ZodString>;
21
- tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
22
- }, z.core.$strict>;
23
- type ClaudeGenerateTextArgsType = z.infer<typeof ClaudeGenerateTextSchema>;
24
- export declare class ClaudeGenerateText extends BaseTool {
25
- private readonly claudeClientService;
26
- private readonly claudeMessagesHelperService;
27
- private readonly claudeToolsHelperService;
28
- call(args: ClaudeGenerateTextArgsType): Promise<ToolResult<ClaudeGenerateTextResult>>;
29
- private extractToolCalls;
30
- private handleGenerateText;
31
- }
32
- export {};
33
- //# sourceMappingURL=claude-generate-text.tool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-generate-text.tool.d.ts","sourceRoot":"","sources":["../../src/tools/claude-generate-text.tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAqC,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAGpD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;kBAE1B,CAAC;AAEZ,KAAK,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE3E,qBAMa,kBAAmB,SAAQ,QAAQ;IAE9C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAE1D,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAA8B;IAE1E,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA2B;IAE9D,IAAI,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;IA+C3F,OAAO,CAAC,gBAAgB;YAmBV,kBAAkB;CAgCjC"}
@@ -1,128 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ClaudeGenerateText = exports.ClaudeGenerateTextSchema = void 0;
13
- const common_1 = require("@nestjs/common");
14
- const zod_1 = require("zod");
15
- const common_2 = require("@loopstack/common");
16
- const claude_generate_tool_base_schema_1 = require("../schemas/claude-generate-tool-base.schema");
17
- const services_1 = require("../services");
18
- const services_2 = require("../services");
19
- const services_3 = require("../services");
20
- const cache_utils_1 = require("../utils/cache.utils");
21
- exports.ClaudeGenerateTextSchema = claude_generate_tool_base_schema_1.ClaudeGenerateToolBaseSchema.extend({
22
- tools: zod_1.z.array(zod_1.z.string()).optional(),
23
- }).strict();
24
- let ClaudeGenerateText = class ClaudeGenerateText extends common_2.BaseTool {
25
- claudeClientService;
26
- claudeMessagesHelperService;
27
- claudeToolsHelperService;
28
- async call(args) {
29
- const client = this.claudeClientService.getClient(args.claude);
30
- const model = this.claudeClientService.getModel(args.claude);
31
- const messages = [];
32
- if (args.prompt) {
33
- messages.push({ role: 'user', content: args.prompt });
34
- }
35
- else {
36
- const resolved = this.claudeMessagesHelperService.getMessages(this.ctx.runtime.documents, {
37
- messages: args.messages,
38
- messagesSearchTag: args.messagesSearchTag,
39
- });
40
- messages.push(...resolved);
41
- }
42
- const tools = args.tools
43
- ? this.claudeToolsHelperService.getTools(args.tools, this.ctx.parent, this.ctx.workspace)
44
- : undefined;
45
- const response = await this.handleGenerateText(client, {
46
- model,
47
- messages,
48
- system: args.system,
49
- maxTokens: args.claude?.maxTokens,
50
- tools,
51
- cache: args.claude?.cache,
52
- });
53
- const toolCalls = this.extractToolCalls(response);
54
- return {
55
- data: {
56
- ...response,
57
- ...(toolCalls ? { toolCalls } : {}),
58
- },
59
- metadata: {
60
- usage: {
61
- inputTokens: response.usage.input_tokens,
62
- outputTokens: response.usage.output_tokens,
63
- cacheCreationInputTokens: response.usage.cache_creation_input_tokens ?? 0,
64
- cacheReadInputTokens: response.usage.cache_read_input_tokens ?? 0,
65
- },
66
- },
67
- };
68
- }
69
- extractToolCalls(response) {
70
- if (response.stop_reason !== 'tool_use') {
71
- return null;
72
- }
73
- const toolCalls = {};
74
- for (const block of response.content) {
75
- if (block.type === 'tool_use') {
76
- toolCalls[block.name] = {
77
- id: block.id,
78
- name: block.name,
79
- input: block.input,
80
- };
81
- }
82
- }
83
- return Object.keys(toolCalls).length > 0 ? toolCalls : null;
84
- }
85
- async handleGenerateText(client, options) {
86
- const { system, tools, messages } = options.cache
87
- ? (0, cache_utils_1.applyCacheBreakpoints)({ system: options.system, tools: options.tools, messages: options.messages })
88
- : { system: options.system, tools: options.tools, messages: options.messages };
89
- const startTime = performance.now();
90
- try {
91
- const stream = client.messages.stream({
92
- model: options.model,
93
- messages,
94
- max_tokens: options.maxTokens ?? 4096,
95
- ...(system ? { system } : {}),
96
- ...(tools ? { tools } : {}),
97
- });
98
- return await stream.finalMessage();
99
- }
100
- catch (error) {
101
- const errorResponseTime = performance.now() - startTime;
102
- console.error(`Request failed after ${errorResponseTime}ms:`, error);
103
- throw error;
104
- }
105
- }
106
- };
107
- exports.ClaudeGenerateText = ClaudeGenerateText;
108
- __decorate([
109
- (0, common_1.Inject)(),
110
- __metadata("design:type", services_1.ClaudeClientService)
111
- ], ClaudeGenerateText.prototype, "claudeClientService", void 0);
112
- __decorate([
113
- (0, common_1.Inject)(),
114
- __metadata("design:type", services_2.ClaudeMessagesHelperService)
115
- ], ClaudeGenerateText.prototype, "claudeMessagesHelperService", void 0);
116
- __decorate([
117
- (0, common_1.Inject)(),
118
- __metadata("design:type", services_3.ClaudeToolsHelperService)
119
- ], ClaudeGenerateText.prototype, "claudeToolsHelperService", void 0);
120
- exports.ClaudeGenerateText = ClaudeGenerateText = __decorate([
121
- (0, common_2.Tool)({
122
- uiConfig: {
123
- description: 'Generates text using the Anthropic Claude API',
124
- },
125
- schema: exports.ClaudeGenerateTextSchema,
126
- })
127
- ], ClaudeGenerateText);
128
- //# sourceMappingURL=claude-generate-text.tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-generate-text.tool.js","sourceRoot":"","sources":["../../src/tools/claude-generate-text.tool.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import { z } from 'zod';
2
- import { BaseTool, DocumentClass, ToolResult } from '@loopstack/common';
3
- import type { DelegateToolCallsResult } from '../types';
4
- declare const DelegateToolCallsSchema: z.ZodObject<{
5
- message: z.ZodObject<{
6
- id: z.ZodOptional<z.ZodString>;
7
- content: z.ZodArray<z.ZodAny>;
8
- }, z.core.$strip>;
9
- document: z.ZodOptional<z.ZodCustom<DocumentClass, DocumentClass>>;
10
- skipResponseMessage: z.ZodOptional<z.ZodBoolean>;
11
- callback: z.ZodOptional<z.ZodObject<{
12
- transition: z.ZodString;
13
- }, z.core.$strip>>;
14
- }, z.core.$strip>;
15
- type DelegateToolCallsArgs = z.infer<typeof DelegateToolCallsSchema>;
16
- export declare class DelegateToolCalls extends BaseTool {
17
- private readonly logger;
18
- call(args: DelegateToolCallsArgs): Promise<ToolResult<DelegateToolCallsResult>>;
19
- private executeTool;
20
- private createResponseDocument;
21
- }
22
- export {};
23
- //# sourceMappingURL=delegate-tool-calls.tool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delegate-tool-calls.tool.d.ts","sourceRoot":"","sources":["../../src/tools/delegate-tool-calls.tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,QAAQ,EACR,aAAa,EAGb,UAAU,EAGX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,uBAAuB,EAAmD,MAAM,UAAU,CAAC;AAEzG,QAAA,MAAM,uBAAuB;;;;;;;;;;iBAc3B,CAAC;AAEH,KAAK,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAErE,qBAOa,iBAAkB,SAAQ,QAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAEvD,IAAI,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;YA8EvE,WAAW;YAoBX,sBAAsB;CAerC"}
@@ -1,133 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var DelegateToolCalls_1;
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.DelegateToolCalls = void 0;
11
- const common_1 = require("@nestjs/common");
12
- const zod_1 = require("zod");
13
- const common_2 = require("@loopstack/common");
14
- const DelegateToolCallsSchema = zod_1.z.object({
15
- message: zod_1.z.object({
16
- id: zod_1.z.string().optional(),
17
- content: zod_1.z.array(zod_1.z.any()),
18
- }),
19
- document: zod_1.z
20
- .custom((val) => typeof val === 'function' && (0, common_2.getBlockTypeFromMetadata)(val) === 'document')
21
- .optional(),
22
- skipResponseMessage: zod_1.z.boolean().optional(),
23
- callback: zod_1.z
24
- .object({
25
- transition: zod_1.z.string(),
26
- })
27
- .optional(),
28
- });
29
- let DelegateToolCalls = DelegateToolCalls_1 = class DelegateToolCalls extends common_2.BaseTool {
30
- logger = new common_1.Logger(DelegateToolCalls_1.name);
31
- async call(args) {
32
- const contentBlocks = args.message.content;
33
- const toolUseBlocks = contentBlocks.filter((b) => b.type === 'tool_use');
34
- if (toolUseBlocks.length === 0) {
35
- return {
36
- data: {
37
- allCompleted: true,
38
- toolResults: [],
39
- message: args.message,
40
- pendingCount: 0,
41
- errorCount: 0,
42
- hasErrors: false,
43
- errors: [],
44
- },
45
- };
46
- }
47
- const results = await Promise.all(toolUseBlocks.map((block) => {
48
- const toolCallback = args.callback
49
- ? {
50
- transition: args.callback.transition,
51
- metadata: { toolUseId: block.id, toolName: block.name },
52
- }
53
- : undefined;
54
- return this.executeTool(block, toolCallback ? { callback: toolCallback } : undefined);
55
- }));
56
- let pendingCount = 0;
57
- const toolResults = [];
58
- const errors = [];
59
- for (let i = 0; i < toolUseBlocks.length; i++) {
60
- const block = toolUseBlocks[i];
61
- const result = results[i];
62
- if (result.pending) {
63
- pendingCount++;
64
- }
65
- else {
66
- const isError = !!result.error;
67
- toolResults.push({
68
- type: 'tool_result',
69
- tool_use_id: block.id,
70
- content: result.data ? JSON.stringify(result.data, null, 2) : '',
71
- is_error: isError,
72
- });
73
- if (isError) {
74
- errors.push({
75
- toolName: block.name,
76
- toolUseId: block.id,
77
- message: result.error,
78
- });
79
- }
80
- }
81
- }
82
- if (args.document && !args.skipResponseMessage) {
83
- await this.createResponseDocument(args.document, args, toolResults);
84
- }
85
- return {
86
- data: {
87
- allCompleted: pendingCount === 0,
88
- toolResults,
89
- message: args.message,
90
- pendingCount,
91
- errorCount: errors.length,
92
- hasErrors: errors.length > 0,
93
- errors,
94
- },
95
- };
96
- }
97
- async executeTool(block, options) {
98
- try {
99
- const tool = (0, common_2.getBlockTool)(this.ctx.parent, block.name) ??
100
- (this.ctx.workspace ? (0, common_2.getBlockTool)(this.ctx.workspace, block.name) : undefined);
101
- if (!tool) {
102
- throw new Error(`Tool with name ${block.name} not found.`);
103
- }
104
- return await tool.call(block.input, options);
105
- }
106
- catch (error) {
107
- const errorMessage = error instanceof Error ? error.message : String(error);
108
- this.logger.error(`Tool "${block.name}" failed: ${errorMessage}`);
109
- return {
110
- data: errorMessage,
111
- error: errorMessage,
112
- };
113
- }
114
- }
115
- async createResponseDocument(document, args, toolResults) {
116
- await this.repository.save(document, {
117
- role: 'assistant',
118
- content: args.message.content,
119
- toolResults,
120
- }, { id: args.message.id, validate: 'skip' });
121
- }
122
- };
123
- exports.DelegateToolCalls = DelegateToolCalls;
124
- exports.DelegateToolCalls = DelegateToolCalls = DelegateToolCalls_1 = __decorate([
125
- (0, common_1.Injectable)(),
126
- (0, common_2.Tool)({
127
- uiConfig: {
128
- description: 'Delegate tool calls from an LLM response. Handles both sync tools and async task tools.',
129
- },
130
- schema: DelegateToolCallsSchema,
131
- })
132
- ], DelegateToolCalls);
133
- //# sourceMappingURL=delegate-tool-calls.tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delegate-tool-calls.tool.js","sourceRoot":"","sources":["../../src/tools/delegate-tool-calls.tool.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { z } from 'zod';
2
- import { BaseTool, DocumentClass, ToolResult } from '@loopstack/common';
3
- declare const UpdateToolResultSchema: z.ZodObject<{
4
- delegateResult: z.ZodObject<{
5
- allCompleted: z.ZodBoolean;
6
- toolResults: z.ZodArray<z.ZodAny>;
7
- message: z.ZodAny;
8
- pendingCount: z.ZodNumber;
9
- errorCount: z.ZodOptional<z.ZodNumber>;
10
- hasErrors: z.ZodOptional<z.ZodBoolean>;
11
- errors: z.ZodOptional<z.ZodArray<z.ZodAny>>;
12
- }, z.core.$strip>;
13
- completedTool: z.ZodAny;
14
- document: z.ZodOptional<z.ZodCustom<DocumentClass, DocumentClass>>;
15
- }, z.core.$strip>;
16
- type UpdateToolResultArgs = z.infer<typeof UpdateToolResultSchema>;
17
- export declare class UpdateToolResult extends BaseTool {
18
- private readonly logger;
19
- call(args: UpdateToolResultArgs): Promise<ToolResult>;
20
- }
21
- export {};
22
- //# sourceMappingURL=update-tool-result.tool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-tool-result.tool.d.ts","sourceRoot":"","sources":["../../src/tools/update-tool-result.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAQ,UAAU,EAA0C,MAAM,mBAAmB,CAAC;AAEtH,QAAA,MAAM,sBAAsB;;;;;;;;;;;;iBAc1B,CAAC;AAEH,KAAK,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEnE,qBAOa,gBAAiB,SAAQ,QAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAEtD,IAAI,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;CA2F5D"}
@@ -1,109 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var UpdateToolResult_1;
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.UpdateToolResult = void 0;
11
- const common_1 = require("@nestjs/common");
12
- const zod_1 = require("zod");
13
- const common_2 = require("@loopstack/common");
14
- const UpdateToolResultSchema = zod_1.z.object({
15
- delegateResult: zod_1.z.object({
16
- allCompleted: zod_1.z.boolean(),
17
- toolResults: zod_1.z.array(zod_1.z.any()),
18
- message: zod_1.z.any(),
19
- pendingCount: zod_1.z.number(),
20
- errorCount: zod_1.z.number().optional(),
21
- hasErrors: zod_1.z.boolean().optional(),
22
- errors: zod_1.z.array(zod_1.z.any()).optional(),
23
- }),
24
- completedTool: zod_1.z.any(),
25
- document: zod_1.z
26
- .custom((val) => typeof val === 'function' && (0, common_2.getBlockTypeFromMetadata)(val) === 'document')
27
- .optional(),
28
- });
29
- let UpdateToolResult = UpdateToolResult_1 = class UpdateToolResult extends common_2.BaseTool {
30
- logger = new common_1.Logger(UpdateToolResult_1.name);
31
- async call(args) {
32
- const { delegateResult } = args;
33
- const completedToolRecord = args.completedTool;
34
- const subscriberMetadata = completedToolRecord._subscriberMetadata;
35
- if (!subscriberMetadata?.toolUseId || !subscriberMetadata?.toolName) {
36
- throw new Error('Callback payload is missing _subscriberMetadata with toolUseId and toolName. ' +
37
- 'Ensure the event subscriber was registered with metadata by delegateToolCalls.');
38
- }
39
- const { toolUseId, toolName } = subscriberMetadata;
40
- const callbackStatus = completedToolRecord.status;
41
- const subWorkflowFailed = callbackStatus === 'failed' || callbackStatus === 'canceled';
42
- const tool = (0, common_2.getBlockTool)(this.ctx.parent, toolName);
43
- if (!tool) {
44
- throw new Error(`Tool with name ${toolName} not found.`);
45
- }
46
- let toolResult;
47
- try {
48
- toolResult = await tool.complete(completedToolRecord);
49
- }
50
- catch (error) {
51
- const errorMessage = error instanceof Error ? error.message : String(error);
52
- this.logger.error(`Tool "${toolName}" complete() failed: ${errorMessage}`);
53
- toolResult = {
54
- data: errorMessage,
55
- error: errorMessage,
56
- };
57
- }
58
- if (subWorkflowFailed && !toolResult.error) {
59
- const errorMessage = `Sub-workflow "${toolName}" ${callbackStatus}.`;
60
- this.logger.error(errorMessage);
61
- toolResult = {
62
- data: toolResult.data ?? errorMessage,
63
- error: errorMessage,
64
- };
65
- }
66
- const isError = !!toolResult.error;
67
- const completedEntry = {
68
- type: 'tool_result',
69
- tool_use_id: toolUseId,
70
- content: toolResult.data ? JSON.stringify(toolResult.data, null, 2) : '',
71
- is_error: isError,
72
- };
73
- const updatedResults = [...delegateResult.toolResults, completedEntry];
74
- const pendingCount = delegateResult.pendingCount - 1;
75
- const allCompleted = pendingCount === 0;
76
- const previousErrors = delegateResult.errors ?? [];
77
- const errors = isError ? [...previousErrors, { toolName, toolUseId, message: toolResult.error }] : previousErrors;
78
- const errorCount = errors.length;
79
- if (args.document) {
80
- await this.repository.save(args.document, {
81
- role: 'assistant',
82
- content: delegateResult.message.content,
83
- toolResults: updatedResults,
84
- }, { id: delegateResult.message.id, validate: 'skip' });
85
- }
86
- return {
87
- data: {
88
- ...delegateResult,
89
- toolResults: updatedResults,
90
- allCompleted,
91
- pendingCount,
92
- errorCount,
93
- hasErrors: errorCount > 0,
94
- errors,
95
- },
96
- };
97
- }
98
- };
99
- exports.UpdateToolResult = UpdateToolResult;
100
- exports.UpdateToolResult = UpdateToolResult = UpdateToolResult_1 = __decorate([
101
- (0, common_1.Injectable)(),
102
- (0, common_2.Tool)({
103
- uiConfig: {
104
- description: 'Handle async tool completion callback. Updates the response document and tracks completion state.',
105
- },
106
- schema: UpdateToolResultSchema,
107
- })
108
- ], UpdateToolResult);
109
- //# sourceMappingURL=update-tool-result.tool.js.map