@loopstack/core 0.37.0 → 0.39.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/dist/common/errors/index.d.ts +1 -0
- package/dist/common/errors/index.d.ts.map +1 -1
- package/dist/common/errors/index.js +1 -0
- package/dist/common/errors/index.js.map +1 -1
- package/dist/common/errors/transition-aborted.error.d.ts +4 -0
- package/dist/common/errors/transition-aborted.error.d.ts.map +1 -0
- package/dist/common/errors/transition-aborted.error.js +7 -0
- package/dist/common/errors/transition-aborted.error.js.map +1 -0
- package/dist/common/interfaces/app-config.interface.d.ts +1 -0
- package/dist/common/interfaces/app-config.interface.d.ts.map +1 -1
- package/dist/common/services/index.d.ts +1 -0
- package/dist/common/services/index.d.ts.map +1 -1
- package/dist/common/services/index.js +1 -0
- package/dist/common/services/index.js.map +1 -1
- package/dist/common/services/system-clock.d.ts +6 -0
- package/dist/common/services/system-clock.d.ts.map +1 -0
- package/dist/common/services/system-clock.js +21 -0
- package/dist/common/services/system-clock.js.map +1 -0
- package/dist/loop-core.module.d.ts +0 -1
- package/dist/loop-core.module.d.ts.map +1 -1
- package/dist/loop-core.module.js +10 -5
- package/dist/loop-core.module.js.map +1 -1
- package/dist/persistence/services/workflow.service.d.ts.map +1 -1
- package/dist/persistence/services/workflow.service.js +4 -1
- package/dist/persistence/services/workflow.service.js.map +1 -1
- package/dist/scheduler/services/task-processor/run-workflow-task-processor.service.d.ts +1 -0
- package/dist/scheduler/services/task-processor/run-workflow-task-processor.service.d.ts.map +1 -1
- package/dist/scheduler/services/task-processor/run-workflow-task-processor.service.js +8 -0
- package/dist/scheduler/services/task-processor/run-workflow-task-processor.service.js.map +1 -1
- package/dist/scheduler/services/task-processor.service.d.ts.map +1 -1
- package/dist/scheduler/services/task-processor.service.js +1 -0
- package/dist/scheduler/services/task-processor.service.js.map +1 -1
- package/dist/scheduler/services/workflow-runner.service.d.ts.map +1 -1
- package/dist/scheduler/services/workflow-runner.service.js +7 -1
- package/dist/scheduler/services/workflow-runner.service.js.map +1 -1
- package/dist/scheduler/task-queue.module.d.ts.map +1 -1
- package/dist/scheduler/task-queue.module.js +9 -5
- package/dist/scheduler/task-queue.module.js.map +1 -1
- package/dist/workflow-processor/services/document-persistence.service.d.ts.map +1 -1
- package/dist/workflow-processor/services/document-persistence.service.js +12 -1
- package/dist/workflow-processor/services/document-persistence.service.js.map +1 -1
- package/dist/workflow-processor/services/document-store.service.d.ts +1 -0
- package/dist/workflow-processor/services/document-store.service.d.ts.map +1 -1
- package/dist/workflow-processor/services/document-store.service.js +14 -1
- package/dist/workflow-processor/services/document-store.service.js.map +1 -1
- package/dist/workflow-processor/services/index.d.ts +2 -1
- package/dist/workflow-processor/services/index.d.ts.map +1 -1
- package/dist/workflow-processor/services/index.js +2 -1
- package/dist/workflow-processor/services/index.js.map +1 -1
- package/dist/workflow-processor/services/processors/workflow-processor.service.d.ts +7 -2
- package/dist/workflow-processor/services/processors/workflow-processor.service.d.ts.map +1 -1
- package/dist/workflow-processor/services/processors/workflow-processor.service.js +163 -16
- package/dist/workflow-processor/services/processors/workflow-processor.service.js.map +1 -1
- package/dist/workflow-processor/services/run-trace.service.d.ts +19 -0
- package/dist/workflow-processor/services/run-trace.service.d.ts.map +1 -0
- package/dist/workflow-processor/services/run-trace.service.js +110 -0
- package/dist/workflow-processor/services/run-trace.service.js.map +1 -0
- package/dist/workflow-processor/services/stateless-child-runner.service.d.ts +14 -0
- package/dist/workflow-processor/services/stateless-child-runner.service.d.ts.map +1 -0
- package/dist/workflow-processor/services/stateless-child-runner.service.js +40 -0
- package/dist/workflow-processor/services/stateless-child-runner.service.js.map +1 -0
- package/dist/workflow-processor/services/tool-pipeline.service.d.ts +4 -1
- package/dist/workflow-processor/services/tool-pipeline.service.d.ts.map +1 -1
- package/dist/workflow-processor/services/tool-pipeline.service.js +63 -5
- package/dist/workflow-processor/services/tool-pipeline.service.js.map +1 -1
- package/dist/workflow-processor/services/workflow-orchestration.service.d.ts +4 -1
- package/dist/workflow-processor/services/workflow-orchestration.service.d.ts.map +1 -1
- package/dist/workflow-processor/services/workflow-orchestration.service.js +56 -4
- package/dist/workflow-processor/services/workflow-orchestration.service.js.map +1 -1
- package/dist/workflow-processor/utils/execution-scope.d.ts +10 -3
- package/dist/workflow-processor/utils/execution-scope.d.ts.map +1 -1
- package/dist/workflow-processor/utils/execution-scope.js.map +1 -1
- package/dist/workflow-processor/utils/index.d.ts +1 -0
- package/dist/workflow-processor/utils/index.d.ts.map +1 -1
- package/dist/workflow-processor/utils/index.js +1 -0
- package/dist/workflow-processor/utils/index.js.map +1 -1
- package/dist/workflow-processor/utils/run-trace-collector.d.ts +14 -0
- package/dist/workflow-processor/utils/run-trace-collector.d.ts.map +1 -0
- package/dist/workflow-processor/utils/run-trace-collector.js +44 -0
- package/dist/workflow-processor/utils/run-trace-collector.js.map +1 -0
- package/package.json +2 -2
- package/dist/workflow-processor/services/tool-logging.interceptor.d.ts +0 -6
- package/dist/workflow-processor/services/tool-logging.interceptor.d.ts.map +0 -1
- package/dist/workflow-processor/services/tool-logging.interceptor.js +0 -34
- package/dist/workflow-processor/services/tool-logging.interceptor.js.map +0 -1
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
var RunTraceService_1;
|
|
14
|
+
import { Injectable, Logger } from '@nestjs/common';
|
|
15
|
+
import { ConfigService } from '@nestjs/config';
|
|
16
|
+
import { InjectRepository } from '@nestjs/typeorm';
|
|
17
|
+
import { In, Repository } from 'typeorm';
|
|
18
|
+
import { RunTraceEventEntity } from '@loopstack/common';
|
|
19
|
+
const STATE_DIFF_VALUE_CAP = 2_000;
|
|
20
|
+
let RunTraceService = RunTraceService_1 = class RunTraceService {
|
|
21
|
+
repository;
|
|
22
|
+
configService;
|
|
23
|
+
logger = new Logger(RunTraceService_1.name);
|
|
24
|
+
constructor(repository, configService) {
|
|
25
|
+
this.repository = repository;
|
|
26
|
+
this.configService = configService;
|
|
27
|
+
}
|
|
28
|
+
isEnabled(runFlag) {
|
|
29
|
+
return runFlag === true || this.configService.get('app.trace') === true;
|
|
30
|
+
}
|
|
31
|
+
async saveBatch(context, events) {
|
|
32
|
+
if (events.length === 0)
|
|
33
|
+
return;
|
|
34
|
+
try {
|
|
35
|
+
const rows = events.map((event) => this.repository.create({
|
|
36
|
+
workflowId: context.workflowId,
|
|
37
|
+
workflowName: context.workflowName,
|
|
38
|
+
workspaceId: context.workspaceId,
|
|
39
|
+
seq: event.seq,
|
|
40
|
+
type: event.type,
|
|
41
|
+
payload: event.type === 'transition.completed' ? { ...event, stateDiff: capStateDiff(event.stateDiff) } : event,
|
|
42
|
+
}));
|
|
43
|
+
await this.repository.save(rows);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
this.logger.warn(`Failed to persist ${events.length} trace event(s) for workflow ${context.workflowId}: ` +
|
|
47
|
+
(error instanceof Error ? error.message : String(error)));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async nextSeq(workflowId) {
|
|
51
|
+
try {
|
|
52
|
+
const row = (await this.repository
|
|
53
|
+
.createQueryBuilder('e')
|
|
54
|
+
.select('MAX(e.seq)', 'max')
|
|
55
|
+
.where('e.workflowId = :workflowId', { workflowId })
|
|
56
|
+
.getRawOne());
|
|
57
|
+
return row?.max === null || row?.max === undefined ? 0 : Number(row.max) + 1;
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
this.logger.warn(`Failed to read max trace seq for workflow ${workflowId}: ` +
|
|
61
|
+
(error instanceof Error ? error.message : String(error)));
|
|
62
|
+
return 0;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async findByRunTree(rootId, types) {
|
|
66
|
+
const rows = (await this.repository.query(`WITH RECURSIVE tree AS (
|
|
67
|
+
SELECT id FROM core_workflow WHERE id = $1
|
|
68
|
+
UNION ALL
|
|
69
|
+
SELECT w.id FROM core_workflow w JOIN tree t ON w.parent_id = t.id
|
|
70
|
+
)
|
|
71
|
+
SELECT id FROM tree`, [rootId]));
|
|
72
|
+
return this.repository.find({
|
|
73
|
+
where: {
|
|
74
|
+
workflowId: In(rows.map((row) => row.id)),
|
|
75
|
+
...(types ? { type: In(types) } : {}),
|
|
76
|
+
},
|
|
77
|
+
order: { createdAt: 'ASC', seq: 'ASC' },
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
RunTraceService = RunTraceService_1 = __decorate([
|
|
82
|
+
Injectable(),
|
|
83
|
+
__param(0, InjectRepository(RunTraceEventEntity)),
|
|
84
|
+
__metadata("design:paramtypes", [Repository,
|
|
85
|
+
ConfigService])
|
|
86
|
+
], RunTraceService);
|
|
87
|
+
export { RunTraceService };
|
|
88
|
+
function capStateDiff(diff) {
|
|
89
|
+
const capped = {};
|
|
90
|
+
for (const [key, change] of Object.entries(diff)) {
|
|
91
|
+
capped[key] = {
|
|
92
|
+
...('before' in change ? { before: capValue(change.before) } : {}),
|
|
93
|
+
...('after' in change ? { after: capValue(change.after) } : {}),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return capped;
|
|
97
|
+
}
|
|
98
|
+
function capValue(value) {
|
|
99
|
+
try {
|
|
100
|
+
const serialized = JSON.stringify(value);
|
|
101
|
+
if (serialized && serialized.length > STATE_DIFF_VALUE_CAP) {
|
|
102
|
+
return `[truncated: ${serialized.length} chars]`;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
return '[unserializable]';
|
|
107
|
+
}
|
|
108
|
+
return value;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=run-trace.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-trace.service.js","sourceRoot":"","sources":["../../../src/workflow-processor/services/run-trace.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { WorkflowInterface, WorkflowMetadataInterface } from '@loopstack/common';
|
|
2
|
+
import { BlockProcessor } from './block-processor.service.js';
|
|
3
|
+
export declare class StatelessChildRunner {
|
|
4
|
+
private readonly blockProcessor;
|
|
5
|
+
private readonly logger;
|
|
6
|
+
constructor(blockProcessor: BlockProcessor);
|
|
7
|
+
run(workflow: WorkflowInterface, params: {
|
|
8
|
+
workflowName: string;
|
|
9
|
+
userId: string;
|
|
10
|
+
workspaceId: string;
|
|
11
|
+
args?: Record<string, unknown>;
|
|
12
|
+
}): Promise<WorkflowMetadataInterface>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=stateless-child-runner.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stateless-child-runner.service.d.ts","sourceRoot":"","sources":["../../../src/workflow-processor/services/stateless-child-runner.service.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,iBAAiB,EACjB,yBAAyB,EAE1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAO9D,qBACa,oBAAoB;IAGnB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAF3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;gBAEnC,cAAc,EAAE,cAAc;IAErD,GAAG,CACP,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,GACA,OAAO,CAAC,yBAAyB,CAAC;CAiBtC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var StatelessChildRunner_1;
|
|
11
|
+
import { Injectable, Logger } from '@nestjs/common';
|
|
12
|
+
import { getBlockArgsSchema, } from '@loopstack/common';
|
|
13
|
+
import { BlockProcessor } from './block-processor.service.js';
|
|
14
|
+
let StatelessChildRunner = StatelessChildRunner_1 = class StatelessChildRunner {
|
|
15
|
+
blockProcessor;
|
|
16
|
+
logger = new Logger(StatelessChildRunner_1.name);
|
|
17
|
+
constructor(blockProcessor) {
|
|
18
|
+
this.blockProcessor = blockProcessor;
|
|
19
|
+
}
|
|
20
|
+
async run(workflow, params) {
|
|
21
|
+
const ctx = {
|
|
22
|
+
root: params.workflowName,
|
|
23
|
+
userId: params.userId,
|
|
24
|
+
workspaceId: params.workspaceId,
|
|
25
|
+
labels: [],
|
|
26
|
+
payload: {},
|
|
27
|
+
options: { stateless: true },
|
|
28
|
+
};
|
|
29
|
+
this.logger.debug(`Running stateless sub-workflow inline: ${params.workflowName}`);
|
|
30
|
+
const schema = getBlockArgsSchema(workflow);
|
|
31
|
+
const validArgs = schema ? schema.parse(params.args ?? {}) : params.args;
|
|
32
|
+
return this.blockProcessor.processBlock(workflow, validArgs, ctx);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
StatelessChildRunner = StatelessChildRunner_1 = __decorate([
|
|
36
|
+
Injectable(),
|
|
37
|
+
__metadata("design:paramtypes", [BlockProcessor])
|
|
38
|
+
], StatelessChildRunner);
|
|
39
|
+
export { StatelessChildRunner };
|
|
40
|
+
//# sourceMappingURL=stateless-child-runner.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stateless-child-runner.service.js","sourceRoot":"","sources":["../../../src/workflow-processor/services/stateless-child-runner.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAIL,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAQvD,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAGF;IAFZ,MAAM,GAAG,IAAI,MAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;IAEhE,YAA6B,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAE/D,KAAK,CAAC,GAAG,CACP,QAA2B,EAC3B,MAKC;QAED,MAAM,GAAG,GAAuB;YAC9B,IAAI,EAAE,MAAM,CAAC,YAAY;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;SAC7B,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAEnF,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAA6B,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAEtG,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC;CACF,CAAA;AA9BY,oBAAoB;IADhC,UAAU,EAAE;qCAIkC,cAAc;GAHhD,oBAAoB,CA8BhC"}
|
|
@@ -2,13 +2,16 @@ import { OnModuleInit } from '@nestjs/common';
|
|
|
2
2
|
import { DiscoveryService } from '@nestjs/core';
|
|
3
3
|
import { BaseTool, ToolCallOptions, ToolEnvelope, ToolPipeline } from '@loopstack/common';
|
|
4
4
|
import { ExecutionScope } from '../utils/index.js';
|
|
5
|
+
import { DocumentStore } from './document-store.service.js';
|
|
5
6
|
export declare class ToolPipelineService implements ToolPipeline, OnModuleInit {
|
|
6
7
|
private readonly executionScope;
|
|
7
8
|
private readonly discoveryService;
|
|
9
|
+
private readonly documentStore;
|
|
8
10
|
private readonly logger;
|
|
9
11
|
private interceptors;
|
|
10
|
-
constructor(executionScope: ExecutionScope, discoveryService: DiscoveryService);
|
|
12
|
+
constructor(executionScope: ExecutionScope, discoveryService: DiscoveryService, documentStore: DocumentStore);
|
|
11
13
|
onModuleInit(): void;
|
|
12
14
|
execute<TArgs extends object, TConfig extends object, TResult, TMeta = Record<string, unknown>>(tool: BaseTool<TArgs, TConfig, TResult, TMeta>, args: TArgs | undefined, options?: ToolCallOptions<TConfig>): Promise<ToolEnvelope<TResult, TMeta>>;
|
|
15
|
+
private applyDocumentDeclarations;
|
|
13
16
|
}
|
|
14
17
|
//# sourceMappingURL=tool-pipeline.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-pipeline.service.d.ts","sourceRoot":"","sources":["../../../src/workflow-processor/services/tool-pipeline.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,QAAQ,EAGR,eAAe,
|
|
1
|
+
{"version":3,"file":"tool-pipeline.service.d.ts","sourceRoot":"","sources":["../../../src/workflow-processor/services/tool-pipeline.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,QAAQ,EAGR,eAAe,EAEf,YAAY,EAGZ,YAAY,EAKb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAwB,MAAM,6BAA6B,CAAC;AAYlF,qBACa,mBAAoB,YAAW,YAAY,EAAE,YAAY;IAOlE,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IARhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAG/D,OAAO,CAAC,YAAY,CAAyB;gBAG1B,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa;IAG/C,YAAY,IAAI,IAAI;IA6Bd,OAAO,CAAC,KAAK,SAAS,MAAM,EAAE,OAAO,SAAS,MAAM,EAAE,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClG,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAC9C,IAAI,EAAE,KAAK,GAAG,SAAS,EACvB,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,GACjC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YA4G1B,yBAAyB;CAOxC"}
|
|
@@ -10,16 +10,20 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
var ToolPipelineService_1;
|
|
11
11
|
import { Injectable, Logger } from '@nestjs/common';
|
|
12
12
|
import { DiscoveryService } from '@nestjs/core';
|
|
13
|
-
import { TOOL_INTERCEPTOR_METADATA_KEY, getBlockArgsSchema, getBlockConfigSchema, } from '@loopstack/common';
|
|
13
|
+
import { TOOL_INTERCEPTOR_METADATA_KEY, ToolDocumentDeclarationSchema, getBlockArgsSchema, getBlockConfigSchema, getBlockName, parseToolResult, } from '@loopstack/common';
|
|
14
|
+
import { TransitionAbortedError } from '../../common/index.js';
|
|
14
15
|
import { ExecutionScope } from '../utils/index.js';
|
|
16
|
+
import { DocumentStore, resolveDocumentClass } from './document-store.service.js';
|
|
15
17
|
let ToolPipelineService = ToolPipelineService_1 = class ToolPipelineService {
|
|
16
18
|
executionScope;
|
|
17
19
|
discoveryService;
|
|
20
|
+
documentStore;
|
|
18
21
|
logger = new Logger(ToolPipelineService_1.name);
|
|
19
22
|
interceptors = [];
|
|
20
|
-
constructor(executionScope, discoveryService) {
|
|
23
|
+
constructor(executionScope, discoveryService, documentStore) {
|
|
21
24
|
this.executionScope = executionScope;
|
|
22
25
|
this.discoveryService = discoveryService;
|
|
26
|
+
this.documentStore = documentStore;
|
|
23
27
|
}
|
|
24
28
|
onModuleInit() {
|
|
25
29
|
const providers = this.discoveryService.getProviders();
|
|
@@ -43,29 +47,83 @@ let ToolPipelineService = ToolPipelineService_1 = class ToolPipelineService {
|
|
|
43
47
|
const validConfig = configSchema && options?.config ? configSchema.parse(options.config) : options?.config;
|
|
44
48
|
const validOptions = validConfig !== options?.config ? { ...options, config: validConfig } : options;
|
|
45
49
|
const scope = this.executionScope.getOptional();
|
|
50
|
+
if (scope?.abortController.signal.aborted) {
|
|
51
|
+
throw new TransitionAbortedError();
|
|
52
|
+
}
|
|
46
53
|
const runContext = scope
|
|
47
54
|
? {
|
|
48
55
|
userId: scope.userId,
|
|
49
56
|
workspaceId: scope.workspaceId,
|
|
50
57
|
workflowId: scope.workflowId,
|
|
51
58
|
args: scope.args,
|
|
59
|
+
signal: scope.abortController.signal,
|
|
52
60
|
}
|
|
53
|
-
: { userId: '', workspaceId: '', workflowId: '', args: undefined };
|
|
61
|
+
: { userId: '', workspaceId: '', workflowId: '', args: undefined, signal: new AbortController().signal };
|
|
54
62
|
const execContext = {
|
|
55
63
|
tool,
|
|
56
64
|
args: validArgs,
|
|
65
|
+
...(validConfig !== undefined ? { config: validConfig } : {}),
|
|
57
66
|
runContext,
|
|
58
67
|
metadata: {},
|
|
59
68
|
};
|
|
60
69
|
const toolCall = () => tool.handle(validArgs, runContext, validOptions);
|
|
61
70
|
const chain = this.interceptors.reduceRight((next, interceptor) => () => interceptor.intercept(execContext, next), toolCall);
|
|
62
|
-
|
|
71
|
+
const trace = scope?.trace;
|
|
72
|
+
const toolName = getBlockName(tool);
|
|
73
|
+
const transitionId = scope?.transition?.id;
|
|
74
|
+
const toolSeq = trace?.nextToolSeq(transitionId) ?? 0;
|
|
75
|
+
const traceConfig = validConfig !== undefined ? { config: validConfig } : {};
|
|
76
|
+
trace?.emit({ type: 'tool.called', transitionId, toolName, toolSeq, args: validArgs, ...traceConfig });
|
|
77
|
+
this.logger.debug(`${toolName} — executing`);
|
|
78
|
+
const startedAt = performance.now();
|
|
79
|
+
try {
|
|
80
|
+
const envelope = parseToolResult(tool, await chain());
|
|
81
|
+
await this.applyDocumentDeclarations(toolName, envelope);
|
|
82
|
+
const durationMs = Math.round(performance.now() - startedAt);
|
|
83
|
+
trace?.emit({
|
|
84
|
+
type: 'tool.completed',
|
|
85
|
+
transitionId,
|
|
86
|
+
toolName,
|
|
87
|
+
toolSeq,
|
|
88
|
+
args: validArgs,
|
|
89
|
+
...traceConfig,
|
|
90
|
+
envelope,
|
|
91
|
+
durationMs,
|
|
92
|
+
});
|
|
93
|
+
this.logger.debug(`${toolName} — completed in ${durationMs}ms`);
|
|
94
|
+
return envelope;
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
const durationMs = Math.round(performance.now() - startedAt);
|
|
98
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
99
|
+
trace?.emit({
|
|
100
|
+
type: 'tool.failed',
|
|
101
|
+
transitionId,
|
|
102
|
+
toolName,
|
|
103
|
+
toolSeq,
|
|
104
|
+
args: validArgs,
|
|
105
|
+
...traceConfig,
|
|
106
|
+
error: message,
|
|
107
|
+
durationMs,
|
|
108
|
+
});
|
|
109
|
+
this.logger.warn(`${toolName} — failed after ${durationMs}ms: ${message}`);
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
async applyDocumentDeclarations(toolName, envelope) {
|
|
114
|
+
if (!envelope.documents?.length || envelope.error !== undefined || envelope.pending)
|
|
115
|
+
return;
|
|
116
|
+
const declarations = ToolDocumentDeclarationSchema.array().parse(envelope.documents);
|
|
117
|
+
for (const decl of declarations) {
|
|
118
|
+
await this.documentStore.save(resolveDocumentClass(decl.documentName, toolName), decl.content, decl.options);
|
|
119
|
+
}
|
|
63
120
|
}
|
|
64
121
|
};
|
|
65
122
|
ToolPipelineService = ToolPipelineService_1 = __decorate([
|
|
66
123
|
Injectable(),
|
|
67
124
|
__metadata("design:paramtypes", [ExecutionScope,
|
|
68
|
-
DiscoveryService
|
|
125
|
+
DiscoveryService,
|
|
126
|
+
DocumentStore])
|
|
69
127
|
], ToolPipelineService);
|
|
70
128
|
export { ToolPipelineService };
|
|
71
129
|
//# sourceMappingURL=tool-pipeline.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-pipeline.service.js","sourceRoot":"","sources":["../../../src/workflow-processor/services/tool-pipeline.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAgB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAGL,6BAA6B,
|
|
1
|
+
{"version":3,"file":"tool-pipeline.service.js","sourceRoot":"","sources":["../../../src/workflow-processor/services/tool-pipeline.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { TaskSchedulerService } from '../../scheduler/services/task-scheduler.se
|
|
|
5
5
|
import { ExecutionScope } from '../utils/index.js';
|
|
6
6
|
import { CreateWorkflowService } from './create-workflow.service.js';
|
|
7
7
|
import { DocumentStore } from './document-store.service.js';
|
|
8
|
+
import { StatelessChildRunner } from './stateless-child-runner.service.js';
|
|
8
9
|
import { WorkflowRegistryService } from './workflow-registry.service.js';
|
|
9
10
|
export declare class WorkflowOrchestrationService implements WorkflowOrchestrator {
|
|
10
11
|
private readonly executionScope;
|
|
@@ -13,9 +14,11 @@ export declare class WorkflowOrchestrationService implements WorkflowOrchestrato
|
|
|
13
14
|
private readonly workflowService;
|
|
14
15
|
private readonly workflowRegistryService;
|
|
15
16
|
private readonly documentStore;
|
|
17
|
+
private readonly statelessChildRunner;
|
|
16
18
|
private readonly logger;
|
|
17
|
-
constructor(executionScope: ExecutionScope, createWorkflowService: CreateWorkflowService, taskSchedulerService: TaskSchedulerService, workflowService: WorkflowService, workflowRegistryService: WorkflowRegistryService, documentStore: DocumentStore);
|
|
19
|
+
constructor(executionScope: ExecutionScope, createWorkflowService: CreateWorkflowService, taskSchedulerService: TaskSchedulerService, workflowService: WorkflowService, workflowRegistryService: WorkflowRegistryService, documentStore: DocumentStore, statelessChildRunner: StatelessChildRunner);
|
|
18
20
|
queue(workflowClass: Type, args?: Record<string, unknown>, options?: RunOptions): Promise<QueueResult>;
|
|
21
|
+
private queueInline;
|
|
19
22
|
private persistSubWorkflowLink;
|
|
20
23
|
resume(workflowId: string, payload: Record<string, unknown>, options: ResumeOptions): Promise<void>;
|
|
21
24
|
cancel(workflowId: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-orchestration.service.d.ts","sourceRoot":"","sources":["../../../src/workflow-processor/services/workflow-orchestration.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAEL,WAAW,EACX,aAAa,EACb,UAAU,
|
|
1
|
+
{"version":3,"file":"workflow-orchestration.service.d.ts","sourceRoot":"","sources":["../../../src/workflow-processor/services/workflow-orchestration.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAEL,WAAW,EACX,aAAa,EACb,UAAU,EAGV,cAAc,EACd,oBAAoB,EAIrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAsB,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAUzE,qBACa,4BAA6B,YAAW,oBAAoB;IAIrE,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IATvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiD;gBAGrD,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,oBAAoB,EAAE,oBAAoB,EAC1C,eAAe,EAAE,eAAe,EAChC,uBAAuB,EAAE,uBAAuB,EAChD,aAAa,EAAE,aAAa,EAC5B,oBAAoB,EAAE,oBAAoB;IAGvD,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;YAgE9F,WAAW;YAgDX,sBAAsB;IAqB9B,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BnG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCzC,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CA6B9D"}
|
|
@@ -10,12 +10,14 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
var WorkflowOrchestrationService_1;
|
|
11
11
|
import { Injectable, Logger } from '@nestjs/common';
|
|
12
12
|
import { randomUUID } from 'node:crypto';
|
|
13
|
-
import { LinkDocument, WorkflowState, } from '@loopstack/common';
|
|
13
|
+
import { LinkDocument, WorkflowState, statelessChildCallback, statelessChildResultFields, } from '@loopstack/common';
|
|
14
|
+
import { TransitionAbortedError } from '../../common/index.js';
|
|
14
15
|
import { WorkflowService } from '../../persistence/services/workflow.service.js';
|
|
15
16
|
import { TaskSchedulerService } from '../../scheduler/services/task-scheduler.service.js';
|
|
16
17
|
import { ExecutionScope } from '../utils/index.js';
|
|
17
18
|
import { CreateWorkflowService } from './create-workflow.service.js';
|
|
18
19
|
import { DocumentStore } from './document-store.service.js';
|
|
20
|
+
import { StatelessChildRunner } from './stateless-child-runner.service.js';
|
|
19
21
|
import { WorkflowRegistryService } from './workflow-registry.service.js';
|
|
20
22
|
let WorkflowOrchestrationService = WorkflowOrchestrationService_1 = class WorkflowOrchestrationService {
|
|
21
23
|
executionScope;
|
|
@@ -24,19 +26,24 @@ let WorkflowOrchestrationService = WorkflowOrchestrationService_1 = class Workfl
|
|
|
24
26
|
workflowService;
|
|
25
27
|
workflowRegistryService;
|
|
26
28
|
documentStore;
|
|
29
|
+
statelessChildRunner;
|
|
27
30
|
logger = new Logger(WorkflowOrchestrationService_1.name);
|
|
28
|
-
constructor(executionScope, createWorkflowService, taskSchedulerService, workflowService, workflowRegistryService, documentStore) {
|
|
31
|
+
constructor(executionScope, createWorkflowService, taskSchedulerService, workflowService, workflowRegistryService, documentStore, statelessChildRunner) {
|
|
29
32
|
this.executionScope = executionScope;
|
|
30
33
|
this.createWorkflowService = createWorkflowService;
|
|
31
34
|
this.taskSchedulerService = taskSchedulerService;
|
|
32
35
|
this.workflowService = workflowService;
|
|
33
36
|
this.workflowRegistryService = workflowRegistryService;
|
|
34
37
|
this.documentStore = documentStore;
|
|
38
|
+
this.statelessChildRunner = statelessChildRunner;
|
|
35
39
|
}
|
|
36
40
|
async queue(workflowClass, args, options) {
|
|
37
41
|
const scope = this.executionScope.get();
|
|
42
|
+
if (scope.abortController.signal.aborted) {
|
|
43
|
+
throw new TransitionAbortedError();
|
|
44
|
+
}
|
|
38
45
|
if (scope.options?.stateless) {
|
|
39
|
-
|
|
46
|
+
return this.queueInline(scope, workflowClass, args, options);
|
|
40
47
|
}
|
|
41
48
|
const { instance: workflow, workflowName } = this.workflowRegistryService.resolve(workflowClass);
|
|
42
49
|
const workflowEntity = await this.createWorkflowService.create(workflow, { id: scope.workspaceId }, {
|
|
@@ -45,6 +52,7 @@ let WorkflowOrchestrationService = WorkflowOrchestrationService_1 = class Workfl
|
|
|
45
52
|
args: { ...args },
|
|
46
53
|
callbackTransition: options?.callback?.transition ?? null,
|
|
47
54
|
callbackMetadata: options?.callback?.metadata ?? null,
|
|
55
|
+
...(scope.tracePersist ? { trace: true } : {}),
|
|
48
56
|
}, scope.userId, scope.workflowId);
|
|
49
57
|
await this.taskSchedulerService.addTask({
|
|
50
58
|
id: 'sub_workflow_execution-' + randomUUID(),
|
|
@@ -61,10 +69,53 @@ let WorkflowOrchestrationService = WorkflowOrchestrationService_1 = class Workfl
|
|
|
61
69
|
},
|
|
62
70
|
});
|
|
63
71
|
await this.persistSubWorkflowLink(workflowEntity.id, workflowName, options);
|
|
72
|
+
scope.trace.emit({
|
|
73
|
+
type: 'child.queued',
|
|
74
|
+
transitionId: scope.transition?.id,
|
|
75
|
+
childWorkflowId: workflowEntity.id,
|
|
76
|
+
workflowName,
|
|
77
|
+
...(options?.show ? { show: options.show } : {}),
|
|
78
|
+
});
|
|
64
79
|
return {
|
|
65
80
|
workflowId: workflowEntity.id,
|
|
66
81
|
};
|
|
67
82
|
}
|
|
83
|
+
async queueInline(scope, workflowClass, args, options) {
|
|
84
|
+
const { instance, workflowName } = this.workflowRegistryService.resolve(workflowClass);
|
|
85
|
+
const childId = `stateless-${randomUUID()}`;
|
|
86
|
+
const childMeta = await this.statelessChildRunner.run(instance, {
|
|
87
|
+
workflowName,
|
|
88
|
+
userId: scope.userId,
|
|
89
|
+
workspaceId: scope.workspaceId,
|
|
90
|
+
args,
|
|
91
|
+
});
|
|
92
|
+
const callbackTransition = options?.callback?.transition ?? null;
|
|
93
|
+
const callbackMetadata = options?.callback?.metadata ?? null;
|
|
94
|
+
const record = {
|
|
95
|
+
workflowId: childId,
|
|
96
|
+
workflowName,
|
|
97
|
+
args,
|
|
98
|
+
callbackTransition,
|
|
99
|
+
callbackMetadata,
|
|
100
|
+
...statelessChildResultFields(childMeta),
|
|
101
|
+
};
|
|
102
|
+
(scope.statelessChildren ??= []).push(record);
|
|
103
|
+
scope.trace.emit({
|
|
104
|
+
type: 'child.queued',
|
|
105
|
+
transitionId: scope.transition?.id,
|
|
106
|
+
childWorkflowId: childId,
|
|
107
|
+
workflowName,
|
|
108
|
+
...(options?.show ? { show: options.show } : {}),
|
|
109
|
+
});
|
|
110
|
+
if (record.status !== WorkflowState.Waiting) {
|
|
111
|
+
scope.trace.emit({ type: 'child.settled', childWorkflowId: childId, status: record.status });
|
|
112
|
+
}
|
|
113
|
+
const callback = statelessChildCallback(record, scope.workflowId);
|
|
114
|
+
if (callback) {
|
|
115
|
+
(scope.statelessCallbacks ??= []).push(callback);
|
|
116
|
+
}
|
|
117
|
+
return { workflowId: childId };
|
|
118
|
+
}
|
|
68
119
|
async persistSubWorkflowLink(childWorkflowId, workflowName, options) {
|
|
69
120
|
const show = options?.show ?? 'inline';
|
|
70
121
|
if (show === 'hidden')
|
|
@@ -159,7 +210,8 @@ WorkflowOrchestrationService = WorkflowOrchestrationService_1 = __decorate([
|
|
|
159
210
|
TaskSchedulerService,
|
|
160
211
|
WorkflowService,
|
|
161
212
|
WorkflowRegistryService,
|
|
162
|
-
DocumentStore
|
|
213
|
+
DocumentStore,
|
|
214
|
+
StatelessChildRunner])
|
|
163
215
|
], WorkflowOrchestrationService);
|
|
164
216
|
export { WorkflowOrchestrationService };
|
|
165
217
|
//# sourceMappingURL=workflow-orchestration.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-orchestration.service.js","sourceRoot":"","sources":["../../../src/workflow-processor/services/workflow-orchestration.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAQ,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,YAAY,
|
|
1
|
+
{"version":3,"file":"workflow-orchestration.service.js","sourceRoot":"","sources":["../../../src/workflow-processor/services/workflow-orchestration.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { QueryRunner } from 'typeorm';
|
|
2
|
-
import type { DocumentEntity } from '@loopstack/common';
|
|
3
|
-
import type {
|
|
2
|
+
import type { ActiveTransition, DocumentEntity, StatelessChildRecord } from '@loopstack/common';
|
|
3
|
+
import type { TransitionPayloadInterface } from '@loopstack/contracts/types';
|
|
4
|
+
import type { RunTraceCollector } from './run-trace-collector.js';
|
|
4
5
|
export interface ExecutionScopeData {
|
|
5
6
|
userId: string;
|
|
6
7
|
workspaceId: string;
|
|
7
8
|
workflowId: string;
|
|
9
|
+
workflowName: string;
|
|
8
10
|
labels: string[];
|
|
9
11
|
args: Readonly<Record<string, unknown> | undefined>;
|
|
10
12
|
options: {
|
|
@@ -16,7 +18,12 @@ export interface ExecutionScopeData {
|
|
|
16
18
|
persistenceState: {
|
|
17
19
|
documentsUpdated: boolean;
|
|
18
20
|
};
|
|
19
|
-
transition?:
|
|
21
|
+
transition?: ActiveTransition;
|
|
22
|
+
trace: RunTraceCollector;
|
|
23
|
+
tracePersist: boolean;
|
|
24
|
+
statelessCallbacks?: TransitionPayloadInterface[];
|
|
25
|
+
statelessChildren?: StatelessChildRecord[];
|
|
26
|
+
abortController: AbortController;
|
|
20
27
|
stateDraft: Record<string, unknown>;
|
|
21
28
|
resultDraft: Record<string, unknown>;
|
|
22
29
|
resultDirty: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-scope.d.ts","sourceRoot":"","sources":["../../../src/workflow-processor/utils/execution-scope.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"execution-scope.d.ts","sourceRoot":"","sources":["../../../src/workflow-processor/utils/execution-scope.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AASlE,MAAM,WAAW,kBAAkB;IAEjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IAEnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;IACpD,OAAO,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAGhC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAGrC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,gBAAgB,EAAE;QAAE,gBAAgB,EAAE,OAAO,CAAA;KAAE,CAAC;IAChD,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAG9B,KAAK,EAAE,iBAAiB,CAAC;IAGzB,YAAY,EAAE,OAAO,CAAC;IAItB,kBAAkB,CAAC,EAAE,0BAA0B,EAAE,CAAC;IAClD,iBAAiB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAK3C,eAAe,EAAE,eAAe,CAAC;IAKjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,WAAW,EAAE,OAAO,CAAC;CACtB;AAWD,qBACa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA+C;IAE9D,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAClE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAKhD,GAAG,IAAI,kBAAkB;IAQzB,WAAW,IAAI,kBAAkB,GAAG,SAAS;IAQ7C,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAQhE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-scope.js","sourceRoot":"","sources":["../../../src/workflow-processor/utils/execution-scope.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"execution-scope.js","sourceRoot":"","sources":["../../../src/workflow-processor/utils/execution-scope.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAmE9C,IAAM,cAAc,GAApB,MAAM,cAAc;IACjB,OAAO,GAAG,IAAI,iBAAiB,EAAsB,CAAC;IAI9D,GAAG,CAAI,IAAwB,EAAE,EAAwB;QACvD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,GAAG;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAMD,SAAS,CAAI,GAAW,EAAE,MAAwB;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QAChG,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAe,CAAC;QACpE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;QACzB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9B,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAA;AAjCY,cAAc;IAD1B,UAAU,EAAE;GACA,cAAc,CAiC1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/workflow-processor/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/workflow-processor/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workflow-processor/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workflow-processor/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { RunTraceEvent, RunTraceEventInput, StateDiff } from '@loopstack/contracts/types';
|
|
2
|
+
export declare class RunTraceCollector {
|
|
3
|
+
private readonly now;
|
|
4
|
+
readonly events: RunTraceEvent[];
|
|
5
|
+
private seq;
|
|
6
|
+
private toolSeqByTransition;
|
|
7
|
+
constructor(seed?: RunTraceEvent[], now?: () => number);
|
|
8
|
+
continueFrom(nextSeq: number): void;
|
|
9
|
+
emit(event: RunTraceEventInput): void;
|
|
10
|
+
nextToolSeq(transitionId: string | undefined): number;
|
|
11
|
+
startedSince(index: number): number;
|
|
12
|
+
}
|
|
13
|
+
export declare function shallowStateDiff(before: Record<string, unknown>, after: Record<string, unknown>): StateDiff;
|
|
14
|
+
//# sourceMappingURL=run-trace-collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-trace-collector.d.ts","sourceRoot":"","sources":["../../../src/workflow-processor/utils/run-trace-collector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAO/F,qBAAa,iBAAiB;IAO1B,OAAO,CAAC,QAAQ,CAAC,GAAG;IANtB,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;IACjC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,mBAAmB,CAA6B;gBAGtD,IAAI,CAAC,EAAE,aAAa,EAAE,EACL,GAAG,GAAE,MAAM,MAAyB;IAUvD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAInC,IAAI,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAKrC,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;IAQrD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAOpC;AAOD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAW3G"}
|