@loopstack/hitl 0.3.1 → 0.4.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/README.md +6 -4
- package/dist/documents/ask-user-confirm-document.js +1 -1
- package/dist/documents/ask-user-confirm-document.js.map +1 -1
- package/dist/documents/ask-user-confirm-document.yaml +3 -6
- package/dist/documents/ask-user-document.js +1 -1
- package/dist/documents/ask-user-document.js.map +1 -1
- package/dist/documents/ask-user-document.yaml +3 -6
- package/dist/documents/ask-user-options-document.js +1 -1
- package/dist/documents/ask-user-options-document.js.map +1 -1
- package/dist/documents/ask-user-options-document.yaml +3 -6
- package/dist/documents/confirm-user-document.js +1 -1
- package/dist/documents/confirm-user-document.js.map +1 -1
- package/dist/documents/confirm-user-document.yaml +13 -16
- package/dist/tools/ask-clarification.tool.d.ts +10 -4
- package/dist/tools/ask-clarification.tool.d.ts.map +1 -1
- package/dist/tools/ask-clarification.tool.js +17 -17
- package/dist/tools/ask-clarification.tool.js.map +1 -1
- package/dist/tools/ask-for-approval.tool.d.ts +14 -4
- package/dist/tools/ask-for-approval.tool.d.ts.map +1 -1
- package/dist/tools/ask-for-approval.tool.js +16 -16
- package/dist/tools/ask-for-approval.tool.js.map +1 -1
- package/dist/workflows/ask-user/ask-user.workflow.d.ts +21 -6
- package/dist/workflows/ask-user/ask-user.workflow.d.ts.map +1 -1
- package/dist/workflows/ask-user/ask-user.workflow.js +46 -38
- package/dist/workflows/ask-user/ask-user.workflow.js.map +1 -1
- package/dist/workflows/confirm-user/confirm-user.workflow.d.ts +11 -7
- package/dist/workflows/confirm-user/confirm-user.workflow.d.ts.map +1 -1
- package/dist/workflows/confirm-user/confirm-user.workflow.js +17 -16
- package/dist/workflows/confirm-user/confirm-user.workflow.js.map +1 -1
- package/package.json +15 -10
- package/dist/workflows/ask-user/ask-user.ui.yaml +0 -6
- package/dist/workflows/confirm-user/confirm-user.ui.yaml +0 -5
package/README.md
CHANGED
|
@@ -35,15 +35,17 @@ export class AppModule {}
|
|
|
35
35
|
|
|
36
36
|
### Asking a text question as a sub-workflow
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
Inject `AskUserWorkflow` via the constructor and launch it from a parent workflow. The call resolves with the user's answer once they respond in the UI:
|
|
39
39
|
|
|
40
40
|
```ts
|
|
41
|
-
import { BaseWorkflow,
|
|
41
|
+
import { BaseWorkflow, Transition, Workflow } from '@loopstack/common';
|
|
42
42
|
import { AskUserWorkflow } from '@loopstack/hitl';
|
|
43
43
|
|
|
44
|
-
@Workflow({
|
|
44
|
+
@Workflow({ widget: __dirname + '/my.ui.yaml' })
|
|
45
45
|
export class MyWorkflow extends BaseWorkflow {
|
|
46
|
-
|
|
46
|
+
constructor(private readonly askUser: AskUserWorkflow) {
|
|
47
|
+
super();
|
|
48
|
+
}
|
|
47
49
|
|
|
48
50
|
@Transition({ from: 'ready', to: 'done' })
|
|
49
51
|
async collectName() {
|
|
@@ -18,7 +18,7 @@ let AskUserConfirmDocument = class AskUserConfirmDocument {
|
|
|
18
18
|
};
|
|
19
19
|
AskUserConfirmDocument = __decorate([
|
|
20
20
|
Document({
|
|
21
|
-
|
|
21
|
+
widget: import.meta.dirname + '/ask-user-confirm-document.yaml',
|
|
22
22
|
schema: AskUserConfirmDocumentSchema,
|
|
23
23
|
})
|
|
24
24
|
], AskUserConfirmDocument);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-confirm-document.js","sourceRoot":"","sources":["../../src/documents/ask-user-confirm-document.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC;KAC1C,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,MAAM,EAAE,CAAC;AAQL,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,QAAQ,CAAS;IACjB,MAAM,CAAU;CACjB,CAAA;AAHY,sBAAsB;IAJlC,QAAQ,CAAC;QACR,
|
|
1
|
+
{"version":3,"file":"ask-user-confirm-document.js","sourceRoot":"","sources":["../../src/documents/ask-user-confirm-document.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC;KAC1C,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,MAAM,EAAE,CAAC;AAQL,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,QAAQ,CAAS;IACjB,MAAM,CAAU;CACjB,CAAA;AAHY,sBAAsB;IAJlC,QAAQ,CAAC;QACR,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,iCAAiC;QAC/D,MAAM,EAAE,4BAA4B;KACrC,CAAC;GACW,sBAAsB,CAGlC"}
|
|
@@ -18,7 +18,7 @@ let AskUserDocument = class AskUserDocument {
|
|
|
18
18
|
};
|
|
19
19
|
AskUserDocument = __decorate([
|
|
20
20
|
Document({
|
|
21
|
-
|
|
21
|
+
widget: import.meta.dirname + '/ask-user-document.yaml',
|
|
22
22
|
schema: AskUserDocumentSchema,
|
|
23
23
|
})
|
|
24
24
|
], AskUserDocument);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-document.js","sourceRoot":"","sources":["../../src/documents/ask-user-document.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,MAAM,EAAE,CAAC;AAQL,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,QAAQ,CAAS;IACjB,MAAM,CAAU;CACjB,CAAA;AAHY,eAAe;IAJ3B,QAAQ,CAAC;QACR,
|
|
1
|
+
{"version":3,"file":"ask-user-document.js","sourceRoot":"","sources":["../../src/documents/ask-user-document.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,MAAM,EAAE,CAAC;AAQL,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,QAAQ,CAAS;IACjB,MAAM,CAAU;CACjB,CAAA;AAHY,eAAe;IAJ3B,QAAQ,CAAC;QACR,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,yBAAyB;QACvD,MAAM,EAAE,qBAAqB;KAC9B,CAAC;GACW,eAAe,CAG3B"}
|
|
@@ -22,7 +22,7 @@ let AskUserOptionsDocument = class AskUserOptionsDocument {
|
|
|
22
22
|
};
|
|
23
23
|
AskUserOptionsDocument = __decorate([
|
|
24
24
|
Document({
|
|
25
|
-
|
|
25
|
+
widget: import.meta.dirname + '/ask-user-options-document.yaml',
|
|
26
26
|
schema: AskUserOptionsDocumentSchema,
|
|
27
27
|
})
|
|
28
28
|
], AskUserOptionsDocument);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-options-document.js","sourceRoot":"","sources":["../../src/documents/ask-user-options-document.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC;KAC1C,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,MAAM,EAAE,CAAC;AAQL,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,QAAQ,CAAS;IACjB,OAAO,CAAW;IAClB,iBAAiB,CAAW;IAC5B,MAAM,CAAU;CACjB,CAAA;AALY,sBAAsB;IAJlC,QAAQ,CAAC;QACR,
|
|
1
|
+
{"version":3,"file":"ask-user-options-document.js","sourceRoot":"","sources":["../../src/documents/ask-user-options-document.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC;KAC1C,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,MAAM,EAAE,CAAC;AAQL,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,QAAQ,CAAS;IACjB,OAAO,CAAW;IAClB,iBAAiB,CAAW;IAC5B,MAAM,CAAU;CACjB,CAAA;AALY,sBAAsB;IAJlC,QAAQ,CAAC;QACR,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,iCAAiC;QAC/D,MAAM,EAAE,4BAA4B;KACrC,CAAC;GACW,sBAAsB,CAKlC"}
|
|
@@ -16,7 +16,7 @@ let ConfirmUserDocument = class ConfirmUserDocument {
|
|
|
16
16
|
};
|
|
17
17
|
ConfirmUserDocument = __decorate([
|
|
18
18
|
Document({
|
|
19
|
-
|
|
19
|
+
widget: import.meta.dirname + '/confirm-user-document.yaml',
|
|
20
20
|
schema: ConfirmUserDocumentSchema,
|
|
21
21
|
})
|
|
22
22
|
], ConfirmUserDocument);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-user-document.js","sourceRoot":"","sources":["../../src/documents/confirm-user-document.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC;KACD,MAAM,EAAE,CAAC;AAQL,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,QAAQ,CAAS;CAClB,CAAA;AAFY,mBAAmB;IAJ/B,QAAQ,CAAC;QACR,
|
|
1
|
+
{"version":3,"file":"confirm-user-document.js","sourceRoot":"","sources":["../../src/documents/confirm-user-document.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC;KACD,MAAM,EAAE,CAAC;AAQL,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,QAAQ,CAAS;CAClB,CAAA;AAFY,mBAAmB;IAJ/B,QAAQ,CAAC;QACR,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,6BAA6B;QAC3D,MAAM,EAAE,yBAAyB;KAClC,CAAC;GACW,mBAAmB,CAE/B"}
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
- type: button
|
|
15
|
-
transition: userConfirmed
|
|
16
|
-
label: 'Confirm'
|
|
1
|
+
widget: form
|
|
2
|
+
options:
|
|
3
|
+
properties:
|
|
4
|
+
markdown:
|
|
5
|
+
widget: markdown-view
|
|
6
|
+
actions:
|
|
7
|
+
- type: button
|
|
8
|
+
transition: userDenied
|
|
9
|
+
label: 'Deny'
|
|
10
|
+
variant: outline
|
|
11
|
+
- type: button
|
|
12
|
+
transition: userConfirmed
|
|
13
|
+
label: 'Confirm'
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { BaseTool, ToolCallOptions, ToolResult } from '@loopstack/common';
|
|
3
|
+
import type { LoopstackContext } from '@loopstack/common';
|
|
4
|
+
import { AskUserWorkflow } from '../workflows/ask-user/ask-user.workflow.js';
|
|
3
5
|
declare const AskClarificationInputSchema: z.ZodObject<{
|
|
4
6
|
question: z.ZodString;
|
|
5
7
|
mode: z.ZodOptional<z.ZodEnum<{
|
|
@@ -11,10 +13,14 @@ declare const AskClarificationInputSchema: z.ZodObject<{
|
|
|
11
13
|
allowCustomAnswer: z.ZodOptional<z.ZodBoolean>;
|
|
12
14
|
}, z.core.$strict>;
|
|
13
15
|
type AskClarificationInput = z.infer<typeof AskClarificationInputSchema>;
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
export type AskClarificationResult = {
|
|
17
|
+
workflowId: string;
|
|
18
|
+
} | string | Record<string, unknown>;
|
|
19
|
+
export declare class AskClarificationTool extends BaseTool<AskClarificationInput, object, AskClarificationResult> {
|
|
20
|
+
private readonly askUserWorkflow;
|
|
21
|
+
constructor(askUserWorkflow: AskUserWorkflow);
|
|
22
|
+
protected handle(args: AskClarificationInput, ctx: LoopstackContext, options?: ToolCallOptions): Promise<ToolResult<AskClarificationResult>>;
|
|
23
|
+
complete(result: Record<string, unknown>): Promise<ToolResult<AskClarificationResult>>;
|
|
18
24
|
}
|
|
19
25
|
export {};
|
|
20
26
|
//# sourceMappingURL=ask-clarification.tool.d.ts.map
|
|
@@ -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,EAAsB,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,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,gBAAgB,EACrB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAyBxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;CAW7F"}
|
|
@@ -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, LinkDocument, Tool } from '@loopstack/common';
|
|
12
12
|
import { AskUserWorkflow } from '../workflows/ask-user/ask-user.workflow.js';
|
|
13
13
|
const AskClarificationInputSchema = z
|
|
14
14
|
.object({
|
|
@@ -33,16 +33,20 @@ const AskClarificationInputSchema = z
|
|
|
33
33
|
})
|
|
34
34
|
.strict();
|
|
35
35
|
let AskClarificationTool = class AskClarificationTool extends BaseTool {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
askUserWorkflow;
|
|
37
|
+
constructor(askUserWorkflow) {
|
|
38
|
+
super();
|
|
39
|
+
this.askUserWorkflow = askUserWorkflow;
|
|
40
|
+
}
|
|
41
|
+
async handle(args, ctx, options) {
|
|
42
|
+
const result = await this.askUserWorkflow.run({
|
|
39
43
|
question: args.question,
|
|
40
44
|
mode: args.mode,
|
|
41
45
|
options: args.options,
|
|
42
46
|
allowCustomAnswer: args.allowCustomAnswer,
|
|
43
|
-
}, {
|
|
47
|
+
}, { callback: options?.callback });
|
|
44
48
|
const workflowId = result.workflowId;
|
|
45
|
-
await this.
|
|
49
|
+
await this.documentStore.save(LinkDocument, { status: 'pending', label: 'Waiting for user answer...', workflowId, embed: true, expanded: true }, { id: `ask_clarification_link_${workflowId}` });
|
|
46
50
|
return {
|
|
47
51
|
data: { workflowId },
|
|
48
52
|
pending: { workflowId },
|
|
@@ -50,23 +54,19 @@ let AskClarificationTool = class AskClarificationTool extends BaseTool {
|
|
|
50
54
|
}
|
|
51
55
|
async complete(result) {
|
|
52
56
|
const data = result;
|
|
53
|
-
await this.
|
|
57
|
+
await this.documentStore.save(LinkDocument, { status: 'success', label: 'User answered', workflowId: data.workflowId, embed: true, expanded: false }, { id: `ask_clarification_link_${data.workflowId}` });
|
|
54
58
|
return { data: data.data?.answer ?? result };
|
|
55
59
|
}
|
|
56
60
|
};
|
|
57
|
-
__decorate([
|
|
58
|
-
InjectWorkflow(),
|
|
59
|
-
__metadata("design:type", AskUserWorkflow)
|
|
60
|
-
], AskClarificationTool.prototype, "askUser", void 0);
|
|
61
61
|
AskClarificationTool = __decorate([
|
|
62
62
|
Tool({
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
},
|
|
63
|
+
name: 'ask_clarification',
|
|
64
|
+
description: 'Ask the user a clarification question and wait for their answer. ' +
|
|
65
|
+
'Use this when you need more information from the user before you can proceed. ' +
|
|
66
|
+
'IMPORTANT: This must be the only tool call in your response.',
|
|
68
67
|
schema: AskClarificationInputSchema,
|
|
69
|
-
})
|
|
68
|
+
}),
|
|
69
|
+
__metadata("design:paramtypes", [AskUserWorkflow])
|
|
70
70
|
], AskClarificationTool);
|
|
71
71
|
export { AskClarificationTool };
|
|
72
72
|
//# sourceMappingURL=ask-clarification.tool.js.map
|
|
@@ -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,YAAY,EAAE,IAAI,EAA+B,MAAM,mBAAmB,CAAC;AAE9F,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,GAAqB,EACrB,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,CAChC,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAErC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAC3B,YAAY,EACZ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,4BAA4B,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EACnG,EAAE,EAAE,EAAE,0BAA0B,UAAU,EAAE,EAAE,CAC/C,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,EAAE,UAAU,EAAE;YACpB,OAAO,EAAE,EAAE,UAAU,EAAE;SACxB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAA+B;QAC5C,MAAM,IAAI,GAAG,MAA6D,CAAC;QAE3E,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAC3B,YAAY,EACZ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,CAAC,UAAW,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EACzG,EAAE,EAAE,EAAE,0BAA0B,IAAI,CAAC,UAAU,EAAE,EAAE,CACpD,CAAC;QAEF,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,MAAM,EAAE,CAAC;IAC/C,CAAC;CACF,CAAA;AA7CY,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,CA6ChC"}
|
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { BaseTool, ToolCallOptions, ToolResult } from '@loopstack/common';
|
|
3
|
+
import type { LoopstackContext } from '@loopstack/common';
|
|
4
|
+
import { ConfirmUserWorkflow } from '../workflows/confirm-user/confirm-user.workflow.js';
|
|
3
5
|
declare const AskForApprovalInputSchema: z.ZodObject<{
|
|
4
6
|
concept: z.ZodString;
|
|
5
7
|
}, z.core.$strict>;
|
|
6
8
|
type AskForApprovalInput = z.infer<typeof AskForApprovalInputSchema>;
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
export type AskForApprovalResult = {
|
|
10
|
+
workflowId: string;
|
|
11
|
+
} | {
|
|
12
|
+
concept: string | undefined;
|
|
13
|
+
} | {
|
|
14
|
+
denied: true;
|
|
15
|
+
};
|
|
16
|
+
export declare class AskForApprovalTool extends BaseTool<AskForApprovalInput, object, AskForApprovalResult> {
|
|
17
|
+
private readonly confirmUserWorkflow;
|
|
18
|
+
constructor(confirmUserWorkflow: ConfirmUserWorkflow);
|
|
19
|
+
protected handle(args: AskForApprovalInput, ctx: LoopstackContext, options?: ToolCallOptions): Promise<ToolResult<AskForApprovalResult>>;
|
|
20
|
+
complete(result: Record<string, unknown>): Promise<ToolResult<AskForApprovalResult>>;
|
|
11
21
|
}
|
|
12
22
|
export {};
|
|
13
23
|
//# sourceMappingURL=ask-for-approval.tool.d.ts.map
|
|
@@ -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,EAAsB,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,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,gBAAgB,EACrB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAiBtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;CAkB3F"}
|
|
@@ -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, LinkDocument, Tool } from '@loopstack/common';
|
|
12
12
|
import { ConfirmUserWorkflow } from '../workflows/confirm-user/confirm-user.workflow.js';
|
|
13
13
|
const AskForApprovalInputSchema = z
|
|
14
14
|
.object({
|
|
@@ -16,11 +16,15 @@ const AskForApprovalInputSchema = z
|
|
|
16
16
|
})
|
|
17
17
|
.strict();
|
|
18
18
|
let AskForApprovalTool = class AskForApprovalTool extends BaseTool {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
confirmUserWorkflow;
|
|
20
|
+
constructor(confirmUserWorkflow) {
|
|
21
|
+
super();
|
|
22
|
+
this.confirmUserWorkflow = confirmUserWorkflow;
|
|
23
|
+
}
|
|
24
|
+
async handle(args, ctx, options) {
|
|
25
|
+
const result = await this.confirmUserWorkflow.run({ markdown: args.concept }, { callback: options?.callback });
|
|
22
26
|
const workflowId = result.workflowId;
|
|
23
|
-
await this.
|
|
27
|
+
await this.documentStore.save(LinkDocument, { status: 'pending', label: 'Waiting for approval...', workflowId, embed: true, expanded: true }, { id: `ask_for_approval_link_${workflowId}` });
|
|
24
28
|
return {
|
|
25
29
|
data: { workflowId },
|
|
26
30
|
pending: { workflowId },
|
|
@@ -29,7 +33,7 @@ let AskForApprovalTool = class AskForApprovalTool extends BaseTool {
|
|
|
29
33
|
async complete(result) {
|
|
30
34
|
const data = result;
|
|
31
35
|
const approved = data.data?.confirmed ?? false;
|
|
32
|
-
await this.
|
|
36
|
+
await this.documentStore.save(LinkDocument, {
|
|
33
37
|
status: approved ? 'success' : 'failure',
|
|
34
38
|
label: approved ? 'Concept approved' : 'Concept denied',
|
|
35
39
|
workflowId: data.workflowId,
|
|
@@ -39,19 +43,15 @@ let AskForApprovalTool = class AskForApprovalTool extends BaseTool {
|
|
|
39
43
|
return { data: approved ? { concept: data.data?.markdown } : { denied: true } };
|
|
40
44
|
}
|
|
41
45
|
};
|
|
42
|
-
__decorate([
|
|
43
|
-
InjectWorkflow(),
|
|
44
|
-
__metadata("design:type", ConfirmUserWorkflow)
|
|
45
|
-
], AskForApprovalTool.prototype, "confirmUser", void 0);
|
|
46
46
|
AskForApprovalTool = __decorate([
|
|
47
47
|
Tool({
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
},
|
|
48
|
+
name: 'ask_for_approval',
|
|
49
|
+
description: 'Present the final concept to the user for approval. The concept is shown as formatted markdown ' +
|
|
50
|
+
'with a confirm button. Call this when the user indicates the concept is complete. ' +
|
|
51
|
+
'IMPORTANT: This must be the only tool call in your response.',
|
|
53
52
|
schema: AskForApprovalInputSchema,
|
|
54
|
-
})
|
|
53
|
+
}),
|
|
54
|
+
__metadata("design:paramtypes", [ConfirmUserWorkflow])
|
|
55
55
|
], AskForApprovalTool);
|
|
56
56
|
export { AskForApprovalTool };
|
|
57
57
|
//# sourceMappingURL=ask-for-approval.tool.js.map
|
|
@@ -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,YAAY,EAAE,IAAI,EAA+B,MAAM,mBAAmB,CAAC;AAE9F,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,GAAqB,EACrB,OAAyB;QAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE/G,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAErC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAC3B,YAAY,EACZ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAChG,EAAE,EAAE,EAAE,yBAAyB,UAAU,EAAE,EAAE,CAC9C,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,EAAE,UAAU,EAAE;YACpB,OAAO,EAAE,EAAE,UAAU,EAAE;SACxB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAA+B;QAC5C,MAAM,IAAI,GAAG,MAAmF,CAAC;QACjG,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,KAAK,CAAC;QAE/C,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAC3B,YAAY,EACZ;YACE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACxC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB;YACvD,UAAU,EAAE,IAAI,CAAC,UAAW;YAC5B,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,KAAK;SAChB,EACD,EAAE,EAAE,EAAE,yBAAyB,IAAI,CAAC,UAAU,EAAE,EAAE,CACnD,CAAC;QAEF,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;AA5CY,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,CA4C9B"}
|
|
@@ -1,10 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { LoopstackContext } from '@loopstack/common';
|
|
1
3
|
import { BaseWorkflow } from '@loopstack/common';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
declare const AskUserArgsSchema: z.ZodObject<{
|
|
5
|
+
question: z.ZodString;
|
|
6
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
7
|
+
options: "options";
|
|
8
|
+
text: "text";
|
|
9
|
+
confirm: "confirm";
|
|
10
|
+
}>>;
|
|
11
|
+
options: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
12
|
+
allowCustomAnswer: z.ZodOptional<z.ZodBoolean>;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
type AskUserArgs = z.infer<typeof AskUserArgsSchema>;
|
|
15
|
+
type AskUserState = AskUserArgs;
|
|
16
|
+
export declare class AskUserWorkflow extends BaseWorkflow<AskUserArgs, AskUserState> {
|
|
17
|
+
start(state: AskUserState, ctx: LoopstackContext): Promise<AskUserState>;
|
|
18
|
+
showQuestionOptions(state: AskUserState): Promise<AskUserState>;
|
|
19
|
+
showQuestionConfirm(state: AskUserState): Promise<AskUserState>;
|
|
20
|
+
showQuestionText(state: AskUserState): Promise<AskUserState>;
|
|
21
|
+
userAnswered(state: AskUserState, payload: {
|
|
8
22
|
answer: string;
|
|
9
23
|
}): Promise<{
|
|
10
24
|
answer: string;
|
|
@@ -12,4 +26,5 @@ export declare class AskUserWorkflow extends BaseWorkflow {
|
|
|
12
26
|
private isOptionsMode;
|
|
13
27
|
private isConfirmMode;
|
|
14
28
|
}
|
|
29
|
+
export {};
|
|
15
30
|
//# sourceMappingURL=ask-user.workflow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/ask-user/ask-user.workflow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ask-user.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/ask-user/ask-user.workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAA+B,MAAM,mBAAmB,CAAC;AAK9E,QAAA,MAAM,iBAAiB;;;;;;;;;iBAKrB,CAAC;AAEH,KAAK,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAMrD,KAAK,YAAY,GAAG,WAAW,CAAC;AAEhC,qBAMa,eAAgB,SAAQ,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC;IAEpE,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAOxE,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAW/D,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAM/D,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAM5D,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IA6BjG,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,aAAa;CAGtB"}
|
|
@@ -8,89 +8,97 @@ 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 { BaseWorkflow,
|
|
11
|
+
import { BaseWorkflow, Guard, Transition, Workflow } from '@loopstack/common';
|
|
12
12
|
import { AskUserConfirmDocument } from '../../documents/ask-user-confirm-document.js';
|
|
13
13
|
import { AskUserDocument } from '../../documents/ask-user-document.js';
|
|
14
14
|
import { AskUserOptionsDocument } from '../../documents/ask-user-options-document.js';
|
|
15
|
+
const AskUserArgsSchema = z.object({
|
|
16
|
+
question: z.string(),
|
|
17
|
+
mode: z.enum(['text', 'options', 'confirm']).optional(),
|
|
18
|
+
options: z.array(z.string()).optional(),
|
|
19
|
+
allowCustomAnswer: z.boolean().optional(),
|
|
20
|
+
});
|
|
15
21
|
const AskUserAnswerSchema = z.object({
|
|
16
22
|
answer: z.string(),
|
|
17
23
|
});
|
|
18
24
|
let AskUserWorkflow = class AskUserWorkflow extends BaseWorkflow {
|
|
19
|
-
start() {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
25
|
+
async start(state, ctx) {
|
|
26
|
+
const args = ctx.args;
|
|
27
|
+
return { ...state, ...args };
|
|
28
|
+
}
|
|
29
|
+
async showQuestionOptions(state) {
|
|
30
|
+
await this.documentStore.save(AskUserOptionsDocument, { question: state.question, options: state.options ?? [], allowCustomAnswer: state.allowCustomAnswer }, { id: 'question' });
|
|
31
|
+
return state;
|
|
23
32
|
}
|
|
24
|
-
async showQuestionConfirm() {
|
|
25
|
-
|
|
26
|
-
|
|
33
|
+
async showQuestionConfirm(state) {
|
|
34
|
+
await this.documentStore.save(AskUserConfirmDocument, { question: state.question }, { id: 'question' });
|
|
35
|
+
return state;
|
|
27
36
|
}
|
|
28
|
-
async showQuestionText() {
|
|
29
|
-
|
|
30
|
-
|
|
37
|
+
async showQuestionText(state) {
|
|
38
|
+
await this.documentStore.save(AskUserDocument, { question: state.question }, { id: 'question' });
|
|
39
|
+
return state;
|
|
31
40
|
}
|
|
32
|
-
async userAnswered(payload) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
41
|
+
async userAnswered(state, payload) {
|
|
42
|
+
if (state.mode === 'options') {
|
|
43
|
+
await this.documentStore.save(AskUserOptionsDocument, {
|
|
44
|
+
question: state.question,
|
|
45
|
+
options: state.options ?? [],
|
|
46
|
+
allowCustomAnswer: state.allowCustomAnswer,
|
|
47
|
+
answer: payload.answer,
|
|
48
|
+
}, { id: 'question' });
|
|
36
49
|
}
|
|
37
|
-
else if (mode === 'confirm') {
|
|
38
|
-
await this.
|
|
50
|
+
else if (state.mode === 'confirm') {
|
|
51
|
+
await this.documentStore.save(AskUserConfirmDocument, { question: state.question, answer: payload.answer }, { id: 'question' });
|
|
39
52
|
}
|
|
40
53
|
else {
|
|
41
|
-
await this.
|
|
54
|
+
await this.documentStore.save(AskUserDocument, { question: state.question, answer: payload.answer }, { id: 'question' });
|
|
42
55
|
}
|
|
43
56
|
return { answer: payload.answer };
|
|
44
57
|
}
|
|
45
|
-
isOptionsMode() {
|
|
46
|
-
|
|
47
|
-
return (args?.mode === 'options' || (args?.mode === undefined && Array.isArray(args?.options) && args.options.length > 0));
|
|
58
|
+
isOptionsMode(state) {
|
|
59
|
+
return (state.mode === 'options' || (state.mode === undefined && Array.isArray(state.options) && state.options.length > 0));
|
|
48
60
|
}
|
|
49
|
-
isConfirmMode() {
|
|
50
|
-
return
|
|
61
|
+
isConfirmMode(state) {
|
|
62
|
+
return state.mode === 'confirm';
|
|
51
63
|
}
|
|
52
64
|
};
|
|
53
65
|
__decorate([
|
|
54
|
-
|
|
66
|
+
Transition({ to: 'show_question' }),
|
|
55
67
|
__metadata("design:type", Function),
|
|
56
|
-
__metadata("design:paramtypes", []),
|
|
57
|
-
__metadata("design:returntype",
|
|
68
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
69
|
+
__metadata("design:returntype", Promise)
|
|
58
70
|
], AskUserWorkflow.prototype, "start", null);
|
|
59
71
|
__decorate([
|
|
60
72
|
Transition({ from: 'show_question', to: 'waiting_for_user', priority: 10 }),
|
|
61
73
|
Guard('isOptionsMode'),
|
|
62
74
|
__metadata("design:type", Function),
|
|
63
|
-
__metadata("design:paramtypes", []),
|
|
75
|
+
__metadata("design:paramtypes", [Object]),
|
|
64
76
|
__metadata("design:returntype", Promise)
|
|
65
77
|
], AskUserWorkflow.prototype, "showQuestionOptions", null);
|
|
66
78
|
__decorate([
|
|
67
79
|
Transition({ from: 'show_question', to: 'waiting_for_user', priority: 10 }),
|
|
68
80
|
Guard('isConfirmMode'),
|
|
69
81
|
__metadata("design:type", Function),
|
|
70
|
-
__metadata("design:paramtypes", []),
|
|
82
|
+
__metadata("design:paramtypes", [Object]),
|
|
71
83
|
__metadata("design:returntype", Promise)
|
|
72
84
|
], AskUserWorkflow.prototype, "showQuestionConfirm", null);
|
|
73
85
|
__decorate([
|
|
74
86
|
Transition({ from: 'show_question', to: 'waiting_for_user' }),
|
|
75
87
|
__metadata("design:type", Function),
|
|
76
|
-
__metadata("design:paramtypes", []),
|
|
88
|
+
__metadata("design:paramtypes", [Object]),
|
|
77
89
|
__metadata("design:returntype", Promise)
|
|
78
90
|
], AskUserWorkflow.prototype, "showQuestionText", null);
|
|
79
91
|
__decorate([
|
|
80
|
-
|
|
92
|
+
Transition({ from: 'waiting_for_user', to: 'end', wait: true, schema: AskUserAnswerSchema }),
|
|
81
93
|
__metadata("design:type", Function),
|
|
82
|
-
__metadata("design:paramtypes", [Object]),
|
|
94
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
83
95
|
__metadata("design:returntype", Promise)
|
|
84
96
|
], AskUserWorkflow.prototype, "userAnswered", null);
|
|
85
97
|
AskUserWorkflow = __decorate([
|
|
86
98
|
Workflow({
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
mode: z.enum(['text', 'options', 'confirm']).optional(),
|
|
91
|
-
options: z.array(z.string()).optional(),
|
|
92
|
-
allowCustomAnswer: z.boolean().optional(),
|
|
93
|
-
}),
|
|
99
|
+
title: 'Ask User',
|
|
100
|
+
description: 'Generic sub-workflow that presents a question to the user and waits for their answer.\nUsed by async tool calls (e.g. askClarification) to interrupt an agent loop for user input.\nSupports three modes: text (default), options (pick from a list), and confirm (yes/no).',
|
|
101
|
+
schema: AskUserArgsSchema,
|
|
94
102
|
})
|
|
95
103
|
], AskUserWorkflow);
|
|
96
104
|
export { AskUserWorkflow };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user.workflow.js","sourceRoot":"","sources":["../../../src/workflows/ask-user/ask-user.workflow.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"ask-user.workflow.js","sourceRoot":"","sources":["../../../src/workflows/ask-user/ask-user.workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
+
import type { LoopstackContext } from '@loopstack/common';
|
|
1
2
|
import { BaseWorkflow } from '@loopstack/common';
|
|
2
|
-
|
|
3
|
-
markdown
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
interface ConfirmUserState {
|
|
4
|
+
markdown: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class ConfirmUserWorkflow extends BaseWorkflow<{
|
|
7
|
+
markdown: string;
|
|
8
|
+
}, ConfirmUserState> {
|
|
9
|
+
showContent(state: ConfirmUserState, ctx: LoopstackContext): Promise<ConfirmUserState>;
|
|
10
|
+
userConfirmed(state: ConfirmUserState): Promise<{
|
|
8
11
|
confirmed: boolean;
|
|
9
12
|
markdown: string;
|
|
10
13
|
}>;
|
|
11
|
-
userDenied(): Promise<{
|
|
14
|
+
userDenied(state: ConfirmUserState): Promise<{
|
|
12
15
|
confirmed: boolean;
|
|
13
16
|
markdown: string;
|
|
14
17
|
}>;
|
|
15
18
|
}
|
|
19
|
+
export {};
|
|
16
20
|
//# sourceMappingURL=confirm-user.workflow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-user.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/confirm-user/confirm-user.workflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"confirm-user.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/confirm-user/confirm-user.workflow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAwB,MAAM,mBAAmB,CAAC;AAGvE,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAQa,mBAAoB,SAAQ,YAAY,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,gBAAgB,CAAC;IAErF,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAOtF,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAKzF,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAG7F"}
|
|
@@ -8,42 +8,43 @@ 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 { BaseWorkflow,
|
|
11
|
+
import { BaseWorkflow, Transition, Workflow } from '@loopstack/common';
|
|
12
12
|
import { ConfirmUserDocument } from '../../documents/confirm-user-document.js';
|
|
13
13
|
let ConfirmUserWorkflow = class ConfirmUserWorkflow extends BaseWorkflow {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
this.markdown
|
|
17
|
-
|
|
14
|
+
async showContent(state, ctx) {
|
|
15
|
+
const args = ctx.args;
|
|
16
|
+
await this.documentStore.save(ConfirmUserDocument, { markdown: args.markdown }, { id: 'content' });
|
|
17
|
+
return { ...state, markdown: args.markdown };
|
|
18
18
|
}
|
|
19
|
-
async userConfirmed() {
|
|
20
|
-
return Promise.resolve({ confirmed: true, markdown:
|
|
19
|
+
async userConfirmed(state) {
|
|
20
|
+
return Promise.resolve({ confirmed: true, markdown: state.markdown });
|
|
21
21
|
}
|
|
22
|
-
async userDenied() {
|
|
23
|
-
return Promise.resolve({ confirmed: false, markdown:
|
|
22
|
+
async userDenied(state) {
|
|
23
|
+
return Promise.resolve({ confirmed: false, markdown: state.markdown });
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
26
|
__decorate([
|
|
27
|
-
|
|
27
|
+
Transition({ to: 'waiting_for_confirmation' }),
|
|
28
28
|
__metadata("design:type", Function),
|
|
29
|
-
__metadata("design:paramtypes", [Object]),
|
|
29
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
30
30
|
__metadata("design:returntype", Promise)
|
|
31
31
|
], ConfirmUserWorkflow.prototype, "showContent", null);
|
|
32
32
|
__decorate([
|
|
33
|
-
|
|
33
|
+
Transition({ from: 'waiting_for_confirmation', to: 'end', wait: true }),
|
|
34
34
|
__metadata("design:type", Function),
|
|
35
|
-
__metadata("design:paramtypes", []),
|
|
35
|
+
__metadata("design:paramtypes", [Object]),
|
|
36
36
|
__metadata("design:returntype", Promise)
|
|
37
37
|
], ConfirmUserWorkflow.prototype, "userConfirmed", null);
|
|
38
38
|
__decorate([
|
|
39
|
-
|
|
39
|
+
Transition({ from: 'waiting_for_confirmation', to: 'end', wait: true }),
|
|
40
40
|
__metadata("design:type", Function),
|
|
41
|
-
__metadata("design:paramtypes", []),
|
|
41
|
+
__metadata("design:paramtypes", [Object]),
|
|
42
42
|
__metadata("design:returntype", Promise)
|
|
43
43
|
], ConfirmUserWorkflow.prototype, "userDenied", null);
|
|
44
44
|
ConfirmUserWorkflow = __decorate([
|
|
45
45
|
Workflow({
|
|
46
|
-
|
|
46
|
+
title: 'Confirm User',
|
|
47
|
+
description: 'Generic sub-workflow that presents markdown content to the user and waits for confirmation.\nUsed by async tool calls (e.g. askForApproval) to get explicit user confirmation.',
|
|
47
48
|
schema: z.object({
|
|
48
49
|
markdown: z.string(),
|
|
49
50
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-user.workflow.js","sourceRoot":"","sources":["../../../src/workflows/confirm-user/confirm-user.workflow.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"confirm-user.workflow.js","sourceRoot":"","sources":["../../../src/workflows/confirm-user/confirm-user.workflow.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAcxE,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,YAAoD;IAErF,AAAN,KAAK,CAAC,WAAW,CAAC,KAAuB,EAAE,GAAqB;QAC9D,MAAM,IAAI,GAAG,GAAG,CAAC,IAA4B,CAAC;QAC9C,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACnG,OAAO,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC/C,CAAC;IAGK,AAAN,KAAK,CAAC,aAAa,CAAC,KAAuB;QACzC,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxE,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CAAC,KAAuB;QACtC,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzE,CAAC;CACF,CAAA;AAfO;IADL,UAAU,CAAC,EAAE,EAAE,EAAE,0BAA0B,EAAE,CAAC;;;;sDAK9C;AAGK;IADL,UAAU,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;;;wDAGvE;AAGK;IADL,UAAU,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;;;qDAGvE;AAhBU,mBAAmB;IAR/B,QAAQ,CAAC;QACR,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,gLAAgL;QAClL,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;SACrB,CAAC;KACH,CAAC;GACW,mBAAmB,CAiB/B"}
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"workflow",
|
|
10
10
|
"user-input"
|
|
11
11
|
],
|
|
12
|
-
"version": "0.
|
|
12
|
+
"version": "0.4.1",
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Jakob Klippel",
|
|
@@ -31,19 +31,24 @@
|
|
|
31
31
|
"test": "vitest run",
|
|
32
32
|
"watch": "nest build --watch"
|
|
33
33
|
},
|
|
34
|
-
"dependencies": {
|
|
35
|
-
|
|
36
|
-
"@loopstack/
|
|
34
|
+
"dependencies": {},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@loopstack/common": "^0.32.3",
|
|
37
|
+
"@loopstack/core": "^0.32.3",
|
|
37
38
|
"@nestjs/common": "^11.1.19",
|
|
39
|
+
"@swc/core": "^1.15.33",
|
|
40
|
+
"unplugin-swc": "^1.5.9",
|
|
41
|
+
"vitest": "^4.1.6",
|
|
38
42
|
"zod": "^4.3.6"
|
|
39
43
|
},
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"@loopstack/common": "^0.32.3",
|
|
46
|
+
"@loopstack/core": "^0.32.3",
|
|
47
|
+
"@nestjs/common": "^11.0.0",
|
|
48
|
+
"zod": "^4.0.0"
|
|
49
|
+
},
|
|
40
50
|
"files": [
|
|
41
51
|
"dist"
|
|
42
52
|
],
|
|
43
|
-
"type": "module"
|
|
44
|
-
"devDependencies": {
|
|
45
|
-
"vitest": "^4.1.6",
|
|
46
|
-
"@swc/core": "^1.15.33",
|
|
47
|
-
"unplugin-swc": "^1.5.9"
|
|
48
|
-
}
|
|
53
|
+
"type": "module"
|
|
49
54
|
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
title: 'Ask User'
|
|
2
|
-
|
|
3
|
-
description: |
|
|
4
|
-
Generic sub-workflow that presents a question to the user and waits for their answer.
|
|
5
|
-
Used by async tool calls (e.g. askClarification) to interrupt an agent loop for user input.
|
|
6
|
-
Supports three modes: text (default), options (pick from a list), and confirm (yes/no).
|