@loopstack/hitl-examples 0.1.1 → 0.2.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.
- package/README.md +38 -0
- package/dist/workflows/agent-ask-clarification/agent-ask-clarification-example.workflow.d.ts +1 -1
- package/dist/workflows/agent-ask-clarification/agent-ask-clarification-example.workflow.d.ts.map +1 -1
- package/dist/workflows/agent-ask-clarification/agent-ask-clarification-example.workflow.js +2 -2
- package/dist/workflows/agent-ask-clarification/agent-ask-clarification-example.workflow.js.map +1 -1
- package/dist/workflows/agent-ask-for-approval/agent-ask-for-approval-example.workflow.d.ts +1 -1
- package/dist/workflows/agent-ask-for-approval/agent-ask-for-approval-example.workflow.d.ts.map +1 -1
- package/dist/workflows/agent-ask-for-approval/agent-ask-for-approval-example.workflow.js +2 -2
- package/dist/workflows/agent-ask-for-approval/agent-ask-for-approval-example.workflow.js.map +1 -1
- package/dist/workflows/ask-user-confirm/ask-user-confirm-example.workflow.d.ts +1 -1
- package/dist/workflows/ask-user-confirm/ask-user-confirm-example.workflow.d.ts.map +1 -1
- package/dist/workflows/ask-user-confirm/ask-user-confirm-example.workflow.js +2 -2
- package/dist/workflows/ask-user-confirm/ask-user-confirm-example.workflow.js.map +1 -1
- package/dist/workflows/ask-user-options/ask-user-options-example.workflow.d.ts +1 -1
- package/dist/workflows/ask-user-options/ask-user-options-example.workflow.d.ts.map +1 -1
- package/dist/workflows/ask-user-options/ask-user-options-example.workflow.js +2 -2
- package/dist/workflows/ask-user-options/ask-user-options-example.workflow.js.map +1 -1
- package/dist/workflows/ask-user-text/ask-user-text-example.workflow.d.ts +1 -1
- package/dist/workflows/ask-user-text/ask-user-text-example.workflow.d.ts.map +1 -1
- package/dist/workflows/ask-user-text/ask-user-text-example.workflow.js +2 -2
- package/dist/workflows/ask-user-text/ask-user-text-example.workflow.js.map +1 -1
- package/dist/workflows/confirm-content/confirm-content-example.workflow.d.ts +1 -1
- package/dist/workflows/confirm-content/confirm-content-example.workflow.d.ts.map +1 -1
- package/dist/workflows/confirm-content/confirm-content-example.workflow.js +2 -2
- package/dist/workflows/confirm-content/confirm-content-example.workflow.js.map +1 -1
- package/dist/workflows/inline-form/feedback-form-document.d.ts +2 -0
- package/dist/workflows/inline-form/feedback-form-document.d.ts.map +1 -1
- package/dist/workflows/inline-form/feedback-form-document.js +2 -0
- package/dist/workflows/inline-form/feedback-form-document.js.map +1 -1
- package/dist/workflows/inline-form/feedback-form-document.yaml +3 -0
- package/dist/workflows/inline-form/inline-form-example.workflow.d.ts +1 -1
- package/dist/workflows/inline-form/inline-form-example.workflow.d.ts.map +1 -1
- package/dist/workflows/inline-form/inline-form-example.workflow.js +4 -4
- package/dist/workflows/inline-form/inline-form-example.workflow.js.map +1 -1
- package/dist/workflows/prompt-input-chat/prompt-input-chat-example.workflow.d.ts +5 -2
- package/dist/workflows/prompt-input-chat/prompt-input-chat-example.workflow.d.ts.map +1 -1
- package/dist/workflows/prompt-input-chat/prompt-input-chat-example.workflow.js +29 -16
- package/dist/workflows/prompt-input-chat/prompt-input-chat-example.workflow.js.map +1 -1
- package/package.json +3 -2
- package/src/workflows/agent-ask-clarification/__tests__/agent-ask-clarification-example.live.spec.ts +27 -0
- package/src/workflows/agent-ask-clarification/__tests__/agent-ask-clarification-example.spec.ts +86 -0
- package/src/workflows/agent-ask-clarification/agent-ask-clarification-example.workflow.ts +1 -1
- package/src/workflows/agent-ask-for-approval/__tests__/agent-ask-for-approval-example.live.spec.ts +27 -0
- package/src/workflows/agent-ask-for-approval/__tests__/agent-ask-for-approval-example.spec.ts +96 -0
- package/src/workflows/agent-ask-for-approval/agent-ask-for-approval-example.workflow.ts +1 -1
- package/src/workflows/ask-user-confirm/__tests__/ask-user-confirm-example.spec.ts +56 -0
- package/src/workflows/ask-user-confirm/ask-user-confirm-example.workflow.ts +1 -1
- package/src/workflows/ask-user-options/__tests__/ask-user-options-example.spec.ts +60 -0
- package/src/workflows/ask-user-options/ask-user-options-example.workflow.ts +1 -1
- package/src/workflows/ask-user-text/__tests__/ask-user-text-example.spec.ts +62 -0
- package/src/workflows/ask-user-text/ask-user-text-example.workflow.ts +1 -1
- package/src/workflows/confirm-content/__tests__/confirm-content-example.spec.ts +56 -0
- package/src/workflows/confirm-content/confirm-content-example.workflow.ts +1 -1
- package/src/workflows/inline-form/__tests__/inline-form-example.spec.ts +54 -0
- package/src/workflows/inline-form/feedback-form-document.ts +2 -0
- package/src/workflows/inline-form/feedback-form-document.yaml +3 -0
- package/src/workflows/inline-form/inline-form-example.workflow.ts +10 -3
- package/src/workflows/meeting-notes/__tests__/meeting-notes-example.live.spec.ts +38 -0
- package/src/workflows/meeting-notes/__tests__/meeting-notes-example.spec.ts +105 -0
- package/src/workflows/prompt-input-chat/__tests__/prompt-input-chat-example.spec.ts +83 -0
- package/src/workflows/prompt-input-chat/prompt-input-chat-example.workflow.ts +34 -12
package/README.md
CHANGED
|
@@ -46,6 +46,24 @@ npm install @loopstack/hitl-examples
|
|
|
46
46
|
import { HitlExamplesModule } from '@loopstack/hitl-examples';
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
+
## Required app-module configuration
|
|
50
|
+
|
|
51
|
+
`HitlExamplesModule` brings its own `HitlModule`, `AgentModule`, and `ClaudeModule`. The Meeting Notes and Agent examples additionally call `LlmGenerateObjectTool` / `LlmGenerateTextTool` from `@loopstack/llm-provider-module`. That module is `@Global` and must be configured once in your root module to set the default model:
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
import { Module } from '@nestjs/common';
|
|
55
|
+
import { HitlExamplesModule } from '@loopstack/hitl-examples';
|
|
56
|
+
import { LlmProviderModule } from '@loopstack/llm-provider-module';
|
|
57
|
+
import { LoopstackModule } from '@loopstack/loopstack-module';
|
|
58
|
+
|
|
59
|
+
@Module({
|
|
60
|
+
imports: [LoopstackModule.forRoot(), LlmProviderModule.forRoot({ model: 'claude-sonnet-4-6' }), HitlExamplesModule],
|
|
61
|
+
})
|
|
62
|
+
export class AppModule {}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
`ClaudeModule` (re-exported from `HitlExamplesModule`) registers the Claude provider with the LLM registry; `LlmProviderModule.forRoot(...)` sets the default model the tools dispatch to. The non-agent examples (Inline Form, Prompt Input Chat, Ask User \*, Confirm Content) work without it.
|
|
66
|
+
|
|
49
67
|
## Environment
|
|
50
68
|
|
|
51
69
|
The agent and meeting-notes examples require Claude credentials:
|
|
@@ -158,6 +176,26 @@ Combines custom documents, LLM-driven structured output, and two HITL review ste
|
|
|
158
176
|
- `documents/optimized-notes-document.{ts,yaml}` — structured output document
|
|
159
177
|
- `templates/extract-notes.md` — LLM prompt template
|
|
160
178
|
|
|
179
|
+
## Testing
|
|
180
|
+
|
|
181
|
+
Every workflow ships with an inner-loop spec in its `__tests__/` folder — run them with `npm run test` (in-process, no backend, no API key). The specs double as the reference for **how to test each HITL flavor**, extending the decision matrix above:
|
|
182
|
+
|
|
183
|
+
| HITL flavor | How its tests work | Spec |
|
|
184
|
+
| ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
|
|
185
|
+
| Custom document + own `wait: true` transition | Script the submission with `answers`, keyed by the wait-transition method name | `inline-form` |
|
|
186
|
+
| Sub-workflow shortcut (`AskUserWorkflow` / `ConfirmUserWorkflow`) | Script the _child's_ wait transition (`userAnswered`, `userConfirmed` / `userDenied`) — `answers` reaches inline sub-workflows at any depth | `ask-user-*`, `confirm-content` |
|
|
187
|
+
| Chat loop (same wait transition parks repeatedly) | `queue('first', 'second')` submits one message per park, then the run parks again; scripted LLM replies via `replay` | `prompt-input-chat` |
|
|
188
|
+
| LLM step inside a predefined workflow | `replay` scripts the LLM response; `answers` drives the surrounding HITL steps | `meeting-notes` |
|
|
189
|
+
| Agent HITL (`ask_clarification` / `ask_for_approval`) | `replayTools: [LlmGenerateTextTool]` scripts only the LLM turns; the agent loop, delegation, and the real HITL child run live; `answers` resumes the nested child | `agent-ask-clarification`, `agent-ask-for-approval` |
|
|
190
|
+
|
|
191
|
+
**The record/refresh loop.** The replay specs here use hand-written LLM turns for readability; for your own workflows, record fixtures from a real run instead: run the test once with `fixture: '<path>'` and live providers (records on the first run, replays afterwards — delete the file to re-record), or derive one from a backend run started with `loopstack run --trace` via `loopstack runs <run-id> --record <file> --tools llm_generate_text`. When a replayed test fails with a drift error after a prompt change, that is the signal: run the live check-ups, and re-record when green.
|
|
192
|
+
|
|
193
|
+
**Live check-ups** (`*.live.spec.ts`) run the same flows against the real model with structural assertions — `npm run test:live`, needs `ANTHROPIC_API_KEY`, on demand after prompt or model changes, never in the PR gate.
|
|
194
|
+
|
|
195
|
+
**Outer loop.** Before relying on a flow, run the real thing once from the terminal and watch it: `loopstack run <workflow_name>` follows the run live and prompts you at every HITL step; `loopstack runs` shows the inbox of runs waiting for input.
|
|
196
|
+
|
|
197
|
+
See the [testing guide](https://loopstack.ai/docs/build/testing) for the full story.
|
|
198
|
+
|
|
161
199
|
## About
|
|
162
200
|
|
|
163
201
|
Author: [Jakob Klippel](https://www.linkedin.com/in/jakob-klippel/)
|
package/dist/workflows/agent-ask-clarification/agent-ask-clarification-example.workflow.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { BaseWorkflow, type TransitionInput } from '@loopstack/common';
|
|
|
3
3
|
export declare class AgentAskClarificationExampleWorkflow extends BaseWorkflow {
|
|
4
4
|
private readonly agentWorkflow;
|
|
5
5
|
constructor(agentWorkflow: AgentWorkflow);
|
|
6
|
-
start(
|
|
6
|
+
start(): Promise<void>;
|
|
7
7
|
agentComplete(_state: Record<string, unknown>, input: TransitionInput<AgentResult>): Promise<void>;
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=agent-ask-clarification-example.workflow.d.ts.map
|
package/dist/workflows/agent-ask-clarification/agent-ask-clarification-example.workflow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-ask-clarification-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/agent-ask-clarification/agent-ask-clarification-example.workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAqB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,YAAY,EAA+B,KAAK,eAAe,EAAY,MAAM,mBAAmB,CAAC;AAU9G,qBAMa,oCAAqC,SAAQ,YAAY;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAKnD,KAAK
|
|
1
|
+
{"version":3,"file":"agent-ask-clarification-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/agent-ask-clarification/agent-ask-clarification-example.workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAqB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,YAAY,EAA+B,KAAK,eAAe,EAAY,MAAM,mBAAmB,CAAC;AAU9G,qBAMa,oCAAqC,SAAQ,YAAY;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAKnD,KAAK;IAiBL,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC;CAOzF"}
|
|
@@ -25,7 +25,7 @@ let AgentAskClarificationExampleWorkflow = class AgentAskClarificationExampleWor
|
|
|
25
25
|
super();
|
|
26
26
|
this.agentWorkflow = agentWorkflow;
|
|
27
27
|
}
|
|
28
|
-
async start(
|
|
28
|
+
async start() {
|
|
29
29
|
await this.agentWorkflow.run({
|
|
30
30
|
system: SYSTEM_PROMPT,
|
|
31
31
|
tools: ['ask_clarification'],
|
|
@@ -44,7 +44,7 @@ exports.AgentAskClarificationExampleWorkflow = AgentAskClarificationExampleWorkf
|
|
|
44
44
|
__decorate([
|
|
45
45
|
(0, common_1.Transition)({ to: 'running' }),
|
|
46
46
|
__metadata("design:type", Function),
|
|
47
|
-
__metadata("design:paramtypes", [
|
|
47
|
+
__metadata("design:paramtypes", []),
|
|
48
48
|
__metadata("design:returntype", Promise)
|
|
49
49
|
], AgentAskClarificationExampleWorkflow.prototype, "start", null);
|
|
50
50
|
__decorate([
|
package/dist/workflows/agent-ask-clarification/agent-ask-clarification-example.workflow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-ask-clarification-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/agent-ask-clarification/agent-ask-clarification-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAsF;AACtF,8CAA8G;AAE9G,MAAM,aAAa,GAAG;;;;;;gHAM0F,CAAC;AAQ1G,IAAM,oCAAoC,GAA1C,MAAM,oCAAqC,SAAQ,qBAAY;IACvC;IAA7B,YAA6B,aAA4B;QACvD,KAAK,EAAE,CAAC;QADmB,kBAAa,GAAb,aAAa,CAAe;IAEzD,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK
|
|
1
|
+
{"version":3,"file":"agent-ask-clarification-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/agent-ask-clarification/agent-ask-clarification-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAsF;AACtF,8CAA8G;AAE9G,MAAM,aAAa,GAAG;;;;;;gHAM0F,CAAC;AAQ1G,IAAM,oCAAoC,GAA1C,MAAM,oCAAqC,SAAQ,qBAAY;IACvC;IAA7B,YAA6B,aAA4B;QACvD,KAAK,EAAE,CAAC;QADmB,kBAAa,GAAb,aAAa,CAAe;IAEzD,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAC1B;YACE,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,CAAC,mBAAmB,CAAC;YAC5B,WAAW,EAAE,0CAA0C;SACxD,EACD,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAChG,CAAC;IACJ,CAAC;IAQK,AAAN,KAAK,CAAC,aAAa,CAAC,MAA+B,EAAE,KAAmC;QACtF,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAe,EAAE;YAC7C,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF,CAAA;AA9BY,oFAAoC;AAMzC;IADL,IAAA,mBAAU,EAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;;;;iEAU7B;AAQK;IANL,IAAA,mBAAU,EAAC;QACV,IAAI,EAAE,SAAS;QACf,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,yBAAiB;KAC1B,CAAC;;;;yEAOD;+CA7BU,oCAAoC;IANhD,IAAA,iBAAQ,EAAC;QACR,KAAK,EAAE,wCAAwC;QAC/C,WAAW,EACT,4FAA4F;YAC5F,wFAAwF;KAC3F,CAAC;qCAE4C,qBAAa;GAD9C,oCAAoC,CA8BhD"}
|
|
@@ -3,7 +3,7 @@ import { BaseWorkflow, type TransitionInput } from '@loopstack/common';
|
|
|
3
3
|
export declare class AgentAskForApprovalExampleWorkflow extends BaseWorkflow {
|
|
4
4
|
private readonly agentWorkflow;
|
|
5
5
|
constructor(agentWorkflow: AgentWorkflow);
|
|
6
|
-
start(
|
|
6
|
+
start(): Promise<void>;
|
|
7
7
|
agentComplete(_state: Record<string, unknown>, input: TransitionInput<AgentResult>): Promise<void>;
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=agent-ask-for-approval-example.workflow.d.ts.map
|
package/dist/workflows/agent-ask-for-approval/agent-ask-for-approval-example.workflow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-ask-for-approval-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/agent-ask-for-approval/agent-ask-for-approval-example.workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAqB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAgC,KAAK,eAAe,EAAY,MAAM,mBAAmB,CAAC;AAW/G,qBAMa,kCAAmC,SAAQ,YAAY;IACtD,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAKnD,KAAK
|
|
1
|
+
{"version":3,"file":"agent-ask-for-approval-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/agent-ask-for-approval/agent-ask-for-approval-example.workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAqB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAgC,KAAK,eAAe,EAAY,MAAM,mBAAmB,CAAC;AAW/G,qBAMa,kCAAmC,SAAQ,YAAY;IACtD,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAKnD,KAAK;IAkBL,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC;CAIzF"}
|
|
@@ -26,7 +26,7 @@ let AgentAskForApprovalExampleWorkflow = class AgentAskForApprovalExampleWorkflo
|
|
|
26
26
|
super();
|
|
27
27
|
this.agentWorkflow = agentWorkflow;
|
|
28
28
|
}
|
|
29
|
-
async start(
|
|
29
|
+
async start() {
|
|
30
30
|
await this.agentWorkflow.run({
|
|
31
31
|
system: SYSTEM_PROMPT,
|
|
32
32
|
tools: ['ask_for_approval'],
|
|
@@ -42,7 +42,7 @@ exports.AgentAskForApprovalExampleWorkflow = AgentAskForApprovalExampleWorkflow;
|
|
|
42
42
|
__decorate([
|
|
43
43
|
(0, common_1.Transition)({ to: 'running' }),
|
|
44
44
|
__metadata("design:type", Function),
|
|
45
|
-
__metadata("design:paramtypes", [
|
|
45
|
+
__metadata("design:paramtypes", []),
|
|
46
46
|
__metadata("design:returntype", Promise)
|
|
47
47
|
], AgentAskForApprovalExampleWorkflow.prototype, "start", null);
|
|
48
48
|
__decorate([
|
package/dist/workflows/agent-ask-for-approval/agent-ask-for-approval-example.workflow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-ask-for-approval-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/agent-ask-for-approval/agent-ask-for-approval-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAsF;AACtF,8CAA+G;AAE/G,MAAM,aAAa,GAAG;;;;;;;gFAO0D,CAAC;AAQ1E,IAAM,kCAAkC,GAAxC,MAAM,kCAAmC,SAAQ,qBAAY;IACrC;IAA7B,YAA6B,aAA4B;QACvD,KAAK,EAAE,CAAC;QADmB,kBAAa,GAAb,aAAa,CAAe;IAEzD,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK
|
|
1
|
+
{"version":3,"file":"agent-ask-for-approval-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/agent-ask-for-approval/agent-ask-for-approval-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAsF;AACtF,8CAA+G;AAE/G,MAAM,aAAa,GAAG;;;;;;;gFAO0D,CAAC;AAQ1E,IAAM,kCAAkC,GAAxC,MAAM,kCAAmC,SAAQ,qBAAY;IACrC;IAA7B,YAA6B,aAA4B;QACvD,KAAK,EAAE,CAAC;QADmB,kBAAa,GAAb,aAAa,CAAe;IAEzD,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAC1B;YACE,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,CAAC,kBAAkB,CAAC;YAC3B,WAAW,EACT,iHAAiH;SACpH,EACD,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAClG,CAAC;IACJ,CAAC;IAQK,AAAN,KAAK,CAAC,aAAa,CAAC,MAA+B,EAAE,KAAmC;QACtF,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAgB,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF,CAAA;AA5BY,gFAAkC;AAMvC;IADL,IAAA,mBAAU,EAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;;;;+DAW7B;AAQK;IANL,IAAA,mBAAU,EAAC;QACV,IAAI,EAAE,SAAS;QACf,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,yBAAiB;KAC1B,CAAC;;;;uEAID;6CA3BU,kCAAkC;IAN9C,IAAA,iBAAQ,EAAC;QACR,KAAK,EAAE,uCAAuC;QAC9C,WAAW,EACT,qGAAqG;YACrG,mDAAmD;KACtD,CAAC;qCAE4C,qBAAa;GAD9C,kCAAkC,CA4B9C"}
|
|
@@ -3,7 +3,7 @@ import { AskUserWorkflow } from '@loopstack/hitl';
|
|
|
3
3
|
export declare class AskUserConfirmExampleWorkflow extends BaseWorkflow {
|
|
4
4
|
private readonly askUserWorkflow;
|
|
5
5
|
constructor(askUserWorkflow: AskUserWorkflow);
|
|
6
|
-
askToSend(
|
|
6
|
+
askToSend(): Promise<void>;
|
|
7
7
|
decisionReceived(state: Record<string, unknown>, input: TransitionInput<{
|
|
8
8
|
answer: string;
|
|
9
9
|
}>): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-confirm-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/ask-user-confirm/ask-user-confirm-example.workflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAA+B,KAAK,eAAe,EAAY,MAAM,mBAAmB,CAAC;AAC9G,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIlD,qBAMa,6BAA8B,SAAQ,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAKvD,SAAS
|
|
1
|
+
{"version":3,"file":"ask-user-confirm-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/ask-user-confirm/ask-user-confirm-example.workflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAA+B,KAAK,eAAe,EAAY,MAAM,mBAAmB,CAAC;AAC9G,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIlD,qBAMa,6BAA8B,SAAQ,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAKvD,SAAS;IAaT,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAQlG"}
|
|
@@ -20,7 +20,7 @@ let AskUserConfirmExampleWorkflow = class AskUserConfirmExampleWorkflow extends
|
|
|
20
20
|
super();
|
|
21
21
|
this.askUserWorkflow = askUserWorkflow;
|
|
22
22
|
}
|
|
23
|
-
async askToSend(
|
|
23
|
+
async askToSend() {
|
|
24
24
|
await this.askUserWorkflow.run({ question: 'Send the email now?', mode: 'confirm' }, { callback: { transition: 'decisionReceived' }, show: 'inline', label: 'Waiting for yes/no...' });
|
|
25
25
|
}
|
|
26
26
|
async decisionReceived(state, input) {
|
|
@@ -36,7 +36,7 @@ exports.AskUserConfirmExampleWorkflow = AskUserConfirmExampleWorkflow;
|
|
|
36
36
|
__decorate([
|
|
37
37
|
(0, common_1.Transition)({ to: 'waiting_for_yes_no' }),
|
|
38
38
|
__metadata("design:type", Function),
|
|
39
|
-
__metadata("design:paramtypes", [
|
|
39
|
+
__metadata("design:paramtypes", []),
|
|
40
40
|
__metadata("design:returntype", Promise)
|
|
41
41
|
], AskUserConfirmExampleWorkflow.prototype, "askToSend", null);
|
|
42
42
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-confirm-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/ask-user-confirm/ask-user-confirm-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAwB;AACxB,8CAA8G;AAC9G,0CAAkD;AAElD,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAQ/C,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,qBAAY;IAChC;IAA7B,YAA6B,eAAgC;QAC3D,KAAK,EAAE,CAAC;QADmB,oBAAe,GAAf,eAAe,CAAiB;IAE7D,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS
|
|
1
|
+
{"version":3,"file":"ask-user-confirm-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/ask-user-confirm/ask-user-confirm-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAwB;AACxB,8CAA8G;AAC9G,0CAAkD;AAElD,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAQ/C,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,qBAAY;IAChC;IAA7B,YAA6B,eAAgC;QAC3D,KAAK,EAAE,CAAC;QADmB,oBAAe,GAAf,eAAe,CAAiB;IAE7D,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAC5B,EAAE,QAAQ,EAAE,qBAAqB,EAAE,IAAI,EAAE,SAAS,EAAE,EACpD,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,uBAAuB,EAAE,CACjG,CAAC;IACJ,CAAC;IAQK,AAAN,KAAK,CAAC,gBAAgB,CAAC,KAA8B,EAAE,KAA0C;QAC/F,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC;QAC7C,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAe,EAAE;YAC7C,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,gCAAgC;SAC7E,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAwC,CAAC,CAAC;IAC3E,CAAC;CACF,CAAA;AA3BY,sEAA6B;AAMlC;IADL,IAAA,mBAAU,EAAC,EAAE,EAAE,EAAE,oBAAoB,EAAE,CAAC;;;;8DAMxC;AAQK;IANL,IAAA,mBAAU,EAAC;QACV,IAAI,EAAE,oBAAoB;QAC1B,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,YAAY;KACrB,CAAC;;;;qEAQD;wCA1BU,6BAA6B;IANzC,IAAA,iBAAQ,EAAC;QACR,KAAK,EAAE,iCAAiC;QACxC,WAAW,EACT,oFAAoF;YACpF,4DAA4D;KAC/D,CAAC;qCAE8C,sBAAe;GADlD,6BAA6B,CA2BzC"}
|
|
@@ -3,7 +3,7 @@ import { AskUserWorkflow } from '@loopstack/hitl';
|
|
|
3
3
|
export declare class AskUserOptionsExampleWorkflow extends BaseWorkflow {
|
|
4
4
|
private readonly askUserWorkflow;
|
|
5
5
|
constructor(askUserWorkflow: AskUserWorkflow);
|
|
6
|
-
askEnvironment(
|
|
6
|
+
askEnvironment(): Promise<void>;
|
|
7
7
|
choiceReceived(state: Record<string, unknown>, input: TransitionInput<{
|
|
8
8
|
answer: string;
|
|
9
9
|
}>): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-options-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/ask-user-options/ask-user-options-example.workflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAA+B,KAAK,eAAe,EAAY,MAAM,mBAAmB,CAAC;AAC9G,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMlD,qBAMa,6BAA8B,SAAQ,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAKvD,cAAc
|
|
1
|
+
{"version":3,"file":"ask-user-options-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/ask-user-options/ask-user-options-example.workflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAA+B,KAAK,eAAe,EAAY,MAAM,mBAAmB,CAAC;AAC9G,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMlD,qBAMa,6BAA8B,SAAQ,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAKvD,cAAc;IAkBd,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAShG"}
|
|
@@ -21,7 +21,7 @@ let AskUserOptionsExampleWorkflow = class AskUserOptionsExampleWorkflow extends
|
|
|
21
21
|
super();
|
|
22
22
|
this.askUserWorkflow = askUserWorkflow;
|
|
23
23
|
}
|
|
24
|
-
async askEnvironment(
|
|
24
|
+
async askEnvironment() {
|
|
25
25
|
await this.askUserWorkflow.run({
|
|
26
26
|
question: 'Which environment should we deploy to?',
|
|
27
27
|
mode: 'options',
|
|
@@ -43,7 +43,7 @@ exports.AskUserOptionsExampleWorkflow = AskUserOptionsExampleWorkflow;
|
|
|
43
43
|
__decorate([
|
|
44
44
|
(0, common_1.Transition)({ to: 'waiting_for_choice' }),
|
|
45
45
|
__metadata("design:type", Function),
|
|
46
|
-
__metadata("design:paramtypes", [
|
|
46
|
+
__metadata("design:paramtypes", []),
|
|
47
47
|
__metadata("design:returntype", Promise)
|
|
48
48
|
], AskUserOptionsExampleWorkflow.prototype, "askEnvironment", null);
|
|
49
49
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-options-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/ask-user-options/ask-user-options-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAwB;AACxB,8CAA8G;AAC9G,0CAAkD;AAElD,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEtD,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAQvC,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,qBAAY;IAChC;IAA7B,YAA6B,eAAgC;QAC3D,KAAK,EAAE,CAAC;QADmB,oBAAe,GAAf,eAAe,CAAiB;IAE7D,CAAC;IAGK,AAAN,KAAK,CAAC,cAAc
|
|
1
|
+
{"version":3,"file":"ask-user-options-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/ask-user-options/ask-user-options-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAwB;AACxB,8CAA8G;AAC9G,0CAAkD;AAElD,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEtD,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAQvC,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,qBAAY;IAChC;IAA7B,YAA6B,eAAgC;QAC3D,KAAK,EAAE,CAAC;QADmB,oBAAe,GAAf,eAAe,CAAiB;IAE7D,CAAC;IAGK,AAAN,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAC5B;YACE,QAAQ,EAAE,wCAAwC;YAClD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,WAAW;YACpB,iBAAiB,EAAE,IAAI;SACxB,EACD,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAC/F,CAAC;IACJ,CAAC;IAQK,AAAN,KAAK,CAAC,cAAc,CAAC,KAA8B,EAAE,KAA0C;QAC7F,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QACjC,MAAM,QAAQ,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAe,EAAE;YAC7C,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAC,CAAC,gBAAgB,MAAM,GAAG;SACtF,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAwC,CAAC,CAAC;IAClG,CAAC;CACF,CAAA;AAjCY,sEAA6B;AAMlC;IADL,IAAA,mBAAU,EAAC,EAAE,EAAE,EAAE,oBAAoB,EAAE,CAAC;;;;mEAWxC;AAQK;IANL,IAAA,mBAAU,EAAC;QACV,IAAI,EAAE,oBAAoB;QAC1B,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,YAAY;KACrB,CAAC;;;;mEASD;wCAhCU,6BAA6B;IANzC,IAAA,iBAAQ,EAAC;QACR,KAAK,EAAE,iCAAiC;QACxC,WAAW,EACT,mGAAmG;YACnG,+DAA+D;KAClE,CAAC;qCAE8C,sBAAe;GADlD,6BAA6B,CAiCzC"}
|
|
@@ -3,7 +3,7 @@ import { AskUserWorkflow } from '@loopstack/hitl';
|
|
|
3
3
|
export declare class AskUserTextExampleWorkflow extends BaseWorkflow {
|
|
4
4
|
private readonly askUserWorkflow;
|
|
5
5
|
constructor(askUserWorkflow: AskUserWorkflow);
|
|
6
|
-
askName(
|
|
6
|
+
askName(): Promise<void>;
|
|
7
7
|
answerReceived(state: Record<string, unknown>, input: TransitionInput<{
|
|
8
8
|
answer: string;
|
|
9
9
|
}>): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-text-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/ask-user-text/ask-user-text-example.workflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAA+B,KAAK,eAAe,EAAY,MAAM,mBAAmB,CAAC;AAC9G,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIlD,qBAMa,0BAA2B,SAAQ,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAKvD,OAAO
|
|
1
|
+
{"version":3,"file":"ask-user-text-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/ask-user-text/ask-user-text-example.workflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAA+B,KAAK,eAAe,EAAY,MAAM,mBAAmB,CAAC;AAC9G,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIlD,qBAMa,0BAA2B,SAAQ,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAKvD,OAAO;IAaP,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAOhG"}
|
|
@@ -20,7 +20,7 @@ let AskUserTextExampleWorkflow = class AskUserTextExampleWorkflow extends common
|
|
|
20
20
|
super();
|
|
21
21
|
this.askUserWorkflow = askUserWorkflow;
|
|
22
22
|
}
|
|
23
|
-
async askName(
|
|
23
|
+
async askName() {
|
|
24
24
|
await this.askUserWorkflow.run({ question: 'What is your name?' }, { callback: { transition: 'answerReceived' }, show: 'inline', label: 'Waiting for answer...' });
|
|
25
25
|
}
|
|
26
26
|
async answerReceived(state, input) {
|
|
@@ -35,7 +35,7 @@ exports.AskUserTextExampleWorkflow = AskUserTextExampleWorkflow;
|
|
|
35
35
|
__decorate([
|
|
36
36
|
(0, common_1.Transition)({ to: 'waiting_for_answer' }),
|
|
37
37
|
__metadata("design:type", Function),
|
|
38
|
-
__metadata("design:paramtypes", [
|
|
38
|
+
__metadata("design:paramtypes", []),
|
|
39
39
|
__metadata("design:returntype", Promise)
|
|
40
40
|
], AskUserTextExampleWorkflow.prototype, "askName", null);
|
|
41
41
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-text-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/ask-user-text/ask-user-text-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAwB;AACxB,8CAA8G;AAC9G,0CAAkD;AAElD,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAQ/C,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,qBAAY;IAC7B;IAA7B,YAA6B,eAAgC;QAC3D,KAAK,EAAE,CAAC;QADmB,oBAAe,GAAf,eAAe,CAAiB;IAE7D,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO
|
|
1
|
+
{"version":3,"file":"ask-user-text-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/ask-user-text/ask-user-text-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAwB;AACxB,8CAA8G;AAC9G,0CAAkD;AAElD,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAQ/C,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,qBAAY;IAC7B;IAA7B,YAA6B,eAAgC;QAC3D,KAAK,EAAE,CAAC;QADmB,oBAAe,GAAf,eAAe,CAAiB;IAE7D,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAC5B,EAAE,QAAQ,EAAE,oBAAoB,EAAE,EAClC,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAC/F,CAAC;IACJ,CAAC;IAQK,AAAN,KAAK,CAAC,cAAc,CAAC,KAA8B,EAAE,KAA0C;QAC7F,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAe,EAAE;YAC7C,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,UAAU,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG;SACrC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAwC,CAAC,CAAC;IACpF,CAAC;CACF,CAAA;AA1BY,gEAA0B;AAM/B;IADL,IAAA,mBAAU,EAAC,EAAE,EAAE,EAAE,oBAAoB,EAAE,CAAC;;;;yDAMxC;AAQK;IANL,IAAA,mBAAU,EAAC;QACV,IAAI,EAAE,oBAAoB;QAC1B,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,YAAY;KACrB,CAAC;;;;gEAOD;qCAzBU,0BAA0B;IANtC,IAAA,iBAAQ,EAAC;QACR,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,+FAA+F;YAC/F,2FAA2F;KAC9F,CAAC;qCAE8C,sBAAe;GADlD,0BAA0B,CA0BtC"}
|
|
@@ -9,7 +9,7 @@ type ConfirmData = z.infer<typeof ConfirmSchema>;
|
|
|
9
9
|
export declare class ConfirmContentExampleWorkflow extends BaseWorkflow {
|
|
10
10
|
private readonly confirmUserWorkflow;
|
|
11
11
|
constructor(confirmUserWorkflow: ConfirmUserWorkflow);
|
|
12
|
-
showSummary(
|
|
12
|
+
showSummary(): Promise<void>;
|
|
13
13
|
decisionReceived(state: Record<string, unknown>, input: TransitionInput<ConfirmData>): Promise<void>;
|
|
14
14
|
}
|
|
15
15
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-content-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/confirm-content/confirm-content-example.workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAA+B,KAAK,eAAe,EAAY,MAAM,mBAAmB,CAAC;AAC9G,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,QAAA,MAAM,aAAa;;;iBAA6D,CAAC;AACjF,KAAK,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAWjD,qBAMa,6BAA8B,SAAQ,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAAnB,mBAAmB,EAAE,mBAAmB;IAK/D,WAAW
|
|
1
|
+
{"version":3,"file":"confirm-content-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/confirm-content/confirm-content-example.workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAA+B,KAAK,eAAe,EAAY,MAAM,mBAAmB,CAAC;AAC9G,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,QAAA,MAAM,aAAa;;;iBAA6D,CAAC;AACjF,KAAK,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAWjD,qBAMa,6BAA8B,SAAQ,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAAnB,mBAAmB,EAAE,mBAAmB;IAK/D,WAAW;IAaX,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC;CAO3F"}
|
|
@@ -28,7 +28,7 @@ let ConfirmContentExampleWorkflow = class ConfirmContentExampleWorkflow extends
|
|
|
28
28
|
super();
|
|
29
29
|
this.confirmUserWorkflow = confirmUserWorkflow;
|
|
30
30
|
}
|
|
31
|
-
async showSummary(
|
|
31
|
+
async showSummary() {
|
|
32
32
|
await this.confirmUserWorkflow.run({ markdown: DEPLOY_SUMMARY }, { callback: { transition: 'decisionReceived' }, show: 'inline', label: 'Waiting for confirmation...' });
|
|
33
33
|
}
|
|
34
34
|
async decisionReceived(state, input) {
|
|
@@ -43,7 +43,7 @@ exports.ConfirmContentExampleWorkflow = ConfirmContentExampleWorkflow;
|
|
|
43
43
|
__decorate([
|
|
44
44
|
(0, common_1.Transition)({ to: 'waiting_for_confirmation' }),
|
|
45
45
|
__metadata("design:type", Function),
|
|
46
|
-
__metadata("design:paramtypes", [
|
|
46
|
+
__metadata("design:paramtypes", []),
|
|
47
47
|
__metadata("design:returntype", Promise)
|
|
48
48
|
], ConfirmContentExampleWorkflow.prototype, "showSummary", null);
|
|
49
49
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-content-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/confirm-content/confirm-content-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAwB;AACxB,8CAA8G;AAC9G,0CAAsD;AAEtD,MAAM,aAAa,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAGjF,MAAM,cAAc,GAAG;;;;;;;SAOd,CAAC;AAQH,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,qBAAY;IAChC;IAA7B,YAA6B,mBAAwC;QACnE,KAAK,EAAE,CAAC;QADmB,wBAAmB,GAAnB,mBAAmB,CAAqB;IAErE,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW
|
|
1
|
+
{"version":3,"file":"confirm-content-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/confirm-content/confirm-content-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAwB;AACxB,8CAA8G;AAC9G,0CAAsD;AAEtD,MAAM,aAAa,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAGjF,MAAM,cAAc,GAAG;;;;;;;SAOd,CAAC;AAQH,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,qBAAY;IAChC;IAA7B,YAA6B,mBAAwC;QACnE,KAAK,EAAE,CAAC;QADmB,wBAAmB,GAAnB,mBAAmB,CAAqB;IAErE,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAChC,EAAE,QAAQ,EAAE,cAAc,EAAE,EAC5B,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,6BAA6B,EAAE,CACvG,CAAC;IACJ,CAAC;IAQK,AAAN,KAAK,CAAC,gBAAgB,CAAC,KAA8B,EAAE,KAAmC;QACxF,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAe,EAAE;YAC7C,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,gCAAgC;SAC3G,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,EAAwC,CAAC,CAAC;IAC5F,CAAC;CACF,CAAA;AA1BY,sEAA6B;AAMlC;IADL,IAAA,mBAAU,EAAC,EAAE,EAAE,EAAE,0BAA0B,EAAE,CAAC;;;;gEAM9C;AAQK;IANL,IAAA,mBAAU,EAAC;QACV,IAAI,EAAE,0BAA0B;QAChC,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,aAAa;KACtB,CAAC;;;;qEAOD;wCAzBU,6BAA6B;IANzC,IAAA,iBAAQ,EAAC;QACR,KAAK,EAAE,gCAAgC;QACvC,WAAW,EACT,4GAA4G;YAC5G,qFAAqF;KACxF,CAAC;qCAEkD,0BAAmB;GAD1D,6BAA6B,CA0BzC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const FeedbackFormDocumentSchema: z.ZodObject<{
|
|
3
|
+
subject: z.ZodString;
|
|
3
4
|
rating: z.ZodNumber;
|
|
4
5
|
comment: z.ZodString;
|
|
5
6
|
}, z.core.$strip>;
|
|
6
7
|
export declare class FeedbackFormDocument {
|
|
8
|
+
subject: string;
|
|
7
9
|
rating: number;
|
|
8
10
|
comment: string;
|
|
9
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback-form-document.d.ts","sourceRoot":"","sources":["../../../src/workflows/inline-form/feedback-form-document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,0BAA0B
|
|
1
|
+
{"version":3,"file":"feedback-form-document.d.ts","sourceRoot":"","sources":["../../../src/workflows/inline-form/feedback-form-document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,0BAA0B;;;;iBAIrC,CAAC;AAEH,qBAIa,oBAAoB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -10,10 +10,12 @@ exports.FeedbackFormDocument = exports.FeedbackFormDocumentSchema = void 0;
|
|
|
10
10
|
const zod_1 = require("zod");
|
|
11
11
|
const common_1 = require("@loopstack/common");
|
|
12
12
|
exports.FeedbackFormDocumentSchema = zod_1.z.object({
|
|
13
|
+
subject: zod_1.z.string(),
|
|
13
14
|
rating: zod_1.z.number().min(1).max(5),
|
|
14
15
|
comment: zod_1.z.string(),
|
|
15
16
|
});
|
|
16
17
|
let FeedbackFormDocument = class FeedbackFormDocument {
|
|
18
|
+
subject;
|
|
17
19
|
rating;
|
|
18
20
|
comment;
|
|
19
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback-form-document.js","sourceRoot":"","sources":["../../../src/workflows/inline-form/feedback-form-document.ts"],"names":[],"mappings":";;;;;;;;;AAAA,6BAAwB;AACxB,8CAA6C;AAEhC,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAMI,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,MAAM,CAAS;IACf,OAAO,CAAS;CACjB,CAAA;
|
|
1
|
+
{"version":3,"file":"feedback-form-document.js","sourceRoot":"","sources":["../../../src/workflows/inline-form/feedback-form-document.ts"],"names":[],"mappings":";;;;;;;;;AAAA,6BAAwB;AACxB,8CAA6C;AAEhC,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAMI,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,OAAO,CAAS;CACjB,CAAA;AAJY,oDAAoB;+BAApB,oBAAoB;IAJhC,IAAA,iBAAQ,EAAC;QACR,MAAM,EAAE,kCAA0B;QAClC,MAAM,EAAE,+BAA+B;KACxC,CAAC;GACW,oBAAoB,CAIhC"}
|
|
@@ -4,7 +4,7 @@ import type { TransitionInput } from '@loopstack/common';
|
|
|
4
4
|
import { FeedbackFormDocumentSchema } from './feedback-form-document.js';
|
|
5
5
|
type FeedbackPayload = z.infer<typeof FeedbackFormDocumentSchema>;
|
|
6
6
|
export declare class InlineFormExampleWorkflow extends BaseWorkflow {
|
|
7
|
-
showForm(
|
|
7
|
+
showForm(): Promise<void>;
|
|
8
8
|
submitFeedback(state: Record<string, unknown>, input: TransitionInput<FeedbackPayload>): Promise<void>;
|
|
9
9
|
}
|
|
10
10
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline-form-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/inline-form/inline-form-example.workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAyC,MAAM,mBAAmB,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAwB,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAE/F,KAAK,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAElE,qBAMa,yBAA0B,SAAQ,YAAY;IAEnD,QAAQ
|
|
1
|
+
{"version":3,"file":"inline-form-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/inline-form/inline-form-example.workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAyC,MAAM,mBAAmB,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAwB,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAE/F,KAAK,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAElE,qBAMa,yBAA0B,SAAQ,YAAY;IAEnD,QAAQ;IAiBR,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,eAAe,CAAC;CAW7F"}
|
|
@@ -13,15 +13,15 @@ exports.InlineFormExampleWorkflow = void 0;
|
|
|
13
13
|
const common_1 = require("@loopstack/common");
|
|
14
14
|
const feedback_form_document_js_1 = require("./feedback-form-document.js");
|
|
15
15
|
let InlineFormExampleWorkflow = class InlineFormExampleWorkflow extends common_1.BaseWorkflow {
|
|
16
|
-
async showForm(
|
|
17
|
-
await this.documentStore.save(feedback_form_document_js_1.FeedbackFormDocument, { rating: 3, comment: '' }, { key: 'feedback' });
|
|
16
|
+
async showForm() {
|
|
17
|
+
await this.documentStore.save(feedback_form_document_js_1.FeedbackFormDocument, { subject: 'Loopstack HITL forms', rating: 3, comment: '' }, { key: 'feedback' });
|
|
18
18
|
}
|
|
19
19
|
async submitFeedback(state, input) {
|
|
20
20
|
const payload = input.data;
|
|
21
21
|
await this.documentStore.save(feedback_form_document_js_1.FeedbackFormDocument, payload, { key: 'feedback' });
|
|
22
22
|
await this.documentStore.save(common_1.MessageDocument, {
|
|
23
23
|
role: 'assistant',
|
|
24
|
-
text: `Thanks for your feedback! Rating: ${payload.rating}/5. Comment: ${payload.comment}`,
|
|
24
|
+
text: `Thanks for your feedback on "${payload.subject}"! Rating: ${payload.rating}/5. Comment: ${payload.comment}`,
|
|
25
25
|
});
|
|
26
26
|
this.setResult({ feedback: payload });
|
|
27
27
|
}
|
|
@@ -30,7 +30,7 @@ exports.InlineFormExampleWorkflow = InlineFormExampleWorkflow;
|
|
|
30
30
|
__decorate([
|
|
31
31
|
(0, common_1.Transition)({ to: 'waiting_for_feedback' }),
|
|
32
32
|
__metadata("design:type", Function),
|
|
33
|
-
__metadata("design:paramtypes", [
|
|
33
|
+
__metadata("design:paramtypes", []),
|
|
34
34
|
__metadata("design:returntype", Promise)
|
|
35
35
|
], InlineFormExampleWorkflow.prototype, "showForm", null);
|
|
36
36
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline-form-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/inline-form/inline-form-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,8CAAwF;AAExF,2EAA+F;AAUxF,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,qBAAY;IAEnD,AAAN,KAAK,CAAC,QAAQ
|
|
1
|
+
{"version":3,"file":"inline-form-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/inline-form/inline-form-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,8CAAwF;AAExF,2EAA+F;AAUxF,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,qBAAY;IAEnD,AAAN,KAAK,CAAC,QAAQ;QAIZ,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAC3B,gDAAoB,EACpB,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAC3D,EAAE,GAAG,EAAE,UAAU,EAAE,CACpB,CAAC;IACJ,CAAC;IAQK,AAAN,KAAK,CAAC,cAAc,CAAC,KAA8B,EAAE,KAAuC;QAC1F,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3B,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gDAAoB,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;QAElF,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAe,EAAE;YAC7C,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,gCAAgC,OAAO,CAAC,OAAO,cAAc,OAAO,CAAC,MAAM,gBAAgB,OAAO,CAAC,OAAO,EAAE;SACnH,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAwC,CAAC,CAAC;IAC9E,CAAC;CACF,CAAA;AA9BY,8DAAyB;AAE9B;IADL,IAAA,mBAAU,EAAC,EAAE,EAAE,EAAE,sBAAsB,EAAE,CAAC;;;;yDAU1C;AAQK;IANL,IAAA,mBAAU,EAAC;QACV,IAAI,EAAE,sBAAsB;QAC5B,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,sDAA0B;KACnC,CAAC;;;;+DAWD;oCA7BU,yBAAyB;IANrC,IAAA,iBAAQ,EAAC;QACR,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,oFAAoF;YACpF,2GAA2G;KAC9G,CAAC;GACW,yBAAyB,CA8BrC"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { BaseWorkflow } from '@loopstack/common';
|
|
2
2
|
import type { TransitionInput } from '@loopstack/common';
|
|
3
|
+
import { LlmGenerateTextTool } from '@loopstack/llm-provider-module';
|
|
3
4
|
export declare class PromptInputChatExampleWorkflow extends BaseWorkflow {
|
|
4
|
-
|
|
5
|
+
private readonly llmGenerateText;
|
|
6
|
+
constructor(llmGenerateText: LlmGenerateTextTool);
|
|
7
|
+
greet(): Promise<void>;
|
|
5
8
|
userMessage(state: Record<string, unknown>, input: TransitionInput<string>): Promise<void>;
|
|
6
|
-
|
|
9
|
+
generateReply(): Promise<void>;
|
|
7
10
|
}
|
|
8
11
|
//# sourceMappingURL=prompt-input-chat-example.workflow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-input-chat-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/prompt-input-chat/prompt-input-chat-example.workflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"prompt-input-chat-example.workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/prompt-input-chat/prompt-input-chat-example.workflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAwB,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAsB,MAAM,gCAAgC,CAAC;AAEzF,qBAOa,8BAA+B,SAAQ,YAAY;IAClD,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,mBAAmB;IAK3D,KAAK;IAaL,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC;IAM1E,aAAa;CAcpB"}
|
|
@@ -12,45 +12,58 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.PromptInputChatExampleWorkflow = void 0;
|
|
13
13
|
const zod_1 = require("zod");
|
|
14
14
|
const common_1 = require("@loopstack/common");
|
|
15
|
+
const llm_provider_module_1 = require("@loopstack/llm-provider-module");
|
|
15
16
|
let PromptInputChatExampleWorkflow = class PromptInputChatExampleWorkflow extends common_1.BaseWorkflow {
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
llmGenerateText;
|
|
18
|
+
constructor(llmGenerateText) {
|
|
19
|
+
super();
|
|
20
|
+
this.llmGenerateText = llmGenerateText;
|
|
21
|
+
}
|
|
22
|
+
async greet() {
|
|
23
|
+
await this.documentStore.save(llm_provider_module_1.LlmMessageDocument, {
|
|
18
24
|
role: 'assistant',
|
|
19
|
-
text: 'Hi!
|
|
25
|
+
text: 'Hi! Ask me anything.',
|
|
20
26
|
});
|
|
21
27
|
}
|
|
22
28
|
async userMessage(state, input) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
29
|
+
await this.documentStore.save(llm_provider_module_1.LlmMessageDocument, { role: 'user', text: input.data });
|
|
30
|
+
}
|
|
31
|
+
async generateReply() {
|
|
32
|
+
await this.llmGenerateText.call({}, {
|
|
33
|
+
config: {
|
|
34
|
+
provider: 'claude',
|
|
35
|
+
model: 'claude-sonnet-4-6',
|
|
36
|
+
system: 'You are a friendly, concise chat assistant.',
|
|
37
|
+
},
|
|
38
|
+
});
|
|
26
39
|
}
|
|
27
|
-
loop(_state) { }
|
|
28
40
|
};
|
|
29
41
|
exports.PromptInputChatExampleWorkflow = PromptInputChatExampleWorkflow;
|
|
30
42
|
__decorate([
|
|
31
43
|
(0, common_1.Transition)({ to: 'waiting_for_user' }),
|
|
32
44
|
__metadata("design:type", Function),
|
|
33
|
-
__metadata("design:paramtypes", [
|
|
45
|
+
__metadata("design:paramtypes", []),
|
|
34
46
|
__metadata("design:returntype", Promise)
|
|
35
47
|
], PromptInputChatExampleWorkflow.prototype, "greet", null);
|
|
36
48
|
__decorate([
|
|
37
|
-
(0, common_1.Transition)({ from: 'waiting_for_user', to: '
|
|
49
|
+
(0, common_1.Transition)({ from: 'waiting_for_user', to: 'generating_reply', wait: true, schema: zod_1.z.string() }),
|
|
38
50
|
__metadata("design:type", Function),
|
|
39
51
|
__metadata("design:paramtypes", [Object, Object]),
|
|
40
52
|
__metadata("design:returntype", Promise)
|
|
41
53
|
], PromptInputChatExampleWorkflow.prototype, "userMessage", null);
|
|
42
54
|
__decorate([
|
|
43
|
-
(0, common_1.Transition)({ from: '
|
|
55
|
+
(0, common_1.Transition)({ from: 'generating_reply', to: 'waiting_for_user' }),
|
|
44
56
|
__metadata("design:type", Function),
|
|
45
|
-
__metadata("design:paramtypes", [
|
|
46
|
-
__metadata("design:returntype",
|
|
47
|
-
], PromptInputChatExampleWorkflow.prototype, "
|
|
57
|
+
__metadata("design:paramtypes", []),
|
|
58
|
+
__metadata("design:returntype", Promise)
|
|
59
|
+
], PromptInputChatExampleWorkflow.prototype, "generateReply", null);
|
|
48
60
|
exports.PromptInputChatExampleWorkflow = PromptInputChatExampleWorkflow = __decorate([
|
|
49
61
|
(0, common_1.Workflow)({
|
|
50
62
|
title: 'HITL - Prompt Input Chat Example',
|
|
51
|
-
description: 'Predefined-workflow HITL via the prompt-input widget. The workflow loops: it waits for a user ' +
|
|
52
|
-
'message,
|
|
63
|
+
description: 'Predefined-workflow HITL chat via the prompt-input widget. The workflow loops: it waits for a user ' +
|
|
64
|
+
'message, generates an LLM reply from the full conversation history, and re-enters the waiting state.',
|
|
53
65
|
widget: './prompt-input-chat-example.workflow.yaml',
|
|
54
|
-
})
|
|
66
|
+
}),
|
|
67
|
+
__metadata("design:paramtypes", [llm_provider_module_1.LlmGenerateTextTool])
|
|
55
68
|
], PromptInputChatExampleWorkflow);
|
|
56
69
|
//# sourceMappingURL=prompt-input-chat-example.workflow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-input-chat-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/prompt-input-chat/prompt-input-chat-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"prompt-input-chat-example.workflow.js","sourceRoot":"","sources":["../../../src/workflows/prompt-input-chat/prompt-input-chat-example.workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAwB;AACxB,8CAAuE;AAEvE,wEAAyF;AASlF,IAAM,8BAA8B,GAApC,MAAM,8BAA+B,SAAQ,qBAAY;IACjC;IAA7B,YAA6B,eAAoC;QAC/D,KAAK,EAAE,CAAC;QADmB,oBAAe,GAAf,eAAe,CAAqB;IAEjE,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK;QAGT,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wCAAkB,EAAE;YAChD,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,sBAAsB;SAC7B,CAAC,CAAC;IACL,CAAC;IAMK,AAAN,KAAK,CAAC,WAAW,CAAC,KAA8B,EAAE,KAA8B;QAE9E,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wCAAkB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACxF,CAAC;IAGK,AAAN,KAAK,CAAC,aAAa;QAGjB,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAC7B,EAAE,EACF;YACE,MAAM,EAAE;gBACN,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,mBAAmB;gBAC1B,MAAM,EAAE,6CAA6C;aACtD;SACF,CACF,CAAC;IACJ,CAAC;CACF,CAAA;AAvCY,wEAA8B;AAMnC;IADL,IAAA,mBAAU,EAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC;;;;2DAQtC;AAMK;IADL,IAAA,mBAAU,EAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC;;;;iEAIhG;AAGK;IADL,IAAA,mBAAU,EAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC;;;;mEAchE;yCAtCU,8BAA8B;IAP1C,IAAA,iBAAQ,EAAC;QACR,KAAK,EAAE,kCAAkC;QACzC,WAAW,EACT,qGAAqG;YACrG,sGAAsG;QACxG,MAAM,EAAE,2CAA2C;KACpD,CAAC;qCAE8C,yCAAmB;GADtD,8BAA8B,CAuC1C"}
|
package/package.json
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"prompt-input",
|
|
15
15
|
"workflow"
|
|
16
16
|
],
|
|
17
|
-
"version": "0.
|
|
17
|
+
"version": "0.2.0",
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"author": {
|
|
20
20
|
"name": "Jakob Klippel",
|
|
@@ -31,7 +31,8 @@
|
|
|
31
31
|
"compile": "tsc --noEmit",
|
|
32
32
|
"format": "prettier --write .",
|
|
33
33
|
"lint": "eslint .",
|
|
34
|
-
"test": "vitest run
|
|
34
|
+
"test": "vitest run",
|
|
35
|
+
"test:live": "vitest run --config vitest.live.config.ts",
|
|
35
36
|
"watch": "nest build --watch"
|
|
36
37
|
},
|
|
37
38
|
"dependencies": {
|
package/src/workflows/agent-ask-clarification/__tests__/agent-ask-clarification-example.live.spec.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { AgentModule } from '@loopstack/agent';
|
|
3
|
+
import { LlmProviderModule } from '@loopstack/llm-provider-module';
|
|
4
|
+
import { runWorkflow } from '@loopstack/testing';
|
|
5
|
+
import { HitlExamplesModule } from '../../../hitl-examples.module';
|
|
6
|
+
import { AgentAskClarificationExampleWorkflow } from '../agent-ask-clarification-example.workflow';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Live-LLM check-up (`npm run test:live`, needs ANTHROPIC_API_KEY): the real model runs the
|
|
10
|
+
* agent loop and should ask for clarification per its system prompt; the scripted answer
|
|
11
|
+
* resumes it. Assertions are structural — completion and a non-empty recommendation.
|
|
12
|
+
*/
|
|
13
|
+
describe('AgentAskClarificationExampleWorkflow — live', () => {
|
|
14
|
+
it('asks for clarification, receives the answer, and recommends a destination', async () => {
|
|
15
|
+
const run = await runWorkflow(AgentAskClarificationExampleWorkflow, undefined, {
|
|
16
|
+
imports: [LlmProviderModule, AgentModule, HitlExamplesModule],
|
|
17
|
+
answers: { userAnswered: { answer: 'Budget €2000, warm climate please' } },
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
expect(run.error).toBeUndefined();
|
|
21
|
+
expect(run.status).toBe('completed');
|
|
22
|
+
expect(run.path).toEqual(['start', 'agentComplete']);
|
|
23
|
+
|
|
24
|
+
const result = run.result as { response: string };
|
|
25
|
+
expect(result.response.length).toBeGreaterThan(0);
|
|
26
|
+
});
|
|
27
|
+
});
|