@loopstack/claude-module 0.21.1 → 0.22.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 (46) hide show
  1. package/dist/claude.module.d.ts.map +1 -1
  2. package/dist/claude.module.js +1 -10
  3. package/dist/claude.module.js.map +1 -1
  4. package/dist/documents/claude-message-document.d.ts +3 -1
  5. package/dist/documents/claude-message-document.d.ts.map +1 -1
  6. package/dist/documents/claude-message-document.js +6 -18
  7. package/dist/documents/claude-message-document.js.map +1 -1
  8. package/dist/documents/claude-message-document.yaml +2 -2
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/tools/claude-generate-document.tool.d.ts +3 -6
  14. package/dist/tools/claude-generate-document.tool.d.ts.map +1 -1
  15. package/dist/tools/claude-generate-document.tool.js +9 -31
  16. package/dist/tools/claude-generate-document.tool.js.map +1 -1
  17. package/dist/tools/claude-generate-object.tool.d.ts +4 -5
  18. package/dist/tools/claude-generate-object.tool.d.ts.map +1 -1
  19. package/dist/tools/claude-generate-object.tool.js +7 -17
  20. package/dist/tools/claude-generate-object.tool.js.map +1 -1
  21. package/dist/tools/claude-generate-text.tool.d.ts +4 -6
  22. package/dist/tools/claude-generate-text.tool.d.ts.map +1 -1
  23. package/dist/tools/claude-generate-text.tool.js +6 -34
  24. package/dist/tools/claude-generate-text.tool.js.map +1 -1
  25. package/dist/tools/delegate-tool-calls.tool.d.ts +5 -10
  26. package/dist/tools/delegate-tool-calls.tool.d.ts.map +1 -1
  27. package/dist/tools/delegate-tool-calls.tool.js +37 -66
  28. package/dist/tools/delegate-tool-calls.tool.js.map +1 -1
  29. package/dist/tools/update-tool-result.tool.d.ts +4 -9
  30. package/dist/tools/update-tool-result.tool.d.ts.map +1 -1
  31. package/dist/tools/update-tool-result.tool.js +18 -53
  32. package/dist/tools/update-tool-result.tool.js.map +1 -1
  33. package/dist/types/claude.types.d.ts +19 -0
  34. package/dist/types/claude.types.d.ts.map +1 -1
  35. package/dist/types/claude.types.js.map +1 -1
  36. package/package.json +3 -3
  37. package/src/claude.module.ts +1 -12
  38. package/src/documents/claude-message-document.ts +6 -12
  39. package/src/documents/claude-message-document.yaml +2 -2
  40. package/src/index.ts +1 -0
  41. package/src/tools/claude-generate-document.tool.ts +11 -48
  42. package/src/tools/claude-generate-object.tool.ts +13 -29
  43. package/src/tools/claude-generate-text.tool.ts +8 -65
  44. package/src/tools/delegate-tool-calls.tool.ts +53 -112
  45. package/src/tools/update-tool-result.tool.ts +21 -61
  46. package/src/types/claude.types.ts +26 -0
@@ -5,22 +5,20 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
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
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
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
8
  var DelegateToolCalls_1;
12
9
  Object.defineProperty(exports, "__esModule", { value: true });
13
10
  exports.DelegateToolCalls = void 0;
14
11
  const common_1 = require("@nestjs/common");
15
12
  const zod_1 = require("zod");
16
13
  const common_2 = require("@loopstack/common");
17
- const core_1 = require("@loopstack/core");
18
14
  const DelegateToolCallsSchema = zod_1.z.object({
19
15
  message: zod_1.z.object({
20
16
  id: zod_1.z.string().optional(),
21
17
  content: zod_1.z.array(zod_1.z.any()),
22
18
  }),
23
- document: zod_1.z.string().optional(),
19
+ document: zod_1.z
20
+ .custom((val) => typeof val === 'function' && (0, common_2.getBlockTypeFromMetadata)(val) === 'document')
21
+ .optional(),
24
22
  skipResponseMessage: zod_1.z.boolean().optional(),
25
23
  callback: zod_1.z
26
24
  .object({
@@ -28,41 +26,36 @@ const DelegateToolCallsSchema = zod_1.z.object({
28
26
  })
29
27
  .optional(),
30
28
  });
31
- let DelegateToolCalls = DelegateToolCalls_1 = class DelegateToolCalls {
32
- toolCallProcessor;
33
- eventSubscriberService;
29
+ let DelegateToolCalls = DelegateToolCalls_1 = class DelegateToolCalls extends common_2.BaseTool {
34
30
  logger = new common_1.Logger(DelegateToolCalls_1.name);
35
- createDocument;
36
- constructor(toolCallProcessor, eventSubscriberService) {
37
- this.toolCallProcessor = toolCallProcessor;
38
- this.eventSubscriberService = eventSubscriberService;
39
- }
40
- args;
41
- async execute(args, ctx, parent, metadata) {
31
+ async call(args) {
42
32
  const contentBlocks = args.message.content;
43
33
  const toolUseBlocks = contentBlocks.filter((b) => b.type === 'tool_use');
44
34
  if (toolUseBlocks.length === 0) {
45
35
  return {
46
- data: { allCompleted: true, toolResults: [], message: args.message, pendingCount: 0 },
36
+ data: {
37
+ allCompleted: true,
38
+ toolResults: [],
39
+ message: args.message,
40
+ pendingCount: 0,
41
+ },
47
42
  };
48
43
  }
49
- const results = await Promise.all(toolUseBlocks.map((block) => this.executeTool(block, ctx, parent, metadata)));
44
+ const results = await Promise.all(toolUseBlocks.map((block) => {
45
+ const toolCallback = args.callback
46
+ ? {
47
+ transition: args.callback.transition,
48
+ metadata: { toolUseId: block.id, toolName: block.name },
49
+ }
50
+ : undefined;
51
+ return this.executeTool(block, toolCallback ? { callback: toolCallback } : undefined);
52
+ }));
50
53
  let pendingCount = 0;
51
54
  const toolResults = [];
52
- const toolEffects = [];
53
55
  for (let i = 0; i < toolUseBlocks.length; i++) {
54
56
  const block = toolUseBlocks[i];
55
57
  const result = results[i];
56
- if (result.effects) {
57
- toolEffects.push(...result.effects);
58
- }
59
- const resultData = result.data;
60
- if (resultData?.mode === 'async') {
61
- if (!args.callback?.transition) {
62
- throw new Error(`Tool "${block.name}" returned an async result but no callback.transition was provided. ` +
63
- `Add a callback configuration to the delegateToolCalls args.`);
64
- }
65
- await this.eventSubscriberService.registerSubscriber(ctx.pipelineId, ctx.workflowId, args.callback.transition, resultData.correlationId, resultData.eventName, ctx.userId, ctx.workspaceId, { toolUseId: block.id, toolName: block.name });
58
+ if (result.pending) {
66
59
  pendingCount++;
67
60
  }
68
61
  else {
@@ -74,14 +67,9 @@ let DelegateToolCalls = DelegateToolCalls_1 = class DelegateToolCalls {
74
67
  });
75
68
  }
76
69
  }
77
- const effects = [];
78
70
  if (args.document && !args.skipResponseMessage) {
79
- const docResult = await this.createResponseDocument(args, toolResults, ctx, parent, metadata);
80
- if (docResult.effects) {
81
- effects.push(...docResult.effects);
82
- }
71
+ await this.createResponseDocument(args.document, args, toolResults);
83
72
  }
84
- effects.push(...toolEffects);
85
73
  return {
86
74
  data: {
87
75
  allCompleted: pendingCount === 0,
@@ -89,14 +77,15 @@ let DelegateToolCalls = DelegateToolCalls_1 = class DelegateToolCalls {
89
77
  message: args.message,
90
78
  pendingCount,
91
79
  },
92
- effects,
93
80
  };
94
81
  }
95
- async executeTool(block, ctx, parent, metadata) {
96
- const tool = this.toolCallProcessor.getTool(parent, block.name);
97
- const parsedArgs = this.toolCallProcessor.parseArgs(tool, block.input, metadata.transition);
82
+ async executeTool(block, options) {
98
83
  try {
99
- return await this.toolCallProcessor.executeToolCall(tool, parsedArgs, ctx, parent, metadata);
84
+ const tool = (0, common_2.getBlockTool)(this.ctx.parent, block.name);
85
+ if (!tool) {
86
+ throw new Error(`Tool with name ${block.name} not found.`);
87
+ }
88
+ return await tool.call(block.input, options);
100
89
  }
101
90
  catch (error) {
102
91
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -107,40 +96,22 @@ let DelegateToolCalls = DelegateToolCalls_1 = class DelegateToolCalls {
107
96
  };
108
97
  }
109
98
  }
110
- async createResponseDocument(args, toolResults, ctx, parent, metadata) {
111
- return this.createDocument.execute({
112
- id: args.message.id,
113
- document: args.document,
114
- validate: 'skip',
115
- update: {
116
- content: {
117
- role: 'assistant',
118
- content: args.message.content,
119
- toolResults,
120
- },
121
- },
122
- }, ctx, parent, metadata);
99
+ async createResponseDocument(document, args, toolResults) {
100
+ await this.repository.save(document, {
101
+ role: 'assistant',
102
+ content: args.message.content,
103
+ toolResults,
104
+ }, { id: args.message.id, validate: 'skip' });
123
105
  }
124
106
  };
125
107
  exports.DelegateToolCalls = DelegateToolCalls;
126
- __decorate([
127
- (0, common_2.InjectTool)(),
128
- __metadata("design:type", core_1.CreateDocument)
129
- ], DelegateToolCalls.prototype, "createDocument", void 0);
130
- __decorate([
131
- (0, common_2.Input)({
132
- schema: DelegateToolCallsSchema,
133
- }),
134
- __metadata("design:type", Object)
135
- ], DelegateToolCalls.prototype, "args", void 0);
136
108
  exports.DelegateToolCalls = DelegateToolCalls = DelegateToolCalls_1 = __decorate([
137
109
  (0, common_1.Injectable)(),
138
110
  (0, common_2.Tool)({
139
- config: {
111
+ uiConfig: {
140
112
  description: 'Delegate tool calls from an LLM response. Handles both sync tools and async task tools.',
141
113
  },
142
- }),
143
- __metadata("design:paramtypes", [core_1.StateMachineToolCallProcessorService,
144
- core_1.EventSubscriberService])
114
+ schema: DelegateToolCallsSchema,
115
+ })
145
116
  ], DelegateToolCalls);
146
117
  //# sourceMappingURL=delegate-tool-calls.tool.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"delegate-tool-calls.tool.js","sourceRoot":"","sources":["../../src/tools/delegate-tool-calls.tool.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { RunContext, ToolInterface, ToolResult, WorkflowInterface, WorkflowMetadataInterface } from '@loopstack/common';
3
- import { StateMachineToolCallProcessorService } from '@loopstack/core';
2
+ import { BaseTool, DocumentClass, ToolResult } from '@loopstack/common';
4
3
  declare const UpdateToolResultSchema: z.ZodObject<{
5
4
  delegateResult: z.ZodObject<{
6
5
  allCompleted: z.ZodBoolean;
@@ -9,16 +8,12 @@ declare const UpdateToolResultSchema: z.ZodObject<{
9
8
  pendingCount: z.ZodNumber;
10
9
  }, z.core.$strip>;
11
10
  completedTool: z.ZodAny;
12
- document: z.ZodOptional<z.ZodString>;
11
+ document: z.ZodOptional<z.ZodCustom<DocumentClass, DocumentClass>>;
13
12
  }, z.core.$strip>;
14
13
  type UpdateToolResultArgs = z.infer<typeof UpdateToolResultSchema>;
15
- export declare class UpdateToolResult implements ToolInterface<UpdateToolResultArgs> {
16
- private readonly toolCallProcessor;
14
+ export declare class UpdateToolResult extends BaseTool {
17
15
  private readonly logger;
18
- private createDocument;
19
- constructor(toolCallProcessor: StateMachineToolCallProcessorService);
20
- args: UpdateToolResultArgs;
21
- execute(args: UpdateToolResultArgs, ctx: RunContext, parent: WorkflowInterface, metadata: WorkflowMetadataInterface): Promise<ToolResult>;
16
+ call(args: UpdateToolResultArgs): Promise<ToolResult>;
22
17
  }
23
18
  export {};
24
19
  //# sourceMappingURL=update-tool-result.tool.d.ts.map
@@ -1 +1 @@
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,EAGL,UAAU,EAEV,aAAa,EACb,UAAU,EAEV,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAkB,oCAAoC,EAAE,MAAM,iBAAiB,CAAC;AAEvF,QAAA,MAAM,sBAAsB;;;;;;;;;iBAS1B,CAAC;AAEH,KAAK,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEnE,qBAMa,gBAAiB,YAAW,aAAa,CAAC,oBAAoB,CAAC;IAK9D,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAJ9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAE9C,OAAO,CAAC,cAAc,CAAiB;gBAExB,iBAAiB,EAAE,oCAAoC;IAKpF,IAAI,EAAE,oBAAoB,CAAC;IAErB,OAAO,CACX,IAAI,EAAE,oBAAoB,EAC1B,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,yBAAyB,GAClC,OAAO,CAAC,UAAU,CAAC;CAuFvB"}
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;;;;;;;;;iBAW1B,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;CAqE5D"}
@@ -5,16 +5,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
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
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
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
8
  var UpdateToolResult_1;
12
9
  Object.defineProperty(exports, "__esModule", { value: true });
13
10
  exports.UpdateToolResult = void 0;
14
11
  const common_1 = require("@nestjs/common");
15
12
  const zod_1 = require("zod");
16
13
  const common_2 = require("@loopstack/common");
17
- const core_1 = require("@loopstack/core");
18
14
  const UpdateToolResultSchema = zod_1.z.object({
19
15
  delegateResult: zod_1.z.object({
20
16
  allCompleted: zod_1.z.boolean(),
@@ -23,17 +19,13 @@ const UpdateToolResultSchema = zod_1.z.object({
23
19
  pendingCount: zod_1.z.number(),
24
20
  }),
25
21
  completedTool: zod_1.z.any(),
26
- document: zod_1.z.string().optional(),
22
+ document: zod_1.z
23
+ .custom((val) => typeof val === 'function' && (0, common_2.getBlockTypeFromMetadata)(val) === 'document')
24
+ .optional(),
27
25
  });
28
- let UpdateToolResult = UpdateToolResult_1 = class UpdateToolResult {
29
- toolCallProcessor;
26
+ let UpdateToolResult = UpdateToolResult_1 = class UpdateToolResult extends common_2.BaseTool {
30
27
  logger = new common_1.Logger(UpdateToolResult_1.name);
31
- createDocument;
32
- constructor(toolCallProcessor) {
33
- this.toolCallProcessor = toolCallProcessor;
34
- }
35
- args;
36
- async execute(args, ctx, parent, metadata) {
28
+ async call(args) {
37
29
  const { delegateResult } = args;
38
30
  const completedToolRecord = args.completedTool;
39
31
  const subscriberMetadata = completedToolRecord._subscriberMetadata;
@@ -42,15 +34,13 @@ let UpdateToolResult = UpdateToolResult_1 = class UpdateToolResult {
42
34
  'Ensure the event subscriber was registered with metadata by delegateToolCalls.');
43
35
  }
44
36
  const { toolUseId, toolName } = subscriberMetadata;
45
- const tool = this.toolCallProcessor.getTool(parent, toolName);
37
+ const tool = (0, common_2.getBlockTool)(this.ctx.parent, toolName);
38
+ if (!tool) {
39
+ throw new Error(`Tool with name ${toolName} not found.`);
40
+ }
46
41
  let toolResult;
47
42
  try {
48
- if (tool.complete) {
49
- toolResult = await tool.complete(completedToolRecord, ctx, parent, metadata);
50
- }
51
- else {
52
- toolResult = { data: completedToolRecord.result ?? completedToolRecord };
53
- }
43
+ toolResult = await tool.complete(completedToolRecord);
54
44
  }
55
45
  catch (error) {
56
46
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -69,26 +59,12 @@ let UpdateToolResult = UpdateToolResult_1 = class UpdateToolResult {
69
59
  const updatedResults = [...delegateResult.toolResults, completedEntry];
70
60
  const pendingCount = delegateResult.pendingCount - 1;
71
61
  const allCompleted = pendingCount === 0;
72
- const allEffects = [];
73
- if (toolResult.effects) {
74
- allEffects.push(...toolResult.effects);
75
- }
76
62
  if (args.document) {
77
- const docResult = await this.createDocument.execute({
78
- id: delegateResult.message.id,
79
- document: args.document,
80
- validate: 'skip',
81
- update: {
82
- content: {
83
- role: 'assistant',
84
- content: delegateResult.message.content,
85
- toolResults: updatedResults,
86
- },
87
- },
88
- }, ctx, parent, metadata);
89
- if (docResult.effects) {
90
- allEffects.push(...docResult.effects);
91
- }
63
+ await this.repository.save(args.document, {
64
+ role: 'assistant',
65
+ content: delegateResult.message.content,
66
+ toolResults: updatedResults,
67
+ }, { id: delegateResult.message.id, validate: 'skip' });
92
68
  }
93
69
  return {
94
70
  data: {
@@ -97,28 +73,17 @@ let UpdateToolResult = UpdateToolResult_1 = class UpdateToolResult {
97
73
  allCompleted,
98
74
  pendingCount,
99
75
  },
100
- effects: allEffects.length > 0 ? allEffects : undefined,
101
76
  };
102
77
  }
103
78
  };
104
79
  exports.UpdateToolResult = UpdateToolResult;
105
- __decorate([
106
- (0, common_2.InjectTool)(),
107
- __metadata("design:type", core_1.CreateDocument)
108
- ], UpdateToolResult.prototype, "createDocument", void 0);
109
- __decorate([
110
- (0, common_2.Input)({
111
- schema: UpdateToolResultSchema,
112
- }),
113
- __metadata("design:type", Object)
114
- ], UpdateToolResult.prototype, "args", void 0);
115
80
  exports.UpdateToolResult = UpdateToolResult = UpdateToolResult_1 = __decorate([
116
81
  (0, common_1.Injectable)(),
117
82
  (0, common_2.Tool)({
118
- config: {
83
+ uiConfig: {
119
84
  description: 'Handle async tool completion callback. Updates the response document and tracks completion state.',
120
85
  },
121
- }),
122
- __metadata("design:paramtypes", [core_1.StateMachineToolCallProcessorService])
86
+ schema: UpdateToolResultSchema,
87
+ })
123
88
  ], UpdateToolResult);
124
89
  //# sourceMappingURL=update-tool-result.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-tool-result.tool.js","sourceRoot":"","sources":["../../src/tools/update-tool-result.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-tool-result.tool.js","sourceRoot":"","sources":["../../src/tools/update-tool-result.tool.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import Anthropic from '@anthropic-ai/sdk';
2
+ import type { ToolCallsMap } from '@loopstack/common';
2
3
  export interface ClaudeModelConfig {
3
4
  model?: string;
4
5
  envApiKey?: string;
@@ -15,5 +16,23 @@ export interface ClaudeToolDefinition {
15
16
  description: string;
16
17
  input_schema: Anthropic.Tool['input_schema'];
17
18
  }
19
+ export interface ClaudeGenerateTextResult extends Anthropic.Message {
20
+ toolCalls?: ToolCallsMap;
21
+ }
22
+ export interface DelegateToolCallsResult {
23
+ allCompleted: boolean;
24
+ toolResults: DelegateToolResultEntry[];
25
+ message: {
26
+ id?: string;
27
+ content: Anthropic.ContentBlock[];
28
+ };
29
+ pendingCount: number;
30
+ }
31
+ export interface DelegateToolResultEntry {
32
+ type: 'tool_result';
33
+ tool_use_id: string;
34
+ content?: string;
35
+ is_error?: boolean;
36
+ }
18
37
  export { default as Anthropic } from '@anthropic-ai/sdk';
19
38
  //# sourceMappingURL=claude.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.types.d.ts","sourceRoot":"","sources":["../../src/types/claude.types.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAK1C,MAAM,WAAW,iBAAiB;IAEhC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;CAC3D;AAKD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;CAC9C;AAGD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"claude.types.d.ts","sourceRoot":"","sources":["../../src/types/claude.types.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,MAAM,WAAW,iBAAiB;IAEhC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;CAC3D;AAKD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;CAC9C;AAMD,MAAM,WAAW,wBAAyB,SAAQ,SAAS,CAAC,OAAO;IACjE,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B;AAKD,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,uBAAuB,EAAE,CAAC;IACvC,OAAO,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,SAAS,CAAC,YAAY,EAAE,CAAA;KAAE,CAAC;IAC5D,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAGD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude.types.js","sourceRoot":"","sources":["../../src/types/claude.types.ts"],"names":[],"mappings":";;;;;;AAiCA,yCAAyD;AAAhD,iHAAA,OAAO,OAAa"}
1
+ {"version":3,"file":"claude.types.js","sourceRoot":"","sources":["../../src/types/claude.types.ts"],"names":[],"mappings":";;;;;;AA2DA,yCAAyD;AAAhD,iHAAA,OAAO,OAAa"}
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "loopstack",
11
11
  "tool"
12
12
  ],
13
- "version": "0.21.1",
13
+ "version": "0.22.0",
14
14
  "license": "Apache-2.0",
15
15
  "author": {
16
16
  "name": "Jakob Klippel",
@@ -32,8 +32,8 @@
32
32
  },
33
33
  "dependencies": {
34
34
  "@anthropic-ai/sdk": "^0.39.0",
35
- "@loopstack/common": "^0.24.0",
36
- "@loopstack/core": "^0.24.0",
35
+ "@loopstack/common": "^0.25.0",
36
+ "@loopstack/core": "^0.25.0",
37
37
  "@nestjs/common": "^11.1.14",
38
38
  "@nestjs/config": "^4.0.3",
39
39
  "@nestjs/core": "^11.1.14",
@@ -1,6 +1,5 @@
1
1
  import { Module } from '@nestjs/common';
2
2
  import { LoopCoreModule } from '@loopstack/core';
3
- import { ClaudeMessageDocument } from './documents';
4
3
  import { ClaudeClientService, ClaudeMessagesHelperService, ClaudeToolsHelperService } from './services';
5
4
  import {
6
5
  ClaudeGenerateDocument,
@@ -24,17 +23,7 @@ import {
24
23
  ClaudeGenerateDocument,
25
24
  DelegateToolCalls,
26
25
  UpdateToolResult,
27
-
28
- // documents
29
- ClaudeMessageDocument,
30
- ],
31
- exports: [
32
- ClaudeGenerateText,
33
- ClaudeGenerateObject,
34
- ClaudeGenerateDocument,
35
- DelegateToolCalls,
36
- UpdateToolResult,
37
- ClaudeMessageDocument,
38
26
  ],
27
+ exports: [ClaudeGenerateText, ClaudeGenerateObject, ClaudeGenerateDocument, DelegateToolCalls, UpdateToolResult],
39
28
  })
40
29
  export class ClaudeModule {}
@@ -1,6 +1,5 @@
1
- import { Injectable } from '@nestjs/common';
2
1
  import { z } from 'zod';
3
- import { Document, Input } from '@loopstack/common';
2
+ import { Document } from '@loopstack/common';
4
3
 
5
4
  export const ClaudeMessageDocumentSchema = z.object({
6
5
  role: z.enum(['user', 'assistant']),
@@ -10,17 +9,12 @@ export const ClaudeMessageDocumentSchema = z.object({
10
9
 
11
10
  export type ClaudeMessageDocumentContentType = z.infer<typeof ClaudeMessageDocumentSchema>;
12
11
 
13
- @Injectable()
14
12
  @Document({
15
- config: {
16
- type: 'document',
17
- description: 'Claude Message Document. Stores messages in Anthropic native format.',
18
- },
19
- configFile: __dirname + '/claude-message-document.yaml',
13
+ schema: ClaudeMessageDocumentSchema,
14
+ uiConfig: __dirname + '/claude-message-document.yaml',
20
15
  })
21
16
  export class ClaudeMessageDocument {
22
- @Input({
23
- schema: ClaudeMessageDocumentSchema,
24
- })
25
- content: z.infer<typeof ClaudeMessageDocumentSchema>;
17
+ role: 'user' | 'assistant';
18
+ content: string | any[];
19
+ toolResults?: any[];
26
20
  }
@@ -1,5 +1,5 @@
1
1
  tags:
2
2
  - message
3
3
  ui:
4
- form:
5
- widget: claude-message
4
+ widgets:
5
+ - widget: claude-message
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './claude.module';
2
2
  export * from './tools';
3
3
  export * from './documents';
4
+ export * from './types';
@@ -1,15 +1,4 @@
1
- import {
2
- InjectTool,
3
- Input,
4
- RunContext,
5
- Tool,
6
- ToolInterface,
7
- ToolResult,
8
- WorkflowInterface,
9
- WorkflowMetadataInterface,
10
- getBlockTool,
11
- } from '@loopstack/common';
12
- import { CreateDocument } from '@loopstack/core';
1
+ import { BaseTool, InjectTool, Tool, ToolResult } from '@loopstack/common';
13
2
  import {
14
3
  ClaudeGenerateObject,
15
4
  ClaudeGenerateObjectArgsType,
@@ -17,49 +6,23 @@ import {
17
6
  } from './claude-generate-object.tool';
18
7
 
19
8
  @Tool({
20
- config: {
9
+ uiConfig: {
21
10
  description: 'Generates a structured object using the Anthropic Claude API and creates it as a document',
22
11
  },
12
+ schema: ClaudeGenerateObjectSchema,
23
13
  })
24
- export class ClaudeGenerateDocument implements ToolInterface<ClaudeGenerateObjectArgsType> {
14
+ export class ClaudeGenerateDocument extends BaseTool {
25
15
  @InjectTool() private claudeGenerateObject!: ClaudeGenerateObject;
26
- @InjectTool() private createDocument!: CreateDocument;
27
-
28
- @Input({
29
- schema: ClaudeGenerateObjectSchema,
30
- })
31
- args: ClaudeGenerateObjectArgsType;
32
-
33
- private getRequiredTool(name: string): ToolInterface {
34
- const tool = getBlockTool<ToolInterface>(this, name);
35
- if (tool === undefined) {
36
- throw new Error(`Tool "${name}" is not available`);
37
- }
38
- return tool;
39
- }
40
16
 
41
- async execute(
42
- args: ClaudeGenerateObjectArgsType,
43
- ctx: RunContext,
44
- parent: WorkflowInterface,
45
- metadata: WorkflowMetadataInterface,
46
- ): Promise<ToolResult> {
47
- const generateResult = await this.getRequiredTool('claudeGenerateObject').execute(args, ctx, parent, metadata);
48
- const documentResult = await this.getRequiredTool('createDocument').execute(
49
- {
50
- id: args.response.id,
51
- document: args.response.document,
52
- update: {
53
- content: generateResult.data as unknown,
54
- },
55
- },
56
- ctx,
57
- parent,
58
- metadata,
59
- );
17
+ async call(args: ClaudeGenerateObjectArgsType): Promise<ToolResult> {
18
+ const generateResult = await this.claudeGenerateObject.call(args);
19
+ const entity = await this.repository.save(args.response.document, generateResult.data as Record<string, unknown>, {
20
+ id: args.response.id,
21
+ validate: 'skip',
22
+ });
60
23
 
61
24
  return {
62
- ...documentResult,
25
+ data: entity,
63
26
  metadata: generateResult.metadata,
64
27
  };
65
28
  }