@loopstack/meeting-notes-example-workflow 0.20.6 → 0.20.7
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 +1 -1
- package/dist/meeting-notes-example.module.js +3 -3
- package/dist/meeting-notes-example.module.js.map +1 -1
- package/dist/meeting-notes.workflow.d.ts +3 -3
- package/dist/meeting-notes.workflow.d.ts.map +1 -1
- package/dist/meeting-notes.workflow.js +6 -6
- package/dist/meeting-notes.workflow.js.map +1 -1
- package/dist/meeting-notes.workflow.yaml +3 -4
- package/package.json +4 -4
- package/src/__tests__/meeting-notes.workflow.spec.ts +16 -18
- package/src/meeting-notes-example.module.ts +3 -3
- package/src/meeting-notes.workflow.ts +3 -3
- package/src/meeting-notes.workflow.yaml +3 -4
package/README.md
CHANGED
|
@@ -229,7 +229,7 @@ Use `aiGenerateDocument` to populate a structured document. Reference state valu
|
|
|
229
229
|
This workflow uses the following Loopstack modules:
|
|
230
230
|
|
|
231
231
|
- `@loopstack/core` - Core framework functionality
|
|
232
|
-
- `@loopstack/core
|
|
232
|
+
- `@loopstack/core` - Provides `CreateDocument` tool
|
|
233
233
|
- `@loopstack/ai-module` - Provides `AiGenerateDocument` tool
|
|
234
234
|
|
|
235
235
|
## About
|
|
@@ -8,8 +8,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.MeetingNotesExampleModule = void 0;
|
|
10
10
|
const common_1 = require("@nestjs/common");
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const claude_module_1 = require("@loopstack/claude-module");
|
|
12
|
+
const core_1 = require("@loopstack/core");
|
|
13
13
|
const meeting_notes_document_1 = require("./documents/meeting-notes-document");
|
|
14
14
|
const optimized_notes_document_1 = require("./documents/optimized-notes-document");
|
|
15
15
|
const meeting_notes_workflow_1 = require("./meeting-notes.workflow");
|
|
@@ -18,7 +18,7 @@ let MeetingNotesExampleModule = class MeetingNotesExampleModule {
|
|
|
18
18
|
exports.MeetingNotesExampleModule = MeetingNotesExampleModule;
|
|
19
19
|
exports.MeetingNotesExampleModule = MeetingNotesExampleModule = __decorate([
|
|
20
20
|
(0, common_1.Module)({
|
|
21
|
-
imports: [
|
|
21
|
+
imports: [core_1.LoopCoreModule, claude_module_1.ClaudeModule],
|
|
22
22
|
providers: [meeting_notes_workflow_1.MeetingNotesWorkflow, meeting_notes_document_1.MeetingNotesDocument, optimized_notes_document_1.OptimizedNotesDocument],
|
|
23
23
|
exports: [meeting_notes_workflow_1.MeetingNotesWorkflow],
|
|
24
24
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meeting-notes-example.module.js","sourceRoot":"","sources":["../src/meeting-notes-example.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"meeting-notes-example.module.js","sourceRoot":"","sources":["../src/meeting-notes-example.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,4DAAwD;AACxD,0CAAiD;AACjD,+EAA0E;AAC1E,mFAA8E;AAC9E,qEAAgE;AAOzD,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;CAAG,CAAA;AAA5B,8DAAyB;oCAAzB,yBAAyB;IALrC,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,qBAAc,EAAE,4BAAY,CAAC;QACvC,SAAS,EAAE,CAAC,6CAAoB,EAAE,6CAAoB,EAAE,iDAAsB,CAAC;QAC/E,OAAO,EAAE,CAAC,6CAAoB,CAAC;KAChC,CAAC;GACW,yBAAyB,CAAG"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
3
|
-
import { CreateDocument } from '@loopstack/core
|
|
2
|
+
import { ClaudeGenerateDocument } from '@loopstack/claude-module';
|
|
3
|
+
import { CreateDocument } from '@loopstack/core';
|
|
4
4
|
import { MeetingNotesDocument, MeetingNotesDocumentSchema } from './documents/meeting-notes-document';
|
|
5
5
|
import { OptimizedMeetingNotesDocumentSchema, OptimizedNotesDocument } from './documents/optimized-notes-document';
|
|
6
6
|
export declare class MeetingNotesWorkflow {
|
|
7
|
-
|
|
7
|
+
claudeGenerateDocument: ClaudeGenerateDocument;
|
|
8
8
|
createDocument: CreateDocument;
|
|
9
9
|
meetingNotesDocument: MeetingNotesDocument;
|
|
10
10
|
optimizedNotesDocument: OptimizedNotesDocument;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meeting-notes.workflow.d.ts","sourceRoot":"","sources":["../src/meeting-notes.workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"meeting-notes.workflow.d.ts","sourceRoot":"","sources":["../src/meeting-notes.workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AACtG,OAAO,EAAE,mCAAmC,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAEnH,qBAGa,oBAAoB;IACjB,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,cAAc,EAAE,cAAc,CAAC;IAC3B,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,sBAAsB,EAAE,sBAAsB,CAAC;IAWjE,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAQF,KAAK,EAAE;QACL,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;QAC1D,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mCAAmC,CAAC,CAAC;KACtE,CAAC;IAGF,OAAO,EAAE,GAAG,CAAC;CACd"}
|
|
@@ -11,13 +11,13 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.MeetingNotesWorkflow = void 0;
|
|
13
13
|
const zod_1 = require("zod");
|
|
14
|
-
const
|
|
14
|
+
const claude_module_1 = require("@loopstack/claude-module");
|
|
15
15
|
const common_1 = require("@loopstack/common");
|
|
16
|
-
const
|
|
16
|
+
const core_1 = require("@loopstack/core");
|
|
17
17
|
const meeting_notes_document_1 = require("./documents/meeting-notes-document");
|
|
18
18
|
const optimized_notes_document_1 = require("./documents/optimized-notes-document");
|
|
19
19
|
let MeetingNotesWorkflow = class MeetingNotesWorkflow {
|
|
20
|
-
|
|
20
|
+
claudeGenerateDocument;
|
|
21
21
|
createDocument;
|
|
22
22
|
meetingNotesDocument;
|
|
23
23
|
optimizedNotesDocument;
|
|
@@ -28,11 +28,11 @@ let MeetingNotesWorkflow = class MeetingNotesWorkflow {
|
|
|
28
28
|
exports.MeetingNotesWorkflow = MeetingNotesWorkflow;
|
|
29
29
|
__decorate([
|
|
30
30
|
(0, common_1.InjectTool)(),
|
|
31
|
-
__metadata("design:type",
|
|
32
|
-
], MeetingNotesWorkflow.prototype, "
|
|
31
|
+
__metadata("design:type", claude_module_1.ClaudeGenerateDocument)
|
|
32
|
+
], MeetingNotesWorkflow.prototype, "claudeGenerateDocument", void 0);
|
|
33
33
|
__decorate([
|
|
34
34
|
(0, common_1.InjectTool)(),
|
|
35
|
-
__metadata("design:type",
|
|
35
|
+
__metadata("design:type", core_1.CreateDocument)
|
|
36
36
|
], MeetingNotesWorkflow.prototype, "createDocument", void 0);
|
|
37
37
|
__decorate([
|
|
38
38
|
(0, common_1.InjectDocument)(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meeting-notes.workflow.js","sourceRoot":"","sources":["../src/meeting-notes.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"meeting-notes.workflow.js","sourceRoot":"","sources":["../src/meeting-notes.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAwB;AACxB,4DAAkE;AAClE,8CAAgG;AAChG,0CAAiD;AACjD,+EAAsG;AACtG,mFAAmH;AAK5G,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACjB,sBAAsB,CAAyB;IAC/C,cAAc,CAAiB;IAC3B,oBAAoB,CAAuB;IAC3C,sBAAsB,CAAyB;IAWjE,IAAI,CAEF;IAQF,KAAK,CAGH;IAGF,OAAO,CAAM;CACd,CAAA;AAhCY,oDAAoB;AACjB;IAAb,IAAA,mBAAU,GAAE;8BAAyB,sCAAsB;oEAAC;AAC/C;IAAb,IAAA,mBAAU,GAAE;8BAAiB,qBAAc;4DAAC;AAC3B;IAAjB,IAAA,uBAAc,GAAE;8BAAuB,6CAAoB;kEAAC;AAC3C;IAAjB,IAAA,uBAAc,GAAE;8BAAyB,iDAAsB;oEAAC;AAWjE;IATC,IAAA,cAAK,EAAC;QACL,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;YACf,SAAS,EAAE,OAAC;iBACT,MAAM,EAAE;iBACR,OAAO,CACN,2IAA2I,CAC5I;SACJ,CAAC;KACH,CAAC;;kDAGA;AAQF;IANC,IAAA,cAAK,EAAC;QACL,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;YACf,YAAY,EAAE,mDAA0B,CAAC,QAAQ,EAAE;YACnD,cAAc,EAAE,8DAAmC,CAAC,QAAQ,EAAE;SAC/D,CAAC;KACH,CAAC;;mDAIA;AAGF;IADC,IAAA,gBAAO,GAAE;;qDACG;+BA/BF,oBAAoB;IAHhC,IAAA,iBAAQ,EAAC;QACR,UAAU,EAAE,SAAS,GAAG,8BAA8B;KACvD,CAAC;GACW,oBAAoB,CAgChC"}
|
|
@@ -46,11 +46,10 @@ transitions:
|
|
|
46
46
|
to: notes_optimized
|
|
47
47
|
call:
|
|
48
48
|
- id: prompt
|
|
49
|
-
tool:
|
|
49
|
+
tool: claudeGenerateDocument
|
|
50
50
|
args:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
model: gpt-4o
|
|
51
|
+
claude:
|
|
52
|
+
model: claude-sonnet-4-6
|
|
54
53
|
response:
|
|
55
54
|
id: final
|
|
56
55
|
document: optimizedNotesDocument
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"summary",
|
|
10
10
|
"workflow"
|
|
11
11
|
],
|
|
12
|
-
"version": "0.20.
|
|
12
|
+
"version": "0.20.7",
|
|
13
13
|
"license": "Apache-2.0",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Jakob Klippel",
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
"watch": "nest build --watch"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@loopstack/
|
|
34
|
-
"@loopstack/common": "^0.
|
|
35
|
-
"@loopstack/core
|
|
33
|
+
"@loopstack/claude-module": "^0.21.1",
|
|
34
|
+
"@loopstack/common": "^0.24.0",
|
|
35
|
+
"@loopstack/core": "^0.24.0",
|
|
36
36
|
"@nestjs/common": "^11.1.14",
|
|
37
37
|
"zod": "^4.3.6"
|
|
38
38
|
},
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { TestingModule } from '@nestjs/testing';
|
|
2
|
-
import {
|
|
2
|
+
import { ClaudeGenerateDocument, ClaudeModule } from '@loopstack/claude-module';
|
|
3
3
|
import { RunContext, generateObjectFingerprint, getBlockTools } from '@loopstack/common';
|
|
4
|
-
import { WorkflowProcessorService } from '@loopstack/core';
|
|
5
|
-
import { CoreUiModule, CreateDocument } from '@loopstack/core-ui-module';
|
|
4
|
+
import { CreateDocument, LoopCoreModule, WorkflowProcessorService } from '@loopstack/core';
|
|
6
5
|
import { ToolMock, createWorkflowTest } from '@loopstack/testing';
|
|
7
6
|
import { MeetingNotesDocument } from '../documents/meeting-notes-document';
|
|
8
7
|
import { OptimizedNotesDocument } from '../documents/optimized-notes-document';
|
|
@@ -26,11 +25,11 @@ describe('MeetingNotesWorkflow', () => {
|
|
|
26
25
|
beforeEach(async () => {
|
|
27
26
|
module = await createWorkflowTest()
|
|
28
27
|
.forWorkflow(MeetingNotesWorkflow)
|
|
29
|
-
.withImports(
|
|
28
|
+
.withImports(LoopCoreModule, ClaudeModule)
|
|
30
29
|
.withProvider(MeetingNotesDocument)
|
|
31
30
|
.withProvider(OptimizedNotesDocument)
|
|
32
31
|
.withToolOverride(CreateDocument)
|
|
33
|
-
.withToolOverride(
|
|
32
|
+
.withToolOverride(ClaudeGenerateDocument)
|
|
34
33
|
.compile();
|
|
35
34
|
|
|
36
35
|
workflow = module.get(MeetingNotesWorkflow);
|
|
@@ -47,7 +46,7 @@ describe('MeetingNotesWorkflow', () => {
|
|
|
47
46
|
it('should be defined with correct tools', () => {
|
|
48
47
|
expect(workflow).toBeDefined();
|
|
49
48
|
expect(getBlockTools(workflow)).toContain('createDocument');
|
|
50
|
-
expect(getBlockTools(workflow)).toContain('
|
|
49
|
+
expect(getBlockTools(workflow)).toContain('claudeGenerateDocument');
|
|
51
50
|
});
|
|
52
51
|
});
|
|
53
52
|
|
|
@@ -110,11 +109,11 @@ describe('MeetingNotesWorkflow', () => {
|
|
|
110
109
|
// Create module with existing workflow state
|
|
111
110
|
const moduleWithState = await createWorkflowTest()
|
|
112
111
|
.forWorkflow(MeetingNotesWorkflow)
|
|
113
|
-
.withImports(
|
|
112
|
+
.withImports(LoopCoreModule, ClaudeModule)
|
|
114
113
|
.withProvider(MeetingNotesDocument)
|
|
115
114
|
.withProvider(OptimizedNotesDocument)
|
|
116
115
|
.withToolOverride(CreateDocument)
|
|
117
|
-
.withToolOverride(
|
|
116
|
+
.withToolOverride(ClaudeGenerateDocument)
|
|
118
117
|
.withExistingWorkflow({
|
|
119
118
|
id: '123',
|
|
120
119
|
place: 'waiting_for_response',
|
|
@@ -128,12 +127,12 @@ describe('MeetingNotesWorkflow', () => {
|
|
|
128
127
|
const processorWithState = moduleWithState.get(WorkflowProcessorService);
|
|
129
128
|
|
|
130
129
|
const mockCreateDocumentWithState: ToolMock = moduleWithState.get(CreateDocument);
|
|
131
|
-
const
|
|
130
|
+
const mockClaudeGenerateDocumentWithState: ToolMock = moduleWithState.get(ClaudeGenerateDocument);
|
|
132
131
|
|
|
133
132
|
mockCreateDocumentWithState.execute.mockResolvedValue({
|
|
134
133
|
data: { content: mockUserEditedNotes },
|
|
135
134
|
});
|
|
136
|
-
|
|
135
|
+
mockClaudeGenerateDocumentWithState.execute.mockResolvedValue({
|
|
137
136
|
data: { content: mockOptimizedNotes },
|
|
138
137
|
});
|
|
139
138
|
|
|
@@ -165,13 +164,12 @@ describe('MeetingNotesWorkflow', () => {
|
|
|
165
164
|
expect.anything(),
|
|
166
165
|
);
|
|
167
166
|
|
|
168
|
-
// Should call
|
|
169
|
-
expect(
|
|
170
|
-
expect(
|
|
167
|
+
// Should call ClaudeGenerateDocument once
|
|
168
|
+
expect(mockClaudeGenerateDocumentWithState.execute).toHaveBeenCalledTimes(1);
|
|
169
|
+
expect(mockClaudeGenerateDocumentWithState.execute).toHaveBeenCalledWith(
|
|
171
170
|
expect.objectContaining({
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
model: 'gpt-4o',
|
|
171
|
+
claude: {
|
|
172
|
+
model: 'claude-sonnet-4-6',
|
|
175
173
|
},
|
|
176
174
|
}),
|
|
177
175
|
expect.anything(),
|
|
@@ -204,11 +202,11 @@ describe('MeetingNotesWorkflow', () => {
|
|
|
204
202
|
// Create module with existing workflow state after AI optimization
|
|
205
203
|
const moduleWithState = await createWorkflowTest()
|
|
206
204
|
.forWorkflow(MeetingNotesWorkflow)
|
|
207
|
-
.withImports(
|
|
205
|
+
.withImports(LoopCoreModule, ClaudeModule)
|
|
208
206
|
.withProvider(MeetingNotesDocument)
|
|
209
207
|
.withProvider(OptimizedNotesDocument)
|
|
210
208
|
.withToolOverride(CreateDocument)
|
|
211
|
-
.withToolOverride(
|
|
209
|
+
.withToolOverride(ClaudeGenerateDocument)
|
|
212
210
|
.withExistingWorkflow({
|
|
213
211
|
id: '123',
|
|
214
212
|
place: 'notes_optimized',
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Module } from '@nestjs/common';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { ClaudeModule } from '@loopstack/claude-module';
|
|
3
|
+
import { LoopCoreModule } from '@loopstack/core';
|
|
4
4
|
import { MeetingNotesDocument } from './documents/meeting-notes-document';
|
|
5
5
|
import { OptimizedNotesDocument } from './documents/optimized-notes-document';
|
|
6
6
|
import { MeetingNotesWorkflow } from './meeting-notes.workflow';
|
|
7
7
|
|
|
8
8
|
@Module({
|
|
9
|
-
imports: [
|
|
9
|
+
imports: [LoopCoreModule, ClaudeModule],
|
|
10
10
|
providers: [MeetingNotesWorkflow, MeetingNotesDocument, OptimizedNotesDocument],
|
|
11
11
|
exports: [MeetingNotesWorkflow],
|
|
12
12
|
})
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { ClaudeGenerateDocument } from '@loopstack/claude-module';
|
|
3
3
|
import { InjectDocument, InjectTool, Input, Runtime, State, Workflow } from '@loopstack/common';
|
|
4
|
-
import { CreateDocument } from '@loopstack/core
|
|
4
|
+
import { CreateDocument } from '@loopstack/core';
|
|
5
5
|
import { MeetingNotesDocument, MeetingNotesDocumentSchema } from './documents/meeting-notes-document';
|
|
6
6
|
import { OptimizedMeetingNotesDocumentSchema, OptimizedNotesDocument } from './documents/optimized-notes-document';
|
|
7
7
|
|
|
@@ -9,7 +9,7 @@ import { OptimizedMeetingNotesDocumentSchema, OptimizedNotesDocument } from './d
|
|
|
9
9
|
configFile: __dirname + '/meeting-notes.workflow.yaml',
|
|
10
10
|
})
|
|
11
11
|
export class MeetingNotesWorkflow {
|
|
12
|
-
@InjectTool()
|
|
12
|
+
@InjectTool() claudeGenerateDocument: ClaudeGenerateDocument;
|
|
13
13
|
@InjectTool() createDocument: CreateDocument;
|
|
14
14
|
@InjectDocument() meetingNotesDocument: MeetingNotesDocument;
|
|
15
15
|
@InjectDocument() optimizedNotesDocument: OptimizedNotesDocument;
|
|
@@ -46,11 +46,10 @@ transitions:
|
|
|
46
46
|
to: notes_optimized
|
|
47
47
|
call:
|
|
48
48
|
- id: prompt
|
|
49
|
-
tool:
|
|
49
|
+
tool: claudeGenerateDocument
|
|
50
50
|
args:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
model: gpt-4o
|
|
51
|
+
claude:
|
|
52
|
+
model: claude-sonnet-4-6
|
|
54
53
|
response:
|
|
55
54
|
id: final
|
|
56
55
|
document: optimizedNotesDocument
|