@taico/taico 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/app.module.js +2 -0
- package/dist/app.module.js.map +1 -1
- package/dist/executions/errors/executions.errors.d.ts +3 -0
- package/dist/executions/errors/executions.errors.js +7 -1
- package/dist/executions/errors/executions.errors.js.map +1 -1
- package/dist/executions/history/task-execution-history.controller.d.ts +2 -0
- package/dist/executions/history/task-execution-history.controller.js +24 -0
- package/dist/executions/history/task-execution-history.controller.js.map +1 -1
- package/dist/executions/history/task-execution-history.service.d.ts +2 -1
- package/dist/executions/history/task-execution-history.service.js +11 -0
- package/dist/executions/history/task-execution-history.service.js.map +1 -1
- package/dist/executions/history/task-execution-history.service.spec.js +30 -0
- package/dist/executions/history/task-execution-history.service.spec.js.map +1 -1
- package/dist/executions/traces/dto/http/execution-traces-response.dto.d.ts +4 -2
- package/dist/executions/traces/dto/http/execution-traces-response.dto.js +15 -1
- package/dist/executions/traces/dto/http/execution-traces-response.dto.js.map +1 -1
- package/dist/executions/traces/execution-trace.entity.d.ts +3 -1
- package/dist/executions/traces/execution-trace.entity.js +6 -1
- package/dist/executions/traces/execution-trace.entity.js.map +1 -1
- package/dist/executions/traces/execution-traces.controller.js +1 -0
- package/dist/executions/traces/execution-traces.controller.js.map +1 -1
- package/dist/executions/traces/execution-traces.service.d.ts +1 -0
- package/dist/executions/traces/execution-traces.service.js +31 -16
- package/dist/executions/traces/execution-traces.service.js.map +1 -1
- package/dist/executions/traces/execution-traces.service.spec.js +22 -2
- package/dist/executions/traces/execution-traces.service.spec.js.map +1 -1
- package/dist/meta/meta.service.js +11 -0
- package/dist/meta/meta.service.js.map +1 -1
- package/dist/meta/meta.service.spec.js +24 -0
- package/dist/meta/meta.service.spec.js.map +1 -1
- package/dist/migrations/1762500000002-ExecutionTraceSource.d.ts +6 -0
- package/dist/migrations/1762500000002-ExecutionTraceSource.js +24 -0
- package/dist/migrations/1762500000002-ExecutionTraceSource.js.map +1 -0
- package/dist/tasks/dto/list-tasks-query.dto.d.ts +1 -0
- package/dist/tasks/dto/list-tasks-query.dto.js +12 -0
- package/dist/tasks/dto/list-tasks-query.dto.js.map +1 -1
- package/dist/tasks/dto/service/tasks.service.types.d.ts +1 -0
- package/dist/tasks/tasks.controller.js +1 -0
- package/dist/tasks/tasks.controller.js.map +1 -1
- package/dist/tasks/tasks.service.js +6 -0
- package/dist/tasks/tasks.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Backend
|
|
2
2
|
|
|
3
|
-
[](https://badge.socket.dev/npm/package/@taico/taico/0.9.2)
|
|
4
4
|
|
|
5
5
|
NestJS backend for Taico.
|
|
6
6
|
|
package/dist/app.module.js
CHANGED
|
@@ -58,6 +58,7 @@ const access_requests_module_1 = require("./access-requests/access-requests.modu
|
|
|
58
58
|
const _1762300000000_AccessRequests_1 = require("./migrations/1762300000000-AccessRequests");
|
|
59
59
|
const _1762400000000_AccessRequestHeardFrom_1 = require("./migrations/1762400000000-AccessRequestHeardFrom");
|
|
60
60
|
const walkthrough_module_1 = require("./walkthrough/walkthrough.module");
|
|
61
|
+
const _1762500000002_ExecutionTraceSource_1 = require("./migrations/1762500000002-ExecutionTraceSource");
|
|
61
62
|
const _1762500000001_ExecutionTraceJson_1 = require("./migrations/1762500000001-ExecutionTraceJson");
|
|
62
63
|
const _1762500000000_ExecutionTraces_1 = require("./migrations/1762500000000-ExecutionTraces");
|
|
63
64
|
const server_lifecycle_service_1 = require("./server-lifecycle.service");
|
|
@@ -102,6 +103,7 @@ exports.AppModule = AppModule = __decorate([
|
|
|
102
103
|
_1762400000000_AccessRequestHeardFrom_1.AccessRequestHeardFrom1762400000000,
|
|
103
104
|
_1762500000000_ExecutionTraces_1.ExecutionTraces1762500000000,
|
|
104
105
|
_1762500000001_ExecutionTraceJson_1.ExecutionTraceJson1762500000001,
|
|
106
|
+
_1762500000002_ExecutionTraceSource_1.ExecutionTraceSource1762500000002,
|
|
105
107
|
],
|
|
106
108
|
}),
|
|
107
109
|
event_emitter_1.EventEmitterModule.forRoot(),
|
package/dist/app.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qDAAiD;AACjD,+CAA2C;AAC3C,6CAAgD;AAChD,yDAA2D;AAC3D,+CAAkD;AAClD,uDAAmD;AACnD,6DAAyD;AACzD,4EAAuE;AACvE,oGAA+F;AAC/F,mEAA+D;AAC/D,+EAA0E;AAC1E,0DAAsD;AACtD,6DAAyD;AACzD,2FAAsF;AACtF,oDAAgD;AAChD,sEAAiE;AACjE,oDAA4E;AAC5E,gEAA2D;AAC3D,qFAAgF;AAChF,iGAA4F;AAC5F,uGAAkG;AAClG,+GAA0G;AAC1G,6GAAwG;AACxG,mHAA8G;AAC9G,yGAAoG;AACpG,yHAAoH;AACpH,6GAAwG;AACxG,+FAA0F;AAC1F,+GAA0G;AAC1G,iIAA4H;AAC5H,uFAAkF;AAClF,yFAAoF;AACpF,iGAA4F;AAC5F,qGAAgG;AAChG,2GAAsG;AACtG,iHAA4G;AAC5G,yFAAoF;AACpF,+FAA0F;AAC1F,qFAAgF;AAChF,2GAAsG;AACtG,iGAA4F;AAC5F,6DAAyD;AACzD,4EAAuE;AACvE,sEAAkE;AAClE,+EAA0E;AAC1E,6DAAyD;AACzD,qFAAgF;AAChF,6FAAwF;AACxF,6GAAwG;AACxG,yEAAqE;AACrE,qGAAgG;AAChG,+FAA0F;AAC1F,yEAAoE;
|
|
1
|
+
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qDAAiD;AACjD,+CAA2C;AAC3C,6CAAgD;AAChD,yDAA2D;AAC3D,+CAAkD;AAClD,uDAAmD;AACnD,6DAAyD;AACzD,4EAAuE;AACvE,oGAA+F;AAC/F,mEAA+D;AAC/D,+EAA0E;AAC1E,0DAAsD;AACtD,6DAAyD;AACzD,2FAAsF;AACtF,oDAAgD;AAChD,sEAAiE;AACjE,oDAA4E;AAC5E,gEAA2D;AAC3D,qFAAgF;AAChF,iGAA4F;AAC5F,uGAAkG;AAClG,+GAA0G;AAC1G,6GAAwG;AACxG,mHAA8G;AAC9G,yGAAoG;AACpG,yHAAoH;AACpH,6GAAwG;AACxG,+FAA0F;AAC1F,+GAA0G;AAC1G,iIAA4H;AAC5H,uFAAkF;AAClF,yFAAoF;AACpF,iGAA4F;AAC5F,qGAAgG;AAChG,2GAAsG;AACtG,iHAA4G;AAC5G,yFAAoF;AACpF,+FAA0F;AAC1F,qFAAgF;AAChF,2GAAsG;AACtG,iGAA4F;AAC5F,6DAAyD;AACzD,4EAAuE;AACvE,sEAAkE;AAClE,+EAA0E;AAC1E,6DAAyD;AACzD,qFAAgF;AAChF,6FAAwF;AACxF,6GAAwG;AACxG,yEAAqE;AACrE,yGAAoG;AACpG,qGAAgG;AAChG,+FAA0F;AAC1F,yEAAoE;AAoE7D,IAAM,SAAS,GAAf,MAAM,SAAS;CAAI,CAAA;AAAb,8BAAS;oBAAT,SAAS;IAlErB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,OAAO,CAAC;gBACpB,IAAI,EAAE,UAAU;gBAChB,GAAG,EAAE,IAAA,sBAAS,GAAE,CAAC,WAAW;gBAC5B,aAAa,EAAE,UAAU;gBACzB,GAAG,EAAE,IAAA,sBAAS,GAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK;gBACnE,QAAQ,EAAE,CAAC,SAAS,GAAG,uBAAuB,CAAC;gBAC/C,WAAW,EAAE,IAAA,uCAA0B,GAAE;gBACzC,aAAa,EAAE,CAAC,IAAA,uCAA0B,GAAE;gBAC5C,UAAU,EAAE;oBACV,+DAA6B;oBAC7B,qEAAgC;oBAChC,6EAAoC;oBACpC,2EAAmC;oBACnC,iFAAsC;oBACtC,uEAAiC;oBACjC,uFAAyC;oBACzC,2EAAmC;oBACnC,6DAA4B;oBAC5B,6EAAoC;oBACpC,+FAA6C;oBAC7C,qDAAwB;oBACxB,uDAAyB;oBACzB,+DAA6B;oBAC7B,mEAA+B;oBAC/B,yEAAkC;oBAClC,+EAAqC;oBACrC,uDAAyB;oBACzB,6DAA4B;oBAC5B,mDAAuB;oBACvB,yEAAkC;oBAClC,+DAA6B;oBAC7B,2DAA2B;oBAC3B,2EAAmC;oBACnC,6DAA4B;oBAC5B,mEAA+B;oBAC/B,uEAAiC;iBAClC;aACF,CAAC;YACF,kCAAkB,CAAC,OAAO,EAAE;YAC5B,yBAAc,CAAC,OAAO,EAAE;YACxB,wBAAU;YACV,0BAAW;YACX,6CAAoB;YACpB,8BAAa;YACb,uCAAiB;YACjB,yCAAkB;YAClB,uDAAyB;YACzB,kCAAe;YACf,4BAAY;YACZ,mCAAe;YACf,8BAAa;YACb,iDAAsB;YACtB,+BAAa;YACb,8BAAa;YACb,uCAAiB;YACjB,oCAAgB;YAChB,8BAAa;YACb,yCAAkB;YAClB,sCAAiB;YACjB,6CAAoB;SACrB;QACD,WAAW,EAAE,CAAC,8BAAa,CAAC;QAC5B,SAAS,EAAE,CAAC,wBAAU,EAAE,iDAAsB,CAAC;KAChD,CAAC;GACW,SAAS,CAAI"}
|
|
@@ -11,6 +11,9 @@ export declare class TaskAlreadyClaimedError extends ExecutionsError {
|
|
|
11
11
|
export declare class ActiveTaskExecutionNotFoundError extends ExecutionsError {
|
|
12
12
|
constructor(executionId: string);
|
|
13
13
|
}
|
|
14
|
+
export declare class TaskExecutionHistoryEntryNotFoundError extends ExecutionsError {
|
|
15
|
+
constructor(executionId: string);
|
|
16
|
+
}
|
|
14
17
|
export declare class ActiveTaskExecutionWorkerMismatchError extends ExecutionsError {
|
|
15
18
|
constructor(executionId: string);
|
|
16
19
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExecutionStatsNotFoundError = exports.ActiveTaskExecutionWorkerMismatchError = exports.ActiveTaskExecutionNotFoundError = exports.TaskAlreadyClaimedError = exports.TaskExecutionQueueEntryNotFoundError = exports.ExecutionsError = void 0;
|
|
3
|
+
exports.ExecutionStatsNotFoundError = exports.ActiveTaskExecutionWorkerMismatchError = exports.TaskExecutionHistoryEntryNotFoundError = exports.ActiveTaskExecutionNotFoundError = exports.TaskAlreadyClaimedError = exports.TaskExecutionQueueEntryNotFoundError = exports.ExecutionsError = void 0;
|
|
4
4
|
class ExecutionsError extends Error {
|
|
5
5
|
context;
|
|
6
6
|
constructor(message, context) {
|
|
@@ -28,6 +28,12 @@ class ActiveTaskExecutionNotFoundError extends ExecutionsError {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
exports.ActiveTaskExecutionNotFoundError = ActiveTaskExecutionNotFoundError;
|
|
31
|
+
class TaskExecutionHistoryEntryNotFoundError extends ExecutionsError {
|
|
32
|
+
constructor(executionId) {
|
|
33
|
+
super('Finished execution was not found.', { executionId });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.TaskExecutionHistoryEntryNotFoundError = TaskExecutionHistoryEntryNotFoundError;
|
|
31
37
|
class ActiveTaskExecutionWorkerMismatchError extends ExecutionsError {
|
|
32
38
|
constructor(executionId) {
|
|
33
39
|
super('Active execution is claimed by a different worker.', { executionId });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executions.errors.js","sourceRoot":"","sources":["../../../src/executions/errors/executions.errors.ts"],"names":[],"mappings":";;;AAAA,MAAsB,eAAgB,SAAQ,KAAK;IACX;IAAtC,YAAY,OAAe,EAAW,OAAiC;QACrE,KAAK,CAAC,OAAO,CAAC,CAAC;QADqB,YAAO,GAAP,OAAO,CAA0B;QAErE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,CAAC;CACF;AALD,0CAKC;AAED,MAAa,oCAAqC,SAAQ,eAAe;IACvE,YAAY,MAAc;QACxB,KAAK,CAAC,6CAA6C,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;CACF;AAJD,oFAIC;AAED,MAAa,uBAAwB,SAAQ,eAAe;IAC1D,YAAY,MAAc;QACxB,KAAK,CAAC,uCAAuC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF;AAJD,0DAIC;AAED,MAAa,gCAAiC,SAAQ,eAAe;IACnE,YAAY,WAAmB;QAC7B,KAAK,CAAC,iCAAiC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF;AAJD,4EAIC;AAED,MAAa,sCAAuC,SAAQ,eAAe;IACzE,YAAY,WAAmB;QAC7B,KAAK,CAAC,oDAAoD,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAC/E,CAAC;CACF;AAJD,wFAIC;AAED,MAAa,2BAA4B,SAAQ,eAAe;IAC9D,YAAY,WAAmB;QAC7B,KAAK,CAAC,iCAAiC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF;AAJD,kEAIC"}
|
|
1
|
+
{"version":3,"file":"executions.errors.js","sourceRoot":"","sources":["../../../src/executions/errors/executions.errors.ts"],"names":[],"mappings":";;;AAAA,MAAsB,eAAgB,SAAQ,KAAK;IACX;IAAtC,YAAY,OAAe,EAAW,OAAiC;QACrE,KAAK,CAAC,OAAO,CAAC,CAAC;QADqB,YAAO,GAAP,OAAO,CAA0B;QAErE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,CAAC;CACF;AALD,0CAKC;AAED,MAAa,oCAAqC,SAAQ,eAAe;IACvE,YAAY,MAAc;QACxB,KAAK,CAAC,6CAA6C,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;CACF;AAJD,oFAIC;AAED,MAAa,uBAAwB,SAAQ,eAAe;IAC1D,YAAY,MAAc;QACxB,KAAK,CAAC,uCAAuC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF;AAJD,0DAIC;AAED,MAAa,gCAAiC,SAAQ,eAAe;IACnE,YAAY,WAAmB;QAC7B,KAAK,CAAC,iCAAiC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF;AAJD,4EAIC;AAED,MAAa,sCAAuC,SAAQ,eAAe;IACzE,YAAY,WAAmB;QAC7B,KAAK,CAAC,mCAAmC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF;AAJD,wFAIC;AAED,MAAa,sCAAuC,SAAQ,eAAe;IACzE,YAAY,WAAmB;QAC7B,KAAK,CAAC,oDAAoD,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAC/E,CAAC;CACF;AAJD,wFAIC;AAED,MAAa,2BAA4B,SAAQ,eAAe;IAC9D,YAAY,WAAmB;QAC7B,KAAK,CAAC,iCAAiC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF;AAJD,kEAIC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { TaskExecutionHistoryService } from './task-execution-history.service';
|
|
2
|
+
import { TaskExecutionHistoryResponseDto } from './dto/http/task-execution-history-response.dto';
|
|
2
3
|
import { TaskExecutionHistoryListResponseDto } from './dto/http/task-execution-history-list-response.dto';
|
|
3
4
|
import { ListHistoryQueryDto } from './dto/http/list-history-query.dto';
|
|
4
5
|
export declare class TaskExecutionHistoryController {
|
|
5
6
|
private readonly taskExecutionHistoryService;
|
|
6
7
|
constructor(taskExecutionHistoryService: TaskExecutionHistoryService);
|
|
7
8
|
listHistory(query: ListHistoryQueryDto): Promise<TaskExecutionHistoryListResponseDto>;
|
|
9
|
+
getHistoryEntry(id: string): Promise<TaskExecutionHistoryResponseDto>;
|
|
8
10
|
}
|
|
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.TaskExecutionHistoryController = void 0;
|
|
16
16
|
const common_1 = require("@nestjs/common");
|
|
17
17
|
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
+
const executions_errors_1 = require("../errors/executions.errors");
|
|
18
19
|
const access_token_guard_1 = require("../../auth/guards/guards/access-token.guard");
|
|
19
20
|
const scopes_guard_1 = require("../../auth/guards/guards/scopes.guard");
|
|
20
21
|
const require_scopes_decorator_1 = require("../../auth/guards/decorators/require-scopes.decorator");
|
|
@@ -42,6 +43,16 @@ let TaskExecutionHistoryController = class TaskExecutionHistoryController {
|
|
|
42
43
|
totalPages: Math.ceil(result.total / result.limit),
|
|
43
44
|
};
|
|
44
45
|
}
|
|
46
|
+
async getHistoryEntry(id) {
|
|
47
|
+
try {
|
|
48
|
+
return task_execution_history_response_dto_1.TaskExecutionHistoryResponseDto.fromResult(await this.taskExecutionHistoryService.getHistoryEntry(id));
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
if (error instanceof executions_errors_1.TaskExecutionHistoryEntryNotFoundError)
|
|
52
|
+
throw new common_1.NotFoundException(error.message);
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
45
56
|
};
|
|
46
57
|
exports.TaskExecutionHistoryController = TaskExecutionHistoryController;
|
|
47
58
|
__decorate([
|
|
@@ -56,6 +67,19 @@ __decorate([
|
|
|
56
67
|
__metadata("design:paramtypes", [list_history_query_dto_1.ListHistoryQueryDto]),
|
|
57
68
|
__metadata("design:returntype", Promise)
|
|
58
69
|
], TaskExecutionHistoryController.prototype, "listHistory", null);
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, common_1.Get)(':id'),
|
|
72
|
+
(0, swagger_1.ApiOperation)({
|
|
73
|
+
summary: 'Get one finished execution',
|
|
74
|
+
description: 'Returns a single execution history row by id, including runs older than the latest page of history.',
|
|
75
|
+
}),
|
|
76
|
+
(0, swagger_1.ApiOkResponse)({ type: task_execution_history_response_dto_1.TaskExecutionHistoryResponseDto }),
|
|
77
|
+
(0, swagger_1.ApiNotFoundResponse)({ description: 'Execution not found' }),
|
|
78
|
+
__param(0, (0, common_1.Param)('id', new common_1.ParseUUIDPipe())),
|
|
79
|
+
__metadata("design:type", Function),
|
|
80
|
+
__metadata("design:paramtypes", [String]),
|
|
81
|
+
__metadata("design:returntype", Promise)
|
|
82
|
+
], TaskExecutionHistoryController.prototype, "getHistoryEntry", null);
|
|
59
83
|
exports.TaskExecutionHistoryController = TaskExecutionHistoryController = __decorate([
|
|
60
84
|
(0, swagger_1.ApiTags)('Executions'),
|
|
61
85
|
(0, swagger_1.ApiCookieAuth)('JWT-Cookie'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-execution-history.controller.js","sourceRoot":"","sources":["../../../src/executions/history/task-execution-history.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"task-execution-history.controller.js","sourceRoot":"","sources":["../../../src/executions/history/task-execution-history.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAQwB;AACxB,6CAMyB;AACzB,mEAAqF;AACrF,oFAA+E;AAC/E,wEAAoE;AACpE,oGAAsF;AACtF,2DAAuD;AACvD,qFAA+E;AAC/E,wGAAiG;AACjG,kHAA0G;AAC1G,8EAAwE;AAOjE,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IAEtB;IADnB,YACmB,2BAAwD;QAAxD,gCAA2B,GAA3B,2BAA2B,CAA6B;IACxE,CAAC;IASE,AAAN,KAAK,CAAC,WAAW,CACN,KAA0B;QAEnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC;YAChE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;YACrB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC/B,qEAA+B,CAAC,UAAU,CAAC,IAAI,CAAC,CACjD;YACD,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;SACnD,CAAC;IACJ,CAAC;IAUK,AAAN,KAAK,CAAC,eAAe,CACe,EAAU;QAE5C,IAAI,CAAC;YACH,OAAO,qEAA+B,CAAC,UAAU,CAC/C,MAAM,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,EAAE,CAAC,CAC3D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,0DAAsC;gBACzD,MAAM,IAAI,0BAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF,CAAA;AArDY,wEAA8B;AAYnC;IAPL,IAAA,YAAG,GAAE;IACL,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,6BAA6B;QACtC,WAAW,EACT,uFAAuF;KAC1F,CAAC;IACD,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,8EAAmC,EAAE,CAAC;IAE1D,WAAA,IAAA,cAAK,GAAE,CAAA;;qCAAQ,4CAAmB;;iEAiBpC;AAUK;IARL,IAAA,YAAG,EAAC,KAAK,CAAC;IACV,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,4BAA4B;QACrC,WAAW,EACT,qGAAqG;KACxG,CAAC;IACD,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,qEAA+B,EAAE,CAAC;IACxD,IAAA,6BAAmB,EAAC,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;IAEzD,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,IAAI,sBAAa,EAAE,CAAC,CAAA;;;;qEAWlC;yCApDU,8BAA8B;IAL1C,IAAA,iBAAO,EAAC,YAAY,CAAC;IACrB,IAAA,uBAAa,EAAC,YAAY,CAAC;IAC3B,IAAA,mBAAU,EAAC,oBAAoB,CAAC;IAChC,IAAA,kBAAS,EAAC,qCAAgB,EAAE,0BAAW,CAAC;IACxC,IAAA,wCAAa,EAAC,0BAAW,CAAC,IAAI,CAAC,EAAE,CAAC;qCAGe,4DAA2B;GAFhE,8BAA8B,CAqD1C"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Repository } from 'typeorm';
|
|
2
2
|
import { TaskExecutionHistoryEntity } from './task-execution-history.entity';
|
|
3
|
-
import { TaskExecutionHistoryListResult } from '../dto/service/execution-results.service.types';
|
|
3
|
+
import { TaskExecutionHistoryListResult, TaskExecutionHistoryResult } from '../dto/service/execution-results.service.types';
|
|
4
4
|
export declare class TaskExecutionHistoryService {
|
|
5
5
|
private readonly taskExecutionHistoryRepository;
|
|
6
6
|
constructor(taskExecutionHistoryRepository: Repository<TaskExecutionHistoryEntity>);
|
|
@@ -9,6 +9,7 @@ export declare class TaskExecutionHistoryService {
|
|
|
9
9
|
limit?: number;
|
|
10
10
|
taskId?: string;
|
|
11
11
|
}): Promise<TaskExecutionHistoryListResult>;
|
|
12
|
+
getHistoryEntry(id: string): Promise<TaskExecutionHistoryResult>;
|
|
12
13
|
getLatestHistoryForTask(taskId: string): Promise<TaskExecutionHistoryEntity | null>;
|
|
13
14
|
countConsecutiveQuotaErrors(taskId: string): Promise<number>;
|
|
14
15
|
private mapHistoryEntryToResult;
|
|
@@ -17,6 +17,7 @@ const common_1 = require("@nestjs/common");
|
|
|
17
17
|
const typeorm_1 = require("@nestjs/typeorm");
|
|
18
18
|
const typeorm_2 = require("typeorm");
|
|
19
19
|
const task_execution_history_entity_1 = require("./task-execution-history.entity");
|
|
20
|
+
const executions_errors_1 = require("../errors/executions.errors");
|
|
20
21
|
let TaskExecutionHistoryService = class TaskExecutionHistoryService {
|
|
21
22
|
taskExecutionHistoryRepository;
|
|
22
23
|
constructor(taskExecutionHistoryRepository) {
|
|
@@ -41,6 +42,16 @@ let TaskExecutionHistoryService = class TaskExecutionHistoryService {
|
|
|
41
42
|
limit,
|
|
42
43
|
};
|
|
43
44
|
}
|
|
45
|
+
async getHistoryEntry(id) {
|
|
46
|
+
const entry = await this.taskExecutionHistoryRepository.findOne({
|
|
47
|
+
where: { id },
|
|
48
|
+
relations: ['task', 'stats'],
|
|
49
|
+
});
|
|
50
|
+
if (!entry) {
|
|
51
|
+
throw new executions_errors_1.TaskExecutionHistoryEntryNotFoundError(id);
|
|
52
|
+
}
|
|
53
|
+
return this.mapHistoryEntryToResult(entry);
|
|
54
|
+
}
|
|
44
55
|
async getLatestHistoryForTask(taskId) {
|
|
45
56
|
return this.taskExecutionHistoryRepository.findOne({
|
|
46
57
|
where: { taskId },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-execution-history.service.js","sourceRoot":"","sources":["../../../src/executions/history/task-execution-history.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,6CAAmD;AACnD,qCAAqC;AACrC,mFAA6E;
|
|
1
|
+
{"version":3,"file":"task-execution-history.service.js","sourceRoot":"","sources":["../../../src/executions/history/task-execution-history.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ const task_execution_history_service_1 = require("./task-execution-history.servi
|
|
|
6
6
|
const task_execution_history_entity_1 = require("./task-execution-history.entity");
|
|
7
7
|
const task_execution_history_status_enum_1 = require("./task-execution-history-status.enum");
|
|
8
8
|
const task_execution_history_error_code_enum_1 = require("./task-execution-history-error-code.enum");
|
|
9
|
+
const executions_errors_1 = require("../errors/executions.errors");
|
|
9
10
|
describe('TaskExecutionHistoryService', () => {
|
|
10
11
|
let service;
|
|
11
12
|
let repository;
|
|
@@ -25,6 +26,35 @@ describe('TaskExecutionHistoryService', () => {
|
|
|
25
26
|
service = module.get(task_execution_history_service_1.TaskExecutionHistoryService);
|
|
26
27
|
repository = module.get((0, typeorm_1.getRepositoryToken)(task_execution_history_entity_1.TaskExecutionHistoryEntity));
|
|
27
28
|
});
|
|
29
|
+
describe('getHistoryEntry', () => {
|
|
30
|
+
it('returns one finished run by id, with its task', async () => {
|
|
31
|
+
repository.findOne.mockResolvedValue({
|
|
32
|
+
id: 'run-1',
|
|
33
|
+
taskId: 'task-1',
|
|
34
|
+
task: { name: 'Rate limit the /export endpoint' },
|
|
35
|
+
status: task_execution_history_status_enum_1.TaskExecutionHistoryStatus.SUCCEEDED,
|
|
36
|
+
claimedAt: new Date('2026-10-27T08:00:00Z'),
|
|
37
|
+
transitionedAt: new Date('2026-10-27T08:04:00Z'),
|
|
38
|
+
agentActorId: 'agent-1',
|
|
39
|
+
workerClientId: 'worker-1',
|
|
40
|
+
runnerSessionId: null,
|
|
41
|
+
toolCallCount: 3,
|
|
42
|
+
errorCode: null,
|
|
43
|
+
errorMessage: null,
|
|
44
|
+
stats: null,
|
|
45
|
+
});
|
|
46
|
+
const result = await service.getHistoryEntry('run-1');
|
|
47
|
+
expect(repository.findOne).toHaveBeenCalledWith({
|
|
48
|
+
where: { id: 'run-1' },
|
|
49
|
+
relations: ['task', 'stats'],
|
|
50
|
+
});
|
|
51
|
+
expect(result).toMatchObject({ id: 'run-1', taskId: 'task-1', taskName: 'Rate limit the /export endpoint', toolCallCount: 3 });
|
|
52
|
+
});
|
|
53
|
+
it('throws when the run does not exist', async () => {
|
|
54
|
+
repository.findOne.mockResolvedValue(null);
|
|
55
|
+
await expect(service.getHistoryEntry('missing')).rejects.toBeInstanceOf(executions_errors_1.TaskExecutionHistoryEntryNotFoundError);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
28
58
|
describe('getLatestHistoryForTask', () => {
|
|
29
59
|
it('should return the latest history entry for a task', async () => {
|
|
30
60
|
const taskId = 'test-task-id';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-execution-history.service.spec.js","sourceRoot":"","sources":["../../../src/executions/history/task-execution-history.service.spec.ts"],"names":[],"mappings":";;AAAA,6CAAsD;AACtD,6CAAqD;AAErD,qFAA+E;AAC/E,mFAA6E;AAC7E,6FAAkF;AAClF,qGAAyF;
|
|
1
|
+
{"version":3,"file":"task-execution-history.service.spec.js","sourceRoot":"","sources":["../../../src/executions/history/task-execution-history.service.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { HarnessJson } from '@taico/events';
|
|
1
|
+
import type { HarnessJson, ExecutionTraceSource } from '@taico/events';
|
|
2
2
|
import { ExecutionTraceEntity } from '../../execution-trace.entity';
|
|
3
3
|
export declare class ExecutionTraceResponseDto {
|
|
4
4
|
executionId: string;
|
|
5
5
|
sequence: number;
|
|
6
|
-
|
|
6
|
+
source: ExecutionTraceSource;
|
|
7
|
+
harness: string | null;
|
|
7
8
|
runnerSessionId: string | null;
|
|
8
9
|
emittedAt: string;
|
|
9
10
|
receivedAt: string;
|
|
@@ -12,6 +13,7 @@ export declare class ExecutionTraceResponseDto {
|
|
|
12
13
|
}
|
|
13
14
|
export declare class ExecutionTracesResponseDto {
|
|
14
15
|
items: ExecutionTraceResponseDto[];
|
|
16
|
+
lifecycle: ExecutionTraceResponseDto[];
|
|
15
17
|
hasMoreBefore: boolean;
|
|
16
18
|
nextAfterSequence: number;
|
|
17
19
|
}
|
|
@@ -14,6 +14,7 @@ const swagger_1 = require("@nestjs/swagger");
|
|
|
14
14
|
class ExecutionTraceResponseDto {
|
|
15
15
|
executionId;
|
|
16
16
|
sequence;
|
|
17
|
+
source;
|
|
17
18
|
harness;
|
|
18
19
|
runnerSessionId;
|
|
19
20
|
emittedAt;
|
|
@@ -23,6 +24,7 @@ class ExecutionTraceResponseDto {
|
|
|
23
24
|
return {
|
|
24
25
|
executionId: event.executionId,
|
|
25
26
|
sequence: event.sequence,
|
|
27
|
+
source: event.source,
|
|
26
28
|
harness: event.harness,
|
|
27
29
|
runnerSessionId: event.runnerSessionId,
|
|
28
30
|
emittedAt: event.emittedAt.toISOString(),
|
|
@@ -41,8 +43,12 @@ __decorate([
|
|
|
41
43
|
__metadata("design:type", Number)
|
|
42
44
|
], ExecutionTraceResponseDto.prototype, "sequence", void 0);
|
|
43
45
|
__decorate([
|
|
44
|
-
(0, swagger_1.ApiProperty)(),
|
|
46
|
+
(0, swagger_1.ApiProperty)({ enum: ['worker', 'harness'] }),
|
|
45
47
|
__metadata("design:type", String)
|
|
48
|
+
], ExecutionTraceResponseDto.prototype, "source", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, swagger_1.ApiProperty)({ type: String, nullable: true }),
|
|
51
|
+
__metadata("design:type", Object)
|
|
46
52
|
], ExecutionTraceResponseDto.prototype, "harness", void 0);
|
|
47
53
|
__decorate([
|
|
48
54
|
(0, swagger_1.ApiProperty)({ type: String, nullable: true }),
|
|
@@ -67,6 +73,7 @@ __decorate([
|
|
|
67
73
|
], ExecutionTraceResponseDto.prototype, "payload", void 0);
|
|
68
74
|
class ExecutionTracesResponseDto {
|
|
69
75
|
items;
|
|
76
|
+
lifecycle;
|
|
70
77
|
hasMoreBefore;
|
|
71
78
|
nextAfterSequence;
|
|
72
79
|
}
|
|
@@ -75,6 +82,13 @@ __decorate([
|
|
|
75
82
|
(0, swagger_1.ApiProperty)({ type: [ExecutionTraceResponseDto] }),
|
|
76
83
|
__metadata("design:type", Array)
|
|
77
84
|
], ExecutionTracesResponseDto.prototype, "items", void 0);
|
|
85
|
+
__decorate([
|
|
86
|
+
(0, swagger_1.ApiProperty)({
|
|
87
|
+
type: [ExecutionTraceResponseDto],
|
|
88
|
+
description: 'Worker lifecycle records across the entire execution, independent of the raw-event page',
|
|
89
|
+
}),
|
|
90
|
+
__metadata("design:type", Array)
|
|
91
|
+
], ExecutionTracesResponseDto.prototype, "lifecycle", void 0);
|
|
78
92
|
__decorate([
|
|
79
93
|
(0, swagger_1.ApiProperty)(),
|
|
80
94
|
__metadata("design:type", Boolean)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-traces-response.dto.js","sourceRoot":"","sources":["../../../../../src/executions/traces/dto/http/execution-traces-response.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAI9C,MAAa,yBAAyB;IACrB,WAAW,CAAU;IACrB,QAAQ,CAAU;
|
|
1
|
+
{"version":3,"file":"execution-traces-response.dto.js","sourceRoot":"","sources":["../../../../../src/executions/traces/dto/http/execution-traces-response.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAI9C,MAAa,yBAAyB;IACrB,WAAW,CAAU;IACrB,QAAQ,CAAU;IACa,MAAM,CAAwB;IAC7B,OAAO,CAAiB;IACxB,eAAe,CAErD;IAC6B,SAAS,CAAU;IACnB,UAAU,CAAU;IAO1D,OAAO,CAAe;IAEtB,MAAM,CAAC,UAAU,CAAC,KAA2B;QAC3C,OAAO;YACL,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;YACxC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE;YAC1C,OAAO,EAAE,KAAK,CAAC,OAAsB;SACtC,CAAC;IACJ,CAAC;CACF;AA9BD,8DA8BC;AA7BgB;IAAd,IAAA,qBAAW,GAAE;;8DAAsB;AACrB;IAAd,IAAA,qBAAW,GAAE;;2DAAmB;AACa;IAA7C,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;;yDAA+B;AAC7B;IAA9C,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0DAAyB;AACxB;IAA9C,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kEAErC;AAC6B;IAArC,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;;4DAAoB;AACnB;IAArC,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;;6DAAqB;AAO1D;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,IAAI;QAC1B,QAAQ,EAAE,IAAI;KACf,CAAC;;0DACoB;AAgBxB,MAAa,0BAA0B;IAErC,KAAK,CAA+B;IAMpC,SAAS,CAA+B;IAExC,aAAa,CAAW;IACT,iBAAiB,CAAU;CAC3C;AAZD,gEAYC;AAVC;IADC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC;;yDACf;AAMpC;IALC,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,CAAC,yBAAyB,CAAC;QACjC,WAAW,EACT,yFAAyF;KAC5F,CAAC;;6DACsC;AAExC;IADC,IAAA,qBAAW,GAAE;;iEACU;AACT;IAAd,IAAA,qBAAW,GAAE;;qEAA4B"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import type { ExecutionTraceSource } from '@taico/events';
|
|
1
2
|
export declare class ExecutionTraceEntity {
|
|
2
3
|
executionId: string;
|
|
3
4
|
sequence: number;
|
|
4
|
-
|
|
5
|
+
source: ExecutionTraceSource;
|
|
6
|
+
harness: string | null;
|
|
5
7
|
runnerSessionId: string | null;
|
|
6
8
|
emittedAt: Date;
|
|
7
9
|
payload: unknown;
|
|
@@ -14,6 +14,7 @@ const typeorm_1 = require("typeorm");
|
|
|
14
14
|
let ExecutionTraceEntity = class ExecutionTraceEntity {
|
|
15
15
|
executionId;
|
|
16
16
|
sequence;
|
|
17
|
+
source;
|
|
17
18
|
harness;
|
|
18
19
|
runnerSessionId;
|
|
19
20
|
emittedAt;
|
|
@@ -30,8 +31,12 @@ __decorate([
|
|
|
30
31
|
__metadata("design:type", Number)
|
|
31
32
|
], ExecutionTraceEntity.prototype, "sequence", void 0);
|
|
32
33
|
__decorate([
|
|
33
|
-
(0, typeorm_1.Column)({ type: 'text' }),
|
|
34
|
+
(0, typeorm_1.Column)({ type: 'text', default: 'harness' }),
|
|
34
35
|
__metadata("design:type", String)
|
|
36
|
+
], ExecutionTraceEntity.prototype, "source", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, typeorm_1.Column)({ type: 'text', nullable: true }),
|
|
39
|
+
__metadata("design:type", Object)
|
|
35
40
|
], ExecutionTraceEntity.prototype, "harness", void 0);
|
|
36
41
|
__decorate([
|
|
37
42
|
(0, typeorm_1.Column)({ type: 'text', name: 'runner_session_id', nullable: true }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-trace.entity.js","sourceRoot":"","sources":["../../../src/executions/traces/execution-trace.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"execution-trace.entity.js","sourceRoot":"","sources":["../../../src/executions/traces/execution-trace.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,qCAA0E;AAGnE,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAI/B,WAAW,CAAU;IAGrB,QAAQ,CAAU;IAGlB,MAAM,CAAwB;IAG9B,OAAO,CAAiB;IAGxB,eAAe,CAAiB;IAGhC,SAAS,CAAQ;IAGjB,OAAO,CAAW;IAGlB,UAAU,CAAQ;CACnB,CAAA;AA1BY,oDAAoB;AAI/B;IADC,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;;yDACjC;AAGrB;IADC,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;sDACjB;AAGlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;;oDACf;AAG9B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACjB;AAGxB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6DACpC;AAGhC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BACxC,IAAI;uDAAC;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;qDACP;AAGlB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;8BAClD,IAAI;wDAAC;+BAzBP,oBAAoB;IADhC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;GACxB,oBAAoB,CA0BhC"}
|
|
@@ -33,6 +33,7 @@ let ExecutionTracesController = class ExecutionTracesController {
|
|
|
33
33
|
const result = await this.traces.list(executionId, query.afterSequence, query.limit, { latest: query.latest, beforeSequence: query.beforeSequence });
|
|
34
34
|
return {
|
|
35
35
|
items: result.items.map(execution_traces_response_dto_1.ExecutionTraceResponseDto.fromEntity),
|
|
36
|
+
lifecycle: result.lifecycle.map(execution_traces_response_dto_1.ExecutionTraceResponseDto.fromEntity),
|
|
36
37
|
nextAfterSequence: result.nextAfterSequence,
|
|
37
38
|
hasMoreBefore: result.hasMoreBefore,
|
|
38
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-traces.controller.js","sourceRoot":"","sources":["../../../src/executions/traces/execution-traces.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAQwB;AACxB,6CAKyB;AACzB,oFAA+E;AAC/E,wEAAoE;AACpE,oGAAsF;AACtF,2DAAuD;AACvD,yEAAoE;AACpE,uEAAwE;AACxE,gGAAyF;AACzF,4FAGkD;AAO3C,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACP;IAA7B,YAA6B,MAA8B;QAA9B,WAAM,GAAN,MAAM,CAAwB;IAAG,CAAC;IAOzD,AAAN,KAAK,CAAC,IAAI,CAC6B,WAAmB,EAC/C,KAAkC;QAE3C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,WAAW,EACX,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,KAAK,EACX,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAC/D,CAAC;YACF,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,yDAAyB,CAAC,UAAU,CAAC;gBAC7D,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,aAAa,EAAE,MAAM,CAAC,aAAa;aACpC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,qDAA2B;gBAC9C,MAAM,IAAI,0BAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF,CAAA;
|
|
1
|
+
{"version":3,"file":"execution-traces.controller.js","sourceRoot":"","sources":["../../../src/executions/traces/execution-traces.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAQwB;AACxB,6CAKyB;AACzB,oFAA+E;AAC/E,wEAAoE;AACpE,oGAAsF;AACtF,2DAAuD;AACvD,yEAAoE;AACpE,uEAAwE;AACxE,gGAAyF;AACzF,4FAGkD;AAO3C,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACP;IAA7B,YAA6B,MAA8B;QAA9B,WAAM,GAAN,MAAM,CAAwB;IAAG,CAAC;IAOzD,AAAN,KAAK,CAAC,IAAI,CAC6B,WAAmB,EAC/C,KAAkC;QAE3C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,WAAW,EACX,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,KAAK,EACX,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAC/D,CAAC;YACF,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,yDAAyB,CAAC,UAAU,CAAC;gBAC7D,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,yDAAyB,CAAC,UAAU,CAAC;gBACrE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,aAAa,EAAE,MAAM,CAAC,aAAa;aACpC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,qDAA2B;gBAC9C,MAAM,IAAI,0BAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF,CAAA;AA/BY,8DAAyB;AAQ9B;IALL,IAAA,YAAG,GAAE;IACL,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,+DAA+D;KACzE,CAAC;IACD,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,0DAA0B,EAAE,CAAC;IAEjD,WAAA,IAAA,cAAK,EAAC,aAAa,EAAE,sBAAa,CAAC,CAAA;IACnC,WAAA,IAAA,cAAK,GAAE,CAAA;;6CAAQ,6DAA2B;;qDAoB5C;oCA9BU,yBAAyB;IALrC,IAAA,iBAAO,EAAC,YAAY,CAAC;IACrB,IAAA,uBAAa,EAAC,YAAY,CAAC;IAC3B,IAAA,mBAAU,EAAC,gCAAgC,CAAC;IAC5C,IAAA,kBAAS,EAAC,qCAAgB,EAAE,0BAAW,CAAC;IACxC,IAAA,wCAAa,EAAC,0BAAW,CAAC,IAAI,CAAC,EAAE,CAAC;qCAEI,iDAAsB;GADhD,yBAAyB,CA+BrC"}
|
|
@@ -35,13 +35,17 @@ let ExecutionTracesService = class ExecutionTracesService {
|
|
|
35
35
|
if (!workerClientId || execution.workerClientId !== workerClientId) {
|
|
36
36
|
throw new execution_traces_errors_1.ExecutionTraceWorkerMismatchError(input.executionId);
|
|
37
37
|
}
|
|
38
|
-
const parameters = [
|
|
38
|
+
const parameters = [
|
|
39
|
+
input.executionId,
|
|
40
|
+
input.harness,
|
|
41
|
+
input.source ?? 'harness',
|
|
42
|
+
];
|
|
39
43
|
const rows = input.events.map((event) => {
|
|
40
44
|
const offset = parameters.length;
|
|
41
45
|
parameters.push(event.sequence, event.emittedAt, event.runnerSessionId, JSON.stringify(event.payload));
|
|
42
|
-
return `($1::uuid, $2, $${offset + 1}::integer, $${offset + 2}::timestamptz, $${offset + 3}, $${offset + 4}::json)`;
|
|
46
|
+
return `($1::uuid, $2, $3, $${offset + 1}::integer, $${offset + 2}::timestamptz, $${offset + 3}, $${offset + 4}::json)`;
|
|
43
47
|
});
|
|
44
|
-
const inserted = await this.traces.query(`INSERT INTO execution_traces (execution_id, harness, sequence, emitted_at, runner_session_id, payload)
|
|
48
|
+
const inserted = await this.traces.query(`INSERT INTO execution_traces (execution_id, harness, source, sequence, emitted_at, runner_session_id, payload)
|
|
45
49
|
VALUES ${rows.join(', ')}
|
|
46
50
|
ON CONFLICT (execution_id, sequence) DO NOTHING RETURNING sequence`, parameters);
|
|
47
51
|
if (inserted.length) {
|
|
@@ -51,16 +55,22 @@ let ExecutionTracesService = class ExecutionTracesService {
|
|
|
51
55
|
async list(executionId, afterSequence, limit, options = {}) {
|
|
52
56
|
await this.resolveExecution(executionId);
|
|
53
57
|
const backwards = options.latest || options.beforeSequence !== undefined;
|
|
54
|
-
const items = await
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
58
|
+
const [items, lifecycle] = await Promise.all([
|
|
59
|
+
this.traces.find({
|
|
60
|
+
where: {
|
|
61
|
+
executionId,
|
|
62
|
+
sequence: options.beforeSequence !== undefined
|
|
63
|
+
? (0, typeorm_2.LessThan)(options.beforeSequence)
|
|
64
|
+
: (0, typeorm_2.MoreThan)(afterSequence),
|
|
65
|
+
},
|
|
66
|
+
order: { sequence: backwards ? 'DESC' : 'ASC' },
|
|
67
|
+
take: limit + 1,
|
|
68
|
+
}),
|
|
69
|
+
this.traces.find({
|
|
70
|
+
where: { executionId, source: 'worker' },
|
|
71
|
+
order: { sequence: 'ASC' },
|
|
72
|
+
}),
|
|
73
|
+
]);
|
|
64
74
|
const hasMore = items.length > limit;
|
|
65
75
|
if (hasMore)
|
|
66
76
|
items.pop();
|
|
@@ -68,6 +78,7 @@ let ExecutionTracesService = class ExecutionTracesService {
|
|
|
68
78
|
items.reverse();
|
|
69
79
|
return {
|
|
70
80
|
items,
|
|
81
|
+
lifecycle,
|
|
71
82
|
nextAfterSequence: items.at(-1)?.sequence ?? afterSequence,
|
|
72
83
|
hasMoreBefore: Boolean(backwards && hasMore),
|
|
73
84
|
};
|
|
@@ -88,12 +99,16 @@ let ExecutionTracesService = class ExecutionTracesService {
|
|
|
88
99
|
const invalid = () => {
|
|
89
100
|
throw new execution_traces_errors_1.InvalidExecutionTraceError('Invalid execution trace batch.');
|
|
90
101
|
};
|
|
102
|
+
const source = input?.source === undefined ? 'harness' : input.source;
|
|
91
103
|
if (!input ||
|
|
104
|
+
(source !== 'worker' && source !== 'harness') ||
|
|
92
105
|
typeof input.executionId !== 'string' ||
|
|
93
106
|
!(0, class_validator_1.isUUID)(input.executionId) ||
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
107
|
+
(source === 'worker'
|
|
108
|
+
? input.harness !== null
|
|
109
|
+
: typeof input.harness !== 'string' ||
|
|
110
|
+
!input.harness.length ||
|
|
111
|
+
input.harness.length > 100) ||
|
|
97
112
|
!Array.isArray(input.events) ||
|
|
98
113
|
!input.events.length ||
|
|
99
114
|
input.events.length > events_1.EXECUTION_TRACE_BATCH_SIZE)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-traces.service.js","sourceRoot":"","sources":["../../../src/executions/traces/execution-traces.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,6CAAmD;AACnD,yDAAsD;AACtD,6FAAuF;AACvF,qCAAyD;AACzD,qDAAoD;AACpD,0CAIuB;AACvB,qEAAgE;AAChE,uEAImC;AAG5B,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAGd;IACA;IAHnB,YAEmB,MAAwC,EACxC,YAA2B;QAD3B,WAAM,GAAN,MAAM,CAAkC;QACxC,iBAAY,GAAZ,YAAY,CAAe;IAC3C,CAAC;IAEJ,KAAK,CAAC,MAAM,CACV,KAAgC,EAChC,cAAsB;QAEtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,CAAC,cAAc,IAAI,SAAS,CAAC,cAAc,KAAK,cAAc,EAAE,CAAC;YACnE,MAAM,IAAI,2DAAiC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjE,CAAC;QAID,MAAM,UAAU,GAAc,
|
|
1
|
+
{"version":3,"file":"execution-traces.service.js","sourceRoot":"","sources":["../../../src/executions/traces/execution-traces.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ describe('ExecutionTracesService', () => {
|
|
|
27
27
|
emit = jest.fn();
|
|
28
28
|
service = new execution_traces_service_1.ExecutionTracesService({
|
|
29
29
|
query,
|
|
30
|
-
find,
|
|
30
|
+
find: (options) => options.where.source ? Promise.resolve([]) : find(options),
|
|
31
31
|
}, { emit });
|
|
32
32
|
});
|
|
33
33
|
it('stores the entire JSON payload in one idempotent batch insert after resolving ownership', async () => {
|
|
@@ -39,12 +39,26 @@ describe('ExecutionTracesService', () => {
|
|
|
39
39
|
expect(query.mock.calls[1][1]).toEqual([
|
|
40
40
|
executionId,
|
|
41
41
|
input.harness,
|
|
42
|
+
'harness',
|
|
42
43
|
1,
|
|
43
44
|
input.events[0].emittedAt,
|
|
44
45
|
null,
|
|
45
46
|
JSON.stringify(input.events[0].payload),
|
|
46
47
|
]);
|
|
47
48
|
});
|
|
49
|
+
it('stores explicit worker source without a fake SDK identity', async () => {
|
|
50
|
+
const input = {
|
|
51
|
+
...batch(),
|
|
52
|
+
source: 'worker',
|
|
53
|
+
harness: null,
|
|
54
|
+
};
|
|
55
|
+
await service.append(input, 'owner');
|
|
56
|
+
expect(query.mock.calls[1][1].slice(0, 3)).toEqual([
|
|
57
|
+
executionId,
|
|
58
|
+
null,
|
|
59
|
+
'worker',
|
|
60
|
+
]);
|
|
61
|
+
});
|
|
48
62
|
it('rejects another worker without inserting', async () => {
|
|
49
63
|
await expect(service.append(batch(), 'other')).rejects.toBeInstanceOf(execution_traces_errors_1.ExecutionTraceWorkerMismatchError);
|
|
50
64
|
expect(query).toHaveBeenCalledTimes(1);
|
|
@@ -58,6 +72,10 @@ describe('ExecutionTracesService', () => {
|
|
|
58
72
|
null,
|
|
59
73
|
{ ...batch(), executionId: 'not-a-uuid' },
|
|
60
74
|
{ ...batch(), harness: '' },
|
|
75
|
+
{ ...batch(), source: 'unknown' },
|
|
76
|
+
{ ...batch(), source: null },
|
|
77
|
+
{ ...batch(), source: 'worker' },
|
|
78
|
+
{ ...batch(), source: 'harness', harness: null },
|
|
61
79
|
{ ...batch(), events: [] },
|
|
62
80
|
{ ...batch(), events: Array(101).fill(batch().events[0]) },
|
|
63
81
|
{ ...batch(), events: [{ ...batch().events[0], sequence: 0 }] },
|
|
@@ -83,11 +101,12 @@ describe('ExecutionTracesService', () => {
|
|
|
83
101
|
const input = batch();
|
|
84
102
|
input.events[0].payload = null;
|
|
85
103
|
await service.append(input, 'owner');
|
|
86
|
-
expect(JSON.parse(query.mock.calls[1][1][
|
|
104
|
+
expect(JSON.parse(query.mock.calls[1][1][6])).toBeNull();
|
|
87
105
|
});
|
|
88
106
|
it('returns a stable cursor on an empty page and orders events by sequence', async () => {
|
|
89
107
|
expect(await service.list(executionId, 5, 10)).toEqual({
|
|
90
108
|
items: [],
|
|
109
|
+
lifecycle: [],
|
|
91
110
|
nextAfterSequence: 5,
|
|
92
111
|
hasMoreBefore: false,
|
|
93
112
|
});
|
|
@@ -116,6 +135,7 @@ describe('ExecutionTracesService', () => {
|
|
|
116
135
|
find.mockResolvedValue([{ sequence: 5 }, { sequence: 4 }, { sequence: 3 }]);
|
|
117
136
|
expect(await service.list(executionId, 0, 2, { latest: true })).toEqual({
|
|
118
137
|
items: [{ sequence: 4 }, { sequence: 5 }],
|
|
138
|
+
lifecycle: [],
|
|
119
139
|
nextAfterSequence: 5,
|
|
120
140
|
hasMoreBefore: true,
|
|
121
141
|
});
|