@loopstack/claude-module 0.21.0 → 0.21.1
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/claude.module.d.ts.map +1 -1
- package/dist/claude.module.js +6 -4
- package/dist/claude.module.js.map +1 -1
- package/dist/services/claude-tools-helper.service.d.ts.map +1 -1
- package/dist/services/claude-tools-helper.service.js +6 -8
- package/dist/services/claude-tools-helper.service.js.map +1 -1
- package/dist/tools/claude-generate-document.tool.js +2 -2
- package/dist/tools/claude-generate-document.tool.js.map +1 -1
- package/dist/tools/claude-generate-text.tool.d.ts +3 -0
- package/dist/tools/claude-generate-text.tool.d.ts.map +1 -1
- package/dist/tools/claude-generate-text.tool.js +43 -1
- package/dist/tools/claude-generate-text.tool.js.map +1 -1
- package/dist/tools/delegate-tool-calls.tool.d.ts +28 -0
- package/dist/tools/delegate-tool-calls.tool.d.ts.map +1 -0
- package/dist/tools/delegate-tool-calls.tool.js +146 -0
- package/dist/tools/delegate-tool-calls.tool.js.map +1 -0
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/update-tool-result.tool.d.ts +24 -0
- package/dist/tools/update-tool-result.tool.d.ts.map +1 -0
- package/dist/tools/update-tool-result.tool.js +124 -0
- package/dist/tools/update-tool-result.tool.js.map +1 -0
- package/package.json +3 -3
- package/src/claude.module.ts +13 -5
- package/src/services/claude-tools-helper.service.ts +6 -8
- package/src/tools/claude-generate-document.tool.ts +1 -1
- package/src/tools/claude-generate-text.tool.ts +66 -1
- package/src/tools/delegate-tool-calls.tool.ts +198 -0
- package/src/tools/index.ts +2 -1
- package/src/tools/update-tool-result.tool.ts +139 -0
- package/dist/tools/claude-delegate-tool-call.tool.d.ts +0 -19
- package/dist/tools/claude-delegate-tool-call.tool.d.ts.map +0 -1
- package/dist/tools/claude-delegate-tool-call.tool.js +0 -102
- package/dist/tools/claude-delegate-tool-call.tool.js.map +0 -1
- package/src/tools/claude-delegate-tool-call.tool.ts +0 -125
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import Anthropic from '@anthropic-ai/sdk';
|
|
2
|
-
import { Logger } from '@nestjs/common';
|
|
3
|
-
import { z } from 'zod';
|
|
4
|
-
import {
|
|
5
|
-
Input,
|
|
6
|
-
RunContext,
|
|
7
|
-
Tool,
|
|
8
|
-
ToolInterface,
|
|
9
|
-
ToolResult,
|
|
10
|
-
WorkflowInterface,
|
|
11
|
-
WorkflowMetadataInterface,
|
|
12
|
-
getBlockTool,
|
|
13
|
-
} from '@loopstack/common';
|
|
14
|
-
|
|
15
|
-
const ClaudeDelegateToolCallSchema = z.object({
|
|
16
|
-
message: z.object({
|
|
17
|
-
id: z.string().optional(),
|
|
18
|
-
content: z.array(z.any()),
|
|
19
|
-
}),
|
|
20
|
-
document: z.string().optional(),
|
|
21
|
-
skipResponseMessage: z.boolean().optional(),
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
type ClaudeDelegateToolCallArgs = z.infer<typeof ClaudeDelegateToolCallSchema>;
|
|
25
|
-
|
|
26
|
-
@Tool({
|
|
27
|
-
config: {
|
|
28
|
-
description: 'Delegate tool calls from a Claude response.',
|
|
29
|
-
},
|
|
30
|
-
})
|
|
31
|
-
export class ClaudeDelegateToolCall implements ToolInterface<ClaudeDelegateToolCallArgs> {
|
|
32
|
-
private readonly logger = new Logger(ClaudeDelegateToolCall.name);
|
|
33
|
-
|
|
34
|
-
@Input({
|
|
35
|
-
schema: ClaudeDelegateToolCallSchema,
|
|
36
|
-
})
|
|
37
|
-
args: ClaudeDelegateToolCallArgs;
|
|
38
|
-
|
|
39
|
-
async execute(
|
|
40
|
-
args: ClaudeDelegateToolCallArgs,
|
|
41
|
-
ctx: RunContext,
|
|
42
|
-
parent: WorkflowInterface,
|
|
43
|
-
runtime: WorkflowMetadataInterface,
|
|
44
|
-
): Promise<ToolResult> {
|
|
45
|
-
const contentBlocks = args.message.content as Anthropic.ContentBlock[];
|
|
46
|
-
const toolResults: Anthropic.ToolResultBlockParam[] = [];
|
|
47
|
-
|
|
48
|
-
for (const block of contentBlocks) {
|
|
49
|
-
if (block.type !== 'tool_use') {
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const tool = getBlockTool<ToolInterface>(parent, block.name);
|
|
54
|
-
|
|
55
|
-
if (!tool) {
|
|
56
|
-
throw new Error(`Tool ${block.name} not found.`);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
try {
|
|
60
|
-
const result: ToolResult = await tool.execute(block.input as Record<string, unknown>, ctx, parent, runtime);
|
|
61
|
-
|
|
62
|
-
toolResults.push({
|
|
63
|
-
type: 'tool_result',
|
|
64
|
-
tool_use_id: block.id,
|
|
65
|
-
content: JSON.stringify(result.data, null, 2),
|
|
66
|
-
});
|
|
67
|
-
} catch (error) {
|
|
68
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
69
|
-
this.logger.error(`Tool "${block.name}" failed: ${errorMessage}`);
|
|
70
|
-
|
|
71
|
-
toolResults.push({
|
|
72
|
-
type: 'tool_result',
|
|
73
|
-
tool_use_id: block.id,
|
|
74
|
-
content: errorMessage,
|
|
75
|
-
is_error: true,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const resultData = { toolResults };
|
|
81
|
-
|
|
82
|
-
if (args.document && !args.skipResponseMessage) {
|
|
83
|
-
const docResult = await this.createResponseMessage(args, toolResults, ctx, parent, runtime);
|
|
84
|
-
|
|
85
|
-
return {
|
|
86
|
-
data: resultData,
|
|
87
|
-
effects: docResult.effects,
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
return {
|
|
92
|
-
data: resultData,
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
private async createResponseMessage(
|
|
97
|
-
args: ClaudeDelegateToolCallArgs,
|
|
98
|
-
toolResults: Anthropic.ToolResultBlockParam[],
|
|
99
|
-
ctx: RunContext,
|
|
100
|
-
parent: WorkflowInterface,
|
|
101
|
-
runtime: WorkflowMetadataInterface,
|
|
102
|
-
): Promise<ToolResult> {
|
|
103
|
-
const createDocumentTool = getBlockTool<ToolInterface>(parent, 'createDocument');
|
|
104
|
-
if (!createDocumentTool) {
|
|
105
|
-
throw new Error('createDocument tool not found in parent context.');
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return createDocumentTool.execute(
|
|
109
|
-
{
|
|
110
|
-
id: args.message.id,
|
|
111
|
-
document: args.document,
|
|
112
|
-
update: {
|
|
113
|
-
content: {
|
|
114
|
-
role: 'assistant',
|
|
115
|
-
content: args.message.content,
|
|
116
|
-
toolResults,
|
|
117
|
-
},
|
|
118
|
-
},
|
|
119
|
-
},
|
|
120
|
-
ctx,
|
|
121
|
-
parent,
|
|
122
|
-
runtime,
|
|
123
|
-
);
|
|
124
|
-
}
|
|
125
|
-
}
|