@overlordai/server 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/database/migrations/001-init-schema.sql +226 -0
- package/database/migrations/002-add-indexes.sql +17 -0
- package/database/migrations/003-add-settings-table.sql +4 -0
- package/database/migrations/004-add-developer-id-index.sql +5 -0
- package/dist/adapters/adapter.interface.d.ts +41 -0
- package/dist/adapters/adapter.interface.d.ts.map +1 -0
- package/dist/adapters/adapter.interface.js +6 -0
- package/dist/adapters/adapter.interface.js.map +1 -0
- package/dist/adapters/adapter.module.d.ts +3 -0
- package/dist/adapters/adapter.module.d.ts.map +1 -0
- package/dist/adapters/adapter.module.js +54 -0
- package/dist/adapters/adapter.module.js.map +1 -0
- package/dist/adapters/adapter.registry.d.ts +19 -0
- package/dist/adapters/adapter.registry.d.ts.map +1 -0
- package/dist/adapters/adapter.registry.js +51 -0
- package/dist/adapters/adapter.registry.js.map +1 -0
- package/dist/adapters/lark/lark-card.builder.d.ts +48 -0
- package/dist/adapters/lark/lark-card.builder.d.ts.map +1 -0
- package/dist/adapters/lark/lark-card.builder.js +259 -0
- package/dist/adapters/lark/lark-card.builder.js.map +1 -0
- package/dist/adapters/lark/lark-message.parser.d.ts +51 -0
- package/dist/adapters/lark/lark-message.parser.d.ts.map +1 -0
- package/dist/adapters/lark/lark-message.parser.js +189 -0
- package/dist/adapters/lark/lark-message.parser.js.map +1 -0
- package/dist/adapters/lark/lark-signature.d.ts +13 -0
- package/dist/adapters/lark/lark-signature.d.ts.map +1 -0
- package/dist/adapters/lark/lark-signature.js +58 -0
- package/dist/adapters/lark/lark-signature.js.map +1 -0
- package/dist/adapters/lark/lark.adapter.d.ts +65 -0
- package/dist/adapters/lark/lark.adapter.d.ts.map +1 -0
- package/dist/adapters/lark/lark.adapter.js +565 -0
- package/dist/adapters/lark/lark.adapter.js.map +1 -0
- package/dist/adapters/lark/lark.controller.d.ts +21 -0
- package/dist/adapters/lark/lark.controller.d.ts.map +1 -0
- package/dist/adapters/lark/lark.controller.js +120 -0
- package/dist/adapters/lark/lark.controller.js.map +1 -0
- package/dist/adapters/slack/slack.adapter.d.ts +19 -0
- package/dist/adapters/slack/slack.adapter.d.ts.map +1 -0
- package/dist/adapters/slack/slack.adapter.js +42 -0
- package/dist/adapters/slack/slack.adapter.js.map +1 -0
- package/dist/app.module.d.ts +5 -0
- package/dist/app.module.d.ts.map +1 -0
- package/dist/app.module.js +48 -0
- package/dist/app.module.js.map +1 -0
- package/dist/auth/auth.controller.d.ts +15 -0
- package/dist/auth/auth.controller.d.ts.map +1 -0
- package/dist/auth/auth.controller.js +67 -0
- package/dist/auth/auth.controller.js.map +1 -0
- package/dist/auth/auth.module.d.ts +3 -0
- package/dist/auth/auth.module.d.ts.map +1 -0
- package/dist/auth/auth.module.js +46 -0
- package/dist/auth/auth.module.js.map +1 -0
- package/dist/auth/auth.service.d.ts +62 -0
- package/dist/auth/auth.service.d.ts.map +1 -0
- package/dist/auth/auth.service.js +307 -0
- package/dist/auth/auth.service.js.map +1 -0
- package/dist/auth/decorators/allow-totp-setup.decorator.d.ts +3 -0
- package/dist/auth/decorators/allow-totp-setup.decorator.d.ts.map +1 -0
- package/dist/auth/decorators/allow-totp-setup.decorator.js +8 -0
- package/dist/auth/decorators/allow-totp-setup.decorator.js.map +1 -0
- package/dist/auth/decorators/project-roles.decorator.d.ts +4 -0
- package/dist/auth/decorators/project-roles.decorator.d.ts.map +1 -0
- package/dist/auth/decorators/project-roles.decorator.js +8 -0
- package/dist/auth/decorators/project-roles.decorator.js.map +1 -0
- package/dist/auth/decorators/roles.decorator.d.ts +4 -0
- package/dist/auth/decorators/roles.decorator.d.ts.map +1 -0
- package/dist/auth/decorators/roles.decorator.js +8 -0
- package/dist/auth/decorators/roles.decorator.js.map +1 -0
- package/dist/auth/extract-user.middleware.d.ts +21 -0
- package/dist/auth/extract-user.middleware.d.ts.map +1 -0
- package/dist/auth/extract-user.middleware.js +57 -0
- package/dist/auth/extract-user.middleware.js.map +1 -0
- package/dist/auth/guards/jwt-auth.guard.d.ts +14 -0
- package/dist/auth/guards/jwt-auth.guard.d.ts.map +1 -0
- package/dist/auth/guards/jwt-auth.guard.js +139 -0
- package/dist/auth/guards/jwt-auth.guard.js.map +1 -0
- package/dist/auth/guards/project-role.guard.d.ts +10 -0
- package/dist/auth/guards/project-role.guard.d.ts.map +1 -0
- package/dist/auth/guards/project-role.guard.js +72 -0
- package/dist/auth/guards/project-role.guard.js.map +1 -0
- package/dist/auth/guards/roles.guard.d.ts +8 -0
- package/dist/auth/guards/roles.guard.d.ts.map +1 -0
- package/dist/auth/guards/roles.guard.js +56 -0
- package/dist/auth/guards/roles.guard.js.map +1 -0
- package/dist/auth/jwt.strategy.d.ts +23 -0
- package/dist/auth/jwt.strategy.d.ts.map +1 -0
- package/dist/auth/jwt.strategy.js +49 -0
- package/dist/auth/jwt.strategy.js.map +1 -0
- package/dist/common/crypto.service.d.ts +31 -0
- package/dist/common/crypto.service.d.ts.map +1 -0
- package/dist/common/crypto.service.js +120 -0
- package/dist/common/crypto.service.js.map +1 -0
- package/dist/common/error-filter.d.ts +6 -0
- package/dist/common/error-filter.d.ts.map +1 -0
- package/dist/common/error-filter.js +78 -0
- package/dist/common/error-filter.js.map +1 -0
- package/dist/common/health.controller.d.ts +13 -0
- package/dist/common/health.controller.d.ts.map +1 -0
- package/dist/common/health.controller.js +75 -0
- package/dist/common/health.controller.js.map +1 -0
- package/dist/common/logger.service.d.ts +11 -0
- package/dist/common/logger.service.d.ts.map +1 -0
- package/dist/common/logger.service.js +48 -0
- package/dist/common/logger.service.js.map +1 -0
- package/dist/common/pagination.d.ts +18 -0
- package/dist/common/pagination.d.ts.map +1 -0
- package/dist/common/pagination.js +39 -0
- package/dist/common/pagination.js.map +1 -0
- package/dist/common/rate-limit.guard.d.ts +48 -0
- package/dist/common/rate-limit.guard.d.ts.map +1 -0
- package/dist/common/rate-limit.guard.js +129 -0
- package/dist/common/rate-limit.guard.js.map +1 -0
- package/dist/common/sensitive-filter.d.ts +7 -0
- package/dist/common/sensitive-filter.d.ts.map +1 -0
- package/dist/common/sensitive-filter.js +20 -0
- package/dist/common/sensitive-filter.js.map +1 -0
- package/dist/database/database.module.d.ts +3 -0
- package/dist/database/database.module.d.ts.map +1 -0
- package/dist/database/database.module.js +22 -0
- package/dist/database/database.module.js.map +1 -0
- package/dist/database/database.service.d.ts +13 -0
- package/dist/database/database.service.d.ts.map +1 -0
- package/dist/database/database.service.js +107 -0
- package/dist/database/database.service.js.map +1 -0
- package/dist/database/migration-runner.d.ts +5 -0
- package/dist/database/migration-runner.d.ts.map +1 -0
- package/dist/database/migration-runner.js +86 -0
- package/dist/database/migration-runner.js.map +1 -0
- package/dist/database/repositories/audit-log.repository.d.ts +29 -0
- package/dist/database/repositories/audit-log.repository.d.ts.map +1 -0
- package/dist/database/repositories/audit-log.repository.js +80 -0
- package/dist/database/repositories/audit-log.repository.js.map +1 -0
- package/dist/database/repositories/bot.repository.d.ts +67 -0
- package/dist/database/repositories/bot.repository.d.ts.map +1 -0
- package/dist/database/repositories/bot.repository.js +133 -0
- package/dist/database/repositories/bot.repository.js.map +1 -0
- package/dist/database/repositories/developer-token.repository.d.ts +40 -0
- package/dist/database/repositories/developer-token.repository.d.ts.map +1 -0
- package/dist/database/repositories/developer-token.repository.js +84 -0
- package/dist/database/repositories/developer-token.repository.js.map +1 -0
- package/dist/database/repositories/developer.repository.d.ts +25 -0
- package/dist/database/repositories/developer.repository.d.ts.map +1 -0
- package/dist/database/repositories/developer.repository.js +139 -0
- package/dist/database/repositories/developer.repository.js.map +1 -0
- package/dist/database/repositories/machine.repository.d.ts +39 -0
- package/dist/database/repositories/machine.repository.d.ts.map +1 -0
- package/dist/database/repositories/machine.repository.js +176 -0
- package/dist/database/repositories/machine.repository.js.map +1 -0
- package/dist/database/repositories/notification.repository.d.ts +19 -0
- package/dist/database/repositories/notification.repository.d.ts.map +1 -0
- package/dist/database/repositories/notification.repository.js +94 -0
- package/dist/database/repositories/notification.repository.js.map +1 -0
- package/dist/database/repositories/project-member.repository.d.ts +30 -0
- package/dist/database/repositories/project-member.repository.d.ts.map +1 -0
- package/dist/database/repositories/project-member.repository.js +75 -0
- package/dist/database/repositories/project-member.repository.js.map +1 -0
- package/dist/database/repositories/project.repository.d.ts +24 -0
- package/dist/database/repositories/project.repository.d.ts.map +1 -0
- package/dist/database/repositories/project.repository.js +154 -0
- package/dist/database/repositories/project.repository.js.map +1 -0
- package/dist/database/repositories/session.repository.d.ts +19 -0
- package/dist/database/repositories/session.repository.d.ts.map +1 -0
- package/dist/database/repositories/session.repository.js +117 -0
- package/dist/database/repositories/session.repository.js.map +1 -0
- package/dist/database/repositories/task.repository.d.ts +37 -0
- package/dist/database/repositories/task.repository.d.ts.map +1 -0
- package/dist/database/repositories/task.repository.js +229 -0
- package/dist/database/repositories/task.repository.js.map +1 -0
- package/dist/database/repositories/worker-token.repository.d.ts +20 -0
- package/dist/database/repositories/worker-token.repository.d.ts.map +1 -0
- package/dist/database/repositories/worker-token.repository.js +94 -0
- package/dist/database/repositories/worker-token.repository.js.map +1 -0
- package/dist/database/repositories/workspace.repository.d.ts +19 -0
- package/dist/database/repositories/workspace.repository.d.ts.map +1 -0
- package/dist/database/repositories/workspace.repository.js +82 -0
- package/dist/database/repositories/workspace.repository.js.map +1 -0
- package/dist/dispatcher/capability.service.d.ts +50 -0
- package/dist/dispatcher/capability.service.d.ts.map +1 -0
- package/dist/dispatcher/capability.service.js +159 -0
- package/dist/dispatcher/capability.service.js.map +1 -0
- package/dist/dispatcher/cleanup.service.d.ts +23 -0
- package/dist/dispatcher/cleanup.service.d.ts.map +1 -0
- package/dist/dispatcher/cleanup.service.js +107 -0
- package/dist/dispatcher/cleanup.service.js.map +1 -0
- package/dist/dispatcher/dedup.service.d.ts +48 -0
- package/dist/dispatcher/dedup.service.d.ts.map +1 -0
- package/dist/dispatcher/dedup.service.js +189 -0
- package/dist/dispatcher/dedup.service.js.map +1 -0
- package/dist/dispatcher/dispatcher.module.d.ts +3 -0
- package/dist/dispatcher/dispatcher.module.d.ts.map +1 -0
- package/dist/dispatcher/dispatcher.module.js +76 -0
- package/dist/dispatcher/dispatcher.module.js.map +1 -0
- package/dist/dispatcher/dispatcher.service.d.ts +134 -0
- package/dist/dispatcher/dispatcher.service.d.ts.map +1 -0
- package/dist/dispatcher/dispatcher.service.js +1034 -0
- package/dist/dispatcher/dispatcher.service.js.map +1 -0
- package/dist/dispatcher/heartbeat.service.d.ts +50 -0
- package/dist/dispatcher/heartbeat.service.d.ts.map +1 -0
- package/dist/dispatcher/heartbeat.service.js +154 -0
- package/dist/dispatcher/heartbeat.service.js.map +1 -0
- package/dist/dispatcher/machine-selector.d.ts +18 -0
- package/dist/dispatcher/machine-selector.d.ts.map +1 -0
- package/dist/dispatcher/machine-selector.js +144 -0
- package/dist/dispatcher/machine-selector.js.map +1 -0
- package/dist/dispatcher/pty-relay.service.d.ts +75 -0
- package/dist/dispatcher/pty-relay.service.d.ts.map +1 -0
- package/dist/dispatcher/pty-relay.service.js +404 -0
- package/dist/dispatcher/pty-relay.service.js.map +1 -0
- package/dist/dispatcher/reconciler.d.ts +39 -0
- package/dist/dispatcher/reconciler.d.ts.map +1 -0
- package/dist/dispatcher/reconciler.js +556 -0
- package/dist/dispatcher/reconciler.js.map +1 -0
- package/dist/dispatcher/scheduler.service.d.ts +50 -0
- package/dist/dispatcher/scheduler.service.d.ts.map +1 -0
- package/dist/dispatcher/scheduler.service.js +287 -0
- package/dist/dispatcher/scheduler.service.js.map +1 -0
- package/dist/dispatcher/state-machine.d.ts +16 -0
- package/dist/dispatcher/state-machine.d.ts.map +1 -0
- package/dist/dispatcher/state-machine.js +77 -0
- package/dist/dispatcher/state-machine.js.map +1 -0
- package/dist/dispatcher/task-log-batcher.d.ts +50 -0
- package/dist/dispatcher/task-log-batcher.d.ts.map +1 -0
- package/dist/dispatcher/task-log-batcher.js +184 -0
- package/dist/dispatcher/task-log-batcher.js.map +1 -0
- package/dist/dispatcher/worker-connection.manager.d.ts +49 -0
- package/dist/dispatcher/worker-connection.manager.d.ts.map +1 -0
- package/dist/dispatcher/worker-connection.manager.js +128 -0
- package/dist/dispatcher/worker-connection.manager.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +85 -0
- package/dist/main.js.map +1 -0
- package/dist/notifier/debouncer.d.ts +39 -0
- package/dist/notifier/debouncer.d.ts.map +1 -0
- package/dist/notifier/debouncer.js +123 -0
- package/dist/notifier/debouncer.js.map +1 -0
- package/dist/notifier/notification-consumer.d.ts +88 -0
- package/dist/notifier/notification-consumer.d.ts.map +1 -0
- package/dist/notifier/notification-consumer.js +186 -0
- package/dist/notifier/notification-consumer.js.map +1 -0
- package/dist/notifier/notifier.module.d.ts +9 -0
- package/dist/notifier/notifier.module.d.ts.map +1 -0
- package/dist/notifier/notifier.module.js +58 -0
- package/dist/notifier/notifier.module.js.map +1 -0
- package/dist/notifier/notifier.service.d.ts +40 -0
- package/dist/notifier/notifier.service.d.ts.map +1 -0
- package/dist/notifier/notifier.service.js +191 -0
- package/dist/notifier/notifier.service.js.map +1 -0
- package/dist/notifier/template.service.d.ts +42 -0
- package/dist/notifier/template.service.d.ts.map +1 -0
- package/dist/notifier/template.service.js +201 -0
- package/dist/notifier/template.service.js.map +1 -0
- package/dist/redis/redis.module.d.ts +3 -0
- package/dist/redis/redis.module.d.ts.map +1 -0
- package/dist/redis/redis.module.js +22 -0
- package/dist/redis/redis.module.js.map +1 -0
- package/dist/redis/redis.service.d.ts +19 -0
- package/dist/redis/redis.service.d.ts.map +1 -0
- package/dist/redis/redis.service.js +69 -0
- package/dist/redis/redis.service.js.map +1 -0
- package/dist/web/admin/admin-audit.controller.d.ts +7 -0
- package/dist/web/admin/admin-audit.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-audit.controller.js +53 -0
- package/dist/web/admin/admin-audit.controller.js.map +1 -0
- package/dist/web/admin/admin-bot.controller.d.ts +79 -0
- package/dist/web/admin/admin-bot.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-bot.controller.js +193 -0
- package/dist/web/admin/admin-bot.controller.js.map +1 -0
- package/dist/web/admin/admin-developer.controller.d.ts +52 -0
- package/dist/web/admin/admin-developer.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-developer.controller.js +160 -0
- package/dist/web/admin/admin-developer.controller.js.map +1 -0
- package/dist/web/admin/admin-machine.controller.d.ts +64 -0
- package/dist/web/admin/admin-machine.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-machine.controller.js +111 -0
- package/dist/web/admin/admin-machine.controller.js.map +1 -0
- package/dist/web/admin/admin-project.controller.d.ts +45 -0
- package/dist/web/admin/admin-project.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-project.controller.js +207 -0
- package/dist/web/admin/admin-project.controller.js.map +1 -0
- package/dist/web/admin/admin-settings.controller.d.ts +18 -0
- package/dist/web/admin/admin-settings.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-settings.controller.js +93 -0
- package/dist/web/admin/admin-settings.controller.js.map +1 -0
- package/dist/web/admin/admin-token.controller.d.ts +45 -0
- package/dist/web/admin/admin-token.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-token.controller.js +182 -0
- package/dist/web/admin/admin-token.controller.js.map +1 -0
- package/dist/web/dashboard.controller.d.ts +16 -0
- package/dist/web/dashboard.controller.d.ts.map +1 -0
- package/dist/web/dashboard.controller.js +78 -0
- package/dist/web/dashboard.controller.js.map +1 -0
- package/dist/web/dashboard.service.d.ts +39 -0
- package/dist/web/dashboard.service.d.ts.map +1 -0
- package/dist/web/dashboard.service.js +234 -0
- package/dist/web/dashboard.service.js.map +1 -0
- package/dist/web/interaction.service.d.ts +42 -0
- package/dist/web/interaction.service.d.ts.map +1 -0
- package/dist/web/interaction.service.js +102 -0
- package/dist/web/interaction.service.js.map +1 -0
- package/dist/web/machine.controller.d.ts +102 -0
- package/dist/web/machine.controller.d.ts.map +1 -0
- package/dist/web/machine.controller.js +121 -0
- package/dist/web/machine.controller.js.map +1 -0
- package/dist/web/notification.controller.d.ts +22 -0
- package/dist/web/notification.controller.d.ts.map +1 -0
- package/dist/web/notification.controller.js +70 -0
- package/dist/web/notification.controller.js.map +1 -0
- package/dist/web/profile.controller.d.ts +70 -0
- package/dist/web/profile.controller.d.ts.map +1 -0
- package/dist/web/profile.controller.js +262 -0
- package/dist/web/profile.controller.js.map +1 -0
- package/dist/web/project.controller.d.ts +8 -0
- package/dist/web/project.controller.d.ts.map +1 -0
- package/dist/web/project.controller.js +54 -0
- package/dist/web/project.controller.js.map +1 -0
- package/dist/web/pty.gateway.d.ts +32 -0
- package/dist/web/pty.gateway.d.ts.map +1 -0
- package/dist/web/pty.gateway.js +358 -0
- package/dist/web/pty.gateway.js.map +1 -0
- package/dist/web/search.service.d.ts +34 -0
- package/dist/web/search.service.d.ts.map +1 -0
- package/dist/web/search.service.js +106 -0
- package/dist/web/search.service.js.map +1 -0
- package/dist/web/task.controller.d.ts +54 -0
- package/dist/web/task.controller.d.ts.map +1 -0
- package/dist/web/task.controller.js +266 -0
- package/dist/web/task.controller.js.map +1 -0
- package/dist/web/web.module.d.ts +3 -0
- package/dist/web/web.module.d.ts.map +1 -0
- package/dist/web/web.module.js +97 -0
- package/dist/web/web.module.js.map +1 -0
- package/dist/web/worker-channel.gateway.d.ts +45 -0
- package/dist/web/worker-channel.gateway.d.ts.map +1 -0
- package/dist/web/worker-channel.gateway.js +283 -0
- package/dist/web/worker-channel.gateway.js.map +1 -0
- package/dist/web/worker.controller.d.ts +14 -0
- package/dist/web/worker.controller.d.ts.map +1 -0
- package/dist/web/worker.controller.js +73 -0
- package/dist/web/worker.controller.js.map +1 -0
- package/dist/web/workspace.controller.d.ts +109 -0
- package/dist/web/workspace.controller.d.ts.map +1 -0
- package/dist/web/workspace.controller.js +386 -0
- package/dist/web/workspace.controller.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var PtyRelayService_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.PtyRelayService = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const ws_1 = require("ws");
|
|
13
|
+
const protocol_1 = require("@overlordai/protocol");
|
|
14
|
+
/** Maximum number of frames buffered per channel before backpressure kicks in. */
|
|
15
|
+
const MAX_BUFFER_SIZE = 1000;
|
|
16
|
+
/** Number of bytes to keep from the tail of each frame for overlap matching. */
|
|
17
|
+
const OVERLAP_BUFFER_BYTES = 128;
|
|
18
|
+
const REDACTED = '***REDACTED***';
|
|
19
|
+
/**
|
|
20
|
+
* PtyOutputFilter: sanitizes PTY output for sensitive patterns.
|
|
21
|
+
* Maintains a 128-byte overlap buffer between frames to detect secrets
|
|
22
|
+
* that span frame boundaries.
|
|
23
|
+
*/
|
|
24
|
+
class PtyOutputFilter {
|
|
25
|
+
projectFilterEnabled;
|
|
26
|
+
developerId;
|
|
27
|
+
role;
|
|
28
|
+
taskOwnerId;
|
|
29
|
+
previousTail = '';
|
|
30
|
+
enabled;
|
|
31
|
+
constructor(projectFilterEnabled, developerId, role, taskOwnerId) {
|
|
32
|
+
this.projectFilterEnabled = projectFilterEnabled;
|
|
33
|
+
this.developerId = developerId;
|
|
34
|
+
this.role = role;
|
|
35
|
+
this.taskOwnerId = taskOwnerId;
|
|
36
|
+
// Filter is enabled if:
|
|
37
|
+
// 1. Project config has ptyOutputFilter = 1
|
|
38
|
+
// 2. Admin is viewing another developer's session (auto-enable)
|
|
39
|
+
this.enabled =
|
|
40
|
+
projectFilterEnabled ||
|
|
41
|
+
(role === 'admin' && developerId !== taskOwnerId);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Filter PTY output data through sensitive pattern detection.
|
|
45
|
+
* Uses a 128-byte overlapping buffer between frames to catch
|
|
46
|
+
* secrets split across frame boundaries.
|
|
47
|
+
*/
|
|
48
|
+
filter(data) {
|
|
49
|
+
if (!this.enabled)
|
|
50
|
+
return data;
|
|
51
|
+
// Use a unique marker at the join point so we can find the split
|
|
52
|
+
// position even after redaction changes string lengths.
|
|
53
|
+
const MARKER = '\x00SPLIT\x00';
|
|
54
|
+
const combined = this.previousTail + MARKER + data;
|
|
55
|
+
// Apply all sensitive patterns to the combined buffer
|
|
56
|
+
let filtered = combined;
|
|
57
|
+
for (const pattern of protocol_1.SENSITIVE_PATTERNS) {
|
|
58
|
+
pattern.lastIndex = 0;
|
|
59
|
+
filtered = filtered.replace(pattern, REDACTED);
|
|
60
|
+
}
|
|
61
|
+
// Store the tail of the current data for next frame overlap
|
|
62
|
+
if (data.length > OVERLAP_BUFFER_BYTES) {
|
|
63
|
+
this.previousTail = data.slice(-OVERLAP_BUFFER_BYTES);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.previousTail = data;
|
|
67
|
+
}
|
|
68
|
+
// Find the marker and return only the portion after it
|
|
69
|
+
const markerPos = filtered.indexOf(MARKER);
|
|
70
|
+
if (markerPos >= 0) {
|
|
71
|
+
return filtered.slice(markerPos + MARKER.length);
|
|
72
|
+
}
|
|
73
|
+
// Marker was inside a redacted region; return best-effort slice
|
|
74
|
+
return filtered.slice(Math.max(0, filtered.length - data.length));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
let PtyRelayService = PtyRelayService_1 = class PtyRelayService {
|
|
78
|
+
logger = new common_1.Logger(PtyRelayService_1.name);
|
|
79
|
+
channels = new Map();
|
|
80
|
+
/**
|
|
81
|
+
* Register the worker-side PTY WebSocket for a task.
|
|
82
|
+
* @param taskId - Task ID
|
|
83
|
+
* @param ws - Worker WebSocket connection
|
|
84
|
+
* @param taskOwnerId - Developer ID of the task owner (for filter auto-enable)
|
|
85
|
+
* @param projectFilterEnabled - Whether the project has ptyOutputFilter = 1
|
|
86
|
+
*/
|
|
87
|
+
registerWorkerPtyChannel(taskId, ws, taskOwnerId = 0, projectFilterEnabled = false) {
|
|
88
|
+
const existing = this.channels.get(taskId);
|
|
89
|
+
if (existing) {
|
|
90
|
+
// Replace worker ws but keep web clients
|
|
91
|
+
existing.workerWs = ws;
|
|
92
|
+
this.logger.log(`Replaced worker PTY channel for task ${taskId}`);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this.channels.set(taskId, {
|
|
96
|
+
workerWs: ws,
|
|
97
|
+
webWsSet: new Map(),
|
|
98
|
+
writerConnectionId: null,
|
|
99
|
+
sendQueue: [],
|
|
100
|
+
stdinTimestamps: [],
|
|
101
|
+
outputFilter: null,
|
|
102
|
+
taskOwnerId,
|
|
103
|
+
projectFilterEnabled,
|
|
104
|
+
});
|
|
105
|
+
this.logger.log(`Registered worker PTY channel for task ${taskId}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Register a web client's WebSocket for a task's PTY channel.
|
|
110
|
+
* The first web client to connect becomes the writer.
|
|
111
|
+
* When an admin views another developer's session, the PtyOutputFilter
|
|
112
|
+
* is automatically enabled to sanitize sensitive patterns.
|
|
113
|
+
*
|
|
114
|
+
* @param taskId - Task ID
|
|
115
|
+
* @param ws - Web client WebSocket connection
|
|
116
|
+
* @param connectionId - Unique connection identifier
|
|
117
|
+
* @param developerId - The developer ID of the connecting user
|
|
118
|
+
* @param role - The role of the connecting user (e.g. 'admin', 'developer')
|
|
119
|
+
*/
|
|
120
|
+
registerWebPtyChannel(taskId, ws, connectionId, developerId = 0, role = 'developer') {
|
|
121
|
+
const channel = this.channels.get(taskId);
|
|
122
|
+
if (!channel) {
|
|
123
|
+
this.logger.warn(`No PTY channel for task ${taskId}; cannot register web client ${connectionId}`);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
channel.webWsSet.set(connectionId, { ws, developerId, role });
|
|
127
|
+
// Create or update the output filter when a web client connects.
|
|
128
|
+
// Auto-enable filter if admin is viewing another developer's session
|
|
129
|
+
// or if the project has ptyOutputFilter enabled.
|
|
130
|
+
const needsFilter = channel.projectFilterEnabled ||
|
|
131
|
+
(role === 'admin' && developerId !== channel.taskOwnerId);
|
|
132
|
+
if (needsFilter && !channel.outputFilter) {
|
|
133
|
+
channel.outputFilter = new PtyOutputFilter(channel.projectFilterEnabled, developerId, role, channel.taskOwnerId);
|
|
134
|
+
this.logger.log(`PtyOutputFilter enabled for task ${taskId} (admin=${role === 'admin'}, projectFilter=${channel.projectFilterEnabled})`);
|
|
135
|
+
}
|
|
136
|
+
// First web client becomes writer automatically
|
|
137
|
+
if (channel.writerConnectionId === null) {
|
|
138
|
+
channel.writerConnectionId = connectionId;
|
|
139
|
+
this.logger.log(`Web client ${connectionId} is writer for task ${taskId}`);
|
|
140
|
+
}
|
|
141
|
+
this.logger.log(`Web client ${connectionId} registered for PTY task ${taskId} (${channel.webWsSet.size} clients)`);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Relay PTY output from the worker to all connected web clients.
|
|
145
|
+
* Implements backpressure: if the buffer exceeds MAX_BUFFER_SIZE, intermediate
|
|
146
|
+
* frames are dropped and a frames_dropped notification is sent.
|
|
147
|
+
*/
|
|
148
|
+
relayWorkerToWeb(taskId, data) {
|
|
149
|
+
const channel = this.channels.get(taskId);
|
|
150
|
+
if (!channel) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Apply PtyOutputFilter if enabled (sanitize sensitive patterns)
|
|
154
|
+
let filteredData;
|
|
155
|
+
if (channel.outputFilter) {
|
|
156
|
+
try {
|
|
157
|
+
filteredData = channel.outputFilter.filter(data);
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
this.logger.error(`PtyOutputFilter.filter() threw for task ${taskId}; falling back to unfiltered data`, err instanceof Error ? err.stack : String(err));
|
|
161
|
+
filteredData = data;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
filteredData = data;
|
|
166
|
+
}
|
|
167
|
+
const frame = { type: 'data', data: filteredData };
|
|
168
|
+
const serialized = JSON.stringify(frame);
|
|
169
|
+
// Backpressure: buffer management
|
|
170
|
+
channel.sendQueue.push(serialized);
|
|
171
|
+
if (channel.sendQueue.length > MAX_BUFFER_SIZE) {
|
|
172
|
+
// Keep first and last frames, drop intermediate ones
|
|
173
|
+
const dropped = channel.sendQueue.length - 2;
|
|
174
|
+
const first = channel.sendQueue[0];
|
|
175
|
+
const last = channel.sendQueue[channel.sendQueue.length - 1];
|
|
176
|
+
channel.sendQueue.length = 0;
|
|
177
|
+
channel.sendQueue.push(first);
|
|
178
|
+
// Send a frames_dropped notification
|
|
179
|
+
const droppedFrame = {
|
|
180
|
+
type: 'frames_dropped',
|
|
181
|
+
count: dropped,
|
|
182
|
+
};
|
|
183
|
+
const droppedSerialized = JSON.stringify(droppedFrame);
|
|
184
|
+
channel.sendQueue.push(droppedSerialized);
|
|
185
|
+
channel.sendQueue.push(last);
|
|
186
|
+
this.logger.warn(`Backpressure: dropped ${dropped} frames for task ${taskId}`);
|
|
187
|
+
}
|
|
188
|
+
// Drain the send queue to all web clients
|
|
189
|
+
while (channel.sendQueue.length > 0) {
|
|
190
|
+
const msg = channel.sendQueue.shift();
|
|
191
|
+
for (const [connId, client] of channel.webWsSet) {
|
|
192
|
+
if (client.ws.readyState === ws_1.WebSocket.OPEN) {
|
|
193
|
+
try {
|
|
194
|
+
client.ws.send(msg);
|
|
195
|
+
}
|
|
196
|
+
catch (err) {
|
|
197
|
+
this.logger.error(`Failed to relay to web client ${connId} for task ${taskId}`, err instanceof Error ? err.stack : String(err));
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Relay stdin input from a web client to the worker.
|
|
205
|
+
* Only the current writer is allowed to send input.
|
|
206
|
+
* Rate limiting: max PTY_STDIN_RATE_LIMIT writes per second,
|
|
207
|
+
* each write at most PTY_STDIN_MAX_BYTES bytes.
|
|
208
|
+
*/
|
|
209
|
+
relayWebToWorker(taskId, data, connectionId) {
|
|
210
|
+
const channel = this.channels.get(taskId);
|
|
211
|
+
if (!channel) {
|
|
212
|
+
this.logger.warn(`No PTY channel for task ${taskId}`);
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
// Only the writer can send input
|
|
216
|
+
if (channel.writerConnectionId !== connectionId) {
|
|
217
|
+
this.logger.debug(`Connection ${connectionId} is not the writer for task ${taskId}; ignoring stdin`);
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
// Size limit
|
|
221
|
+
const byteLength = Buffer.byteLength(data, 'utf8');
|
|
222
|
+
if (byteLength > protocol_1.PTY_STDIN_MAX_BYTES) {
|
|
223
|
+
this.logger.warn(`Stdin from ${connectionId} for task ${taskId} exceeds max bytes (${byteLength} > ${protocol_1.PTY_STDIN_MAX_BYTES})`);
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
// Rate limit: sliding window of 60 seconds (100/min/connection per plan)
|
|
227
|
+
const now = Date.now();
|
|
228
|
+
const windowStart = now - 60_000;
|
|
229
|
+
channel.stdinTimestamps = channel.stdinTimestamps.filter((t) => t > windowStart);
|
|
230
|
+
if (channel.stdinTimestamps.length >= protocol_1.PTY_STDIN_RATE_LIMIT) {
|
|
231
|
+
this.logger.warn(`Rate limit exceeded for task ${taskId} from connection ${connectionId}`);
|
|
232
|
+
return false;
|
|
233
|
+
}
|
|
234
|
+
channel.stdinTimestamps.push(now);
|
|
235
|
+
// Forward to worker
|
|
236
|
+
if (channel.workerWs.readyState !== ws_1.WebSocket.OPEN) {
|
|
237
|
+
this.logger.warn(`Worker WebSocket not open for task ${taskId}; cannot relay stdin`);
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
try {
|
|
241
|
+
const frame = { type: 'data', data };
|
|
242
|
+
channel.workerWs.send(JSON.stringify(frame));
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
catch (err) {
|
|
246
|
+
this.logger.error(`Failed to relay stdin to worker for task ${taskId}`, err instanceof Error ? err.stack : String(err));
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Relay a resize event from a web client to the worker.
|
|
252
|
+
* @param taskId - Task ID
|
|
253
|
+
* @param cols - New terminal column count
|
|
254
|
+
* @param rows - New terminal row count
|
|
255
|
+
*/
|
|
256
|
+
relayResize(taskId, cols, rows) {
|
|
257
|
+
const channel = this.channels.get(taskId);
|
|
258
|
+
if (!channel) {
|
|
259
|
+
this.logger.warn(`No PTY channel for task ${taskId}; cannot relay resize`);
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
if (channel.workerWs.readyState !== ws_1.WebSocket.OPEN) {
|
|
263
|
+
this.logger.warn(`Worker WebSocket not open for task ${taskId}; cannot relay resize`);
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
266
|
+
try {
|
|
267
|
+
const frame = { type: 'resize', cols, rows };
|
|
268
|
+
channel.workerWs.send(JSON.stringify(frame));
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
catch (err) {
|
|
272
|
+
this.logger.error(`Failed to relay resize to worker for task ${taskId}`, err instanceof Error ? err.stack : String(err));
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Get the current writer's connection ID for a task's PTY channel.
|
|
278
|
+
*/
|
|
279
|
+
getWriterConnectionId(taskId) {
|
|
280
|
+
const channel = this.channels.get(taskId);
|
|
281
|
+
return channel?.writerConnectionId ?? null;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Release the writer role for a connection, clearing it without assigning a new writer.
|
|
285
|
+
*/
|
|
286
|
+
releaseWriter(taskId, connectionId) {
|
|
287
|
+
const channel = this.channels.get(taskId);
|
|
288
|
+
if (!channel)
|
|
289
|
+
return false;
|
|
290
|
+
if (channel.writerConnectionId !== connectionId)
|
|
291
|
+
return false;
|
|
292
|
+
channel.writerConnectionId = null;
|
|
293
|
+
this.logger.log(`Writer ${connectionId} released for task ${taskId}`);
|
|
294
|
+
return true;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Force a takeover: revoke the current writer and assign a new one.
|
|
298
|
+
* The old writer receives a 'writer_revoked' frame.
|
|
299
|
+
*/
|
|
300
|
+
forceTakeover(taskId, newConnectionId) {
|
|
301
|
+
const channel = this.channels.get(taskId);
|
|
302
|
+
if (!channel) {
|
|
303
|
+
this.logger.warn(`No PTY channel for task ${taskId}; cannot force takeover`);
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
const oldWriterId = channel.writerConnectionId;
|
|
307
|
+
// Notify old writer that they have been revoked
|
|
308
|
+
if (oldWriterId && oldWriterId !== newConnectionId) {
|
|
309
|
+
const oldClient = channel.webWsSet.get(oldWriterId);
|
|
310
|
+
if (oldClient && oldClient.ws.readyState === ws_1.WebSocket.OPEN) {
|
|
311
|
+
try {
|
|
312
|
+
const revokedFrame = {
|
|
313
|
+
type: 'writer_revoked',
|
|
314
|
+
};
|
|
315
|
+
oldClient.ws.send(JSON.stringify(revokedFrame));
|
|
316
|
+
}
|
|
317
|
+
catch {
|
|
318
|
+
// Best effort notification
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
this.logger.log(`Writer revoked from ${oldWriterId} for task ${taskId}`);
|
|
322
|
+
}
|
|
323
|
+
channel.writerConnectionId = newConnectionId;
|
|
324
|
+
this.logger.log(`Writer for task ${taskId} set to ${newConnectionId}`);
|
|
325
|
+
return true;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Handle a takeover request by forwarding it to the worker.
|
|
329
|
+
* The worker decides whether to grant or deny the takeover.
|
|
330
|
+
*/
|
|
331
|
+
handleTakeoverRequest(taskId, sessionId, connectionId) {
|
|
332
|
+
const channel = this.channels.get(taskId);
|
|
333
|
+
if (!channel) {
|
|
334
|
+
this.logger.warn(`No PTY channel for task ${taskId}; cannot handle takeover request`);
|
|
335
|
+
return false;
|
|
336
|
+
}
|
|
337
|
+
if (channel.workerWs.readyState !== ws_1.WebSocket.OPEN) {
|
|
338
|
+
this.logger.warn(`Worker WebSocket not open for task ${taskId}; cannot forward takeover request`);
|
|
339
|
+
return false;
|
|
340
|
+
}
|
|
341
|
+
try {
|
|
342
|
+
const frame = {
|
|
343
|
+
type: 'request_takeover',
|
|
344
|
+
sessionId,
|
|
345
|
+
};
|
|
346
|
+
channel.workerWs.send(JSON.stringify(frame));
|
|
347
|
+
return true;
|
|
348
|
+
}
|
|
349
|
+
catch (err) {
|
|
350
|
+
this.logger.error(`Failed to forward takeover request for task ${taskId}`, err instanceof Error ? err.stack : String(err));
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Unregister a web client from a task's PTY channel.
|
|
356
|
+
* If the disconnected client was the writer, the writer role is cleared.
|
|
357
|
+
*/
|
|
358
|
+
unregisterWebChannel(taskId, connectionId) {
|
|
359
|
+
const channel = this.channels.get(taskId);
|
|
360
|
+
if (!channel) {
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
channel.webWsSet.delete(connectionId);
|
|
364
|
+
if (channel.writerConnectionId === connectionId) {
|
|
365
|
+
channel.writerConnectionId = null;
|
|
366
|
+
this.logger.log(`Writer ${connectionId} disconnected from task ${taskId}; writer role cleared`);
|
|
367
|
+
}
|
|
368
|
+
this.logger.debug(`Web client ${connectionId} unregistered from task ${taskId} (${channel.webWsSet.size} remaining)`);
|
|
369
|
+
// Clean up channel if no web clients and no worker
|
|
370
|
+
if (channel.webWsSet.size === 0 &&
|
|
371
|
+
channel.workerWs.readyState !== ws_1.WebSocket.OPEN) {
|
|
372
|
+
this.channels.delete(taskId);
|
|
373
|
+
this.logger.log(`PTY channel for task ${taskId} cleaned up`);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Unregister the worker-side PTY channel for a task.
|
|
378
|
+
* Notifies all web clients by closing their connections.
|
|
379
|
+
*/
|
|
380
|
+
unregisterWorkerChannel(taskId) {
|
|
381
|
+
const channel = this.channels.get(taskId);
|
|
382
|
+
if (!channel) {
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
385
|
+
// Close all web client connections
|
|
386
|
+
for (const [connId, client] of channel.webWsSet) {
|
|
387
|
+
if (client.ws.readyState === ws_1.WebSocket.OPEN) {
|
|
388
|
+
try {
|
|
389
|
+
client.ws.close(1000, 'Worker PTY channel closed');
|
|
390
|
+
}
|
|
391
|
+
catch {
|
|
392
|
+
// Best effort
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
this.channels.delete(taskId);
|
|
397
|
+
this.logger.log(`Worker PTY channel for task ${taskId} unregistered; all web clients disconnected`);
|
|
398
|
+
}
|
|
399
|
+
};
|
|
400
|
+
exports.PtyRelayService = PtyRelayService;
|
|
401
|
+
exports.PtyRelayService = PtyRelayService = PtyRelayService_1 = __decorate([
|
|
402
|
+
(0, common_1.Injectable)()
|
|
403
|
+
], PtyRelayService);
|
|
404
|
+
//# sourceMappingURL=pty-relay.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pty-relay.service.js","sourceRoot":"","sources":["../../src/dispatcher/pty-relay.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import type { WorkerReconnectFrame } from '@overlordai/protocol';
|
|
3
|
+
import { TaskRepository } from '../database/repositories/task.repository';
|
|
4
|
+
import { MachineRepository } from '../database/repositories/machine.repository';
|
|
5
|
+
import { AuditLogRepository } from '../database/repositories/audit-log.repository';
|
|
6
|
+
import { WorkspaceRepository } from '../database/repositories/workspace.repository';
|
|
7
|
+
import { SchedulerService } from './scheduler.service';
|
|
8
|
+
import { CleanupService } from './cleanup.service';
|
|
9
|
+
import { WorkerConnectionManager } from './worker-connection.manager';
|
|
10
|
+
export declare class Reconciler implements OnModuleInit {
|
|
11
|
+
private readonly taskRepo;
|
|
12
|
+
private readonly machineRepo;
|
|
13
|
+
private readonly auditLogRepo;
|
|
14
|
+
private readonly workspaceRepo;
|
|
15
|
+
private readonly schedulerService;
|
|
16
|
+
private readonly cleanupService;
|
|
17
|
+
private readonly workerConnectionManager;
|
|
18
|
+
private readonly logger;
|
|
19
|
+
constructor(taskRepo: TaskRepository, machineRepo: MachineRepository, auditLogRepo: AuditLogRepository, workspaceRepo: WorkspaceRepository, schedulerService: SchedulerService, cleanupService: CleanupService, workerConnectionManager: WorkerConnectionManager);
|
|
20
|
+
onModuleInit(): Promise<void>;
|
|
21
|
+
onBoot(): Promise<void>;
|
|
22
|
+
handleReconnect(machineId: string, tasks: WorkerReconnectFrame['tasks']): Promise<Array<{
|
|
23
|
+
taskId: number;
|
|
24
|
+
action: string;
|
|
25
|
+
}>>;
|
|
26
|
+
private reconcileReportedTask;
|
|
27
|
+
/**
|
|
28
|
+
* Update task status with CAS retry, logging on failure instead of throwing.
|
|
29
|
+
* Best-effort for reconciliation — continues processing other tasks on failure.
|
|
30
|
+
*/
|
|
31
|
+
private updateTaskStatusSafe;
|
|
32
|
+
/** Send cancel frame to a Worker for a specific task. */
|
|
33
|
+
private sendCancelToWorker;
|
|
34
|
+
/** Send cleanup instruction to Worker for a specific task. */
|
|
35
|
+
private sendCleanupToWorker;
|
|
36
|
+
/** Schedule workspace cleanup for a task that reached a terminal state. */
|
|
37
|
+
private scheduleWorkspaceCleanup;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=reconciler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconciler.d.ts","sourceRoot":"","sources":["../../src/dispatcher/reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,KAAK,EAGV,oBAAoB,EAIrB,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,qBACa,UAAW,YAAW,YAAY;IAI3C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAT1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;gBAGnC,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,iBAAiB,EAC9B,YAAY,EAAE,kBAAkB,EAChC,aAAa,EAAE,mBAAmB,EAClC,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,EAC9B,uBAAuB,EAAE,uBAAuB;IAG7D,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAU7B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAyLvB,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,GACnC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAkGrD,OAAO,CAAC,qBAAqB;IAyP7B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAqC5B,yDAAyD;IACzD,OAAO,CAAC,kBAAkB;IAS1B,8DAA8D;IAC9D,OAAO,CAAC,mBAAmB;IAW3B,2EAA2E;IAC3E,OAAO,CAAC,wBAAwB;CAcjC"}
|