@loopstack/hitl 0.4.2 → 0.4.3
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 +5 -10
- package/dist/tools/ask-clarification.tool.d.ts.map +1 -1
- package/dist/tools/ask-clarification.tool.js +4 -7
- package/dist/tools/ask-clarification.tool.js.map +1 -1
- package/dist/tools/ask-for-approval.tool.d.ts.map +1 -1
- package/dist/tools/ask-for-approval.tool.js +4 -13
- package/dist/tools/ask-for-approval.tool.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -41,7 +41,7 @@ export class MyModule {}
|
|
|
41
41
|
|
|
42
42
|
```typescript
|
|
43
43
|
import { z } from 'zod';
|
|
44
|
-
import { BaseWorkflow, CallbackSchema,
|
|
44
|
+
import { BaseWorkflow, CallbackSchema, MessageDocument, Transition, Workflow } from '@loopstack/common';
|
|
45
45
|
import { AskUserWorkflow } from '@loopstack/hitl';
|
|
46
46
|
|
|
47
47
|
const AnswerCallback = CallbackSchema.extend({
|
|
@@ -56,14 +56,9 @@ export class MyWorkflow extends BaseWorkflow {
|
|
|
56
56
|
|
|
57
57
|
@Transition({ to: 'waiting' })
|
|
58
58
|
async start(state: Record<string, unknown>): Promise<Record<string, unknown>> {
|
|
59
|
-
|
|
59
|
+
await this.askUser.run(
|
|
60
60
|
{ question: 'What is your name?' },
|
|
61
|
-
{ callback: { transition: 'answerReceived' } },
|
|
62
|
-
);
|
|
63
|
-
await this.documentStore.save(
|
|
64
|
-
LinkDocument,
|
|
65
|
-
{ label: 'Waiting for answer...', workflowId: result.workflowId, embed: true, expanded: true },
|
|
66
|
-
{ id: `link_${result.workflowId}` },
|
|
61
|
+
{ callback: { transition: 'answerReceived' }, show: 'inline', label: 'Waiting for answer...' },
|
|
67
62
|
);
|
|
68
63
|
return state;
|
|
69
64
|
}
|
|
@@ -72,7 +67,7 @@ export class MyWorkflow extends BaseWorkflow {
|
|
|
72
67
|
async answerReceived(state: Record<string, unknown>, payload: z.infer<typeof AnswerCallback>): Promise<unknown> {
|
|
73
68
|
await this.documentStore.save(MessageDocument, {
|
|
74
69
|
role: 'assistant',
|
|
75
|
-
|
|
70
|
+
text: `Hello, ${payload.data.answer}!`,
|
|
76
71
|
});
|
|
77
72
|
return {};
|
|
78
73
|
}
|
|
@@ -228,7 +223,7 @@ Present markdown content to the user for approval. Pauses the agent until the us
|
|
|
228
223
|
|
|
229
224
|
## Dependencies
|
|
230
225
|
|
|
231
|
-
- `@loopstack/common` — `BaseWorkflow`, `BaseTool`, decorators
|
|
226
|
+
- `@loopstack/common` — `BaseWorkflow`, `BaseTool`, decorators
|
|
232
227
|
- `@loopstack/core` — `LoopCoreModule`
|
|
233
228
|
|
|
234
229
|
## Related
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-clarification.tool.d.ts","sourceRoot":"","sources":["../../src/tools/ask-clarification.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"ask-clarification.tool.d.ts","sourceRoot":"","sources":["../../src/tools/ask-clarification.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAQ,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAE7E,QAAA,MAAM,2BAA2B;;;;;;;;;kBAyBtB,CAAC;AAEZ,KAAK,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEzE,MAAM,MAAM,sBAAsB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/F,qBAQa,oBAAqB,SAAQ,QAAQ,CAAC,qBAAqB,EAAE,MAAM,EAAE,sBAAsB,CAAC;IAC3F,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;cAI7C,MAAM,CACpB,IAAI,EAAE,qBAAqB,EAC3B,GAAG,EAAE,UAAU,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAiBxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;CAI7F"}
|
|
@@ -8,7 +8,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
import { z } from 'zod';
|
|
11
|
-
import { BaseTool,
|
|
11
|
+
import { BaseTool, Tool } from '@loopstack/common';
|
|
12
12
|
import { AskUserWorkflow } from '../workflows/ask-user/ask-user.workflow.js';
|
|
13
13
|
const AskClarificationInputSchema = z
|
|
14
14
|
.object({
|
|
@@ -44,17 +44,14 @@ let AskClarificationTool = class AskClarificationTool extends BaseTool {
|
|
|
44
44
|
mode: args.mode,
|
|
45
45
|
options: args.options,
|
|
46
46
|
allowCustomAnswer: args.allowCustomAnswer,
|
|
47
|
-
}, { callback: options?.callback });
|
|
48
|
-
const workflowId = result.workflowId;
|
|
49
|
-
await this.documentStore.save(LinkDocument, { status: 'pending', label: 'Waiting for user answer...', workflowId, embed: true, expanded: true }, { id: `ask_clarification_link_${workflowId}` });
|
|
47
|
+
}, { callback: options?.callback, show: 'inline', label: 'Waiting for user answer...' });
|
|
50
48
|
return {
|
|
51
|
-
data: { workflowId },
|
|
52
|
-
pending: { workflowId },
|
|
49
|
+
data: { workflowId: result.workflowId },
|
|
50
|
+
pending: { workflowId: result.workflowId },
|
|
53
51
|
};
|
|
54
52
|
}
|
|
55
53
|
async complete(result) {
|
|
56
54
|
const data = result;
|
|
57
|
-
await this.documentStore.save(LinkDocument, { status: 'success', label: 'User answered', workflowId: data.workflowId, embed: true, expanded: false }, { id: `ask_clarification_link_${data.workflowId}` });
|
|
58
55
|
return { data: data.data?.answer ?? result };
|
|
59
56
|
}
|
|
60
57
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-clarification.tool.js","sourceRoot":"","sources":["../../src/tools/ask-clarification.tool.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"ask-clarification.tool.js","sourceRoot":"","sources":["../../src/tools/ask-clarification.tool.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAA+B,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAE7E,MAAM,2BAA2B,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,CAAC,kGAAkG,CAAC;IAC/G,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;SACpC,QAAQ,EAAE;SACV,QAAQ,CACP,2EAA2E;QACzE,+DAA+D;QAC/D,mCAAmC,CACtC;IACH,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,8EAA8E,CAAC;IAC3F,iBAAiB,EAAE,CAAC;SACjB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,4EAA4E;QAC1E,0DAA0D,CAC7D;CACJ,CAAC;KACD,MAAM,EAAE,CAAC;AAcL,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,QAA+D;IAC1E;IAA7B,YAA6B,eAAgC;QAC3D,KAAK,EAAE,CAAC;QADmB,oBAAe,GAAf,eAAe,CAAiB;IAE7D,CAAC;IAES,KAAK,CAAC,MAAM,CACpB,IAA2B,EAC3B,GAAe,EACf,OAAyB;QAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAC3C;YACE,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,EACD,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,4BAA4B,EAAE,CACrF,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;YACvC,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;SAC3C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAA+B;QAC5C,MAAM,IAAI,GAAG,MAAwC,CAAC;QACtD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,MAAM,EAAE,CAAC;IAC/C,CAAC;CACF,CAAA;AA9BY,oBAAoB;IARhC,IAAI,CAAC;QACJ,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,mEAAmE;YACnE,gFAAgF;YAChF,8DAA8D;QAChE,MAAM,EAAE,2BAA2B;KACpC,CAAC;qCAE8C,eAAe;GADlD,oBAAoB,CA8BhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-for-approval.tool.d.ts","sourceRoot":"","sources":["../../src/tools/ask-for-approval.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"ask-for-approval.tool.d.ts","sourceRoot":"","sources":["../../src/tools/ask-for-approval.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAQ,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AAEzF,QAAA,MAAM,yBAAyB;;kBAIpB,CAAC;AAEZ,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAErE,MAAM,MAAM,oBAAoB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,CAAC;AAE/G,qBAQa,kBAAmB,SAAQ,QAAQ,CAAC,mBAAmB,EAAE,MAAM,EAAE,oBAAoB,CAAC;IACrF,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAAnB,mBAAmB,EAAE,mBAAmB;cAIrD,MAAM,CACpB,IAAI,EAAE,mBAAmB,EACzB,GAAG,EAAE,UAAU,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAYtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;CAK3F"}
|
|
@@ -8,7 +8,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
import { z } from 'zod';
|
|
11
|
-
import { BaseTool,
|
|
11
|
+
import { BaseTool, Tool } from '@loopstack/common';
|
|
12
12
|
import { ConfirmUserWorkflow } from '../workflows/confirm-user/confirm-user.workflow.js';
|
|
13
13
|
const AskForApprovalInputSchema = z
|
|
14
14
|
.object({
|
|
@@ -22,24 +22,15 @@ let AskForApprovalTool = class AskForApprovalTool extends BaseTool {
|
|
|
22
22
|
this.confirmUserWorkflow = confirmUserWorkflow;
|
|
23
23
|
}
|
|
24
24
|
async handle(args, ctx, options) {
|
|
25
|
-
const result = await this.confirmUserWorkflow.run({ markdown: args.concept }, { callback: options?.callback });
|
|
26
|
-
const workflowId = result.workflowId;
|
|
27
|
-
await this.documentStore.save(LinkDocument, { status: 'pending', label: 'Waiting for approval...', workflowId, embed: true, expanded: true }, { id: `ask_for_approval_link_${workflowId}` });
|
|
25
|
+
const result = await this.confirmUserWorkflow.run({ markdown: args.concept }, { callback: options?.callback, show: 'inline', label: 'Waiting for approval...' });
|
|
28
26
|
return {
|
|
29
|
-
data: { workflowId },
|
|
30
|
-
pending: { workflowId },
|
|
27
|
+
data: { workflowId: result.workflowId },
|
|
28
|
+
pending: { workflowId: result.workflowId },
|
|
31
29
|
};
|
|
32
30
|
}
|
|
33
31
|
async complete(result) {
|
|
34
32
|
const data = result;
|
|
35
33
|
const approved = data.data?.confirmed ?? false;
|
|
36
|
-
await this.documentStore.save(LinkDocument, {
|
|
37
|
-
status: approved ? 'success' : 'failure',
|
|
38
|
-
label: approved ? 'Concept approved' : 'Concept denied',
|
|
39
|
-
workflowId: data.workflowId,
|
|
40
|
-
embed: true,
|
|
41
|
-
expanded: false,
|
|
42
|
-
}, { id: `ask_for_approval_link_${data.workflowId}` });
|
|
43
34
|
return { data: approved ? { concept: data.data?.markdown } : { denied: true } };
|
|
44
35
|
}
|
|
45
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-for-approval.tool.js","sourceRoot":"","sources":["../../src/tools/ask-for-approval.tool.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"ask-for-approval.tool.js","sourceRoot":"","sources":["../../src/tools/ask-for-approval.tool.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAA+B,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AAEzF,MAAM,yBAAyB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;CACrG,CAAC;KACD,MAAM,EAAE,CAAC;AAcL,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,QAA2D;IACpE;IAA7B,YAA6B,mBAAwC;QACnE,KAAK,EAAE,CAAC;QADmB,wBAAmB,GAAnB,mBAAmB,CAAqB;IAErE,CAAC;IAES,KAAK,CAAC,MAAM,CACpB,IAAyB,EACzB,GAAe,EACf,OAAyB;QAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAC/C,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,EAC1B,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAClF,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;YACvC,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;SAC3C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAA+B;QAC5C,MAAM,IAAI,GAAG,MAA8D,CAAC;QAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,KAAK,CAAC;QAC/C,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;IAClF,CAAC;CACF,CAAA;AA1BY,kBAAkB;IAR9B,IAAI,CAAC;QACJ,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,iGAAiG;YACjG,oFAAoF;YACpF,8DAA8D;QAChE,MAAM,EAAE,yBAAyB;KAClC,CAAC;qCAEkD,mBAAmB;GAD1D,kBAAkB,CA0B9B"}
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"workflow",
|
|
10
10
|
"user-input"
|
|
11
11
|
],
|
|
12
|
-
"version": "0.4.
|
|
12
|
+
"version": "0.4.3",
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Jakob Klippel",
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"watch": "nest build --watch"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@loopstack/common": "^0.
|
|
36
|
-
"@loopstack/core": "^0.
|
|
35
|
+
"@loopstack/common": "^0.34.0",
|
|
36
|
+
"@loopstack/core": "^0.34.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@nestjs/common": "^11.1.19",
|