@resolveio/server-lib 20.15.9 → 20.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/managers/worker-dispatcher.manager.d.ts +10 -0
- package/managers/worker-dispatcher.manager.js +177 -25
- package/managers/worker-dispatcher.manager.js.map +1 -1
- package/methods/ai-terminal.js +1622 -278
- package/methods/ai-terminal.js.map +1 -1
- package/methods/publications.js +36 -8
- package/methods/publications.js.map +1 -1
- package/models/method.model.d.ts +1 -0
- package/models/method.model.js.map +1 -1
- package/package.json +1 -1
- package/server-app.d.ts +4 -0
- package/server-app.js +54 -2
- package/server-app.js.map +1 -1
package/methods/publications.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
14
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
15
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -65,6 +76,23 @@ exports.loadPublicationMethods = loadPublicationMethods;
|
|
|
65
76
|
var resolveio_server_app_1 = require("../resolveio-server-app");
|
|
66
77
|
var subscription_manager_1 = require("../managers/subscription.manager");
|
|
67
78
|
var subscription_dependency_context_1 = require("../util/subscription-dependency-context");
|
|
79
|
+
function normalizeOptionalString(value) {
|
|
80
|
+
if (value === null || value === undefined) {
|
|
81
|
+
return '';
|
|
82
|
+
}
|
|
83
|
+
return String(value).trim();
|
|
84
|
+
}
|
|
85
|
+
function resolveSingleWorkerTarget(value) {
|
|
86
|
+
var normalized = normalizeOptionalString(value);
|
|
87
|
+
if (!normalized) {
|
|
88
|
+
return '';
|
|
89
|
+
}
|
|
90
|
+
var parts = normalized.split(',').map(function (part) { return part.trim(); }).filter(Boolean);
|
|
91
|
+
if (parts.length !== 1) {
|
|
92
|
+
return '';
|
|
93
|
+
}
|
|
94
|
+
return parts[0];
|
|
95
|
+
}
|
|
68
96
|
function normalizeSubscriptionData(subscriptionData) {
|
|
69
97
|
if (!Array.isArray(subscriptionData)) {
|
|
70
98
|
return [];
|
|
@@ -85,13 +113,14 @@ function getPublication(manager, publication) {
|
|
|
85
113
|
return pub;
|
|
86
114
|
}
|
|
87
115
|
function loadPublicationMethods(methodManager) {
|
|
116
|
+
var publicationWorkerIndex = resolveSingleWorkerTarget(process.env.SUBSCRIPTION_WORKER_INDEX
|
|
117
|
+
|| process.env.PUBLICATION_WORKER_INDEX
|
|
118
|
+
|| process.env.WORKER_PUBLICATION_INDEX);
|
|
119
|
+
var publicationWorkerInstance = resolveSingleWorkerTarget(process.env.SUBSCRIPTION_WORKER_INSTANCE
|
|
120
|
+
|| process.env.PUBLICATION_WORKER_INSTANCE
|
|
121
|
+
|| process.env.WORKER_PUBLICATION_INSTANCE);
|
|
88
122
|
methodManager.methods({
|
|
89
|
-
runPublication: {
|
|
90
|
-
skipValidation: true,
|
|
91
|
-
workerTaskWeight: parseInt(process.env.SUBSCRIPTION_WORKER_TASK_WEIGHT || '', 10) || 1,
|
|
92
|
-
maxConcurrency: parseInt(process.env.SUBSCRIPTION_WORKER_MAX_CONCURRENCY || '', 10) || undefined,
|
|
93
|
-
maxConcurrencyPerInstance: parseInt(process.env.SUBSCRIPTION_WORKER_MAX_CONCURRENCY_PER_INSTANCE || '', 10) || undefined,
|
|
94
|
-
function: function (publication_1) {
|
|
123
|
+
runPublication: __assign(__assign(__assign({ skipValidation: true, workerTaskWeight: parseInt(process.env.SUBSCRIPTION_WORKER_TASK_WEIGHT || '', 10) || 1, maxConcurrency: parseInt(process.env.SUBSCRIPTION_WORKER_MAX_CONCURRENCY || '', 10) || undefined, maxConcurrencyPerInstance: parseInt(process.env.SUBSCRIPTION_WORKER_MAX_CONCURRENCY_PER_INSTANCE || '', 10) || undefined, workerQueue: 'publication' }, (publicationWorkerIndex ? { targetWorkerIndex: publicationWorkerIndex } : {})), (publicationWorkerInstance ? { targetWorkerInstance: publicationWorkerInstance } : {})), { function: function (publication_1) {
|
|
95
124
|
return __awaiter(this, arguments, void 0, function (publication, subscriptionData, userId) {
|
|
96
125
|
var manager, pub, normalizedData, context, valObj, valKeys, rootKeys, i, metadata, execution, _a, response;
|
|
97
126
|
if (subscriptionData === void 0) { subscriptionData = []; }
|
|
@@ -147,8 +176,7 @@ function loadPublicationMethods(methodManager) {
|
|
|
147
176
|
}
|
|
148
177
|
});
|
|
149
178
|
});
|
|
150
|
-
}
|
|
151
|
-
}
|
|
179
|
+
} })
|
|
152
180
|
});
|
|
153
181
|
}
|
|
154
182
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/publications.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/methods/publications.ts"],"names":[],"mappings":"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","file":"publications.js","sourcesContent":["import { ResolveIOServer } from '../resolveio-server-app';\nimport { SubscriptionManager } from '../managers/subscription.manager';\nimport { SubscriptionPubModel } from '../models/subscription.model';\nimport { serializeDependencySnapshot, withDependencyTracking } from '../util/subscription-dependency-context';\n\ninterface PublicationWorkerResponse {\n\t__publicationResponse: true;\n\tpublication: string;\n\tsubscriptionData: any[];\n\tuserSpecific: boolean;\n\tpayload: any;\n\tsnapshot: ReturnType<typeof serializeDependencySnapshot>;\n}\n\nfunction normalizeOptionalString(value: any): string {\n\tif (value === null || value === undefined) {\n\t\treturn '';\n\t}\n\treturn String(value).trim();\n}\n\nfunction resolveSingleWorkerTarget(value: any): string {\n\tconst normalized = normalizeOptionalString(value);\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tconst parts = normalized.split(',').map(part => part.trim()).filter(Boolean);\n\tif (parts.length !== 1) {\n\t\treturn '';\n\t}\n\treturn parts[0];\n}\n\nfunction normalizeSubscriptionData(subscriptionData: any[]): any[] {\n\tif (!Array.isArray(subscriptionData)) {\n\t\treturn [];\n\t}\n\n\treturn subscriptionData;\n}\n\nfunction resolvePublicationContext(manager: SubscriptionManager) {\n\treturn Object.assign({}, manager, SubscriptionManager.prototype);\n}\n\nfunction getPublication(manager: SubscriptionManager, publication: string): SubscriptionPubModel {\n\tif (!manager || typeof manager.getPublication !== 'function') {\n\t\tthrow new Error(`Subscription manager not available for publication: ${publication}`);\n\t}\n\n\tconst pub = manager.getPublication(publication);\n\tif (!pub) {\n\t\tthrow new Error(`Publication not found: ${publication}`);\n\t}\n\n\treturn pub;\n}\n\nexport function loadPublicationMethods(methodManager) {\n\tconst publicationWorkerIndex = resolveSingleWorkerTarget(\n\t\tprocess.env.SUBSCRIPTION_WORKER_INDEX\n\t\t|| process.env.PUBLICATION_WORKER_INDEX\n\t\t|| process.env.WORKER_PUBLICATION_INDEX\n\t);\n\tconst publicationWorkerInstance = resolveSingleWorkerTarget(\n\t\tprocess.env.SUBSCRIPTION_WORKER_INSTANCE\n\t\t|| process.env.PUBLICATION_WORKER_INSTANCE\n\t\t|| process.env.WORKER_PUBLICATION_INSTANCE\n\t);\n\tmethodManager.methods({\n\t\trunPublication: {\n\t\t\tskipValidation: true,\n\t\t\tworkerTaskWeight: parseInt(process.env.SUBSCRIPTION_WORKER_TASK_WEIGHT || '', 10) || 1,\n\t\t\tmaxConcurrency: parseInt(process.env.SUBSCRIPTION_WORKER_MAX_CONCURRENCY || '', 10) || undefined,\n\t\t\tmaxConcurrencyPerInstance: parseInt(process.env.SUBSCRIPTION_WORKER_MAX_CONCURRENCY_PER_INSTANCE || '', 10) || undefined,\n\t\t\tworkerQueue: 'publication',\n\t\t\t...(publicationWorkerIndex ? { targetWorkerIndex: publicationWorkerIndex } : {}),\n\t\t\t...(publicationWorkerInstance ? { targetWorkerInstance: publicationWorkerInstance } : {}),\n\t\t\tfunction: async function(publication: string, subscriptionData: any[] = [], userId?: string) {\n\t\t\t\tif (this.user && this.user !== 'Internal System') {\n\t\t\t\t\tthrow new Error('Unauthorized publication execution');\n\t\t\t\t}\n\n\t\t\t\tconst manager = ResolveIOServer.getMainServer().getSubscriptionManager();\n\t\t\t\tconst pub = getPublication(manager, publication);\n\t\t\t\tconst normalizedData = normalizeSubscriptionData(subscriptionData);\n\t\t\t\tconst context = resolvePublicationContext(manager);\n\n\t\t\t\tif (pub.check && pub.check._schema && (normalizedData.length > 1 || normalizedData[0])) {\n\t\t\t\t\tconst valObj = {};\n\t\t\t\t\tconst valKeys = Object.keys(pub.check._schema);\n\t\t\t\t\tconst rootKeys = valKeys.filter(a => !a.includes('.'));\n\t\t\t\t\tfor (let i = 0; i < normalizedData.length; i++) {\n\t\t\t\t\t\tvalObj[rootKeys[i]] = normalizedData[i];\n\t\t\t\t\t}\n\t\t\t\t\tpub.check.validate(valObj);\n\t\t\t\t}\n\n\t\t\t\tconst metadata = {\n\t\t\t\t\tpublication,\n\t\t\t\t\tsubscriptionData: normalizedData\n\t\t\t\t};\n\n\t\t\t\tconst execution = pub.user_specific\n\t\t\t\t\t? await withDependencyTracking(\n\t\t\t\t\t\t() => pub.function.call(context, userId || '', ...normalizedData),\n\t\t\t\t\t\tObject.assign({}, metadata, { userId })\n\t\t\t\t\t)\n\t\t\t\t\t: await withDependencyTracking(\n\t\t\t\t\t\t() => pub.function.call(context, ...normalizedData),\n\t\t\t\t\t\tmetadata\n\t\t\t\t\t);\n\n\t\t\t\tconst response: PublicationWorkerResponse = {\n\t\t\t\t\t__publicationResponse: true,\n\t\t\t\t\tpublication,\n\t\t\t\t\tsubscriptionData: normalizedData,\n\t\t\t\t\tuserSpecific: !!pub.user_specific,\n\t\t\t\t\tpayload: execution.result,\n\t\t\t\t\tsnapshot: serializeDependencySnapshot(execution.snapshot)\n\t\t\t\t};\n\n\t\t\t\treturn response;\n\t\t\t}\n\t\t}\n\t});\n}\n"]}
|
package/models/method.model.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export interface MethodAllModel {
|
|
|
14
14
|
workerTaskWeight?: number;
|
|
15
15
|
skipWorker?: boolean;
|
|
16
16
|
forceWorker?: boolean;
|
|
17
|
+
workerQueue?: 'publication' | 'codex' | 'default';
|
|
17
18
|
targetWorkerIndex?: string | number;
|
|
18
19
|
targetWorkerInstance?: string | number;
|
|
19
20
|
bypassSession?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/models/method.model.ts"],"names":[],"mappings":"","file":"method.model.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { MethodManager } from '../managers/method.manager';\n\nexport interface MethodModel {\n\t[key: string]: MethodAllModel;\n}\n\nexport interface MethodAllModel {\n\tcheck?: SimpleSchema;\n\t// eslint-disable-next-line no-unused-vars\n\tfunction: (this: MethodManager & {id_ws: string, id_user: string, user: string}, ...parameters: any[]) => Promise<any | any[]>;\n\tskipValidation?: boolean;\n\tworkerTaskWeight?: number;\n\tskipWorker?: boolean;\n\tforceWorker?: boolean;\n\ttargetWorkerIndex?: string | number;\n\ttargetWorkerInstance?: string | number;\n\tbypassSession?: boolean;\n\ttimeoutOverride?: number;\n\tmaxConcurrency?: number;\n\tmaxConcurrencyPerInstance?: number;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/models/method.model.ts"],"names":[],"mappings":"","file":"method.model.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { MethodManager } from '../managers/method.manager';\n\nexport interface MethodModel {\n\t[key: string]: MethodAllModel;\n}\n\nexport interface MethodAllModel {\n\tcheck?: SimpleSchema;\n\t// eslint-disable-next-line no-unused-vars\n\tfunction: (this: MethodManager & {id_ws: string, id_user: string, user: string}, ...parameters: any[]) => Promise<any | any[]>;\n\tskipValidation?: boolean;\n\tworkerTaskWeight?: number;\n\tskipWorker?: boolean;\n\tforceWorker?: boolean;\n\tworkerQueue?: 'publication' | 'codex' | 'default';\n\ttargetWorkerIndex?: string | number;\n\ttargetWorkerInstance?: string | number;\n\tbypassSession?: boolean;\n\ttimeoutOverride?: number;\n\tmaxConcurrency?: number;\n\tmaxConcurrencyPerInstance?: number;\n}\n"]}
|
package/package.json
CHANGED
package/server-app.d.ts
CHANGED
|
@@ -102,6 +102,10 @@ export declare class ResolveIOMainServer {
|
|
|
102
102
|
private resolveTimerDebugMinDelayMs;
|
|
103
103
|
private resolveTimerDebugSampleRate;
|
|
104
104
|
private resolveTimerDebugLogLimit;
|
|
105
|
+
private normalizeWorkerSelectorValue;
|
|
106
|
+
private parseWorkerSelector;
|
|
107
|
+
private workerMatchesSelector;
|
|
108
|
+
private resolveWorkerRole;
|
|
105
109
|
private parsePositiveInt;
|
|
106
110
|
private parsePositiveFloat;
|
|
107
111
|
private startPerfDebug;
|
package/server-app.js
CHANGED
|
@@ -162,7 +162,7 @@ var ResolveIOMainServer = /** @class */ (function () {
|
|
|
162
162
|
};
|
|
163
163
|
ResolveIOMainServer.prototype.initialize = function () {
|
|
164
164
|
return __awaiter(this, void 0, void 0, function () {
|
|
165
|
-
var _a;
|
|
165
|
+
var _a, workerRole, workerIndex, workerInstance;
|
|
166
166
|
var _this = this;
|
|
167
167
|
return __generator(this, function (_b) {
|
|
168
168
|
switch (_b.label) {
|
|
@@ -392,7 +392,10 @@ var ResolveIOMainServer = /** @class */ (function () {
|
|
|
392
392
|
}
|
|
393
393
|
if (this._isWorkersEnabled) {
|
|
394
394
|
if (this._isWorkerInstance) {
|
|
395
|
-
|
|
395
|
+
workerRole = this.resolveWorkerRole();
|
|
396
|
+
workerIndex = this.normalizeWorkerSelectorValue(process.env.WORKER_INDEX) || 'UNKNOWN';
|
|
397
|
+
workerInstance = this.normalizeWorkerSelectorValue(process.env.NODE_APP_INSTANCE) || 'UNKNOWN';
|
|
398
|
+
console.log("Running as Worker: ".concat(workerRole), workerIndex, workerInstance);
|
|
396
399
|
this._methodManager = method_manager_1.MethodManager.create(null, this._monitorManagerFunction, this._isWorkersEnabled, this._isWorkerInstance);
|
|
397
400
|
this._subscriptionManager = subscription_manager_1.SubscriptionManager.createPublicationRegistry(resolveio_server_app_1.ResolveIOServer.getServerConfig());
|
|
398
401
|
this._workerServerManager = worker_server_manager_1.WorkerServerManager.create(this._methodManager, this.getServerConfig());
|
|
@@ -1310,6 +1313,55 @@ var ResolveIOMainServer = /** @class */ (function () {
|
|
|
1310
1313
|
var raw = (_a = process.env.TIMER_DEBUG_LOG_LIMIT) !== null && _a !== void 0 ? _a : config === null || config === void 0 ? void 0 : config['TIMER_DEBUG_LOG_LIMIT'];
|
|
1311
1314
|
return this.parsePositiveInt(raw, this._timerDebugLogLimit);
|
|
1312
1315
|
};
|
|
1316
|
+
ResolveIOMainServer.prototype.normalizeWorkerSelectorValue = function (value) {
|
|
1317
|
+
if (value === null || value === undefined) {
|
|
1318
|
+
return null;
|
|
1319
|
+
}
|
|
1320
|
+
var normalized = String(value).trim();
|
|
1321
|
+
return normalized.length ? normalized : null;
|
|
1322
|
+
};
|
|
1323
|
+
ResolveIOMainServer.prototype.parseWorkerSelector = function (value) {
|
|
1324
|
+
if (value === null || value === undefined) {
|
|
1325
|
+
return null;
|
|
1326
|
+
}
|
|
1327
|
+
var raw = Array.isArray(value) ? value.join(',') : String(value);
|
|
1328
|
+
var parts = raw.split(',').map(function (part) { return part.trim(); }).filter(Boolean);
|
|
1329
|
+
if (!parts.length) {
|
|
1330
|
+
return null;
|
|
1331
|
+
}
|
|
1332
|
+
return new Set(parts);
|
|
1333
|
+
};
|
|
1334
|
+
ResolveIOMainServer.prototype.workerMatchesSelector = function (workerIndex, workerInstance, indexes, instances) {
|
|
1335
|
+
if (!indexes && !instances) {
|
|
1336
|
+
return false;
|
|
1337
|
+
}
|
|
1338
|
+
var indexMatch = indexes ? (workerIndex ? indexes.has(workerIndex) : false) : true;
|
|
1339
|
+
var instanceMatch = instances ? (workerInstance ? instances.has(workerInstance) : false) : true;
|
|
1340
|
+
return indexMatch && instanceMatch;
|
|
1341
|
+
};
|
|
1342
|
+
ResolveIOMainServer.prototype.resolveWorkerRole = function () {
|
|
1343
|
+
var workerIndex = this.normalizeWorkerSelectorValue(process.env.WORKER_INDEX);
|
|
1344
|
+
var workerInstance = this.normalizeWorkerSelectorValue(process.env.NODE_APP_INSTANCE);
|
|
1345
|
+
var publicationIndexes = this.parseWorkerSelector(process.env.PUBLICATION_WORKER_INDEX
|
|
1346
|
+
|| process.env.SUBSCRIPTION_WORKER_INDEX
|
|
1347
|
+
|| process.env.WORKER_PUBLICATION_INDEX);
|
|
1348
|
+
var publicationInstances = this.parseWorkerSelector(process.env.PUBLICATION_WORKER_INSTANCE
|
|
1349
|
+
|| process.env.SUBSCRIPTION_WORKER_INSTANCE
|
|
1350
|
+
|| process.env.WORKER_PUBLICATION_INSTANCE);
|
|
1351
|
+
var codexIndexes = this.parseWorkerSelector(process.env.AI_ASSISTANT_CODEX_WORKER_INDEX
|
|
1352
|
+
|| process.env.CODEX_WORKER_INDEX
|
|
1353
|
+
|| process.env.WORKER_CODEX_INDEX);
|
|
1354
|
+
var codexInstances = this.parseWorkerSelector(process.env.AI_ASSISTANT_CODEX_WORKER_INSTANCE
|
|
1355
|
+
|| process.env.CODEX_WORKER_INSTANCE
|
|
1356
|
+
|| process.env.WORKER_CODEX_INSTANCE);
|
|
1357
|
+
if (this.workerMatchesSelector(workerIndex, workerInstance, publicationIndexes, publicationInstances)) {
|
|
1358
|
+
return 'Subscription';
|
|
1359
|
+
}
|
|
1360
|
+
if (this.workerMatchesSelector(workerIndex, workerInstance, codexIndexes, codexInstances)) {
|
|
1361
|
+
return 'Codex';
|
|
1362
|
+
}
|
|
1363
|
+
return 'Other';
|
|
1364
|
+
};
|
|
1313
1365
|
ResolveIOMainServer.prototype.parsePositiveInt = function (value, fallback) {
|
|
1314
1366
|
var parsed = parseInt(value !== null && value !== void 0 ? value : '', 10);
|
|
1315
1367
|
if (Number.isNaN(parsed) || parsed <= 0) {
|