@overlordai/server 1.0.133 → 1.0.135
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/007-worker-capability-state.sql +5 -0
- package/dist/adapters/help-text.js +1 -1
- package/dist/database/repositories/worker.repository.d.ts +12 -0
- package/dist/database/repositories/worker.repository.d.ts.map +1 -1
- package/dist/database/repositories/worker.repository.js +40 -0
- package/dist/database/repositories/worker.repository.js.map +1 -1
- package/dist/dispatcher/capability.service.d.ts +20 -7
- package/dist/dispatcher/capability.service.d.ts.map +1 -1
- package/dist/dispatcher/capability.service.js +171 -42
- package/dist/dispatcher/capability.service.js.map +1 -1
- package/dist/dispatcher/scheduler.service.d.ts.map +1 -1
- package/dist/dispatcher/scheduler.service.js +58 -15
- package/dist/dispatcher/scheduler.service.js.map +1 -1
- package/dist/dispatcher/task-creation.service.d.ts.map +1 -1
- package/dist/dispatcher/task-creation.service.js +3 -1
- package/dist/dispatcher/task-creation.service.js.map +1 -1
- package/dist/dispatcher/worker-selector.d.ts +4 -0
- package/dist/dispatcher/worker-selector.d.ts.map +1 -1
- package/dist/dispatcher/worker-selector.js +9 -0
- package/dist/dispatcher/worker-selector.js.map +1 -1
- package/dist/web/frame-handlers/progress.handler.d.ts +3 -1
- package/dist/web/frame-handlers/progress.handler.d.ts.map +1 -1
- package/dist/web/frame-handlers/progress.handler.js +41 -5
- package/dist/web/frame-handlers/progress.handler.js.map +1 -1
- package/dist/web/worker-channel.gateway.d.ts +3 -1
- package/dist/web/worker-channel.gateway.d.ts.map +1 -1
- package/dist/web/worker-channel.gateway.js +5 -2
- package/dist/web/worker-channel.gateway.js.map +1 -1
- package/dist/web/worker-web.controller.d.ts +161 -5
- package/dist/web/worker-web.controller.d.ts.map +1 -1
- package/dist/web/worker-web.controller.js +69 -9
- package/dist/web/worker-web.controller.js.map +1 -1
- package/package.json +4 -4
- package/public/assets/{AccessTokensPage-B_di-j0j.js → AccessTokensPage-B790MOSI.js} +1 -1
- package/public/assets/AdminPage-bj1Ceucs.js +1 -0
- package/public/assets/{AgentCliPage-CiSE6MOL.js → AgentCliPage-C3m17Vxw.js} +2 -2
- package/public/assets/{ApiReferencePage-Cv1THMOi.js → ApiReferencePage-CU5KWW5b.js} +1 -1
- package/public/assets/{ArchitecturePage-H1WtP2sH.js → ArchitecturePage-B3NO9ams.js} +1 -1
- package/public/assets/{AuditLogPage-Q-izWOoJ.js → AuditLogPage-CSYmdRqM.js} +1 -1
- package/public/assets/{BindPlatformPage-S-s2YO1G.js → BindPlatformPage-BhC8I1M6.js} +1 -1
- package/public/assets/{BotIntegrationPage-CzgR3bDN.js → BotIntegrationPage-B4NhIhTq.js} +1 -1
- package/public/assets/{BotManage-Cmb0u2y7.js → BotManage-BVx8Zpyb.js} +1 -1
- package/public/assets/{BotSetupPage-DCuRv9lx.js → BotSetupPage-DVqBgyjG.js} +1 -1
- package/public/assets/{ChangelogPage-DGVNwh9w.js → ChangelogPage-DgAkPSte.js} +1 -1
- package/public/assets/{CliReferencePage-DKZZacin.js → CliReferencePage-ChEAiOWL.js} +1 -1
- package/public/assets/{DeploymentPage-Cd_K6k-C.js → DeploymentPage-DUlfbHwk.js} +1 -1
- package/public/assets/{DevWorkflowPage-DY1Kcsg7.js → DevWorkflowPage-CHQifk0Y.js} +1 -1
- package/public/assets/{DeveloperManage-BnhZ_Aqp.js → DeveloperManage-BOzhPppl.js} +1 -1
- package/public/assets/{DeveloperSetupPage-C3519X2U.js → DeveloperSetupPage-rpsOayJX.js} +1 -1
- package/public/assets/{DocsIndexPage-BXNlGsUi.js → DocsIndexPage-BMIn54Zl.js} +6 -11
- package/public/assets/DocsLayout-FmrCA5RW.js +1 -0
- package/public/assets/{DocsPrimitives-DNdGlGlH.js → DocsPrimitives-ppeWCX0i.js} +1 -1
- package/public/assets/EditProjectPage-CLPYjvAQ.js +2 -0
- package/public/assets/{EmptyState-9Eqw0iR8.js → EmptyState-Q0YM1iFk.js} +1 -1
- package/public/assets/{EnvVariablesPage-Cddaji3m.js → EnvVariablesPage-CLafcR2k.js} +1 -1
- package/public/assets/HomePage-B-rfwBdn.js +1 -0
- package/public/assets/{InfoRow-C3ZXZz4q.js → InfoRow-D8AsUcSn.js} +1 -1
- package/public/assets/{InstallationPage-BTbG8z22.js → InstallationPage-BbXh-Y77.js} +1 -1
- package/public/assets/{LandingPage-DpdvNKYz.js → LandingPage-DqLbP1Ry.js} +1 -1
- package/public/assets/{LocalDevelopmentPage-CqPNGlUK.js → LocalDevelopmentPage-CY7dB3hK.js} +1 -1
- package/public/assets/{LoginPage-CzJDQ0H0.js → LoginPage-BoXUe_Xx.js} +1 -1
- package/public/assets/{MetricBar-CixGVqjI.js → MetricBar-D9ZLrw38.js} +1 -1
- package/public/assets/{NotFoundPage-DdxosdYc.js → NotFoundPage-4pE6QH1R.js} +1 -1
- package/public/assets/{OnboardingGuide-C1-sQUW7.js → OnboardingGuide-Bo4Ljo4i.js} +1 -1
- package/public/assets/{PermissionsPage-Db7ynPhr.js → PermissionsPage-DvWGCh32.js} +1 -1
- package/public/assets/{PipelineConfigPage-DM_btq4K.js → PipelineConfigPage-CeU0o917.js} +1 -1
- package/public/assets/{PipelineEditorPage-CAO4j2sA.js → PipelineEditorPage-CdHuwLmJ.js} +1 -1
- package/public/assets/ProfilePage-8kc8fiZV.js +1 -0
- package/public/assets/{ProjectDetailPage-B9my9oLw.js → ProjectDetailPage-CaASFvS0.js} +1 -1
- package/public/assets/ProjectListPage-r28OozXz.js +6 -0
- package/public/assets/{PtyTerminal-C9Bp0uS_.js → PtyTerminal-DzMsSJAu.js} +1 -1
- package/public/assets/{QuickAuth-C1XxLYNZ.js → QuickAuth-Cds5x6Z3.js} +1 -1
- package/public/assets/{RemoveMemberConfirmDialog-gohLNDc5.js → RemoveMemberConfirmDialog-Do2l0kib.js} +1 -1
- package/public/assets/{Select-CkMgU0Lq.js → Select-DRCu2nu0.js} +1 -1
- package/public/assets/{SettingsPage-Crc4EZDF.js → SettingsPage-CZywaGc9.js} +1 -1
- package/public/assets/{Skeleton-DI-HCY-N.js → Skeleton-BWkXyrSG.js} +1 -1
- package/public/assets/{SkillPage-SmsZWW8c.js → SkillPage-Bn53Yjiu.js} +1 -1
- package/public/assets/TaskDetailPage-Bgd8Ogvq.js +26 -0
- package/public/assets/TaskListPage-Ca0mxJ_o.js +1 -0
- package/public/assets/{TaskStatusBadge-B49xL6ug.js → TaskStatusBadge-fDYhxtHY.js} +1 -1
- package/public/assets/TerminalHomePage-DE4Fra73.js +11 -0
- package/public/assets/TokenManage-CL6Dgoac.js +1 -0
- package/public/assets/{Tooltip-DrIj1IXL.js → Tooltip-CZtlcHYf.js} +1 -1
- package/public/assets/{TotpSetupPage-B81U1CZB.js → TotpSetupPage-BeStxglO.js} +1 -1
- package/public/assets/WorkerDetailPage-B5lirrH3.js +1 -0
- package/public/assets/WorkerListPage-DRx_FX1c.js +6 -0
- package/public/assets/{WorkerOperationsPage-CcfPJ-Vx.js → WorkerOperationsPage-0fj-txrI.js} +1 -1
- package/public/assets/{WorkerSetupGuidePage-C_GA4jv_.js → WorkerSetupGuidePage-CpWSvLWw.js} +1 -1
- package/public/assets/{WorkerSetupPage-hV7T8eEi.js → WorkerSetupPage-CX2IKTBz.js} +1 -1
- package/public/assets/agent-type-options-BztKEaBi.js +1 -0
- package/public/assets/{arrow-left-BwtdfCwD.js → arrow-left-CiH58ODj.js} +1 -1
- package/public/assets/{arrow-right-BQPypZRF.js → arrow-right-Dq2t8ts3.js} +1 -1
- package/public/assets/{bot-3i2pb58N.js → bot-C1cnPjRw.js} +1 -1
- package/public/assets/{chevron-left-6cPJJmnY.js → chevron-left-CM3Ljmsh.js} +1 -1
- package/public/assets/{chevron-right-DxtB9dXk.js → chevron-right-OQgRbmpb.js} +1 -1
- package/public/assets/{copy-BckVr8cJ.js → copy-DO7PDfZF.js} +1 -1
- package/public/assets/{download-DnrLGHSN.js → download-Cd-BBoI7.js} +1 -1
- package/public/assets/{external-link-BWs-24k_.js → external-link-COzchqIG.js} +1 -1
- package/public/assets/file-text-DTpqny43.js +6 -0
- package/public/assets/{git-fork-DxuKN6TL.js → git-fork-BWs-fYTb.js} +1 -1
- package/public/assets/{index-D3ZK8e35.js → index-01l9VFB2.js} +28 -28
- package/public/assets/index-3ccyrL7z.css +1 -0
- package/public/assets/{key-BjxaakEN.js → key-Chc2kr14.js} +1 -1
- package/public/assets/{loader-circle-fKTUhuFx.js → loader-circle-D5ClDQ9h.js} +1 -1
- package/public/assets/{pencil-BGn762Xd.js → pencil-DBqi31EH.js} +1 -1
- package/public/assets/{plus-DfeF35ew.js → plus-ucRIgQZK.js} +1 -1
- package/public/assets/{rotate-ccw-DnJi9esb.js → rotate-ccw-CHaUzlWE.js} +1 -1
- package/public/assets/{scroll-text-CDAXkr64.js → scroll-text-DBPeZU4l.js} +1 -1
- package/public/assets/{settings-BQ40mw10.js → settings-JXcSTf0A.js} +1 -1
- package/public/assets/{status-colors-BgploKhY.js → status-colors-kQDPD0wO.js} +1 -1
- package/public/assets/task-constants-DXxUAApA.js +1 -0
- package/public/assets/{trash-2-B6XaTY-0.js → trash-2-WA_mdBf9.js} +1 -1
- package/public/assets/{useFetch-CSoNR_l8.js → useFetch-DWa3GeJN.js} +1 -1
- package/public/assets/{users-DI9FgcZa.js → users-CUx2h4Ml.js} +1 -1
- package/public/assets/{wifi-D9JcPn5X.js → wifi-DtCZMvdz.js} +1 -1
- package/public/assets/{workflow-DRETOaoe.js → workflow-DvpyWOk6.js} +1 -1
- package/public/index.html +2 -2
- package/public/sw.js +1 -1
- package/public/assets/AdminPage-DIyGC-b1.js +0 -1
- package/public/assets/DocsLayout-CZh1AEB5.js +0 -1
- package/public/assets/EditProjectPage-BMsLYq9D.js +0 -2
- package/public/assets/HomePage-CRZSG4wX.js +0 -1
- package/public/assets/ProfilePage-5b64UEF7.js +0 -1
- package/public/assets/ProjectListPage-D0ArUg7q.js +0 -6
- package/public/assets/TaskDetailPage-cjzjPYPW.js +0 -26
- package/public/assets/TaskListPage-BCj8HmhB.js +0 -1
- package/public/assets/TerminalHomePage-BmShj9-L.js +0 -11
- package/public/assets/TokenManage-CXGZwaVK.js +0 -1
- package/public/assets/WorkerDetailPage-D3l1CEg-.js +0 -1
- package/public/assets/WorkerListPage-CR3ptj-n.js +0 -6
- package/public/assets/index-DMWyyiI3.css +0 -1
- package/public/assets/task-constants-eOji5WUw.js +0 -1
|
@@ -8,7 +8,7 @@ function buildHelpText(platform) {
|
|
|
8
8
|
' --project/-p <key> target project',
|
|
9
9
|
' --on <worker> target worker',
|
|
10
10
|
' --type/-t <type> feat|fix|refactor|docs|chore (or prefix: fix:"desc")',
|
|
11
|
-
' --agent <agent> claude|cursor
|
|
11
|
+
' --agent <agent> claude|codex|cursor',
|
|
12
12
|
' --branch <slug> custom branch slug',
|
|
13
13
|
' @mention assign to a user',
|
|
14
14
|
' reply to a message include it as task context',
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import type { Worker } from '@overlordai/protocol';
|
|
2
2
|
import { WorkerStatus } from '@overlordai/protocol';
|
|
3
3
|
import { DatabaseService } from '../database.service';
|
|
4
|
+
export interface CapabilityFailureSnapshot {
|
|
5
|
+
count: number;
|
|
6
|
+
type: string;
|
|
7
|
+
lastFailure: number;
|
|
8
|
+
}
|
|
9
|
+
export interface WorkerCapabilityState {
|
|
10
|
+
workerId: string;
|
|
11
|
+
failureRecords: Record<string, CapabilityFailureSnapshot>;
|
|
12
|
+
degradedCapabilities: string[];
|
|
13
|
+
}
|
|
4
14
|
export declare class WorkerRepository {
|
|
5
15
|
private readonly db;
|
|
6
16
|
constructor(db: DatabaseService);
|
|
@@ -12,6 +22,8 @@ export declare class WorkerRepository {
|
|
|
12
22
|
findByName(name: string): Worker | null;
|
|
13
23
|
updateName(id: string, name: string): void;
|
|
14
24
|
findAll(includeDecommissioned?: boolean): Worker[];
|
|
25
|
+
listCapabilityStates(): WorkerCapabilityState[];
|
|
26
|
+
updateCapabilityState(id: string, state: Pick<WorkerCapabilityState, 'failureRecords' | 'degradedCapabilities'>): boolean;
|
|
15
27
|
findOnline(): Worker[];
|
|
16
28
|
findByStatuses(statuses: string[]): Worker[];
|
|
17
29
|
create(data: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.repository.d.ts","sourceRoot":"","sources":["../../../src/database/repositories/worker.repository.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAiB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"worker.repository.d.ts","sourceRoot":"","sources":["../../../src/database/repositories/worker.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,28 @@ const COLUMN_SCHEMA = {
|
|
|
43
43
|
function mapWorkerRow(row) {
|
|
44
44
|
return (0, base_repository_1.mapRow)(row, COLUMN_SCHEMA);
|
|
45
45
|
}
|
|
46
|
+
function parseJsonObject(value, fallback) {
|
|
47
|
+
if (typeof value !== 'string')
|
|
48
|
+
return fallback;
|
|
49
|
+
try {
|
|
50
|
+
const parsed = JSON.parse(value);
|
|
51
|
+
return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : fallback;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return fallback;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function parseJsonArray(value) {
|
|
58
|
+
if (typeof value !== 'string')
|
|
59
|
+
return [];
|
|
60
|
+
try {
|
|
61
|
+
const parsed = JSON.parse(value);
|
|
62
|
+
return Array.isArray(parsed) ? parsed.filter((item) => typeof item === 'string') : [];
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
46
68
|
let WorkerRepository = class WorkerRepository {
|
|
47
69
|
constructor(db) {
|
|
48
70
|
this.db = db;
|
|
@@ -102,6 +124,24 @@ let WorkerRepository = class WorkerRepository {
|
|
|
102
124
|
const rows = this.db.getDb().prepare(sql).all(...params);
|
|
103
125
|
return rows.map(mapWorkerRow);
|
|
104
126
|
}
|
|
127
|
+
listCapabilityStates() {
|
|
128
|
+
const rows = this.db
|
|
129
|
+
.getDb()
|
|
130
|
+
.prepare('SELECT id, capability_failures, degraded_capabilities FROM workers ORDER BY name')
|
|
131
|
+
.all();
|
|
132
|
+
return rows.map((row) => ({
|
|
133
|
+
workerId: String(row.id),
|
|
134
|
+
failureRecords: parseJsonObject(row.capability_failures, {}),
|
|
135
|
+
degradedCapabilities: parseJsonArray(row.degraded_capabilities),
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
updateCapabilityState(id, state) {
|
|
139
|
+
const result = this.db
|
|
140
|
+
.getDb()
|
|
141
|
+
.prepare('UPDATE workers SET capability_failures = ?, degraded_capabilities = ? WHERE id = ?')
|
|
142
|
+
.run(JSON.stringify(state.failureRecords), JSON.stringify(state.degradedCapabilities), id);
|
|
143
|
+
return result.changes > 0;
|
|
144
|
+
}
|
|
105
145
|
findOnline() {
|
|
106
146
|
const rows = this.db
|
|
107
147
|
.getDb()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.repository.js","sourceRoot":"","sources":["../../../src/database/repositories/worker.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAE5C,mDAAmE;AACnE,0DAAsD;AACtD,wDAA+D;
|
|
1
|
+
{"version":3,"file":"worker.repository.js","sourceRoot":"","sources":["../../../src/database/repositories/worker.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import type { WorkerRepository } from '../database/repositories/worker.repository';
|
|
1
3
|
/** Failure types with different recovery strategies. */
|
|
2
4
|
export type FailureType = 'binary_missing' | 'auth_failure' | 'rate_limit' | 'unknown';
|
|
3
5
|
interface FailureRecord {
|
|
@@ -5,7 +7,8 @@ interface FailureRecord {
|
|
|
5
7
|
type: FailureType;
|
|
6
8
|
lastFailure: number;
|
|
7
9
|
}
|
|
8
|
-
export declare class CapabilityService {
|
|
10
|
+
export declare class CapabilityService implements OnModuleInit {
|
|
11
|
+
private readonly workerRepo?;
|
|
9
12
|
private readonly logger;
|
|
10
13
|
/** workerId -> agentType -> failure record */
|
|
11
14
|
private readonly failureRecords;
|
|
@@ -13,6 +16,8 @@ export declare class CapabilityService {
|
|
|
13
16
|
private readonly degraded;
|
|
14
17
|
/** Timers for auto-recovery, keyed by `${workerId}:${agentType}` */
|
|
15
18
|
private readonly recoveryTimers;
|
|
19
|
+
constructor(workerRepo?: Pick<WorkerRepository, "listCapabilityStates" | "updateCapabilityState"> | undefined);
|
|
20
|
+
onModuleInit(): void;
|
|
16
21
|
/**
|
|
17
22
|
* Record a failure for a specific agent type on a worker.
|
|
18
23
|
* After DEGRADATION_THRESHOLD consecutive failures the capability is marked
|
|
@@ -23,8 +28,11 @@ export declare class CapabilityService {
|
|
|
23
28
|
/**
|
|
24
29
|
* Record a successful execution of an agent type on a worker.
|
|
25
30
|
* Resets the failure counter and restores the capability if it was degraded.
|
|
31
|
+
*
|
|
32
|
+
* Only successes from tasks that started after the latest failure can prove
|
|
33
|
+
* the capability has recovered. Older concurrent tasks finishing later are ignored.
|
|
26
34
|
*/
|
|
27
|
-
recordSuccess(workerId: string, agentType: string): void;
|
|
35
|
+
recordSuccess(workerId: string, agentType: string, taskStartedAt?: string | null): void;
|
|
28
36
|
/**
|
|
29
37
|
* Check whether a worker is capable of running a specific agent type.
|
|
30
38
|
* Returns false if the capability has been degraded due to repeated failures.
|
|
@@ -39,17 +47,22 @@ export declare class CapabilityService {
|
|
|
39
47
|
* Resets both the failure count and the degraded flag.
|
|
40
48
|
*/
|
|
41
49
|
restoreCapability(workerId: string, agentType: string): void;
|
|
50
|
+
/**
|
|
51
|
+
* Clear all capability state for a worker (call when worker is deleted/decommissioned).
|
|
52
|
+
*/
|
|
53
|
+
clearWorker(workerId: string): void;
|
|
42
54
|
/**
|
|
43
55
|
* Schedule automatic recovery for a degraded capability based on its failure type.
|
|
44
56
|
* binary_missing failures are permanent and will not auto-recover.
|
|
45
57
|
*/
|
|
46
|
-
private clearCapabilityState;
|
|
47
58
|
private scheduleRecovery;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
clearWorker(workerId: string): void;
|
|
59
|
+
private clearCapabilityState;
|
|
60
|
+
/** Remove degraded flag only (preserves failure count for exponential backoff). */
|
|
61
|
+
private clearDegradedFlag;
|
|
52
62
|
private cancelRecoveryTimer;
|
|
63
|
+
private restoreTimersFromPersistedState;
|
|
64
|
+
private calculateRecoveryDelay;
|
|
65
|
+
private persistWorkerState;
|
|
53
66
|
}
|
|
54
67
|
export {};
|
|
55
68
|
//# sourceMappingURL=capability.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability.service.d.ts","sourceRoot":"","sources":["../../src/dispatcher/capability.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"capability.service.d.ts","sourceRoot":"","sources":["../../src/dispatcher/capability.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,YAAY,EAAY,MAAM,gBAAgB,CAAC;AAC5E,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,4CAA4C,CAAC;AAQpD,wDAAwD;AACxD,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,cAAc,GAAG,YAAY,GAAG,SAAS,CAAC;AAYvF,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBACa,iBAAkB,YAAW,YAAY;IAclD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAb9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAE7D,8CAA8C;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiD;IAEhF,8CAA8C;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAE3D,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;gBAIjD,UAAU,CAAC,EAAE,IAAI,CAChC,gBAAgB,EAChB,sBAAsB,GAAG,uBAAuB,CACjD,YAAA;IAGH,YAAY,IAAI,IAAI;IAmCpB;;;;;OAKG;IACH,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,WAAuB,GACnC,IAAI;IAkDP;;;;;;OAMG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAoBvF;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAQvD;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIhF;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAO5D;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAgBnC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAuCxB,OAAO,CAAC,oBAAoB;IAwB5B,mFAAmF;IACnF,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,+BAA+B;IA8BvC,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,kBAAkB;CAqB3B"}
|
|
@@ -5,21 +5,31 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
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
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
8
14
|
var CapabilityService_1;
|
|
9
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
16
|
exports.CapabilityService = void 0;
|
|
11
17
|
const common_1 = require("@nestjs/common");
|
|
12
|
-
/** Number of consecutive failures before a capability is degraded. */
|
|
18
|
+
/** Number of consecutive failures before a capability is degraded (default). */
|
|
13
19
|
const DEGRADATION_THRESHOLD = 3;
|
|
14
|
-
/**
|
|
15
|
-
const
|
|
20
|
+
/** Failure types that degrade immediately on the first occurrence. */
|
|
21
|
+
const IMMEDIATE_DEGRADATION = new Set(['rate_limit']);
|
|
22
|
+
/** Base recovery delay in ms per failure type. Actual delay = base × 2^(consecutiveFailures - 1). null = permanent. */
|
|
23
|
+
const BASE_RECOVERY_DELAYS = {
|
|
16
24
|
binary_missing: null, // permanent degradation
|
|
17
|
-
auth_failure: 5 * 60_000, // 5
|
|
18
|
-
rate_limit: 1 * 60_000, // 1
|
|
19
|
-
unknown: 10 * 60_000, // 10
|
|
25
|
+
auth_failure: 5 * 60_000, // 5 → 10 → 20 → 30 min
|
|
26
|
+
rate_limit: 1 * 60_000, // 1 → 2 → 4 → 8 → 16 → 30 min
|
|
27
|
+
unknown: 10 * 60_000, // 10 → 20 → 30 min
|
|
20
28
|
};
|
|
29
|
+
const MAX_RECOVERY_DELAY_MS = 30 * 60_000; // cap at 30 minutes
|
|
21
30
|
let CapabilityService = CapabilityService_1 = class CapabilityService {
|
|
22
|
-
constructor() {
|
|
31
|
+
constructor(workerRepo) {
|
|
32
|
+
this.workerRepo = workerRepo;
|
|
23
33
|
this.logger = new common_1.Logger(CapabilityService_1.name);
|
|
24
34
|
/** workerId -> agentType -> failure record */
|
|
25
35
|
this.failureRecords = new Map();
|
|
@@ -28,6 +38,33 @@ let CapabilityService = CapabilityService_1 = class CapabilityService {
|
|
|
28
38
|
/** Timers for auto-recovery, keyed by `${workerId}:${agentType}` */
|
|
29
39
|
this.recoveryTimers = new Map();
|
|
30
40
|
}
|
|
41
|
+
onModuleInit() {
|
|
42
|
+
if (!this.workerRepo)
|
|
43
|
+
return;
|
|
44
|
+
this.failureRecords.clear();
|
|
45
|
+
this.degraded.clear();
|
|
46
|
+
for (const timer of this.recoveryTimers.values()) {
|
|
47
|
+
clearTimeout(timer);
|
|
48
|
+
}
|
|
49
|
+
this.recoveryTimers.clear();
|
|
50
|
+
for (const state of this.workerRepo.listCapabilityStates()) {
|
|
51
|
+
const failureEntries = Object.entries(state.failureRecords ?? {});
|
|
52
|
+
if (failureEntries.length > 0) {
|
|
53
|
+
this.failureRecords.set(state.workerId, new Map(failureEntries.map(([agentType, record]) => [
|
|
54
|
+
agentType,
|
|
55
|
+
{
|
|
56
|
+
count: record.count,
|
|
57
|
+
type: record.type,
|
|
58
|
+
lastFailure: record.lastFailure,
|
|
59
|
+
},
|
|
60
|
+
])));
|
|
61
|
+
}
|
|
62
|
+
if ((state.degradedCapabilities?.length ?? 0) > 0) {
|
|
63
|
+
this.degraded.set(state.workerId, new Set(state.degradedCapabilities));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
this.restoreTimersFromPersistedState();
|
|
67
|
+
}
|
|
31
68
|
/**
|
|
32
69
|
* Record a failure for a specific agent type on a worker.
|
|
33
70
|
* After DEGRADATION_THRESHOLD consecutive failures the capability is marked
|
|
@@ -40,6 +77,7 @@ let CapabilityService = CapabilityService_1 = class CapabilityService {
|
|
|
40
77
|
}
|
|
41
78
|
const workerFailures = this.failureRecords.get(workerId);
|
|
42
79
|
const existing = workerFailures.get(agentType);
|
|
80
|
+
const previousFailureType = existing?.type;
|
|
43
81
|
const newCount = (existing?.count ?? 0) + 1;
|
|
44
82
|
workerFailures.set(agentType, {
|
|
45
83
|
count: newCount,
|
|
@@ -47,7 +85,8 @@ let CapabilityService = CapabilityService_1 = class CapabilityService {
|
|
|
47
85
|
lastFailure: Date.now(),
|
|
48
86
|
});
|
|
49
87
|
this.logger.warn(`Worker ${workerId} failure #${newCount} for ${agentType} [${failureType}]: ${reason}`);
|
|
50
|
-
|
|
88
|
+
const threshold = IMMEDIATE_DEGRADATION.has(failureType) ? 1 : DEGRADATION_THRESHOLD;
|
|
89
|
+
if (newCount >= threshold) {
|
|
51
90
|
if (!this.degraded.has(workerId)) {
|
|
52
91
|
this.degraded.set(workerId, new Set());
|
|
53
92
|
}
|
|
@@ -55,16 +94,37 @@ let CapabilityService = CapabilityService_1 = class CapabilityService {
|
|
|
55
94
|
this.degraded.get(workerId).add(agentType);
|
|
56
95
|
if (!wasAlreadyDegraded) {
|
|
57
96
|
this.logger.warn(`Worker ${workerId} capability '${agentType}' degraded after ${newCount} consecutive failures [${failureType}]`);
|
|
58
|
-
|
|
97
|
+
}
|
|
98
|
+
if (failureType === 'binary_missing') {
|
|
99
|
+
this.cancelRecoveryTimer(workerId, agentType);
|
|
100
|
+
if (!wasAlreadyDegraded || previousFailureType !== 'binary_missing') {
|
|
101
|
+
this.logger.warn(`Worker ${workerId} capability '${agentType}' permanently degraded (${failureType}) — manual restore required`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
// Keep the recovery timer aligned with the latest failure count and timestamp,
|
|
106
|
+
// even when concurrent failures arrive while the capability is already degraded.
|
|
59
107
|
this.scheduleRecovery(workerId, agentType, failureType);
|
|
60
108
|
}
|
|
61
109
|
}
|
|
110
|
+
this.persistWorkerState(workerId);
|
|
62
111
|
}
|
|
63
112
|
/**
|
|
64
113
|
* Record a successful execution of an agent type on a worker.
|
|
65
114
|
* Resets the failure counter and restores the capability if it was degraded.
|
|
115
|
+
*
|
|
116
|
+
* Only successes from tasks that started after the latest failure can prove
|
|
117
|
+
* the capability has recovered. Older concurrent tasks finishing later are ignored.
|
|
66
118
|
*/
|
|
67
|
-
recordSuccess(workerId, agentType) {
|
|
119
|
+
recordSuccess(workerId, agentType, taskStartedAt) {
|
|
120
|
+
const failureRecord = this.failureRecords.get(workerId)?.get(agentType);
|
|
121
|
+
if (failureRecord) {
|
|
122
|
+
const startedAtMs = taskStartedAt ? Date.parse(taskStartedAt) : Number.NaN;
|
|
123
|
+
if (!Number.isFinite(startedAtMs) || startedAtMs <= failureRecord.lastFailure) {
|
|
124
|
+
this.logger.debug(`Ignoring stale success for worker ${workerId} capability '${agentType}' (taskStartedAt=${taskStartedAt ?? 'null'}, lastFailure=${new Date(failureRecord.lastFailure).toISOString()})`);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
68
128
|
const wasDegraded = this.clearCapabilityState(workerId, agentType);
|
|
69
129
|
if (wasDegraded) {
|
|
70
130
|
this.logger.log(`Worker ${workerId} capability '${agentType}' restored after successful execution`);
|
|
@@ -95,10 +155,49 @@ let CapabilityService = CapabilityService_1 = class CapabilityService {
|
|
|
95
155
|
this.clearCapabilityState(workerId, agentType);
|
|
96
156
|
this.logger.log(`Worker ${workerId} capability '${agentType}' manually restored`);
|
|
97
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Clear all capability state for a worker (call when worker is deleted/decommissioned).
|
|
160
|
+
*/
|
|
161
|
+
clearWorker(workerId) {
|
|
162
|
+
this.failureRecords.delete(workerId);
|
|
163
|
+
this.degraded.delete(workerId);
|
|
164
|
+
// Cancel all recovery timers for this worker
|
|
165
|
+
const prefix = `${workerId}:`;
|
|
166
|
+
for (const [key, timer] of this.recoveryTimers) {
|
|
167
|
+
if (key.startsWith(prefix)) {
|
|
168
|
+
clearTimeout(timer);
|
|
169
|
+
this.recoveryTimers.delete(key);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
this.persistWorkerState(workerId);
|
|
173
|
+
}
|
|
98
174
|
/**
|
|
99
175
|
* Schedule automatic recovery for a degraded capability based on its failure type.
|
|
100
176
|
* binary_missing failures are permanent and will not auto-recover.
|
|
101
177
|
*/
|
|
178
|
+
scheduleRecovery(workerId, agentType, failureType, delayOverrideMs, consecutiveCountOverride) {
|
|
179
|
+
const baseDelay = BASE_RECOVERY_DELAYS[failureType];
|
|
180
|
+
if (baseDelay === null) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
const timerKey = `${workerId}:${agentType}`;
|
|
184
|
+
// Cancel any existing recovery timer
|
|
185
|
+
this.cancelRecoveryTimer(workerId, agentType);
|
|
186
|
+
const failureRecord = this.failureRecords.get(workerId)?.get(agentType);
|
|
187
|
+
const consecutiveCount = consecutiveCountOverride ?? failureRecord?.count ?? 1;
|
|
188
|
+
const delay = delayOverrideMs ?? this.calculateRecoveryDelay(consecutiveCount, failureType);
|
|
189
|
+
const timer = setTimeout(() => {
|
|
190
|
+
this.recoveryTimers.delete(timerKey);
|
|
191
|
+
// Only clear degraded flag, preserve failure count for continued backoff
|
|
192
|
+
this.clearDegradedFlag(workerId, agentType);
|
|
193
|
+
this.logger.log(`Worker ${workerId} capability '${agentType}' auto-recovered after ${delay / 1000}s (${failureType}, failures=${consecutiveCount})`);
|
|
194
|
+
}, delay);
|
|
195
|
+
// Prevent the timer from keeping the process alive
|
|
196
|
+
if (timer.unref) {
|
|
197
|
+
timer.unref();
|
|
198
|
+
}
|
|
199
|
+
this.recoveryTimers.set(timerKey, timer);
|
|
200
|
+
}
|
|
102
201
|
clearCapabilityState(workerId, agentType) {
|
|
103
202
|
const workerFailures = this.failureRecords.get(workerId);
|
|
104
203
|
if (workerFailures) {
|
|
@@ -114,44 +213,23 @@ let CapabilityService = CapabilityService_1 = class CapabilityService {
|
|
|
114
213
|
if (workerDegraded.size === 0) {
|
|
115
214
|
this.degraded.delete(workerId);
|
|
116
215
|
}
|
|
216
|
+
this.persistWorkerState(workerId);
|
|
117
217
|
return true;
|
|
118
218
|
}
|
|
219
|
+
this.persistWorkerState(workerId);
|
|
119
220
|
return false;
|
|
120
221
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if (delay === null) {
|
|
124
|
-
this.logger.warn(`Worker ${workerId} capability '${agentType}' permanently degraded (${failureType}) — manual restore required`);
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
const timerKey = `${workerId}:${agentType}`;
|
|
128
|
-
// Cancel any existing recovery timer
|
|
222
|
+
/** Remove degraded flag only (preserves failure count for exponential backoff). */
|
|
223
|
+
clearDegradedFlag(workerId, agentType) {
|
|
129
224
|
this.cancelRecoveryTimer(workerId, agentType);
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
// Prevent the timer from keeping the process alive
|
|
136
|
-
if (timer.unref) {
|
|
137
|
-
timer.unref();
|
|
138
|
-
}
|
|
139
|
-
this.recoveryTimers.set(timerKey, timer);
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Clear all capability state for a worker (call when worker is deleted/decommissioned).
|
|
143
|
-
*/
|
|
144
|
-
clearWorker(workerId) {
|
|
145
|
-
this.failureRecords.delete(workerId);
|
|
146
|
-
this.degraded.delete(workerId);
|
|
147
|
-
// Cancel all recovery timers for this worker
|
|
148
|
-
const prefix = `${workerId}:`;
|
|
149
|
-
for (const [key, timer] of this.recoveryTimers) {
|
|
150
|
-
if (key.startsWith(prefix)) {
|
|
151
|
-
clearTimeout(timer);
|
|
152
|
-
this.recoveryTimers.delete(key);
|
|
225
|
+
const workerDegraded = this.degraded.get(workerId);
|
|
226
|
+
if (workerDegraded) {
|
|
227
|
+
workerDegraded.delete(agentType);
|
|
228
|
+
if (workerDegraded.size === 0) {
|
|
229
|
+
this.degraded.delete(workerId);
|
|
153
230
|
}
|
|
154
231
|
}
|
|
232
|
+
this.persistWorkerState(workerId);
|
|
155
233
|
}
|
|
156
234
|
cancelRecoveryTimer(workerId, agentType) {
|
|
157
235
|
const timerKey = `${workerId}:${agentType}`;
|
|
@@ -161,9 +239,60 @@ let CapabilityService = CapabilityService_1 = class CapabilityService {
|
|
|
161
239
|
this.recoveryTimers.delete(timerKey);
|
|
162
240
|
}
|
|
163
241
|
}
|
|
242
|
+
restoreTimersFromPersistedState() {
|
|
243
|
+
const now = Date.now();
|
|
244
|
+
for (const [workerId, degradedCapabilities] of this.degraded) {
|
|
245
|
+
for (const agentType of degradedCapabilities) {
|
|
246
|
+
const record = this.failureRecords.get(workerId)?.get(agentType);
|
|
247
|
+
if (!record) {
|
|
248
|
+
this.clearDegradedFlag(workerId, agentType);
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
const baseDelay = BASE_RECOVERY_DELAYS[record.type];
|
|
252
|
+
if (baseDelay === null) {
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
const delay = this.calculateRecoveryDelay(record.count, record.type);
|
|
256
|
+
const elapsed = now - record.lastFailure;
|
|
257
|
+
if (elapsed >= delay) {
|
|
258
|
+
this.clearDegradedFlag(workerId, agentType);
|
|
259
|
+
this.logger.log(`Worker ${workerId} capability '${agentType}' auto-recovered during startup (${record.type}, failures=${record.count})`);
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
this.scheduleRecovery(workerId, agentType, record.type, delay - elapsed, record.count);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
calculateRecoveryDelay(count, failureType) {
|
|
267
|
+
const baseDelay = BASE_RECOVERY_DELAYS[failureType];
|
|
268
|
+
if (baseDelay === null) {
|
|
269
|
+
return Number.POSITIVE_INFINITY;
|
|
270
|
+
}
|
|
271
|
+
const exponent = Math.max(0, count - 1);
|
|
272
|
+
return Math.min(baseDelay * Math.pow(2, exponent), MAX_RECOVERY_DELAY_MS);
|
|
273
|
+
}
|
|
274
|
+
persistWorkerState(workerId) {
|
|
275
|
+
if (!this.workerRepo)
|
|
276
|
+
return;
|
|
277
|
+
const failureRecords = Object.fromEntries(Array.from(this.failureRecords.get(workerId)?.entries() ?? []).map(([agentType, record]) => [
|
|
278
|
+
agentType,
|
|
279
|
+
{
|
|
280
|
+
count: record.count,
|
|
281
|
+
type: record.type,
|
|
282
|
+
lastFailure: record.lastFailure,
|
|
283
|
+
},
|
|
284
|
+
]));
|
|
285
|
+
const degradedCapabilities = Array.from(this.degraded.get(workerId) ?? []);
|
|
286
|
+
this.workerRepo.updateCapabilityState(workerId, {
|
|
287
|
+
failureRecords,
|
|
288
|
+
degradedCapabilities,
|
|
289
|
+
});
|
|
290
|
+
}
|
|
164
291
|
};
|
|
165
292
|
exports.CapabilityService = CapabilityService;
|
|
166
293
|
exports.CapabilityService = CapabilityService = CapabilityService_1 = __decorate([
|
|
167
|
-
(0, common_1.Injectable)()
|
|
294
|
+
(0, common_1.Injectable)(),
|
|
295
|
+
__param(0, (0, common_1.Optional)()),
|
|
296
|
+
__metadata("design:paramtypes", [Object])
|
|
168
297
|
], CapabilityService);
|
|
169
298
|
//# sourceMappingURL=capability.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability.service.js","sourceRoot":"","sources":["../../src/dispatcher/capability.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"capability.service.js","sourceRoot":"","sources":["../../src/dispatcher/capability.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA4E;AAO5E,gFAAgF;AAChF,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC,sEAAsE;AACtE,MAAM,qBAAqB,GAAqB,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AAKxE,uHAAuH;AACvH,MAAM,oBAAoB,GAAuC;IAC/D,cAAc,EAAE,IAAI,EAAS,wBAAwB;IACrD,YAAY,EAAE,CAAC,GAAG,MAAM,EAAI,uBAAuB;IACnD,UAAU,EAAE,CAAC,GAAG,MAAM,EAAM,8BAA8B;IAC1D,OAAO,EAAE,EAAE,GAAG,MAAM,EAAQ,mBAAmB;CAChD,CAAC;AAEF,MAAM,qBAAqB,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,oBAAoB;AASxD,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAY5B,YAEE,UAGC;QAHgB,eAAU,GAAV,UAAU,CAG1B;QAhBc,WAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;QAE7D,8CAA8C;QAC7B,mBAAc,GAAG,IAAI,GAAG,EAAsC,CAAC;QAEhF,8CAA8C;QAC7B,aAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;QAE3D,oEAAoE;QACnD,mBAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;IAQjE,CAAC;IAEJ,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAE7B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAE5B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,EAAE,CAAC;YAC3D,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;YAClE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,KAAK,CAAC,QAAQ,EACd,IAAI,GAAG,CACL,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;oBAC1C,SAAS;oBACT;wBACE,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,IAAI,EAAE,MAAM,CAAC,IAAmB;wBAChC,WAAW,EAAE,MAAM,CAAC,WAAW;qBAChC;iBACF,CAAC,CACH,CACF,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,+BAA+B,EAAE,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,aAAa,CACX,QAAgB,EAChB,SAAiB,EACjB,MAAc,EACd,cAA2B,SAAS;QAEpC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,mBAAmB,GAAG,QAAQ,EAAE,IAAI,CAAC;QAC3C,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAE5C,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE;YAC5B,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,UAAU,QAAQ,aAAa,QAAQ,QAAQ,SAAS,KAAK,WAAW,MAAM,MAAM,EAAE,CACvF,CAAC;QAEF,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;QACrF,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACzC,CAAC;YACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE5C,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,UAAU,QAAQ,gBAAgB,SAAS,oBAAoB,QAAQ,0BAA0B,WAAW,GAAG,CAChH,CAAC;YACJ,CAAC;YAED,IAAI,WAAW,KAAK,gBAAgB,EAAE,CAAC;gBACrC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC9C,IAAI,CAAC,kBAAkB,IAAI,mBAAmB,KAAK,gBAAgB,EAAE,CAAC;oBACpE,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,UAAU,QAAQ,gBAAgB,SAAS,2BAA2B,WAAW,6BAA6B,CAC/G,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,+EAA+E;gBAC/E,iFAAiF;gBACjF,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,QAAgB,EAAE,SAAiB,EAAE,aAA6B;QAC9E,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACxE,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YAC3E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;gBAC9E,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,qCAAqC,QAAQ,gBAAgB,SAAS,oBAAoB,aAAa,IAAI,MAAM,iBAAiB,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,GAAG,CACvL,CAAC;gBACF,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACnE,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,UAAU,QAAQ,gBAAgB,SAAS,uCAAuC,CACnF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,QAAgB,EAAE,SAAiB;QAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,QAAgB,EAAE,SAAiB;QAClD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,QAAgB,EAAE,SAAiB;QACnD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,UAAU,QAAQ,gBAAgB,SAAS,qBAAqB,CACjE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAgB;QAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE/B,6CAA6C;QAC7C,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,CAAC;QAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/C,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACK,gBAAgB,CACtB,QAAgB,EAChB,SAAiB,EACjB,WAAwB,EACxB,eAAwB,EACxB,wBAAiC;QAEjC,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;QAE5C,qCAAqC;QACrC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAE9C,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACxE,MAAM,gBAAgB,GAAG,wBAAwB,IAAI,aAAa,EAAE,KAAK,IAAI,CAAC,CAAC;QAC/E,MAAM,KAAK,GACT,eAAe,IAAI,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QAEhF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACrC,yEAAyE;YACzE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,UAAU,QAAQ,gBAAgB,SAAS,0BAA0B,KAAK,GAAG,IAAI,MAAM,WAAW,cAAc,gBAAgB,GAAG,CACpI,CAAC;QACJ,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,mDAAmD;QACnD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAEO,oBAAoB,CAAC,QAAgB,EAAE,SAAiB;QAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAE9C,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,cAAc,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACpD,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mFAAmF;IAC3E,iBAAiB,CAAC,QAAgB,EAAE,SAAiB;QAC3D,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAEO,mBAAmB,CAAC,QAAgB,EAAE,SAAiB;QAC7D,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,QAAQ,EAAE,CAAC;YACb,YAAY,CAAC,QAAQ,CAAC,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,+BAA+B;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7D,KAAK,MAAM,SAAS,IAAI,oBAAoB,EAAE,CAAC;gBAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;gBACjE,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAC5C,SAAS;gBACX,CAAC;gBAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACpD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;oBACvB,SAAS;gBACX,CAAC;gBAED,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBACrE,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;gBACzC,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;oBACrB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,UAAU,QAAQ,gBAAgB,SAAS,oCAAoC,MAAM,CAAC,IAAI,cAAc,MAAM,CAAC,KAAK,GAAG,CACxH,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,KAAa,EAAE,WAAwB;QACpE,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,iBAAiB,CAAC;QAClC,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC5E,CAAC;IAEO,kBAAkB,CAAC,QAAgB;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAE7B,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;YAC1F,SAAS;YACT;gBACE,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;aACI;SACtC,CAAC,CACH,CAAC;QAEF,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3E,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,QAAQ,EAAE;YAC9C,cAAc;YACd,oBAAoB;SAC4D,CAAC,CAAC;IACtF,CAAC;CACF,CAAA;AArVY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAcR,WAAA,IAAA,iBAAQ,GAAE,CAAA;;GAbF,iBAAiB,CAqV7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.service.d.ts","sourceRoot":"","sources":["../../src/dispatcher/scheduler.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,YAAY,EACZ,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AASpF,qBACa,gBAAiB,YAAW,YAAY,EAAE,eAAe;IAOlE,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAhBhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAA+C;gBAG7C,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,gBAAgB,EAC5B,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,uBAAuB,EACtC,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,mBAAmB,EAClC,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,aAAa,EAC3B,aAAa,EAAE,mBAAmB;IAG/C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C7B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBtC;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhD;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD;;;OAGG;YACW,eAAe;IAqC7B;;OAEG;YACW,UAAU;IAgBxB;;OAEG;YACW,mBAAmB;
|
|
1
|
+
{"version":3,"file":"scheduler.service.d.ts","sourceRoot":"","sources":["../../src/dispatcher/scheduler.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,YAAY,EACZ,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AASpF,qBACa,gBAAiB,YAAW,YAAY,EAAE,eAAe;IAOlE,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAhBhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAA+C;gBAG7C,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,gBAAgB,EAC5B,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,uBAAuB,EACtC,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,mBAAmB,EAClC,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,aAAa,EAC3B,aAAa,EAAE,mBAAmB;IAG/C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C7B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBtC;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhD;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD;;;OAGG;YACW,eAAe;IAqC7B;;OAEG;YACW,UAAU;IAgBxB;;OAEG;YACW,mBAAmB;IAuTjC;;OAEG;YACW,iBAAiB;CAkDhC"}
|