@taico/taico 0.2.12 → 0.2.14
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/agents/agent-avatar.library.d.ts +15 -0
- package/dist/agents/agent-avatar.library.js +128 -0
- package/dist/agents/agent-avatar.library.js.map +1 -0
- package/dist/agents/agent-template.catalog.js +5 -3
- package/dist/agents/agent-template.catalog.js.map +1 -1
- package/dist/agents/agents.service.d.ts +1 -0
- package/dist/agents/agents.service.js +14 -3
- package/dist/agents/agents.service.js.map +1 -1
- package/dist/agents/dto/agent-response.dto.js +1 -1
- package/dist/agents/dto/agent-response.dto.js.map +1 -1
- package/dist/agents/dto/agent-template-catalog-response.dto.d.ts +7 -0
- package/dist/agents/dto/agent-template-catalog-response.dto.js +41 -1
- package/dist/agents/dto/agent-template-catalog-response.dto.js.map +1 -1
- package/dist/agents/dto/create-agent.dto.js +1 -1
- package/dist/agents/dto/create-agent.dto.js.map +1 -1
- package/dist/agents/dto/patch-agent.dto.js +1 -1
- package/dist/agents/dto/patch-agent.dto.js.map +1 -1
- package/dist/agents/enums/agent-type.enum.d.ts +0 -1
- package/dist/agents/enums/agent-type.enum.js +1 -9
- package/dist/agents/enums/agent-type.enum.js.map +1 -1
- package/dist/agents/errors/agents.errors.d.ts +3 -0
- package/dist/agents/errors/agents.errors.js +7 -1
- package/dist/agents/errors/agents.errors.js.map +1 -1
- package/dist/app-init/agent/code-reviewer.agent.js +2 -1
- package/dist/app-init/agent/code-reviewer.agent.js.map +1 -1
- package/dist/app-init/agent/codex-dev.agent.js +2 -1
- package/dist/app-init/agent/codex-dev.agent.js.map +1 -1
- package/dist/app-init/agent/gemini-assistant.agent.js +2 -1
- package/dist/app-init/agent/gemini-assistant.agent.js.map +1 -1
- package/dist/app-init/agent/taico.agent.js +2 -1
- package/dist/app-init/agent/taico.agent.js.map +1 -1
- package/dist/app.module.js +2 -0
- package/dist/app.module.js.map +1 -1
- package/dist/context/context.mcp.gateway.js +55 -0
- package/dist/context/context.mcp.gateway.js.map +1 -1
- package/dist/context/context.service.js +42 -13
- package/dist/context/context.service.js.map +1 -1
- package/dist/context/dto/service/context.service.types.d.ts +4 -0
- package/dist/executions/active/active-task-execution.controller.d.ts +1 -0
- package/dist/executions/active/active-task-execution.controller.js +26 -0
- package/dist/executions/active/active-task-execution.controller.js.map +1 -1
- package/dist/executions/active/active-task-execution.service.d.ts +7 -1
- package/dist/executions/active/active-task-execution.service.js +26 -2
- package/dist/executions/active/active-task-execution.service.js.map +1 -1
- package/dist/executions/events/execution-interrupt.event.d.ts +15 -0
- package/dist/executions/events/execution-interrupt.event.js +15 -0
- package/dist/executions/events/execution-interrupt.event.js.map +1 -0
- package/dist/executions/executions-worker.gateway.d.ts +6 -0
- package/dist/executions/executions-worker.gateway.js +62 -0
- package/dist/executions/executions-worker.gateway.js.map +1 -1
- package/dist/executions/history/task-execution-history-error-code.enum.d.ts +1 -0
- package/dist/executions/history/task-execution-history-error-code.enum.js +1 -0
- package/dist/executions/history/task-execution-history-error-code.enum.js.map +1 -1
- package/dist/executions/queue/task-execution-queued.event.d.ts +6 -0
- package/dist/executions/queue/task-execution-queued.event.js +13 -0
- package/dist/executions/queue/task-execution-queued.event.js.map +1 -0
- package/dist/executions/readiness/task-execution-queue-populator.service.d.ts +3 -1
- package/dist/executions/readiness/task-execution-queue-populator.service.js +8 -2
- package/dist/executions/readiness/task-execution-queue-populator.service.js.map +1 -1
- package/dist/executions/readiness/task-execution-queue-populator.service.spec.d.ts +1 -0
- package/dist/executions/readiness/task-execution-queue-populator.service.spec.js +113 -0
- package/dist/executions/readiness/task-execution-queue-populator.service.spec.js.map +1 -0
- package/dist/llm/openai-responses.service.js +1 -1
- package/dist/main.js +0 -0
- package/dist/migrations/1742500000000-AllowInterruptedExecutionErrorCode.d.ts +7 -0
- package/dist/migrations/1742500000000-AllowInterruptedExecutionErrorCode.js +116 -0
- package/dist/migrations/1742500000000-AllowInterruptedExecutionErrorCode.js.map +1 -0
- package/dist/public/assets/index-BFiHpO7T.js +73 -0
- package/dist/public/assets/index-N2Ursvu5.css +1 -0
- package/dist/public/avatar/angus.png +0 -0
- package/dist/public/avatar/bruce.png +0 -0
- package/dist/public/avatar/claude.webp +0 -0
- package/dist/public/avatar/cockatoo.png +0 -0
- package/dist/public/avatar/gemini.png +0 -0
- package/dist/public/avatar/grace.png +0 -0
- package/dist/public/avatar/gustav.png +0 -0
- package/dist/public/avatar/openai.svg +15 -0
- package/dist/public/avatar/opencode.svg +1 -0
- package/dist/public/avatar/qwen.png +0 -0
- package/dist/public/avatar/stacy.png +0 -0
- package/dist/public/avatar/taico.png +0 -0
- package/dist/public/beta/assets/{index-g8TuopEh.js → index-Bnn4h6Il.js} +1 -1
- package/dist/public/beta/index.html +1 -1
- package/dist/public/index.html +2 -2
- package/dist/tasks/tasks.mcp.gateway.js +54 -0
- package/dist/tasks/tasks.mcp.gateway.js.map +1 -1
- package/dist/threads/backends/openai.backend.js +3 -3
- package/dist/threads/backends/openai.backend.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/dist/public/assets/index-6WngSDfP.js +0 -73
- package/dist/public/assets/index-Bh1qbaci.css +0 -1
|
@@ -4,13 +4,17 @@ import { type PostExecutionHeartbeatPayload, type PostExecutionActivityPayload }
|
|
|
4
4
|
import { ExecutionActivityService } from './execution-activity.service';
|
|
5
5
|
import { WorkersService } from '../workers/workers.service';
|
|
6
6
|
import { AccessTokenValidationService } from '../auth/guards/validation/access-token-validation.service';
|
|
7
|
+
import { TaskExecutionQueuedEvent } from './queue/task-execution-queued.event';
|
|
8
|
+
import { ExecutionInterruptEvent } from './events/execution-interrupt.event';
|
|
7
9
|
export declare class ExecutionsWorkerGateway implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect {
|
|
8
10
|
private readonly executionActivityService;
|
|
9
11
|
private readonly workersService;
|
|
10
12
|
private readonly accessTokenValidationService;
|
|
13
|
+
server: Server;
|
|
11
14
|
private readonly logger;
|
|
12
15
|
private readonly socketExpiryTimers;
|
|
13
16
|
private readonly harnessReportRequestedSocketIds;
|
|
17
|
+
private readonly workerSocketsByClientId;
|
|
14
18
|
constructor(executionActivityService: ExecutionActivityService, workersService: WorkersService, accessTokenValidationService: AccessTokenValidationService);
|
|
15
19
|
afterInit(server: Server): void;
|
|
16
20
|
handleConnection(client: Socket): void;
|
|
@@ -44,4 +48,6 @@ export declare class ExecutionsWorkerGateway implements OnGatewayInit, OnGateway
|
|
|
44
48
|
private requestWorkerHarnessesReport;
|
|
45
49
|
private authenticateWorkerSocket;
|
|
46
50
|
private getSocketToken;
|
|
51
|
+
handleTaskExecutionQueued(event: TaskExecutionQueuedEvent): void;
|
|
52
|
+
handleExecutionInterrupt(event: ExecutionInterruptEvent): void;
|
|
47
53
|
}
|
|
@@ -51,6 +51,7 @@ const websockets_1 = require("@nestjs/websockets");
|
|
|
51
51
|
const common_1 = require("@nestjs/common");
|
|
52
52
|
const socket_io_1 = require("socket.io");
|
|
53
53
|
const cookie = __importStar(require("cookie"));
|
|
54
|
+
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
54
55
|
const events_1 = require("@taico/events");
|
|
55
56
|
const ws_access_token_guard_1 = require("../auth/guards/guards/ws-access-token-guard");
|
|
56
57
|
const ws_scopes_guard_1 = require("../auth/guards/guards/ws-scopes.guard");
|
|
@@ -62,14 +63,18 @@ const workers_service_1 = require("../workers/workers.service");
|
|
|
62
63
|
const access_token_validation_service_1 = require("../auth/guards/validation/access-token-validation.service");
|
|
63
64
|
const token_header_extractor_1 = require("../auth/guards/extractors/token-header.extractor");
|
|
64
65
|
const token_cookie_extractor_1 = require("../auth/guards/extractors/token-cookie.extractor");
|
|
66
|
+
const task_execution_queued_event_1 = require("./queue/task-execution-queued.event");
|
|
67
|
+
const execution_interrupt_event_1 = require("./events/execution-interrupt.event");
|
|
65
68
|
const SOCKET_AUTH_EXPIRY_SKEW_MS = 1_000;
|
|
66
69
|
let ExecutionsWorkerGateway = ExecutionsWorkerGateway_1 = class ExecutionsWorkerGateway {
|
|
67
70
|
executionActivityService;
|
|
68
71
|
workersService;
|
|
69
72
|
accessTokenValidationService;
|
|
73
|
+
server;
|
|
70
74
|
logger = new common_1.Logger(ExecutionsWorkerGateway_1.name);
|
|
71
75
|
socketExpiryTimers = new Map();
|
|
72
76
|
harnessReportRequestedSocketIds = new Set();
|
|
77
|
+
workerSocketsByClientId = new Map();
|
|
73
78
|
constructor(executionActivityService, workersService, accessTokenValidationService) {
|
|
74
79
|
this.executionActivityService = executionActivityService;
|
|
75
80
|
this.workersService = workersService;
|
|
@@ -92,6 +97,13 @@ let ExecutionsWorkerGateway = ExecutionsWorkerGateway_1 = class ExecutionsWorker
|
|
|
92
97
|
}
|
|
93
98
|
handleConnection(client) {
|
|
94
99
|
this.logger.log(`Worker client connected: ${client.id}`);
|
|
100
|
+
const oauthClientId = this.getOauthClientId(client);
|
|
101
|
+
if (oauthClientId) {
|
|
102
|
+
if (!this.workerSocketsByClientId.has(oauthClientId)) {
|
|
103
|
+
this.workerSocketsByClientId.set(oauthClientId, new Set());
|
|
104
|
+
}
|
|
105
|
+
this.workerSocketsByClientId.get(oauthClientId).add(client.id);
|
|
106
|
+
}
|
|
95
107
|
void this.recordAuthenticatedWorkerSeen(client).catch((error) => {
|
|
96
108
|
this.logger.warn({
|
|
97
109
|
message: 'Failed to record worker connection liveness',
|
|
@@ -104,6 +116,16 @@ let ExecutionsWorkerGateway = ExecutionsWorkerGateway_1 = class ExecutionsWorker
|
|
|
104
116
|
this.logger.log(`Worker client disconnected: ${client.id}`);
|
|
105
117
|
this.clearTokenExpiryDisconnect(client.id);
|
|
106
118
|
this.harnessReportRequestedSocketIds.delete(client.id);
|
|
119
|
+
const oauthClientId = this.getOauthClientId(client);
|
|
120
|
+
if (oauthClientId) {
|
|
121
|
+
const sockets = this.workerSocketsByClientId.get(oauthClientId);
|
|
122
|
+
if (sockets) {
|
|
123
|
+
sockets.delete(client.id);
|
|
124
|
+
if (sockets.size === 0) {
|
|
125
|
+
this.workerSocketsByClientId.delete(oauthClientId);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
107
129
|
}
|
|
108
130
|
async postExecutionActivity(client, body) {
|
|
109
131
|
if (!body?.executionId) {
|
|
@@ -247,8 +269,36 @@ let ExecutionsWorkerGateway = ExecutionsWorkerGateway_1 = class ExecutionsWorker
|
|
|
247
269
|
(0, token_header_extractor_1.tokenFromHeaders)(client.handshake.headers) ||
|
|
248
270
|
(0, token_cookie_extractor_1.tokenFromCookies)(cookie.parse(client.handshake.headers.cookie || '')));
|
|
249
271
|
}
|
|
272
|
+
handleTaskExecutionQueued(event) {
|
|
273
|
+
const wireEvent = {
|
|
274
|
+
taskId: event.taskId,
|
|
275
|
+
occurredAt: event.occurredAt.toISOString(),
|
|
276
|
+
};
|
|
277
|
+
this.server.emit(events_1.ExecutionWireEvents.TASK_EXECUTION_QUEUED, wireEvent);
|
|
278
|
+
this.logger.debug(`Emitted ${events_1.ExecutionWireEvents.TASK_EXECUTION_QUEUED} for task ${event.taskId} to all workers`);
|
|
279
|
+
}
|
|
280
|
+
handleExecutionInterrupt(event) {
|
|
281
|
+
const wireEvent = {
|
|
282
|
+
executionId: event.payload.executionId,
|
|
283
|
+
requestedAt: event.occurredAt.toISOString(),
|
|
284
|
+
};
|
|
285
|
+
this.logger.debug(`Handling interrupt for execution ${event.payload.executionId} requested by actor ${event.actor.id}`);
|
|
286
|
+
const socketIds = this.workerSocketsByClientId.get(event.payload.workerClientId);
|
|
287
|
+
if (!socketIds || socketIds.size === 0) {
|
|
288
|
+
this.logger.warn(`No connected sockets found for worker ${event.payload.workerClientId} when interrupting execution ${event.payload.executionId}`);
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
this.logger.debug(`Emitting ${events_1.ExecutionWireEvents.EXECUTION_INTERRUPT_REQUEST} for execution ${event.payload.executionId} to worker client ${event.payload.workerClientId} on sockets ${[...socketIds].join(',')}`);
|
|
292
|
+
this.server.to([...socketIds]).emit(events_1.ExecutionWireEvents.EXECUTION_INTERRUPT_REQUEST, wireEvent);
|
|
293
|
+
this.logger.log(`Emitted ${events_1.ExecutionWireEvents.EXECUTION_INTERRUPT_REQUEST} for execution ${event.payload.executionId} to ${socketIds.size} worker socket(s)`);
|
|
294
|
+
this.logger.debug(`Finished emitting ${events_1.ExecutionWireEvents.EXECUTION_INTERRUPT_REQUEST} for execution ${event.payload.executionId} to worker client ${event.payload.workerClientId}`);
|
|
295
|
+
}
|
|
250
296
|
};
|
|
251
297
|
exports.ExecutionsWorkerGateway = ExecutionsWorkerGateway;
|
|
298
|
+
__decorate([
|
|
299
|
+
(0, websockets_1.WebSocketServer)(),
|
|
300
|
+
__metadata("design:type", socket_io_1.Server)
|
|
301
|
+
], ExecutionsWorkerGateway.prototype, "server", void 0);
|
|
252
302
|
__decorate([
|
|
253
303
|
(0, websockets_1.SubscribeMessage)(events_1.ExecutionWireEvents.EXECUTION_ACTIVITY_POST),
|
|
254
304
|
__param(0, (0, websockets_1.ConnectedSocket)()),
|
|
@@ -272,6 +322,18 @@ __decorate([
|
|
|
272
322
|
__metadata("design:paramtypes", [socket_io_1.Socket]),
|
|
273
323
|
__metadata("design:returntype", Promise)
|
|
274
324
|
], ExecutionsWorkerGateway.prototype, "postWorkerHeartbeat", null);
|
|
325
|
+
__decorate([
|
|
326
|
+
(0, event_emitter_1.OnEvent)(task_execution_queued_event_1.TaskExecutionQueuedEvent.INTERNAL),
|
|
327
|
+
__metadata("design:type", Function),
|
|
328
|
+
__metadata("design:paramtypes", [task_execution_queued_event_1.TaskExecutionQueuedEvent]),
|
|
329
|
+
__metadata("design:returntype", void 0)
|
|
330
|
+
], ExecutionsWorkerGateway.prototype, "handleTaskExecutionQueued", null);
|
|
331
|
+
__decorate([
|
|
332
|
+
(0, event_emitter_1.OnEvent)(execution_interrupt_event_1.ExecutionInterruptEvent.INTERNAL),
|
|
333
|
+
__metadata("design:type", Function),
|
|
334
|
+
__metadata("design:paramtypes", [execution_interrupt_event_1.ExecutionInterruptEvent]),
|
|
335
|
+
__metadata("design:returntype", void 0)
|
|
336
|
+
], ExecutionsWorkerGateway.prototype, "handleExecutionInterrupt", null);
|
|
275
337
|
exports.ExecutionsWorkerGateway = ExecutionsWorkerGateway = ExecutionsWorkerGateway_1 = __decorate([
|
|
276
338
|
(0, common_1.UseGuards)(ws_access_token_guard_1.WsAccessTokenGuard, ws_scopes_guard_1.WsScopesGuard),
|
|
277
339
|
(0, require_scopes_decorator_1.RequireScopes)(workers_scopes_1.WorkersScopes.CONNECT.id),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executions-worker.gateway.js","sourceRoot":"","sources":["../../src/executions/executions-worker.gateway.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"executions-worker.gateway.js","sourceRoot":"","sources":["../../src/executions/executions-worker.gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ exports.TaskExecutionHistoryErrorCode = void 0;
|
|
|
4
4
|
var TaskExecutionHistoryErrorCode;
|
|
5
5
|
(function (TaskExecutionHistoryErrorCode) {
|
|
6
6
|
TaskExecutionHistoryErrorCode["OUT_OF_QUOTA"] = "OUT_OF_QUOTA";
|
|
7
|
+
TaskExecutionHistoryErrorCode["INTERRUPTED"] = "INTERRUPTED";
|
|
7
8
|
TaskExecutionHistoryErrorCode["UNKNOWN"] = "UNKNOWN";
|
|
8
9
|
})(TaskExecutionHistoryErrorCode || (exports.TaskExecutionHistoryErrorCode = TaskExecutionHistoryErrorCode = {}));
|
|
9
10
|
//# sourceMappingURL=task-execution-history-error-code.enum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-execution-history-error-code.enum.js","sourceRoot":"","sources":["../../../src/executions/history/task-execution-history-error-code.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"task-execution-history-error-code.enum.js","sourceRoot":"","sources":["../../../src/executions/history/task-execution-history-error-code.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,6BAIX;AAJD,WAAY,6BAA6B;IACvC,8DAA6B,CAAA;IAC7B,4DAA2B,CAAA;IAC3B,oDAAmB,CAAA;AACrB,CAAC,EAJW,6BAA6B,6CAA7B,6BAA6B,QAIxC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TaskExecutionQueuedEvent = void 0;
|
|
4
|
+
class TaskExecutionQueuedEvent {
|
|
5
|
+
taskId;
|
|
6
|
+
static INTERNAL = Symbol('executions.TaskExecutionQueuedEvent');
|
|
7
|
+
occurredAt = new Date();
|
|
8
|
+
constructor(taskId) {
|
|
9
|
+
this.taskId = taskId;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.TaskExecutionQueuedEvent = TaskExecutionQueuedEvent;
|
|
13
|
+
//# sourceMappingURL=task-execution-queued.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-execution-queued.event.js","sourceRoot":"","sources":["../../../src/executions/queue/task-execution-queued.event.ts"],"names":[],"mappings":";;;AAIA,MAAa,wBAAwB;IAKP;IAJ5B,MAAM,CAAU,QAAQ,GAAG,MAAM,CAAC,qCAAqC,CAAC,CAAC;IAEhE,UAAU,GAAS,IAAI,IAAI,EAAE,CAAC;IAEvC,YAA4B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;;AALhD,4DAMC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Repository } from 'typeorm';
|
|
2
|
+
import { EventEmitter2 } from '@nestjs/event-emitter';
|
|
2
3
|
import { AgentsService } from '../../agents/agents.service';
|
|
3
4
|
import { TaskExecutionQueueEntity } from '../queue/task-execution-queue.entity';
|
|
4
5
|
import { ReadinessCandidateRepository } from './readiness-candidate.repository';
|
|
@@ -6,8 +7,9 @@ export declare class TaskExecutionQueuePopulatorService {
|
|
|
6
7
|
private readonly taskExecutionQueueRepository;
|
|
7
8
|
private readonly agentsService;
|
|
8
9
|
private readonly readinessCandidateRepository;
|
|
10
|
+
private readonly eventEmitter;
|
|
9
11
|
private readonly logger;
|
|
10
|
-
constructor(taskExecutionQueueRepository: Repository<TaskExecutionQueueEntity>, agentsService: AgentsService, readinessCandidateRepository: ReadinessCandidateRepository);
|
|
12
|
+
constructor(taskExecutionQueueRepository: Repository<TaskExecutionQueueEntity>, agentsService: AgentsService, readinessCandidateRepository: ReadinessCandidateRepository, eventEmitter: EventEmitter2);
|
|
11
13
|
populateTask(taskId: string): Promise<void>;
|
|
12
14
|
populateAllTasks(): Promise<void>;
|
|
13
15
|
private reconcileTask;
|
|
@@ -17,18 +17,22 @@ exports.TaskExecutionQueuePopulatorService = void 0;
|
|
|
17
17
|
const common_1 = require("@nestjs/common");
|
|
18
18
|
const typeorm_1 = require("typeorm");
|
|
19
19
|
const typeorm_2 = require("@nestjs/typeorm");
|
|
20
|
+
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
20
21
|
const agents_service_1 = require("../../agents/agents.service");
|
|
21
22
|
const task_execution_queue_entity_1 = require("../queue/task-execution-queue.entity");
|
|
22
23
|
const readiness_candidate_repository_1 = require("./readiness-candidate.repository");
|
|
24
|
+
const task_execution_queued_event_1 = require("../queue/task-execution-queued.event");
|
|
23
25
|
let TaskExecutionQueuePopulatorService = TaskExecutionQueuePopulatorService_1 = class TaskExecutionQueuePopulatorService {
|
|
24
26
|
taskExecutionQueueRepository;
|
|
25
27
|
agentsService;
|
|
26
28
|
readinessCandidateRepository;
|
|
29
|
+
eventEmitter;
|
|
27
30
|
logger = new common_1.Logger(TaskExecutionQueuePopulatorService_1.name);
|
|
28
|
-
constructor(taskExecutionQueueRepository, agentsService, readinessCandidateRepository) {
|
|
31
|
+
constructor(taskExecutionQueueRepository, agentsService, readinessCandidateRepository, eventEmitter) {
|
|
29
32
|
this.taskExecutionQueueRepository = taskExecutionQueueRepository;
|
|
30
33
|
this.agentsService = agentsService;
|
|
31
34
|
this.readinessCandidateRepository = readinessCandidateRepository;
|
|
35
|
+
this.eventEmitter = eventEmitter;
|
|
32
36
|
}
|
|
33
37
|
async populateTask(taskId) {
|
|
34
38
|
const task = await this.readinessCandidateRepository.findCandidateTaskById(taskId);
|
|
@@ -60,6 +64,7 @@ let TaskExecutionQueuePopulatorService = TaskExecutionQueuePopulatorService_1 =
|
|
|
60
64
|
if (shouldBeQueued) {
|
|
61
65
|
this.logger.debug(`Queueing task ${task.id} (${task.name})`);
|
|
62
66
|
await this.upsertQueueEntry(task.id);
|
|
67
|
+
this.eventEmitter.emit(task_execution_queued_event_1.TaskExecutionQueuedEvent.INTERNAL, new task_execution_queued_event_1.TaskExecutionQueuedEvent(task.id));
|
|
63
68
|
return;
|
|
64
69
|
}
|
|
65
70
|
this.logger.debug(`Not queueing task ${task.id} (${task.name})`);
|
|
@@ -130,6 +135,7 @@ exports.TaskExecutionQueuePopulatorService = TaskExecutionQueuePopulatorService
|
|
|
130
135
|
__param(0, (0, typeorm_2.InjectRepository)(task_execution_queue_entity_1.TaskExecutionQueueEntity)),
|
|
131
136
|
__metadata("design:paramtypes", [typeorm_1.Repository,
|
|
132
137
|
agents_service_1.AgentsService,
|
|
133
|
-
readiness_candidate_repository_1.ReadinessCandidateRepository
|
|
138
|
+
readiness_candidate_repository_1.ReadinessCandidateRepository,
|
|
139
|
+
event_emitter_1.EventEmitter2])
|
|
134
140
|
], TaskExecutionQueuePopulatorService);
|
|
135
141
|
//# sourceMappingURL=task-execution-queue-populator.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-execution-queue-populator.service.js","sourceRoot":"","sources":["../../../src/executions/readiness/task-execution-queue-populator.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,qCAA8C;AAC9C,6CAAmD;AACnD,gEAA4D;AAG5D,sFAAgF;AAChF,qFAAgF;AAGzE,IAAM,kCAAkC,0CAAxC,MAAM,kCAAkC;IAK1B;IACA;IACA;
|
|
1
|
+
{"version":3,"file":"task-execution-queue-populator.service.js","sourceRoot":"","sources":["../../../src/executions/readiness/task-execution-queue-populator.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const testing_1 = require("@nestjs/testing");
|
|
4
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
5
|
+
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
6
|
+
const task_execution_queue_populator_service_1 = require("./task-execution-queue-populator.service");
|
|
7
|
+
const task_execution_queue_entity_1 = require("../queue/task-execution-queue.entity");
|
|
8
|
+
const task_execution_queued_event_1 = require("../queue/task-execution-queued.event");
|
|
9
|
+
const agents_service_1 = require("../../agents/agents.service");
|
|
10
|
+
const readiness_candidate_repository_1 = require("./readiness-candidate.repository");
|
|
11
|
+
describe('TaskExecutionQueuePopulatorService - Event Emission', () => {
|
|
12
|
+
let service;
|
|
13
|
+
let queueRepository;
|
|
14
|
+
let eventEmitter;
|
|
15
|
+
let agentsService;
|
|
16
|
+
let readinessCandidateRepository;
|
|
17
|
+
beforeEach(async () => {
|
|
18
|
+
const module = await testing_1.Test.createTestingModule({
|
|
19
|
+
providers: [
|
|
20
|
+
task_execution_queue_populator_service_1.TaskExecutionQueuePopulatorService,
|
|
21
|
+
{
|
|
22
|
+
provide: (0, typeorm_1.getRepositoryToken)(task_execution_queue_entity_1.TaskExecutionQueueEntity),
|
|
23
|
+
useValue: {
|
|
24
|
+
createQueryBuilder: jest.fn(),
|
|
25
|
+
delete: jest.fn(),
|
|
26
|
+
clear: jest.fn(),
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
provide: agents_service_1.AgentsService,
|
|
31
|
+
useValue: {
|
|
32
|
+
getActiveAgentsByActorIds: jest.fn(),
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
provide: readiness_candidate_repository_1.ReadinessCandidateRepository,
|
|
37
|
+
useValue: {
|
|
38
|
+
findCandidateTaskById: jest.fn(),
|
|
39
|
+
listCandidateTasks: jest.fn(),
|
|
40
|
+
countActiveExecutionsForAgent: jest.fn(),
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
provide: event_emitter_1.EventEmitter2,
|
|
45
|
+
useValue: {
|
|
46
|
+
emit: jest.fn(),
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
}).compile();
|
|
51
|
+
service = module.get(task_execution_queue_populator_service_1.TaskExecutionQueuePopulatorService);
|
|
52
|
+
queueRepository = module.get((0, typeorm_1.getRepositoryToken)(task_execution_queue_entity_1.TaskExecutionQueueEntity));
|
|
53
|
+
eventEmitter = module.get(event_emitter_1.EventEmitter2);
|
|
54
|
+
agentsService = module.get(agents_service_1.AgentsService);
|
|
55
|
+
readinessCandidateRepository = module.get(readiness_candidate_repository_1.ReadinessCandidateRepository);
|
|
56
|
+
});
|
|
57
|
+
describe('upsertQueueEntry', () => {
|
|
58
|
+
it('should emit TaskExecutionQueuedEvent when a new row is inserted (SQLite changes > 0)', async () => {
|
|
59
|
+
const taskId = 'test-task-id';
|
|
60
|
+
const executeResult = {
|
|
61
|
+
raw: { changes: 1 },
|
|
62
|
+
identifiers: [{ taskId }],
|
|
63
|
+
};
|
|
64
|
+
const mockQueryBuilder = {
|
|
65
|
+
insert: jest.fn().mockReturnThis(),
|
|
66
|
+
into: jest.fn().mockReturnThis(),
|
|
67
|
+
values: jest.fn().mockReturnThis(),
|
|
68
|
+
orIgnore: jest.fn().mockReturnThis(),
|
|
69
|
+
execute: jest.fn().mockResolvedValue(executeResult),
|
|
70
|
+
};
|
|
71
|
+
queueRepository.createQueryBuilder.mockReturnValue(mockQueryBuilder);
|
|
72
|
+
await service.upsertQueueEntry(taskId);
|
|
73
|
+
expect(eventEmitter.emit).toHaveBeenCalledWith(task_execution_queued_event_1.TaskExecutionQueuedEvent.INTERNAL, expect.objectContaining({
|
|
74
|
+
taskId,
|
|
75
|
+
}));
|
|
76
|
+
expect(eventEmitter.emit).toHaveBeenCalledTimes(1);
|
|
77
|
+
});
|
|
78
|
+
it('should NOT emit TaskExecutionQueuedEvent when insert is ignored (SQLite changes = 0)', async () => {
|
|
79
|
+
const taskId = 'test-task-id';
|
|
80
|
+
const executeResult = {
|
|
81
|
+
raw: { changes: 0 },
|
|
82
|
+
identifiers: [],
|
|
83
|
+
};
|
|
84
|
+
const mockQueryBuilder = {
|
|
85
|
+
insert: jest.fn().mockReturnThis(),
|
|
86
|
+
into: jest.fn().mockReturnThis(),
|
|
87
|
+
values: jest.fn().mockReturnThis(),
|
|
88
|
+
orIgnore: jest.fn().mockReturnThis(),
|
|
89
|
+
execute: jest.fn().mockResolvedValue(executeResult),
|
|
90
|
+
};
|
|
91
|
+
queueRepository.createQueryBuilder.mockReturnValue(mockQueryBuilder);
|
|
92
|
+
await service.upsertQueueEntry(taskId);
|
|
93
|
+
expect(eventEmitter.emit).not.toHaveBeenCalled();
|
|
94
|
+
});
|
|
95
|
+
it('should handle missing raw result gracefully', async () => {
|
|
96
|
+
const taskId = 'test-task-id';
|
|
97
|
+
const executeResult = {
|
|
98
|
+
identifiers: [],
|
|
99
|
+
};
|
|
100
|
+
const mockQueryBuilder = {
|
|
101
|
+
insert: jest.fn().mockReturnThis(),
|
|
102
|
+
into: jest.fn().mockReturnThis(),
|
|
103
|
+
values: jest.fn().mockReturnThis(),
|
|
104
|
+
orIgnore: jest.fn().mockReturnThis(),
|
|
105
|
+
execute: jest.fn().mockResolvedValue(executeResult),
|
|
106
|
+
};
|
|
107
|
+
queueRepository.createQueryBuilder.mockReturnValue(mockQueryBuilder);
|
|
108
|
+
await service.upsertQueueEntry(taskId);
|
|
109
|
+
expect(eventEmitter.emit).not.toHaveBeenCalled();
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=task-execution-queue-populator.service.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-execution-queue-populator.service.spec.js","sourceRoot":"","sources":["../../../src/executions/readiness/task-execution-queue-populator.service.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,7 +44,7 @@ let OpenAiResponsesService = OpenAiResponsesService_1 = class OpenAiResponsesSer
|
|
|
44
44
|
try {
|
|
45
45
|
const client = new openai_1.OpenAI({ apiKey });
|
|
46
46
|
const response = await client.responses.create({
|
|
47
|
-
model: input.model || 'gpt-5.
|
|
47
|
+
model: input.model || 'gpt-5.4',
|
|
48
48
|
input: input.prompt,
|
|
49
49
|
});
|
|
50
50
|
const text = this.extractResponseText(response);
|
package/dist/main.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
+
export declare class AllowInterruptedExecutionErrorCode1742500000000 implements MigrationInterface {
|
|
3
|
+
name: string;
|
|
4
|
+
up(queryRunner: QueryRunner): Promise<void>;
|
|
5
|
+
down(queryRunner: QueryRunner): Promise<void>;
|
|
6
|
+
private rebuildTaskExecutionHistory;
|
|
7
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AllowInterruptedExecutionErrorCode1742500000000 = void 0;
|
|
4
|
+
class AllowInterruptedExecutionErrorCode1742500000000 {
|
|
5
|
+
name = 'AllowInterruptedExecutionErrorCode1742500000000';
|
|
6
|
+
async up(queryRunner) {
|
|
7
|
+
await this.rebuildTaskExecutionHistory(queryRunner, true);
|
|
8
|
+
}
|
|
9
|
+
async down(queryRunner) {
|
|
10
|
+
await queryRunner.query(`
|
|
11
|
+
UPDATE task_execution_history
|
|
12
|
+
SET error_code = 'UNKNOWN'
|
|
13
|
+
WHERE error_code = 'INTERRUPTED'
|
|
14
|
+
`);
|
|
15
|
+
await this.rebuildTaskExecutionHistory(queryRunner, false);
|
|
16
|
+
}
|
|
17
|
+
async rebuildTaskExecutionHistory(queryRunner, allowInterrupted) {
|
|
18
|
+
const errorCodes = allowInterrupted
|
|
19
|
+
? "'OUT_OF_QUOTA', 'INTERRUPTED', 'UNKNOWN'"
|
|
20
|
+
: "'OUT_OF_QUOTA', 'UNKNOWN'";
|
|
21
|
+
await queryRunner.query('PRAGMA foreign_keys=off');
|
|
22
|
+
try {
|
|
23
|
+
await queryRunner.query('DROP INDEX IF EXISTS idx_task_execution_history_v2_transitioned_at');
|
|
24
|
+
await queryRunner.query('DROP INDEX IF EXISTS idx_task_execution_history_v2_worker_client_id');
|
|
25
|
+
await queryRunner.query('DROP INDEX IF EXISTS idx_task_execution_history_v2_agent_actor_id');
|
|
26
|
+
await queryRunner.query('DROP INDEX IF EXISTS idx_task_execution_history_v2_task_id');
|
|
27
|
+
await queryRunner.query(`
|
|
28
|
+
CREATE TABLE task_execution_history_new (
|
|
29
|
+
id varchar PRIMARY KEY NOT NULL,
|
|
30
|
+
task_id text NOT NULL,
|
|
31
|
+
claimed_at datetime NOT NULL,
|
|
32
|
+
transitioned_at datetime NOT NULL,
|
|
33
|
+
agent_actor_id text NOT NULL,
|
|
34
|
+
worker_client_id text NOT NULL,
|
|
35
|
+
status text NOT NULL
|
|
36
|
+
CHECK (status IN ('SUCCEEDED', 'FAILED', 'STALE', 'CANCELLED')),
|
|
37
|
+
error_code text
|
|
38
|
+
CHECK (error_code IS NULL OR error_code IN (${errorCodes})),
|
|
39
|
+
row_version integer NOT NULL DEFAULT 1,
|
|
40
|
+
created_at datetime NOT NULL DEFAULT (datetime('now')),
|
|
41
|
+
updated_at datetime NOT NULL DEFAULT (datetime('now')),
|
|
42
|
+
deleted_at datetime,
|
|
43
|
+
error_message text,
|
|
44
|
+
runner_session_id text,
|
|
45
|
+
tool_call_count integer NOT NULL DEFAULT 0,
|
|
46
|
+
CONSTRAINT fk_task_execution_history_task_id
|
|
47
|
+
FOREIGN KEY (task_id) REFERENCES tasks(id) ON DELETE CASCADE,
|
|
48
|
+
CONSTRAINT fk_task_execution_history_agent_actor_id
|
|
49
|
+
FOREIGN KEY (agent_actor_id) REFERENCES agents(actor_id)
|
|
50
|
+
)
|
|
51
|
+
`);
|
|
52
|
+
await queryRunner.query(`
|
|
53
|
+
INSERT INTO task_execution_history_new (
|
|
54
|
+
id,
|
|
55
|
+
task_id,
|
|
56
|
+
claimed_at,
|
|
57
|
+
transitioned_at,
|
|
58
|
+
agent_actor_id,
|
|
59
|
+
worker_client_id,
|
|
60
|
+
status,
|
|
61
|
+
error_code,
|
|
62
|
+
row_version,
|
|
63
|
+
created_at,
|
|
64
|
+
updated_at,
|
|
65
|
+
deleted_at,
|
|
66
|
+
error_message,
|
|
67
|
+
runner_session_id,
|
|
68
|
+
tool_call_count
|
|
69
|
+
)
|
|
70
|
+
SELECT
|
|
71
|
+
id,
|
|
72
|
+
task_id,
|
|
73
|
+
claimed_at,
|
|
74
|
+
transitioned_at,
|
|
75
|
+
agent_actor_id,
|
|
76
|
+
worker_client_id,
|
|
77
|
+
status,
|
|
78
|
+
error_code,
|
|
79
|
+
row_version,
|
|
80
|
+
created_at,
|
|
81
|
+
updated_at,
|
|
82
|
+
deleted_at,
|
|
83
|
+
error_message,
|
|
84
|
+
runner_session_id,
|
|
85
|
+
tool_call_count
|
|
86
|
+
FROM task_execution_history
|
|
87
|
+
`);
|
|
88
|
+
await queryRunner.query('DROP TABLE task_execution_history');
|
|
89
|
+
await queryRunner.query(`
|
|
90
|
+
ALTER TABLE task_execution_history_new
|
|
91
|
+
RENAME TO task_execution_history
|
|
92
|
+
`);
|
|
93
|
+
await queryRunner.query(`
|
|
94
|
+
CREATE INDEX IF NOT EXISTS idx_task_execution_history_v2_task_id
|
|
95
|
+
ON task_execution_history (task_id)
|
|
96
|
+
`);
|
|
97
|
+
await queryRunner.query(`
|
|
98
|
+
CREATE INDEX IF NOT EXISTS idx_task_execution_history_v2_agent_actor_id
|
|
99
|
+
ON task_execution_history (agent_actor_id)
|
|
100
|
+
`);
|
|
101
|
+
await queryRunner.query(`
|
|
102
|
+
CREATE INDEX IF NOT EXISTS idx_task_execution_history_v2_worker_client_id
|
|
103
|
+
ON task_execution_history (worker_client_id)
|
|
104
|
+
`);
|
|
105
|
+
await queryRunner.query(`
|
|
106
|
+
CREATE INDEX IF NOT EXISTS idx_task_execution_history_v2_transitioned_at
|
|
107
|
+
ON task_execution_history (transitioned_at)
|
|
108
|
+
`);
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
await queryRunner.query('PRAGMA foreign_keys=on');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.AllowInterruptedExecutionErrorCode1742500000000 = AllowInterruptedExecutionErrorCode1742500000000;
|
|
116
|
+
//# sourceMappingURL=1742500000000-AllowInterruptedExecutionErrorCode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1742500000000-AllowInterruptedExecutionErrorCode.js","sourceRoot":"","sources":["../../src/migrations/1742500000000-AllowInterruptedExecutionErrorCode.ts"],"names":[],"mappings":";;;AAEA,MAAa,+CAA+C;IAG1D,IAAI,GAAG,iDAAiD,CAAC;IAElD,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CAAC;;;;KAIvB,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAEO,KAAK,CAAC,2BAA2B,CACvC,WAAwB,EACxB,gBAAyB;QAEzB,MAAM,UAAU,GAAG,gBAAgB;YACjC,CAAC,CAAC,0CAA0C;YAC5C,CAAC,CAAC,2BAA2B,CAAC;QAEhC,MAAM,WAAW,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,KAAK,CACrB,oEAAoE,CACrE,CAAC;YACF,MAAM,WAAW,CAAC,KAAK,CACrB,qEAAqE,CACtE,CAAC;YACF,MAAM,WAAW,CAAC,KAAK,CACrB,mEAAmE,CACpE,CAAC;YACF,MAAM,WAAW,CAAC,KAAK,CACrB,4DAA4D,CAC7D,CAAC;YAEF,MAAM,WAAW,CAAC,KAAK,CAAC;;;;;;;;;;;0DAW4B,UAAU;;;;;;;;;;;;;OAa7D,CAAC,CAAC;YAEH,MAAM,WAAW,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCvB,CAAC,CAAC;YAEH,MAAM,WAAW,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAC7D,MAAM,WAAW,CAAC,KAAK,CAAC;;;OAGvB,CAAC,CAAC;YAEH,MAAM,WAAW,CAAC,KAAK,CAAC;;;OAGvB,CAAC,CAAC;YACH,MAAM,WAAW,CAAC,KAAK,CAAC;;;OAGvB,CAAC,CAAC;YACH,MAAM,WAAW,CAAC,KAAK,CAAC;;;OAGvB,CAAC,CAAC;YACH,MAAM,WAAW,CAAC,KAAK,CAAC;;;OAGvB,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,MAAM,WAAW,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;CACF;AAlID,0GAkIC"}
|